ソフト開発の手戻りを小さくするには プロジェクト管理の仕組み (その8)

更新日

投稿日

 
 この数回はプロジェクト管理をテーマにお話ししていますが、前回からはソフトウェア開発のスケジュール作成方法について解説しました。組み込みソフト開発は、スケジュールの内容、そして、その妥当性判断がソフト屋さん以外にはわかりづらく、そのため十分な進捗管理ができないことが多いものです。そこで、ソフト開発経験がないプロジェクトリーダーやハード屋さんでもスケジュールが理解でき、進捗管理ができるようになるスケジュール作成方法を解説します。少しこれまでの解説から、おさらいをしておきましょう。
 
 まず、製品仕様とソフトウェア内部構造の関連づけを行う方法を解説しました。これにより、ある機能を作るのにソフトウェアのどの部分に手を入れる必要があるのかがわかり、また、あるモジュールを変更することが、製品のどの機能に影響を及ぼす可能性があるのかがわかるようになります。つまり、ソフト屋さんでなくても、開発する製品機能とソフトの内部構造とを関連づけて話をすることができるわけです。
 
 次に、ソフト屋さんは開発する機能ごとに、基本設計、詳細設計、コーディング、単体テスト、結合テストという、流れ作業でソフトを作成するようなスケジュールを作りがちですが、実際のソフト開発はこのような流れ作業では進まないことをお話ししました。さらに、ソフトを実際に動かして動作確認をしながら、段階的に完成度を確認することが重要であることをお伝えしました。今回は、実際にソフト開発全体をどのようにスケジュールすればよいのかを解説します。
 

1. ソフトの開発スケジュールの具体化

 
 ソフトの開発スケジュールを具体化するときに最初に決めておくべきことは、結合テストの進め方です。前回お話ししたように、ソフト全体のどの部分(範囲)を、どういう順序で結合テストを実施するのかを決めます。ここでは、図36 を検討結果としましょう。機能セットA~Fの6回に分けて段階的にソフトの完成度を確認する計画になっています。
    
 一方、個々のモジュールは、図34で示したように、それぞれ関連する製品機能が決まっていますから、その製品機能を実現するために相当する機能(モジュール機能)をプログラムとして作成することになります。通常、あるひとつのモジュールは複数のモジュール機能を作り込みますから、できるだけ、段階的にこのモジュール機能を作成する計画にします。
 
 複数のモジュール機能を同時に作り込まざるを得ないことも、複数のモジュール機能を作るために事前に共通のモジュール機能を作っておかなければならないこともあります。したがって、単純に順番にモジュール機能を作ることができず、多少の工夫が必要になることもありますが、いずれにしろ、モジュール機能を段階的に作ってその都度単体テストにより動作確認を行うように計画します。図37 は各々のモジュールが、そのモジュールが実現すべきモジュール機能を段階的に作成することを示しています。たとえば、モジュールAは機能 A-1, A-2, A-3, A-4 と段階的に機能を作り込んでいくわけです。
 
R&D
   図37. モジュールの機能開発と結合テストの関係
 
 そして、結合テストを行う機能セット(ここでは、結合テストセットとよびましょう)とは、関係するモジュールについて、その機能セットの製品機能に相当するモジュール機能をモジュールができた段階で結合したものになります。たとえば、結合テストセット(機能セット)Bは、モジュールBの機能 B-2 、モジュールCの機能 C-1、モジュールDの機能 D-1 を作成した時点で、モジュールB,C,Dを結合して動作確認をすることになります。他の結合テストセットについても同様です。したがって、個々のモジュールは、なるべく結合テストの段取り(結合テストセットとその実施順序)に合わせて段階的に作成することになります。この例では図38 に示すような作業の流れになります。
 
 R&D
   図38. モジュール開発と結合テストの作業の流れ
 
 組み込みソフトの場合は、結合...
 
 この数回はプロジェクト管理をテーマにお話ししていますが、前回からはソフトウェア開発のスケジュール作成方法について解説しました。組み込みソフト開発は、スケジュールの内容、そして、その妥当性判断がソフト屋さん以外にはわかりづらく、そのため十分な進捗管理ができないことが多いものです。そこで、ソフト開発経験がないプロジェクトリーダーやハード屋さんでもスケジュールが理解でき、進捗管理ができるようになるスケジュール作成方法を解説します。少しこれまでの解説から、おさらいをしておきましょう。
 
 まず、製品仕様とソフトウェア内部構造の関連づけを行う方法を解説しました。これにより、ある機能を作るのにソフトウェアのどの部分に手を入れる必要があるのかがわかり、また、あるモジュールを変更することが、製品のどの機能に影響を及ぼす可能性があるのかがわかるようになります。つまり、ソフト屋さんでなくても、開発する製品機能とソフトの内部構造とを関連づけて話をすることができるわけです。
 
 次に、ソフト屋さんは開発する機能ごとに、基本設計、詳細設計、コーディング、単体テスト、結合テストという、流れ作業でソフトを作成するようなスケジュールを作りがちですが、実際のソフト開発はこのような流れ作業では進まないことをお話ししました。さらに、ソフトを実際に動かして動作確認をしながら、段階的に完成度を確認することが重要であることをお伝えしました。今回は、実際にソフト開発全体をどのようにスケジュールすればよいのかを解説します。
 

