小学校でもプログラミング教育が必修になった今、情報技術はより皆さんの身近なものになってきています。今回はその情報技術を駆使し、世の中の問題を解決している「SE(システムエンジニア)」について解説していきます。
SE(システムエンジニア)の仕事内容
1. システム開発フロー
システム開発には工程があり、主に要件定義、基本設計・機能設計、詳細設計、プロ グラミング、テスト、運用・保守に区分けされています。この中でSEは、要件定義、基本設計・機能設計、詳細設計、テスト、運用・保守を担当します。
2. 要件定義
顧客にヒアリングを行い、どのようなシステムを求めているのかを把握しシステムの全体像の明確にします。この段階で顧客との認識にずれが生じているまま、設計・開発を終えて問題が発生するとものによっては後戻りできない問題もあるので徹底的に議論することが大切です。
3.基本設計・機能設計
要件定義で議論した内容を元に、どのような機能をもったシステムにするのかを決めていきます。データをどのように表示するのか、どのような帳票が必要になるのかなど主に、ユーザインターフェースに関係する部分の設計を行います。
4.詳細設計
基本設計・機能設計で決まった内容を元に、画面に表示しようとする情報をどのような体系で保持するのか決めるデータベース設計、システム内部の動作など実際に使うユーザーが意識しない部分の設計を行なっていきます。この設計書を見てプログラマーがプログラミングを行ないます。
5.テスト
プログラマーが作った成果物が、設計書通りに機能するかテストを行います。個別にテストを行う単体テスト、いくつかのモジュールを組み合わせて行う結合テストなどがあります。テストではバグを検出できるように網羅性の高いテスト行う必要があります。
6.運用・保守
システムをリリースし、顧客の元で運用している段階です。何らかの障害が発生した際には対応を行い、システムを正常に運用できるようサポートをします。長期案件の場合は先に一部リリースしてから残りの開発や要望対応などを行うこともあります。
以上が、SEの仕事内容になります。実際はSEがプログラミングを担当することもあります。それは、プロジェクトや会社の方針によって違ってきます。
SEに求められる能力
1.コミュニケーション能力
コミュニケーションとはただ会話ができるだけではいけません。先に述べましたように、顧客にヒアリングを行うので的確にニーズを把握したり、同じプロジェクトに所属するプログラマと良好な関係を構築しておくことで急な仕様変更にも快く応じてもらえるので要点を抑えてコミュニケーションを行いましょう。
2.顧客の業務を理解する能力
システム開発は顧客の問題をシステムで解決するのが仕事です。そのためには一般的な仕事の流れを把握するのはもちろんのこと、顧客独特の業務を理解しそれを反映することが重要です。Web系ではなく、業務システムの開発を行うSEは顧客の業種ごとに違った文化や、ルールなどを理解する必要があります。
3.進捗管理のマネジメント能力
注文を受けた段階で大体納期は決まっています。納期に間に合うように適切に人的リソースを適切に割り振ることが重要です。工数の見積もりをしっかり行い、特定のメンバーに偏ることなく進捗管理を行う必要があります。また、下請けに仕事を出している場合はそちらも管理する必要があります。開発ルールの共有や、成果物の納品タイミング、進捗など適宜Web会議や電話などで連絡を取る必要も出てきます。
4.思考能力
どの工程の業務を行っている時にも言えることですが、自分の都合の良いように解釈せずに事実をしっかりと捉え、その事実に適した答えを導き出す思考能力はとても大事だと思います。
まとめ
SEについての解説いかがでしたでしょうか?顧客へのヒアリング、設計書の作成、スケジュール管理からシステムのテスト、運用・保守まで様々な業務を行っています。
IT業界への転職を考えている方は、SEならプログラミングもしなくていいからいけそう!と思うかもしれません。しかし、筆者の経験からプログラムを書けないSEが作った仕様書ほど疑問を抱く点が多かったり、論理が飛躍している箇所を見かける可能性が高い印象があります。
SEは設計書を用いて、プログラマに指示を出します。ですので、下流工程の業務をしっかり把握しておくことで質の高いSEに1歩近づけるでしょう。