FEnet未経験コラム
エンジニアを目指す方向けのブログメディア

ITシステム開発の主な工程|ウォーターフォールモデルについても解説

2021年06月10日

ITシステム開発の工程とは?


料理の作り方にレシピがあるのと同様に、システムやアプリケーションの作る際にも予め決まった作り方が存在しています。

出た課題を解決してそれぞれの工程をしっかりこなした後でないと、基本的には次の段階の工程に進んではいけません。

もし工程を1つでもいい加減に進めてしまうと、後の工程で苦労したり、質の悪い製品しか作れなくなってしまいます。

ITシステム開発の工程の重要性


ITシステムの工程は、お客様が満足して使える高い品質と予めお客様と合意した商品の納品日を守る為に存在します。

ITシステムもお客様が存在してこそ成り立つ商品なのでなるべくユーザー満足度の高い物に仕上げなければなりませんし、自分自身もお客様も、そのシステムにかけられるお金と人員は有限なので、締め切りを守る必要があります。

ITシステム開発の工程モデルとは?


お客様のビジネスモデルや予算、開発するシステムの種類によって、複数存在するITシステムの工程モデルから、適切な物を選択しなければなりません。

短い期間で要件定義やコーディング、テストを繰り返すアジャイル開発が適切なのか、それとも上流の工程から下流の工程に後戻りせずに進めていくウォーターフォール開発が適切なのかはプロジェクトによって異なり、決定するに当たって綿密な調査と打ち合わせが必要です。

アジャイル開発モデルについて

アジャイルとは素早い、と言う意味で、アジャイル開発は開発スピードの早さが売りのITシステムの開発工程のモデルです。

アジャイル開発には決まった形は無く、兎に角成果物が欲しい時やとりあえずアイデアを早く具現化したい時に採用されます。

また携帯電話会社のホームページやECサイトのように、一度作ったら終わりではなく、絶えず機能の追加や改善が行われるようなプロジェクトでも採用されることの多いITシステムの開発工程のモデルです。

ウォーターフォールモデルについて

ウォーターフォールモデルは上の工程から下の工程へ流れるように進めていく開発モデルで、基本的に後戻りはしません。

事前に計画が立てやすいため、品質やコストの予想の正確性が高くなる、というメリットを持っています。

また進捗状況の管理も簡単になるので、顧客への途中報告やアクシデントの対応もしやすい物になります。

ITシステム開発の主な10の工程


ITシステム開発には全部で10つの工程が存在し、特にウォーターフォール開発ではどれも飛ばす事はできません。

工程によっては必要なスキルや知識が異なり、例えば要件定義や基本設計等の上流の工程は経験豊富なエンジニア、または知識の量が豊富なエンジニアが担当する事の多い工程です。

逆にコーディングや保守運用などの下流の工程はIT業界の経験が少ないエンジニアが主に担当する工程です。

プロジェクトの種類によってはウォーターフォール開発を採用した場合でも、1人のITエンジニアが複数の工程を担当する事もあります。

1:要件・要求定義について

要件・要求定義はITシステム開発の工程においてはじめに取り組むべき工程で、システム開発の経験が豊富なエンジニアが担当する事が多い工程です。

新しく開発するシステムにどんな機能を盛り込むかを、予算や開発期間と照らし合わせながら顧客と折衝する工程です。

完成品の出来栄えが双方満足できる物にするためにも、この工程でしっかりとお互いの認識をあわせる必要があります。

2:内部設計について

内部設計は、開発したい機能を「どのようにしてプログラミングで実現するか」を定義する工程です。

プログラミングの知識は勿論の事、高い論理的な思考能力やコミュニケーション能力も必要とする工程です。

またWebアプリケーションを開発する場合はOSやクラウドの知識もあると、更に仕事をスムーズに進める事ができるでしょう。

3:外部設計について

外部設計は要件・要求定義で顧客と決めた物を基にして、ユーザーインターフェースを決定する工程です。

どんなページの画面を何枚用意するか等、よりユーザー側の視点から見た設計をこの工程で実施します。

視覚的にシステムを理解できる事から、プロジェクトによっては要求・要件定義と一緒に進める事も多い工程です。

4:プログラミングについて

外部設計と内部設計によって機能の実現方法を明確にした後、プログラミングによって機能を実現させます。

勿論プログラミングの知識は必須の工程で、JavaやC等のサーバーサイドの言語以外にもSQL等のDBの操作言語やHTMLやJavaScriptのようなフロントサイドの言語の知識も必要です。

また、不明点やわからない事を明確にするコミュニケーション能力が無いと、どんなに良い内部設計や外部設計を実施したとしても質の悪い製品しか提供できません。

5:単体テストについて

単体テストはモジュールごとにテストし、要求・要件定義で決定した機能に沿っているかを確認する工程です。

もし要求・要件定義で決定した基準に満たない機能しかない場合はやり直しとなり、プログラミングの段階からやり直さなければなりません。

IT業界での経験が浅いエンジニアが担当する事が多い工程ですが、プログラミングの知識があればスムーズに仕事を進める事ができますし、任せて貰える仕事の幅も広がります。

6:結合テストについて

単体テストが合格した複数の機能を使い、各機能間が上手く連携されているかを確認する結合テストを単体テストの後に実施する必要があります。

