上流設計品質管理のポイント

| 2. ネットワーク構成設計のチェックポイント

1. 上流設計の品質を上げるためには

上流設計の性質と管理の必要性

通信・ネットワークシステム開発における「上流設計」とは、システムの広い範囲を対象とし、開発の早い段階で実施される一連の設計を指しています。ただ、「広い範囲」「早い段階」というのは相対的な議論なので、明確な境界線が共通認識として一般に合意されているわけではありません。

そこで、当サイトでは設計の性質に着目して「上流設計」の範囲を定義します。当サイトでは、「上流設計」を「通信・ネットワークシステム開発における設計のうち、ノードの内部に関する設計を除いたもの」と定義しました。具体的には、システム設計と、もしもサブシステムが存在するのであればサブシステム設計までが上流設計となります。そして、それよりも後工程となるノードの内部の設計、プロセスやタスク、ミドルウェアや共有ライブラリの設計などは、当サイトの定義では上流設計には含まれないことになります。なお、ノードの外部仕様設計はシステム設計もしくはサブシステム設計の一部ですので、上流設計に含まれます。

どのような性質に着目して上流設計の範囲を定義したかというと、ソフトウェア開発技術への依存度です。もちろん、通信・ネットワークシステムはソフトウェアなくして成立しないものですから、どの工程であってもソフトウェア開発技術に関する理解があることは求められます。しかし、その求められるウェイトには差があります。ノードの内部に関する設計は、ハードウェア設計の部分を除けば、まさにソフトウェアそのものに関する設計ということになります。それに対し、当サイトで定義した「上流設計」は、もう少し抽象度の高い設計となります。ソフトウェアに関する理解は求められつつも、ソフトウェアそのものの設計よりは抽象度の高い設計、というのが当サイトで定義した上流設計の性質です。

よって、ソフトウェアの開発力や設計力と上流設計に関する設計力とでは、共通している部分もありますが異なる能力が要求される部分も大きいです。そのため、ソフトウェア開発力が高い開発者が必ずしも上流設計でもよい成果を出せるとは限りませんので、上流設計の管理はぜひ行いたいところです。

図1. 上流設計の範囲と性質

上流設計を効果的にチェックする方法

設計を担当している開発者に全幅の信頼を置いているという場合は別ですが、上流設計の成果についてはできる限り発注者も一定のチェックを行うべきでしょう。上流設計で発生した設計上の問題は、開発全体に大きな影響を落とします。できれば発注者による上流設計成果物の完全レビューが行えるとベストなのですが、時間的な制約などによって、そうはいかないこともあると思います。そういった場合には、ポイントを抑えて最低限のチェックを行うことを当サイトはお勧めします。

その際には、二つの観点でのチェックを行うとよいでしょう。一つは、設計されなければならないことが漏れなく設計されていることのチェック、もう一つは各設計事項のキーポイントが適切な設計結果になっていることのチェックです。各設計事項のキーポイントについては、[次ページ]以降で個別に説明しています。設計されなければならないことが漏れなく設計されているかのチェックポイントは、次の通りです。

  • システムの階層構造を反映して、各階層の設計が漏れなく行われているか
  • 各階層で設計すべきことが漏れなく設計されているか

階層構造ごとの設計が行われているかをチェックする

システムが階層構造を持っていてサブシステムが存在する場合には、システム設計に加えてサブシステム設計が上流工程で必要となります。サブシステムとは、複数のノードが自律的に連携して、システム内で独立性の高いまとまった役割を果たす結合度の高いノードの集まりのことです。たとえば、何らかのサービスを提供するサーバが実際にはアプリケーションサーバとデータベースとから構成されていて、さらにアプリケーションサーバはロードバランスされていて複数存在する、などというケースはよくあります。この場合のアプリケーションサーバとデータベースサーバの集まりが、サブシステムということになります。

この例のような単純な構成の場合には、システム全体の設計の中でアプリケーションサーバとデータベースサーバの構成や相互作用に関する設計を行うことも一つの方法です。ですが、サブシステムの役割や構成が複雑になる場合には、サブシステムはサブシステム設計として切り分けて設計した方が良いでしょう。なお、サブシステムがさらに下位のサブシステムから構成されているという場合もあり、その場合は下位のサブシステムについても設計が必要になります。これらの階層構造ごとの設計が漏れなく行われているかをチェックしてください。

図2. 多層構造を持つシステムの例

各階層の設計が漏れなく行われているかをチェックする

システムはサブシステムによって複数の階層を持つ場合がありますが、その場合も各階層で行うべき設計の内容は基本的には変わりません。構成要素(ノードもしくはサブシステム)同士がネットワークを通じて連携して、なんらかのまとまった役割を果たすという点において、システムもサブシステムも共通しているためです。

まず行わなければならないのは、ネットワーク構成の設計です。システムもしくはサブシステムがどのような構成要素から構成されて、ネットワーク上にどのように配置されるのかについて定義する必要があります。構成要素はノードの場合もあれば、下位のサブシステムである場合もあります。通信・ネットワークシステムの開発で、これが設計から漏れるということはさすがにないでしょう。なお、ネットワーク構成設計の内容についてのチェックに関しては、[ネットワーク構成設計のチェックポイント] をご覧ください。

次に、システムは何らかの機能を実現するわけですから、機能に関する設計を行わなければなりません。ここでは、必要な機能の設計が漏れなく行われていることをチェックできるとよいでしょう。その際に見落としがちなのが、管理機能の設計です。通信・ネットワークシステムでは、システムへの要求事項として実現したい機能以外に、システムを管理するための機能が重要なウェイトを占めています。これには、通信分野でOAM(Operation, Administration and Maintenance)と呼ばれている機能を含みます。システムの起動や停止、通信経路やパフォーマンスの監視、システムの動作パラメータの変更、運用開始後のノードの追加・削除などが挙げられます。具体的な内容については[管理機能設計のチェックポイント]で説明しています。

各機能の設計は、構成要素間のインタフェース設計(プロトコル設計)と相互作用設計によって構成されているはずです。構成要素間の相互作用設計は、シーケンス図を用いて行われることが多いようですが、それ以外の方法で行われる場合もあるでしょう。ここでは、異常系やバリエーションケースにおける相互作用が明確に定義されていることを確認してください。正常系の相互作用設計が行われないということはまずないでしょうが、異常系やバリエーションケースにおける構成要素間の相互作用が曖昧になるということはときどき見られます。

そして、構成要素の外部仕様設計までが各階層の設計に含まれなければならないものとなります。外部仕様設計とは、各構成要素が各状況においてどのように動作するかを構成要素の外部から見たときの視点で設計することです。システム設計であればシステムを構成するノードもしくはサブシステムの外部仕様設計、サブシステム設計であればノードもしくはさらに下層のサブシステの外部仕様設計を行います。外部仕様設計は設計から漏れていることが時折見られますので、注意すべきポイントです。正常系のみであれば、プロトコル設計や構成要素間の相互作用設計によって自明であることも多いですが、異常系やバリエーションケースまで含めてノードやサブシステムの動作を明確にするためには明示的な外部仕様設計が必要です。なお、外部仕様設計の具体的なチェックポイントについては[外部仕様設計のチェックポイント]をご覧ください。

図3. 上流設計の各階層のチェックポイント

無料小冊子のお申込みはこちら

株式会社システム計画研究所のオフィシャルサイトはこちら

通信・ネットワークシステム開発に関するご相談はこちら

サーバ監視・ネットワーク監視ツール isNetSentry-S のサイトはこちら

信頼できるITシステムの開発と利用を支援する技術情報提供サイト「信頼のシステム開発.COM」はこちら