こんにちは、たにかけです。
- ITの開発モデル?何それ?
- これから大企業に行きたいけど、どんな感じで開発を進めるかわからない。
こんな人はこの記事を読んで、
一般的な開発手法である「ウォーターフォールモデル」を理解しましょう。
これを理解していないと正直IT業界では仕事をすることはできません。
代表的な開発手法
現場で用いられている代表的な開発手法はこれらがあります。
- ウォーターフォール開発
- アジャイル開発
- スパイラル開発
- プロトタイプ開発
中でも開発手法として使われることの多い「ウォーターフォール開発」と「アジャイル開発」の概要を説明します。
ウォーターフォール開発
ウォーターフォール型の開発は一言で言うと「段階的に進めていくシステム開発手法」です。
「要件定義」「基本設計」「詳細設計」「システム実装」「テスト」のステップを順番に進めていきます。現在最も有名なウォータフォール開発のモデルとしてV字モデルがあります。
アジャイル開発
アジャイル開発は近年最も注目されている開発手法です。
アジャイル開発を一言で表すと「小さいサイクルで修正して作り上げていくシステム開発手法」です。
ウォーターフォールモデルは各ステップが完全に終了してから次の工程に進むのに対して、アジャイル開発では小さい機能ごとに分けて最低限の開発をしながらシステムを作り上げていくため、すぐにシステムが出来上がると言うメリットがあります。
ウォーターフォールモデルの進め方
ウォーターフォールモデルの開発工程が「要件定義」「基本設計」「詳細設計」「システム実装」「テスト」があります。
段階ごとに開発を完了させて進めるあるため、工程ごとにレビュー(成果物の確認)を行うことが特徴です。そのため、要件定義で仕様を決めきれなかった場合や基本設計書の記載が十分にできなかった場合に、その後の開発で炎上が発生してしまいます。
それぞれの開発工程ではこのような仕事をおこなっています。
要件定義
要件定義は「システム発注者がやりたいことを明確化する」工程です。
この工程で「システム化すべき業務は何か」「システムにどんな機能があればいいか」等(仕様)を明確化し、要件定義書に落とし込みます。
要件定義の中にはさらに細かく分かれています。
業務要件定義 | 実際の業務の中でシステム化したい業務フローを整理する |
---|---|
システム要件定義 | システムに必要な機能を整理する |
非機能要件 | セキュリティや拡張性などの機能以外に必要な部分を整理する |
技術要件 | どんなプログラミングをするか、サーバーはどうするか等を整理する |
ここで決めた要件がシステム化する部分になるため、ここで考慮漏れや仕様漏れがあるとのちの開発等で炎上が発生します。さらに技術的に実現可能かも判断していないとプロジェクトが頓挫してしまいます。
そのため、要件定義はITの開発において最も重要な工程と言えるでしょう。
基本設計
基本設計はシステム要件定義で整理した機能をより具体的に設計書まで落としていく工程です。
例えば、
- 画面のボタン配置はどこにするか
- ボタンを押した後に遷移する画面はどうするか
- データベースに管理する項目はどうするか
等の具体的なところまで決めていきます。
ここの工程において「システム発注者がやりたいと考えていることが実現できているか」を確認してもらうことが必要です。
詳細設計・開発
詳細設計は基本設計をプログラミングできるロジックまで落とし込んでいく工程です。
詳細設計書を用いてプログラマーがコーディングしていきます。
詳細設計書やコードに関してはプログラミングの知識がないと理解できないことが多いため、システム発注者は確認してしないことが多いです。そのため、詳細設計書が残っていない会社が多くあり、システムを改修するときに設計内容がわからず困ると言うことが多く発生しています。
テスト
テストは各工程において作成した設計通りにシステムが動くことを確認する工程です。
単体テスト | 画面、機能ごとに詳細設計が実現できているか |
---|---|
結合テスト | 他の機能や画面と合わせて基本設計が実現できているか |
総合テスト | システム全体の動作を確認し、要件定義が実現できているか。 |
受け入れテスト | システム受注者が希望したことを実現できているか |
このテストで不具合が見つかった場合には、不具合がなくなるまで修正をしてテストを繰り返します。
ウォーターフォールモデルのメリットとデメリット
メリット
ウォーターフォールモデルはこのようなメリットがあります。
- プロジェクトの計画が立てやすい
- 進捗管理しやすい
プロジェクト計画が立てやすい
各工程を完了しながら進めていくため、要件定義を終えた段階で基本設計や詳細設計等でかかる期間や人員数を見積もりやすいです。そのため、用意できる人員数からスケジュール等の計画が立てやすくなります。
進捗管理がしやすい
工程ごとに仕様書やタスクが決まっているため、遅延等の管理がやりやすいです。
そのため、進捗が遅れている場合には追加人員を配置するも可能になっています。
デメリット
逆にデメリットはこちらのものがあります。
- 手戻りが発生する場合がある
- 要件の変更が効かない
手戻りが発生する場合がある
ウォーターフォール開発では各工程を完了させて進めることが基本ですが、要件定義での仕様漏れや考慮もれ等があった時には、設計書等を変更する必要があります。その場合には、これまで決定していたと思って進めていた開発に修正が発生するため、その分の追加タスクが発生します。これが手戻りです。
要件の変更が効かない
システム受注者が要件を変更したいとなっても開発は進んでしまっています。そのため、追加で工数を積むか、諦めるかになります。
まとめ
ウォーターフォール開発は大規模な開発で用いられる開発手法です。
これを知らないとIT転職は難しいため、基本知識として覚えておきましょう。