Architecture とDesign とDevelopment ってどう違うのよ
シンプルに違いが言語化出来なかったので相談したら、いい感じのレスポンスを貰えたにでメモ。
ソフトウェア開発において、「design」、「architecture」、「development」という用語は密接に関連していますが、それぞれ異なる側面を指しています。以下でこれらの概念の違いを明確に定義します。
Architecture(アーキテクチャ)
アーキテクチャは、ソフトウェアシステムの全体構造を指し、システムの各部分がどのように互いに関連し、連携するかを定義します。これには、システムの高レベルの構成要素と、それらの要素間の関係、通信の流れ、データの流れが含まれます。アーキテクチャは、システムの基本的なフレームワークを提供し、拡張性、性能、再利用性、およびシステムの制約に対処します。アーキテクチャ設計は、全体的なビジョンと、システムがビジネス要件や技術的要件をどのように満たすかに焦点を当てています。
Design(設計)
設計は、アーキテクチャのフレームワークの中で、具体的なシステムの実装に関する詳細を扱います。これには、アルゴリズムの選択、データ構造、オブジェクトモデル、インターフェイス、およびその他のソフトウェア内部の具体的な振る舞いや構造が含まれます。設計は、アーキテクチャによって設定された方針に従って、システムの具体的な構築方法を詳細に決定するプロセスです。設計段階では、システムを構成する各コンポーネントの内部動作や相互作用が定義されます。
Development(開発)
開発は、設計されたソフトウェアの実際の構築プロセスを指します。これは、コーディング、テスト、デバッグ、およびデプロイメントなど、設計されたソフトウェアシステムを実現するための一連の活動を含みます。開発段階では、アーキテクチャと設計のガイドラインに従って、実際に機能するソフトウェアを作成します。開発プロセスは、要件の実装、機能の追加、システムのテスト、そして最終製品のリリースとメンテナンスを通じて、ソフトウェアを完成させる作業です。
総括
- アーキテクチャはソフトウェアの構造と高レベルの組織化を定義します。
- 設計はアーキテクチャのフレームワーク内での具体的な実装の詳細を決定します。
- 開発は設計されたソフトウェアを実際に構築するプロセスです。
アーキテクチャが「ソフトウェアをどのように構成するか」についての大枠を提供し、設計がその枠組みの中で「ソフトウェアをどのように具体的に実装するか」を決定し、開発がその