株式会社レヴィ ブログ

株式会社レヴィの公式ブログです。

システム思考とは?【エンジニア向け】考え方の基本と実例を紹介します

「システム思考」は、ソフトウェア開発やものづくりの現場でどのように活用できるのでしょうか?レヴィでは、設計開発のプロセスや工程の見える化をしたいと考えているエンジニアの方向けに、「システム思考」の基本をわかりやすく解説するガイドブックを公開しています。

levii.co.jp

この記事では、ガイドブックの内容のポイントを簡単にご紹介します。流し読みでさっと内容だけ知りたいかたや、 「システム思考」についての重要なキーワードをインプットして学習のヒントにしたいかたにぴったりの内容です。

システムとは何か?

「システム」という言葉を聞いたり使ったりする機会はあると思いますが、「システムとは何か?」と聞かれるとはっきりと答えられない人も多いのではないでしょうか。まずはシステムの定義についてあらためて考えてみましょう。

システムの定義

次の3つの性質を備えるものをシステムと呼びます。 f:id:etu619:20210815140826p:plain

システムを記述することば

組み込みシステムやアプリケーションソフトウェアなどの一般的なシステムの設計開発者は、システムの全体像やある側面、一部分を様々な形で記述します。ここでは、システムを記述する代表的な概念と言葉を紹介します。

f:id:etu619:20210816191016p:plain

  • 要素

システムをつくっている一つ一つのもののことを要素と呼びます。要素が多数集まり、相互作用を持つことではじめてシステムが成り立ちます。要素は物理的なものだけにとどまらず、機能・状態・人なども要素として扱うことができます。

  • 相互作用

システムでは、要素と要素の間に様々な相互作用が働いています。相互作用は「要素と要素の関係性」と言い換えることもできます。代表的な相互作用としては、エネルギーの伝達、情報の伝達、包含関係・抽象化関係などが挙げられます。

  • 入出力

着目する要素に対して別の要素からエネルギーや情報が伝達されるとき、それらは着目する要素の「入力」と呼ばれます。その逆は「出力」と呼ばれます。

  • 階層性

システムの要素は、さらに小さい(さらに具体的な)複数の要素から成り立っています。つまり、システムの要素もまたシステムであることが一般的です。このように入れ子構造になっていることをシステムの「階層性」と呼びます。

  • コンテキスト

システム開発においてコンテキストとは「着目しているシステムがおかれている状況」のことを指し、そのシステムが外部の要素とどのように相互作用するかを記述することで表現されます。

システムの例

実際の世の中にはどのようなシステムがあるでしょうか?代表的なシステムの例を挙げてみましょう。

Case.A 人工衛星

人工衛星は複雑なシステムの代表例です。多数の電子部品、機械部品、構造体等から構成され、複雑なソフトウェアで動作が制御されています。そして「ミッション」と呼ばれる達成すべき事柄が設定されており、ミッションの達成を通して特定の目的を果たします。

f:id:etu619:20210815141928p:plain
システムを記述することばで、人工衛星を説明してみると・・?

人工衛星のシステムをシステム思考で記述する場合の回答例はこちらの資料で解説しています。

Case.B 企業

「企業や組織はシステムである」と聞くと少し違和感があるかもしれません。しかし、企業や組織は「利益を出す」などの特定の目的を持っており、「人」を要素と考えると、要素が多く集まったものです。また、要素である人と人同士は様々な形でコミュニケーションを行い、相互作用を持ちます。よってシステムの定義を満たすので、企業や組織もシステムであると言えます。

f:id:etu619:20210815143057p:plain
企業をシステムとしてみたときに、システム思考で記述するとどう表現できるでしょうか?
回答例をこちらの資料で解説しています。

システム思考とは何か?

例として挙げた人工衛星や、コンピュータ、家電製品、車、航空機などは一般的にシステムとして認識されています。それらは電子部品や機械部品、ソフトウェアの機能ブロックなどの多数の要素から成り立っていて、要素同士が相互作用することで動作し、特定の目的を果たします。このような一般的なシステムの設計開発を担う技術者たちは、きちんと目的を果たすことのできるシステムを実現するための優れた考え方や視点を持っています。

世の中のほぼ全てのモノゴトはシステムとして捉えることができます。上記のような一般的なシステムだけでなく、例として挙げた企業や組織もそうですし、街や社会、生命やサービスなどもシステムとして考えることができます。システムの設計開発者と同じような考え方や視点を適用することで、対象をより適切に理解したり、問題を解決したりすることができるようになります。これがシステム思考の本質です。

