ホーム » スタッフ » 斉藤徹 » ソフトウェア開発工程とアジャイル

2011年7月
« 6月   8月 »
 12
3456789
10111213141516
17181920212223
24252627282930
31  

最近の投稿(電子情報)

アーカイブ

カテゴリー

ソフトウェア開発工程とアジャイル

UMLの説明により、オブジェクト指向プログラミングでの設計の方法を解説し、 UML作成の課題にも取り組んでもらっているので、 残りでソフトウェア開発工程の説明を行う。

ウォーターフォールモデル

ウォーターフォールモデルは、トップダウン型の ソフトウェア開発において古くから用いられている手法で、 「要求定義」「外部設計(概要設計)」「内部設計(詳細設計)」「開発(プログラミング)」 「テスト」「運用」などの作業工程に分割する。 原則として前工程が完了しないと、次の工程に進めず、設計中にプログラミングを始めるなどの並行作業は行わない。

原則として並行作業を行わないので、ガントチャートなどでプロジェクト管理などを 行うことが多い。

スパイラルモデル

ウォーターフォールモデルは、前工程に戻らないことから、 細かな仕様変更に対して対応が困難となる。 このため、内部の詳細設計をある程度決めて全体を開発するといった、 ボトムアップ方式もある。 しかしながら、全体像の設計の詰めの甘さから、外部設計段階で内部設計の見直しが 発生することも多く、単純なボトムアップ方式は困難である。

このトップダウンとボトムアップの両方の良さをとる方式として、 スパイラルモデル がある。この方式では、設計とプロトタイピングを繰り返し行いながら 開発をしていく反復型開発方式である。

スパイラルモデルは、組織の改善でのPDCAサイクルと同じものと考えられる。 この方式は、プログラム規模やスケジュール予測もある程度でき、 要求仕様の変更があっても対応がしやすいことから、 大規模プロジェクトでもよく利用されている。

アジャイルソフトウェア開発

アジャイル(agile:機敏な)とは、敏速かつ適応的にソフトウェア開発を行う、 軽量な開発手法である。スパイラルモデルのPDCAサイクルよりも小さな、 反復(イテレーション)とよばれる短い開発単位(1W〜4W)を採用し、 1反復で1機能を開発する。 この反復では、他の古くからの開発手法と同じく、 計画、要求分析、設計、実装(コーディング)、テスト、文書化を行う。

アジャイルでは、動くものがあるという点で、利用者に使ってもらって 反応・感想を踏まえて改善ができる。 この方法をさらに推し進めた物に、 エクストリーム・プログラミング(XP)がある。 XPでは、自動テストなどを取り入れ、短期のイテレーションを推し進める。 一般的には完成に近づくにつれ、仕様変更は困難となるが、 オブジェクト指向プログラミングを取り入れ、 クラスの細部を変更しても全体に影響が及ばないような設計となっていることが 重要となる。

XPでは、コミュニケーション・シンプル・フィードバック・勇気・尊重といった5つの 価値で開発をとらえる。 開発にあたり、次のようなプラクティス(習慣)を与える。

  • テスト駆動開発(実装の前にテスト方式を明確化)
  • ペアプログラミング(2人1組でコーディング役とチェック&ナビゲート役を交代しながら行う)
  • リファクタリング(完成済みのコードでも随時改善を行う。外部動作が変わらないように内部構造をより良いものにする)
  • ソースコードの共同所有(バージョン管理システムの併用が重要:CVS,Subversion,RCS,Gitが有名)