多事想論articles

ソフトウェア設計 -まとめ-

(6/6)

 ソフトウェア開発の現場ではいわゆる派生開発が中心で、既存ソフトウェアに手を加え機能拡張や改修が行なわれている。新規開発はプラットフォームの変更などの大きなタイミングで行なわれるが、新規の場合でも他から流用してきた既存ソフトウェアをベースにすることが多く、全く新規にソフトウェアを開発することは少ない。
 この機能拡張や流用を繰り返す中で当初のソフトウェア構造は崩れ、機能拡張や改修が困難な状況に陥ってしまう(スパゲティ状態)。ソフトウェア構造を開発者は維持したくとも、納期やコストの制約が優先され、構造の維持は二の次にされてしまっているためだ。
 今後のソフトウェア設計ではソフトウェアが当初の目的に使われるだけではないことを念頭にいれ予測して設計することと、開発当初だけ構造化設計などの設計手法を使うのではなく、ライフサイクル全般にわたってソフトウェア構造を維持していくことが必要になってくる。また、成功事例から、ソフトウェアの共通化を指向することでソフトウェアの構造を維持できるだけでなく、組織で全体最適を目指すことも可能になってくることがわかった。こうすることが既に始まったソフトウェアの大規模化や複雑化を乗り切るために必要で、これを実現するために上級マネジメントの支援が不可欠である。

最後に

 ソフトウェアはメカ、エレキからの影響を受けやすい。例えば使用するチップが変わればソフトウェアも変わる。こういう関係や組織におけるソフトウェア部門の歴史の浅さから、よく士農工商に例えてメカ>エレキ>ソフトといわれる。そのためか比較的ソフトウェア開発者はおとなしい。部品コストが下がるからと勝手にチップを変えないでほしい。ソフトは直ぐに変更できるからとぎりぎりになって仕様変更しないでほしい。ソフトウェア技術者も混ぜて全体最適で考えてほしい。ソフトウェア開発者はもっと主張すべきである。そうすれば、ソフトウェアだけの標準化、共通化にとどまらず、一歩進めてメカ・エレキも含めた標準化、共通化が可能になってくる。
ソフトウェア開発者諸氏には是非頑張っていただきたい。

資料ダウンロードはこちら