システム開発では、要件定義の次に設計工程になります。設計工程はさらに、「概要設計」「外部設計」「内部設計」という工程で進めます。これらの工程での作業には、それぞれ異なるスキルが必要です。

 実際の開発現場では、設計の各工程は流れ作業のひとコマのように見えます。筆者は「設計は、システムの作者が作り上げる一つの大きなストーリー」と捉えています。つまり、何かを成すときに「目的」を掲げるように、システムを作り上げるときにも目的を定め、それを達成するためのストーリーを考えるのです。

 そのストーリーの通過点として設計の各工程、すなわち概要設計、外部設計、内部設計のそれぞれに目標を設定します。

 例えば、設計全体で「変化の激しい市況に対応するため、拡張性の高いシステムの構築を目指す」という目的を掲げたとします。このとき、概要設計では「まず核となる業務と商品に対応したシステムを構築する」という目標を掲げ、システムの対象スコープを定めます。

 次に外部設計では、システム拡張に容易に対応できるように「全業務共通の基本フローおよび全商品共通の機能を定義する」という目標を立てます。内部設計の前提となる方式設計では「SOA(サービス指向アプローチ)を基本としたシステムアーキテクチャーにする」という目標を立て、内部設計では、「メッセージング技術を利用した素結合なフレームワークを構築する」という目標を立てます。このように、設計には全体を通したストーリーが必要です。

ストーリー作りに必要な心技体

 このようなストーリー作りは、一朝一夕にできるようになりません。システム全体を包括的に考えられる能力を持ち、設計の各工程で必要となるさまざまな知識や技術も理解していなければなりません。ここでは、設計をストーリーとして描けるようになるために必要となる七つを挙げます(図1)。

図1●システム設計について知っておくべき七のこと
[画像のクリックで拡大表示]

 スポーツの世界では心技体そろって一人前とよくいわれますが、システム開発の世界においても、「知識」(道具を知る)、「スキル」(スキルを磨く)、「マインド」(心を育む)の三つがそろわないと、一人前のエンジニアにはなれません。

 システム設計における「道具」とは、「プログラミング言語」「ソフトウエア部品」「実装技法」です。これらの道具についての見識をもっておくことは、とても重要です。「設計にプログラミング言語の知識は必要ない」と思うかもしれませんが、それは誤りです。システムの設計書は、コーディングのための指示書だからです。

 ITエンジニアが備えておくべきスキルは、先に挙げた道具を使いこなすことです。システム設計においては「モデリング力」「イマジネーション力」「システムデザイン力」という三つのスキルが重要です。

 今“変化が当たり前”となる時代に入り、そのマインドとして「メタ思考」を身につけることをお勧めします。個々の事象にとらわれるのではなく、それらの事象がどのようなプロセスを経て発生しているのか、その本質は何かを考える姿勢は、無限ともいえる情報を扱うITの世界においてはとても重要です。

辻東 正和(つじひがし まさかず)
野村総合研究所 上席 資産運用ソリューション事業本部 事業企画室 NRI認定アプリケーションエンジニア
1988年同社に入社。技術系の本部に配属され、金融系の事業本部の支援を担当。証券会社のトレーディングシステム開発を担当し、アプリケーション開発、基盤設計・構築、運用設計、外部パッケージの導入、技術調査、事業企画から営業まで、幅広い業務を経験。
出典:日経BPムック「若手ITエンジニア 最強の指南書」 の「2-1 システム設計 基礎」を改題して編集
記事は執筆時の情報に基づいており、現在では異なる場合があります。