ソフト開発の手戻りを小さくするには プロジェクト管理の仕組み (その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. モジュール開発と結合テストの作業の流れ
 
 組み込みソフトの場合は、結合テストを実施するにはハードウェアが必要となることが普通ですから、このように単純には計画を立てることができないこともありますが、まずはこのような考え方で最適なスケジュールを作成することが大切です。そして、ハードがないとテストができないという制約も工夫によって乗り越えることも大切です。既存のハードに手を加えるとか、既存のハードでも動かせるようにテストドライバーやテストスタブを作成するとか、何らかの方法によって結合テストを実施し動いている状態で動作確認することは、余分な手間をかけるように思えても結果的に十分に報われることが多いものです。ムダなことと簡単に結論を出すのではなくぜひトライしてください。
 
 次回は、ソフト開発スケジュールの内容確認と進捗管理を解説します。
 
 

   続きを読むには・・・


この記事の著者

石橋 良造

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

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


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

もっと見る
類似-4 普通の組織をイノベーティブにする処方箋 (その103)

   現在、KETICモデルの中の「知識・経験を関係性で整理する」を解説しています。今回は、引き続き「類似」について考えてみたいと思います...

   現在、KETICモデルの中の「知識・経験を関係性で整理する」を解説しています。今回は、引き続き「類似」について考えてみたいと思います...


続 Painのインパクト 普通の組織をイノベーティブにする処方箋 (その89)

   今回も引き続き、エドワード・デシが内発的動機付けに必要と主張している2つの要素、「自律性」と「有能感」の内、後者の実現手段として「有...

   今回も引き続き、エドワード・デシが内発的動機付けに必要と主張している2つの要素、「自律性」と「有能感」の内、後者の実現手段として「有...


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

  前回までの4回で、視覚を活用して創造性を高めイノベーションを起こす能力を強化する方法について、考えてきました。今回からは、聴覚ついて考...

  前回までの4回で、視覚を活用して創造性を高めイノベーションを起こす能力を強化する方法について、考えてきました。今回からは、聴覚ついて考...


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

もっと見る
設計部門の課題と原因分析(その1)

【設計部門の課題と原因分析 連載目次】 1. 設計部門の現状を正確に特定する 2. 課題分析と課題の根本原因除去 3. 設計部門用に用意したコン...

【設計部門の課題と原因分析 連載目次】 1. 設計部門の現状を正確に特定する 2. 課題分析と課題の根本原因除去 3. 設計部門用に用意したコン...


コーポレート研究の課題とは

1. コーポレート研究への期待  近年、ものづくり企業においてコーポレート研究に対する期待が高まっています。そのなかで、新たにコーポレート研究組織を...

1. コーポレート研究への期待  近年、ものづくり企業においてコーポレート研究に対する期待が高まっています。そのなかで、新たにコーポレート研究組織を...


進捗管理の精度を上げる:第3回 プロジェクト管理の仕組み (その15)

 回路図や実装図からは、端子数以外にも標準部品、後付部品、自動実装機部品などをカウントすることも可能です。図45 は、これらについて見積もり(計画)を作成...

 回路図や実装図からは、端子数以外にも標準部品、後付部品、自動実装機部品などをカウントすることも可能です。図45 は、これらについて見積もり(計画)を作成...