fbpx

ソリューションアーキテクチャーデザイン連載(2/13):ソフトウェア設計手法とは何ですか?

ソフトウェア設計手法は、ソフトウェアアーキテクチャー設計を含めて、ソフトウェアを開発するための原則や手法などを対象にします。これには、機能要件や非機能要件を満たすようなソフトウェアの構造やコンポーネントの設計が含まれ、効率的で保守性の高いソフトウェア開発を目指します。

前項では、ソリューションアーキテクチャー設計を建物の構造や外見、インフラ設備の設計に例えましたが、ソフトウェア設計は、どのような生活感をサービスしたいのかを含めてインテリアの設計に値すると言えます。

ソフトウェア設計には、次のような手法があります。その中で、現代のビジネス環境に最も適したソフトウェア設計手法として、アジャイル開発が挙げられます。アジャイル開発が設計手法なのかという議論はあるかもしれませんが、現代においては、ウォーターフォールモデルに代わる新しいソフトウェア開発のアプローチであり、ソフトウェア開発手法として位置付けられています。アジャイル開発では、スプリント単位での開発が必要であり、そのために適したソフトウェア設計を実行します。

  • ウォーターフォールモデル
    このモデルは、ソフトウェア開発ライフサイクルの各段階が直線的に進行すると仮定し、一つの段階が完了する前に次の段階に進まないようにする手法です。
  • アジャイル開発
    アジャイル開発は、ウォーターフォールモデルとは異なり、短いスプリント単位で開発を進め、顧客のフィードバックを積極的に取り入れながら、柔軟に対応する手法です。
  • スパイラルモデル
    このモデルは、ソフトウェア開発プロセスが循環的に進行することを前提に、設計、実装、テスト、評価などの活動を繰り返し行う手法です。
  • プロトタイピング
    プロトタイピングは、実際のシステムと同じような機能を持ったプロトタイプを作成し、そのプロトタイプを改善しながら、最終的なソフトウェアを開発する手法です。
  • モデル駆動設計(MDD)
    MDDは、システムのモデル化に焦点を当てた設計手法で、モデルを基にシステムを自動生成することができます。
  • ドメイン駆動設計(DDD)
    DDDは、ソフトウェア設計をビジネスドメインに焦点を当てた手法で、ビジネスの要件をモデル化し、それに基づいてシステムを開発する手法です。

これらのソフトウェアア設計手法は、プロジェクト内で複数の手法をミックスして進めることもよくあります。たとえば、アジャイル開発でありながらDDD手法を展開することや、長いスパンでスパイラルモデルを併用することで、より効率的な開発プロセスを実現することができます。

[ ソフトウェアア設計 vs ソフトウェアアーキテクチャー設計]

一般的には、「ソフトウェア設計」という用語は、「ソフトウェアアーキテクチャー設計」を含む、ソフトウェア開発における設計全般を指す言葉です。特に大規模なシステム開発においては、ソフトウェアアーキテクチャー設計が重要な役割を担うため、両者を区別して用いる場合もあります。

 

前のページへ|Topページへ|次のページへ

Author

モダンアーキテクチャー基盤のソリューションアーキテクトとして活動しています。

[著書]
・Amazon Cloudテクニカルガイド―EC2/S3からVPCまで徹底解析
・Amazon Elastic MapReduceテクニカルガイド ―クラウド型Hadoopで実現する大規模分散処理
・Cypherクエリー言語の事例で学ぶグラフデータベースNeo4j
・Neo4jを使うグラフ型データベース入門(共著)
・RDB技術者のためのNoSQLガイド(共著)

leeの記事一覧

新規CTA