2010年1月31日日曜日

講演: 「組込みソフトウェア技術動向セミナー」@岐阜県大垣市

来る2月19日(金)にセミナーで講演します.

場所は岐阜県大垣市です.講演タイトルは「戦略的再利用『プロダクトライン』〜その本質とは何か」です.

http://it-mono.jp/news/20100219.html

先日の名古屋での講演からさらにパワーアップする予定です.よろしく!

2010年1月30日土曜日

共通性と可変性,スコーピング

プロダクトラインはソフトウェア工学の集大成と位置づけられています.既存の技術をある観点で統合しています.そのため,プロダクトラインに特有の技術は実のところあまり多くありません.

今回説明する共通性(commonality)と可変性(variability)は,プロダクトラインを統合する観点であり,共通性・可変性分析と呼ばれる技術は,数少ないプロダクトライン特有の技術です.

前回のチュートリアルで,プロダクトラインの目的は大量個別生産であり,それを実現するために共通部分をプラットフォームにするという話をしました.したがって何が共通で何が変化しうるかを見極めることが,プロダクトラインの成功のために重要な鍵の一つとなるのは,自然のことでしょう.

たとえば Apple の iPod シリーズを考えてみましょう.iPod には iPod classic, iPod shuffle, iPod nano, iPod touch といった製品群があります.さらに iPhone や iPad も仲間に入るでしょう.

よくカタログ等で,次の表のように機能と製品の対応関係を表すことが一般的だと思います.


この表を製品マップ(product map)といいます.この製品マップでは,横に製品,縦に機能が並んでいます(縦横逆に書いてもかまいません).

プロダクトラインの世界では,機能という言葉ではなく,フィーチャー(feature)という言葉を用います.フィーチャーは「ソフトウェアシステム(群)の顕著または特有のユーザに見える観点,品質,または特性」で,おおむね機能だけでなく品質要求も含んだ概念だと思ってください.iPod の品質要求の例としては,音楽再生時間などが挙げられます.

このように製品とフィーチャーの観点から見たとき,あるフィーチャーが (1) 全ての製品に備わっている,もしくは同一の値を持っている場合(たとえばオーディオ)と,(2) 1つまたは一部の製品に備わっている,もしくは製品によって値が異なる場合(たとえばディスプレイ)があることがわかります.前者の場合そのフィーチャーは全製品で共通であり,後者の場合は可変であるといいます.フィーチャーが共通であるか可変であるかを識別することを共通性・可変性分析といいます.

共通性と可変性を表現する方法は製品マップだけではありません.最もメジャーなのはフィーチャーモデルでしょう.他にもさまざまなモデルが存在します.総称としては可変性モデルです.

プロダクトラインを作る際に,どのような製品を提供し,それぞれの製品でどのような機能を提供するかを決めることは非常に重要です.このようにプロダクトラインがカバーする範囲を決めることをスコーピング(scoping)といいます.スコーピングにはいくつか種類があり,ここで取り上げたのは製品ポートフォリオスコーピング(product portfolio scoping)といいます.

よくプロダクトラインは戦略的再利用だといわれることが多いのですが,スコーピングはまさにこの戦略の中核にあたります.スコーピングの成否がプロダクトラインの命運を分ける要因の一つになります.この重要性ゆえに,僕はこのあたりの研究に取り組むことにしたわけです.

だんだん本題に近くなってきました.また次回,お楽しみに.

つづく

参考文献
"Feature-Oriented Domain Analysis (FODA) Feasibility Study," 
Kyo C. Kang, Sholom G. Cohen, James A. Hess, William E. Novak, A. Spencer Peterson
Technical Report CMU/SEI-90-TR-21 ESD-90-TR-222, November 1990 

http://selab.postech.ac.kr/
150ページ以上にわたる超大作の論文です.第1著者の Kang 先生はプロダクトラインの世界の重鎮の1人ですが,その地位を確立したのがこの論文です.


iPod, iPhone, iPad およびその派生製品は Apple の登録商標です.

2010年1月21日木曜日

経営戦略とアーキテクチャパターンの類似性を伊丹敬之著「経営戦略の論理」に見た

経営戦略の論理は,元一橋大,現在東京理科大の伊丹敬之(いたみひろゆき)先生が書いた経営戦略の教科書です.姉妹本のケースブック 経営戦略の論理と合わせて読むと理解が深まります.

タイトルでほとんどいいたいことは言い尽くした感がありますが,この本の第一印象は「これって経営戦略のパターンだね」ということです.ソフトウェア技術者なら誰もが知っているデザインパターンと似ているなと感じました.どう似ているかというと,経営戦略には定石があり,それがいくえにも重なり合って階層的な構造をなすという点です.これが僕にはパターンを使ったソフトウェアのイメージとダブるのです.
もっとも,同じパターンでも位置づけ的にはアーキテクチャパターンに近いと思います.経営戦略全体が階層的なフレームワークになっており,それぞれの構成要素にバリエーションとレベルがあるというイメージを持つといいと思います.
最初の書籍レビューはこんなところにしておきましょうか.ゆくゆくは単なる本の紹介では終わらせずに,輪講のように自分自身の見解を交えて詳しく切り込んでいきたいところです.ゆっくりやりますので,あせらずお待ちいただければと思います.コメントや Twitter でリクエストを出していただければ,できる限り対応したいと思います.

2010年1月19日火曜日

プロダクトラインとは(1)

このブログはじめての記事として,ブログの説明や最初のあいさつにも書いている「プロダクトライン」とは何かを説明しましょう.

ソフトウェアの生産性を向上させたいと経営者も開発現場も思っているでしょう.それに対し,ソフトウェア開発の実態は1つ1つ手作りに近いという現状があります.なんとかしてソフトウェア開発を現代の発達した工業のように効率化できないだろうか,工業化の歴史から学ぶことはないだろうか.それがプロダクトラインという考え方が生まれたきっかけです.

