ソフトウェアファクトリーズとソフトウェア・セル生産方式 注: 1970年代に始動した筆者らの大規模ソフトウェア工場では、ソフト ウェア・セルのことを、「MOL」と呼んでいた。このスライドに書かれている ことは、すでに実施されてきた事実に基づいている。John Wiley & Sons社発行のソフトウェアエンジアリング辞典(第1版)- Japanese Software Factoryや、Endres, A.らのA Handbook of Software and Systems Handbook (Addison-Wesley)を参照されたい。 松本 吉弘 京都高度技術研究所顧問(元京都大学教授) http//:www5d.biglobe.ne.jp/~y-h-m/yhmintro1.htm ©Matsumoto, Yoshihiro; July 2005 ソフトウェアエンジアリングにおけるパラダイムシフト • • • 「ソフトウェアエンジニアリング」という学問体系の基本的なパラダイムは、 1968年にGarmischで開催された第1回Software Engineering Conferenceでおおよそが樹立された。しかし、21世紀に入って、そのパ ラダイムが次第に変化を始めている。 筆者は、IEEE/ACM Computing Curricula 2001 – Software Engineering Steering Committee (CCSE)に、日本の情報処理学会 を代表して、委員として参加したが、その報告書 (http://sites.computer.org/ccse/SE2004Volume.pdf) が、その傾向を示し ている。このなかには、情報処理学会策定のカリキュラムも含まれている (http://www.ipsj.or.jp/12kyoiku/acre/Acc-SE/index.html)。 ソフトウェアエンジニアリングに対する批判のなかでよく見られる「役に立 たない有難くない一般性のおしつけ」が、この委員会の協議のなかで話 題となり、つぎのスライドから逐次示す、4つの新しいパラダイムが協議 の的になった。委員会報告(上記)に見られるSEモデルカリキュラムは、 新しいパラダイムを志向したものである。 ©Matsumoto, Yoshihiro; July 2005 ソフトウェアエンジアリングにおけるパラダイムシフト 従来のパラダイム 新しいパラダイム ・「役に立たず、有難くもない一般性 (gratuitous generality)」の追求 ・一石型ソフトウェア(とくにオブジェク ト指向のディシプリン)志向 ・one-off development(ひとつの 開発が終ったらそれっきり) ・中間仕様重視 ・なんらかの高さの抽象レベルまで は一般性を追求 ・独立した部品による組立て志向 (development by assembly) ・製品/プロセス系列指向開発 ・不要な中間プロセスの排除、一気 にコーディングへ ©Matsumoto, Yoshihiro; July 2005 このスライドが対象とする読者 • • ソフトウェアエンジアリングにおけるパラダイムシフトを理解し、現場で試 してみたいと考える人 下記の三者に関連があることが理解できる人 – アジャイルプロセス (激変するシステムダイナミクスに対応して、アジャイル (軽快)に順応するソフトウェアプロセス) – ソフトウェアファクトリ環境 (モデルからコード生成までを、シームレスに支援 する統合開発環境) – セル生産方式 (製品種類に応じて、屋台を素早く組み換え、屋台では人の 能力を最大限利用して、なんらかのすべての組立工程を、ひとり(またはひと りが責任をもつチーム)で消化する生産方式) セル生産方式 アジャイルプロセス ソフトウェアファクトリ環境 ©Matsumoto, Yoshihiro; July 2005 プロローグ • • • • • 毎年、ソフトウェアの国外委託率が増加しているが、国外比率を高めるこ とによって、コストダウンを図ろうとする企業戦略が必ずしも有利とはいえ ない、という主張や事例も増えてきている。 1970-80年代は、ソフトウェアの工業化およびプログラムの自動生成率を 高めることによって、生産性、および品質の向上を図ってきた。そこにソフ トウェア企業管理者の生きがいがあった。しかし、ソフトウェア工場による ソフトウェア生産の工業化というミッションは、いまや、マイクロソフト社の 「Software Factories」にお株を奪われている。 ツールや統合開発環境が進歩した現在、ひとりの個人スキルでカバーで きるソフトウェアライフサイクルスコープは、相当広がってきている。ソフト ウェア企業管理者は、早くこれに気づかねばならない。 コーディングのような面倒な仕事で苦労したくない、という最近の風潮は 正しいとはいえない。ビジネスモデリングからコーディングまで一貫してカ バーできるスキルをもった技術者には、高い社会的地位および報酬を与 えて広いスコープを担当させることによって、ビジネスコンサルタントと対 等またはそれ以上の社会的地位をもつソフトウェア企業が生まれる。 セル生産から出発したハードウェア組立ての場合と同様に、いずれ生産 の国内回帰は、ソフトウェアにおいても早晩起きるであろう。 ©Matsumoto, Yoshihiro; July 2005 「セル」という語の意味 • セル=細胞: 動的秩序を自己形成する、生命体を構成する最小単位で ある。細胞は、内部から湧出する自由エネルギーを利用し、エントロピを 外部へ排出し、他の細胞との動的協力性をもち、一定のリズムをもつ、 複雑系でいう準周期アトラクタである。 プロジェクトは、メンバの活動が、生命体原理に従って、自己形成され ることが望ましい。 • セル=家電機器等組立てセル: 原則として、ひとりで、人中心の原理で 製品(全体または一部)の組立てを行うための作業単位。セルが必要と する部品、工具、組立て手順、作業環境は、セルを支援する生産管理組 織が、需要に合わせて設定する。 • セル=個室、または作台(屋台): プロジェクトを構成するセルが作業を 行う、個室、または作業台(1970年代に、われわれは「ワークベンチ」と 呼んだ)。 ©Matsumoto, Yoshihiro; July 2005 ビジネスシステムは生態系(エコシステム)であり、 ソフトウェアプロジェクトは、生体系(バイオシステ ム)であると考えよう • • • • ITおよびソフトウェアの適用対象となるビジネスシステム、およびサービス システム(e-Governmentを含む)は、生態系(エコシステム)のひとつで あると考えなければならない (Highsmith Ⅲ, J.A., Adaptive Software Development, Dorset House Publishing (2000))。 ソフトウェアは、これらエコシステムとしてのビジネスシステム、サービスシ ステムを構成するための重要なコンポーネントである。 したがって、ソフトウェア開発プロジェクトは、対象とするビジネス/サービ ス・エコシステムのなかの一部として、これらとライフサイクルを共にする 必要がある。 このためには、ソフトウェアプロジェクト自身を、 (生態系−エコシステムで はなく) 「生体系 (bio-system)」として、活動させることが望ましい。 ©Matsumoto, Yoshihiro; July 2005 ビジネス・エコシステムとソフトウェアプロジェクト・バイオシステム エコシステム (生態系) バイオシステム (生体系) ソフトウェア ビジネスシステム ソフトウェアプロジェクト ©Matsumoto, Yoshihiro; July 2005 ソフトウェアプロジェクトにおけるセルとは プロジェクトは、セルの並行集合 セルは、従来の「ワーク概念」とプロダクトを、オブ ジェクトにおけるデータとメソドのようにカプセル化し て、互いにイベントによって交信するようにしたもの セルとセルとは、前提条件および帰結条件だけで連携する。 ひとり(または1チー ム)のプロセス、アク ティビティ、タスク、ま たはアクション 前提条件 前提条件が真であ ることによって活動 を開始し、成功して 完結したときに帰 結条件を真にする。 ©Matsumoto, Yoshihiro; July 2005 論理式 統合ソフトウェアエンジ アリング支援環境が、 EVM (Earned Value Management) に基 づいてセルの活動を 監視、コントロールす る。 論理式 システム(ビジネ ス)ニーズからの 自由エネルギー (価値要求)の供 給 セル: 並行ビヘイビア素子 エントロピー (生成価値)の 吸収 帰結条件 セル成果物およびセル 性能が、価値および制 約要求を満たしている。 セル生産方式のためのキーテクノロジー • モデルを、セルへマッピングするためのフレームワーク – モデルという「意味表現」を、セルが扱うプロダクトへマッピングする。 • デザインパターンを基礎とする「ホットスポット駆動開発」がベースになる。 • Hollywood Principleに準拠(Catalysisなど)したフレームワーク • セルにおける前提条件および帰結条件のなかで、「インタフェース」およ び「コントラクト」を表現するための形式 – 他のセルが扱うプロダクトとの接続は、インタフェースを経由して行うことにな る。コントラクトは、接続に関するプロトコルを定義する。 • セルのなかでの、プロダクトとプロセスを統合する方法 – セルのなかでは、数多くの部品プロダクトおよびその間のコントラクトが存在 する。これら部品をどのような順に、どのような方法で組み合わせるかを、セ ルプロセスは定義しなければならない。 • セル、プロダクト、プロセスに対する識別コード形式の制定 – 物品につけるICタグのコード形式の国際標準化が行われているが、セル、プ ロダクトおよびプロセスを識別するコードの国際標準が問題になる時代が、 やってくる。 これらキーテクノロジーは、公開して、支持団体を大きく広げていきたい。 ©Matsumoto, Yoshihiro; July 2005 プロジェクト立ち上げにおけるセル計画 Hollywood Principleに 基づいて、必要なアプリ ケーションセルをよぶ。 目標とする システム(ビ ジネス)価 値および制 約 セル・フレームワーク セルを計画するためのセル セルの静的構成 繰返し最適化 ソフトウェアの運 用・保守・改善ラ イフサイクルの なかで得るNPV (Net Present プロダクトライン セルファミリ Value)の計算 から求める。 過去のプロジェクト成果の蓄積 ©Matsumoto, Yoshihiro: August 2005 月日 セルの動的構成 セルの識別および、価値およ び制約の割りつけ セル計画には、セル・フレームワークを用いる • フレームワークは、Fayad, M.E., Schnidt, D.C., and Johnson, R.E., Buidling Application Frameworks, Wiley 1999)で定義されている。 1.ミッションカテゴリ分析 ミッション・クリティカリティレベル定義 2.プロダクトフィーチャ・価値分析 フィーチャ・価値ダイアグラム 3.品質特性、納期、コスト、人資源、 環境など制約分析 制約テーブル 4.プロダクトライン、プロセスライン、 既成セル・フレームワークからのマッピ ング セル・フレームワーク ©Matsumoto, Yoshihiro; July 2005 なぜ「セル」をソフトウェアプロジェクトマネジメントの単位にするのか • • • • • ウォータフォール、スパイラルから特定アジャイルに至る、さまざまな人 工的に仕組まれたライフサイクルモデルは、必ずしも(2者間契約をベー スとしない)日本的風土に合うとは思えない。 1970年代の日本的プロジェクトでは、プロジェクトメンバ自身が、個であ り、全(プロジェクト全体)である、という意識で動いていた。プロジェクトに 対して外部から変化や危機が襲ったときには、全員でこれに対応してい た。これは、生体系(バイオシステム)からのアナロジとして理解できる。 プロジェクトのなかで、セルが定義されたならば、個々のセルは、生体細 胞と同じように、環境の変化、および自己の生態変化に対して自律的に 対応し、それによってプロジェクト全体が自己形成されるべきである。 自己形成系としてのプロジェクトにおいてもっとも重要な要諦は、セルが 共有する情報の形式と授受体系をどのように構築するか、である。 ここで、われわれに求められているのは、生体的自己形成系としてのプ ロジェクトを形成し、そのなかで個人を能力一般に活動させ、そのしきた りを定式化し、広く実践することである。 ©Matsumoto, Yoshihiro; July 2005 生体系の動的秩序を可能にする熱力学的開放系とプロジェクト環境の関係 • • 2つの熱源が必要であり、かつ、系は非線形であることが必要。 – 自由エネルギーを供給する熱源Ⅰ → 太陽(顧客、利害関係者) – エントロピーを吸収する熱源Ⅱ → 宇宙(プロダクト実装空間) 不安定へ向かう素子と、安定へ向かう素子が、互いに協同して進行し(複 雑系のメカニズム)、生命というマクロな準安定状態を作り出す。 温度および エントロピー を吸収 太陽による エネルギー 供給と宇宙 による温度 とエントロ ピー吸収に よって、アミ ノ酸が合成 され、生命 が誕生した。 実装空間 熱源Ⅱ フォールト 生 体 宇宙 プロジェ クト 系 価値要求 自由エネル ギーを供給 ビジネスシス テム 熱源Ⅰ 太陽 ©Matsumoto, Yoshihiro; July 2005 複雑系としてのプロジェクトの動的安定 放熱 放熱 放熱 放熱 価値の実装 価値の実装 INCOSE セルの安定化 テクニカル・マネジメント 加熱 利害関係者による価値要求 レイリー・ベナールの対流 ©Matsumoto, Yoshihiro; July 2005 プロジェクトにおける動的安定 テクニカル・エバリュエーション セルの不安定化 複雑系 の動的 安定では、 安定化と 不安定 化が互 いに協同 して起き る。 セルの安定化 バッファー域 分子の安定化 分子の不安定化 分子の安定化 熱対流における動的安定 バッファー域 INCOSEにおける熱力学的開放系としてのシステムエンジアリング・プロセス モデル(INCOSE-TP-2003-016-02) コントロールプロセス 供給プロセス 調達プロセス システム設計 成果およびフィードバック 計画、指示および実行状態 自由エネルギー︵ 要請価値︶ を供給 調達および供給 要求定義プロセス ソリューション定義プロセス 温度とエントロピー︵ 達成価値︶ を吸収 熱源Ⅰ 計画プロセス テクニカルマネジメント アセスメントプロセス プロダクト提供 実現プロセス 熱源Ⅱ 利用への移行プロセス テクニカル・エバリュエーション システム分析 プロセス 要求の妥当性確認 プロセス システム検証プロセス International Council on Systems Engineering 最終プロダクトの妥 当性確認プロセス CPMとAPMの主な相違点 Cell-based Project Management Agile Project Management (Highsmith, J.) 管理対象となる単位 セルファミリ(資財)をもとにして定 Feature breakdown structure 義するセル(人/プロセス/プロ によって分割されたプロセス ダクトの合成) フェーズの定義 なし Envision, Speculate, Explore, Adapt, Close 管理目標の指示 セル仕様 Vision, Scope, Community, Approachおよび各プロセスに対 するFeature Card, Performance Card 活動 複雑系準周期安定系のなかでの セルの自律的反復 Release, Milestone, and Iterative Planによって計画され た反復およびAdapt マネジメント テクニカルマネジメントおよびテク ニカルエバリュエーション (INCOSE) Explore phase (Deliver on Objectives, Technical Practices, Project Community) ©Matsumoto, Yoshihiro; July 2005 ソフトウェア生産におけるセルの型 ・ セルとは: ひとり(または、ひとりが責任をもつチーム)に対して与えられ た仕事 (workload)を遂行するために、「ヒューマン・インテリジェンス、プ ロダクトライン、プロセスガイドライン」を統合するために設定された、プロ ジェクト構成単位 → 電子機器組立て工場における、組立てセルから の類推である。 ・ ソフトウェアプロジェクトは、下記2種類のセルの連接または並行接続から 構成される。 ・ 工業的セル: コードがすべて自動生成できる「完全工業的セル」、とテン プレート記述言語(またはDSL: domain specific language)を用いるこ とによって、要求変更に対応してアジャイルに変更可能なコードを自動生 成できる「アジャイル工業的セル」に分かれる。 ・ 非工業的セル: 求解手順が分からず、人の知的推論によってヒューリス ティックに解を求めながらコード生成するセル。 ©Matsumoto, Yoshihiro; July 2005 セルの工業化可能性を判断する基準 (1) セル プロダクト 完全工業 的セル simple プロセス ヒューマン・インテリジェンス rigorous regular アジャイル complicated 工業的セル flexible adaptive 非工業的 セル problem solving heuristic complex ©Matsumoto, Yoshihiro; July 2005 セルの工業化可能性を判断する基準 (2) • 「レガシー」と「ホットスポット」 :レガシー :ホットスポット 1970年代には、ホットスポットを表形式言語、まだは第4世代言語で記述し、 コードを自動生成する「アプリケーションジェネレータ」の実用化が進んだ。 オブジェクト指向においては、Pree (Pree, W., Design Patterns for Object-Oriented Software Development, Addison-Wesley (1995))の提 唱による「hot-spot driven approach」が知られている。 完全工業的セルでは: ドメインに対して特定されたアーキテクチャ、またはモデル に対応するレガシコードのなかのホットスポットを「マークアップ」し、個々のホットス ポットに対応するコードをデータベースから自動選択し、コンパイル時自動リンクする。 アジャイル工業的セルでは: ドメインに対して半特定されたアーキテクチャ、また はモデルをマニュアルで特定化し、ホットスポット部分をマニュアルでコード化して、最 終的な全体コードに仕上げる。 ©Matsumoto, Yoshihiro; July 2005 非工業的セルのモデル 予想していた入力 作業学習によるパ ターンの改善およ び創生 予想もしなかった新規 要求または変更 作業経験のフィードバック パターン パターン: Anderson, C. が定義した三つ組 (context, problem, solution) パターンを利用 した成果物の 生成 ©Matsumoto, Yoshihiro; July 2005 成果物 プロダクト プロダクト プロダクト プロダクトライン: プロダクト系列 プロダクト プロセスライン: プロセス系列 プロダクト セルでは、プロダクトとプロセスを統合する 系列: ファミリ プロセス プロセスライン プロセス セル プロセス プロセス プロセスライン プロセス アメリカは、日本のソフトウェア 工場から、プロダクト系列だけ は学んで行った。 プロダクトライン1 ( プロダクトライン2 ©Matsumoto, Yoshihiro; July 2005 セルでのプロダクトとプロセスの統合例 マカロニ料理・ プロダクトライン プロセスモデル マカロニ グラタン part-of 具 スープ マカロニグラタン料理セル プロダクトモデル マカ ロニ グラタン・プロセス ライン 材料調達 並行 fork マカロニ の調理 具の 調理 join オーブンで焼く ©Matsumoto, Yoshihiro; July 2005 スープの 調理 セルは、モデルをベースにして設定する • • • セルは、独立したテクノロジとスキルを必要としたシステム(ビジネス)モ デル、プロダクト・モデルの単位をベースにして、プロダクトとプロセスの 統合にもっとも適した単位として形成する。 ひとつのセルのなかでは、与えられたモデルに関して、原則として、分析、 設計実装、テスト、運用までの責務を負う。セルは、ひとり、またはひとり がすべての責任を負うチームが担当する。 セルのなかでは、プロセスとプロダクトを、ツールの支援によって統合す る。ツールからは、手順に従って、作成すべきプロダクトパターンおよびプ ロセスパターン(ガイダンス)が提供される。 セルは、運用後の動的リソース管理、キャパシティ監視・報告、改善に必要な データ収集もスコープに入れている。 ©Matsumoto, Yoshihiro; July 2005 たとえば、大型小売店舗向けITシステムを開発するための「セル」の例 ビジネスプロセス・セル ユーザプロセスおよびユーザインタフェース・セル 第一層 共通的非機能要求によるオブジェクト統合アスペクト・セル POSマネジメント・セル、顧客サービス・ セル、顧客関係マネジメント(CRM)・セ ル、ネット販売・セル 調達・セル、仕入れ管理・セル、倉庫 管理・セル、商品供給者マネジメント・ セル 第二層 入金会計処 理・セル 商品および売り 場管理・セル 商品開発・セ ル 支払金会計 処理・セル 共通的非機能要求によるオブジェクト統合・セル 第三層 人材マネジメント・ セル 財務マネジメント・ セル 事業計画およびガバナ ンス・セル 共通的非機能要求によるオブジェクト統合・セル ©Matsumoto, Yoshihiro; July 2005 非工業的セル アジャイル工業的セル 共通的非機能要求によるオブジェクト統合アスペクト・セル セルで利用するツールの基礎となるメタパターンとは • • プロダクトに関するメタパターン – 継承階層 (layered) – 複合 – レガシー(テンプレート)/ホットスポット(フック) プロセス(セル間動的連携およびセル内プロセス連携)に関するメタパター ン – 階層 (stratum and hyper) – 反復 – 同期 – レガシー(テンプレート)/ホットスポット(フック) ツールは、アプリケーションドメインが識別されたとき、プロダクト・メタパ ターンおよびプロセス・メタパターンに従う特定のプロダクトパターンおよび プロセスパターンを生成し、セル担当者を支援する。 ©Matsumoto, Yoshihiro; July 2005 セルのなかで用いる主なテクノロジ • • たとえば、マイクロソフト・Visual Studio 2005 Team System、Indigo などの支援によって、ひとつのセルのなかで、ひとりの技術者が、分析・ 設計・実装・テスト・運用・保守までを一貫して担当できるようになったこと が、ソフトウェア・セル生産の実用化に対してきわめて大きな可能性を与 えている。 レガシーとホットスポットをマネージし、リンクするために: – Low-level DSL (domain specific language) • テンプレート記述言語の開発、およびそれを用いて、プロダクトライン・共 通フィーチャおよびソフトウェアアーキテクチャを実現するためのテンプ レート・コードを記述すること。 • 可変フィーチャを実現するコード記述・蓄積、およびそれのXMLデータ ベースによる管理。 • テンプレート記述からX-pathなどを用いて選択した可変フィーチャコード を、共通フィーチャおよびソフトウェアアーキテクチャにリンクして、ター ゲットコードを自動生成するコンパイラの開発。 – High-level DSL • Hot-spot Driven Approach (Pree, W., Design Patterns for Object-oriented Software Development, page 224, AddisonWesley (1995) ©Matsumoto, Yoshihiro; July 2005 セルは専門技術者を育てる • • • • • セルは、そこで必要となるヒューマン・インテリジェンス/スキル、テクノロ ジ、および「セル仕様」を分類し、類型化することによって、「セル・ライン」 すなわちセルのファミリを形成することができる。 ある特定のセル・ラインを、特定の技術者に担当させることによって、技 術者の専門性を育て、結果としてプロジェクトの生産性および品質を高 めることができ、顧客の満足を高めることができる。 アーキテクトが、他のセル専門技術者の上位にあるとするマネジメントで は、アーキテクト以外の専門技術者が育たない。すべてのセルのテクニ カルコンピテンス・レベルは、平等であるとする。 セル担当者は、原則として、アーキテクトであると同時に、プログラマ、実 装技術者でもある。 セルのトップエンジニアには、それにふさわしい報酬を与え、社会的地位 を与える。 ©Matsumoto, Yoshihiro; July 2005 エピローグ: 自国の先輩が築き上げた遺産をもっと活用しよう。 Model for Japan’s Software Factories (1970年代にやっていたこと) Management Deployment of the target software product Software Production Cell Mission and constrain ts Product lines (product families) Tools and environments Process guidelines (process families) ©Matsumoto, Yoshihiro; July 2005 1970-80年代の松本のソフトウェア生産セルは、Encyclopedia of Software Engineering, 1st Edition, pp.593-605, John Wiley & Sons (1994)に掲載されている。 Control これを、並行実行要素と して、CSPまたは LOTOSを用いて仕様化 する。 Post-condition Precondition Input documents Human intelligence, Processes, Activities, Tasks and/or Actions Product-lines, Process guidelines, Resources and Constraints Output documents 当時は、セルのことを、MOL (manufacturing order list)と 呼んでいた。Orderは、生産指 令と意味する。 ©Matsumoto, Yoshihiro; July 2005 セルに対する当時の仕様例 • • • • • • • • • • • • ミッション 入力文書属性 出力成果物に関する要求属性 当該セルに対するパターンを、context, problem, solutionの順に記述する。 このセルで利用する既成プロダクト(データおよび関数・手続きなど) 他のセルとの間のインタフェース(コントラクト)定義 要求された品質特性 要求された時間制約、実装制約、性能制約の定義 利用すべき標準、ガイド、マニュアル、部材、レガシー マネジメントからの要求(生産性、再利用性など) 担当責任者名 組織責任者名 筆者のソフトウェア工場では、セル仕様書をセルごとに作成し、業務指示書としてセル 担当者に手渡していた。標準的なプロセスガイドラインが、組織的に作成され、業務公 式ガイダンスとして利用されていた。 セル仕様書は、人知をできるだけ活用することを建前とし、細かい作業ステップまで指 示するものではなかった。現在は公知となっているC. Alexanderのパターンに相当す る内容を、C.A.R. HoareのCSP、またはLOTOSのコンテイナで包んで記述した。 ©Matsumoto, Yoshihiro; July 2005
© Copyright 2024 ExpyDoc