「開発プロセス」ともいう(こちらのほうが聞き覚えがあるかもしれない).
これを把握しておくことは,設計を行う上で非常に重要だ.
「何のために」「何を作るのか」 を定義することが一番重要で,これが曖昧だと開発が進んだあとにここに戻ることになる(二度手間).
インターネットで「開発工程」と検索すると,驚くほど多様な事例が出てくる.
「要求」と「要件」を同一視するかしないかですら異なっていた.
日本語というのはあまりにも混同しやすいとわかったので,ここでは西洋の考えを取り入れることとする.
“System Development Life Cycle (SDLC)” という考え方がある.
和訳すると, 「システム開発ライフサイクル」 である.
「システム」が「ソフトウェア」に置き換えられたものもあるが,概要はほぼ同じである.
ここでは,この記事を引用しつつ,「ソフトウェア」を「システム」に読み換え,学生チームの開発によく一致するように改変する形で,各開発工程の重点をまとめる.
また,学生レベルの開発は間違いなく一筋縄ではいかない.
1 ➔ 2 ➔ 3 と順当に行くと思わず,
1 ➔ 2 ➔ 1 ➔ … ➔ 3 のようにときには前段階へ戻るなど,段階を反復しながら開発を進めるべきである(アジャイル開発という).
プロジェクト全体の計画を立てる.
目標や,必要な機能などの要求,必要な人員と予算について,曖昧にせず確定する.
また,十分なマージン(余白)をとりつつ,なるべく詳細なスケジュールを決定する.
| 主な活動 | 成果物 |
|---|---|
| 目標,要求,人員と予算,スケジュールなどの確定 | 目標などを含む全体の計画書 |
プロジェクト計画フェーズでは、ソフトウェア開発プロジェクトの目標と範囲を確立します。
全体として、計画フェーズの目的は、プロジェクトの目標を明確にすると同時に、プロジェクトに不要なものを特定することで、規模が不必要に膨らむのを防ぐことです。
計画フェーズでは、多くの場合、初期のソフトウェア要件仕様書(SRS)が作成されます。SRSには、ソフトウェアの機能、必要なリソース、想定されるリスク、プロジェクトのタイムラインが詳細に記載されます。
確定した計画を実現するために,必要なことを分析し,満たすべき条件(要件,仕様)を確定する.
インターネットやOB・OG,他チームの資料や有識者,必要があればAIも用いるなどして,なるべく多くの情報を収集するように心がける.
| 主な活動 | 成果物 |
|---|---|
| 計画実現のための情報収集 | 仕様書 |
分析フェーズでは、開発チームがプロジェクトの要件に関する情報を収集・分析します。分析により、チームは計画フェーズで開始した作業を進め、概要レベルのアイデアから実践的な実装計画へと移行できます。
仕様書をもとに,計画を実現するためのシステム全体の構造を決定する.
設計の詳細や意図があとから読んでも読み取れるように,わかりやすく設計書をまとめる.
この時点で,改めてスケジュールを見直し,設計の実現可能性を評価するべきである.
| 主な活動 | 成果物 |
|---|---|
| システム全体の構造の決定 | 設計書 |
設計フェーズでは、プロジェクトのアーキテクチャーを定義します。主な手順には、ソフトウェアのナビゲーション、ユーザー・インターフェース、データベース設計などの概要策定が含まれます。
設計書に従い,システムを開発する.
[!NOTE] 宇宙機などの開発ではシステムの確実性が問われるため,段階を踏みながら進める.
宇宙機の開発段階で製作される一般的なモデルの種類を教えてください | JAXA 有人宇宙技術部門
鳥科もこのモデルを採用している.製作するのは,「BBM(ブレッドボード・モデル)」, 「EM(エンジニアリング・モデル」,「PM(プロトタイプモデル)」, 「FM(フライト・モデル)」である.
| 主な活動 | 成果物 |
|---|---|
| コードの記述や回路の構成 | 試作品 |
コーディングフェーズ、または開発フェーズでは、チームがSDD、SRS、およびこれまでのフェーズで作成されたその他のガイドラインに基づき、コードの記述とソフトウェアの構築を開始します。
完成した試作品を試験する.
正しく動作しない場合や,仕様を満たさない場合には, 4. Development(開発) に戻る.
通常,6. Deployment(配備)に至るまでに, 「4. Development(開発)」と「5. Testing(試験)」を数回反復する.
| 主な活動 | 成果物 |
|---|---|
| バグや問題の排除 | 洗練された完成品 |
テストフェーズは、開発チームが機能するソフトウェアを作成した後に開始されます。このフェーズでは、チームはバグを排除し、最終製品を改善する機会を探ります。
本番の環境に完成したシステム(FM:フライト・モデル)を配備する.
配備されるシステムには,基本的に不備があってはならない.
| 主な活動 | 成果物 |
|---|---|
| システムの配備 | 確実に動作するシステム |
展開フェーズでは、完成度の高いソフトウェアが本番環境に展開され、ユーザーが利用できるようになります。
学生チームにとっては,作ったら作りっぱなしのことがほとんどであり,それは構わない.
保守すべきは,製作するにあたって蓄積した知識や経験,技術である.
後輩たちのさらなる成長を促すために,確実な引き継ぎを心がける.
| 主な活動 | 成果物 |
|---|---|
| 引き継ぎ資料の作成と技術継承 | チームのさらなる発展 |