1 設計進化 2006/9/4 ゼミ発表資料. 2 今回の発表の目的 「設計進化( design evolution )」の用語の使 われ方について考察 道具・物(電話機)の設計進化 アプリケーション(フレームワーク)の設計進化.

Slides:



Advertisements
Similar presentations
ECLフレームワー ク 近畿大学 理工学部 情報学 科 間野 哲 弥.
Advertisements

API 呼び出し列の差分を利用した Android アプリケーション比較ツールの 試作 井上研究室 神田 哲也.
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 1 ソフトウェア部品推薦のための.
Struts VS SAStruts ・ STRUTS と SAStruts を比較します。. Struts のメリット1 STRUTS はディファクトスタンダード。 ↓ プログラマがたくさんいる。 ライブラリ、ツールがたくさんある。 ビジネス案件が豊富。 書籍などの情報元が豊富。
MOSA プログラミングセミナー Mac OS X プログラミング 事始め 新居雅行( MOSA 理事) 2002/4/28.
背景 ソフトウェアの大規模化・複雑化 生産性と品質の向上 ↓ オブジェクト指向分析設計の適用 開発ツールの投入.
アルゴリズムとプログラミング (Algorithms and Programming)
東京工科大学 コンピュータサイエンス 亀田弘之
Rapid紹介 開発手法(Rapid活用)
Javaのインタフェース についての補足 2006年5月17日 海谷 治彦.
ユースケース図 FM12012 比嘉久登.
プログラミング演習3 第4回 ミニプロジェクト.
ソフトウェア工学 知能情報学部 新田直也.
オブジェクト指向プログラミング(2) OOPの三大要素 「クラス」「ポリモーフィズム」「継承」
稚内北星学園大学 情報メディア学部 助教授 安藤 友晴
CHAPTER1 UMLとオブジェクト指向の基本概念(2)
SWAT I18N 概要 付け足した機能(実行時に言語の切り替え-i18nの範囲で) 問題点(細かい技術的問題、根本的問題) 今後
ソフトウェア設計における意思決定ガイドラインとしてのデザインパターンのモデル
リファクタリングのための 変更波及解析を利用した テスト支援ツールの提案
ユーザ毎にカスタマイズ可能な Web アプリケーション用のフレームワークの実装
“W e b 2.0”,次どこへ?  - バズワード メディアコミュニケーション論Ⅲ 第3回.
オブジェクト指向 プログラミング 第十四回 知能情報学部 新田直也.
UMLの概要とオブジ工クト指向の基本概念 第2回
オブジェクト指向 プログラミング 第十三回 知能情報学部 新田直也.
暗黙的に型付けされる構造体の Java言語への導入
ソフトウェア工学 知能情報学部 新田直也.
Chapter7 constructing the environment
オブジェクト指向プログラムにおける エイリアス解析手法の提案と実現
オブジェクト指向 プログラミング 第十四回 知能情報学部 新田直也.
ソフトウェアを取り巻く環境の変化がメトリクスに及ぼす影響について
利用関係に基づく類似度を用いたJavaコンポーネント分類ツールの作成
11 ソフトウェア工学 Software Engineering デザインパターン DESIGN PATTERNS.
WEBアプリケーションの開発 2002年度春学期 大岩研究会2.
Javaプログラムの変更を支援する 影響波及解析システム
社会シミュレーションのための モデル作成環境
コードクローン検出ツールを用いた ソースコード分析システムの試作と プログラミング演習への適用
リファクタリング支援のための コードクローンに含まれる識別子の対応関係分析
SOA基盤製品 「見る、聞く、体験する SOAノウハウツアー」
ゲーム開発モデルの基礎.
ソフトウェア設計検証 研究室の紹介 知能情報学部 准教授 新田直也.
オープンソース開発支援のための ソースコード及びメールの履歴対応表示システム
プログラミング言語論 第十四回 理工学部 情報システム工学科 新田直也.
UMLモデルを対象とした リファクタリング候補検出の試み
コードクローン検出に基づくデザイン パターン適用支援手法の提案と実現
オブジェクト指向言語論 第十四回 知能情報学部 新田直也.
シナリオを用いたレビュー手法PBRの追証実験 - UMLで記述された設計仕様書を対象として -
Java における 先進的リフレクション技術
コードクローン分類の詳細化に基づく 集約パターンの提案と評価
コードクローン間の依存関係に基づく リファクタリング支援環境の実装
INTRODUCTION TO SOFTWARE ENGINEERING
ソフトウェア工学 知能情報学部 新田直也.
統合開発環境によって表現された 言語機構によるコードのモジュール化
プログラムスライスを用いた凝集度メトリクスに基づく 類似メソッド集約候補の順位付け手法
コードクローン間の依存関係に基づく リファクタリング支援手法の提案と実現
アスペクト指向言語のための視点に応じた編集を可能にするツール
メソッドの同時更新履歴を用いたクラスの機能別分類法
ソフトウェア工学 知能情報学部 新田直也.
ソフトウェア工学 理工学部 情報システム工学科 新田直也.
UMLモデルを対象とした リファクタリング候補検出手法の提案と実現
ロールを基にした構造進化の表現 Role based Evolution Dependency Structure Matrix
ソフトウェア工学 知能情報学部 新田直也.
エイリアス関係を考慮した Javaプログラム用静的スライシングツール
ソフトウェア工学 知能情報学部 新田直也.
コードクローン解析に基づく デザインパターン適用候補の検出手法
知識ベースの試作計画 ●●●研究所 ●●●技術部 稲本□□ 1997年1月.
ソフトウェア工学 知能情報学部 新田直也.
オブジェクト指向メトリクスを用いた 開発支援に関する研究 --- VC++とMFCを用いた開発を対象として ---
GluonJ を用いたビジネスロジックからのデータベースアクセスの分離
アジャイル開発プロセス 森口朋広.
計算機プログラミングI 第2回 2002年10月17日(木) 履習登録 複習 ライブラリの利用 (2.6-7) 式・値・代入 (2.6-8)
Presentation transcript:

