ソフトウェアプロダクトラインとXPは何が違うのか?
細谷さん、トラックバックありがとう。
ソフトウェアプロダクトラインとXPの違いについて考えたことを記述しておく。
【それぞれの定義】
1.ソフトウェアプロダクトライン
2.XP
【1】ソフトウェアプロダクトライン
品質を保持するには、インフラに近いレイヤーはできるだけ変えず、アプリケーションやUIに近い部分は変更可能とするように設計する。
これはビジネスの要求に対し、コアとなる部分は再利用可能な資産とし、それぞれの顧客に対してカスタマイズする戦略を取る。
当然、変化しやすい部分と変化しにくい部分をアーキテクチャだけでなくビジネスドメインの観点からも切り分ける。
対象とするシステムの境界は、ソフトウェアやDBだけでなく、ネットワークインフラやハードウェアまで含む。
だからこそ、再利用できるものとそうでないもの区別が大切なのだろう。
また、ビジネス関係者だけでなく、ハード開発者、ソフト開発者などと利害関係者が多すぎる。
ゆえに、意思決定を持つグループと権限はないが影響力を持つ開発グループでワークショップを定期的に開いて意見交換するプロセスも内部に持つ。
この開発スタイルがマッチする例は、組み込み系のように、似たような仕様の製品を少数生産する時だろう。
【2】XP
過剰な設計、過剰な仕様書、過剰な機能実装は不要だ。再利用することを考えるよりもYANGIを重視する。
まずはシンプルに作り、早期リリースと頻繁なリリースでシステムを成長させていく。
リーンソフトウェア開発の1個流しという概念が似ている。
テスト駆動、リファクタリングなどのプログラミング技術で品質をカバーする。プログラマの観点からすると、この技術が面白い。
だが、プログラミングは重視するが、インフラやハードまで意識していない時が多い。
当然、変化しないものはなく、変化は受け入れるものであり、変化を受け入れる環境や技術を重視する。この観点から、プログラマが働きやすい環境とは何か、という方向に行き、40時間労働とか、最近ならプロジェクトファシリテーションなどのような人間系に向かっているのだろう。
また、オンサイト顧客のように開発チームへ顧客も引きずり込む。
このやり方だと、顧客は敵というよりも同じチームの仲間という雰囲気になる。利害関係者の数はそれほど多くない。
この開発スタイルがマッチする例は、BlogやSNSのように、永遠にベータバージョンであるようなWebシステム開発が向いているのだろう。
【感想】
このように、品質を保持するプロセス、操作対象とするシステムの境界が全く異なる。
それだけでなく、おそらく根本的には、変化に対する態度、再利用性に対する態度が大きく異なるように思う。
ソフトウェアプロダクトラインの考え方は、時間が経つほどシステムは複雑化し、変更に対するコストが大きくなる発想。
逆に、XPは、うまくコントロールすれば、時間が経っても、変更に対するコストはある上限で落ち着く発想。ウォーターフォールのような計画駆動は、恐竜みたいなものであり、XPを含むアジャイル開発は小さい哺乳類のように素早く変化に対応できるという信念を持っているように見える。
XPは技術的にも発想も面白いし、人間系も最近はすごく活発だ。
でも、ソフトウェア工学の昔からの難問であるソフトウェアの再利用性について、確固たる解答を提示していない。
ソフトウェアプロダクトラインは、少なくとも一つの解答を提示している。
少なくとも、どちらが絶対的に良いと言うよりも、向いているシステム開発の例が極端なだけかもしれない。
| 固定リンク
「日記・コラム・つぶやき」カテゴリの記事
- デブサミ2021の感想~コミュニケーションスタイルがオフラインからオンラインに激変している(2021.02.25)
- 考えながら書く人のためのScrivener入門の感想(2020.12.06)
- 課題は問題点をひっくり返す表現だけで良い場合もある(2020.09.28)
- ツールを使いこなせる事の重要性が増している(2020.05.28)
- ココログHTTPS化のメモ(2019.12.26)
コメント