ソフトウェア工学 知能情報学部 新田直也. リファクタリング  リファクタリング( refactoring ): 「プログラムの外的振る舞いを変えることなく,その内 部構造を改善すること」  もともと Smalltalk のコミュニティで使われていた.  M. ファウラーの 1999 年の著書.

Slides:



Advertisements
Similar presentations
ソフトウェア工学 知能情報学部 新田直也. 講義概要  私の研究室: 13 号館 2 階 (13-206)  講義資料について :  参考図書 : 玉井哲雄 : 「ソフトウェア工学の基礎」, 岩波書店.
Advertisements

オブジェクト指向 プログラミング 第二回 知能情報学部 新田直也. 講義計画(あくまで予定) 第 1 回 プログラミング言語の種類と歴史 第 2 回 eclipse の基本操作 第 3 回 eclipse のデバッグ機能 第 4 回 構造化プログラミングの復習 第 5 回 演習 第 6 回 構造化指向からオブジェクト指向へ.
ソフトウェア工学 理工学部 情報システム工学科 新田直也. 演習問題 1 の解答例  入庫処理の DFD 酒屋の在庫問題の DFD( 入庫処理 ) 更新情報 在庫ファイル 更新処理 倉庫係 在庫不足リスト 在庫ファイル 出庫指示書 新規出庫 判定 出庫指示書 作成処理 出庫依頼 積荷票.
ソフトウェア工学 第二回 知能情報学部 新田直也. 本日のお話  ソフトウェアの開発の流れ(開発プロセス ( process ) ,開発工程,開発ライフサイクル ( life cycle ) )について.  作業の段取り,計画は非常に重要.  引越し作業を例に考えてみよう. 段取りが悪いと …
ソフトウェア工学 知能情報学部 新田直也. オブジェクト指向パラダイムと は  オブジェクト指向言語の発展に伴って形成され てきたソフトウェア開発上の概念.オブジェク ト指向分析,オブジェクト指向設計など,プロ グラミング以外の工程でも用いられる.  ソフトウェアを処理や関数ではなくオブジェク.
オブジェクト指向 言語 論 知能情報学部 新田直也. 講義概要  私の研究室: 13 号館 2 階 (13-206)  講義資料について :  参考図書 : 河西朝雄 : 「原理がわかる プログラムの法則」,
シーケンス図の生成のための実行履歴圧縮手法
プログラマのレベルアップ.
神戸大学 大学院理学研究科 地球惑星科学専攻 博士後期課程 D2 納多 哲史
リアルタイムシステムに 上流設計ツールは有効か?
Brittany Jonson†, Yoonki Song†, Emerson Murphy-Hill†, Robert Bowdidge‡
ソフトウェア工学 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第一回 知能情報学部 新田直也.
リファクタリングのための 変更波及解析を利用した テスト支援ツールの提案
~企画~ GO,桑田,ヒルズ.
UML入門 UML PRESS vol.1 より 時松誠治 2003年5月19日.
UMLとは           032234 田邊祐司.
ソースコードに対する適用可能な修正手順を 可視化するリファクタリング支援手法の提案
ソフトウェア工学 第四回 知能情報学部 新田直也.
ソフトウェア工学 第五回 知能情報学部 新田直也.
製造準備段階における 工程FMEAの実施と不具合未然防止
ソフトウェア工学 知能情報学部 新田直也.
細かい粒度で コードの再利用を可能とする メソッド内メソッドと その効率の良い実装方法の提案
オブジェクト指向 プログラミング 第十三回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第二回 知能情報学部 新田直也.
コードクローンの分類に基づいた メソッド引き上げ手順の提案とその有効性評価
シーケンス図を用いて実行履歴を可視化するデバッグ環境の試作
XP Extreme Programming.
社会シミュレーションのための モデル作成環境
~新たなソフトウェア開発の手法~ 発表 土屋俊介
ソフトウェア設計検証 研究室の紹介 知能情報学部 准教授 新田直也.
ソースコードの特徴量を用いた機械学習による メソッド抽出リファクタリング推薦手法
オブジェクト指向言語論 第八回 知能情報学部 新田直也.
プログラミング言語論 第十四回 理工学部 情報システム工学科 新田直也.
UMLモデルを対象とした リファクタリング候補検出の試み
Winter Workshop in Kanazawa -プロセスと方法論-
本フォーマットに従い、提案する研究開発の説明資料を作成してください。
オブジェクト指向言語論 第十四回 知能情報学部 新田直也.
第15回放送授業.
プログラミング言語論 第十四回 理工学部 情報システム工学科 新田直也.
オブジェクト指向 プログラミング 第二回 知能情報学部 新田直也.
コードクローン分類の詳細化に基づく 集約パターンの提案と評価
UMLの概要とオブジェクト指向の基本概念
★C++/オブジェクト指向実践企画★ Othelloゲーム作成
INTRODUCTION TO SOFTWARE ENGINEERING
プロジェクト演習 知能情報学部 新田直也.
オブジェクトの協調動作を用いた オブジェクト指向プログラム実行履歴分割手法
ソフトウェア工学 知能情報学部 新田直也.
プログラミング言語論 第十一回 理工学部 情報システム工学科 新田直也.
All Rights Reserved, Copyright © 2004, Kobayashi
プログラムの差分記述を 容易に行うための レイヤー機構付きIDEの提案
ソフトウェア工学 知能情報学部 新田直也.
ソフトウェア工学 理工学部 情報システム工学科 新田直也.
プログラム分散化のための アスペクト指向言語
UMLモデルを対象とした リファクタリング候補検出手法の提案と実現
ロールを基にした構造進化の表現 Role based Evolution Dependency Structure Matrix
ソフトウェア工学 知能情報学部 新田直也.
プログラムの一時停止時に 将来の実行情報を提供するデバッガ
ソフトウェア工学 知能情報学部 新田直也.
コードクローン解析に基づく デザインパターン適用候補の検出手法
ソフトウェア工学 知能情報学部 新田直也.
オブジェクト指向言語論 第一回 知能情報学部 新田直也.
プログラミング言語論 第九回 理工学部 情報システム工学科 新田直也.
オブジェクト指向言語論 第七回 知能情報学部 新田直也.
プログラミング言語論 第九回 理工学部 情報システム工学科 新田直也.
オブジェクト指向言語論 第七回 知能情報学部 新田直也.
オブジェクト指向メトリクスを用いた 開発支援に関する研究 --- VC++とMFCを用いた開発を対象として ---
プログラム理解のための 付加注釈 DocumentTag の提案
アジャイル開発プロセス 森口朋広.
ソフトウェア工学 理工学部 情報システム工学科 新田直也.
Presentation transcript:

