システム開発工程とは? ウォーターフォールや全工程を紹介!

更新:2024.4.26
著者:Sky株式会社


システム開発の10の工程

システム開発工程とは、システム開発に必要な手順のことを指し、おおまかに10の工程に分けられます。一般的に、要件定義などシステム開発の最初の段階でシステムの全体像を決定する段階を上流工程といい、プログラミングやテストなど、システムを完成させる段階を下流工程といいます。プロジェクトの規模や開発手法などによっては、工程が明確に分かれていなかったり、省略されたりする場合もあります。

要件定義

要件定義は、クライアントの要望を聞きながら、その要望を実現するためにはどのようなシステムが必要になるか、また、どのような開発手法が最適かといったことを検討し、導入や運用方法、予算、開発期間などを具体的にまとめる工程です。

システム開発は、この要件定義で決めた内容に基づいて進んでいきます。そのため要件定義は、開発工程における設計図を作る“最上流工程”であり、システム開発において重要なフェーズです。最終的にトラブルが発生しないように、クライアント側としっかりと認識を合わせておく必要があります。

インタフェースなどの基本設計

基本設計では、要件定義で決めた内容を基に具体的な機能を決定していきます。クライアントからの要望を満たすように、画面設計、データベース設計、インタフェース設計などを行い、基本設計書を作成します。

基本設計書は、クライアントが求める仕様と相違がないか確認するための資料としても用いられます。そのため、専門用語や複雑なデータは使用せず、図などを用いながら視覚的に分かりやすいものになるよう、作成することが重要です。

エンジニア向けの詳細設計

基本設計書の内容を基に、詳細設計を行って詳細設計書を作成します。基本設計書はクライアント向けの資料である一方、詳細設計書はエンジニア向けの資料です。基本設計書に沿って、詳細設計を行うことで、システム開発に一貫性を持たせることができます。

詳細設計では、プログラムを構成する単位であるモジュールごとに分割して、仕様、動作などを細かく定義。詳細設計書として、「機能仕様書」「データフロー図」「データベース物理設計書」などを作成します。これらはプログラミングやテストなど、後の工程で使用されるため、間違いがあると開発工程でバグが発生して、プロジェクトが遅延してしまう可能性があります。そのため、詳細設計書に誤りや不備がないかレビューを実施してチェックします。レビューでは、基本設計書との矛盾がないか、システム要件を満たしているか、プログラミングやテストが可能か、などの観点で確認します。レビューで挙がった問題点を修正した上で再レビューを行い、問題点がなくなるまで修正とレビューを繰り返します。

詳細設計書は、プログラミングやテストの基準となる資料のため、明確かつ具体的に記述し、プログラミングやテストを行う際の注意点や規約を記載することで、品質や開発効率の向上につながるといわれています。

プログラマーによるプログラミング

設計工程で作成された設計書に基づいて、プログラマーがプログラミングを行います。システム開発の肝となる工程です。

単体テスト

エンジニアが作成したプログラムが、要件定義で定めたとおりの動きをするか、またクライアントの要望どおりになっているかなどを確認するためのテスト工程に入ります。

まずは、モジュール単位で「単体テスト」を行い、不具合が見つかったら修正し、テスト結果のフィードバックを行いながらプログラムを完成させていきます。モジュール結合前にテストを行って早い段階でエラーチェックをすることで、工程後半でのバグ修正を減らすことができます。

結合テスト

結合テストは、単体テストを経たいくつかのモジュールを結合したサブシステムが、想定どおりに動作するか検証する工程です。各サブシステムのインタフェースにずれがないか、各サブシステムがきちんと連携しているかなどを確認します。規模の大きいプロジェクトでは、結合テストを2段階に分ける場合もあります。

システム全体のテスト

各サブシステムに不具合がないことを確認した上で、システム全体のテストを行います。この工程では、すべてのプログラムが要求定義で決めたとおりの動きをするか確認します。単体テストや結合テストではカバーしきれない、システム全体の挙動や外部システムとの連携やセキュリティ、アクセスが集中したときの耐久性や処理速度などあらゆる角度からテストを実施します。

リリース前の運用テスト

運用テストは、システムを納品・リリースする前の最終工程です。稼働後と同様の環境下で行われ、正常に稼働するかはもちろん、クライアントの視点で、誤操作しにくい仕様になっているかなどをチェックしていきます。

また、運用テストは、クライアントが実際の業務を想定しながら実施することもあります。品質が保たれているかチェックするだけでなく、システムの使い方をクライアントに説明する目的も含んでいます。

リリース(システムの移行)

運用テストの後は、システムを実際の業務で利用できるように、本番の環境に公開します。一般的には、これまで運用していた旧システムから新たに開発したシステムに切り替える工程です。新システムにデータを移行しても想定どおりの動作をするように、さまざまな懸念点を考慮しながら移行手順書を作成しておく必要があります。

システムを移行する方法として、旧システムから新システムに一気に切り替える「一斉移行」と機能ごとに少しずつ切り替える「順次移行」があります。

システムの保守と運用

稼働したシステムを問題なく使い続けるために、保守・運用業務が必要です。保守はシステムが滞りなく稼働するようにデータを入力したり、サーバーダウンなどのトラブルの際に解決に向けて対応したりすることです。一方、運用は、システムを監視して必要に応じて改修やアップデートなどを行うことです。保守・運用の工程はクライアントの情報システム部門が担当することもあります。

【補足】なぜ開発工程を分ける必要があるのか

ここまで紹介してきたように、システム開発にはさまざまな工程があります。このように工程を分けて開発を行うのは、効率よく、品質の高いシステムを作るためです。システムの開発は、半年から数年をかけるような大規模なものも珍しくなく、その際には多くのメンバーが開発に携わります。そのため、開発の流れや各工程で行うべきことがあらかじめ決まっていることで、メンバーが共通の認識を持って開発を進めることができます。さらに、工程ごとに管理者を置くことで、スケジュールやタスクの管理が行いやすいというメリットもあります。

また、テストを細かく行うことで、早い段階で不具合を発見でき、システム完成後にたくさんの不具合が見つかるというトラブルを防ぐことができ、さらに工程ごとに確認やレビューを行うことで品質を高めることにつながります。

工程ごとに必要となるスキルは異なるため、各工程に求められるスキルを持つメンバーを配置することができるとともに、経験や知識をさらに高めていくことができます。

代表的な3つの開発工程モデル

開発工程の進め方にはいくつかモデルがあります。ここでは、代表的な開発工程のモデルを紹介します。

アジャイルモデル

「アジャイル」は「俊敏な」という意味で、名前のとおりにスピードが求められるプロジェクトで用いられる開発工程モデルです。機能ごとに小さな開発サイクルを何度も回す方法です。設計段階であえて詳細まで決めず、全体を作りながら随時修正を行っていきます。

アジャイル図

アジャイルモデルは、開発スピードが速いことに加えて、新規事業などで工程や成果物のイメージを持ちづらい場合でも開発を進めながら柔軟に修正していけるメリットがあります。

ウォーターフォールモデル

「ウォーターフォール」は「滝」という意味です。滝のように上流から下流に向かって進んでいく開発工程モデルで、一つの工程が完了していから次の工程に着手する方法です。開発したいシステムが明確に決まっている場合や長期に及ぶ大規模なプロジェクトにはウォーターフォールモデルが適するといわれています。

ウォーターフォール図

進捗の把握がしやすい反面で、前の工程に手戻りすることを想定していないため、開発途中での仕様変更や修正には対応しづらい方法です。また、要件定義や基本設計などの上流工程にミスがあった場合、リカバリーに時間やコストを要します。

スパイラルモデル

スパイラルモデルは、アジャイルモデルとウォーターフォールモデルの両方の長所を取り込んだ開発モデルです。機能ごとなど、システムをいくつかに細分化して、設計、開発、テストの工程を繰り返し、らせん状にシステム全体を作りあげます。すべてのシステムが完成したら、本番環境に移行して、保守・運用に移ります。

スパイラル図

一つのサイクルが完了するごとにクライアントのレビューを受け、その結果を次の開発サイクルに生かすことができます。仕様変更や修正に柔軟に対応できるとともに、進捗管理も行いやすい開発モデルです。

プロトタイプモデル

プロトタイプモデルは、本格的な開発に入る前にシステムの試作品を作り、クライアントのフィードバックを得ながら開発を進める方法です。クライアントとの認識のズレをなくし、スムーズな開発につなげることができます。

プロトタイプ図

クライアントに実際に動く試作品にふれることで、具体的なフィードバックをもらうができ、システムの仕様に反映できます。本開発に入る前に、クライアントからの意見を基にして仕様を決定できるため、要件の変更などの手戻りが起こりにくい開発モデルです。

システム開発工程の3つのポイント

システム開発をスムーズに進めるために注意すべき点など、特に重要なポイントをご紹介します。

開発工程目的の明確化

システム開発の目的は、業務効率化や生産性の向上です。システム開発そのものが目的ではなく、システム開発は目的を達成するための手段であることをきちんと押さえておく必要があります。つまり、重要なのは開発するシステムによって「実現したいこと」を明確化することです。目指すべきゴールが明確であれば、そのゴールに向けて逆算して開発プロセスや開発手法を検討でき、スムーズに進められます。

最適な開発工程モデルの選択

先述したとおりシステム開発にはさまざまな開発工程のモデルがあります。それぞれの特長やメリット・デメリットを踏まえた上で、開発するシステムに合わせて最適なモデルを選択することも開発をスムーズに進めるポイントです。そのためにはやはり、システムで「実現したいこと」を明確化しておくことが重要になります。

複数の開発会社への比較検討

システム開発を開発会社に依頼する場合は、会社選びが重要になります。会社選びを誤った場合、時間とコストを浪費する可能性もあるため、複数の会社から話を聞いて開発実績などを確認するとともに、相見積もりを取って比較検討することが欠かせません。

テスト効率化のためのポイント

開発したシステムの品質を保つために、テストは重要な工程です。そしてスムーズなシステム開発には、テストの効率的が必要です。ここでは、テスト効率化のためのポイントを紹介します。

タスクの洗い出しと課題の検証

テスト効率化に向けて、まずはテストに関わるすべての作業を洗い出す必要があります。どういった作業に、どの程度時間を掛けているのか把握した上で、時間を掛けすぎている作業を見直したり、どの作業で問題が発生しているのか検証したりします。

ですが、例えばテスト項目の抽出に時間が掛かっていた場合、すぐにその工程に問題があると判断することはできません。新たな機能に対するテストを行っているという場合なら、時間を掛けて丁寧にテスト項目を検討する必要があるからです。一方で、再利用できる過去のテスト項目があることを知らないまま、一からテスト項目を作成していたという場合ならやり方を見直すべきです。本当にそれが問題なのか、正しく判断する必要があります。

現状の工数(リソース)を考えた優先順位付け

問題点を見つけた後は、対処する問題の優先順位を考えます。発見したすべての問題点に対処できない可能性もあります。現状の工数を考えながら、効率化につながる効果が高い問題を優先的に対応する必要があります。

必要に応じて支援ツールを活用したテストの自動化を行う

テストの効率化に効果的な方法として、支援ツールを活用したテストの自動化があります。テスト自動化ツールにより、人手を介さず夜間でもテストを実行できるため、ツールの導入が可能な場合は活用することをお勧めします。ただし、プロジェクトの途中でツールを導入する場合、テスト作業に大幅な見直しが発生するなどリスクを伴う可能性もあります。

適切な工程でシステム開発を行う3つのメリット

要件定義から保守・運用まで、システム開発の工程についてご紹介しました。こうした一連のプロセスでシステム開発を行うことでさまざまなメリットがあります。ここでは、適切なプロセスでシステム開発を行うことで得られる具体的なメリットについて紹介します。

システム品質の向上

システム開発全体の流れや手順をあらかじめ決めておくことで、各工程で目標設定ができ、管理が行いやすいため、設計段階で設定された高い品質を保ちやすいことがメリットです。

トラブル発生のリスクの減少

事前に工程を決めておくことは、プロジェクトのスムーズな進行につながり、予期せぬトラブルの発生リスクを減らせます。計画的に作業を進めてスケジュールの遅延を防ぐことで、予算内でプロジェクトを完遂させることができ、追加費用が発生する場合も最小限に抑えることができます。

開発側とクライアントのコミュニケーションの円滑化

工程ごとに進捗状況の報告や仕様確認などを行う必要があるため、クライアントとコミュニケーションを取りやすくなります。円滑なコミュニケーションにより、開発側とクライアントの間で不明確な点が解消でき、トラブルを回避することにつながります。

システム開発ならSky株式会社

Sky株式会社は、家電製品の組込み開発を手掛けたのをきっかけに、デジタル複合機やカーエレクトロニクス、医療機器など、幅広い分野で開発を行っています。お客様先へのエンジニアの派遣や受託開発などをはじめ、要件定義から設計、開発、検証、運用・保守まであらゆるフェーズで技術を提供しています。

さらに、教育分野における学習活動ソフトウェアや、公共・民間向けのクライアント運用管理ソフトウェア、企業の営業活動を支援する名刺管理サービスなど、自社商品の開発・販売も積極的に行っています。

まとめ

ここまでシステム開発の工程や開発工程のモデルなどをご紹介しました。システムで実現したいことを明確にした上で、適切な開発工程モデルを選択することなどが、システム開発をスムーズに進めるために欠かせません。

Sky株式会社では、自動車関連システム、業務系システムをはじめとした幅広い分野で、システム開発の実績があり、開発の上流工程から品質管理に携わるノウハウも有しています。システム開発でお困りごとがあれば、ぜひSky株式会社までお問い合わせください。

著者 Sky株式会社

Sky株式会社は、家電のシステム開発を手掛けたのをきっかけに、デジタル複合機やカーエレクトロニクス、モバイル、情報家電、さらに自社商品として教育分野における学習活動ソフトウェアや、公共・民間向けクライアント運用管理ソフトウェアなど、幅広い分野でのシステム開発を展開しております。

お問い合わせ

ソフトウェア開発・評価/検証(ソフトウェアテスト)に関するご依頼・ご質問は、下記フォームよりお問い合わせください。弊社製品・サービスに関するお問い合わせは、各商品Webサイトより受けつけております。

パートナー企業募集

Sky株式会社では長期的なお付き合いができ、共に発展・成長に向けて努力し合えるパートナー企業様を募集しております。パートナー企業募集に関するご依頼・ご質問は、下記フォームよりお問い合わせください。

ページのトップへ