私は10年ほどシステムエンジニアとして働いています。
SEと書いて「えすいー」と略して呼ばれることがほとんどです。

今回はSEの仕事内容について紹介していきます。
大きく6つに分類されます。

  1. 要求分析
  2. 要件定義
  3. 基本設計
  4. 詳細設計
  5. 開発
  6. テスト

以下、工程ごとの作業内容をざっくり書いていきます。

  1. システムエンジニアの仕事内容
    1. 1.要求分析
    2. 2.要件定義
    3. 3.基本設計
    4. 4.詳細定義
    5. 5.開発
    6. 6.テスト
  2. まとめ

システムエンジニアの仕事内容

1.要求分析

お客様が求めているシステムやサービス内容を、聞き取る段階です。

求めているシステムの例
  • 倉庫の商品を管理するシステム
  • 別システムから自動で仕訳を作る会計システム
  • 顧客情報を管理し分析もできるシステム

のように、求められているシステムの内容は様々です。

困っていること、どんなシステムをイメージして解決しようとしているかを明確にしてもらいます。

2.要件定義

求められているシステムを提示された予算内で実現するための方向性を決めていきます。


システムを使用するユーザーが多いので、サーバーは安定性の高いものにします


完全オリジナルの機能を作るので、作成期間はこのくらいで、お金はこのくらいかかります

このように、お客様とシステムの概要について擦り合わせていきます。

ここの擦り合わせが上手くできていないと、あとで


こんな機能いらないんだけど…


どうしてこの機能が無いの!?

と揉めることになります。

3.基本設計

システムを業務別に分類するなどして、大雑把に設計していきます。

別システムから自動で仕訳を作る会計システム」を作ると仮定してみると、

ファイル受信機能
  • バッチA:Aサーバーから送られてくるファイルをBサーバーの特定のフォルダに置く
  • バッチB:ファイルを読み込んで、データベースに仕訳レコードを作成する
  • バッチC:ファイルはバックアップ用フォルダへ移動する
  • これを一連の流れでとし、1日1回定時に自動で動かす
仕訳確認機能
  • 画面A:受信したファイルを元に作成された仕訳を、日付別に検索できる
  • 画面B:画面Aで選択した仕訳の編集ができる

のように、システムを「ファイル受信機能」「仕訳確認機能」と機能別に分けていきます。

4.詳細定義

機能別に定義した内容を、今度は画面別・バッチファイル別のようにプログラム単位に分割していきます。

前工程「基本設計」で定義した「ファイル受信機能」の「バッチA」を例にすると

バッチAの定義
  • 受け取るファイルの文字コードは「UTF-8」とする
  • ファイルがない場合はその時点で処理を正常終了させる(終了コード=0)
  • ファイルのレイアウトが定義と異なる場合はその時点で異常終了させる( 終了コード=−1)
  • 「仕訳」「仕訳明細」テーブルにレコードを作成する(各項目の定義内容も記載)

のように、プログラムごとに設計書を作っていきます。

5.開発

前工程で作成された設計書を元に、実際にプログラミングを行い、プログラムを作成します。
システムエンジニアの卵や、開発作業を生業としたプログラマーさんが担当します。

コーディングルールの例
  •  画面のレイアウト作成時にはHTMLやJavaScript
  •  画面のボタンを押した時の処理はJava
  •  データベースからデータを取ってくる場合はOracle SQLやMySQL・・・

事前にプロジェクト内で決まった言語を使って、機能を実装していきます。

6.テスト

作っただけでは、お客様に出すレベルのシステムができたかどうかわかりません。
なので実装完了した機能がちゃんと動くかどうかを1つ1つ確認してきます。

代表的なテストの種類
  • 単体テスト:開発者が詳細設計書通りにプログラムを作成したかどうかを確認するテスト
  • 結合テスト:機能単位でプログラムを動かした際に、思い通りの結果が得られるかを確認するテスト
  • 業務テスト:実際の業務で使った場合を想定したテスト

などのように、テストもいくつかの種類があります。
テストの名前はプロジェクトによって若干異なってきますが、実施するテストの内容はだいたいどこも同じです。

まとめ

パソコン操作する女性の手元

1人で全てをやるわけではなく、だいたい1プロジェクトで1〜3つを受け持つことになります。

例外もありますが、経験の浅い人は「5. 開発」「6. テスト」から担当することが多いです。
経験を積んでいくと徐々に「4. 詳細設計」「3. 基本設計」・・・と上流工程と呼ばれる作業を任されるようになります。

そうやって最終的には全工程を経験することになり、その時やっと一人前のシステムエンジニアと言えるようになれます。