システム開発の工程・要件定義とは|基本まとめ

一昔前までは、IT業界はマイナーな存在でした。ITという言葉を聞いたことがある人もほとんどいなくて、 「IT?イット?」のような冗談が本気で言われていた頃もありました。しかし最近では、学校の授業にプログラミングが必須になろうとしているなど、ITが注目を集めています。

そんな中、システムエンジニアを目指す人も増えてきています。希望する人は増えているのですが、実際には、システムエンジニアが何をしているのか知らない人も多いのではないでしょうか?。 本稿では、こうしたシステムエンジニア志望の方に向け、システム開発の基本を解説いたします。

システム開発とは


システム開発とは、ざっくり言うと、企業の業務課題を解決するためのコンピュータシステムを構築することです。狭い意味ではソフトウェア開発を指しています。広い意味では、ハードウェアやネットワーク関連など、ソフトウェア外を含むこともあります。こうしたシステム開発は、主にSIer(SI:System Integrate)と呼ばれる会社が行います。SIerは、ユーザ企業からこうしたシステム開発の案件を請け負って作業を行なっていきます。小規模な開発の場合は、ユーザ企業の情報処理担当部署が開発することもあります。

システムエンジニアの役割


システムエンジニア(SE)は、システムの設計から導入まで幅広く受け持つ存在です。各工程(後述)の全般にからみ、また、システムの導入、利用者への教育、保守まで行ないます。この業界ではよく、SEの事を「何でも屋さん」と呼びますが、その通りで、本当に何でもやります。

基本的にはプログラマとして経験を積んでからSEになることが多いです。中途採用でない限り、初めから新人技術者を「SEとして」募集することは少ない傾向にあります。
大規模な会社になると、SEをフィールドSE(システム運用が主担当)やカスタマーSE(顧客担当)などのように住み分けることもあります。

システム開発における工程


以前はウォーターフォールモデルが主流でしたが、最近はスパイラルモデルも多くなってきました。
ウォーターフォールモデルとは、その名の通り、滝から水が流れ落ちるように、上流の工程から順次、下流の工程に進めていく開発手法です。各工程は、工程毎にレビューを行い、結果を責任者や顧客から審査・承認してもらってから次の工程に進みます。各工程の概要は以下の通りです。

  • 要件定義:顧客からシステム要件を聞き出して整理します。
  • 基本設計:要件定義の結果を元に、システムの骨格や画面、帳票を設計します。データベースの論理設計も行います。
  • 詳細設計:基本設計の結果を元に、プログラム開発ができるところまで細かく設計します。
  • プログラム開発:詳細設計の結果を元に、プログラムを開発します。
  • 結合テスト:各プログラムを機能ごとにつなげて、機能として要件を満たしているかテストします。
  • システムテスト:システムが要件定義の要求を満たしているかテストします。

スパイラルモデルは、上記を短期間に繰り返しながらシステムを成長させる手法です。
各工程はウォーターフォールの時より軽くして、繰り返しをやりやすくするのがポイントです。

システム開発で大切なこと


前の工程を上流工程と呼びます。不具合は、上流工程で発見するほど修正コストがかからないものです。例えばシステムテストで発見するより、要件定義で発見するほうが簡単に修正できるというわけです。要件定義での誤りをシステムテストで発見していては、設計の見直しやプログラムの変更など、影響がとても大きくなります。これを防ぐために、システム開発では、こまめにレビューを行います。

また、システムエンジニアには、意外とコミュニケーション力が大切です。要件定義では顧客からシステムに対する希望をうまく聞き出す必要があります。顧客も自分がやりたいことが100%わかっているわけではないので、聞いたことを図にまとめて見せたり、プロトタイプの画面を作ったりと、うまくコミュニケーションをとらなければなりません。その他、他のSEとマメに意思疎通したり、プログラマにうまく仕様を伝えたり、コミュニケーション力が求められます。

文書を作成することも多いので、文書力も必要です。データベース設計やネットワーク設計には、専門知識と経験が必要になります。そうした専門知識を身につけることに積極的な姿勢が大切です。
そして、一番大切なのは、顧客ファーストの考え方です。「使う人の立場に立った」システム作りが求められます。システム開発もサービス業の一種といえるでしょう。

将来の展望


システム開発の現場は、技術が日進月歩で常に勉強が必要です。最近はクラウド化が進み、システムの提案でもクラウドが前提となる事が多くなってきました。こうした新しい知識は、知らないと仕事が無くなっていきます。将来的には人工知能を取り入れたシステム、IoTの活用など、SIerの役割はこれからますます大きくなるでしょう。そうした中、システムエンジニアのニーズもどんどん増えていくと予想されます。

まとめ

本稿では、システムエンジニアを目指す方を中心に、システム開発の基本についてご紹介しました。
システムエンジニアの仕事は実に多彩で、いろいろな事をやらなければいけません。必要とされる知識も多く、そういった意味では大変な仕事です。しかし、情報技術の最先端を走るプライドがあるので、楽しい仕事でもあります。コンピュータシステムに興味がある方は、システム開発に関する情報をいろいろと仕入れて、検討してみてはいかがでしょうか?

関連記事

ページ上部へ戻る