1 設計進化 2006/9/4 ゼミ発表資料

2 今回の発表の目的 「設計進化( design evolution )」の用語の使 われ方について考察 道具・物(電話機)の設計進化 アプリケーション(フレームワーク)の設計進化

3 発表内容 今回の発表の目的 設計の分類:外部設計、内部設計 設計進化の調査 考察 まとめと今後の予定

4 ・コードレベル ・構造レベル 設計の分類 内部設計 ・ユーザインタフェースレベル ・機能レベル 外部 or 製品設計 ソフトウェアはユーザ の要求を満たすために どうやって構成されて いるべきか? ソフトウェアはユー ザの要求を満たすよ うに何を 備えてい るべきか? ソフトウェ ア ・再利用性 ・変更容易性 ・理解容易性 ・拡張容易性 ・性能 ・ etc モジュール(クラス など)

5 「設計進化」の調査 調査目的 「設計進化」という用語が、どんな文脈でどんな 意味で使われているか? 調査対象 道具・物(電話機)の設計進化 [ ノーマン ] アプリケーション(フレームワーク)の設計進化 [tokuda] ドナルド・ A. ノーマン. 「誰のためのデザイン ? 」 Lance Tokuda. Evolving Object-Oriented Designs with Refactorings. Ph.D. Thesis, 1999.

6 電話機の設計の進化 ドナルド・ A. ノーマン. 「誰のためのデザイン ? 」 電話機を考えてみよう。初期の頃の電話機はゆっくり と 何世代 かにわたって進化した [ ノーマン ] 。 初期の電話機 大きさや形の改良、信 頼性の向上、機能の向 上 便利だった改善点の喪失 スピードと目新し さの要求 現在の電話機 受話器とマイク をそれぞれの手 に持たなければ ならない 伝わる音声は貧弱 ボタンの大きさや間隔は幅 広い層にあう 音にフィードバックがある (プッシュボタンを押せば 受話器に響く) プッシュボタンのめ ちゃくちゃな配置 ボタンは大きすぎ・ 小さすぎ ボタンを押しても フィードバックがな い […] そして、デザインの世界に民間伝承のように伝わっていたデザインのや り方はすべて失われてしまった [ ノーマン ] 。 回転ダイアルやプッシュボ タンの配置は実験の結果で 決定

7 リファクタリングによる設計の 進化 リファクタリングの定義 外部から見たときの振る舞いを保ちつつ、理解や 修正が簡単になるように、ソフトウェアの内部構 造を変化させること [ ファウラー ] 。 tokuda の研究目的 リファクタリングによる設計進化を自動化する ツールの開発 マーチン ファウラー「リファクタリング」, Lance Tokuda. Evolving Object-Oriented Designs with Refactorings. Ph.D. Thesis, 1999.

8 設計が進化する理由( 1/2 ) 機能性( capability ):新しい機能のサポー ト。既存の機能の変更。 再利用性:他のアプリケーションで再利用で きるようにする 拡張性:将来の拡張追加に備える 保守性:再構成により保守のコストを削減す る Lance Tokuda. Evolving Object-Oriented Designs with Refactorings. Ph.D. Thesis, 1999.

9 設計が進化する理由( 2/2 ): 人間的側面 経験:経験ある従業員は、彼らのドメイン知 識をベースにより良い設計を作る可能性があ る。 新しい展望:新しいプロジェクトメンバーは、 ある設計がどうやって構成されるのかついて 異なるアイデアを持っていることがよくある。 実験:適切な設計に達するには、異なる設計 パスを探索することが要求されるかもしれな い Lance Tokuda. Evolving Object-Oriented Designs with Refactorings. Ph.D. Thesis, 1999.

