SlideShare a Scribd company logo
1 of 30
Download to read offline
情報理理⼯工学特別講義A


変更更に基づくソフトウェアの
 ライフサイクルとプロセス
    平成25年年1⽉月21⽇日(⽉月)

   NTTデータ先端技術株式会社
     ソリューション事業部
        ⾵風⼾戸  広史
講義概要
     〜~ みなさんと⼀一緒に考えたいこと 〜~

•  前編「ソフトウェアの⼀一⽣生」
 –  ソフトウェアには⼈人間と同じように⼈人⽣生 (?)  が
    あると考えられています.
 –  ソフトウェアはどのように⽣生まれて,成⻑⾧長して,
    ⽼老老いていくのでしょうか.
•  後編「ソフトウェアの変更更」
 –  ⼈人間の成⻑⾧長が細胞分裂裂の繰り返しによって起こる
    ように,ソフトウェアでもミクロな変更更が成⻑⾧長と
    進化を起こします.
 –  ミクロな変更更はどのように⾏行行われるのでしょう.
参考書籍
•  Software Engineering: The Current
   Practice (2011)
     –  ゼロからのソフトウェア開発
        ではなく「変更更」を重点的に
        教えるユニークな教科書
     –  著者: V. Rajlich
          •  ⽶米国ウェイン州⽴立立⼤大学教授
          •  ソフトウェア理理解に関する
             国際会議 ICPC における
             終⾝身ステアリング委員


http://www.amazon.co.jp/dp/1439841225
前編

ソフトウェアの⼀一⽣生
〜~ライフサイクル・モデル〜~
ソフトウェア・ライフサイクル
•  ソフトウェアの⼀一⽣生をいくつかの段階に
   分ける考え⽅方
 –  例例: ウォーターフォール・モデル (1970年年代)

                          •  上流流の要求や設計に注⼒力力
    要求分析                     し,仕様の漏漏れや誤解を
                             減らす
           設計
                          •  実装段階での時間と労⼒力力
                             の無駄を最⼩小限に抑えて
                実装           スケジュールの遅延を回
                             避し,品質を⾼高める
       (ユーザへの引き渡し)


                     保守・運⽤用
ただし前提が…
•  滝の⽔水は⼀一⽅方向に流流れ落落ちる
 –  逆流流させる  ためには⼤大きなエネルギーが必要
    (業界⽤用語で “⼿手戻り”)
変更更を踏まえたライフサイクル
•  段階的 (staged) モデル [Rajlich 2011]
     初期開発
                          ソフトウェアの進化
初期バージョン                   •    新しい機能の追加         ソフトウェア開発者の
            進化中           •    不不具合の修正          仕事の⼤大部分は「変更更」

          進化の終了了                     サービスパッチ
                                     •    最⼩小限度度の変更更
                   稼働中                    (深刻なバグ,セキュリティ
                                          問題などへの対応)
            サービス期間の終了了

                         段階的廃⽌止
                               停⽌止

                                     運⽤用停⽌止
例例: マイクロソフト製品
•  サポートライフサイクルを導⼊入 (2002年年10⽉月)
                                                                         オンライン
                                        メインストリーム           延⻑⾧長サポート
 サポートの種類                                                                 セルフヘルプ
                                        サポートフェーズ           フェーズ
                                                                         サポート

 仕様変更更、新機能のリクエスト                               ✔                 ✖
                                                                             ✔
 セキュリティ更更新プログラム                                ✔                 ✔       マイクロソフトの
                                                                         オンライン上にあ
                                                                 ★       るリソースを利利⽤用
 その他の修正プログラム (バグ修正)                            ✔           (延⻑⾧長修正プログラ   し、マイクロソフ
                                                            ムサポート契約)     トに直接コンタク
                                                                         トを取る必要がな
 無償サポート (ライセンスやライセン                                                      く、すばやく問題
 スプログラム、その他の無償ライセン                             ✔                 ✖       を解決することが
 スプログラムに付属)                                                                できます。

 有償サポート  (インシデントサポート、
 時間制サポート)                                      ✔                 ✔
                                                            ビジネス、開発
                                            全製品
 サポート対象の製品カテゴリ                                               ⽤用ソフウェア       全製品
                                          (最短 5 年年間)
                                                              (最短5年年間)
 http://support.microsoft.com/gp/lifecycle/ja より表を引⽤用 (⼀一部を修正)
世代交代を含むライフサイクル
•  複数のバージョンを並⾏行行して開発する
       初期開発

 初期バージョン
                       ソフトウェア
           進化中         の進化
           (ver 1.x)            サービス
                                パッチ
                       稼働中
 新しいバージョン
 への進化
                                段階的廃⽌止
                       ソフトウェア
           進化中         の進化
           (ver 2.x)
                                         運⽤用停⽌止
                                サービス
                                パッチ
 新しいバージョン
                       稼働中
 への進化
                                段階的廃⽌止
           進化中                           運⽤用停⽌止
           (ver 3.x)
例例: Microsoft Windows
•  Vista 以降降は 3 年年ごとに新バージョンをリリース
               2001

                      2002

                             2003

                                    2004

                                           2005

                                                  2006

                                                         2007

                                                                2008

                                                                       2009

                                                                              2010

                                                                                     2011

                                                                                            2012

                                                                                                   2013

                                                                                                          2014

                                                                                                                 2015

                                                                                                                        2016

                                                                                                                               2017

                                                                                                                                      2018

                                                                                                                                             2019

                                                                                                                                                    2020

                                                                                                                                                           2021

                                                                                                                                                                  2022

                                                                                                                                                                         2023
 バージョン



Windows XP
Professional                    メインストリーム                                       延⻑⾧長サポート
                                サポート

Windows
Vista                                                       メインストリーム                               延⻑⾧長サポート
Business                                                    サポート


Windows 7                                                                      メインストリーム                                 延⻑⾧長サポート
Professional                                                                   サポート


Windows 8
                                                                                                    メインストリーム                                 延⻑⾧長サポート
Pro
                                                                                                    サポート


http://support.microsoft.com/gp/lifeselectwin のサポート情報をもとに年年表を作成
例例: Ubuntu の⻑⾧長期サポート版
                     (LTS; Long Term Support)

•  2008年年4⽉月から 2 年年ごとにリリース




 https://wiki.ubuntu.com/LTS より図を引⽤用
例例: 全銀システム
•  銀⾏行行間の為替取引 (振り込み等) を処理理する
   ためのネットワーク