f:id:etu619:20210815143427p:plain

ビューポイントとビュー

多くの場合、システムはたくさんの要素と複雑な相互作用を持っているため、その全ての側面を一度に理解したり表現したりするのは難しいです。そこで、次に示すような「ビューポイント」や「ビュー」という考え方が必要となります。 f:id:etu619:20210815143631p:plain

ビューポイントとビューについて詳しく知りたいかたはこちら

システムモデル

システムモデルとは、システムの「要素」と「要素間の相互作用」を四角形や円形などの図形で表される「ノード」を矢印や線などで表される「リンク」でつないだ図のことです。システムモデルでは、システムの要素をノードで、要素間の相互作用をリンクで表現します。以下に例として3つのタイプのシステムモデルを紹介します。

  • 物理構成モデル
  • コンテキストモデル
  • アクティビティモデル

f:id:etu619:20210815144257p:plain

各々のシステムモデルについて、こちらの資料で詳しく説明しています

システム思考のプラクティス

例題でシステム思考にチャレンジしてみましょう!

それでは、簡単な例題を使ってシステムモデルを用いたシステム思考を練習してみましょう。例題は「娘の部屋を設計する」です。次のような場面を思い浮かべてみて下さい。

f:id:etu619:20210815145603p:plain
来年小学生になる6歳の娘の新しい部屋。どこに、どんなものを置きましょう?

システム思考の考えかたを活用し、以下のようなビューモデルを使って状況を整理して課題解決の方法を導きます。

・フィジカルビュー

まずは、フィジカルビューポイントから考えてみましょう。フィジカルビューポイントはシステムの物理的な構成や特性、形状などに関心を持つ視点です。部屋の場合は、「部屋はどんな形か?」「家具などはどのように配置されているか?」などが相当します。

f:id:etu619:20210815145907p:plain

・コンテキストビュー

次はシステムモデルをつかって、コンテキストビューを描いてみましょう。コンテキストビューのポイントは、着目しているシステムと、そのシステムの外側にある要素との相互作用に関心がある視点です。 f:id:etu619:20210815150707p:plain

・オペレーショナルビュー

システムの操作や運用に関心を持つ視点であるオペレーショナルビューポイントから見たビューを考えてみましょう。オペレーショナルビューポイントでは「操作や運用の主体はだれか?」を意識するようにして下さい。 f:id:etu619:20210815151111p:plain

このような形で掃除をするときの母のアクティビティを描いてみると、フィジカルビューだけで考えていたときには出てこなかった要素を思いつくことがあるかもしれません。例えば「おもちゃを片付ける」というアクションから「おもちゃ入れ」や「ゴミ箱」という要素が必要であるということを思いつくことができます。

・ファンクショナルビュー

最後にファンクショナルビューポイントから娘の部屋に必要な要素について考えてみましょう。ファンクショナルビューポイントは、に関心を持つ視点です。娘の部屋にはどんな機能が必要でしょうか? なぜそのような機能が必要なのでしょうか?その機能を実現するためには何が必要なのでしょうか?このようなことを考えるために、ここでは要求モデルによるビューを描いてみましょう。

f:id:etu619:20210815151455p:plain

このように、イスやテーブルなどの要素をフィジカルビューポイントだけで考えるのではなく、それらがどんな機能を担っていて、なぜそのような機能が必要なのかというファンクショナルビューポイントから考えることで、システム全体をより良いものへとブラッシュアップすることができます。

まとめ

システム思考のイメージはつきましたでしょうか? エンジニアや設計開発の業務に携わるかたでしたら、普段の業務の中で自然と行っている思考法かもしれません。つまり、すでにエンジニアの皆さまはシステム思考的な考えをもち、それを業務に活かしていらっしゃっています。では、なぜ今あらためて「システム思考」という手法が注目されているのかというと、思考の過程を「見える化」することで、システム開発のチームメンバーや顧客とのコミュニケーションの分断を解消することができるからなのです。システム思考を活用することで、熟練エンジニアから若手への技術承継がスムーズにいったり、顧客の要求に対して適切なサービスを提供することができ、手戻りの発生を防ぐことができます。

このあたりはまた次のブログでご紹介させていただきます!

お読みいただき、ありがとうございました。こちらで紹介したガイドブックは、完全版を以下からダウンロードしていただけます。 levii.co.jp