English

第72回コラム
ソフトウェアプロセスの教育について

情報アーキテクチャ専攻 秋口 忠三教授

 ソフトウェア開発の中心的な作業は、モデルの作成で始まり、実装とテストで終了する。分析や設計という上流の作業はモデリングと呼ばれる。問題構造の本質を抽象した良いモデルの作成はあらゆる問題解決の出発点になる。しかしその良し悪しの判断は容易ではない。モデルはコードで記述されることによって生命が宿り動き始める。動作するソフトウェアによってモデルの実体が明確になりモデルの良し悪しを要求者が評価できるようになるのだ。
 ソフトウェア開発ではモデルに基づいてシステムが構築される。全体構造を表すアーキテクチャが設計され、次第に部分に分割され、最終的にプログラムのコードとして記述される。コードの作成は実装と呼ばれる。実装されたプログラムコードはテストによる品質確認を経て、製品として出荷される。モデルの作成・アーキテクチャ設計・実装・テストの一連の作業はアイデアを現実の動作する実体とするもので、人間の頭による創作活動によって生み出されるものである。一般には技術者を中心とした複数の人たちが長い期間をかけて取り組むべきプロジェクト活動である。
 より良い最終製品に向けて開発の全アクティビティを最も効率よく進めることがプロジェクト活動の要諦である。ソフトウェアの開発の進め方はソフトウェアプロセスと呼ばれる。品質・コスト・納期を守りつつ要求内容を最大限に満足する製品を完成させることがソフトウェアプロセスを必要とする最大の理由である。重要なことは、対象とするソフトウェアの特性と開発チームの要員の経験やスキルに適したソフトウェアプロセスを採用することである。ソフトウェアプロセスは、①チームのコミュニケーション手段、②モデリングのための言語と方法論、③プログラミング言語とプログラミング方法論、④開発に必要なツールや環境、⑤開発フェーズの分け方、などによって決まる。
 ソフトウェア開発の60年余りの歴史の中で、種々のソフトウェアプロセスが実践されそれらの反省を踏まえて様々なプロセスモデルが提案されてきた。それらを分類すると次のようになるだろう。

  1. ① 計画重視の規範的なソフトウェアプロセス
  2. ② 変化への対応を重視したアジャイル開発プロセス
  3. ③ 個人とチームのプロセス改善を目的としたソフトウェアプロセス

昨今はウォータフォール型かアジャイル型かといる二分論でソフトウェアプロセスを議論することが多いように思われるが私はこの議論にいつも違和感をおぼえる。
 計画重視の大規模ソフトウェア開発は、現在でもウォータフォール型のプロセスを採用する場合が多いが、アジャイル開発で有効性が実証された手法は適宜取り入れることが可能でありまた取り入れるべきだ。モデリングの方法論、プログラミング言語や開発ツールの進化などを受けて、プロトタイピングによる曖昧な要件の明確化や実現可能性の検証を早期に実施することは、当たり前になってきた。テストファーストなど有効性が実証された手法は計画重視のプロセスでも採用すべきだ。
 開発すべきソフトウェアの特性と開発チームの要員の経験とスキルを勘案し、有効性が実証された個々の具体的なアクティビティからソフトウェア開発の全体プロセスを再構築する、すなわちプロセスの設計が必要であると思う。③の能力改善を目的としたソフトウェアプロセスであるPSP/TSP (パーソナルソフトウェアプロセス/チームソフトウェアプロセス)はこのようなソフトウェアの特性とチームの特性に合ったプロセスを教育する方法論として有効であると考えている。
 ルールを教え、キャッチボールやバットスイングを練習すれば、野球のゲームを楽しむことはできる。野球人口のすそ野を広げる意味で重要であり、その中から才能豊かな優れた選手が誕生することも期待できる。しかしスーパプレーヤを目指すのであれば、基礎体力をつけ、最高のプレーを行えるようになるための自己改善の方法論を修得して欲しい。ソフトウェア開発の達人を目指すのであれば、PSP/TSPを学修し自己改善の方法論を実践することをお勧めする。

PAGE TOP