06

29

構造化設計はいまでも重要

2010.06.29(23:14)

私の実感として、ソースコード全体のうち、どのくらいの割合がどの技術で問題解決しているかを分類すると、以下のような感じになると思っています。

ソースコード行数が10万行から、数百万行に増えてゆく過程で、一番上の段階から、ひとつずつ下の段階に変わってゆきます。

(1)構造化設計 100%
(2)構造化設計 70% + RTOS 30%
(3)構造化設計 60% + RTOS 20% + オブジェクト指向 20%
(4)構造化設計 50% + RTOS 10% + オブジェクト指向 20% + モデル駆動開発 20 %
(5)構造化設計 40% + RTOS 10% + オブジェクト指向 10% + モデル駆動開発 20 % + プロダクトライン 20%

数字は直感でしかありませんが、いいたいことは、

■ 新しい技術が入ったからといって、それが課題を100%解決するわけではない。新しい技術は古い技術の一部を置き換える形で入ってくる。
■ 50万行以下のプロジェクトなら、(1)や(2)のままでも職人技と残業でなんとかなる(らしい)。
■ RTOS(タスク分割によるタスク内隠蔽)は、オブジェクト指向の情報隠蔽につながっている。
■ オブジェクト指向だけでは全部解決できないが、オブジェクト指向より右側はすべてオブジェクト指向がベースになっている。オブジェクト指向で解決できる部分が増えてゆくにつれて、より大規模ソフトウェアに対応できるようになる。
■ 最終的にいつかは、オブジェクト指向は、半分以上をカバーするようになる。
■ でも、どこまでいっても、構造化設計でカバーされる部分は残る。
(昔作って、もう二度と手をいれない部分も含む)
■ 構造化設計が大事なのはいまも変わらない。
全体の半分くらいは実は構造化設計がいまでももっとも大事な解決手段。クラスの中のメソッド中も実は構造化設計。
■ オブジェクト指向の考えでできていても、プロダクトラインになっているとは限らない。
■ プロダクトラインのしくみがないと派生機種並行開発、多種少量開発は非常に難しい。

モデル駆動を始めた、というのは、(3)から(4)の段階になりつつある、という理解ができると思います。モデル駆動開発できる仲間がどんどん増えていってほしいと思っています。

プロダクトライン開発入門の講義も、やっぱり「構造化設計の重要性はいまでも変わらない」ところから始めたいと思っています。結合度と凝集度を考慮したモジュール分割ができないと、結合度と凝集度を考慮したクラス分割ができるようになりません。

プロダクトラインへの道

コメントの投稿

非公開コメント

プロフィール

島敏博

Shima Toshihiro 島敏博
信州アルプスハイランド在住。HaskellとElixirが好き。組み込みソフトウェアアーキテクト、C++プログラマ、山歩き、美術館巡り、和食食べ歩き、日本赤十字社救急法指導員、インデックス投資、クラシック音楽、SESSAME会員、状態マシン設計、モデル駆動開発、ソフトウェアプロダクトライン、Rubyist、実践ビジネス英語

■ ツイッター
http://twitter.com/saltheads
■ Facebook
http://www.facebook.com/saltheads
■ Qiita
http://qiita.com/saltheads

印刷する場合は、ブラウザの印刷メニューではなく、このページの上から3cmくらいの青いところにある、「印刷」を押してみてください。少しうまく印刷できます。まだ完全ではないのですが、これで勘弁してください。


カテゴリ
最新記事
月別アーカイブ
最新コメント
検索フォーム
リンク
sessame
RSSリンクの表示