« プロダクトラインと派生開発(その2) | トップページ | オブジェクト指向と構造化 お勧めは? »

2011年2月 6日 (日)

構造化設計にこだわるわけ

Interface誌の連載「強いプログラムを作るテクニックを学ぶ」では、設計技法として構造化設計を取り上げています。
第一回の本編でも書きましたが、構造化設計は30年以上前に提唱された、設計技法です。そのころに比べるとソフトウェアの稼働環境が大きく変わっており、プログラムは大規模化し、プログラミング言語も多様化しています。その環境を考えると、構造化設計は確かに古い設計技法です。

クラスというデータとメソッド(処理)をパッケージ化して実装できるオブジェクト指向設計に比べ、構造化設計はモジュール(処理)の関係だけでプログラムを構築します。
実は、ソフトウェアの部品(一部機能)を独立性高く作ろうとすると、オブジェクト指向を用いた方が、作りやすいのです。

ではなぜ、オブジェクト指向を取り上げずに、今なお構造化設計にこだわっているのか...
その理由は、クラス設計には、思考の転換が必要で、ハードルが高いと感じているからです。

設計技法を勉強せずに、とりあえずC言語でプログラムを書いていると、どういう順番で処理をしていくかという手続き型の思考になっています。その従来の考え方から、オブジェクトという塊の連携でプログラムを構成するという考え方へのシフトは、なかなか難しいものです。
しかし、この考えが難しいからと言って、手をこまねいていては、プログラムは改善しません。


世の情勢としては、ソフトウェアの開発効率をよりよくするために、既にいろいろな改善が試みられています。
プロダクトラインや、派生開発のXDDPもその一手段です。
しかし、それらのアプローチをとるためには、設計・テスト・プロセス管理について、しっかりした基礎力がなければ成功はないのです。

そこで... 手続き型の思考でも取りつきやすい構造化設計技法にて、まずは開発の基礎力をまずは向上させる。それが急務ではないかというのが、私の考えです。


下に、構造化設計の三大成果物の絵を添付します。
この絵に、皆さんの手元のプログラムを当てはめてみてください。

構造化設計技法は、手続き型の考えで、いかにプログラム構造を構築するかを提唱しています。
オブジェクト指向に比べると、そのハードルはだいぶ低くなると思います。

ソフトウェア開発の改善を少しでも早く進めるために、まずは構造化設計技法を身に着け、ソフトウェアの構造の改善に取り組んでほしい。そう考え、構造化設計を取り上げています。

3_3

※ 図中、成果物1の四角はモジュール(関数など)を表し、矢印はモジュール間の呼び出し関係を表しています。

※ 関連記事: Interface 2011年1月号

« プロダクトラインと派生開発(その2) | トップページ | オブジェクト指向と構造化 お勧めは? »

Interface記事」カテゴリの記事

コメント

コメント書きました.

初コメントありがとうございます。
次回は是非、感想でも書いていただけると嬉しいです。

やらかしてしまいました。
(指摘の詳細は、トラックバック先にあります。)

この記事では、オブジェクト指向設計 = クラス設計のように読めてしまいます。
確かに、それは大間違いです。2/11の記事にて、訂正書いておきました。

コメントを書く

(ウェブ上には掲載しません)

トラックバック


この記事へのトラックバック一覧です: 構造化設計にこだわるわけ:

» 組込みでのオブジェクト指向的思考 [後悔^H^H公開日記:別館]
コメントください。 Twitter / Yuko Sakai: 2月からブログ始めてみました。Interface連載 ... とのことなので,書いてみる. ではなぜ、オブジェクト指向を取り上げずに、今なお構造化設計にこだわっているのか... その理由は、クラス設計には、思考の転換が必要で、ハード... [続きを読む]

« プロダクトラインと派生開発(その2) | トップページ | オブジェクト指向と構造化 お勧めは? »