システム開発においてアーキテクチャとは、システムの構成における共通仕様や設計思想を指します。アーキテクチャは、クライアントの要望を実現するビジネスマネジメントと、システムを効率的に開発するプロジェクトマネジメントの両方を満たすことが重要となります。
一般的にアーキテクチャの作成を担うのは、ITアーキテクトと呼ばれる職種です。しかし、プログラマやエンジニアであってもアーキテクチャについて理解しておく必要があります。そこで、今回の記事ではアーキテクチャと組織マネジメントの親和性について、ウォーターフォールとアジャイル、二種類の開発モデル別に解説します。
ウォーターフォール
ウォーターフォールは、システム開発において古くから使われる、最も一般的な開発モデルです。特に日本では人気があり、大規模な開発において頻繁に用いられます。
ウォーターフォールは「要件定義」「設計」「プログラミング」「テスト」と、開発を工程ごとに分離します。基本的に前の工程が終わってから次の工程に移行します。一度工程が進むと、前の工程に戻ることはありません。
ウォーターフォールのメリットとしては、以下のような内容が挙げられます。
- スケジュールを立てやすい
- 進捗管理しやすい
- 仕事を引き継ぎしやすい
ウォーターフォールは最初から最後までシステム開発の計画を決めるため、必要な費用や人員を把握しやすい特徴があります。また、工程が分かれているため、進捗も明確になります。さらに、開発者の役割が決められるため、開発メンバーが入れ替わる際にも引継ぎがスムーズに行えます。
一方、ウォーターフォールのデメリットとしては、以下のような内容が挙げられます。
- 仕様変更に対応しにくい
- クライアントの意向を取り入れにくい
- 計画に支障があると進捗が遅れやすい
ウォーターフォールは、仕様が変わると大幅な計画変更が必要です。そのため、開発途中でクライアントの意向を取り入れることは大変難しくなります。また、一旦計画に支障が出てしまうと、次の工程に移行できず、スケジュールが遅れやすくなります。
ウォーターフォールは、開発するシステムや納品日が明確に決まっている大規模なシステム開発に向いています。システム開発の人数も多くなるため、プロジェクトにはチームを取りまとめる優秀なプロジェクトマネージャーやチームリーダーが求められます。
アジャイル
アジャイルは、システム開発をイテレーションと呼ばれる一定の期間ごとに区分します。イテレーションは通常1〜4週間ほどに設定され、「計画」「設計」「実装」「テスト」等、システム開発に必要な全ての工程を一つのイテレーションで実行します。
アジャイルのメリットとしては、以下のような内容が挙げられます。
- 動くシステムを早い段階から触れる
- クライアントの意向を取り入れやすい
- 不具合に対応しやすい
アジャイルはシステムを部分ごとに完成させるため、一部の機能であれば非常に早い段階で触れます。また、クライアントが実際に動くシステムを見て修正依頼を出せるため、イメージに近いシステムを開発しやすい特徴を持ちます。さらに、問題が発生した場合も、イテレーションを一つ戻るだけで済むため被害を最小限に抑えられます。
一方、アジャイルのデメリットとしては、以下のような内容が挙げられます。
- 全体の計画を立てにくい
- 開発の方向性がぶれやすい
- エンジニアは様々なスキルを求められる
一方で、アジャイルは仕様変更を前提とするため、全体の計画を立てにくくなります。また、完成品のイメージが明確に定まらず、開発の方向性もぶれやすい傾向にあります。さらに、エンジニアは計画からテストまで全ての工程を担当するため、様々なスキルを求められます。
アジャイルは、クライアントの開発したいシステムが明確に要件定義できない案件に向いています。それぞれのエンジニアが複数の工程を担当するため、アジャイル開発の経験を積んだスキル力の高いエンジニアがプロジェクトに求められます。
まとめ
エンジニアリング組織論において、ウォーターフォールとアジャイル、どちらの開発手法が優れているのかという議論は頻繁に発生します。システムの開発規模や人員、納期によって、適切な開発手法は異なります。開発手法のメリットやデメリットを把握して、どちらを採用するか判断しましょう。