2015年6月7日日曜日

[大規模システムの設計]特性の把握(1)

 大規模システムは一般に、変更が難しいものとされる。数万~数十万、ときに数百万ステップに及ぶ実装コードで作られた複雑な仕組みは、一度組み上げてしまうと依存関係を持つモジュールが非常に多くなり、ほんの少し変えるにも多大な労力を必要とするからである。
 しかしながら、余りに硬直してしまったシステムはメンテナンスに重大な影響を及ぼしかねない。システムはライフサイクルを持つ「生き物」であり、時代の流れや求められる機能の変化に対応できるものでなければならない。たとえば、20年前ならまだフロッピーディスクにバックアップデータを出力するプログラムや、フロッピーディスクからバッチの入力データを受け付けるシステムは成立しただろう。だが現在ではそもそも、フロッピーディスクにPCが対応していないことが多く、今後も対応が打ち切られる方向性であることは確実である。
 これは何もフロッピーディスクという今となっては珍しくなった機器だけにいえることではない。SCSIやRS232C、ディスプレイのアナログ入力ポート、昔のプリンタポートのように、以前は当たり前だったが今ではサポートされないことが多くなっている機器は多い。システムは変化に柔軟に対応できるものでなければならない。
 すなわち、メンテナンス性という側面を無視して、大規模システムの設計を始めてはならないのである。将来どのように変化に対応していくかを考えた構造をあらかじめ決めておかなければ、硬直化した何万ステップというソフトウェアだけが後に残される結果となる。こうなってからでは全体の構造を変えることは困難である。
 しかしながら非常に残念なことに、大規模システムは変更が難しいという特性を考えずに設計が進んでしまっている例が散見される。何億、何十億という開発費を投じて作成するものがどうして硬直化したシステムになってしまうか、その理由は簡単である。設計技法を解説した書物に「設計は実装の影響を受けるものであってはならず、実装の都合に合わせて設計を変えてはいけない」という原理原則が書かれているからである。実装の都合で設計を変えてはならないという原理原則が、メンテナンス性の考慮を「実装の都合に合わせる不正行為」と考えさせてしまうのである。結果、設計とは理想形の業務実現にのみ特化したものでなければならない、という理屈となり、メンテナンス性はプロジェクトが始まった当初から無視される。優秀な実装者、実装も分かる優れた設計者が途中で何とか修正してくれればよいが、そのような途中修正はそもそも「ルール違反」である。原理原則に従って厳格に進めていくプロジェクトならば、そもそもメンテナンス性を先に考慮しなければならない。
 こと大規模システム開発となれば、ルール作り・ルールの順守がともに重要であることは疑いがない。だからこのような原理原則を定め、それに従うことはとても重要である。しかし間違えてはいけないことがある。大規模システム開発を命じる企業その他組織体の経営陣は、硬直化したメンテナンス困難な産物にお金をかけようとしているわけではない。些細に思えることが、後で致命的な事態を招きかねないのが、大規模システムの特性である。この場合、メンテナンス性を事前に考慮する必要があった。大規模システム開発は、考えもなく簡単に進めてはいけないのである。こうしたノウハウを持っていなければ、後から致命的な事態になって、しかもその状況をどうにもできなくなる。
 大規模システムの特性について解説してきた。
 (1) 最初の段階で考慮抜けや判断ミスがあると、大規模システムそのものがダメになる。
 (2) 最初にルールを決め、それを守らなければ大規模システム開発は混乱する。
 何億、何十億というお金を投じる開発プロジェクトの責任を持つことは容易ではない。ここには必ず専門的なノウハウが必要になるのである。

0 件のコメント:

コメントを投稿