SOFTWARE DESIGN 訳


P.140 6.〜P142

6.別の構造設計の決定

70年代にソフトウェアの構造についての論文と討論がたくさんあった。しかし、それらの論文と討論に使った期間は正確に定義された事はなかった。正確に描かれた図はあったが、箱と矢印の意味が不明瞭であった。二人の人にとって違う目的持った同じ図を描く事は簡単である。David Weissは1つの絵は1000語の価値があるかもしれないが、ソフトウェアにおいては絵の本当の意味がなんなのかを説明するために1000語を必要とする、と指摘している。

 定義の不足が永遠に続く運命であるような討論を熱くさせる。私の論文のいくつかは、図と(危険な繰り返しのような)構造において課した制限の影響の勉強の意味を理解するのに専念させられている。その時いくつかの問題が明らかにすることが可能であった。しかしあいまいな定義の期間と図を使うという悪い習慣が続いており、誰も新しい習慣を明らかにするものはいないようだ。今、誤解を加えた全ての階級の定義されていないモデリング言語(UMLs)がある。それどころか、そのような言語の主張者は彼らが良い定義づけをできないことを受け入れ、のちに誰かが良い定義づけをすることを信じている。

 設計表示の構文法を描くのと他の人が後の概念の定義を導くのに役立つという作り話が広範囲に渡っているようだが、それが働く事はない。意味が正確に定義づけられていない絵と表示はたいていよい働きより害となる。満足な設計の決定を作る事はそれらを正確に証明するのとそれらの影響を理解することが必要となる。

 今日、デザイナーが専門用語と専門的図を使う時は不確かである。UMLsは悪いアイディアだ。



7.結論

 論文のこの部分は時間の経過に抵抗するようである。その論文の言っている助言はそれが書かれた30年経った今でもまだ役に立つ。私はこれをこの論文が特定のテクノロジーに結ばれていないという事実のせいだとしている。この論文は永遠の問題と、ほとんどの言語、OS、アプリケーションに適用できるっという方法を企てることを扱っている。

 余談として、これらの論文の企画の助言は不完全である。たくさんの生徒が論文を読むことができ、その時その原則をを適用しようという試みが消える。私たちはもっと正確で、説明に役立つ例を供給する設計の原則を作ることが必要である。私はもっと多くの例を供給する計画の調査としてA-7Eのソフトウェアの再設計を企てている。たとえその計画が20年以上後にまだ(今知られているSCRとして)残っていても、私はまだ良い例の不足であるとみるだろう。他のそのような計画は投資しがいのあるものになるだろう。


ON THE CRITERIA TO BE USED IN DECOMPOSIN SYSTEM INTO MODULES 訳


P.143〜P.144

序論

 革命的な論文を作るとはなんだろう?それは贈られる新しいアイディアの広さや深さだろうか?主張の説得力があること?聴衆への影響があること?耐久性があること?新しい調査の場所で論文を開く事?一番大事な事は、読者を世界について思うようにするよう変える力を持つ論文にすることではないだろうか?この論文は上記の全てをしている。私はこれが書かれてから30年に多分10回は読んでいる。そのたびに説得力のあり、適切であり、偶然であったり、たえず再発見するアイディアをひらめく。直ちにひらめく者の一人になれる。

アイディア:モジュールは働く仕事だ。この論文の前に、たくさんのプログラマーが考え、そしてまだ行っており、そのモジュールはいくつかの方法と繋がりがあるルーチンのセットであると、たいていあいまいに述べる。多分、ルーチンはいくつかの機能か過程の歩みを共に備えるものなのかもしれない。それと対比して、Daveは、モジュールとは他の全てから隠す設計決定の知識によって特徴付けられる責任の仕事であると言う。のちにこの知識はモジュールの秘密として知られるようになり、多くの守りの分野の中の1つ専門用語が驚きと悩みを発見する。デイブはこの設計原理を“情報隠蔽”と呼んでいるが、それはしばしば誤解され、“データ隠蔽”という誤称で拘束された。よく確立した目的の方向付けはいい階級の設計の基本として情報隠蔽のポイントにアプローチしていった。