Henry Ford 登場以前の工業は1つ1つ手作りでした.手作りだと顧客1人1人に合わせて仕立てることが可能ですが,生産性が低いため,単価を高くしないと元が取れません.ついでにいうと属人性が高いという問題もあります.つまり,品質や工数が生産者の技術レベルに強く依存する,勘と経験の世界で,技術の継承が難しいという状態です.これは現在のソフトウェア開発では1品ものの受託開発に相当します.

20世紀初頭に Henry Ford が登場し,大量生産(mass production)を発明しました.これは同一仕様の製品を大量に生産することで,細かい個別の顧客ニーズを無視するかわりに高い生産性を実現するというものです.大量に生産するほど固定費を広く薄く回収することができるので,単価を安く設定できるのが大きな武器でした.また,属人性を低くできるというメリットもあります.つまり,作業を高度に標準化できるので,1人1人の技術者は1つの作業に専門化でき,生産者の入れ替えが容易になります.これはパッケージソフトウェアに近い状態だと考える事ができます.

しかし,生活レベルの向上とともに消費者の基本的欲求が満たされるようになり,ニーズや価値観の多様化が起こりました.それにより魅力的な特徴(フィーチャー: feature)がないと売れない事態になります.こうなると大量生産では対応できません.

そこで次に登場したのが大量個別生産(mass customization)です.これは個々の顧客に適合させた物品を大規模に生産することです.つまり,個別の顧客ニーズに応える一方で,生産性は高くといういいとこ取りを狙うものです.ついでに属人性が低いとうれしいところです.

以上をまとめると次の図のようになります.


ところがここにジレンマがあります.大規模に生産するからにはエンドユーザーがたくさん存在します.一方でエンドユーザーそれぞれには個別の要求があります.かといって,たくさんのエンドユーザーの要求に1つ1つ個別対応していると生産性が悪くなります.したがって大量個別生産の実現のためにはブレークスルーが必要です.

着眼点は共通性です.エンドユーザーの要求には共通性があります.そこで,共通部分をプラットフォーム(platform)として再利用できるようにし,異なる部分をプラットフォームに結合する部品として実現すれば,個別対応能力と生産性を両立できます.これをソフトウェアで実現するのがプロダクトラインです.

ソフトウェアの世界でプロダクトライン(product line)と言った場合,厳密に言うと Software Product Line (ソフトウェア製品系列) または Software Product Line Engineering (ソフトウェア製品系列開発)の2つの意味合いがあり,よく混同されます.

Klaus Pohl, Günter Böckle, Frank van der Linden による Software Product Line Engineering (ソフトウェア製品系列開発)の定義は次の通りです.前述の説明から容易に理解できる定義ですね.
  • 大量個別生産を実現するために
  • プラットフォームを用いて
  • ソフトウェアアプリケーションを
    • ソフトウェア集約システム(≒組込みシステム)
    • ソフトウェア製品
  • 開発するパラダイム
これに対し,Paul Clements と Linda Northrop による Software Product Line (ソフトウェア製品系列)の定義は次の通りです.
  • ソフトウェア製品系列とは次のようなソフトウェア集約システム群である
    • 特定のマーケットセグメントやミッションのニーズを満たす,共通の管理されたフィーチャー群を共有する
    • あらかじめ決められた方法でコア資産から開発する
これはちょっと難しい定義ですね.この定義については,また後日説明したいと思いますが,マーケットセグメントというキーワードが実は僕の研究テーマにつながっていくとだけ予告しておきましょう.

参考文献


Pohl Clements & Linda Northrop Software Product Lines: Practices and Patterns

2010年1月17日日曜日

ソフトウェア工学研究所ブログ開設

ソフトウェア工学研究室へようこそ.プロダクトラインを中心に,プログラミング言語や,経営学・経済学との境界領域,教育にも話を展開します.僕は北九州市立大学で実際にこの名称の研究室を構えている,しがない研究者です.


ブログの名称については少し悩みました.最近僕が取り組んでいる研究は,経営学・経済学とソフトウェア工学の接点が中心なので,MOT (management of technology)を中心にした野心的なタイトルにしようかとも考えました.


そうかと思うと,最近授業でプログラミング言語処理系を教えているのですが,おかげで昔を思い出して,ふつふつとプログラミング言語を作りたいという気持ちが芽生えてきたり.実際,現在 DSL (domain-specific language) についても研究していますし.学生時代,機械語とかでプログラミングをしていたので,バリバリのシステムプログラミングとかも実は好きです.最近,Mac OS X プログラミングや iPhone のプログラミングを体験して,血が騒いだりもしました.そういうわけで,MOT に絞り込むには興味範囲が広いなと自覚していました.


さらには最近,大学での教育活動が面白くなってきたという気持ちもあります.前職は研究員だったので,自分が教育する姿をあまりイメージできず,研究と教育が両立できるのか不安もありました.しかし実際に学生さんたちを前にして講義や演習をしてみると,学生さんたちがとてもかわいい! また,教育の方法論に関する良書に出会ったので(そのうち紹介します) ,試しに前述のプログラミング言語処理系の授業で適用してみたりしています.教育と研究を両立するアイデアも思いつきましたし!


そういうわけで僕は興味を絞り込むことができませんでした.昔からそうなんです.ただ,いろいろなところに興味を持っていますが,ソフトウェア工学を中心にゆるくつながっていると認識したので,大学の研究室,さらにはこのブログの名前もソフトウェア工学研究所と命名することにしました.本業を犠牲にしない程度に,ゆっくりブログをやろうと思います.


今後ともよろしく!