システムやWeb、アプリ開発の全体的な作業フローを把握することは、これから開発をリードする管理職の必須科目。開発には大きく分けて、ウォーターフォール型とアジャイル型という2つの手法があります。それぞれの特性とメリット、デメリットは何か、どのようなプロジェクトにどの手法が適しているのか。今回は、エンジニアやプログラマーから一目置かれる視点の持ち方をお届けします。

開発手法①:最初に厳格な定義を行う「ウォーターフォール型」

エンジニアやプログラミング言語の種類を理解したところで、次はどのような流れでシステム開発が進んでいくのかを見ていきましょう。

システム開発の手法は、ウォーターフォール型とアジャイル型の大きく2つに分けられます。

ウォーターフォール型は、その名の通り、滝の水が上から下へ流れていくような、トップダウン的な開発手法です。要件定義→設計→開発→テスト→リリース→メンテナンスという主な工程をたどります。

もう少し細かく見ていきましょう。プロジェクトが立ち上がると、最初のステップとして、プロジェクトのビジョンや目的、システムにどのような機能を付けたいか/付ける必要があるか、などをできるだけ明確に決めます。これが要件定義です。

要件をしっかり固めたら、次は、設計に入ります。システム全体の構造(アーキテクチャ)、データベース、どんな画面にするか、ユーザーにどうやって使ってもらうか(ユーザーエクスペリエンス(UX))などを考える工程です。

設計の次は開発。ここでプログラミングが登場します。複数のエンジニアが手分けして、自分の担当のコードを、設計に基づいて書いていきます。

開発が終わったらテストに進み、作ったソフトウェアが想定通りに動くか、バグがないかなどを確認します。単体テスト(ユニットテスト)、統合テスト、システムテストなど、各段階にはさまざまなテストが存在します。

無事テストを通過したら、ユーザーが実際にソフトウェアを使える状態となるリリースに進みます。しかし、これで終わりではありません。リリース後に発見された不具合の修正、連携していたほかのサービスの変更に対応するためのアップデートなど、開発が終わってからのメンテナンスも重要な工程です。