1. ソフトの開発スケジュールの具体化

 
 ソフトの開発スケジュールを具体化するときに最初に決めておくべきことは、結合テストの進め方です。前回お話ししたように、ソフト全体のどの部分(範囲)を、どういう順序で結合テストを実施するのかを決めます。ここでは、図36 を検討結果としましょう。機能セットA~Fの6回に分けて段階的にソフトの完成度を確認する計画になっています。
    
 一方、個々のモジュールは、図34で示したように、それぞれ関連する製品機能が決まっていますから、その製品機能を実現するために相当する機能(モジュール機能)をプログラムとして作成することになります。通常、あるひとつのモジュールは複数のモジュール機能を作り込みますから、できるだけ、段階的にこのモジュール機能を作成する計画にします。
 
 複数のモジュール機能を同時に作り込まざるを得ないことも、複数のモジュール機能を作るために事前に共通のモジュール機能を作っておかなければならないこともあります。したがって、単純に順番にモジュール機能を作ることができず、多少の工夫が必要になることもありますが、いずれにしろ、モジュール機能を段階的に作ってその都度単体テストにより動作確認を行うように計画します。図37 は各々のモジュールが、そのモジュールが実現すべきモジュール機能を段階的に作成することを示しています。たとえば、モジュールAは機能 A-1, A-2, A-3, A-4 と段階的に機能を作り込んでいくわけです。
 
R&D
   図37. モジュールの機能開発と結合テストの関係
 
 そして、結合テストを行う機能セット(ここでは、結合テストセットとよびましょう)とは、関係するモジュールについて、その機能セットの製品機能に相当するモジュール機能をモジュールができた段階で結合したものになります。たとえば、結合テストセット(機能セット)Bは、モジュールBの機能 B-2 、モジュールCの機能 C-1、モジュールDの機能 D-1 を作成した時点で、モジュールB,C,Dを結合して動作確認をすることになります。他の結合テストセットについても同様です。したがって、個々のモジュールは、なるべく結合テストの段取り(結合テストセットとその実施順序)に合わせて段階的に作成することになります。この例では図38 に示すような作業の流れになります。
 
 R&D
   図38. モジュール開発と結合テストの作業の流れ
 
 組み込みソフトの場合は、結合テストを実施するにはハードウェアが必要となることが普通ですから、このように単純には計画を立てることができないこともありますが、まずはこのような考え方で最適なスケジュールを作成することが大切です。そして、ハードがないとテストができないという制約も工夫によって乗り越えることも大切です。既存のハードに手を加えるとか、既存のハードでも動かせるようにテストドライバーやテストスタブを作成するとか、何らかの方法によって結合テストを実施し動いている状態で動作確認することは、余分な手間をかけるように思えても結果的に十分に報われることが多いものです。ムダなことと簡単に結論を出すのではなくぜひトライしてください。
 
 次回は、ソフト開発スケジュールの内容確認と進捗管理を解説します。
 
 

   続きを読むには・・・


この記事の著者

石橋 良造

組織のしくみと個人の意識を同時に改革・改善することで、パフォーマンス・エクセレンスを追求し、実現する開発組織に変えます!

組織のしくみと個人の意識を同時に改革・改善することで、パフォーマンス・エクセレンスを追求し、実現する開発組織に変えます!


「技術マネジメント総合」の他のキーワード解説記事

もっと見る
プラスチック材料の特性を考慮した強度設計(その2)

 プラスチック材料の特性を考慮した強度設計について、2回に分けて解説しています。前回のその1に続いて今回は、その2です。   1.プラスチック材料の強...

 プラスチック材料の特性を考慮した強度設計について、2回に分けて解説しています。前回のその1に続いて今回は、その2です。   1.プラスチック材料の強...


視覚 普通の組織をイノベーティブにする処方箋 (その156)

  今回も前回に引き続き、視覚を活用して創造性を高め、イノベーションを起こす能力を強化する方法について考えてみたいと思います。 &nbs...

  今回も前回に引き続き、視覚を活用して創造性を高め、イノベーションを起こす能力を強化する方法について考えてみたいと思います。 &nbs...


外発的動機付けから内発的動機付けを誘引するには 普通の組織をイノベーティブにする処方箋 (その80)

 前回はエドワード・デシの四段階理論で、外発的動機付けから内発的動機付けを誘引する4つの段階を解説しました。今回も引き続き、本トピックについて解説しま...

 前回はエドワード・デシの四段階理論で、外発的動機付けから内発的動機付けを誘引する4つの段階を解説しました。今回も引き続き、本トピックについて解説しま...


「技術マネジメント総合」の活用事例

もっと見る
先行技術テーマを企画段階で評価するには

1.先行技術開発    イノベーション、すなわち価値創造がものづくり企業におけるR&Dのミッションとして期待される中で、それを実現す...

1.先行技術開発    イノベーション、すなわち価値創造がものづくり企業におけるR&Dのミッションとして期待される中で、それを実現す...


トレーサビリティの保証 プロジェクト管理の仕組み (その44)

 前回のその43に続いて解説します。    ハードウェア設計も、ソフトウェア設計ほど明確ではありませんが、同じように開発工程ごとに関連する設...

 前回のその43に続いて解説します。    ハードウェア設計も、ソフトウェア設計ほど明確ではありませんが、同じように開発工程ごとに関連する設...


仕組みの見直しに成功する組織1 プロジェクト管理の仕組み (その25)

 この連載では、仕組みの見直しをテーマに様々な考え方や事例を紹介しているわけですが、実際にコンサルタントして仕組みの見直しに取り組んだ組織の中には成功して...

 この連載では、仕組みの見直しをテーマに様々な考え方や事例を紹介しているわけですが、実際にコンサルタントして仕組みの見直しに取り組んだ組織の中には成功して...