最近自分の作成したソフトのクオリティの低さに滅入ってきたので
少しは勉強する必要があると感じました。
そこで放送大学の教材を利用してソフトウェア工学を勉強することにしました。
その中で分かったことを、自分の理解を深める目的をかねてまとめていくことにします。
ソフトウェア工学とは
そもそもソフトウェア工学とは、
複数の版のプログラムを多人数で開発する「工学」として登場しました。
ソフトウェアはハードウェアのように自然法則に支配されるわけではなくて、「複雑」さに支配されます。
ここでいう複雑さとは、
・プログラムの量的な複雑さ
・多数の技術者による共同作業の複雑さ
・OSのような大規模なソフトウェアが持つ機能の複雑さ
のように様々な複雑さを抱え込みます。
さらにインターネットが登場してコネクティビティの時代が到来すると、
外界との相互作用をすることによってシステムが有用になることが多くなりました。
そこで利用者の振る舞いも複雑さが増す要因となり、
ソフトウェア工学が克服するべき複雑さに外界という新たな次元が加わることになります。
つまりソフトウェア工学とは「複雑さ」に支配される学問であるということができます。
さらにこれから来るであろうスマート社会を見据えると
ソフトウェア主体のIoTがビジネスの世界を変革すると論じられており、
ソフトウェアがイノベーションの担い手に変貌したと考えられています。
スマートプロダクトにはスマートさの4つのステップがあると考えられており、
1・装置状態の監視
2・装置状態の変化に即応した制御
3・最適な制御法の立案・選択
4・自律性
というものがあります
このスマートプロダクトはインターネット技術としてのIoTの利用を前提としています。
このことからは
「SoSまで含めた広義のIoTはビジネス・エコシステムを形作る」
ということが言えます。
※SoS(System of Sistem):多数のシステムからなる系
ソフトウェアのパラダイムについて
ここでいうパラダイムとは、ソフトウェア作成時に開発者がよりどころとする共通的な考え方だと定義します。
現在はオブジェクト指向技術が産業界の中心のパラダイムになっています。
オブジェクト指向とは、データ定義と手続き(メソッド)を一体化したオブジェクトと呼ぶ考え方のことです。
他のパラダイムとしては、CPSというものがあります。
CPSとは互いに影響を及ぼし合う実体間の閉じたループに基づく制御の考え方を中心とする考え方のことです。
ディペンダビリティの変遷
ディペンダビリティとは、信頼性、保全性、可用性などを総合した広義の信頼性のことです。
ソフトウェアはその発展により社会インフラに複雑かつ大規模場なシステムを構築できるようになりました。
同時に社会的に大きなリスクをもたらす可能性が出てきました。
ここで欠陥について考える必要がでてきました。
欠陥は大きく分けて2つに、決定論的な欠陥と偶発的な欠陥に分類することができます。
決定論的な欠陥は、システムが一定の動作条件になると必ず生じるもので、ソフトウェアのバグ等に起因します。
偶発的な欠陥は、動作条件を決めていても起こることもあれば起こらないこともあるもので、物理的な原因によるハードウェアの誤動作に起因します。
ディペンダブルなシステムの中でソフトウェアの比重が高まるとともに
決定論的な欠陥を低減する方法に関心が高まっています。
ディペンダブルな工学システムは信頼性と安全性の2つの側面を持っており、
信頼性(reliability)は期待された、あるいは決められた要求水準を満たすこと。
安全性(safety)は要求機能がはたせなくなったとき、外界に深刻な影響を与えないこと。
が求められています。
信用されうるシステム(Trustworthness)の考え方
信用されうるCPSには信頼性、安全性、サイバーセキュリティ、プライバシー、回復性という5つの性質があります。
これからのディペンダブルな課題としては
機械学習のような偶発的な欠陥から生じるような欠陥に対する検査法がこれからの研究課題となっています。
まとめと感想
ソフトウェアはソフトウェアが発展するにしたがって、社会インフラに大きな影響を与えるようになっており
複雑性の中で信頼性を担保できるようにすることが大切である。
参考文献
放送大学 大学院教材
ソフトウェア工学 中谷多哉子・中島震 偏 2019年3月20日 第一刷発行 一般社団法人 放送大学教育振興会