こんにちは、エンジニアデータバンクです。
昨今DX(デジタルトランスフォーメーション)の推進に伴い、多くの企業がIT人材の確保に追われています。
IPA(独立行政法人 情報処理推進機構)が2023年2月に発表した「DX白書2023」によると、DXを推進している企業のうち約9割がDXを推進する人材が「やや不足している」または「大幅に不足している」と回答しています。
IT人材が不足しているからこそ、プロであるITエンジニアとしてデビューしようとかんがえている方も多いのではないでしょうか。
ここで気になるのが、「実際のシステム開発では、どのように仕事を進めているのだろうか?」ということです。
そこでこの記事では、システム開発工程の基本を徹底解説していきます。
代表的な開発手法である「ウェーターフォール」と「アジャイル」の違いについても解説していくので、ぜひ参考にしてみてください。
それでは解説していきます。
システム開発工程は、プロジェクトを段階的かつ体系的に進めるための枠組みです。
個人でプログラミングを学んだり、自分だけでアプリ開発をする場合にはあまり気にする必要がありませんが、企業でのシステム開発では、複数の人が関わります。
システム開発では、開発チームが協力して効率的に進めるための手順やプロセスがあります。
これらの手順に沿って開発を進めることで、ミスの最小化や効率の向上が図られます。
開発手法としては、大きく分けて以下の2つに分かれます。
それぞれについて詳しく解説していきます。
ウォーターフォール開発は古典的なソフトウェア開発の手法の一つで、日本におけるソフトウェア開発の開発工程として最も採用されている開発手法です。
ウォーターフォール、すなわち「滝」のように、流れるように開発を進めます。
ウォーターフォール開発は、開発を始める前に「何を作るのかを明確化」した上で開発をスタートさせます。
プロジェクトで開発する範囲を確定させ、コストや作業内容をプロジェクトの開始時点で決定させ、その計画に基づいて作業を進めます。
プロジェクトの初期段階で作成する成果物(プログラムや資料)をはっきりさせ、それに基づいて作業を行うため、大人数のプロジェクトにおいても計画が立てやすく、プロジェクトの進捗が把握しやすいというメリットを持ちます。
ウォーターフォール開発は、主に2つのデメリットを持ちます。
▪️ 柔軟性がない
ウォーターフォールはしっかりとやることを決めて取り掛かるため観測しやすいというメリットを持つ一方で、「一切の柔軟性を持たない」というデメリットを持ちます。
ウォーターフォール開発では、スケジュールを重視するため「一度決めた仕様は変更しない」のが原則です。
もし、あとから仕様の変更が必要になった場合には「仕様変更」として対処する必要があるため、仕様を決める設計は非常に慎重に実施する必要があります。
▪️ 完成までに時間がかかる
ウォーターフォール開発では、短くても半年程度、長いと数年にわたってプロジェクトを進めます。
また、「すべての機能ができあがってから利用を開始する」ため、開発を決定してからユーザーが利用するまで長い時間がかかることがほとんどです。
そのため、ウォーターフォール開発をする場合には利用開始までの長いスパンで綿密な計画を策定する必要があるのです。
ウォーターフォール開発のデメリットを解消するため、様々な開発手法が登場しています。
ここでは、いくつかの手法を紹介します。
スパイラル開発では、開発対象をいくつかのパートに分けて、要件定義~テストまでのフェーズを繰り返します。
分割してウォーターフォール開発を進めていき、螺旋のようにすこしずつシステムが大きくなることからこの名前が付けられました。
ウォーターフォール開発と異なり分割して開発を進めるため、一部機能が出来上がった時点でユーザーに公開することで、ウォーターフォール開発の「遅さ」を解消できます。
プロトタイプ開発は、大規模なウォーターフォール開発を始める前に試作品(プロトタイプ)を開発して評価したうえで本開発を進める手法です。
先にある程度会製品のイメージを作るため顧客が完成像を想像しやすくなり、開発が進んだ段階で「こんなはずじゃなかった」と言われることを防ぐことが期待できます。
一方で、顧客から細かい追加注文が発生する可能性もあるため、最終的なコストが大きくなるというリスクを持ちます。
アジャイル開発は、ソフトウェア開発の手法の一つで、柔軟性と速度を重視し、短い開発サイクル(通常は1〜4週間)を繰り返します。このサイクルを「スプリント」と呼びます。
スプリントの中で定期的に製品のプロトタイプや部分的な製品を開発し、ユーザーのフィードバックを取り入れながら開発を進める手法です。
「開発しながらソフトウェアを育てる」と考えると良いでしょう。
ウォーターフォール開発と異なり、アジャイル開発ではスプリントごとに開発する内容を決定し、柔軟に仕様を変更しながらソフトウェアの開発を継続します。
アジャイル開発の最大のメリットはその適応性です。
プロジェクトが進行する中で要件が変更されても柔軟に対応できるため、常に市場のニーズに合った製品を提供することが可能です。
そのため、アジャイル開発は市場の変動が激しいBtoCの領域で真価を発揮します。
また、顧客とのコミュニケーションが頻繁に行われるため、顧客の満足度が高く、より効果的な製品を市場に提供することも可能です。
アジャイル開発のデメリットとして挙げられるのが、「計画の不確実性」です。
開発対象のスコープが頻繁に変更されるため、プロジェクトの最終的なコストや納期が予測しにくくなることがあります。
また、アジャイル開発はスプリントごとに仕様を確認することが必要であるため、ビジネス部門や顧客との対話が常に必要です。
開発者以外にもコストがかかってしまうのは、ビジネスにおいてはデメリットとも言えるでしょう。
実は、「アジャイル開発」という単語自体は概念的なものであり、実際にはいくつかの手法が存在します。
ここでは、有名なアジャイル開発の手法を紹介します。
いずれもアジャイル開発の流れをくみ取った開発手法ですが、実際の進め方が異なります。
アジャイル開発を採用する場合には、メンバーの特性やプロジェクトの方向性に応じて適切な開発手法を選択しましょう。
ウォーターフォールとアジャイル開発の大きな違いは、「どこまで仕様を決めた上で進めるか」という点です。
以下に項目ごとの違いを一覧にしました。
| ウォーターフォール開発 | アジャイル開発 | |
|---|---|---|
| 開発進行 | 段階的 | 反復的 |
| 変更の柔軟性 | 変更は困難 | 変更は容易 |
| 文書化 | 文章重視 | コミュニケーション重視 |
| チーム構成 | 専門化されたチーム | 多機能なチーム |
| 顧客との関わり | 開発中の関わりは少ない | 頻繁な顧客との関わりが生じる |
| リリース頻度 | 長期間の開発サイクル | 短い開発サイクル |
プロジェクトの進め方が大きく異なるので、開発するシステムの特性や計画に応じて適切な開発手法を選択する必要があります。
2010年代まではシステム開発といえばウォーターフォール開発が主流でしたが、DXの推進に伴いアジャイル開発を採用する企業が増えてきています。
実は、DXの推進の中でも重要なファクターのひとつが「社会の変化に柔軟に対応できること」です。
DXの推進に伴い、世の中の変化がさらに加速する可能性も否定できません。
一般向けのアプリを開発するとなった場合、ウォーターフォール開発では開発が終わるころには世の中のトレンドが変わっていた、という可能性も否定できません。
そのため、常にトレンドを負う必要があるようなサービスにおいては、アジャイル開発が採用されるようになっています。
ウォーターフォール開発もアジャイル開発もメリットとデメリットがあるため、プロジェクトや開発するソフトウェアの特性に応じて最適な開発手法を選択する必要があります。
ここでは、どのようなプロジェクトにどの開発手法が向いているのかを紹介します。
ウォーターフォール開発は、大規模かつ変化の少ないプロジェクトに向いています。
特に、仕様の変更可能性が低いプロジェクトであれば、ウォーターフォール開発が向いています。
アジャイル開発は、ユーザーからのフィードバックが売上に直結するようなソフトウェアの開発に向いており、常に変化が求められる場合にピッタリです。
開発手法を学ぶ上で、様々な単語が頻出します。
特に、工程や成果物を2文字の略語で表現する場合があります。
開発現場に参画すると、会議でいきなり略語が飛び交うこともしばしば見受けられますので、事前にある程度の知識を身に着けておくとスムーズに仕事をスタートできるでしょう。
特にウォーターフォール開発においては、以下の略語を各種ドキュメントでよく目にすることになります。
同じ意味でも、企業やプロジェクトによって略語が変わることがありますので注意しましょう。
| 全文 | 意味 | |
|---|---|---|
| SP | System Planning | システムの規格 |
| SA | System Architecture Design System Analyze など | 要求分析 |
| RD | Required Definition | 要件定義 |
| UI | User Interface | 画面設計 |
| BD | Basic Design | 基本設計 |
| SS | System Structure Design | 構造設計、詳細設計 |
| DD | Detail Design | 詳細設計 |
| PS | Program Structure Design | |
| FD | Function Design | 機能設計 |
| PG | Programming | プログラム工程・製造 |
| M | Manufacture | |
| CD | Coding | |
| UT | Unit Test | 単体テスト |
| PT | Parts Test | |
| IT | Integration Test | 結合テスト |
| ST | System Test | システムテスト |
| OT | Operation Test | 運用テスト |
| UAT | User Acceptance Test | 受入テスト |
以上、システム開発工程の基本について解説してきました。
2024年現在、企業のDX推進の波を受けて、ITエンジニアの需要は増加しています。
システム開発プロジェクトに携わりたい、年収をアップしたい、という方はぜひエンジニアとしての転職を目指してみても良いのではないでしょうか。
ITエンジニアの転職や独立をお考えの方には、エンジニアデータバンクがおすすめです。
エンジニアデータバンクには、副業案件からフリーランス、転職求人が多数掲載されています。
エンジニアデータバンク