単体テストが合格しても、変数の型や名前、メソッド名やクラス名が各モジュール間で異なると上手く連携が取れなくなります。

ITシステムは全ての機能が基準を満たしてようやく完成するので、各モジュール間の連携は必ず確かめる必要があります。

7:システム総合テストについて

単体テストと結合テストが完了した後は全てのシステムを繋げ、本当にそのシステムが要求・要件定義で決定した基準を満たしているかを確認する必要があり、それがシステム総合テストです。

エラーが無いかだけでなく処理システムの早さやアクセスの耐久性等、よりユーザー視点でそのシステムを評価する工程です。

8:運用テストについて

運用テストは、開発したシステムが実際の業務で耐えられるかを確認するためのテストで、より実用性に重点を置いたテストです。

単体テストや結合テスト等と比較すると、テスト項目1つ当たりに費やすべき時間が大きくなる傾向があり、自社のITエンジニアだけではなく時には顧客側の協力も必要になる工程です。

9:システムリリースについて

実際に業務環境に取り入れられるかを調べて取り入れる作業をシステムリリースと呼び、ここまで実施してプロジェクトは一区切りです。

システムリリースにも複数の種類があり、一気に切り替えるかそれとも徐々に切り替えるかを事前に決め、実行する必要があります。

また、システムリリースに失敗した時はどの段階まで戻すかなども決める必要があるので、ITの知識だけでなく顧客側の企業の業務に関する深い理解も必要になります。

10:システム運用・保守について

WebアプリケーションやWebシステム等はシステムリリースが終わった後も作成した物をより良くするためのシステム運用・保守という作業が必要です。

処理速度を上げるといった要望から、新たな機能を追加したりと言った要望に応え、それを実現する必要があります。

ITシステムの開発の経験が短く、これから本格的にITシステム開発の工程を担当しようとしているエンジニアは、この工程の現場を担当する事が多いです。

ITシステム開発におけるラボ型開発とは?


ITシステム開発におけるラボ型開発とは、ある一定の長期間、専用の開発チームを編成してITシステム開発を行う形式の契約形態です。

より優秀なITエンジニアを保有できるなどの大きなメリットがあるため、注目されている開発手法です。

ラボ型開発は単純に開発を請け負うだけでなく、開発の修正も行うので、業務量は早々に多い物になります。

ITシステム開発でラボ型開発を導入する利点5つ


ITシステム開発においてラボ型開発は一般的なオフショア開発と比べてリスクやコストを抑える事ができたり、優秀なITエンジニアを長く保有できる、等のメリットがあります。

勿論メリットだけでなく、開発チームの編成に時間と手間がかかる等のデメリットも存在するので、プロジェクトの状況や種類によってラボ型開発を採用するか否かを考慮する必要があります。

1:優れたエンジニアを保有できる

優れたITエンジニアは需要が高く、どのように発掘して長期保有するかは多くのIT企業が頭を悩ませていますが、ラボ型エンジニアは一般的なオフショア開発よりも優れたITエンジニアを保有しやすいです。

特にAIエンジニアは需要が高く、国内のAIエンジニアだけでなく国外のAIエンジニアもIT企業の間で高い人気を誇っています。

2:技術を蓄えることができる

ラボ型開発は優れたITエンジニアを長期間保有しやすいので、その分優れた技術ノウハウを蓄えやすいです。

優れた技術ノウハウを多く蓄積し、更にそれを優れたITエンジニアが精査し洗練させていく事で、ITシステムの開発スピードと品質の両方のアップを同時に実現させる事ができます。

3:自由にエンジニアを管理できる

ラボ型開発は低いコストで海外の優秀なITエンジニアを多く採用できるので、自由にエンジニアを管理する事ができます。

1人当たりの人件費が低いためエンジニアの採用に関する自由度が高く、急に新しい分野の技術が必要になった時も比較的に簡単にITエンジニアを採用し、仕事をしてもらう事ができます。

4:開発費用を抑えることができる

ラボ型開発は海外のITエンジニアを安く雇う事で、開発費用の1つである人件費を大きく削減する事ができるでしょう。

日本と同じアジア圏のミャンマーやタイ、インドでしたら日本と比べて大幅に安い値段でITエンジニアを迎え入れる事ができるようです。

5:リスクを回避することができる

本来固定費である人件費を、ラボ型開発では変動費にする事ができるので、その分リスクを回避しやすくなります。

もしも劣悪なエンジニアを雇用してしまっても短期間で退場させ、新たに人員を募集する等の柔軟な対応を取る事ができますし、元々の人件費が安いので企業側が被るリスク自体が小さいです。

IT開発の工程を理解して実際の業務に活かそう


システム開発は予め決められた物に従って工程を進めていくので、管理職かプレイヤーかを問わずIT開発の工程に関わる知識は必要になるでしょう。

IT企業に就職する際もどんな開発モデルを採用しているか尋ねることにより、採用担当者にも自らの知識をアピールする事ができるでしょう。

IT開発の工程をきちんと理解して、実際の業務に活かしていきましょう。


FEnetではエンジニアへキャリアアップを目指す方向けに研修制度をご用意しています。研修一覧をご覧ください。

転職相談もお気軽受け付けておりますのでご気軽にご応募ください。

エントリー(応募フォーム)