デイブは情報隠蔽の説明だけではなく、ソフトウェアの開発の中の異なった役者の為の利益のことも述べている。経営者にとって利益は、モジュールが独立に開発されることができるから、開発の時間を減少させることである。市場にとっての利益は、モジュールを独立にすばやく変えることができるべきであるから、適応性のある生産である。プログラマーにとっての利益は、モジュールをすぐに理解することができるべきであるから、わかりやすさがあることである。この利益の議論は、論文の10と14と生産ライン技術の今日の探検から本質的要素をよく考えたアイディアを調べた、ファミリーの考えを提案する。

 アイディア:ランタイムで、モジュールの中のシステムで分解していた基準を区別する事はできないかもしれない。思慮深い読者にとって、これは驚くべきアイディアである。その影響は、設計時間か、読み込み時間か、別の時間に創られたものかもしれないモジュールである。時間を拘束する事は、有効な維持できるプログラムを創造するための戦いにおいて、重大な味方になる。いつ決定を下したかということは何を決定したかと同じくらい重要なものになる。私たちは見物して励ましているマクロのファンを聞くことができる。プログラミングの見方の方向付け、最近のプログラミング技術のはやりは、モジュラー設計の創造で時間の拘束を使うという再発見が現れてきている。

アイディア:すべての情報隠蔽のモジュールはモジュールによるサービス供給が備わったアクセスする意味だけのインターフェースを持っているべきである。インターフェースはモジュールの実行とそれに伴って保持するモジュールの秘密を隠す。これは階級の方法に似ていますか?論文の15は抽象的なインターフェースとして知られている、そんなインターフェースの設計のための組織的な方法を与えてくれる。このアイディアはソフトウェア設計者の毎日の言語の中で吸収されている。私はその考えを繰り返すよう宣告した著者によって論文の中のこのアイディアが現れたとみている。

 アイディア:モジュラー分割を評価する2つの方法、情報隠蔽に基づく主張をする特定の方法は、何を適応させるように変えたのかを尋ねることである。昨今これをアーキテクチャ批評と呼ぶかもしれないが、設計批評の維持できる部分の実行の仕方の根源はここにある。容易に適応される設計の変化のリストと、期待されて変化するリストを比べる。これはコストの見積もりと、設計の良さを量ることが出来る基準を導くものになる。さらに深く見ると、仕事の目指すところと容易に適応させる変化と生産ラインの計画上のアーキテクチャの評価の基準とをくらべている。この戦略上のソフトウェア技術と呼ばれるアイディアは、今いくつかの大学のコースで現れ始めている。

 アイディア:階層的な構造物とモジュラー分割は2つの異なる概念がある。モジュラー分割は階級組織を導くが、ソフトウェアの設計で大事な異なったいくつかの中の階級組織の1つでしかない。暗示されているものは、異なった関係をわけるための異なった構造設計を使うアイディアである。階層的な構造物の意味とソフトウェア設計者にとって大事なことは論文8にもっと詳しく調べられている。

 先立ったアイディアとその他の多数のものが、説得力のある情報隠蔽のアプリケーションの例と、いい設計者が避けるべき共通の妨害のリストと共に 6つのわかりやすいページに含まれてている。このようにソフトウェア技術Parnas時代について思う事を始めた。

 あなたは何故革命が論文の中心からKWICの指示する異なる2つのモジュール化の例と一緒に始まるか不思議に思うかもしれません。Daveの初めの考えは1つの例としてコンパイラを使う事でした。コンパイラのための基本の設計はすでに存在しており、それを設計しなおすところはないと教えてくれた人によって、彼はコンパイラを使うという考えを思いとどまりました。思いとどまるのは簡単ではなかった、デイブはコンパイラとインタープリタの両方を含み、重要な事にそれぞれ型にはまった設計から異なったプログラムのファミリーのために、設計からヒントとなる部分を考えた。KWICが容易に生徒に説明して、いいクラスの実習になった見本を指示したことは、真実である。単純な情報隠蔽の概念の見本を紹介する事は、良かった。誠実なアインシュタインの格言にもこうある“全てのものはできるだけ単純であるべきだが、全く単純であってはいけない”