有名なソフトウエア・エンジニアリングに関するエッセイを読む機会をえました。 フレデリック・P・ブルックスJr著、滝沢徹・牧野祐子・富沢昇訳「人月の神話」アジ ソン・ウエスレイ 1996.2発行です。 1.大きなプログラムシステム製品を開発する時に「人月」は仕事の大きさを測る 単位としては、疑うべき危険な神話である。人と月とが互いに交換できると考え, 月を減らそうとして、人を余計に投入することは効果的ではない。要員が増加すれ ばするほど各作業者の間でのコミュニケーションを図るための時間が線形に増加す ることになる。このため遅れているソフトウエアプロジェクトへの要員追加は更に プロジェクトの進行を遅らせるだけという悲劇を生む。 2.高水準プログラミング言語と対話型のプログラム作成方法は、プログラム作成の 生産性の向上に役立っている。またチーフプログラマーを中心とする少数精鋭チーム は、製品の完全性と生産性の向上を得ることができる。しかしながら、ソフトウエア の開発において技術においても管理手法においても、それだけでこれからの十年間に 生産性や信頼性と容易性でも飛躍的な改善を一つでも約束できるような開発は一つと してないと予測する(1986年)。 3.ソフトウエアエンジニアリングとは、 * システムに向けてプログラムセットをデザイン、実現する方法 * プログラムまたはシステムを、安定した、テスト済みで、文書完備のサポート 付きの製品になるようにデザイン、実現する方法 * 大量の複雑性に対して知的制御を維持する方法 4.ソフトウエア実体の本質は、データセットやデータ項目間の関係、アルゴリ ズムや機能呼び出しなどが組み合わさったコンセプトで構成されている。 ソフトウエア構築において困難な部分は、この概念構造体の仕様作成とデザイン およびテストにあって、表現することやその表現に忠実かをテストすることでは ない。 5.ソフトウエア開発の生産性をあげるためには、 (1) このソフトウエア製品のコンセプトの完全性の実現。このため、だれか一人を 製品(主任)アーキテクトに任命し、アーキテクトが製品のあらゆる局面に ついて利用者が知覚するコンセプトの完全性に責任を持たせる。 きわめて大きな製品開発の時は、主任アーキテクトは、システムをサブシス テムにに分け、インターフェースを厳密に定義したうえで、各部分に担当ア ーキテクトを配置する。 (2) 育成的構築モデルの採用。計画からプログラム作成・テストまでの局面を明確 に管理していくウオーターフォール構築モデルでなく、はじめに骨格を作り、 順次に詳細な機能を追加し、システムを育成していく。 (3) パッケージソフトをコンポーネントとして、購入してシステムを構築する。 コンセプトの完全性がシステムデザインにおいてもっとも重要な考慮点である。 一つの設計思想を反映していれば、統一性のない機能や改善点などは省いたシステム の方が、優れていてもそれぞれ独立していて調和のとれていないアイデアいっぱいの システムよりましである。