新人技術者のためのロジカル・シンキング入門(3) ―― 「必要とされる設計書」の作り方
【2】設計書に求められる三つの要素(1/2)
Cさんたちに作ってもらえそうな設計書を考える前に,まず,「チーム開発において必要な設計書に求められるものは何か?」ということから考えてみましょう(図3).
設計書に求められるものを挙げてみた.設計書というからには,各ブロックの機能分け,機能間の関係(インターフェース),そしてそれらの全体像を明らかにしたいところ
● 機能分けを明確にする設計書
まず,設計書に必要な情報は,システムの機能分けがいかに行われているかということです.システムの機能分けは,必須機能の整理とともに,以下の作業の基礎にもなります.
- 担当分け
- 作業量や予算の見積もり
- 実装方法の検討
要求仕様を満たすためにどのような機能が必要かを考えることで,必然的に機能分化がなされ,それを基礎に担当分けや作業量の見積もりが行われるからです.実装方法についても,ハードウェアとソフトウェアのどちらを使うかのような大枠のところは,最初に決めなければなりません.
携帯音楽プレーヤのシステム構成がいかに複雑であっても,顧客が求めていることはシンプルで,「いつでもどこでも音楽が手軽に楽しめること」にほかなりません.このことのために,どのような機能ブロックが必要か,というところから設計の作業は始まります.
すべての機能を自分で作るのなら話は別ですが,実際の製品開発では複数の部品を複数の会社に発注して実現することが一般的です.機能分化がなされていないと,開発チームを構成することすらできません.開発をとりまとめる人であれば,機能ごとに何人月の工数が必要かを考える一方で,これまでいっしょに開発してきた各チームのリーダの顔を思い浮かべ,どこの会社のだれに頼めばきちんとやってくれそうかも考えるものです.
例えば,楽曲のデコーダはソフトウェアで実現するのか,それとも専用ハードウェアを組み込むのか,さらにそれは内製(自社開発)するのか,IP(intellectual property)コアを外の会社から購入するのか.楽曲を記憶する媒体はハード・ディスク装置なのか,それともフラッシュ・メモリなのか.こういったことは,開発のかなり初期の段階で決められます.
一つの開発チーム内に限定しても,機能分けの作業の大枠は同じです.どのようにサブ機能を分化したら自分の担当ブロックを実現できるのかを考え,開発するサブブロックの開発規模の見積もりと実際の割りふりを考えます.
以上の説明から,設計書に必要なことは,まず機能分けの明確化であると言えます.
tag: 技術教育