中身の仕組みを設計する
外部設計の次は、外から見た振る舞いを含め、要件定義で決めた機能をどのようにアプリケーションとして実現するかを考えます。画面をどう実現するか、プログラムの分割をどうするか、データベースに格納する実際のデータをどんな構成にするかなどです。
このような、アプリケーションの中身を設計する工程を「内部設計」と呼びます。組織によっては「機能設計」や「詳細設計」と呼んだり、さらに分割されていたりもしますが、アプリケーションの中身を設計するという作業であることは変わりません。コンポーネント設計やクラス設計といって、プログラムの分割や連携方法、それぞれのプログラムの仕様を考える作業や、データベースに格納するデータ構造を設計するデータベースの物理設計などが行われます。
内部設計で難しいところは、どこまで詳細にするかの判断です。昔(といっても10年程度前)は、プログラムの詳細まで設計していましたが、最近のシステムは規模が大きく複雑になってきており、加えて期間は短くなっています。
そのような状態では、プログラムの詳細まで設計することは作業量や時間の制約を考えると現実的ではありません。そこで、プログラムの詳細はプログラマに任せ、内部設計ではプログラムの分割の単位で仕様を決めるところまでを行うように分業化が進んできています。「何をインプットとして渡すと、どんな処理が行われて、何が返ってくるか」を定義しておけば、そのプログラムを使う側は、あらかじめ連携を考えておくことができます。設計の分業範囲も時代に合わせて進化しています。
動いているところを想像することが大切
設計とは、外部設計、内部設計などの工程や対象分野に限らず、作り方を考え、その道筋を示す作業です。では、なぜ設計者は作り方の道筋を示すことができるのでしょうか。
答えは単純です。優秀な設計者ほど、完成像、つまり、システムの動いているところが想像できるからです。頭の中で組み立てたシステムを設計書などに表し、利用者に完成像を示したり、開発者に作り方を伝えたりします。設計者の想像した完成像がシステムの出来を左右すると言っても過言ではありません。
ただし、答えは単純なのですが、実際にやるとなるとなかなか大変です。システムの完成像を想像するためには、多くの知識と経験が必要です。優秀な設計者も最初から出来たわけではなく、小さな学びと様々な経験を積み重ねてきた結果、設計という作業が任されるようになったのです。
執筆者紹介
小堀真義(KOBORI MASAYOSHI)
- ウルシステムズ コンサルティング第1事業部 シニアコンサルタント
Webアプリケーションやセキュリティ基盤の開発を経験し、2006年より現職。技術的な支援を本業としつつ、ときにはプロジェクト管理まで踏み込みながら、システム開発をサポートする毎日を過ごしている。