ソフトウェア工学 知能情報学部 新田直也

リファクタリング  リファクタリング( refactoring ): 「プログラムの外的振る舞いを変えることなく,その内 部構造を改善すること」  もともと Smalltalk のコミュニティで使われていた.  M. ファウラーの 1999 年の著書 「リファクタリング~プログラミングの体質改善テク ニック~」 によって広まった.( 72 個のリファクタリングをカタロ グ化)  プログラム変換の一種.ただし,コンパイラが行うよう なプログラム変換はプログラムの高速化を目的としてお り,リファクタリングと変換の目的が異なる.  現在, eclipse , Visual Studio 2005 などで実用化&注 目されている.

リファクタリングの例  「スーパークラスの抽出」を使って, Observer パターンを作成しよう … (やや単純化してあ る.)

リファクタリングの例 1. 空の親クラス( Subject )を作る

リファクタリングの例 2. 「フィールドの引き上げ」リファクタリングを 適用.

リファクタリングの例 3. 「メソッドの引き上げ」リファクタリングを適 用. → 以上で「スーパークラスの抽出」は完了

リファクタリングの例 4. 「フィールドの引き下げ」リファクタリングを 適用.

自動リファクタリングと 手動リファクタリング  当初はリファクタリングは手動で行われていた.  手動リファクタリングの場合,以下の 2 点が重要: 1 つ 1 つの作業が単純でわかり易いこと. 作業が終わるたびにテストを行って動作確認すること.  自動リファクタリングではすべての作業が自動かつ安全 に行われる. 自動化されているリファクタリングは一部. eclipse , VisualStudio2005 のリファクタリングは自動.  自動 / 手動いずれのリファクタリングでも,機能追加と リファクタリングを同時に行わないようにすること.

