Presentation is loading. Please wait.

Presentation is loading. Please wait.

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

Similar presentations


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

Similar presentations


Ads by Google