この記事では、ソフトウェア開発プロセスの概要や目的、種類、具体的な流れ、課題について解説します。
ソフトウェア開発プロセスとは
ソフトウェア開発プロセスとは、顧客のニーズや要望に沿ってシステムやアプリケーションを開発し、提供する一連の工程のことです。
ソフトウェア開発プロセスには全部で6つの工程があります。着手順にプロセスを挙げると「ヒアリング・要件定義」「設計」「開発」「テスト」「納品」「保守」です。システム開発はこちらのプロセスを経て、ユーザーのニーズを満たす商品のリリース・運用へと進みます。
ソフトウェア開発プロセスを明確にして開発を進める目的
ソフトウェアの開発プロセスを最適化するには、開発プロセスを明文化する必要があります。開発プロセスを明文化するメリットは以下の通りです。
・経験の浅い開発者に安心感を与えられる
開発プロセスの具体的な流れやインプット・アウトプットの仕方が明文化されていれば、経験の浅い開発者でも今後の作業工程をイメージしやすくなります。
・協力会社間のコミュニケーションを円滑にする
一つのプロジェクトにさまざまな利害関係者がいると、コミュニケーションギャップが生まれやすい傾向があります。ソフトウェア開発は、海外へアウトソーシングを行う機会も多いため、お互いに理解しやすくするには国際規格が必要です。特に、方言がない状態で明文化された開発プロセスを適用すれば、協力会社間のコミュニケーションもスムーズに取りやすくなります。
・プロジェクトマネジメントを可能にする
表面上のマネジメントしか行われていないと、プロジェクト内の共通認識が薄くなり、コスト超過や納期遅延につながります。また、プロジェクトの習熟度を測る「CMMI」にある初期段階から開発プロセスを明文化すると共有しやすくなり、トラブルが発生しても柔軟な対応が可能です。
CMMIについてはこちらも合わせてご確認ください。
【第2章】CMMIを意識しよう:CMMI とは
・品質のばらつきを減らせる
検証に偏った商品開発を行うと、トラブルに発展して結果的に「火消し」に追われるケースも増えてしまうでしょう。品質のばらつきを減らすには、プロジェクトの明文化・モニタリング・改善を三位一体で継続する必要があります。テストの質を高めたい場合にもプロセスの明文化が有効です。
開発プロセスを明確にすれば、システム開発の効率化が図れたりメンバー同士の認識のずれを防いだりできます。ソフトウェア開発の完成基準を設けておけば、開発者とユーザー間の認識のずれもなくせるでしょう。ソフトウェア開発を行う際は、開発プロセスを明確化してから実際の導入に移行してください。
ソフトウェア開発プロセスの種類
ソフトウェア開発プロセスには複数の開発手法があります。代表的なソフトウェア開発プロセスを5つ紹介しますので、各開発手法の特徴やメリット・デメリットを理解し、プロジェクトの内容や規模に応じて使い分けましょう。
ウォーターフォール型
ウォーターフォール型は、ソフトウェア開発の手法の定番で、各工程を順番通りに進めるのが特徴です。開発優先度やシステム要件が明確なプロジェクトと相性の良い開発手法です。ウォーターフォール型の名称の由来は、川の水が上流から下流に流れるイメージで名付けられています。
ウォーターフォール型のメリットは、スケジュールの見通しが立てやすく管理もしやすい点です。最初に決めた開発の目的や要件から大きな変更がなければ、工数や予算の見積もりが正確に作れます。
反対に、開発プロセスに不具合や問題が生じると柔軟な対応が行えなくなる点はデメリットです。
アジャイル型
アジャイル型は、それぞれのシステムを分割し、作業を並行する開発手法です。アジャイルには「素早く」「機敏に」の意味があります。開発優先度やシステム要件がはっきりしないプロジェクト、小規模でリリース期間の短いプロジェクトに適した開発手法です。
アジャイル型のメリットは、クライアントの要望にも柔軟に対応できる点です。開発単位ごとに作業を進行するため、トラブルが発生しても個別に対応でき、納期の遅れが発生しにくいのです。一方、開発中の要望がクライアントから収束しない限り、対応に追われる可能性がある点はデメリットといえます。コストが増大しすぎたりスケジュールが長期化しすぎたりしないように注意が必要です。
こちらの記事も合わせてご覧ください。
アジャイル開発とは?特徴やウォーターフォールとの違いなど徹底解説
プロトタイプ型
プロトタイプ型とは、開発中に試作品を作り、ユーザーの確認を取りながら作業を進める開発手法です。元々はウォーターフォール型のデメリットを補完する目的で作られたとされています。開発と試作を繰り返しながら行う小規模プロジェクト向きの手法です。
プロトタイプ型のメリットは手戻りが発生しづらい点で、早い段階から試作とユーザーの承認を交互に行えれば、テストや運用段階でのトラブルも減らせます。
反対に、プロトタイプ型のデメリットは大規模プロジェクトとの相性が良くない点です。開発中の試作回数が増えると、膨大なコストや手間がかかる場合もあります。プロトタイプ型を利用する際はプロジェクトの規模に注意しましょう。
スパイラル型
スパイラル型は、設計・開発・テストを繰り返しながらプロセスの見直しと改善を行う開発手法です。ウォーターフォール型とアジャイル型のメリットを取り入れた、良いとこ取りの開発プロセスといえます。高い品質を求められるプロジェクトの開発手法に最適です。
スパイラル型のメリットは、仕様変更や機能追加に柔軟に対応できる点です。仮に手戻りがあっても最小限に抑えられます。一方で、開発初期段階でシステムの全体像を把握しにくいデメリットがあります。スパイラル型を用いる際は、プロジェクトの管理がうまくいかない恐れも十分に考慮しましょう。
ソフトウェア開発プロセスの流れ
ソフトウェア開発のプロセスは、自社製品開発と受託で作業フローに若干の違いがあります。前者の場合はヒアリングが不要で、社内で企画した商品の要件定義・設計・開発・テストを行う流れになります。サービスに愛着が湧きやすい反面、予算内で効率良く作業を進める点は受託開発と同じです。どちらのソフトウェア開発であっても、スケジュール管理や工数管理が重要である認識を持ちましょう。
以下では、受託開発及びウォーターフォール開発におけるソフトウェア開発プロセスの流れを紹介します。自社製品開発の作業工程と重なるものも含まれているので確認しておきましょう。
ヒアリング・要件定義
ソフトウェア開発はヒアリングから始まります。ユーザーが現状のシステムで感じている不満や新システムに期待する点を把握することで、ソフトウェア開発の方針も明確になります。システムの運用開始時期や予算、競合他社の分析も済ませておくと、ソフトウェア開発の質も高められます。
要件定義とは、企画提案からシステム化する業務や必要な性能を明確化する作業のことです。要件定義書を作成する前に既存システムの業務フローを確認しましょう。現状の業務の流れや問題点が把握できれば、次のステップの「設計」につなげる解決策も見つけやすくなります。要件定義に必要な作業の一つである、開発サイドとユーザーの役割分担も忘れずに行ってください。
設計
要件定義書を元にソフトウェア開発の内容や仕様を決めるのが「設計」です。設計で検討が必要な項目は下記の6つです。
- 1.入出力の方法(データベースまたは画面)
- 2.処理方法
- 3.テストの方法
- 4.運用方法
- 5.セキュリティ確保の方法
- 6.納品後の保守メンテナンス
なお、大規模プロジェクトに関しては、機能をシステム・サブシステム・プログラムに分けて整理するのが一般的です。開発サイドとユーザーのレビュー後に基本設計書としてまとめられたものが、システムの内部設計に使用されます。
開発
設計書・仕様書をベースに、プログラムの記述を行うのが「開発」です。製品の種類や出力デバイスによって使用言語が異なる点に気を付けましょう。
テスト
設計書・仕様書通りにシステムが作動するかチェックするのが「テスト」です。テストには主に以下の4種類があります。
- 1.単体テスト(プログラム単体の検証)
- 2.総合テスト(複数プログラムの検証)
- 3.システムテスト(システム全体の検証)
- 4.運用テスト(実際にユーザーが取り扱うデータによる検証)
「バグ」と呼ばれるソースコードの欠陥があれば、テストを繰り返しても正常に動くようにはなりません。プログラムが正常に作動するまでデバッグを行いましょう。プロジェクトの規模が大がかりな場合はソースコードも膨大な量になり、検証にも時間がかかる点に注意してください。
納品
運用テストを無事にクリアしたソフトウェアは、設計書や運用マニュアル、プログラムと一緒に納品されます。ユーザー側が初めてシステムを導入する際は、開発者側が一連のオペレーションの動かし方を実際に説明する場合もあるでしょう。
保守
開発したソフトウェアが安定して稼働するまで必要になるのが「保守」です。具体的にはシステムの稼働確認やデータのバックアップが重要で、障害発生時にはサポートも必要となります。顧客からの要望や制度改正があった際は、機能の追加にも応じる必要があるります。
ソフトウェア開発プロセスの課題
「ソフトウェア開発プロセス」と「開発プロセスの課題」は別物として捉える必要があります。2021年2月1日に株式会社BlueMeme(ブルーミーム)が公表した「現在の開発プロセスに対する満足度調査」によると、開発プロセスに課題を感じる方からの回答数が多かった項目は以下の3つです。
- 1.見積もった工程と実績に乖離がある
- 2.仕様工程による手戻りが多い
- 3.テスト工程が削減できない、開発のスピードが遅い
参考:エンジニアの66.3%が「現在の開発プロセスに課題あり」 新規技術を活用した大規模なシステム開発には「アジャイル型」を含んだ開発プロセスに支持集まる|BlueMeme
上記はいずれも開発プロセスにおける課題の定番といえます。単純にソフトウェア開発プロセスの理解不足なら、種類や流れを正確に把握するだけで課題の解決が可能です。
ソフトウェア開発プロセスの主な課題は以下の通りです。
・IT業界の人材不足
ソフトウェア開発ニーズの増加と共にIT人材は不足している状況にあります。IT業界で使う言語やシステムは移り変わりも激しく、専門性の高い人材の育成には膨大なコストがかかってしまうのです。自社では人員が明らかに足りない場合、多くの企業が業務委託を行っています。IT人材の不足がソフトウェア開発の足かせになっている点を覚えておきましょう。
・プロジェクト管理に難しさがある
ソフトウェア開発はプログラマーやエンジニアが集まり、一つのチームになって作業を行います。複数のプロジェクトが同時進行で行われる場合は、一人ひとりの工程管理が難しくなり疎かになります。実際のIT業界でも、工程管理を完璧にこなせる人材は少ないのです。プロジェクト管理の難しさがソフトウェア開発の停滞要因になっている点も押さえておきましょう。
まとめ
ソフトウェア開発プロセスとは、ソフトウェア開発に関係する一連の工程のことを指します。ソフトウェア開発プロセスを明文化すれば、品質のばらつきを抑えられ、プロジェクト管理がしやすくなるのです。ソソフトウェア開発プロセスの課題には、IT人材の不足とプロジェクト管理の難しさの2つがあります。前者は業務委託で解決できますが、後者は自力で解決するのが困難な課題です。
プロジェクト管理について詳しくまとめた資料もご用意していますので、ぜひご活用ください。
- カテゴリ:
- キーワード: