開発に入る前に、まず計画が決まります。
| 決めること | 中身 |
|---|---|
| 開発目的・目標・時期 | 何を目指し、どこまでのものを、いつ実現するか |
| 市場ニーズ | 汎用性のあるシステムでは、ニーズを的確に分析する |
| 開発方法 | 新規に開発するか、従来システムをどこまで使うか |
| 開発工数・設備 | 費用の大半は人件費。工数に比例する |
| 開発体制 | 誰が、どんな役割で関わるか |
システム開発プロセスとは、各段階に分けられた一連の作業、 すなわち開発工程のつながりです。
| 工程 | やること |
|---|---|
| I. 要求分析(要求定義) | 実現する仕様を明確にする。業務を分析し、ユーザの視点で要求内容を記述する。 同時に、開発側の視点で技術実現性・コスト・期間の妥当性を踏まえる |
| II. 外部設計 | 大規模ならサブシステムに分割し、外から見た仕様を設計する。 機能、操作方法、ユーザインタフェース、コード設計などを定義する |
| III. 内部設計 | 方式の記述を詳細化し、プログラムの仕様書を作る。 各サブシステムをモジュールレベルまで詳細化する |
| IV. 実装 | プログラムを書く |
| V. テスト | 仕様を満たすことを確かめる |
| VI. 運用・保守 | 使いながら直し、育てる |
もっとも早くに考え出されたモデルです。 工程を上から下へ、一方向に流す。 滝の水が下へ落ちて戻らないことから、この名がつきました。
| ウォーターフォール | プロトタイプ | スパイラル | |
|---|---|---|---|
| 進め方 | 上から下へ一方向 | 試作品を作って確認してから本開発 | 小さく一周を繰り返す |
| 強み | 工程・成果物が明確。管理しやすい。大人数に向く | 要求の思い違いを早期に発見できる | リスクの高い部分から片づけられる |
| 弱み | 後戻りの費用が非常に大きい。要求が固まっていないと破綻する | 試作品を作る手間。試作品を本番に流用してしまう誘惑 | 管理が複雑。周回数の見積りが難しい |
| 向く場面 | 要求が固まっている。前例がある | ユーザが要求をうまく言えない。画面や操作性が重要 | 大規模で、技術的な不確実性が大きい |
後戻りは高くつく。 要求分析の誤りをテスト段階で見つけると、 要求・設計・実装・テストのすべてをやり直すことになります。 一般に後の工程で見つかるほど、修正費用は跳ね上がります。 だから上流の工程ほど丁寧にやる価値があり、 プロトタイプやスパイラルは誤りを早く見つけるための工夫だと言えます。
本格的に作る前に試作品(プロトタイプ)を作り、ユーザに触ってもらいます。 ユーザは、文書を読んでも気づかないことに、動くものを触ると気づきます。 「思っていたのと違う」を早い段階で言ってもらうのが狙いです。
「計画 → リスク分析 → 開発 → 評価」の一周を、何度も繰り返しながら 少しずつシステムを育てます。渦(スパイラル)を描くように外へ広がっていくのでこの名があります。 毎回リスクの高いところから手をつけるのが特徴です。
この「小さく回す」発想を、さらに短い周期で徹底したものが 第12回で扱うアジャイル開発です。 つまり本日の3つのモデルは、アジャイルの前史でもあります。