ソフトウェア開発方法論
開発の全体像(開発プロセスと開発方法論)
ソフトウエア開発手法と聞いて、皆さまは何を思い浮かべるでしょうか?この連載を読んでいる方々は、少なからず、ソフトウエア開発に携わっていらっしゃるかと思いますが、それでも、思い浮かべる内容は十人十色かと思います。本連載では、ソフトウエアの開発手法のうち、「開発プロセス」という切り口に焦点を当て、その基本的な部分を紹介していきたいと思います。
開発プロセスとは、一言で表すと「ソフトウエア開発をどう進めるか」を体系化したもの、となります。この開発プロセスは、主に、ソフトウエアにより構成されるシステム全体(または開発プロジェクト)を対象としていて、システムの規模や複雑さが増大するにつれ、必要性や重要性が認識され始めました。最近では、システムのみならず、プロジェクトにかかわるメンバーのモチベーション等を視野に入れているものもあり、この辺りは、プロジェクト管理手法との関連も深くなってきています。
さて、早速、代表的な開発プロセスの1つ、ウォーターフォール・モデルの……と行きたいところですが、その前に開発方法論を紹介したいと思います。ここで言う開発方法論とは、一言で表すと「ソフトウエアをどう作るか」を体系化したもの、を指します(図1-1)。
構造化技法(構造化プログラミング)
ではまず、開発方法論として、構造化技法を取り上げます。1960年代には、開発されるソフトウエアの大規模化、複雑化により、ソフトウエアの開発効率化や品質向上に対するニーズが高まっていました。これに対する解決策として提唱されたのが、構造化定理を基にした構造化技法でした。
----------------------------------------
構造化定理:プログラムは、「順次・選択・繰り返し」の3つの基本構造を組み合わせた、1つの入り口と1つの出口を持つ形式で記述できる。
----------------------------------------
上記「順次・選択・繰り返し」とは、例えば、Javaの場合、下記と考えて問題ありません。
・順次:上から順番に実行すること
・選択:if文
・繰り返し:for文
つまり、この構造化定理では、あるプログラムは、if文やfor文を組み合わせたサブルーチンとして記述できる、と言っているのです。
この構造化技法とは、プログラムをいくつかの単位に分け、あるプログラムから別のプログラム(サブルーチン)を呼び出す構造とすることにより、プログラムを理解しやすい(開発しやすい)構造とすることと言えます。
これは、システム全体では複雑な処理に見えても、細かく分割していけば単純な処理の積み重ねにできる、というものです(図1-2)。現在では、後ほど説明するオブジェクト指向が主流になっていますが、構造化技法の考え方は、オブジェクト指向の考え方と矛盾するものではなく、むしろ、根本的に違いはないので、基本的で重要な考え方と言えます。
ここまで構造化技法の説明をしてきましたが、「複雑な処理を簡単な処理に分割する」とは、何かピンときませんか?そうです、「モジュール化」に似てますね。構造化技法は、現在でもソフトウエアの品質基準として使われるモジュール化を促進するものと言うことができます。では次に、モジュール化の評価基準について見ていきましょう。