ソフトウェア工学 知能情報学部 新田直也 リファクタリング リファクタリング(refactoring): 「プログラムの外的振る舞いを変えることなく,その内部構造 を改善すること」 もともとSmalltalkのコミュニティで使われていた. M. ファウラーの1999年の著書 「リファクタリング~プログラミングの体質改善テクニック~」 によって広まった.(72個のリファクタリングをカタログ化) プログラム変換の一種.ただし,コンパイラが行うようなプロ グラム変換はプログラムの高速化を目的としており,リファク タリングと変換の目的が異なる. 現在,eclipse,Visual Studio 2005などで実用化&注目 されている. リファクタリングの例 「スーパークラスの抽出」を使って,Observerパ ターンを作成しよう…(やや単純化してある.) リファクタリングの例 1. 空の親クラス(Subject)を作る リファクタリングの例 2. 「フィールドの引き上げ」リファクタリングを適用. リファクタリングの例 3. 「メソッドの引き上げ」リファクタリングを適用. →以上で「スーパークラスの抽出」は完了 リファクタリングの例 4. 「フィールドの引き下げ」リファクタリングを適用. 自動リファクタリングと 手動リファクタリング 当初はリファクタリングは手動で行われていた. 手動リファクタリングの場合,以下の2点が重要: 自動リファクタリングではすべての作業が自動かつ安全に行 われる. 1つ1つの作業が単純でわかり易いこと. 作業が終わるたびにテストを行って動作確認すること. 自動化されているリファクタリングは一部. eclipse,VisualStudio2005のリファクタリングは自動. 自動/手動いずれのリファクタリングでも,機能追加とリファク タリングを同時に行わないようにすること. リファクタリングの背景 最初から完璧な事前設計を行うことは難しい. 後から仕様が変わる可能性がある. 実装して初めて設計の不備に気づく場合も多々ある. 設計者の力量不足. リファクタリングの使用を前提すると,事前設計を「気楽に」 済ませることができる.(設計に不備があったら後で変更す ればよい.) その他の効用: 潜在的なバグの発見 プログラミングの高速化 アジャイル(agile)前夜 開発プロセスモデルは何を問題にしていたか? 例えば,バグが見つかったときの責任は誰にあるか? 仕様書をきちんと書いていれば,顧客側の責任か開発者側の責任かが はっきりする. 例えば,開発プロジェクトの破綻,工程のやり直し(手戻り)を防ぐに はどうすればよいか? 不備がないように慎重に仕様書を書こう. 不備がないように慎重に設計を行おう. → ウォーターフォールモデルの誕生 そもそも顧客からして仕様をわかっていない. 仕様変更しなければ時代についていけない. 厳密な仕様なんてプログラムと大差ない. → 早い段階からの実装.(スパイラルモデル,プロトタイピングモデル) → 開発予算,出荷時期の見積もりの問題をどうするか? アジャイル開発 アジャイル開発: K.ベック,M. ファウラーなどが中心になって提唱した新しい一群の 開発手法の総称. アジャイル(俊敏な,素早いの意) → 変化に対し素早く反応することを目指す. サイクルの短いスパイラルモデルともみなせる (http://www007.upp.sonet.ne.jp/kengai/fowler/newMethodology_j.html#A39) アジャイル宣言(http://www.agilemanifesto.org/) 1. 2. 3. 4. プロセスやツールよりも、個人と相互作用を 包括的なドキュメントよりも、動作するソフトウェアを 契約交渉よりも、顧客との協調を 計画に従うよりも、変化への対応を eXtreme Programming (XP) 4つの価値 1. 2. 3. 4. コミュニケーション シンプル フィードバック 勇気 14の実践項目 計画ゲーム,小さなリリース,オンサイト顧客,メタファ, シンプルな設計,リファクタリング,テスト・ファースト,ペ ア・プログラミング,コードの共同所有,常時結合,コー ディング規約,持続可能なペース,オープンワークス ペース,日ごとのスキーマ移行 まとめ 開発プロセスモデルの話題は今日でも発展している. ソフトウェア工学の歴史は,プロセスとプロダクト相 互の発展の歴史. プロセス: ウォーターフォール,スパイラル,プロトタイピング, アジャイル,ソフトウェアファクトリ… プロダクト: 構造化技法,オブジェクト指向,UML,アスペクト指向… アジャイルプロセスは最近,産業界で急速に注目さ れつつある.(ソフトウェア工学の歴史では稀) 12/8東証システムの不具合 12/8 みずほ銀行の誤発注,東証システムの不具 合でみずほ銀行側に400億円の損失. (http://www.yomiuri.co.jp/atmoney/mne ws/20051213mh11.htm) 1. 2. 3. 4. 12/8 9:27,みずほ銀行がジェイコム株を1株1円,61 万株で売り注文. 1分25秒後,みずほ銀行側が誤発注に気づき,取り消 し注文. 東京証券取引所の売買システム の不具合のため取り 消し注文が受け付けられず. ジェイコム株の値幅制限の下限57万2000円で取引が 行われ,みずほ銀行側に400億円の損失.
© Copyright 2025 ExpyDoc