システム開発の基本的な工程
システム開発の基本的な工程についてまとめました。システム開発は次の9つの工程に沿って行われるのが基本ですので、エンジニアを目指す方は流れを覚えることが大切です。
要件定義
まずは要件定義を行います。顧客と打ち合わせを行い、どんなシステムが欲しいかヒアリングをします。顧客から要望を聞き出したら、それをまとめていき要件を定義します。
要件定義はシステム開発の中でも重要な工程です。なぜなら、顧客の要望と違う要件を定義してしまったら、開発がやり直しになる可能性もあるからです。そのため、顧客との打ち合わせは何度も行い、本当にこの要件で問題ないかチェックしたうえで先に進みます。
見積もり
要件定義と同時に行うものが見積もりです。開発にどの程度の予算・期間がかかるか顧客に提示する必要があります。加えて、開発の細かいスケジュールもここで組み立てる必要があります。
設計や開発、テストなど各工程に何日ぐらいかかるかを計算します。ベテランのエンジニアなら過去の経験などから、おおよその見積もりを出せることが多いです。
外部設計
定義した要件を元に外部設計を行います。外部設計とはWebページの見た目や業務システムの操作画面など、システムの表側の設計のことです。ユーザーによって使いやすいシステムにするために必要な機能や情報は何か考え、設定書にまとめていきます。
内部設計
外部設計と同時に内部設計も行います。内部設計はプログラムの裏側の処理の設計のことです。たとえば、データベースからデータを取り出すプログラムの処理内容や、Webページに表示する情報を作成するプログラムの処理内容を設計書にまとめていきます。
開発
外部設計・内部設計が完了したら、ようやく開発作業に入ります。プログラミング言語を使ってソースコードを記述し、設計書通りにプログラムが動くようにします。また、単に設計書通りに動くだけでなく、処理効率やソースコードの読みやすさなども意識してプログラミングします。
単体テスト
開発が完了したらテストの工程に入ります。まずはプログラムやモジュール単体でテストを行います。設計書通りに問題なくプログラムが動くか確認します。問題のある箇所が見つかったら修正を行い、再度テストを行っていきます。
結合テスト
続いて、複数のプログラムを組み合わせてテストを行います。たとえば、2つのプログラム間で通信処理が正常に行われているか、データの受け渡しに問題がないかなどを確認します。
総合テスト
最後に、総合テストを行います。総合テストではシステム全体を通してテストを行います。実際にユーザーが使う場面を想定してテスト項目を作成し、それに沿ってテストを進めます。
リリース
無事テストが終了したらリリース作業を行います。リリース前にユーザーの環境でもシステムが問題なく動くか確認を行います。問題がなければシステムを一般公開しユーザーが使えるようにします。公開後に再度テストして問題が見つかった場合、すぐに公開を止めて修正を行えるようにしておく必要があります。
リリース後に問題がなければひとまずシステム開発作業は完了です。
運用・保守
システム開発後はシステムの運用・保守を行う必要があります。運用・保守とはシステムが安定稼働するように、メンテナンスやログの監視、OSやミドルウェアのアップデートなどを行うことです。また、障害や不具合が発生した場合に、問題のあるプログラムやサーバを特定し修正を行うのも運用・保守の業務範囲です。
運用・保守に関してはシステムを開発した企業が継続して行う場合が多いです。
システム開発の工程を知るうえで覚えておきたい略語
IT業界ではさまざまな業界用語が使われるため、用語の意味を知らないと話についていけなくなることも多くあります。そこでシステム開発の工程に関連する略語の一覧と意味をまとめました。
- SP(System Planning):企画
- RD(Requirements Definition):要件定義
- BD(Basic Design):基本設計
- DD(Detail Design):詳細設計
- ED(External Design):外部設計
- ID(Internal Design):内部設計
- PG(Programing):プログラミング
- UT(Unit Test):単体テスト
- IT(Integration Test):結合テスト
- ST(System Test):総合テスト
- OT(Operations Test):運用テスト
これらの略語の意味を覚えておくことで、社内研修時に開発工程に関する説明があった際にも話を理解しやすくなるでしょう。
ウォーターフォール開発とは?
システム開発にはウォーターフォール開発とアジャイル開発の2種類があります。ウォーターフォール開発とは、さきほど解説した要件定義から運用・保守までの9つの工程を上から順にこなしていく、基本的な開発手法のことです。IT企業でもっとも多く使われている開発手法です。ウォーターフォールには次のメリット・デメリットがあります。
メリット1.納期の見通しを立てやすい
ウォーターフォール開発は納期の見通しを立てやすいです。なぜなら各工程を順にこなしていくため、最初の段階で各工程の工数を割り振ることができるからです。そのため、顧客にも何日までにシステムを提出するか提示できますし、納期が守れなくなる可能性も下げることが可能です。
メリット2.予算を確保しやすい
ウォーターフォール開発は予算を確保しやすいのも特徴です。各工程の工数を割り振ることができれば、どの程度の人材が必要かどうか自ずと明らかになるからです。もしエンジニアの数が足りないと分かれば、事前に人材を募集したり下請け企業に開発を依頼することができ、それらにかかる予算も算出することが可能です。
デメリット1.仕様変更への柔軟性が低い
ウォーターフォール開発は仕様変更への柔軟性が低いのが難点です。開発段階で顧客から仕様変更を求められた場合、要件定義から再度やり直さなくてはいけません。ウォーターフォールでは各工程の終了時に、これで問題がないかじっくりと確認します。そのため、仕様変更が起こった際に効率が悪くなってしまいます。
仕様変更が多い開発とはウォーターフォールは相性が悪いです。たとえばWebアプリ開発などはユーザーの要望に基づき何度も改良を重ねる必要があるため、ウォーターフォールでは上手くいかないことも多いです。
デメリット2.開発期間が長くなりやすい
ウォーターフォール開発は開発期間が長くなりやすいのも難点です。1つ1つの工程を丁寧に行うため、開発期間を長めに見積もる必要があります。スピーディーな開発が求められるシステムにもウォーターフォールは適していないと言われています。
アジャイル開発とは?
アジャイル開発とは要件定義から運用・保守までを短いスパンで何度も繰り返す開発手法です。1巡する度にシステムを顧客に確認してもらい、改善点を聞き出した後に再度要件定義から行います。何度も繰り返すことで完成度を高めていくやり方と言えます。アジャイル開発には次のメリット・デメリットがあります。
メリット1.仕様変更に対応しやすい
アジャイル開発の特徴は仕様変更に対応しやすいことです。要件定義から運用・保守まで1巡するペースが速いため、万が一開発途中で顧客から仕様変更を要求されたとしても、少し前に戻ってやり直すだけで済むことが多いです。
そのため、アジャイル開発の場合顧客の意見をシステムに反映しやすくなり、顧客満足度を上げられるメリットがあります。仕様変更に対応しやすくするというのが、アジャイル開発の主要な目的です。
メリット2.場合によっては開発期間を短くできる
アジャイル開発なら場合によっては開発期間を短くすることが可能です。アジャイル開発では要件定義から運用・保守まで短い期間で行い顧客からチェックをもらいます。もし1巡目で顧客からこれで問題ないと言われた場合、ウォーターフォールよりも大幅に開発期間が短くなります。実際は1巡目で終わることはほとんどないのですが、状況に応じて開発期間を短くもできるというのは大きなメリットと言えます。
デメリット1.納期や予算の見通しが立てにくい
アジャイル開発は納期や予算の見通しを立てにくいのが難点です。必要に応じて何度も開発を繰り返す手法のため、いつシステムをリリースできるか最初の段階では分かりません。また、システム開発にかかる予算も予想することが難しいです。場合によっては予算がかかりすぎてしまうこともあります。
デメリット2.システムの方向性が定まらなくなることも
アジャイル開発は何度も修正を繰り返すため、システムの方向性がブレてしまうこともあります。方向性がブレてしまうと、予算もかかってしまいますしエンジニアの負担も大きくなります。アジャイル開発といえども、極端に修正を繰り返すのは良くない場合が多いでしょう。
システム開発の工程を知りエンジニアへの転職を目指そう
本記事ではシステム開発の工程について解説しました。どのような流れでシステムは開発されているのかお分かりいただけたかと思います。決められた工程に従って開発を進めることで、開発期間中に問題が発生することをなるべく防ぐようにしています。
エンジニアを目指す方やIT関連の資格獲得を目指す方は、システム開発の工程について覚えておくことが重要です。本記事がエンジニアを目指す方にとって有意義なものとなれば幸いです。
編集部オススメコンテンツ
アンドエンジニアへの取材依頼、情報提供などはこちらから