システム開発の手順と流れ

企業や自治体などではビジネス上の課題解決や新たな価値創出のため、さまざまなシステム開発を行います。システム開発は基本となる手順が決められ、定められた工程(流れ)に従って作業が行われます。このコラムでは一般的なシステム開発の手順と流れについて説明します。
 

1.システム開発の手順とは

製品や成果物を作り出すためには、手順を定めることが必要であり、作業の着手前からゴールとなる製品や成果物のイメージができていることが重要です。こうした物を作り上げるためには具体的な設計図や作業の道筋が必要です。

システム開発も同様に、要求される機能や操作性を実現するためには、対応すべきタスクを洗い出し、それらを正しい手順や流れに沿って進めていくことが必要です。システムの発注者側は、自社内でシステム開発する内製の場合も、外部に委託して開発する場合もシステム開発の手順について理解しておくことは開発のゴールに至るための重要な要素になり得ます。

システム開発の手順に関する理解が浅いと、システムの発注者側と開発者側で認識の相違や理解の齟齬が発生する要因となります。そのまま開発が進んでしまうと、テスト時やリリース後に、定めていただけの機能力を発揮しなかったり、想定外の挙動を誘発する障害になったりと要件が異なってしまうことが発生します。また、機能と要件についてはMECE(モレがなく、ダブりがないこと)の確認も必要です。こうしたことが実現されていない場合は手戻りが発生し、納期の延期や追加コストが発生しかねません。結果的に短縮された期間で開発することで品質問題が発生したり、リリースが延期したりするリスクも起こります。

 

2.システム開発の目的とは

システム開発の手順と流れを理解する前提として、システム開発の目的を理解することが必須です。どのようなシステム開発であれ、目的は依頼元である企業や自治体の目標を達成するツールを生み出すことです。

そのためには、システムを導入することによって「何を実現したいのか」を明確にしておきましょう。システムの企画段階から「ゴール」や「コンセプト」などを明らかにし、しっかりとした軸をもつことで、QCD(Quality・Cost・Delivery:品質・コスト・納期)の制約が発生した際に、優先すべき機能や残すべき機能を判断できます。

 

3.開発工程の内容を検証するV字モデル

ここで、目的にかなった品質のシステムを開発するための方法として、V字モデルを説明します。V字モデルとはシステム開発の開始から終了までの流れを表したモデルであり、特にウォーターフォール型のシステム開発に利用されています。V字モデルは左側に開発工程、右側にテスト工程を対に並べることで、各工程の対応関係を明示しています。

※ ウォーターフォール型:システム開発を上流工程から下流工程に流れるようにプロジェクトを進めていく方式

参照先:『超上流の本』p24,『共通』フレーム(第2版)p22
    ソフトウェア開発の標準プロセス
    IPA (独立行政法人 情報処理推進機構)SEC (ソフトウェア・エンジニアリング・センター)


V字モデルでは対になる開発工程とテスト工程は同じレベルの詳細さが要求されます。そのため各工程の成果物の範囲、内容を適切に設定し、最終的な製品の品質を担保することに役立ちます。V字モデルの活用は開発工程で行った内容を抜け漏れなくテストで検証できるため、品質向上につながるといえるでしょう。 

V字モデルには以下のメリットがあります。

  • 適切なテスト内容を決定できる

開発工程に対し、テスト工程においては同じレベルの成果物をテストすることになります。

  • テスト工程の進捗を管理しやすい

実施するテストのレベルや内容を規定しやすくなるため、関係者間におけるテスト内容やスケジュールに対する認識の相違や齟齬のリスクを低減できます。

  • 「手戻り」リスクの軽減につながる

システム開発のおけるスケジュール遅延やコスト増加の要因に「手戻り」リスクがあります。例えばテスト工程で発見された不具合によって前工程のプログラミングの修正のみならず、詳細設計の段階まで見直す範囲が拡大する場合があります。V字モデルは開発に対して同じレベルの内容のテストを行うことで、各工程内で問題を修正し「手戻り」リスクを軽減します。

  • 修正コストや修正時間の抑制につながる