リファクタリングの背景  最初から完璧な事前設計を行うことは難しい. 後から仕様が変わる可能性がある. 実装して初めて設計の不備に気づく場合も多々ある. 設計者の力量不足.  リファクタリングの使用を前提すると,事前設計を「気 楽に」済ませることができる.(設計に不備があったら 後で変更すればよい.)  その他の効用: 潜在的なバグの発見 プログラミングの高速化

アジャイル( agile )前夜  開発プロセスモデルは何を問題にしていたか ? 例えば,バグが見つかったときの責任は誰にあるか ?  仕様書をきちんと書いていれば,顧客側の責任か開発者側の責任か がはっきりする. 例えば,開発プロジェクトの破綻,工程のやり直し(手戻り) を防ぐにはどうすればよいか ?  不備がないように慎重に仕様書を書こう.  不備がないように慎重に設計を行おう. → ウォーターフォールモデルの誕生  そもそも顧客からして仕様をわかっていない.  仕様変更しなければ時代についていけない.  厳密な仕様なんてプログラムと大差ない. → 早い段階からの実装.(スパイラルモデル,プロトタイピング モデル) → 開発予算,出荷時期の見積もりの問題をどうするか ?

アジャイル開発  アジャイル開発: K. ベック, M. ファウラーなどが中心になって提唱した新しい 一群の開発手法の総称. アジャイル(俊敏な,素早いの意) → 変化に対し素早く反応することを目指す. サイクルの短いスパイラルモデルともみなせる ( net.ne.jp/kengai/fowler/newMethodology_j.html#A39)  アジャイル宣言 ( ) 1. プロセスやツールよりも、個人と相互作用を 2. 包括的なドキュメントよりも、動作するソフトウェアを 3. 契約交渉よりも、顧客との協調を 4. 計画に従うよりも、変化への対応を

eXtreme Programming (XP)  4 つの価値 1. コミュニケーション 2. シンプル 3. フィードバック 4. 勇気  14 の実践項目 計画ゲーム,小さなリリース,オンサイト顧客,メ タファ,シンプルな設計,リファクタリング,テス ト・ファースト,ペア・プログラミング,コードの 共同所有,常時結合,コーディング規約,持続可能 なペース,オープンワークスペース,日ごとのス キーマ移行

まとめ  開発プロセスモデルの話題は今日でも発展して いる.  ソフトウェア工学の歴史は,プロセスとプロダ クト相互の発展の歴史. プロセス: ウォーターフォール,スパイラル,プロトタイピン グ, アジャイル,ソフトウェアファクトリ … プロダクト: 構造化技法,オブジェクト指向, UML ,アスペクト 指向 …  アジャイルプロセスは最近,産業界で急速に注 目されつつある.(ソフトウェア工学の歴史で は稀)

12/8 東証システムの不具合  12/8 みずほ銀行の誤発注,東証システムの不 具合でみずほ銀行側に 400 億円の損失. ( ews/ mh11.htm ) ews/ mh11.htm 1. 12/8 9:27 ,みずほ銀行がジェイコム株を 1 株 1 円, 61 万株で売り注文. 2. 1 分 25 秒後,みずほ銀行側が誤発注に気づき,取り 消し注文. 3. 東京証券取引所の売買システム の不具合のため取り 消し注文が受け付けられず. 4. ジェイコム株の値幅制限の下限57万2000円で 取引が行われ,みずほ銀行側に 400 億円の損失.