sunday-labの日本語訳版です。英語版のXOOPS Cube関連記事を翻訳作業中...

2008年5月14日水曜日

An ideal software design (2)

大規模システム/アプリケーションの世界では、仕様書が事前に準備される。基本的に、それは、信頼できる。そのため、ソフトウェア設計者は、プログラムやプログラマのためにプログラムを設計することができる。しかし、大規模システム/アプリケーションは、どちらかというとプログラマではなくプログラムに指向する。なぜなら、そのようなシステム/アプリケーションは、長期間使われるからだ。従って、これらのシステム/アプリケーションは、小さな変更に対応するために柔軟で、そして、拡張性を持つべきである。これらの特徴を実装するために、ソフトウェア設計者は、プログラマの立場ではなくプログラムの立場でソフトウェアを設計する。ソフトウェアは合理的なモジュールに分割される。

それは、非常にエクセレントだ。しかし、それは、全ての場合に有効であるか?

大規模システム/アプリケーションは、ソフトウェアのひとつのカテゴリに過ぎない。この世のすべてのプロジェクトが同じシチュエーションであるわけではない。そこには、期間、目的、規模、サイクル、実行形態(リアルタイムかどうか等)、そして、専門性プログラマなどの要素がある。理想的なソフトウェア設計とは、それらの要素への最適解ではないだろうか。(そしてその設計が設計期間中に書かれること)

そのため、だれかが別の状況からその設計を眺める場合、その設計が良くないと感じるかもしれない。

一部の設計者は美しい設計を探求し、それを正義だと考えている。しかし、ソフトウェア設計は、設計者が彼の人生をささげる芸術ではないし、設計者が楽しむためのゲームでもない。しかしながら、大規模システム/アプリケーションを除き良いガイダンスがないのも事実だ。一部の設計者は、それらのガイダンスをクールと感じ、そして、それをプロジェクトに適用しようとする……

厳しい現実は、あなたの設計を(あなたの考える)理想から遠ざけるかもしれない。その一方で、厳しい現実は時折あなたを最適解へつれていくこともある。

0 件のコメント: