ソフトウェア開発において要件定義から運用をした後の保守作業まで様々な工程があります。それぞれの工程を把握することによって、より質の高いソフトウェア開発につながります。
また、ウォーターフォール型やアジャイル型、プロトタイプ型によっても工程が異なるため確認が必要です。この記事ではそれぞれのタイプにおいて一般的に進められる工程内容を詳しく紹介します。
ソフトウェア開発工程を把握すべき3つの理由
ソフトウェア開発工程を把握する理由として次の3点が挙げられます。
- 効率的に開発計画を立てるため
- スムーズに開発を進めるため
- 作業の抜け漏れを防ぐため
1.効率的に開発計画を立てるため
ソフトウェア開発工程を把握することで、効率的に開発計画を立てられます。ソフトウェア開発工程を把握することで、一から開発計画を進める必要はありません。
開発工程に必要とする作業をあてはめていくことで、スケジュールや人員リソースの調整を効率的にすることが可能です。
2.スムーズに開発を進めるため
ソフトウェア開発工程を把握することで、スムーズに開発を進められます。
開発担当者の間で共通の認識を持つことにより認識のずれをはぶく他、工程ごとの進捗具合や作業内容を理解しやすくなります。このため、分割作業をしやすくなる点がメリットです。
3.作業の抜け漏れを防ぐため
ソフトウェア開発工程を把握することで、作業の抜け漏れを防げます。
【ウォーターフォール型・アジャイル型】ソフトウェアの開発工程
ウォーターフォール型やアジャイル型において、ソフトウェアの開発は次のように工程を進めることが一般的です。
- ベンダー選定
- 要件定義
- 設計
- 実装(プログラミング)
- テスト・リリース
- 運用・保守
1.ベンダー選定
アイテム開発会社にソフトウェア開発を委託をするにあたり、目的にあったベンダーを選定することが重要です。ベンダーによってそれぞれ特徴があり、対応できる業務内容が異なるため、明確なサービス内容や実績などを把握するようにしましょう。
また、ベンダーによって料金体制が大幅に異なるため複数社から見積もりを依頼し、比較をすることが重要です。
2.要件定義
ベンダーが決まったらまずは要件定義を作成していきます。 要件定義には開発の目的の他に、開発方法や人的リソース、スケジュール、必要な機能などを明確に記載することが重要です。
要件定義を見るだけで、ソフトウェア開発における目的や全体像などをイメージできるようにすることが大切です。要件定義書が曖昧であればプロジェクトの失敗につながるリスクがあります。
3.設計
ソフトウェア開発において設計には基本設計と詳細設計の二種類があります。
基本設計とはユーザーから見える部分の設計であり、ユーザーが使う機能や画面のデザインなどです。基本設計は開発者だけでなく、依頼者をはじめ関係者以外が読んでもわかりやすいように明確にすることが重要です。
次に詳細設計はプログラマーだけが理解できるシステム内部における設計図のことです。詳細設計はどのプログラマーが確認してもすぐに理解できるような設計にしましょう。
4.実装(プログラミング)
設計が終わったら、エンジニアがプログラミングを進めていきます。システムの種類によって必要なプログラミング言語が異なるため、システムの種類によって対応できるプログラマーが必要です。
システム開発を依頼する側はプログラミングの詳しい知識は必要ありません。しかし、プログラミングの知識がある依頼者であれば、よりスムーズにシステム会社とコミュニケーションをとりやすくなります。
5.テスト・リリース
プログラミングが終わったらリリースをする前に不具合やバグなどがないか、ソフトウェアの動作をテストすることが重要です。ソフトウェアをリリースした後に大きな規模の不具合やバグが発生した場合は、顧客満足度が下がるだけでなく企業に対する信頼が下がります。
そのためテストは重要な工程であり複数の担当者で複数の環境において実施するようにしましょう。テストには機能ごとに行う単体テストや他の機能と連携することにより動作検証する結合テストがあるほか、総合テストや受け入れテストなど様々な種類のテストがあります。
6.運用・保守
テストにおいて問題がなければリリースをして運用を開始します。運用開始した後も継続的にシステム全体的に監視することが重要です。また不具合が発生した場合は早急に復旧作業をすることが求められます。
リリース前に十分なテストを行い不具合やバグが発生しない状態であっても、ソフトウェアの運用を続けていけば突然不具合が発生する可能性があります。そのため不具合が発生した場合でも早急に対応することが重要です。
【プロトタイプ型】ソフトウェアの開発工程
プロトタイプ型においては、次のように ソフトウェア開発を進めることが一般的です。
- 要件定義
- 設計
- プロトタイプ開発
- 評価・修正
- 本番開発・リリース
- 運用・保守
1.要件定義
ソフトウェア開発を進めるにあたってまず要件定義を行うのはプロトタイプが誰でも同じです。要件定義にはソフトウェア開発の目的や必要な機能、人材リソースなどを明確に記載することが重要です。
関係者以外が見てもわかるように詳しく記載することによって、ソフトウェア開発において担当者によって考え方にズレがないようにできます。
2.設計
要件定義を元に設計を進めていきます。プロトタイプ型はまず試作品を作るため、 試作品のための設計を行います。
対象が試作品であるため、ウォーターフォール型やアジャイル型のように幻滅な設計はしないことが一般的です。試作品を作るにあたって問題が起きないようなソフトウェアの大枠を定義しましょう。
3.プロトタイプ開発
試作品の設計が終わったら作品を作っていきます。プロトタイプ型で重要な点として、スピード感が挙げられます。重要な機能だけに集中し細部までを意識しないで進めることが重要です。
プロトタイプ型は作品をユーザーに確認してもらい開発から修正までを繰り返すため、プロトタイプ開発に時間をかけてしまうと納期に間に合わないリスクがあります。
4.評価・修正
プロトタイプ開発が終わると、試作品を発注者やユーザーに利用してもらいフィードバックをもらいます。
発注者やユーザーのフィードバックをもとに必要な場合は何度も修正が必要です。プロジェクトによっては修正回数に上限を設定することもあります。修正が完了したら本番開発に向けた用件や設計に進みます。
5.本番開発・リリース
試作品を基に、本番開発を進めていきます。本番開発ではウォーターフォール型やアジャイル型と同じように、細部までを意識して開発を進めていきます。
開発が終了したらユーザーが利用するのと同じ本番環境において、動作に問題がないかどうかテストを行うことが重要です。テストにおいて不具合やバグがあった場合は再度修正を行い、修正がなくなるまでテストを続けます。
6.運用・保守
テストを行い修正がなくなった時点で運用開始となります。 運用開始したらソフトウェア開発が終わりというわけではなく、継続して運用できるような確認が必要です。
どれほどテストを行った場合でも不具合やバグが発生する場合があり、早急に対応できるような保証業務の体制作りをしましょう。
プロトタイプ型において、ウォーターフォール型やアジャイル型と異なるのは試作品を作る点です。その他の工程においては大きな違いはありません。
ソフトウェアにおける開発工程ごとのコツ
ソフトウェアを開発する上で、それぞれの工程ごとにするべきことが異なります。ソフトウェア開発には様々な工程があり、工程ごとにすべきことを行っていないと他の工程において影響が出るため注意が必要です。
この章では、それぞれの工程においてスムーズに開発を進める3つのコツを紹介します。
- 要件定義
- 設計
- テスト
要件定義
要件定義ではソフトウェア開発における目的や、必要な能力、人材リソースなどを明確にします。要件定義に書かれている内容が曖昧な状況であれば、開発担当者が正しく理解できず認識にずれが発生する可能性があります。
このため設計フェーズの段階で定義が不足する可能性があるため、要件定義は誰が見ても理解できるように明確な内容であることが必要です。
設計
設計は要件定義を基準として作成していきます。設計はあくまで開発の出来上がりをイメージして進めていきますが、パイロット版を作ることによって現実的に設計を進める場合もあります。
例えばローカル環境用に簡易なデータベースを立て、テーブル設計書や定義書を作るなど様々な方法で設計を進めることにより質の高い設計書の作成が可能です。
テスト
テストの制度においてソフトウェアの評価が変わると言っても過言ではありません。そのためテストの精度を高めることが重要です。
簡単に想定できるようなデータやパラメーターを使ってテストするだけではなく、限定的検証の観点を含めたテスト計画を立てるなどさまざまなパターンでのテストをしましょう。
テストにはシステム開発フェーズで行うプロジェクトテストプロセスや品質確認を行うテストサーバープロセスといったプロセスがあります。それぞれの観点においてテストを進めることが重要です。
まとめ
ソフトウェア開発は要件定義から始まり運用後の管理は感謝まで様々な工程があります。さらに、ウォーターフォール型やアジャイル型、プロトタイプ型など様々なタイプによって高低が異なる場合があります。
それぞれのタイプにおいて、どのような工程があるかを把握することによってソフトウェア開発が成功する可能性が高まるのです。