研究

What is a Design Evolution?

ソフトウェアにおけるデザイン進化とは? まず、いくつかのレベルでのデザイン活動が考えられる。(全体としての)アーキテクチャレベルのデザイン、コンポーネント(クラスなど)レベルでのデザイン、コードレベルでのデザイン。実際には、コンポーネントの…

Completness of Large Refactoring and Structure Evolution

大きなリファクタリングとプログラムの構造進化との関係は? 「リファクタリング」によれば、個々の小さなリファクタリングは数分から数時間で終わるのに対して、大きなリファクタリングは数ヶ月から数年かかる。また、大きなリファクタリングの場合、どこで…

Dimensions of Design Evolution

ゼミ発表資料。内容の正確さの保障はしません。 http://www.ncfreak.com/asato/doc/ppt/design_evolution.ppt http://www.ncfreak.com/asato/doc/ppt/design_evolution.htm

Role based Evolution Dependency Structure Matrix

昨日学校のゼミで発表した資料。REDSM の構想から、資料の完成まで10時間ぐらいで作った内容なので色々と問題点あり。 http://www.ncfreak.com/asato/doc/ppt/redsm.ppt http://www.ncfreak.com/asato/doc/ppt/redsm.htm

Design Evolution in Software

ソフトウェアにおける設計の進化とは何か? なぜ設計の進化を考えることが重要なのか? 「誰のためのデザイン?」では、デザインの進化の例として、電話機をあげている。良いデザインと悪いデザインの例として、電話機を床に落としてしまった時に、電話が切…

Constructing and Exploring Design Spaces

設計者は、どうやって設計プロセスのアウトプットとして解決策を探し、決定する? グラスの「Software Conflict 2.0」によれば、設計の本質とは: The essence of design, then, is rapid modeling and simulation. つまり、設計者は、 (1) 問題に対する解決…

(Meta)Modeling Module Evolution Patterns

モジュールの構造は、外部や環境の要求に応じて、進化(or 変化)する。 たとえば、クラスにはメソッドが追加される。あるクラスのサブクラスが存在するように、「メソッドの追加」という進化にもサブクラス(サブ進化)が存在する。 たとえば、「メソッドの…

When a Decision is a Design Decision

設計とは? 設計における決定とは? 「マルチパラダイムデザイン」によれば、設計とは: 設計とは、ある問題に対して解決策となるような構造を与えるアクティビティのことである。 とある。「ModernC++ Design」によれば、設計とは: ソフトウェアシステムの…

Tyranny of the Dominant Concern

"tyranny of the dominant decomposition" と同じかもしれないけど、なんとなく。参考: N Degrees of Separation: Multi-Dimensional Separation of ConcernsDL: http://www.cs.ubc.ca/~gregor/teaching/papers/p107-tarr.pdf

Evolution Boundary of Design

モジュール(クラスやアスペクト)の構造の進化(あるいは発展・変化)を捉えようとしたときにどの範囲までその進化が及ぶことになることかを考える必要があると思う。なぜそもそも捉えなければいけないのか、捉えると何がうれしいのか、という疑問はとりあ…

Analyzing and Understanding Designs

設計自体を分析したり理解するためには、どうすればいいのか? ここで議論したいのは、ある問題領域に取り組んでいるときに、その問題に対してどのような設計がいいのかということでなく、ソフトウェアにおける設計という活動・行為やその設計から導かれるソ…

Design Patterns: Recurring Problem vs. Recurring Solution

デザインパターンの標準的な見方は「ある文脈において繰り返し発生する設計上の問題に対しての標準的な解法を明示的に記述したもの」という感じ。ある意味では、問題が繰り返し発生するだけでなく、解法も繰り返し発生する。この記事での焦点は、繰り返し発…

Modularity and Modularity Properties, or Design Choice

モジュラリティの向上と設計上の選択との関係は? そもそも モジュラリティ とは? については「デザイン・ルール」をぱっと調べても載っていなかったので省略。 質問を変えて モジュラリティが向上した という視点から考えてみる。 Hannemann と Kiczales …

De-Refactoring or Are Designs navigatable?

タイトルの意図は「リファクタリングの逆 or デザインはnavigatable?」 リファクタリングの一般的な定義(何も参照しながら書いてないので正確ではないけど)は「プログラムの振る舞いを保ったまま、設計(コード、プログラム)を改善する」という感じ。 じ…

Analyzing the History and Lifetime of Case Studies in Software Design Technologies

英語タイトルの意図するのは、ソフトウェア設計に関わる技術の有効性を評価・検証・比較する時に用いられるケーススタディや例題の歴史や寿命を分析しよう、という感じ。 ここでいう、ソフトウェア設計技術ってのは、プログラミング言語であったり、パターン…

Characterizing Modules from Structure Evolution Perspective

英語あってるのか不明。意図は、モジュール構造の進化の視点から、モジュールの種類を特徴づけよう、ということ。 ここでいうモジュールは、クラスとかアスペクトとか、ソフトウェアを構成する基本的な単位。 個々のモジュールは、変化 or 進化していく。ソ…

Bad Design is Good Design?

何がよい設計なのかは、議論がわかれるところ。一つ言えるのは、よい設計というのは、与えられた道具 or 言語やコンセプトに依存する。たとえば、オブジェクト指向設計の視点では、Observer パターンは、よい設計だといえる。というのも、通常、Observer以外…

Contextual Polymorphism?

最もよく知られているポリモーフィズムの形は、オブジェクト指向のもの。この場合、メソッドの振る舞いは、どのオブジェクトかに依存して決まる。最近、Mezini らの Caesar 言語によって、AOP 言語における新しいポリモーフィズムの形が提案されている。簡単…

Crosscutting in Advice/Pointcut Binding

AOP の本来の動機は、従来のモジュール化の方法(手続き型、オブジェクト指向、etc)では発生してしまう Crosscutting な要求をよりうまくクリーンモジュール化しようということ。 でも、アドバイスとポイントカットの定義自体にも、Crosscutting っぽいのが…

Aspectual Polymorphism

まだまだマイナな単語だと思うけど「Aspectual Polymorphism」についての覚書(なので or なのだけど、読者を限定した書き方になってしまうかも&用語とか適当に使う)。いつかどこかにちゃんとした形でまとめるかもしれないけど。"Polymorphism" という用語…

Design Patterns and Evolution Scenarios

特定のデザインパターンになった後に、どんな要件があって、その要件はそのパターンにどう影響する? 例: Observer 新しい状態変化のメソッドの追加(setX(int), setY(int) --> setX(int), setY(int), setColor(Color)) ConcreteObserver の追加 新しい Obs…