最初に、システム開発契約とシステム開発の分類について説明します。
システム開発契約とは、委託者(ユーザー)が受託者(ベンダ)に対し、システム、ソフトウェアの開発に関する業務を委託する契約と定義することができます。
システム開発についてどのような分類ができるかというと、まず開発の仕方に基づく区別として、典型的なものとしてはウォーターフォール型とアジャイル型というものがあります。また、元となるパッケージソフトがあるかどうかの区別として、スクラッチ開発、もしくはパッケージ開発というものがあります。また、当該システムを用いて行う業務が現時点のユーザーの業務と同様かどうかに基づく区別としてASISやTO BEというものがあります。
この中で、ウォーターフォールモデルとアジャイル開発について、どのような違いがあるかについて説明します。
ウォーターフォールというのは、英語で滝を意味し、水が上から下に落ちていくというイメージで、システム開発の工程を分割していって、それが順次進んでいき、後戻りすることはない。つまり、上から下に水が落ちてそれは戻ることはないというものです。
アジャイル開発というのは、それと異なり、開発して、検討して、また開発をしてということを反復継続しながらシステム開発を進めていくというものです。
ウォーターフォールは、設計の過程で仕様の詳細化をした上で、製作したプログラムの設計プログラムを逆にたどってテストしていく工程が標準的であり、企画、要件定義、ここをしっかりと定めた上で基本設計をして、その詳細設計と仕様の詳細化をしていく。そしてプログラミングをしていく。その後、それが正しくできているかどうかを単体テスト、結合テスト、システムテストという形で一連のテストを行った後、運用・保守に移るものです。
最初に説明したようににウォーターフォール、水が流れ落ちるように、前の工程で決めたものはそこから落ちていくと、後に戻れないということで、大規模な開発の場合に用いられることが多いです。
次にアジャイル型ですが、開発対象を多数の機能に分割していって、それぞれの機能に優先順位付けをした上で、それぞれ開発していくものです。
典型的なものがスクラムと言われるもので、開発期間を1週間とか1ヶ月程度、スプリントと呼ばれる期間に区切って、さらにそれを1日単位のデイリースクラムというものに区切って、短期間での開発、そして目標、そしてその見直しということを繰り返していくという開発仕様です。
それぞれどんな特徴があるのかというものを表にまとめていますが、ウォーターフォール型の場合にはしっかりと機能を定めて、それに基づいて開発していく。一方で、一度決めた開発内容は変更しにくいし、途中で機能が不要になったり、機能に求めるべき内容が変わったりした場合、柔軟に対応できない。一方でアジャイル型は機能を分割して、それぞれを作って、また反復して違うものをやりながら、というような形で柔軟にできるという特徴があります。
ウォーターフォールモデル |
アジャイル開発 |
|
作 業 工 程 |
すべての機能について同時に要件定義・基本設計・詳細設計等の要求の確定プロセスをこなしたうえで、開発(プログラミング)を行い、単体テスト・結合テスト・システムテスト等のテストを行う |
機能を分割して、当該分割した1つ1つの機能について要求確定・プログラミング・テストを順次行っていく |
柔 軟 性 |
一度決めた開発内容は変更しにくい 途中で機能が不要となったり、機能に求めるべき内容が変わったりした場合に柔軟に対応できない |
開発内容を柔軟に変更しやすい 未対応の機能が残っている段階で、最優先で開発すべき機能が出てきた場合には、未対応の機能の優先順位を落として新規機能を開発するなど柔軟な対応ができる |