『システム開発の流れってどんな感じで進むんだろう?』
『システム開発の工程ってどんなものがあるのかな?』
『各工程では具体的にどんなことをするんだろう?』
これからSEを目指す人にとってシステム開発の流れってよく分からないですよね。
僕は約10年ほどSEとして働いた経験がある現役エンジニアです。
(現在は転職してWEB系のエンジニアをしています)
過去の僕はシステム開発の全体的な流れが分からないまま仕事をやっていた経験がありますw
そんな感じで仕事をしていたので、当然作業の目的なんかが分からなくて上司からこっぴどく怒られた経験もあります。
本記事では、これからSEを目指す人にとって僕と同じような経験をしなくて済むように、システム開発の流れや開発工程をざっくりとご紹介します。
本記事を読むことで、システム開発の全体的な流れや各工程の具体的なイメージが掴めるようになりますよ。
それでは参りましょう!
システム開発ってどんな流れで始まるの?

まずはシステム開発がどのような流れで始まるのかを簡単にご紹介します。
ざっくりとした流れは以下のようになります。
- お客さんがとある業務をシステム化したいと思う
- システム会社に開発を依頼する
- システムエンジニアがお客さんにヒアリングする
- ヒアリングした内容をもとにシステムを設計する
- 設計をもとにアプリケーションを作る
- アプリケーションが正しく動くかどうかテストする
- 作ったアプリケーションをお客さんに確認してもらう
- アプリケーションをリリースして開発完了
実際には、④以降でサーバーやネットワーク関係の作業もあったりするので、超ざっくりになってしまいますが、簡単に説明するとこんな流れになります。
開発のスタートは、お客さんが業務効率化だったり、業務コストの削減などを目的にシステム化したいという思いから始まります。
その『システム化したい』という思いをエンジニアがヒアリングして、システム化を実現していく流れになります。
システム化を依頼する際には、「こんな機能を入れてほしい」と漏れなく的確に依頼してもらえるのがベストですが、実際のお客さんはシステムに詳しい人ばかりではありません。
なので、お客さん自身が気づいていないけど、「こんな機能があると便利じゃないですか?」といった具合にエンジニアの視点で提案したりすることもSEの重要な仕事です。
このようにお客さんからヒアリングして確定させた要望をもとに、システムを設計→製造→テスト→リリースといった流れがシステム開発の基本的な流れになります。
システム開発の工程ってどんなものがあるの?

実際に開発を行う際にはこれらの流れを各工程に分けて進めていきます。
現場によって呼び方が多少異なることもありますが、基本的には以下の呼び名で使われますので覚えておきましょう。
- 要件定義
- 基本設計(外部設計)
- 詳細設計(内部設計)
- 製造
- 単体テスト
- 結合テスト
- 総合テスト
- 受入テスト
- リリース
それぞれの工程を簡単にご紹介します。
①要件定義
これからシステム開発を行っていく上で、どんな機能が必要なのかをお客さんからヒアリングする工程です。
今回の開発では、どんな機能を組み込むのか、逆に組み込まない機能は何なのかなど、お客様との認識がずれないように開発範囲を定義していきます。
②基本設計(外部設計)
要件定義でヒアリングしたシステム要件をもとに、それをどうやってシステムで実現するのかを設計する工程です。
サーバーはどんなものを用意するのか、何台のサーバーを用意するのか、それぞれのサーバーをどのようにネットワークで繋げるのかなど、システム全体の概要図を作ったり、アプリケーションがどんな機能を提供するのかをまとめた機能一覧を作ったりします。
ここで作成した成果物をもとにお客さんにシステムの概要を説明して合意を得ます。
③詳細設計(内部設計)
それぞれのアプリケーションをどういうロジックで実装していくかを設計する工程です。
基本設計がシステム全体の設計なのに対して、詳細設計は一つひとつのアプリケーションを細かく設計するイメージですね。
プログラムでこんな感じで実装しますよ、というものを決めて設計書を作成します。
④製造
詳細設計で作った設計書をもとにプログラムで実装していく工程です。
プログラミング言語を使って、設計書に書いてある内容の通りにアプリケーションを作っていきます。
ここまできてやっとモノづくりがスタートといった感じですね。
⑤単体テスト
製造工程で作ったアプリケーションがちゃんと動くかどうかをテストする工程です。
「ちゃんと動くか」というのは、設計書に書いてある内容が漏れなく実装されているか、いろんなパターンで動かしてみてエラーが起きないか、などをアプリケーション単体でチェックしていきます。
実際の作業ではテスト前に単体テスト仕様書を作成して、テストケースに漏れがないかを十分に確認した上でテストを実施していきます。
⑥結合テスト
それぞれのアプリケーションを繋ぎ合わせた時にエラーが発生しないかをテストする工程です。
規模が大きいシステムになるとかなりの数のアプリケーションを作っていきます。
アプリケーション単体では問題なく動くのに、それぞれを組み合わせた時に想定通りに動かないなんてことはよくあります。
この工程ではそんな想定外を潰すためのテストを行います。
⑦総合テスト
システム全体を通して要件を満たしているかをテストする工程です。
結合テストでアプリケーション間のテストを行いますが、ここではもっと広い範囲でテストを行います。
アプリケーションの機能観点だけでなく、処理速度に問題がないか、サーバー障害やネットワーク障害が起きた時の耐久性をテストしたりします。
⑧受入テスト
一通りテストして出来上がったシステムをお客さんに使ってもらう工程です。
お客さんの要望をちゃんと満たしているか?使い勝手に問題はないか?実際の業務に支障が出るようなことはないか?などを実際にお客さんに使ってもらって確認します。
この工程では受入テスト専用の環境を作ってそこで試してもらうことになります。
専用のサーバー上でアプリケーションを動かして、システムの動作を確認してもらうイメージですね。
⑨リリース
受入テストも無事にクリア出来たら本番用の環境にシステムを構築していく工程です。
受入テストまでは専用の環境で開発していくので、一般的には公開されていない状態です。
このリリース作業を行うことで一般公開するようなイメージです。
もっと詳しく知りたい方へ

以上が基本的な開発の流れと各工程の説明になります。
これらは初心者向けに超ざっくりと解説したものになりますので、システム開発にもっと詳しくなりたいよという方は、おすすめの本を何冊かご紹介しますので、ぜひこちらもご覧ください。
まとめ

ざっくりとですが、システム開発の流れや各工程の具体的なイメージは掴めたでしょうか?
これからSEを目指す人にとって、システム開発の全体的な流れを把握しておくことは大事なことです。
少しでも頭の中でイメージできた!となってもらえると嬉しいです。
ということで今回は以上となります。それでは~。
コメント