この記事では、私たちSEがお客様からの要望を受けたあと、どういった流れでその要望を実現していくのか、仕事をすすめていく工程をご紹介いたします。
多くの場合、お客様からの受けた要望は、複数人のチームで進めていくことになり、1人ですべて行うようなことはあまり多くありません。
1つの要望は「プロジェクト」と呼ばれる単位で管理され、おおまかな流れは以下のようになります。
- 実現したい要望を聞く
- システム化する範囲・ルールを決める
- 実現するための方法を決める
- 方法・ルールをもとにシステムをつくる
- つくったシステムをテストする
- お客様へ提供する
※このサイトでは、上記の工程を担当する人すべてまとめて「システムエンジニア」と書いていますが、1~3を「システムエンジニア」、4を「プログラマー」、5を「テスター」と分けて表現することもあります。
ここでは一例として、
各支店からあがってくる売り上げを集計して、集計結果をまとめたい
という要望を受けたと仮定し、各工程がどんな作業を行うのかご紹介します。
1.実現したい要望を聞く
お客様からの要望を実現するにあたり、ざっくりとした要望だけではシステム化することは困難です。
この工程では、お客様が望んでいる結果を出すまでの流れを詳しく聞き出すことで、以降の工程で実現可能かどうかを判断する材料とします。
そのためには、
- 売上報告はどんな形式で受けるのか(メール、Fax、等)
- 集計はどのように行っているのか(Excel、電卓、等)
- 集計した結果をどうしたいのか(ファイルで保存、各支店へ郵送、印刷、等)
- etc…
ざっと思いつくだけで上記のような不明点が出てくると思います。
担当者はこれらの疑問に対してどうしたいかを明確にし、業務の流れを詳細に聞き出します。
2.システム化する範囲・ルールを決める
お客様から聞き出せた要望がシステム化可能なのか、また、どの範囲をシステム化するのかを決定します。
システム化する上でのルールも、この工程で決めていきます。
たとえば、最終的に各支店へ郵送する場合、システムが郵便局へ持ち込むことは不可能(当たり前ですが、、)ですから、結果を印刷するまでをシステム化の範囲と決定します。
また、売上報告をFaxで受けている場合、Fax→パソコンへの入力はどうしても人が行わなければなりませんので、メールで統一してもらうようなルールを決めていただきます。
ルールを一本化し、システム化の範囲を明確にすることによりシステムの全体像を決定します。
3.実現するための方法を決める
システム化の範囲・ルールが決まれば、いよいよその要望を実現するためのモノをつくる工程に入ります。
とはいっても、いきなり作り始めることはしません。
プラモデルを作るときを考えていただけるとわかりやすいと思いますが、作るときに組み立ての説明書を見ますよね。
この工程では、その組み立ての説明書にあたる「設計書」の作成を行います。
たとえば、電子メールの添付ファイルからどのような手法で売上金額を抜き出すのか、抜き出した金額をどのように計算し、どんな形式でファイルに出力するのか、等の詳細な処理方法を決定する工程になります。
この工程が間違ってしまうと、後のモノ作りでも誤った結果が出来上がってしまうため、注意を払った設計を行う必要があります。
そうして出来上がった設計書が、後工程にあるモノづくり繋がっていくことになります。
4.方法・ルールをもとにシステムをつくる
設計書が出来上がると、機械語を使用した実際のシステム作成(製造・コーディングと呼ばれます)に入ります。
この機械語は言語と呼ばれ、国によって様々な言葉があるように、言語もたくさんの種類が存在します。
どのような言語が使われるかは、お客様からの要望に応じて向き不向きがあったり、エンジニアによっても経験値が異なるため、使う言語はプロジェクトによって異なります。
また、エンジニアの経験値は、出来上がるシステムの動作にも直結します。
たとえば、4×4=16と書くのと、4+4+4+4=16と書くのでは、前者のほうが分かりやすいし早いですよね。
このように、同じプログラマーといっても経験値によってシステムの処理速度が変わってくるため、重要な処理はそれなりの経験値を持つエンジニアが担当することが多いです。
5.つくったシステムをテストする
テスターと呼ばれるエンジニアが担当する工程です。
作り上げたシステムが正しく動くかどうか、処理時間が妥当か、間違ったデータを受けたときにどういった挙動になるか、等の動作確認を行います。
どんなに経験値のあるエンジニアでも、完璧に動くシステムを作ることは困難です。
そのため、多くの場合製造を担当したエンジニアとは別の人が担当し、予期しない動作やデータが取り込まれた場合の結果を検証します。
比較的経験値の浅いエンジニアが担当することが多い工程ではありますが、あらゆるシチュエーションを想定して不具合の無い製品を作るためには重要な工程です。
5.お客様へ提供する
出来上がったものをお客様の環境(パソコン等)に導入します。
テストまでの工程が上手くいっていても、パソコンが変わるだけで動かない!なんてことも少なからずあります。
ですので、テストまで完璧に終えたシステムであっても、この工程が完了するまでは気が抜けません。
システム開発はこの工程が完了して初めて、最初の安心が得られると言っても過言ではないと思います。
いかがでしたでしょうか。
ひとまとめにシステム開発といっても、このようにいろいろな工程で管理され、多くのエンジニアが担当しています。
1つの案件は小さくても数十万~数百万の開発費がかかるため、よく「高い」と言われますが、これらの工程があると知っていただけると、それなりの金額がかかってしまうのもわかっていただけると思います。