http://www.zengin-net.jp/zengin_net/pdf/pamphlet_j.pdf から第2図を引⽤用
例例: 全銀システム
•  現在は第6次システム (2011年年〜~)
1970                1980             1990             2000                 2010



         第1次
       (1973.4〜~)     第2次
         <5年年>      (1979.2〜~)      第3次
                     <8年年余>      (1987.11〜~)      第4次
                                    <8年年>      (1995.11〜~)      第5次
                                                  <8年年>      (2003.11〜~)        第6次
                                                                <8年年>        (2011.11〜~)

                                                                              2000万件/⽇日
   システムの処理理能⼒力力
     (テレ為替)                                                  1500万件/⽇日
                                               1350万件/⽇日




                                   500万件/⽇日

       100万件/⽇日      140万件/⽇日


http://www.zengin-net.jp/zengin_net/pdf/pamphlet_j.pdf 第2表から図を作成
前半のまとめ
•  ソフトウェアには⼀一⽣生 (ライフサイクル)
   があります.
 –  若若いときには成⻑⾧長もするし,病気 (バグ) への
    抵抗⼒力力もありますが,やがて成熟期に⼊入ると
    健康維持に気をつけながら社会に貢献します.
 –  寿命はソフトウェアの種類や環境により様々
    ですが,多くの⼈人に使われるソフトウェアは
    5〜~10年年程度度は⽣生存します.
 –  寿命が尽きる前に,次の世代 (バージョン) に
    役割を引き継ぎます.
後編

ソフトウェアの変更更
〜~変更更とそのプロセス〜~
なぜ変更更が必要なのか?
•  変更更は⽬目的によって 4 種類に分類される
 変更更の種類*             変更更の意図・⽬目的
 完全化                 ソフトウェアに新しい機能を追加し,より価
 Perfective Change   値を⾼高めるための変更更.
 適応                  ソフトウェアを新しい運⽤用環境へ適応させる
 Adaptive Change     ための変更更.
 是正                  ソフトウェアのバグや不不具合を修正するため
 Corrective Change   の変更更.
 予防的                 ソフトウェアとその価値を予防的に守るため
 Protective Change   の変更更.ユーザにはこの種の変更更による効果
                     は直接⾒見見えない.

 * 変更更の種類の⽇日本語訳は JIS X 0161:2008 で定義されたソフトウェア保守の区分と⼀一致させた.
変更更要求の管理理
•  新しい機能を考えついたり,バグを⾒見見つけた
   としても,いきなり変更更を始め (られ) ない
 –  ⼀一般には,ソフトウェアの利利⽤用者と開発者は同じ
    ⼈人ではない
 –  変更更には時間やお⾦金金がかかるので,重要な変更更を
    優先して対応するべき
•  対策: 忘れないように書きとめておこう
 –  要求管理理ツール
 –  バグ管理理システム (Bug Tracking System; BTS)
例例: EC-CUBE
•  電⼦子商取引 (EC) サイトを構築するための
   パッケージ・ソフトウェア
 –  国内で開発され,オープンソースで公開中

                                  顧客向け画⾯面
                                  管理理画⾯面




 http://demo211.ec-cube.net/
例例: EC-CUBE の開発コミュニティ
                    (掲⽰示板・電⼦子会議室)
•  質問・バグ報告・機能要望を誰でも投稿できる




 http://xoops.ec-cube.net/modules/newbb/index.php
変更更要求の 1 つ分に対する
              開発プロセス
  変更更の開始                               •    実装する変更更要求を決める
    (Initiation)

                                       •    修正の中⼼心となる重要なソースコードの箇所や
実装箇所の特定                                     更更新すべきモジュールを特定する
(Concept Location)

                                       •    特定した箇所への変更更の実装⽅方針を検討しなが
変更更影響の分析                                    ら,修正すべきソースコードの範囲を⾒見見積る
 (Impact Analysis)

                                       •    ソースコードの修正を容易易にするために,事前
  変更更前の
リファクタリング                                    にリファクタリングを⾏行行う
  (Prefactoring)
                                       •    ソースコードを修正し,新しい機能を実装した
                      (Verification)




  変更更の実現                                    りバグを除去したりする
                     検証




  (Actualization)
                                       •    変更更を実装した後に,ソースコードをきれいに
  変更更後の
リファクタリング                                    整える
  (Postfactoring)
                                       •    変更更されたソースコードを版管理理システムにコ
  変更更の完了了                                   ミットしたり,⽂文書の更更新やリリース作業など
   (Conclusion)
                                            を⾏行行う
変更更の開始
                         (Initiation)
•  優先度度や開発スケジュールに従い,対応
   する変更更要求を選択する
                                              次回リリースで対応
        題名: 受注商品情報が空で注⽂文が完了了できる               (2013/1/xx)
        投稿者: jiro / 投稿⽇日時: 2012-10-24 15:53
                                               バグ    要望
        説明: EC CUBE ver2.11.5ですが、受注商品情報
        (dtb_order_detail)が空で注⽂文が完了了できる
        (場合がある)現象が発⽣生しています。                   積み残し課題
ふむふむ…                                         (バックログ)
        似たような現象を確認された⽅方はいらっしゃいま
                                               バグ   要望
        すでしょうか?




  開発者                                                     ユーザ
実装箇所の特定
          (Concept Location)
•  変更更要求に含まれる “概念念” に対応する
   ソースコードの箇所を特定する
概念念         実装個所  (ファイル名)

            •    pages/shopping/LC_Page_Shopping.php
            •    pages/shopping/LC_Page_Shopping_Complete.php お買い物の完了了
 商品カタログ     •    pages/shopping/LC_Page_Shopping_Confirm.php  お買い物の確認
 ショッピング     •    pages/shopping/LC_Page_Shopping_Deliv.php
 会員登録       •    pages/shopping/LC_Page_Shopping_LoadPaymentModule.php
            •    pages/shopping/LC_Page_Shopping_Multiple.php
            •    pages/shopping/LC_Page_Shopping_Payment.php
            •    html/install/temp/install.log
            •    html/shopping/complete.php
            •    html/shopping/confirm.php
            •    html/shopping/deliv.php
                   ......




開発者
変更更影響の分析
                            (Impact Analysis)