同じ詳細レベルの開発・テスト工程を行うことになるため、不具合が発見された場合も修正範囲の特定や原因の特定が比較的容易となります。不具合に対する対応範囲が限定的になるため、前工程まで確認範囲を拡大して行う調査や修正を回避できます。また、こうした対応に関わるコストや時間の抑制につながります。

 

4.システム開発の流れ

システム開発の流れには以下の工程があります。それぞれについて説明します。

・要件定義 ・基本設計 ・詳細設計 ・プログラミング
・単体テスト ・結合テスト ・運用テスト ・運用保守

 

1.要件定義
要件定義は最上流に位置する重要な工程です。ユーザーの課題や目的をヒアリングし、システムに必要な機能や開発手法、導入や運用方法、予算、プロジェクトチームの人員や開発体制、開発期間などシステム開発に必要な要件を決めていきます。この工程の中で、システムの発注者側と開発者側とでゴールとなるイメージ像を一致させ、そのために必要な情報をしっかりすり合わせできることがとても重要です。要件定義では「要件定義書」を成果物として作成します。

2.基本設計
基本設計は、要件定義で定めた内容を基に、主にUI(User Interface:ユーザーインターフェイス)を決定する工程です。UIはシステムのユーザーの見やすさや入力の容易性などユーザービリティを考慮して設計されます。この工程では、発注者が確認するための「基本設計書」が成果物として作成されます。
この「基本設計書」は画面設計書兼デザインとしてFigmaを使用することが多いです。

3.詳細設計
詳細設計とは、機能ごとに分割し、具体的な実装を想定して行うことです。この設計をOpenAPIでAPI定義を行うことで、Web APIを簡単に実装することができるので、多くの場面で活用されています。また、この工程ではプログラマーが実際にプログラミングを行うための詳細設計書を成果物として作成します。具体的には「API定義」「システム定義」「ER図」などの資料を作成します。
※ER図とは・・・Entity Relationship Diagramの略称で、データベースの設計書として用いられます。
データベースにはたくさんの情報が格納されるため、それらの情報の関係性やつながりを図で表現します。

4.プログラミング
プログラミングとはシステムの製造工程のことです。プログラマーが詳細設計書の内容に基づき、プログラミング言語を使用したコーディングによって作成したテキスト(ソースコードという)を作成し、プログラムを完成させます。

5.単体テスト
単体テストでは作成したプログラムが要件定義で決められた仕様通りに機能するか、モジュール単位でテストを行います。ソフトウェアの変更を常にテストし、自動で本番環境に適用できるような状態にしておく開発手法を駆使し、不具合が見つかったプログラムは修正とテストを繰り返して完成させます。

6.結合テスト
結合テストとは単体テストで不具合がないことを確認した複数の機能を結合させて行うテストのことです。複数の機能を組み合わせたものをサブシステムといい、結合テストでは各サブシステムに不具合が発生しないか、各サブシステムを連携させた時に機能的に問題がないかなどを確認をします。

7.運用テスト
運用テストとはシステムを利用する実際の運用環境で、要件定義で定めた機能が正常に稼働するのか、業務に支障なく使用できるかなどを確認するテストです。ユーザーの操作性やトラブルなどを想定しながら細かいチェックを進めていきます。運用テストは納品前のシステムの品質を担保するための最終工程となります。

8.運用保守
運用保守とはリリース後のシステムが安定的に稼働を続けるようにモニターし、障害などのトラブル発生時の対応やユーザーのニーズに合った機能を提供するために、システムの改修やアップデートなどを行う工程です。運用保守の工程は社内のシステム部門の担当者か外部の担当者が行います。

 

5.まとめ

本コラムではシステム開発の手順と流れについて解説しました。システム開発の流れについては開発側の関係者のみならず、要件にかなった成果を得るために発注側の担当者も理解しておく必要があります。理解のギャップや認識の齟齬は本来の目的を達成しないばかりか、開発コストの増加やリリースの延期などの影響をもたらします。目的の達成のためには、システム開発の手順と流れについて理解を深めておきましょう。

情シスナビでは、本コラム以外にも、情報システムの開発に関わるさまざまなコンテンツを提供しています。是非確認してみてください。

関連記事

カテゴリー:

ナレッジ情シス知恵袋

情シス求人

  1. チームメンバーで作字やってみた#1

ページ上部へ戻る