
- 1.システム開発の主な工程9ステップ
- 2.代表的なシステム開発の手法
- 3.ウォーターフォールモデルのメリット・デメリット
- 4.アジャイルモデルのメリット・デメリット
- 5.システム開発工程で使われる用語・略語
- 6.システム開発工程で気を付けるポイント
- 7.まとめ
\15年超の実績を持つレバテックが運営/
\15年超の実績を持つレバテックが運営/
1.システム開発の主な工程9ステップ
システム開発工程とは、システムを開発するために決められた手順のことです。プロジェクトの規模や期間によってどのような開発手法を採用するかは異なりますが、基本的な開発工程を9つのステップに分けて解説します。
1.要件定義
システム開発ではじめに行われる工程が「要件定義」です。要件定義とは、簡単に言うと「そのシステム開発で何を作るのかを決める」ことを指します。
自社開発であれ受託開発であれ、システムを開発する場合は必ず「成し遂げたいこと」が存在します。たとえば、製造業向けのシステム開発であれば「原料や製品の在庫数をリアルタイムに把握し、経営を安定させたい」といった目標が「成し遂げたいこと」になります。
このような目標に対して、システムでどのように課題解決をするのか決めるのが要件定義の目的です。受託開発の場合、クライアントがどのような要望や課題を持っているのかをしっかりヒアリングしたうえで、要件定義に落とし込むことが重要なポイントとなります。
\15年超の実績を持つレバテックが運営/
\15年超の実績を持つレバテックが運営/
2.基本設計
要件定義で定めたシステムの理想形に対して、具体的に「どのようなものを作るか」を決めていくのが基本設計工程になります。「在庫数をカウントする機能」なのか、「画面上にアラートを表示する機能」なのか、成し遂げたい目標に対してどんな機能があれば十分かを整理し、クライアントとイメージをすり合わせていきます。
基本設計のゴールは、クライアントにシステムの完成イメージを提示して、納得してもらうことです。そのため、基本設計のフェーズでは、クライアントに伝わりやすいドキュメントを作成する能力が求められます。
3.詳細設計
詳細設計工程では、基本設計で定めたシステムの機能を「どのように実装していくか」を決めていきます。プログラミングしていく内容を決めていく作業であり、クライアントからは見えない部分の設計であることから「内部設計」とも呼ばれます。
詳細設計のフェーズで重要なのは、ドキュメントから曖昧さを排除することです。詳細設計が曖昧だと、プログラムも曖昧なものになり、「Aのケースでは正確な答えが出るけどBのケースだと間違った答えが出る」といったミスを引き起こすことになります。
詳細設計工程でいかに正確に、細かい部分まで詰めていけるかがシステム開発のキモになるともいえるでしょう。
\15年超の実績を持つレバテックが運営/
\15年超の実績を持つレバテックが運営/
4.開発(プログラミング)
ここまで来てやっと開発に入っていきます。IT業界やシステム開発の仕事と聞くと「プログラミング」を想像する人が多いかもしれませんが、実際はプログラミングは数あるシステム開発の工程の1つに過ぎません。
いわゆる「プログラマー」の仕事としては、システム開発におけるこの工程が主な範囲となります。
5.単体テスト
プログラミングが終わると、単体テストの工程に入ります。単体テストとは、作成されたプログラムが詳細設計通りに動くことをプログラム単体で確認する作業です。プログラムを書いた人がそのまま担当することもあります。
単体テストで問題が見つかれば、その場でプログラムを修正するケースも少なくありません。ここで重要なのは、「どのようなケースでどのようなバグが見つかり、どのような修正をしたのか」をドキュメントに残しておくことです。
\15年超の実績を持つレバテックが運営/
\15年超の実績を持つレバテックが運営/
6.結合テスト
単体テストが終わり、システムに関わるプログラムがある程度出そろうと、結合テストの工程に移行します。複数のプログラムを組み合わせ(結合)、問題なく動くかを確認するためのテストです。
結合テストでは、単体テストでは見えなかった不具合が見えてきます。たとえば、「とある処理の実施に時間がかかりすぎ、次の処理がタイムアウトエラーになってしまう」といったことが挙げられます。
どんなに優秀なエンジニアであっても、人の手でプログラムを組む以上必ずバグは発生します。重要なのはバグを発生させないことではなく、テスト工程でバグを洗い出して一つ一つ修正していくことです。
7.運用テスト
結合テストが終わると、続いては運用テストです。システムが実際に使われる現場に運び、実際に使われるサーバーを稼働し、実際の画面で使ってみます。結合テストまでの工程を「システムテスト」、運用テストを「ユーザーテスト」と呼ぶ場合もあります。
いきなり運用して思わぬ事態が発生すると大変なことになってしまうため、最終確認を実施しておくというイメージです。
結合テストで問題点を洗い出して修正したと思っていても、実際に運用する手順に沿って使ってみると思いもよらないバグが見つかるということもありますので、重要な工程です。
\15年超の実績を持つレバテックが運営/
\15年超の実績を持つレバテックが運営/
8.リリース
運用テストも問題なく済ませたら、いよいよリリースです。担当者にとっては緊張すると同時に、仕事にやっと一区切りがつく記念すべき日でもあります。
総合テスト・運用テストをしっかりと実施しておけば、基本的に問題が起こることはありません。それだけに、問題が起こったときは、リリースを中止して元のシステムに戻し、仕事に支障がでないようにしなくてはならないため大変です。そのため、リリース前には、リリースの手順とともに、緊急時の手順も用意しておきます。
9.運用・保守
リリースしたらシステム開発は終了と思われがちですが、この後も問題なくシステムが稼働するように運用・保守をする必要があります。
システムリリース直後は、クライアントから「●●機能を使うにはどうすれば?」という質問が出がちです。そういった疑問・質問に対し、サポートセンター的な役割を果たします。
また、システムを利用し続けていると、新たな問題が見つかることもあります。そのような場合に、小さな修正を加えてより使いやすくサポートすることも運用・保守の重要な役割です。
\15年超の実績を持つレバテックが運営/
\15年超の実績を持つレバテックが運営/
2.代表的なシステム開発の手法
システム開発でよく用いられる開発手法としては、「ウォーターフォールモデル」と「アジャイルモデル」の2つが一般的です。それぞれの開発手法がどのようなものなのか解説します。また、ほかにもいくつかシステム開発の手法があるため、あわせてご紹介しましょう。
ウォーターフォールモデル
ウォーターフォールモデルとは、要件定義⇒基本設計⇒(中略)⇒リリース⇒運用・保守と順を追って開発する方法です。
各工程を順に行うことで、やるべきことが明確になり、ミスやバグが発生しにくくなるというメリットがあります。
一方で、ウォーターフォールモデルを着実に実施することはそれなりに時間がかかります。詳細設計のフェーズに入ったにもかかわらず、「どうしても新たな機能を追加して欲しい」との要望を受ける場合があるためです。
この場合、影響が出る箇所すべてのドキュメントをチェックして、アップデートするのが正しいやり方です。しかし、実際にはそこまで手が回らないというケースも少なくありません。
着実に工程をこなすことでミスが発生しにくいというメリットがある代わりに、作業は大変になりがちというデメリットもあります。
アジャイルモデル
「アジャイル」は「素早い」「俊敏な」といった意味をもちます。ウォーターフォールモデルのように工程の順を追うのではなく、開発プロセスを複数の段階に分けて、機能ごとに開発を進めて小さなサイクルを繰り返していくのが特徴です。
比較的小規模で、スピーディーなシステム開発ができるため、ベンチャー企業やそこまで予算が大きくない開発プロジェクトで用いられやすい手法です。Webサイトやアプリなど近年のシステム開発ではウォーターフォールモデルよりもアジャイルモデルの方が主流といえるでしょう。
\15年超の実績を持つレバテックが運営/
\15年超の実績を持つレバテックが運営/
プロトタイプモデル
プロトタイプモデルは、クライアントに機能や開発の目的を聞いたうえで試作品を確認してもらい、その後で開発を始める手法です。クライアントとのすり合わせ後は、ウォーターフォールモデルの開発工程に移行します。
試作段階でクライアントからの意見を聞けるため、方向性のずれが生じにくいのがプロトタイプモデルのメリットです。
ただし、大規模なプロジェクトでは、プロトタイプを作成するだけで時間と費用がかかってしまいます。小規模なシステム開発に向くでしょう。
スパイラルモデル
スパイラルモデルは、要件定義からテストまでをフェーズ分けし、フェーズごとにプロトタイプを作成する開発手法です。
スパイラルモデルの特徴は、フェーズごとの開発をウォータフォールモデルで進めることです。作成したプロトタイプをクライアントに確認してもらい、修正箇所や要望があれば再び要件定義からテストの工程を繰り返します。クライアントとの認識のズレが発生しにくいのがメリットです。
ただし、フェーズ数が多く、作成するプロトタイプが多くなれば、その分開発期間や費用が多くなります。
\15年超の実績を持つレバテックが運営/
\15年超の実績を持つレバテックが運営/
3.ウォーターフォールモデルのメリット・デメリット
ここでは、ウォーターフォールモデルのメリットとデメリットをさらに紹介します。
メリット:スケジュール管理がしやすい
ウォーターフォールモデルの大きなメリットは、納期の見通しやスケジュールの管理がしやすいことです。
ウォーターフォールモデルでは、システム開発の工程を計画し、その内容を手順通りに進めます。そのため、作業前の段階で工数を割り振れ、工程ごとに納期を設定可能です。後戻りも少なく済むため、納期に遅れる危険性を下げられます。
ウォーターフォールモデルは、開発するシステムの内容が決まっており、納期や導入の時期が決まっているプロジェクトに向く方法です。
\15年超の実績を持つレバテックが運営/
\15年超の実績を持つレバテックが運営/
メリット:予算を確保しやすい
ウォーターフォールモデルでの開発は見通しが立てやすく、予算を確保しやすいのがメリット。工数を割り振ることで、どの作業に何人のエンジニアやプログラマーが必要になるかが分かるためです。
作業前に見通しが立つため、エンジニアやプログラマーの人員が不足していれば人材を募集したり、下請けに依頼したりできます。その際にも、どれ程度のコストがかかるかを算出できるため、開発に必要な予算を立ててから作業が始められるでしょう。
デメリット:開発に時間がかかる
ウォーターフォールモデルでの開発は、各工程を丁寧に作業し、工程が終わるごとに問題はないかを確認します。開発期間を長めに見積もるため、リリースまでに時間がかかります。
また、柔軟性が低いため、仕様が変更された際には大幅なスケジュール変更や予算の見直しをしなければなりません。ウォーターフォールモデルでは、作業の開始前に計画を立て、手順通りに開発を進めるため、仕様が変更になると計画からやり直しになります。素早い開発が求められるシステムや、利用者の声を受けて柔軟に軌道修正することが求められがちなtoC向けのプロダクトの開発には向かないでしょう。
\15年超の実績を持つレバテックが運営/
\15年超の実績を持つレバテックが運営/
4.アジャイルモデルのメリット・デメリット
続いて、アジャイルモデルのメリット・デメリットもご紹介します。
メリット:仕様の変更に対応しやすい
アジャイルモデルの大きなメリットは、仕様変更に柔軟に対応しやすいこと。要件定義や設計、運用・保守など一連の手順を工程ごとに時間をかけて作業するのではなく、一巡するペースが速いためです。
開発の途中でクライアントから仕様変更を要求されても、ウォーターフォールモデルのように計画からやり直さなくても良く、変更が出た工程に戻るだけで済みます。
そのため、アジャイルモデルでの開発はクライアントの意見を素早くシステムに反映させやすく、顧客満足度の向上にもつなげやすいと考えられます。
\15年超の実績を持つレバテックが運営/
\15年超の実績を持つレバテックが運営/
メリット:開発期間が短縮できる
アジャイルモデルでの開発では、工程が終わるたびに問題がないかをクライアントに確認し、要望や修正を加えながら工程を繰り返します。
そのため、数回の修正でクライアントから問題がないと言われた際には、ウォーターフォールモデルよりも短い開発期間でリリース可能です。
デメリット:納期の見通しが立てにくい
クライアントの要望に応じて問題個所の修正のために何度も開発を繰り返すため、納期の見通しが立てにくいのがデメリットです。リリースできる時期、システム開発にかかる予算の想定もしにくいでしょう。
また、何度も修正することで方向性にずれが生じ、大幅な変更が発生する可能性も。当初のコンセプトと大きな差が発生すると、開発期間が長くなり、予算がかかり過ぎてしまいます。
\15年超の実績を持つレバテックが運営/
\15年超の実績を持つレバテックが運営/
5.システム開発工程で使われる略語
システム開発では、多種多様な略語が使われています。略語を知っておけば、現場でのコミュニケーションが円滑になるでしょう。
よく使用される略語は、以下のとおりです。
「SP」…システム企画・企画
「RD」…要件定義
「CD」…コーディング
「PG」…プログラミング
「SA・RA」…要求分析
「UI・BD」…基本設計
「PS・DD」…詳細設計
「SS」…構造設計
「PD」…プログラム設計
「FD」…機能設計
「ED」…外部設計
「ID」…内部設計
「ST」…システムテスト
「UT」…単体テスト
「OT」…運用テスト
「IT・PT」…結合テスト
\15年超の実績を持つレバテックが運営/
\15年超の実績を持つレバテックが運営/
6.システム開発工程で気を付けるポイント
最後に、システム開発を成功させるうえで気を付けるべきポイントをいくつかご紹介します。
プロジェクトの目的や規模に応じた開発手法を選ぶ
先ほどもお伝えしたように、システム開発といってもさまざまな手法があります。手法によってメリット・デメリットがあり、一概に「●●モデルがよい」ということはありません。
開発するシステムの規模感や予算、スケジュール、人的リソースなど、さまざまな要素を考慮したうえで、プロジェクトに適した開発手法を選ぶようにしましょう。
コミュニケーションをしっかり取る
システム開発では、依頼主であるクライアントと開発チーム側の意思疎通がとても重要になってきます。
クライアントがどんなシステムを求めているのか?の認識がズレていると、そもそも要件定義が目的とは違う方向にいってしまい、いざリリースしたときに「思っていたシステムではなかった」ということになりかねません。
また、開発チーム内でもコミュニケーションが取れていないと、設計漏れがあったり、バグが見過ごされてしまったりと問題が生じます。致命的なミスになる前に気づくという意味でも、コミュニケーションをとりやすい環境や関係性の構築が大切です。
\15年超の実績を持つレバテックが運営/
\15年超の実績を持つレバテックが運営/
7.まとめ
システムを開発する一連の作業は、複数の工程に分けられるのが一般的です。具体的な工程や進め方は、そのプロジェクトで選択されている開発手法によって異なります。有名な開発手法として、ウォーターフォールモデルとアジャイルモデルが挙げられ、プロジェクトの規模や開発する対象によって、向いている手法は異なります。開発手法ごとの特徴や進め方、開発工程でよく使われる用語などは、覚えておくと就職後にも役立つでしょう。
ITエンジニアを目指す新卒学生向け就活エージェントならレバテックルーキー
レバテックルーキーは、レバテックが運営するITエンジニア専門の就活エージェントです。多数のITエンジニアのキャリア支援経験のあるアドバイザーが、あなたのスキルと希望に合わせた企業の紹介から、人事目線での面接対策など、就職までを一貫してサポートします。ES添削、面接対策、ポートフォリオ作成サポートなども実施していますので、まずは一度カウンセリングにお越しください。
就活アドバイザーに相談してみる