ソフトウェア工学 知能情報学部 新田直也
リファクタリング リファクタリング( 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 億円の損失.