PR

ビッグ・アイディア

図3●基礎を成す原則
図3●基礎を成す原則

 カーネルを、ソフトウェアエンジニアリングの単なる概念モデル以上とするものは何か?何が新しいのか?それは、基礎を成す原則(図3)であり、原則が次の3つの特徴をカーネルにもたらしている:アクション可能なこと(actionable)、拡張可能なこと(extensible)、および、実践的なこと(practical)である。

カーネルはアクション可能である。

 カーネルの優れた特徴として、「我々が常に仕事で扱うこと」を管理しているという点がある。これらは「ワークプロダクト(work product)」(例えば文書)としてではなく、「アルファ(alpha; 主要素)」という名前で呼ばれている。アルファとはソフトウェアエンジニアリングの取り組みにあたり本質的な要素であり、ソフトウェアエンジニアリングの進展や健全性の評価に関わっている。図1に示すように SEMATでは7つのアルファを識別している: 機会(opportunity)、ステークホルダ(stakeholders)、要求(requirements)、ソフトウェアシステム(software system)、仕事(work)、仕事の仕方(way of work)、チーム(team)。

 アルファはシンプルに進展や健全性を表す状態集合として特徴付けられる。例えばソフトウェアシステムは選択されたアーキテクチャにおける次の状態間を遷移する: 論証完了(demonstrable)、使用可能(usable)、準備完了(ready)、運用(operational)、退役(retired)。各状態には当該状態に至る際に満足すべき基準を指定したチェックリストがある。それらの状態によってカーネルはアクション可能なものとなり、ソフトウェア開発チームの振る舞いをガイドできるようになる。

 カーネルは、ソフトウェア開発を線形のプロセスではなく協調する要素群のネットワークとして表す。この要素群をバランスをとって維持することで、チームが効果的かつ効率的に開発を進めて、無駄を省き、すばらしいソフトウェアを開発することができる。カーネルのアルファは、実際に適用するプラクティスや従う指針からは独立しており、ソフトウェア開発の取り組みを駆動し進めるフレームワーク全体を与える。

 カーネルに加えられるプラクティスが増えてくれば、カーネルの既存アルファの進展を推進または抑制を表現するために、新たなアルファが加えられるだろう。例えば「要求」アルファは、全体で1つのものとして扱われるのではなく、「要求項目」毎に1つずつ進展しうる。個々の要求項目の進展が、要求アルファの進展や健全性を推進または抑制する。要求項目の種類としては、フィーチャ(feature)やユーザストーリー(user story)、ユースケース(usecase)など様々が考えられるが、いずれもアルファとして表され、状態を持ち追跡することができる。それらの細かなアルファをより粗いカーネル要素へと関連付けることで、全体として取り組みの健全性を追跡することが可能となる。これにより、個々の項目群の下位レベルの追跡に対してバランスが与えられ、チームが仕事の仕方を理解し最適化することが可能となる。