Entries

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
この記事にトラックバックする(FC2ブログユーザー)
http://exphenomenologist.blog100.fc2.com/tb.php/692-c1b49b66

トラックバック

コメント

コメントの投稿

コメントの投稿
管理者にだけ表示を許可する

Ivar Jacobson, et al. "The Essence of Software Engineering"

The Essence of Software Engineering: Applying the SEMAT KernelThe Essence of Software Engineering: Applying the SEMAT Kernel
(2013/01/11)
Ivar Jacobson、Pan-Wei Ng 他

商品詳細を見る

(以下、loc.はkindle版のlocation numberへの参照)

ソフトウェア工学の有名人たちが作った団体SEMATの最初の本。SEMATは現状のソフトウェア開発を、開発手法は様々に乱立しているし、開発の現場と研究者の疎通も悪いと評価。この状況を改善すべく、様々なソフトウェア開発論に共通する本質(essence)を求めている。そしてこの本質をカーネル(核)としてソフトウェア開発を考えることを提唱している。SEMATが提唱するのはあくまで核となるものであって、個々のプロジェクトの状況や方法論に合わせて拡張・改変すべきだ。本書はそのような拡張・改変の指針も述べている。つまりSEMATカーネルは新しいソフトウェア開発手法ではなくて、どんな開発手法にも共通するものだ。

カーネルは「どんなソフトウェア開発の成功にとっても本質的である概念を捉えた」(loc.606, 719)ものであり、「ソフトウェア開発の試みについて考える際に参照となるフレーム」(loc.602)を提供している。どんな開発手法であれ、つまりウォーターフォールであれアジャイルであれ、やることになる活動が列挙されている。またカーネルの特徴は成果物に着目するのではなく、いくつかの観点からプロジェクトがどういう状態にあるのかを評価するという、状態への着目だろう(loc.2610)。このいくつかの観点のことはアルファと呼ばれている。アルファはプロジェクトの進行状況と健康状況を見るものだ(loc.620)。アルファは以下の7つが用意されている。なお、仕事Workと仕事のやり方Way of Workingはちょっと名前が重なるので、どちらかを変えた方がよいのではないかと思う。WorkはActivity, Action, Taskあたりか。
・機会:ソフトウェアシステムを開発したり、変更したりすることになる状況。
・ステークホルダー:ソフトウェアシステムに影響を与えたり、影響を受けたりする人、集団、組織。
・要求:機会に対応しステークホルダを満足させるために、ソフトウェアシステムが実行しなければならないこと。
・ソフトウェアシステム:ソフトウェア、ハードウェア、およびソフトウェアで使われることによって初めて価値を生み出すようなデータからなるシステム。
・チーム:特定のソフトウェアシステムの開発、維持管理、導入、サポートに主体的に関わっている人たちの集まり。
・仕事:結果を得るために行われる心的、物理的努力に関する活動。
・仕事のやり方:チームによって使われ、チームの仕事を導いたりサポートする、チーム用にカスタマイズされたプラクティスやツール。(loc.631)

そしてこれら7つのアルファに対して、それぞれ現在どのような状態にあるのかを表す6つの状態が定義されている(loc.765)。例えばソフトウェアシステムというアルファについては、デモできる(demonstrable)、使用できる(usable)、本番準備できている(ready)、運用されている(operational)、運用終了(retired)という5つの状態が定義されている。そして、いったいどのような時にどの状態になったと言えるのかを判断するチェックリストが、それぞれの状態に対して用意されている(loc.766)。また、アルファの状態を書いた名刺サイズのカードが用意されていて(loc.895)、これを使ってみんなで議論したりできる。裏側が磁石になっていたりすればホワイトボードなどに貼ったりできそうだ。

この7つのアルファは、例えば進捗報告でそれぞれがどのような状態にあってどんなリスクがあるか、などの報告のフォーマットに使えそうだ。また、フェーズのマイルストーンとして、あるアルファがある状態になることをフェーズの終了条件に設定することもできる。本書で例として出てくるプロジェクトでは、開発の決定と本番稼働判定の二つの決断点を設けて、そのポイントでアルファがどの状態でなければならないかと述べられている(loc.1484ff)。

アルファとその状態はあらゆるソフトウェア開発手法の共通言語や基準となる。例えばウォーターフォールでは原則として、開発が始まる前に要件が確定していなければならない。これは開発に入る前に、要求が状態3(整合的であるcoherent)でソフトウェアが状態1(アーキテクチャが選択されているArchitecure selected)であるということだ。つまり開発の前、中、後(Pre-development, Development, Post-development)のそれぞれにどのアルファのどの状態が入るかによって、各開発手法が分類できる(loc.2214)。

カーネルは3つの性質、行動可能actionable、拡張可能extensible、実践的practicalであることをポイントとしている。つまり各アルファは段階ごとの状態が定義されているので、ある状態にあるアルファは次にどういう状態になればいいかが定義されている(行動可能)。またカーネルから拡張するやり方が示されている(拡張可能)。そして、様々なプラクティスを取り込み、一貫して運用できるようになっており実践的である(loc.1000-1065, 1892, 2565)。カーネルの拡張のやり方については、三つの場合が書かれている(loc.2026)。(1)チームメンバーに必要な能力がない場合。この場合はPracticeで知識技能を補強するZooming Inを行う。(2)異なるソフトウェアの構築があってそれぞれリスク、条件が異なる場合。この場合は様々なPracticeを組み合わせて適切な方法を提供するReaching Outを行う。(3)チームが大きくなり、タスクの分配や調整が難しくなる場合。この場合はチームの組織化、進行の可視化、チーム間の協調をもたらすScaling Upを行う。
To conclude, we will summarize what is really new in the SEMAT approach.
• Innovations with methods
• Practical tools to empower software teams and professional (loc.2631)
スポンサーサイト
この記事にトラックバックする(FC2ブログユーザー)
http://exphenomenologist.blog100.fc2.com/tb.php/692-c1b49b66

トラックバック

コメント

コメントの投稿

コメントの投稿
管理者にだけ表示を許可する

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。