社内講座で、オブジェクト指向分析設計について学んだので、要点をまとめてみようと思います。

(1)開発プロセス比較
(1-1)ウォータフォール(既存の開発手法)
メリット:工数見積もり/進捗管理がしやすい。ノウハウがたまっていると思われる点。
デメリット:実装が長引き、リスクに対する取り組みが遅れる。
※SWの巨大化複雑化に伴い、すべて新規で作成するというより、既存のフレームワークやクラスライブラリを用いて開発することが多くなっている。または別の人(会社)が創ったものと組み合わせて動作させたりするためやってみないと分からない点が多い。
(1-2)オブジェクト指向開発プロセス(UP)
要求分析の次フェーズで、システム分析(方式設計)とアーキテクチャ設計を行う。
・システム分析では、ユースケース駆動開発を行い、分析モデルを完成させる。(ユースケースは機能用件に対して行う。また分析モデルはシーケンスなど利用して多観点で洗練する)
※分析モデルは言語に非依存。次フェーズのシステム設計でアーキテクチャを元に設計モデル(言語依存)を作成する。つまりアーキテクチャ設計では分析モデル+非機能用件を加味し、設計モデルを作成する根拠となる。
アーキテクチャ設計では、全ユースケース中1/4〜1/10のユースケースに対して試験フェーズまで一気に創っていく。※プロトタイプではなく本物を。

メリット:
・後々移植する際では、設計モデル(C++)⇒設計モデル(Java)とするより、分析モデル⇒設計モデルという開発を行うことができ品質の面で良い。
アーキテクチャ設計により早い段階でリスクの解消やSWの組み合わせの妥当性を検証する。
デメリット:
ユースケースコンポーネント単位の反復開発のため、見積もり・進捗が管理しにくい。
・新規手法のためノウハウがないと思われる。

(3)個人的な疑問点の解決
概念モデルや分析モデルは日本語、設計モデルは英語(PG言語)
ユースケース駆動開発の肝であるトレーサビリティが取りづらくなるので、最初から英語で記載した方が良いのでは?
⇒そもそも分析モデルと設計モデルは別物。必ずしも1:1の関係になるわけではなく、設計モデルは、言語依存やプラットフォーム依存、非機能用件により、最適化される必要がある。だから違って良い。



関連として『ユースケース入門』と『UMLモデリングレッスン』は読み、現在『UMLモデルの本質』を読書中。
ただやってみてなんぼのところがあるので社内で勉強会を開いて学んで行こうと思います。