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

システム工学

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

  システムとは,

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

といえます.「要素が互いに関連しあい,全体として,ある目的を果たすための機能を有する」という点が特に重要です.少なくとも,単に要素が集まっているだけではシステムとはいえないからです.従って,システムにおいては,個々の要素技術と共に,それらの要素の組み合わせ技術も非常に重要となります.例えば,単に最適な要素を組み合わせただけでは,全体として最適なシステムになるとは限りません.組み合わせたものを全体として評価し,その結果を各要素に反映させることができるような技術者が必要です.そのような技術者の基礎となるのが,システム工学(SE : Systems Engineering, System Engineering)です.そして,システム工学的な知識に基づき,システムの解析,設計,運用などに携わる技術者がシステムエンジニアであると言えます.

  人口の増加や,生産技術,科学技術,情報伝達・処理手段等の進歩等により,システムが大規模かつ複雑になり,単に要素技術だけでなく,それらをまとめる技術−システム工学−がますます重要になっています.そのため,要素技術や科学技術一般に関する知識と共に,モデリング,スケジュール,最適化等,システム工学固有の技術・知識を持った人に対する必要性は今後ともさらに高まっていくものと思われます.勿論,ここで言うシステムとは情報システム( IT システム,コンピュータシステム)だけを表しているわけではありません.ここでは,システムエンジニアという言葉を,情報システムを含む一般的なシステムの解析,設計,運用などに携わる技術者を表す言葉として使用します.「システムエンジニアの基礎知識」では,そのような技術者が身につけて欲しい知識について記述していきます.ただし,情報システムにおけるコンピュータなど,対象システムそのものに対する要素技術・固有知識に関しての説明は省略します.

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

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

2.情報システム工学

  システムの一つとして,情報の収集,処理,伝達等を目的としたシステム−情報システム( IT システム,コンピュータシステム)−が存在します.このようなシステムの解析,設計,運用に携わるシステムエンジニアを情報システムエンジニア( IT システムエンジニア)と呼ぶことにします.日本において,職種の一つとして使用されている SE(システムエンジニア)は,一般的には,プログラマ,組み込みエンジニア,サポートエンジニアなど,IT 関係の要素業務をこなす技術者を指す場合がほとんどです.言葉としては,「システム工学( Systems Engineering, System Engineering )」という言葉に対応しますので,システム工学的な知識・考え方を身につけた技術者であるように感じられますが,必ずしもそのようにはなっていません.明らかに,SE は,単なる職種を表した言葉であり,ここで述べているシステムエンジニアとは異なります.しかし,情報システムもシステムの一種です.必ず,システムエンジニアが必要です.実際,SE の中には,情報システムエンジニア的な業務に携わっている人も多いと思います.システム工学に関わる知識を身につけ,その重要性を十分認識し,SE という言葉にふさわしい真のシステムエンジニアを目指してもらいたいと思います.「システムエンジニアの基礎知識」を記述した目的の一つはここにあります.

3.システム工学の手順

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

  1. システムの目的  システムの目的・目標を明確にします.単に,与えられた要求を満たすシステムを作成するだけではなく,「システムの目的は何か」,「なぜ必要なのか」,「業務記善など,他の方法で実行できないか」など,より踏み込んだ検討をする必要があります.ある意味で,システムエンジニアにとって,最も重要な過程であるといえます.場合によっては,この過程において,システムの開発自体を行わないといった結果に至ることもあり得ます.

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

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

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

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

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

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

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

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

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

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

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