10 オブジェクト指向における 3 つ種類の設計進化 スキーマ変換:オブジェクト指向データベースス キーマ変換。例:クラス名の変更、新しいインスタ ンス変数の追加、クラス階層におけるメソッドの移 動 デザインパターン:クラス、オブジェクト、メソッ ドなどの間の関係の繰り返し起こる集合。よくある オブジェクト指向設計問題に対する望ましい解決策 を定義。 ホットスポット駆動アプローチ:フレームワークの どの側面(=ホットスポット)がアプリケーション 間で異なりやすいのかを特定。 Lance Tokuda. Evolving Object-Oriented Designs with Refactorings. Ph.D. Thesis, 1999.

11 ホットスポット ホットスポット駆動アプローチ:フレームワークの どの側面(=ホットスポット)がアプリケーション 間で異なりやすいのかを特定 データホットスポット: アプリケーション間でインスタンス変数が変わりうるとき、 抽象クラスを導入 機能ホットスポット: 特別なメソッドとクラスを導入 テンプレートメソッドパターン

12 Computer Integrated Manufacturing フレームワークの設計進化 CFObject CNameEnt CResource CCompMgrCFactoryCMoveResCPerson CEquipmentManagerCPersnMgrCMachine Version 2 CFObject CIcon CResource CIcCompMgCIcFactoryCIcMoveResCIcPerson CIcMachineCIcEquipMCIcPersnMg NamedEnt Resource CompMgrFactoryMoveResPerson EquipMgrPeronMgrMachine m_objptr Version 4 81 の個々の リファクタリング 設計進化

13 考察 / 思ったこと: 設計進化の側面 個体 / 内部設計(リファクタリ ング) 振る舞いを変更せずに、個体 (個々のアプリケーション / フ レームワーク / ライブラリ)レ ベルでの構造の変更 種 / 外部設計 ハードウェア:電話機 [ ノーマ ン ] 、タイプライタ [ ノーマン ] ソフトウェア: Web フレーム ワーク(?)、コンパイラコ ンパイラ(?)、プログラミ ング言語(?) 設計の対象内部、外部 進化の対象個体、種 ドナルド・ A. ノーマン. 「誰のためのデザイン ? 」 Mehdi Jazayeri. Species evolve, individuals age. Invited Keynote talk, International Workshop on Principles of Software Evolution リファクタリング=設 計進化? or 設計進化= リファクタリング? 設計進化に至る組み合わせ 個体種 (ファミ リ) 内部設計 tokuda の例 ( リファクタリ ング ) 外部設計電話機の例 設計進化の側面(次 元?) 進化の規模大きい、小さい 進化の速度速い、ゆっくり 設計進化の特性

14 考察 / 思ったこと:設計進化の側 面 例:コンパイラコンパイラ 個体種(ファミ リ) 内部設計 外部設計 JavaCC SableCC ANTLR 種 種 個体 個体 / 内部設計:リファクタリングによるプログラム構造レベルでの設 計進化 個体 / 外部設計:インタフェース(たとえば API )の改善などを目的とし た設計進化 種 / 内部設計:内部構造を設計するにあたって、コンパイラコンパイラ 開発に共通となるようなライブラリ / 設計技術( Visitor パターン) / アー キテクチャの検討や採用? 種 / 外部設計:コンパイラコンパイラ開発で共通となるような機能や ツール( ant タスク、 Eclipse プラグインなど)の提供?

15 考察 / 思ったこと:設計進化の側 面: 疑問点 設計進化を引き起こす要因(たとえば環境? そもそも環境とは?) 各組合せ(内部 / 外部 / 個体 / 種)の間の関係 内部 / 個体の場合の「設計進化」を引き起こすプロセスは、リファクタリン グだけ? 振る舞いを保たずに構造を変化させることを「設計進化」と呼んでい い? すべて の「構造変化」は、「設計進化」? 機能を追加することによって構造が変化したなら「設計進化」? 機能を追加することによって構造が変化したことにより、リファクタリ ングの余地が出た場合は「設計進化」? そもそもソフトウェアにおける「種」の定義は? 生物の分野でも、色々な 定義や考え(「種」は存在しない)がある [Wikipedia: 種 ( 生物 )] プロダクトラインやアーキテクチャの話はどう関わってくる?

16 まとめと今後の予定 外部設計(インタフェース・機能レベル)と 内部設計(コード・構造レベル)を分けて考 えた 「設計進化」の用語の使われ方について調査 「設計進化」の側面について考察 今後の予定:「設計進化」の側面について もっと考える

17 簡単な研究ネタ: 種 / 内部レベルでの設計進化 時間 ソフトウェ ア 世代交代 ver 1.0 ver 2.0ver 1.0 ver x.x 疑問:種レベルでの共通の構造(部分的・全体的なアーキテクチャ)は、生まれて きているか? Yes なら、どの時期にどのようにしてどの部分において発生してきて いるのか? 共通になる要因:共通のライブラリの採用、似た設計技術の採用、共通の機能要求 など 新しい点:時期を考慮している点。