更新日:2023/04/05
この記事のまとめ
ITシステムの開発は、複数の工程に分けて行われます。ITエンジニアへの転職を目指す場合は、それぞれの工程で何をするのかを把握しておくことが大切です。
この記事では、ITシステムの開発工程について詳しく解説します。また、ITシステム開発でよく用いられるウォーターフォール型とアジャイル型の特徴についても紹介しているため、ぜひ参考にしてください。
目次
開発工程とは要件定義や設計などITシステムを開発するうえで必要なプロセスのことで、大きく10工程に分けられます。ひとつのシステムを開発するために工程を細かく分けるのは、システムの進捗・品質の管理をしやすくし、計画どおりに開発を進めるためです。ここでは、ITシステムを開発する際にそれぞれの工程でどのようなことを行うのかについて解説します。
システム開発における要件定義は、クライアントの要望をヒアリングして条件を整理する工程です。具体的には「開発目的」「ターゲット」「予算・納期」「必要な手順」などを明確にします。要件定義をきちんと行わないと、クライアントの要望がシステムに落とし込めていないといった事態に陥りかねず、トラブルにつながりかねません。円滑に開発を進めるためにも、要件定義の段階でクライアントの要望を引き出すことが重要です。
基本設計は要件定義書に記載された「搭載すべき機能」「レイアウト」「セキュリティ機能」など、システムの大枠を設計する工程です。「この画面では何をするのか」「表示するデータは何か」などのポイントを明らかにしていきます。
基本設計はクライアントとシステム開発の方向性をすり合わせる最終段階であるケースが多く、双方の認識のズレを防ぐために重要です。
詳細設計は基本設計で明確にした「システムに必要な機能」をどのように実装するのか、指示書となる設計図を作成する工程です。プログラマーはこの指示書に基づいてプログラミングを行います。前述した基本設計はクライアント向けであることから「外部設計」、詳細設計はITエンジニア向けであることから「内部設計」とも呼ばれます。
プログラマーがスムーズに作業を進められるよう、曖昧な表現を避けた分かりやすい指示書の作成が大事です。
プログラミングとは実際にプログラムを作る作業、すなわちコンピューターに処理や動作を指示することです。詳細設計に基づき、プログラマーがプログラミング言語を使って指示していきます。プログラミングをすることで、膨大な情報を高速で処理することが可能です。開発するシステムによって使用するプログラミング言語は異なるため、ITエンジニアは開発に必要な言語を覚える必要があります。
単体テストとは、プログラムを構成する小さな単位(ユニット)が正しく動作しているかを確認するテストのことです。ユニットテストと呼ばれることもあり、関数やメソッドの単位で実施されます。詳細設計で作成した単体テスト仕様書に基づいて行います。
小さな単位でテストを実施することで不具合や修正が容易にでき、その後の行程もスムーズに行えるのがメリットです。
結合テストは単体テストで動作確認したモジュールを組み合わせ、正しく連携するかを確認するテストです。単体テストをクリアしたモジュール同士でも、いざ連携させてみるとデータのやり取りに問題が発生する可能性があります。そういった単体テストでは分からない部分をテストし、品質向上を図るのが狙いです。
システムテストはシステム全体の動作が正常かどうかを確認するテストで、総合テストとも呼ばれます。結合テストをクリアした機能をすべて組み合わせ、「要件定義の内容に沿っているか」「運用・保守が可能か」「不正利用や不正アクセスなどのセキュリティ対策が万全か」などを評価していきます。
運用テストは完成したシステムに不具合がないかをチェックするテストの最終工程です。業務の流れに沿ってテストし、実際の稼働状況において不具合が発生しないかどうかを確認します。運用テストはクライアント側の運用部門が行うケースも多く、システムの使い方や運用を学ぶための場でもあります。
システム移行とは、旧システムから新たに開発したシステムへ移行する作業のことです。人員配置や作業工程、配置図などをまとめた移行手順書を作成してから行われるケースが一般的です。実際の業務に支障をきたさないよう、営業時間外で一斉に移行するほか、段階的に移行する場合もあります。
システムの運用・保守は、開発したシステムが安定して稼働するように監視業務や調整を行うことです。具体的に運用管理は「システムの状態監視」「外部からの不正アクセス監視」「定期的なバックアップ」など、日々の業務を円滑に進める作業を行います。
一方の保守はシステムの改修や調整、修理をする作業がメインです。運用管理はルーティン業務が多いのに対し、保守は突発的な業務が多い点が特徴として挙げられます。
ITシステムの開発工程には、ウォーターフォール型・アジャイル型の大きく2種類の流れがあります。それぞれ開発におけるスピード感やメリット・デメリットが異なるため、ITエンジニアを目指す方は押さえておきましょう。ここでは、それぞれの特徴について解説します。
ウォーターフォールとは「滝」を意味する言葉で、その名のとおりプロジェクトの企画から開発までの流れを上流工程から下流工程へと順に進めていく開発手法です。ひとつひとつの工程を終わらせてから次の工程へと進むスタンダードな開発手法といえます。基本的に工程をスキップすることはありませんが、前後の工程を反復するケースもあります。
アジャイル型は計画から設計、実装、テストにいたるまでの開発工程を小さいサイクルで繰り返す開発手法です。アジャイルという言葉は直訳すると「素早い」「機敏な」という意味で、従来の開発手法と比べると開発期間が短縮される特徴があります。優先度の高い要件から順に開発を進めていくため、仕様変更に強い柔軟な開発手法といえるでしょう。
ウォーターフォール型とアジャイル型にはそれぞれ特徴があり、一概にどの開発手法が優れているとはいえません。開発する対象や目的などに合わせて使い分けることが大切です。ここでは、ウォーターフォール型のメリット・デメリット、向いているプロジェクトについて解説します。
ウォーターフォール型のメリットとして、主に以下の4点が挙げられます。
ウォーターフォール型はほかの手法と比べて構造がシンプルであり、未完の工程・作業が取り残されるリスクも低くなります。そのため、プロジェクト完了時の品質や洗練度が高くなる点が特徴です。
ウォーターフォール型のデメリットには、主に以下の4点があります。
ウォーターフォール型の特性上、上流工程から下流工程に向けて作業を進めていくため柔軟性は低いといえます。顧客の意見を反映したり、前の工程に戻ったりすることは原則ありません。
ウォーターフォール型は上流工程から下流工程までじっくりと開発を進める手法であるため、開発期間が長く、高い品質が求められる大規模なプロジェクトに向いています。一方で柔軟性は低いため、市場やニーズの変化が多く、開発期間の短いプロジェクトには向いていません。
従来のシステム開発ではウォーターフォール型が主流でしたが、ニーズの変化が激しい現代ではアジャイル型が注目されています。アジャイル型はウォーターフォール型とはメリット・デメリットが大きく異なるため、ここできちんと押さえておきましょう。
アジャイル型のメリットとして、主に以下の4点が挙げられます。
アジャイル型は開発工程を小さな単位で分けて実装とテストを繰り返すことから、不具合が発生してもすぐに前の工程に戻って修正できます。ウォーターフォール型よりも柔軟性があり、クライアントのニーズに対応しやすい点が大きなメリットです。
アジャイル型のデメリットとしては、主に以下の2点が挙げられます。
アジャイル型は企画段階でシステム開発の方向性や大まかな機能を決め、都度要件を追加したり変更したりする開発手法です。柔軟性には長けているものの、開発の方向性がぶれやすい点がデメリットとして挙げられます。
また、計画を明確に定めず、小さな単位で開発を繰り返すことから進捗状況やスケジュールを把握しにくいところもデメリットです。方向性やスケジュールなど、全体をコントロールしながら開発を進めていく必要があります。
アジャイル型はクライアントのニーズや仕様変更に柔軟に対応したい場合のプロジェクトに適しています。企画段階でシステムの全体像が見えていない場合も、プロジェクトを進めながら固めていくことが可能です。ウォーターフォール型よりも開発期間を短縮できるため、短い納期でシステム開発が必要な場合にも向いているでしょう。
ITシステムの開発工程では「RD」「BD」などの略称が用いられます。RDは「Requirement Definition」の略で要件定義、BDは「Basic Design」の略で基本設計を意味します。そのほか、「FD(Function Design・機能設計)」や「UT(Unit Test・単体テスト)」など多くの略称があるため、システム開発の現場でスムーズにコミュニケーションが取れるよう覚えておくとよいでしょう。
ITシステムの開発には大きく分けて10工程あります。「ウォーターフォール型」「アジャイル型」の2種類の開発手法が使われることが多く、それぞれ向いているプロジェクトは異なります。ITエンジニアへ転職する場合は、各工程や開発手法について押さえておくとよいでしょう。
ITエンジニアの転職をサポートしてほしい方は、ぜひマイナビITエージェントにご相談ください。IT業界の求人を多く扱っているため、最適な求人をご紹介できます。また、応募書類の添削や面接対策など、転職成功に向けてきめ細かくサポートいたします。
関連記事:マイナビITエージェント
IT業界
Webエンジニアに将来性はない?AI発展の3つの影響と生き残るための戦略
IT業界
ネットワークエンジニアの将来性は?需要が高まる理由と必須のスキル
IT業界
システムエンジニアを辞めたい4つの理由と辞める前に確認したいこと