良い設計をするために必要な能力

前章で挙げた残りの3つ「(1)どのような人工物を創造するかを考案、指示する行為」「(2)属性などを決定していく行為」「(4)複数の解に対して、最適なものを判断する行為」は、「良い設計をするために必要な能力とは何か」を示唆しています。

「(1)どのような人工物を創造するかを考案、指示する行為」については、今までに存在していなかったものを考えているということですから、今までに存在しているものと比べてどのような点が異なるのか、またはどのような点が類似しているのかを多角的に捉え、評価する能力が必要だと考えます。

「(2)属性などを決定していく行為」については、その人工物がどのような属性から構成されるのかを知っているということに加え、それらの属性を「決定」する能力が必要だという事を意味しています。パッケージソフトウェアのアドオンや、新規のシステム開発においては、仕様の決定をユーザの責任で行うことが一般的ですから、設計を委託されたベンダの担当者は、仕様を「決定」するための前提となる制約条件などの情報を適切な質問でユーザから引き出し、仕様を提案して決定を促すコミュニケーション能力が必要になります。

「(4)複数の解に対して、最適なものを判断する行為」については、「複数の解」を考える能力と、そこから最適解を選択するための条件について情報収集する能力が必要です。

以上のことから分かるように、良い設計を行うためには経験が必要です。図面などの設計書を書く行為は設計行為のごく一部であり、そこに至るまでには様々な判断や推論を行っています。その判断基準として経験や設計原理(例えば「簡単なものほど優れている」など)が用いられます。決まったことをなぞらえて資料を作る作業ではなく、設計思想や設計哲学を持ち、粘り強く考察する作業であり、そのための時間や環境が必要です。

基本設計と詳細設計

ここからは、具体的なシステムの設計について解説していきます。
システム開発工程の全体像については、システム導入の進め方(概要編)で解説していますので、そちらを参考にしてください。

システムの企画(要件定義工程)が完了すると、基本設計工程に移ります。
企画段階において定義された「システムが実現すべきこと」に基づき、以下のようなことを決めていきます。

・ハードウェアやネットワーク、ソフトウェアの構成や外部システムとの連携方式、セキュリティ、バックアップ方式などを決める「システム方式設計」

・画面/帳票レイアウトや振る舞い、データベースの構造、外部システムとのインタフェース項目などを決める「業務設計」

・プロジェクト全体で利用する共通部品やメッセージ、モジュール間の連携方式などを決める「アプリケーション方式設計」

製造業でいうと、要求された機能を実現するための原理や機構を概念設計で決定した後、それらを実現する製品のサイズや材料などを決定し、製品の全容を明らかにしていく作業が基本設計です。
基本設計が終了した後、細かい部品に至るまで製造可能なレベルまで決定し、図面に表していくのが詳細設計です。

ソフトウェアの受託開発においては、画面や帳票レイアウトなど目に見える部分(外部仕様)をユーザと打ち合わせしながら決めていく工程を基本設計とし、ソフトウェア会社の内部でプログラマーに指示できるレベルまで細かい事を決めていく工程を詳細設計とすることが多いようです。
各工程の作業内容や成果物については、ソフトウェア会社の企業文化やプロジェクトの特性によって多少異なります。

次章以降では、ユーザの参加が不可欠である基本設計について、その中でも打ち合わせの多くを占める業務設計について詳しく解説していきます。