大規模ソフトウェアを手探る
田浦健次朗

(the page is encoded in UTF-8)

What's New

括弧内は投稿日. 新しいものを上に書き足します. (過去ログ), (過去レポ)

スライド・資料

色んな情報・ヒント

コンタクト

授業時間以外の質問等の送り先: doss アットマーク eidos.ic.i.u-tokyo.ac.jp

はじめに

この演習では,世の中で実際に使われている大きな ソフトウェアを変更,機能拡張することを目標にする. テーマは, 「全容を把握できるわけがない程大きなソフトウェ アをいかに扱い,必要な動作を理解し,変更す るか」 ということである.

この課題を作った理由

多くの大学の情報系学科 の演習・実験は,小さな(たまに中規模程度の)ソフ トウェアを一から書くというものである.しかし大 きなソフトウェアは,全てを自分で書くことは稀で あるし,一人で書く場合も,どこかで誰かが書いた, すでに存在するソフトウェアを元にして拡張・修正 を重ねていくことがほとんどである.この先研究でソフト を実現する場合も一から全てを作るより,既存のソ フトウェアを元にして拡張することが多い.一から 作る場合でも,やがれそれが大きくなっても大丈夫な, 他の人でもいじれるソフトを作らなくてはならない.

それらができるためには,小さなソフトウェアを一から書く のでは身につかない,「全容がわからないながらも 関係ありそうな部分を探り,修正する方法」を習得 する必要がある.また,世の中の人が大きなソフトウェアを書くときに 常識的に使っている流儀やツールにも習熟する必要がある. それらはあまり体系立てて説明でき ないノウハウや知識の寄せ集めが7割を占めるのか もしれない.そうであるがゆえに大学の授業や演習 で正面切って扱われることは稀で,この演習ではそ れをあえて行って,大学の普通の演習レベルと本格的ソフ トウェア開発のギャップを埋めることを試みるのが, この演習である.

進め方

チーム

まずは2-3人で一つのチームを作る

基本練習

最初は,多くの ソフトウェアが踏襲するビルド方式(configure, make),デバッガを使いこなして未知のソフトの動 きを追いかける方法など,基本ノウハウを説明し, 実践する.

共通課題

次に,ポピュラーであるが比較的単純なソフトウェア(例: gnuplot; 10万行程度)を対象に,共通課題を設定し てその動作の解析と変更を試みる.ソフトウェアを, デバッグ可能状態でビルドする,デバッガでステップ実行する, 必要なところで止める,などの機能を正しく,効率的に駆使して, 「変更したい動作と関連するコード」に到達する練習をする.

自由課題

残り時間は各チー ムで対象ソフトウェアと目標を設定して取り組む. 対象ソフトウェアの分野は限定しないが,世の中で 広く使われている,ポピュラーなプロジェクトを対 象にすることを推奨する.例: など.ただし,ビルドするだけで一晩かかってしまうようなソフトは, やり方を工夫しないと難しいかもしれない.

達成目標

その他のご利益

過去レポ集

見られない場合はお知らせください

過去のお知らせログ

2020年度

2019年度

2018年度

2017年度第二期用

2017年度第一期

2016年度第二期

2016年度第一期

2015年度第二期

2015年度第一期