静岡理工科大学 菅沼ホーム SE目次 索引

システム工学

  1. 1.システム工学とは
  2. 2.情報システム工学
  3. 3.システム工学の手順
  4. 4.システムエンジニアに必要な知識
1.システム工学とは

  システムとは,

  様々な要素の集まりからなり,それらの要素が互いに関連しあい,全体として,ある目的を果たすための機能を有するもの

といえます.「要素が互いに関連しあい,全体として,ある目的を果たすための機能を有する」という点が特に重要です.少なくとも,単に要素が集まっているだけではシステムとはいえないからです.従って,システムにおいては,個々の要素技術と共に,それらの要素の組み合わせ技術も非常に重要となります.この要素の組み合わせ技術について検討するのが,システム工学(SE : Systems Engineering, System Engineering)であるといえます.

  人口の増加や,生産技術,科学技術,情報伝達・処理手段等の進歩等により,システムが大規模かつ複雑になり,単に要素技術だけでなく,それらをまとめる技術−システム工学−がますます重要になっています.そのため,要素技術や科学技術一般に関する知識と共に,モデリング,スケジュール,最適化等,システム工学固有の技術・知識を持った人に対する必要性は今後ともさらに高まっていくものと思われます.勿論,ここで言うシステムとはコンピュータシステムだけを表しているわけではありません.ところが,一般的に,システムエンジニア( SE : System Engineer )という言葉は,コンピュータシステムの解析,設計,運用などに携わる技術者として使用される場合がほとんどです.ここでは,システムエンジニアを,コンピュータシステムを含む一般的なシステムの解析,設計,運用などに携わる技術者の意味として使用します.特定のシステムに限定する場合は,それが明確になるような修飾語を付けて話したいと思います.

  システム工学と似た分野としてオペレーションズ・リサーチOR : Operations Research )という分野が存在します.非常に似た分野ですが,

といった点で異なっているといえます.しかし,製造したシステムをどのように運用するべきかといった問題は,システム工学にとっても非常に重要です.そのような意味で,OR はシステム工学に含まれるといっても良いかもしれません.

2.情報システム工学

  システムの一つとして,情報の収集,処理,伝達等を目的としたシステム−情報システム(コンピュータシステム)−が存在します.このようなシステムの構築・運用に携わるエンジニアを情報システムエンジニア(コンピュータシステムエンジニア)と呼ぶことにします.一般的には,SE というとこのような(場合によっては,もっと狭い意味の)エンジニアを指すようですが,ここでは,できる限り SE をそのような意味では使用しないようにします.

  情報システムではコンピュータが大きな役割を果たしているため,コンピュータに関する固有知識が重要になりますが,情報システムエンジニアも,通常のシステムエンジニアと大きく異なるわけではありません.ここでは,情報システムにこだわらず,システムエンジニアに必要な基礎知識・方法について概説していきます.ただし,コンピュータそのものに対する固有知識に関しては省略します.

3.システム工学の手順

  システム工学の手順を簡単に述べれば以下のようになります.その各段階で,ここで述べるシステムエンジニアの基礎知識が必要になってくると思います.

  1. システムの目的  システムの目的・目標を明確にします.ある意味で,最も重要な過程であるといえます.場合によっては,この過程において,システムの開発自体を行わないといった結果に至ることもあり得ます.

  2. システム分析  構成すべきシステムに対して,システムの目的に基づき,運用,効率,コスト,品質,信頼性分析等を行います.場合によっては,目的自身を再検討する場合もあり得ます.

  3. システム計画  システムが完成するまでの日程計画を作成します.このとき,予算(コスト)や信頼性などの管理計画も作ります.

  4. システム設計  最適なシステムを目指し,システム全体,サブシステム,構成部品等の設計を行います.

  5. システム製造  システム設計にしたがって,実際にハードウェア,ソフトウェアを製造します.

  6. システム運用  システムが本来の目的を達成できるように保守,整備を行います.

4.システムエンジニアに必要な知識

  コンピュータシステムエンジニア,一般で言う SE に必要な知識としてコミュニケーション能力が良くあげられます.また,複数の人間でシステムを作り上げる際には,管理能力も当然必要になります.しかし,これらの能力は,コンピュータシステムエンジニア,さらには,一般的なシステムエンジニアでなくても当然要求される能力です.従って,ここでは,これらの社会人基礎力的な能力については触れません.

  一般にコンピュータシステムエンジニアの仕事内容や必要な知識に関して,インターネットなどに書かれているものを読むと非常に気になる点があります.コンピュータシステムエンジニアの仕事は,顧客の要求を聞き,それを満足するコンピュータシステムを構築することであるといった内容がほとんどです.しかし,システムエンジニアにとって最も重要なのは,システム工学の手順の中に記述した「システムの目的」を明確にすることですが,そのような記述がほとんどありません.顧客の業務内容を分析し,その中で顧客にとって最適なコンピュータシステムを提案できるようでなければなりません.また,場合によっては,顧客の業務内容の他の部分を改善することによって,顧客が要求するシステムを必要としない場合もあるかもしれません.そのようなことができなければ,とても真のシステムエンジニアとは言えません.単に,顧客の要求する入力に対して,要求する出力を行うプログラムを書くプログラマに過ぎません.

  真のシステムエンジニアであるためには,システム工学や OR の中で述べられているような考え方,手法等に対する知識が必要です.ここでは,特に数学的な手法と,それを理解するために必要な数学に関する知識について述べていきます.実際の問題においては,システムが対象とする各分野に関する知識も必要となりますが,ここでは触れません.

  また,現在では,多くのシステムにおいて,コンピュータが主要な役割を果たしています.従って,どのような分野であれ,コンピュータ関連の知識も多かれ少なかれ必要になってくる場合が多いと思います.特に,コンピュータソフトウェアの開発が大きな部分を占めるようなシステムにおいては,少なくとも一つ以上の言語に対する十分なプログラミング技術を持っている必要があるのではないでしょうか.多人数によってそのようなシステムを開発する場合は,他の人がその役割を果たすことができるかもしれませんが,少人数で行う場合はプログラミング技術に関する能力は必須であると思います.なぜなら,目的とすることをソフトウェアで実現可能か,どの程度の困難さが伴うのか,どのようにすれば最適なプログラムかを書けるのか,などといった判断は,そのシステムの開発に携わっている人自身が判断するのが最も好ましいと思うからです.それが可能であるためには,判断者自身が十分なプログラミング能力を持っている必要があるからです.コンピュータ関連の知識やプログラミング技術については触れませんが,各手法に対する C/C++ と Java (一部に,JavaScript を含む)によるプログラム例はできるだけ添付していくつもりです.これらのプログラミング言語に関しては,「C/C++ と Java」,「 Java と C/C++ 」,「 Web プログラミング」などを参考にして下さい.

静岡理工科大学 菅沼ホーム SE目次 索引