ソフトウェア工学 理工学部 情報システム工学科 新田直也.

Slides:



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

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

ソフトウェア工学 理工学部 情報システム工学科 新田直也

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

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

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

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

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

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

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

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

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

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

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

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

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