asatoの技術的な日常日記

「成長に最大の責任をもつ者は、本人であって組織ではない。自らと組織を成長させるためには何に集中すべきかを、自らに問わなければならない」  非営利組織の経営 - ピーター・ドラッカー

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

デザインプロセスとデザインデシジョン


Robert P. Smith and Steven D. Eppinger

A Predictive Model of Sequential Iteration in Engineering Design

Management Science, vol. 43, no. 8, pp. 1104-1120, August 1997

DL: http://web.mit.edu/eppinger/www/publications.html


に次のような文があったのが考えてみる(太字は僕による)。

In studying engineering design, it has been observed that a complete design process is divisible into discrete design decisions (Marples 1961, von Hippel 1990). Each decision is made in consideration of previous decisions and is subject to change based on later results.


デザインプロセスは、デザインデシジョンに分割できる、ってところだけど、図で描くとこんな感じか。


decision.png



ソフトウェアデザインにおけるデザインデシジョンとは何か。Cai が、Constraint Network と呼ばれる形式的なモデルを用いて説明しているので、それを見てみよう。

Yuanfang Cai

Modularity in Design: Formal Modeling and Automated Analysis

PhD Dissertation.

DL: http://www.cs.virginia.edu/~yc7a/Publications.htm


CN は、設計次元や外部状況をモデル化するための形式的なモデル。次のような要素から成る:
-変数:デザインデシジョンが行われる次元を表現
-値:デザインデシジョンを表す
-ドメイン:値の集合から成る
-論理的制約:要求される関係をモデル化

論文でも用いられているけど、例として行列クラスを考えてみる。このクラスのデータ構造は、クライアントがどうやって使うかに依存する。array は、密行列(dense matrix)に有効。linked list は、疎行列(sparse matrix)に有効。また、このクラスのメソッドの実装するアルゴリズムは、データ構造に対応しなければならない。

ここで、データ構造やアルゴリズムを設計次元とし、クライアントの要求を、外部状況として扱う。

Constraint Network を使って、この行列クラスの設計をモデル化するとこうなる。

scalar matrix: (dense, sparse)
scalar data_structure: (list_ds, array_ds, other);
scalar algorithm: (list_alg, array_alg, other);
data_structure = array_ds => matrix = dense;
data_structure = list_ds => matrix = sparse
algorithm = array_alg => data_structure = array_ds
algorithm = list_alg => data_structure = list_ds

cn.png


他にも例えば、Observer パターンを CN で表すとこんな感じ(より詳細なやつは論文を参照)。

scalar policy_notify: (push, pull) // 通知ポリシー。
scalar subject_to_observer_map: (hashtable, other); // どうやって subject と observer をマップするか。



最初のテーマとの関係性を何か言うつもりだったのだけど、発散してしまった感がある。

一つ考察するなら、デザインプロセスとは、CN を構築し、更新し、デシジョンを行うことを繰り返すプロセスといえるかもしれない。問題解決(=デザイン)のプロセスの初めから、設計空間を完全にモデル化できるわけでもないし、途中で問題が変われば、つまり、要求変化があれば、CN を更新する必要がある。
スポンサーサイト

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバックURLはこちら
http://asatohan.blog77.fc2.com/tb.php/47-363b417b
この記事にトラックバックする(FC2ブログユーザー)

FC2Ad

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。