•  特定した箇所の付近を調査し,変更更が必要な
   範囲を⾒見見積る      SC_CartSession.php 内の
                                                                      checkProducts 関数
 LC_Page_Shopping_Confirm.php
 …
   function action() {
                $objCartSess = new SC_CartSession_Ex();
                …
                // 前のページで正しく登録⼿手続きが⾏行行われた記録があるか判定
                 if (!$objSiteSess->isPrePage()) {
                    SC_Utils_Ex::sfDispSiteError(PAGE_ERROR, $objSiteSess);
                }
                …
                // カート内商品のチェック
                 $this->tpl_message = $objCartSess->checkProducts($this->cartKey);   SC_Utils.php 内の
                if (!SC_Utils_Ex::isBlank($this->tpl_message)) {                     IsBlank 関数
                    SC_Response_Ex::sendRedirect(CART_URLPATH);
                    exit;
                }
変更更の繰り返しプロセス
              (アジャイル反復復プロセス)
                     プロダクト・バックログ

                        イテレーション・
                          バックログ              プロダクト
ユーザ                                          マネージャ




                                    ビルド
                 並⾏行行開発による
                ソフトウェア変更更
                    …               デイリー
                                   ミーティング




      プログラマ
                    イテレーションミーティング
                        /リリース         プロセス
                                     マネージャ
反復復型のライフサイクル (再掲)
•  段階的 (staged) モデル [Rajlich 2011]
     初期開発
                          ソフトウェアの進化
初期バージョン                   •    新しい機能の追加         ソフトウェア開発者の
            進化中           •    不不具合の修正          仕事の⼤大部分は「変更更」

          進化の終了了                     サービスパッチ
                                     •    最⼩小限度度の変更更
                   稼働中                    (深刻なバグ,セキュリティ
                                          問題などへの対応)
            サービス期間の終了了

                         段階的廃⽌止
                               停⽌止

                                     運⽤用停⽌止
アジャイル開発⼈人材へのニーズ
•  NTTデータ・楽天の報道発表 (2012年年11⽉月2⽇日)




 http://www.nttdata.com/jp/ja/news/release/2012/110200.html
後半のまとめ
•  ソフトウェアの進化は⼩小さな変更更の繰り返し
   で実現されています.
 –  ⻑⾧長⽣生きの秘訣: 随所でコミュニケーションを⾏行行い
    関係者の価値観やアイデアを素早く取り込む
 –  デザイン思考: 作りながら考え,考えながら作る
•  変更更は単純作業ではありません.プロのソフ
   トウェア開発者なら…
 –  クールに: ⼩小さな変更更を確実こなす
 –  創造的に: 新しいアイデアややり⽅方を試したり,
    同僚僚と議論論したりする
おわりに
•  ソフトウェアがこれからも社会のしくみ
   を⽀支え続けていくために,みなさんの⼒力力
   が必要です!
 –  ⼤大きな進化を⼀一度度きりの開発,⼀一⼈人の開発者
    だけで実現することは困難でも…
 –  適切切な知識識・スキルを備えた開発者がチーム
    ワークを発揮して,⼩小さな変更更を着実に積み
    重ねていけば達成できるはず.
•  プロのソフトウェア開発者としてお会い
   できる⽇日を楽しみにしています.
参考⽂文献
•  V. Rajlich, “Software Engineering: The
   Current Practice”, Chapman & Hall/CRC,
   2011
•  ⼤大森隆⾏行行, 丸⼭山勝久, 林林晋平, 沢⽥田篤史, “ソフ
   トウェア進化研究の分類と動向”, コンピュー
   タソフトウェア, 29(3), 3-28, 2012
•  T. Mens, Y.-G. Guehénéuc, J. Fernández-
   Ramil, & ,M. D’Hondt, “Guest Editors’
   Introduction: Software Evolution”, IEEE
   Software, 27(4), 22–25, 2010
Credits
•  Waterfall-Gruggies-burn by
   baaker2009, on Flickr
  –  http://flic.kr/p/7M2rkU

More Related Content

Viewers also liked

ミッションドリブンなデザイナの働き方
ミッションドリブンなデザイナの働き方ミッションドリブンなデザイナの働き方
ミッションドリブンなデザイナの働き方中田 和行
 
Modeling and Utilizing Security Knowledge for Eliciting Security Requirements
Modeling and Utilizing Security Knowledge for Eliciting Security RequirementsModeling and Utilizing Security Knowledge for Eliciting Security Requirements
Modeling and Utilizing Security Knowledge for Eliciting Security RequirementsShinpei Hayashi
 
Supporting Design Model Refactoring for Improving Class Responsibility Assign...
Supporting Design Model Refactoring for Improving Class Responsibility Assign...Supporting Design Model Refactoring for Improving Class Responsibility Assign...
Supporting Design Model Refactoring for Improving Class Responsibility Assign...Shinpei Hayashi
 
Detecting Occurrences of Refactoring with Heuristic Search
Detecting Occurrences of Refactoring with Heuristic SearchDetecting Occurrences of Refactoring with Heuristic Search
Detecting Occurrences of Refactoring with Heuristic SearchShinpei Hayashi
 
Refactoring Edit History of Source Code
Refactoring Edit History of Source CodeRefactoring Edit History of Source Code
Refactoring Edit History of Source CodeShinpei Hayashi
 
Toward Structured Location of Features
Toward Structured Location of FeaturesToward Structured Location of Features
Toward Structured Location of FeaturesHiroshi Kazato
 
Class Responsibility Assignment as Fuzzy Constraint Satisfaction
Class Responsibility Assignment as Fuzzy Constraint SatisfactionClass Responsibility Assignment as Fuzzy Constraint Satisfaction
Class Responsibility Assignment as Fuzzy Constraint SatisfactionShinpei Hayashi
 
Toward Understanding How Developers Recognize Features in Source Code from De...
Toward Understanding How Developers Recognize Features in Source Code from De...Toward Understanding How Developers Recognize Features in Source Code from De...
Toward Understanding How Developers Recognize Features in Source Code from De...Shinpei Hayashi
 
Feature Location for Multi-Layer System Based on Formal Concept Analysis
Feature Location for Multi-Layer System Based on Formal Concept AnalysisFeature Location for Multi-Layer System Based on Formal Concept Analysis
Feature Location for Multi-Layer System Based on Formal Concept AnalysisHiroshi Kazato
 
Incremental Feature Location and Identification in Source Code
Incremental Feature Location and Identification in Source CodeIncremental Feature Location and Identification in Source Code
Incremental Feature Location and Identification in Source CodeHiroshi Kazato
 
iFL: An Interactive Environment for Understanding Feature Implementations
iFL: An Interactive Environment for Understanding Feature ImplementationsiFL: An Interactive Environment for Understanding Feature Implementations
iFL: An Interactive Environment for Understanding Feature ImplementationsShinpei Hayashi
 
Recording Finer-Grained Software Evolution with IDE: An Annotation-Based Appr...
Recording Finer-Grained Software Evolution with IDE: An Annotation-Based Appr...Recording Finer-Grained Software Evolution with IDE: An Annotation-Based Appr...
Recording Finer-Grained Software Evolution with IDE: An Annotation-Based Appr...Shinpei Hayashi
 
Generating Assertion Code from OCL: A Transformational Approach Based on Simi...
Generating Assertion Code from OCL: A Transformational Approach Based on Simi...Generating Assertion Code from OCL: A Transformational Approach Based on Simi...
Generating Assertion Code from OCL: A Transformational Approach Based on Simi...Shinpei Hayashi
 
Understanding Source Code Differences by Separating Refactoring Effects
Understanding Source Code Differences by Separating Refactoring EffectsUnderstanding Source Code Differences by Separating Refactoring Effects
Understanding Source Code Differences by Separating Refactoring EffectsShinpei Hayashi
 
Sentence-to-Code Traceability Recovery with Domain Ontologies
Sentence-to-Code Traceability Recovery with Domain OntologiesSentence-to-Code Traceability Recovery with Domain Ontologies
Sentence-to-Code Traceability Recovery with Domain OntologiesShinpei Hayashi
 
Terminology Matching of Requirements Specification Documents and Regulations ...
Terminology Matching of Requirements Specification Documents and Regulations ...Terminology Matching of Requirements Specification Documents and Regulations ...
Terminology Matching of Requirements Specification Documents and Regulations ...Shinpei Hayashi
 
Product listing ads_201212_ja
Product listing ads_201212_jaProduct listing ads_201212_ja
Product listing ads_201212_jaYoshihiro Okada
 
Historef: A Tool for Edit History Refactoring
Historef: A Tool  for Edit History RefactoringHistoref: A Tool  for Edit History Refactoring
Historef: A Tool for Edit History RefactoringShinpei Hayashi
 
Visualizing Stakeholder Concerns with Anchored Map
Visualizing Stakeholder Concerns with Anchored MapVisualizing Stakeholder Concerns with Anchored Map
Visualizing Stakeholder Concerns with Anchored MapTakanori Ugai
 
FOSE2010 ミニチュートリアル 「データマイニング技術を応用したソフトウェア構築・保守支援」
FOSE2010 ミニチュートリアル 「データマイニング技術を応用したソフトウェア構築・保守支援」FOSE2010 ミニチュートリアル 「データマイニング技術を応用したソフトウェア構築・保守支援」
FOSE2010 ミニチュートリアル 「データマイニング技術を応用したソフトウェア構築・保守支援」Takashi Kobayashi
 

Viewers also liked (20)

ミッションドリブンなデザイナの働き方
ミッションドリブンなデザイナの働き方ミッションドリブンなデザイナの働き方
ミッションドリブンなデザイナの働き方
 
Modeling and Utilizing Security Knowledge for Eliciting Security Requirements
Modeling and Utilizing Security Knowledge for Eliciting Security RequirementsModeling and Utilizing Security Knowledge for Eliciting Security Requirements
Modeling and Utilizing Security Knowledge for Eliciting Security Requirements
 
Supporting Design Model Refactoring for Improving Class Responsibility Assign...
Supporting Design Model Refactoring for Improving Class Responsibility Assign...Supporting Design Model Refactoring for Improving Class Responsibility Assign...
Supporting Design Model Refactoring for Improving Class Responsibility Assign...
 
Detecting Occurrences of Refactoring with Heuristic Search
Detecting Occurrences of Refactoring with Heuristic SearchDetecting Occurrences of Refactoring with Heuristic Search
Detecting Occurrences of Refactoring with Heuristic Search
 
Refactoring Edit History of Source Code
Refactoring Edit History of Source CodeRefactoring Edit History of Source Code
Refactoring Edit History of Source Code
 
Toward Structured Location of Features
Toward Structured Location of FeaturesToward Structured Location of Features
Toward Structured Location of Features
 
Class Responsibility Assignment as Fuzzy Constraint Satisfaction
Class Responsibility Assignment as Fuzzy Constraint SatisfactionClass Responsibility Assignment as Fuzzy Constraint Satisfaction
Class Responsibility Assignment as Fuzzy Constraint Satisfaction
 
Toward Understanding How Developers Recognize Features in Source Code from De...
Toward Understanding How Developers Recognize Features in Source Code from De...Toward Understanding How Developers Recognize Features in Source Code from De...
Toward Understanding How Developers Recognize Features in Source Code from De...
 
Feature Location for Multi-Layer System Based on Formal Concept Analysis
Feature Location for Multi-Layer System Based on Formal Concept AnalysisFeature Location for Multi-Layer System Based on Formal Concept Analysis
Feature Location for Multi-Layer System Based on Formal Concept Analysis
 
Incremental Feature Location and Identification in Source Code
Incremental Feature Location and Identification in Source CodeIncremental Feature Location and Identification in Source Code
Incremental Feature Location and Identification in Source Code
 
iFL: An Interactive Environment for Understanding Feature Implementations
iFL: An Interactive Environment for Understanding Feature ImplementationsiFL: An Interactive Environment for Understanding Feature Implementations
iFL: An Interactive Environment for Understanding Feature Implementations
 
Recording Finer-Grained Software Evolution with IDE: An Annotation-Based Appr...
Recording Finer-Grained Software Evolution with IDE: An Annotation-Based Appr...Recording Finer-Grained Software Evolution with IDE: An Annotation-Based Appr...
Recording Finer-Grained Software Evolution with IDE: An Annotation-Based Appr...
 
Generating Assertion Code from OCL: A Transformational Approach Based on Simi...
Generating Assertion Code from OCL: A Transformational Approach Based on Simi...Generating Assertion Code from OCL: A Transformational Approach Based on Simi...
Generating Assertion Code from OCL: A Transformational Approach Based on Simi...
 
Understanding Source Code Differences by Separating Refactoring Effects
Understanding Source Code Differences by Separating Refactoring EffectsUnderstanding Source Code Differences by Separating Refactoring Effects
Understanding Source Code Differences by Separating Refactoring Effects
 
Sentence-to-Code Traceability Recovery with Domain Ontologies
Sentence-to-Code Traceability Recovery with Domain OntologiesSentence-to-Code Traceability Recovery with Domain Ontologies
Sentence-to-Code Traceability Recovery with Domain Ontologies
 
Terminology Matching of Requirements Specification Documents and Regulations ...
Terminology Matching of Requirements Specification Documents and Regulations ...Terminology Matching of Requirements Specification Documents and Regulations ...
Terminology Matching of Requirements Specification Documents and Regulations ...
 
Product listing ads_201212_ja
Product listing ads_201212_jaProduct listing ads_201212_ja
Product listing ads_201212_ja
 
Historef: A Tool for Edit History Refactoring
Historef: A Tool  for Edit History RefactoringHistoref: A Tool  for Edit History Refactoring
Historef: A Tool for Edit History Refactoring
 
Visualizing Stakeholder Concerns with Anchored Map
Visualizing Stakeholder Concerns with Anchored MapVisualizing Stakeholder Concerns with Anchored Map
Visualizing Stakeholder Concerns with Anchored Map
 
FOSE2010 ミニチュートリアル 「データマイニング技術を応用したソフトウェア構築・保守支援」
FOSE2010 ミニチュートリアル 「データマイニング技術を応用したソフトウェア構築・保守支援」FOSE2010 ミニチュートリアル 「データマイニング技術を応用したソフトウェア構築・保守支援」
FOSE2010 ミニチュートリアル 「データマイニング技術を応用したソフトウェア構築・保守支援」
 

Similar to 変更に基づくソフトウェアのライフサイクルとプロセス

サービス開発における工程
サービス開発における工程サービス開発における工程
サービス開発における工程Hidetoshi Mori
 
BTS/ITSの近況とあれこれ 2015
BTS/ITSの近況とあれこれ 2015BTS/ITSの近況とあれこれ 2015
BTS/ITSの近況とあれこれ 2015minazou67
 
スキニーなシステム開発にぴったりの契約形態
スキニーなシステム開発にぴったりの契約形態スキニーなシステム開発にぴったりの契約形態
スキニーなシステム開発にぴったりの契約形態Eiwa System Management, Inc.
 
これからの「アジャイル」の話をしよう 2012 ――今を生き延びるための開発手法とエンジニアに求められるスキル
これからの「アジャイル」の話をしよう 2012 ――今を生き延びるための開発手法とエンジニアに求められるスキルこれからの「アジャイル」の話をしよう 2012 ――今を生き延びるための開発手法とエンジニアに求められるスキル
これからの「アジャイル」の話をしよう 2012 ――今を生き延びるための開発手法とエンジニアに求められるスキルFumihiko Kinoshita
 
Relationship betweenddd and mvc
Relationship betweenddd and mvcRelationship betweenddd and mvc
Relationship betweenddd and mvcTakao Tetsuro
 
【16-B-7】TIDAコンソーシアム
【16-B-7】TIDAコンソーシアム【16-B-7】TIDAコンソーシアム
【16-B-7】TIDAコンソーシアムDevelopers Summit
 
【技術研究部】バージョン管理について
【技術研究部】バージョン管理について【技術研究部】バージョン管理について
【技術研究部】バージョン管理についてKeepAlive1
 
Ignite ui 2012 最新情報 jQuery UI 編
Ignite ui 2012 最新情報 jQuery UI 編Ignite ui 2012 最新情報 jQuery UI 編
Ignite ui 2012 最新情報 jQuery UI 編Daizen Ikehara
 
イノベーションスプリント2011 infragisticsにおける世界分散アジャイル開発事例~ communication matters ~
イノベーションスプリント2011 infragisticsにおける世界分散アジャイル開発事例~ communication matters ~イノベーションスプリント2011 infragisticsにおける世界分散アジャイル開発事例~ communication matters ~
イノベーションスプリント2011 infragisticsにおける世界分散アジャイル開発事例~ communication matters ~InnovationSprint2011
 
【JaSST'11 Kansai】 開発者とテスト担当者に最適なコラボレーションと効率化を!
【JaSST'11 Kansai】 開発者とテスト担当者に最適なコラボレーションと効率化を!【JaSST'11 Kansai】 開発者とテスト担当者に最適なコラボレーションと効率化を!
【JaSST'11 Kansai】 開発者とテスト担当者に最適なコラボレーションと効率化を!智治 長沢
 
【Agile Conference tokyo 2011】 継続的フィードバック
【Agile Conference tokyo 2011】 継続的フィードバック【Agile Conference tokyo 2011】 継続的フィードバック
【Agile Conference tokyo 2011】 継続的フィードバック智治 長沢
 
Application Re-Architecture Technology ~ StrutsからSpring MVCへ ~
Application Re-Architecture Technology ~ StrutsからSpring MVCへ ~Application Re-Architecture Technology ~ StrutsからSpring MVCへ ~
Application Re-Architecture Technology ~ StrutsからSpring MVCへ ~Yuichi Hasegawa
 
Team Foundation Server ~ 今を生きるエンジニアのための開発基盤とは 【BPStudy #63】
Team Foundation Server ~ 今を生きるエンジニアのための開発基盤とは 【BPStudy #63】 Team Foundation Server ~ 今を生きるエンジニアのための開発基盤とは 【BPStudy #63】
Team Foundation Server ~ 今を生きるエンジニアのための開発基盤とは 【BPStudy #63】 智治 長沢
 
Netadvantage 2012 volume2 最新情報 Reporting 編
Netadvantage 2012 volume2 最新情報 Reporting 編Netadvantage 2012 volume2 最新情報 Reporting 編
Netadvantage 2012 volume2 最新情報 Reporting 編Daizen Ikehara
 
楽天インターネットスケーラブルコンピューティング;丸山先生レクチャーシリーズ2010第3回@楽天
楽天インターネットスケーラブルコンピューティング;丸山先生レクチャーシリーズ2010第3回@楽天楽天インターネットスケーラブルコンピューティング;丸山先生レクチャーシリーズ2010第3回@楽天
楽天インターネットスケーラブルコンピューティング;丸山先生レクチャーシリーズ2010第3回@楽天Hiro Yoshioka
 
【JaSST'11 Tokyo】 テスト イノベーション
【JaSST'11 Tokyo】 テスト イノベーション【JaSST'11 Tokyo】 テスト イノベーション
【JaSST'11 Tokyo】 テスト イノベーション智治 長沢
 

Similar to 変更に基づくソフトウェアのライフサイクルとプロセス (20)

Ignite UI 2012 最新情報 jQuery Mobile 編
Ignite UI 2012 最新情報 jQuery Mobile 編Ignite UI 2012 最新情報 jQuery Mobile 編
Ignite UI 2012 最新情報 jQuery Mobile 編
 
サービス開発における工程
サービス開発における工程サービス開発における工程
サービス開発における工程
 
BTS/ITSの近況とあれこれ 2015
BTS/ITSの近況とあれこれ 2015BTS/ITSの近況とあれこれ 2015
BTS/ITSの近況とあれこれ 2015
 
Ms retail update ra 20191030
Ms retail update ra 20191030Ms retail update ra 20191030
Ms retail update ra 20191030
 
スキニーなシステム開発にぴったりの契約形態
スキニーなシステム開発にぴったりの契約形態スキニーなシステム開発にぴったりの契約形態
スキニーなシステム開発にぴったりの契約形態
 
これからの「アジャイル」の話をしよう 2012 ――今を生き延びるための開発手法とエンジニアに求められるスキル
これからの「アジャイル」の話をしよう 2012 ――今を生き延びるための開発手法とエンジニアに求められるスキルこれからの「アジャイル」の話をしよう 2012 ――今を生き延びるための開発手法とエンジニアに求められるスキル
これからの「アジャイル」の話をしよう 2012 ――今を生き延びるための開発手法とエンジニアに求められるスキル
 
Relationship betweenddd and mvc
Relationship betweenddd and mvcRelationship betweenddd and mvc
Relationship betweenddd and mvc
 
【16-B-7】TIDAコンソーシアム
【16-B-7】TIDAコンソーシアム【16-B-7】TIDAコンソーシアム
【16-B-7】TIDAコンソーシアム
 
【技術研究部】バージョン管理について
【技術研究部】バージョン管理について【技術研究部】バージョン管理について
【技術研究部】バージョン管理について
 
Ignite ui 2012 最新情報 jQuery UI 編
Ignite ui 2012 最新情報 jQuery UI 編Ignite ui 2012 最新情報 jQuery UI 編
Ignite ui 2012 最新情報 jQuery UI 編
 
イノベーションスプリント2011 infragisticsにおける世界分散アジャイル開発事例~ communication matters ~
イノベーションスプリント2011 infragisticsにおける世界分散アジャイル開発事例~ communication matters ~イノベーションスプリント2011 infragisticsにおける世界分散アジャイル開発事例~ communication matters ~
イノベーションスプリント2011 infragisticsにおける世界分散アジャイル開発事例~ communication matters ~
 
【JaSST'11 Kansai】 開発者とテスト担当者に最適なコラボレーションと効率化を!
【JaSST'11 Kansai】 開発者とテスト担当者に最適なコラボレーションと効率化を!【JaSST'11 Kansai】 開発者とテスト担当者に最適なコラボレーションと効率化を!
【JaSST'11 Kansai】 開発者とテスト担当者に最適なコラボレーションと効率化を!
 
【Agile Conference tokyo 2011】 継続的フィードバック
【Agile Conference tokyo 2011】 継続的フィードバック【Agile Conference tokyo 2011】 継続的フィードバック
【Agile Conference tokyo 2011】 継続的フィードバック
 
Visual Studio 2010
Visual Studio 2010Visual Studio 2010
Visual Studio 2010
 
Application Re-Architecture Technology ~ StrutsからSpring MVCへ ~
Application Re-Architecture Technology ~ StrutsからSpring MVCへ ~Application Re-Architecture Technology ~ StrutsからSpring MVCへ ~
Application Re-Architecture Technology ~ StrutsからSpring MVCへ ~
 
グレープシティと業務システム開発のモダナイゼーション
グレープシティと業務システム開発のモダナイゼーショングレープシティと業務システム開発のモダナイゼーション
グレープシティと業務システム開発のモダナイゼーション
 
Team Foundation Server ~ 今を生きるエンジニアのための開発基盤とは 【BPStudy #63】
Team Foundation Server ~ 今を生きるエンジニアのための開発基盤とは 【BPStudy #63】 Team Foundation Server ~ 今を生きるエンジニアのための開発基盤とは 【BPStudy #63】
Team Foundation Server ~ 今を生きるエンジニアのための開発基盤とは 【BPStudy #63】
 
Netadvantage 2012 volume2 最新情報 Reporting 編
Netadvantage 2012 volume2 最新情報 Reporting 編Netadvantage 2012 volume2 最新情報 Reporting 編
Netadvantage 2012 volume2 最新情報 Reporting 編
 
楽天インターネットスケーラブルコンピューティング;丸山先生レクチャーシリーズ2010第3回@楽天
楽天インターネットスケーラブルコンピューティング;丸山先生レクチャーシリーズ2010第3回@楽天楽天インターネットスケーラブルコンピューティング;丸山先生レクチャーシリーズ2010第3回@楽天
楽天インターネットスケーラブルコンピューティング;丸山先生レクチャーシリーズ2010第3回@楽天
 
【JaSST'11 Tokyo】 テスト イノベーション
【JaSST'11 Tokyo】 テスト イノベーション【JaSST'11 Tokyo】 テスト イノベーション
【JaSST'11 Tokyo】 テスト イノベーション
 

Recently uploaded

TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 

Recently uploaded (9)

TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 

変更に基づくソフトウェアのライフサイクルとプロセス

  • 1. 情報理理⼯工学特別講義A 変更更に基づくソフトウェアの ライフサイクルとプロセス 平成25年年1⽉月21⽇日(⽉月) NTTデータ先端技術株式会社 ソリューション事業部 ⾵風⼾戸  広史
  • 2. 講義概要 〜~ みなさんと⼀一緒に考えたいこと 〜~ •  前編「ソフトウェアの⼀一⽣生」 –  ソフトウェアには⼈人間と同じように⼈人⽣生 (?)  が あると考えられています. –  ソフトウェアはどのように⽣生まれて,成⻑⾧長して, ⽼老老いていくのでしょうか. •  後編「ソフトウェアの変更更」 –  ⼈人間の成⻑⾧長が細胞分裂裂の繰り返しによって起こる ように,ソフトウェアでもミクロな変更更が成⻑⾧長と 進化を起こします. –  ミクロな変更更はどのように⾏行行われるのでしょう.
  • 3. 参考書籍 •  Software Engineering: The Current Practice (2011) –  ゼロからのソフトウェア開発 ではなく「変更更」を重点的に 教えるユニークな教科書 –  著者: V. Rajlich •  ⽶米国ウェイン州⽴立立⼤大学教授 •  ソフトウェア理理解に関する 国際会議 ICPC における 終⾝身ステアリング委員 http://www.amazon.co.jp/dp/1439841225
  • 5. ソフトウェア・ライフサイクル •  ソフトウェアの⼀一⽣生をいくつかの段階に 分ける考え⽅方 –  例例: ウォーターフォール・モデル (1970年年代) •  上流流の要求や設計に注⼒力力 要求分析 し,仕様の漏漏れや誤解を 減らす 設計 •  実装段階での時間と労⼒力力 の無駄を最⼩小限に抑えて 実装 スケジュールの遅延を回 避し,品質を⾼高める (ユーザへの引き渡し) 保守・運⽤用
  • 6. ただし前提が… •  滝の⽔水は⼀一⽅方向に流流れ落落ちる –  逆流流させる  ためには⼤大きなエネルギーが必要 (業界⽤用語で “⼿手戻り”)
  • 7. 変更更を踏まえたライフサイクル •  段階的 (staged) モデル [Rajlich 2011] 初期開発 ソフトウェアの進化 初期バージョン •  新しい機能の追加 ソフトウェア開発者の 進化中 •  不不具合の修正 仕事の⼤大部分は「変更更」 進化の終了了 サービスパッチ •  最⼩小限度度の変更更 稼働中 (深刻なバグ,セキュリティ 問題などへの対応) サービス期間の終了了 段階的廃⽌止 停⽌止 運⽤用停⽌止
  • 8. 例例: マイクロソフト製品 •  サポートライフサイクルを導⼊入 (2002年年10⽉月) オンライン メインストリーム 延⻑⾧長サポート サポートの種類 セルフヘルプ サポートフェーズ フェーズ サポート 仕様変更更、新機能のリクエスト ✔ ✖ ✔ セキュリティ更更新プログラム ✔ ✔ マイクロソフトの オンライン上にあ ★ るリソースを利利⽤用 その他の修正プログラム (バグ修正) ✔ (延⻑⾧長修正プログラ し、マイクロソフ ムサポート契約) トに直接コンタク トを取る必要がな 無償サポート (ライセンスやライセン く、すばやく問題 スプログラム、その他の無償ライセン ✔ ✖ を解決することが スプログラムに付属) できます。 有償サポート  (インシデントサポート、 時間制サポート) ✔ ✔ ビジネス、開発 全製品 サポート対象の製品カテゴリ ⽤用ソフウェア 全製品 (最短 5 年年間) (最短5年年間) http://support.microsoft.com/gp/lifecycle/ja より表を引⽤用 (⼀一部を修正)
  • 9. 世代交代を含むライフサイクル •  複数のバージョンを並⾏行行して開発する 初期開発 初期バージョン ソフトウェア 進化中 の進化 (ver 1.x) サービス パッチ 稼働中 新しいバージョン への進化 段階的廃⽌止 ソフトウェア 進化中 の進化 (ver 2.x) 運⽤用停⽌止 サービス パッチ 新しいバージョン 稼働中 への進化 段階的廃⽌止 進化中 運⽤用停⽌止 (ver 3.x)
  • 10. 例例: Microsoft Windows •  Vista 以降降は 3 年年ごとに新バージョンをリリース 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 バージョン Windows XP Professional メインストリーム 延⻑⾧長サポート サポート Windows Vista メインストリーム 延⻑⾧長サポート Business サポート Windows 7 メインストリーム 延⻑⾧長サポート Professional サポート Windows 8 メインストリーム 延⻑⾧長サポート Pro サポート http://support.microsoft.com/gp/lifeselectwin のサポート情報をもとに年年表を作成
  • 11. 例例: Ubuntu の⻑⾧長期サポート版 (LTS; Long Term Support) •  2008年年4⽉月から 2 年年ごとにリリース https://wiki.ubuntu.com/LTS より図を引⽤用
  • 12. 例例: 全銀システム •  銀⾏行行間の為替取引 (振り込み等) を処理理する ためのネットワーク http://www.zengin-net.jp/zengin_net/pdf/pamphlet_j.pdf から第2図を引⽤用
  • 13. 例例: 全銀システム •  現在は第6次システム (2011年年〜~) 1970 1980 1990 2000 2010 第1次 (1973.4〜~) 第2次 <5年年> (1979.2〜~) 第3次 <8年年余> (1987.11〜~) 第4次 <8年年> (1995.11〜~) 第5次 <8年年> (2003.11〜~) 第6次 <8年年> (2011.11〜~) 2000万件/⽇日 システムの処理理能⼒力力 (テレ為替) 1500万件/⽇日 1350万件/⽇日 500万件/⽇日 100万件/⽇日 140万件/⽇日 http://www.zengin-net.jp/zengin_net/pdf/pamphlet_j.pdf 第2表から図を作成
  • 14. 前半のまとめ •  ソフトウェアには⼀一⽣生 (ライフサイクル) があります. –  若若いときには成⻑⾧長もするし,病気 (バグ) への 抵抗⼒力力もありますが,やがて成熟期に⼊入ると 健康維持に気をつけながら社会に貢献します. –  寿命はソフトウェアの種類や環境により様々 ですが,多くの⼈人に使われるソフトウェアは 5〜~10年年程度度は⽣生存します. –  寿命が尽きる前に,次の世代 (バージョン) に 役割を引き継ぎます.
  • 16. なぜ変更更が必要なのか? •  変更更は⽬目的によって 4 種類に分類される 変更更の種類* 変更更の意図・⽬目的 完全化 ソフトウェアに新しい機能を追加し,より価 Perfective Change 値を⾼高めるための変更更. 適応 ソフトウェアを新しい運⽤用環境へ適応させる Adaptive Change ための変更更. 是正 ソフトウェアのバグや不不具合を修正するため Corrective Change の変更更. 予防的 ソフトウェアとその価値を予防的に守るため Protective Change の変更更.ユーザにはこの種の変更更による効果 は直接⾒見見えない. * 変更更の種類の⽇日本語訳は JIS X 0161:2008 で定義されたソフトウェア保守の区分と⼀一致させた.
  • 17. 変更更要求の管理理 •  新しい機能を考えついたり,バグを⾒見見つけた としても,いきなり変更更を始め (られ) ない –  ⼀一般には,ソフトウェアの利利⽤用者と開発者は同じ ⼈人ではない –  変更更には時間やお⾦金金がかかるので,重要な変更更を 優先して対応するべき •  対策: 忘れないように書きとめておこう –  要求管理理ツール –  バグ管理理システム (Bug Tracking System; BTS)
  • 18. 例例: EC-CUBE •  電⼦子商取引 (EC) サイトを構築するための パッケージ・ソフトウェア –  国内で開発され,オープンソースで公開中 顧客向け画⾯面 管理理画⾯面 http://demo211.ec-cube.net/
  • 19. 例例: EC-CUBE の開発コミュニティ (掲⽰示板・電⼦子会議室) •  質問・バグ報告・機能要望を誰でも投稿できる http://xoops.ec-cube.net/modules/newbb/index.php
  • 20. 変更更要求の 1 つ分に対する 開発プロセス 変更更の開始 •  実装する変更更要求を決める (Initiation) •  修正の中⼼心となる重要なソースコードの箇所や 実装箇所の特定   更更新すべきモジュールを特定する (Concept Location) •  特定した箇所への変更更の実装⽅方針を検討しなが 変更更影響の分析   ら,修正すべきソースコードの範囲を⾒見見積る (Impact Analysis) •  ソースコードの修正を容易易にするために,事前 変更更前の リファクタリング   にリファクタリングを⾏行行う (Prefactoring) •  ソースコードを修正し,新しい機能を実装した (Verification) 変更更の実現 りバグを除去したりする 検証 (Actualization) •  変更更を実装した後に,ソースコードをきれいに 変更更後の リファクタリング   整える (Postfactoring) •  変更更されたソースコードを版管理理システムにコ 変更更の完了了 ミットしたり,⽂文書の更更新やリリース作業など (Conclusion) を⾏行行う
  • 21. 変更更の開始 (Initiation) •  優先度度や開発スケジュールに従い,対応 する変更更要求を選択する 次回リリースで対応 題名: 受注商品情報が空で注⽂文が完了了できる (2013/1/xx) 投稿者: jiro / 投稿⽇日時: 2012-10-24 15:53 バグ 要望 説明: EC CUBE ver2.11.5ですが、受注商品情報 (dtb_order_detail)が空で注⽂文が完了了できる (場合がある)現象が発⽣生しています。 積み残し課題 ふむふむ… (バックログ) 似たような現象を確認された⽅方はいらっしゃいま バグ 要望 すでしょうか? 開発者 ユーザ
  • 22. 実装箇所の特定 (Concept Location) •  変更更要求に含まれる “概念念” に対応する ソースコードの箇所を特定する 概念念 実装個所  (ファイル名) •  pages/shopping/LC_Page_Shopping.php •  pages/shopping/LC_Page_Shopping_Complete.php お買い物の完了了 商品カタログ •  pages/shopping/LC_Page_Shopping_Confirm.php お買い物の確認 ショッピング •  pages/shopping/LC_Page_Shopping_Deliv.php 会員登録 •  pages/shopping/LC_Page_Shopping_LoadPaymentModule.php •  pages/shopping/LC_Page_Shopping_Multiple.php •  pages/shopping/LC_Page_Shopping_Payment.php •  html/install/temp/install.log •  html/shopping/complete.php •  html/shopping/confirm.php •  html/shopping/deliv.php ...... 開発者
  • 23. 変更更影響の分析 (Impact Analysis) •  特定した箇所の付近を調査し,変更更が必要な 範囲を⾒見見積る SC_CartSession.php 内の checkProducts 関数 LC_Page_Shopping_Confirm.php … function action() { $objCartSess = new SC_CartSession_Ex(); … // 前のページで正しく登録⼿手続きが⾏行行われた記録があるか判定                if (!$objSiteSess->isPrePage()) { SC_Utils_Ex::sfDispSiteError(PAGE_ERROR, $objSiteSess); } … // カート内商品のチェック                $this->tpl_message = $objCartSess->checkProducts($this->cartKey); SC_Utils.php 内の if (!SC_Utils_Ex::isBlank($this->tpl_message)) { IsBlank 関数 SC_Response_Ex::sendRedirect(CART_URLPATH); exit; }
  • 24. 変更更の繰り返しプロセス (アジャイル反復復プロセス) プロダクト・バックログ イテレーション・ バックログ プロダクト ユーザ マネージャ ビルド 並⾏行行開発による ソフトウェア変更更 … デイリー ミーティング プログラマ イテレーションミーティング /リリース プロセス マネージャ
  • 25. 反復復型のライフサイクル (再掲) •  段階的 (staged) モデル [Rajlich 2011] 初期開発 ソフトウェアの進化 初期バージョン •  新しい機能の追加 ソフトウェア開発者の 進化中 •  不不具合の修正 仕事の⼤大部分は「変更更」 進化の終了了 サービスパッチ •  最⼩小限度度の変更更 稼働中 (深刻なバグ,セキュリティ 問題などへの対応) サービス期間の終了了 段階的廃⽌止 停⽌止 運⽤用停⽌止
  • 27. 後半のまとめ •  ソフトウェアの進化は⼩小さな変更更の繰り返し で実現されています. –  ⻑⾧長⽣生きの秘訣: 随所でコミュニケーションを⾏行行い 関係者の価値観やアイデアを素早く取り込む –  デザイン思考: 作りながら考え,考えながら作る •  変更更は単純作業ではありません.プロのソフ トウェア開発者なら… –  クールに: ⼩小さな変更更を確実こなす –  創造的に: 新しいアイデアややり⽅方を試したり, 同僚僚と議論論したりする
  • 28. おわりに •  ソフトウェアがこれからも社会のしくみ を⽀支え続けていくために,みなさんの⼒力力 が必要です! –  ⼤大きな進化を⼀一度度きりの開発,⼀一⼈人の開発者 だけで実現することは困難でも… –  適切切な知識識・スキルを備えた開発者がチーム ワークを発揮して,⼩小さな変更更を着実に積み 重ねていけば達成できるはず. •  プロのソフトウェア開発者としてお会い できる⽇日を楽しみにしています.
  • 29. 参考⽂文献 •  V. Rajlich, “Software Engineering: The Current Practice”, Chapman & Hall/CRC, 2011 •  ⼤大森隆⾏行行, 丸⼭山勝久, 林林晋平, 沢⽥田篤史, “ソフ トウェア進化研究の分類と動向”, コンピュー タソフトウェア, 29(3), 3-28, 2012 •  T. Mens, Y.-G. Guehénéuc, J. Fernández- Ramil, & ,M. D’Hondt, “Guest Editors’ Introduction: Software Evolution”, IEEE Software, 27(4), 22–25, 2010
  • 30. Credits •  Waterfall-Gruggies-burn by baaker2009, on Flickr –  http://flic.kr/p/7M2rkU