品質確保に効果のあった派生開発プロセスの工夫(その2)
掲題の派生開発プロセスに関する、シリーズ・エントリです。
派生開発の設計品質確保について問題意識を持たれている方は、ご一読頂けると幸いです。
レポートの要約、および背景については第一回を参照ください。
- 論述対象となるプロジェクト、および開発プロセスの特徴
- ・組込み系の社会インフラを担うミッションクリティカル・システム。
- ・信頼性・成熟性について高い品質が求められている。
- ・稼働直前の総合テストからプロジェクトを引き継ぎ。
- ・母体システムのドキュメントが不足、母体品質も悪い。
- ・論述対象の開発プロセスは、主にシステムの欠陥修正(改修)案件に焦点を当てている。
エントリ内容の目次
内容はかなり長くなるため、順を追って述べる。
まずはこのレポートの主旨について述べた後、一般的な派生開発の現状を俯瞰する。その後、派生開発プロセスの1つであるXDDPと、当方の開発プロセスの工夫についての概要を述べる。
時間のない場合は、ここまでの内容(1部 レポート・サマリー)だけでも、本論述の概要はつかめると考える。その次の2部から、詳細なレポート内容を述べていこうと考えている。
もちろん2部から読み始めても構わない。そちらのほうが、概要説明ではなく詳細な論述を行っているため、理解しやすい可能性がある。1部はサマリーのみであり、詳細情報は把握できないだろう。
(1)このレポートの概要と背景について
⇒連載記事その11部 レポート・サマリー------------
(2)派生開発を巡る現状
⇒本記事が該当(3)XDDPでの問題提起と解決策の概要
(4)当方が遭遇した派生開発の問題と解決策の概要
2部 レポートの詳細--------------
(5)レポート内容
(2)派生開発を巡る状況(part1)
前述のように、派生開発とは、母体システムへの機能追加・変更、欠陥是正の対応を行う開発・保守プロジェクトのことである。ただしそれだけを言われても、派生開発には新規開発と比べて、どのような特徴があるのかを想定しにくい。
そこで今回は、派生開発の特徴を外観したいと考えている。新規開発にはないプロジェクトの特徴や、技術的な特徴などを参考文献から考察してみたい。
1.派生開発の特徴とは何か?
まず派生開発を理解したいのであれば、派生開発プロセスの1つであるXDDPを提唱する清水氏の著書を紐解くことが定番であろう。
清水氏の書籍(「派生開発」を成功させるプロセス改善の技術と極意)には、様々な派生開発が失敗する理由が述べられている。
派生開発が失敗することをリスクと考えた場合、これらリスクのリスク要因(リスクが存在する原因)を探っていくならば、次の要因にたどり着くのではないか。そしてこのリスク要因こそが、派生開発の主な特徴(制約と呼んでもよい)だと考える。
・派生開発の特徴
- 別の担当者が開発したソースコードは理解しにくい
- ドキュメントが不足していることが多くソースコードの理解が難しい
- これまでの改修によって、当初の設計思想が崩れている
- 案件ごとの変更量は新規開発に比べて少ないため、開発期間が短い
- 変更量が少ないと1人プロジェクトになることがある
- 派生開発に適したプロセスが検討されていない(存在しない)
上記1~3は、母体システムの理解が難しい原因につながっている。
また4の開発期間の短さは、母体システムの理解を不十分にさせる外的要因と考えることができる。
5はレビュー等による第三者目線でのチェックが入らないことで、品質確保がおろそかになる可能性を示唆している。
そして6は、これらの派生開発の特徴を認識しないままに、新規開発用の開発プロセスに沿って作業を行ったことで、品質確保が十分にできなくなることを意味している(これらの特徴については、2部のレポート詳細で触れるため、ここでは概要程度にとどめておく)。
これらの特徴は、派生開発の技術面の特徴であるように思われる。こうした技術面の特徴が、プロジェクトの特徴としてどのように表出しているのかについて、次に見ていこう。
2.派生開発はどのくらいあるのか?
現在はほとんどの開発現場での作業は派生開発である[1]、といわれている。実際に派生開発は、システム開発プロジェクトのうちのどのくらいの割合を占めるのだろうか。
[1] 清水吉男,「派生開発」を成功させるプロセス改善の技術と極意,P6
派生開発の割合を示す1つのデータとして、独立行政法人情報処理推進機構(IPA)がまとめた、2012年度「ソフトウェア産業の実態把握に関する調査」調査報告書(2013/04/26版)を参照してみると、システム開発プロジェクトの約4割が派生開発であるという実態が読み取れる。これは、組込み系でもエンタプライズ系でもほぼ同様の割合になっている。
図1 エンタプライズ系:プロジェクト特性(組込み系のデータは割愛)
(出典:ソフトウェア産業の実態把握に関する調査」調査報告書,P119 Q2-3 2011会計年度のソフトウェア開発プロジェクトの内訳)
ただし、図1における「新規開発プロジェクト」には、開発するシステム自体は新規物ではあるが、システムの一部分には既存ソースコードやコンポーネントなどの流用が発生しており、全面的な新規開発ではないプロジェクトも含まれていると考えられる。これは、以下に示す図2のデータから推察できる。
図2 エンタプライズ系:開発ソフトウェアの再利用・導入について
(出典:ソフトウェア産業の実態把握に関する調査」調査報告書,P123 Q2-5 開発ソフトウェアの再利用比率や導入比率)
図2では新規開発部分は33.1%と、図1の新規開発プロジェクトの割合である39.5%よりも低くなっている。
また、既存開発部分の改変なしの流用ケースが19.6%存在している。既存開発部分を改変なしで流用するため、派生開発というとらえ方をしていない場合もあるかもしれないが、他のコンポーネントやソースコードという、母体となるコードをポーティングしていることには変わりがない。
これらポーティングした流用部分にアクセスするインタフェース周りの設計においては、場合によっては流用したソースコードの理解が必要になるケースもあろう。よって部分的ではあるが、こうした流用部分については、派生開発との認識をすることが妥当なケースもあると考える。
以上の考察から、新規開発プロジェクトのうちシステム全体を新規開発しているケースは、
39.5% × 33.1% ≒ 13%程度
であると考えることもできる。
そうすると、8割強のプロジェクトは、システム全体かシステムの一部かを問わなければ何らかの流用部分があり、派生開発に相当する要素が存在していると考えることもできる。
また、既存の開発モジュールやソースコード、及びシステムをポーティングしたり統合したりすることで、開発コストや開発期間を短縮して競争力のある情報システムを提供する事は、日本のベンダ企業の今後の課題でもある。
今後も開発部品や情報システムの再利用率を高め、スクラッチ開発を極力避ける方向への流れは避けられないため、ますます派生開発の割合や重要性は増していくだろう。
3.派生開発の開発期間は短いのか?
派生開発の特徴の1つとして、母体システムが存在することで、新規開発と比較すると開発規模が小さいため、開発期間も短く設定される傾向にあるという点が挙げられる。
この結果として、母体システムを十分に理解する時間が不足してしまい、欠陥の混入につながりやすい[2]、ということが指摘されている。
[2] 清水吉男,「派生開発」を成功させるプロセス改善の技術と極意,1.2.2節~1.2.3節(p42~47)
この点を確認するために、IPAの前述の調査報告書にて、1会計期間内での新規開発/派生開発のプロジェクト件数のデータを参照する。
図3に、2011年度での新規開発プロジェクト件数を、図4に2011年度での派生開発プロジェクト件数を示す。
図3 エンタプライズ系:2011年度の新規ソフトウェア開発プロジェクト数
図4 エンタプライズ系:2011年度の派生開発プロジェクト数
(出典:ソフトウェア産業の実態把握に関する調査」調査報告書,P119-120 Q2-3-1 2011会計年度の新規ソフトウェア開発プロジェクト数、Q2-3-2 2011会計年度の差分/派生/改修/保守ソフトウェア開発プロジェクト数)
図3~4を見ると、新規開発と派生開発共に「30件以上」が最も多かったが、派生開発のほうが「30件以上」と回答した割合が14ポイント以上多くなっている。
よって平均的には、派生開発のほうがプロジェクトの回転率が高い状況が伺える。回転率が高いということは、1つ1つのプロジェクト期間が短いことを示している(この傾向は組込み系でも同様である)。
また、IPAのソフトウェア開発データ白書2012-2013を参照すると、新規開発よりも派生開発のプロジェクト工数のほうが小さい傾向が読み取れる。
図5では「改修・保守」と記載されているプロジェクトが派生開発に該当する。
図5 開発プロジェクトごとの工数
(出典:IPA,ソフトウェア開発データ白書2012-2013 P102)
図5によると、新規開発の平均工数は約230人月(1人月=160人時として計算)であるのに対し、派生開発の平均工数は約124人月である。
工数が小さければそれだけ工期も短いことが想定される(なおソフトウェア開発データ白書における対象プロジェクトは、エンタプライズ系のシステム開発プロジェクトのみで、組込み系は含まれていない)。
プロジェクト工期についてのデータもあったので、図6に併せて示す。
こちらも派生開発の工期が平均で1.9ヵ月短いことが読み取れる。
図6 開発プロジェクトごとの工期
(出典:IPA,ソフトウェア開発データ白書2012-2013 P92)
長くなったので、今回はここまでとする。
派生開発はプロジェクト案件の多くを占めていること、また開発期間が短いこと、という特徴について概観することができた。
次回は、派生開発と新規開発での、品質・生産性についての比較を行い、派生開発の傾向を掴んでみたい。
もし、派生開発において想定されるような問題点があるとすれば、新規開発と比較して品質が悪い状況が見えるはずである。このあたりを次回は探っていこう。