ソフトウェア再利用演習
平成24年度シラバス
2012年1月10日
国立情報学研究所
トップエスイープロジェクト
代表者 本位田 真一
ソフトウェア再利用演習
位野木 万里
今やソフトウェアは我々の生活になくてはならないものである.一般ユーザがソフトウェアをダウンロードし,自分のPCやスマートフォンを使いやすくカスタマイズすることが容易にできる状況にある.また,企業においても,クラウド空間上にあるサービスを組み合わせ,対象の業種・業務や企業規模などの特性に応じた情報システムを構築することが可能になっている.このように,一般ユーザでも既存のソフトウェアやサービスを利用することが可能な状況において,これからのソフトウェア技術者は,既存のソフトウェアやサービスを効率良く組み合わせ,新しいアイデアを具現化する能力,すなわち,再利用力が求められていると考えられる.
ところで,不特定多数のユーザが利用している運行管理システムや金融・流通などの情報管理システムなどは,システム不具合によるサービス停止が,社会的に多大な影響を及ぼすことになる.従って,こうしたシステムは,安全性,信頼性,保守性,拡張性などの側面で充実している必要がある.先ほど述べた「クラウド上のサービスを単純に組み合わせる」ことだけでは,安全性・信頼性の要件を実現したシステムの構築は困難である.この場合,セキュリティ要件や信頼性要件を明文化した要件定義書,保守・運用の手順を定義したドキュメント,機能拡張に備えた基本設計書などのドキュメント類も重要な資産として開発する必要がある.つまり,企業情報システムを既存の成果物の組み合わせによって構築するには,こうしたドキュメントの体系的な再利用も考慮すべきである.
本講義では,ソフトウェア開発において考えられる様々な再利用の形態(ドキュメント,設計モデル,プログラムなどの再利用)を体系立てて習得する.とくに,仕様や設計などのノウハウやドキュメントの再利用,ソフトウェアのシリーズ製品に相当するプロダクトラインを再利用により構築する方法に至る各種技術を演習を通して体得する.講義,演習,議論・発表を通して「再利用」を体験し,新しいアイデアを具現化する能力,すなわち,再利用力を身につけることを達成する.
本講座は主に2つの点でオリジナリティを持たせている.ソースコードの再利用といったバイナリの成果物だけではなく,ドキュメント,モデル,パターン,プロダクトラインなどライフサイクル全体の開発成果物に着目した体系的な再利用を対象にする点と,考えて手を動かす演習を徹底して実施する点である.
再利用の対象となるソフトウェア資産として,ソースコード,コンポーネント,フレームワークなどのバイナリの成果物に加えて,分析や設計のモデル,設計や実装の考え方に相当するパターン,要件定義書や基本設計書などのドキュメント,テスト実行やコード生成を支援するツール類など,開発ライフサイクル全体に関連する成果物に着目した体系的な再利用について演習を通して体得する.フレームワーク,モデル,パターンの再利用を通して,再利用対象となるコア資産の構築方法についても,講義および演習を通して習得する.
講義において,再利用の各種技術について解説をした後,講義で説明した内容に関連した演習を実施する.また,コースの後半の総合演習では,学習した手法をフル適用して,プロダクトラインを構築する演習を行う.
ソフトウェア開発の生産性の向上,品質の安定,リードタイム短縮,さらには知識継承のために,品質の保証されたソフトウェア資産(コアアセット)を蓄積し,ソフトウェア開発において再利用することはソフトウェア開発では,常套手段として用いられており,有効性も明らかである.しかし,場当たり的な再利用では,却って保守のための無駄なコストが増大したり,品質を低下させることがある.場当たり的な再利用にならないようにするには,対象ドメイン,組織のゴール,組織の条件などを考慮し,対象とするソフトウェア開発で必要なだけのソフトウェア資産を体系的に再利用することが重要である.
どのようなソフトウェア資産が再利用に有効で,どのようなことを対策すると体系的な再利用になるのかは,おかれた状況によって異なるため,一意に定義することは困難であり,様々な経験を通して最適な再利用に対する知見を蓄積することが重要である.そこで,本講義を通して,体系的な再利用の一例を体得し,一連の講義・演習を通して,経験的ノウハウを蓄積していく.
・ソフトウェア開発における再利用の基本的な考え方
開発プロセスと再利用対象になる成果物,成果物における共通部分と可変部分
・ドキュメントの再利用
ビューとモデル
・設計の再利用
パターンとフレームワーク
・高度な再利用
プロダクトライン型の再利用,フィーチャーモデリング,バライアビリティモデリング
・オブジェクト指向設計の基本概念(クラス,インスタンス,メソッド,メッセージ等)
・ソフトウェア開発ライフサイクルに関する基本知識(主な工程と成果物)
・UMLの基礎(ユースケース図,クラス図,シーケンス図)
第1回:開発と再利用の全体像,システム再利用の試行・演習
第2回:ドキュメント(要件定義書)の再利用・演習
第3回:設計の再利用(1)(パターンの再利用)・演習
第4回:設計の再利用(2)(フレームワークの再利用)・演習
第5回:実装(アプリケーション)の再利用・演習
第6回:高度な再利用(プロダクトライン型開発)・演習
第7回:総合演習・討議
講義終了後,総合演習で作成した成果物に討議の結果および考察を加えたものをレポートとして提出していただく予定である.
演習を通して再利用技術を体得することができる.実践的な例題を用いるので,実務での適用にも結びつけることができる.
・astah*(ユースケース図,クラス図の作成)
・ワードプロセッサー または テキストエディター
・要件定義書の再利用
・パターン,フレームワークの再利用
・フィーチャーモデリング
・プロダクトライン構築
演習による作業成果物,討論,レポートの評点を総合して評価する.
教科書はとくに指定しません.参考書は次の通りです.
(1)Frank J. van der Linden, Klaus Schmid, Eelco Rommes, Software Product Lines in Action Springer Berlin Heidelberg(2007)
(2)Kyo C. Kang , Vijayan Sugumaran,
以上