システム管理論 I / 第 2 回

システムとソフトウェア

見えないものを作るということ

この回のねらい

システムとは

システム(system)という語は、 ギリシャ語の「結合する」に由来します。

システムは 2 つのもので決まります。

自転車というシステム

構成要素ハンドル、サドル、フレーム、チェーン、タイヤ(前)、タイヤ(後)
干渉 ハンドルを動かすと、タイヤ(前)が方向づけられる
ペダルを回すとチェーンが動く
チェーンが動くと、タイヤ(後)が回る
フレームは全体を形成する(結合する)
外界との干渉人間がサドルに座ってバランスをとる

部品を並べただけではシステムになりません。 どう干渉するかが決まってはじめてシステムです。 逆にいえば、システムを理解するとは、干渉のしかたを理解することです。 この見方は、あとで出てくるモジュール分割(第6〜7回)でそのまま効いてきます。 「どう分けるか」とは「どんな干渉を残すか」に他ならないからです。

ソフトウェアの本質

システムはソフトウェアから構成されます。では、そのソフトウェアとは何でしょうか。 ハードウェアと並べると、性質の違いがはっきりします。

ハードウェアとソフトウェア
ハードウェアソフトウェア
語感固いもの柔らかいもの
もとの意味金物利用技術
実体物質的抽象的
見え方目に見える(有形)目に見えない(無形)
作り方工業生産手作業生産
測り方定量的定性的

この 3 つが、ソフトウェア開発を難しくしています。

ソフトウェア工学の多くの手法は、この 3 つを何とかしようとする試みだと言えます。 見えないものを図に描き(UML)、手作業をプロセスで律し(開発プロセス)、 定性的なものを基準で測ろうとする(結合度・強度、網羅率)。

ソフトウェアの位置づけの変化

かつてソフトウェアは、ハードウェアに付随したサービス的な価値しかないと見られていました。 機械を買えばおまけで付いてくるもの、という扱いです。

いまは逆転しています。第1回で見たとおり、 価値を生んでいるのはソフトウェアであり、 ハードウェアはそれを載せる器になりつつあります。

よいソフトウェアとは

「動く」だけでは足りません。ソフトウェアの品質は多面的です。

観点問い
機能性求められた機能を備えているか
信頼性落ちないか。落ちても回復できるか
使用性使いやすいか。学びやすいか
効率性速いか。資源を無駄に使わないか
保守性直しやすいか。変更が他へ波及しないか
移植性別の環境へ移せるか

このうち保守性は、開発中には見えにくいのに、 費用への影響がもっとも大きい項目です。 ソフトウェアの費用の多くは、作った後の変更に費やされます。

システム開発のライフサイクル

ソフトウェアは、企画から廃棄までの一生(ライフサイクル)を持ちます。

開発工程の流れ
工程やることこの授業で扱う回
要求分析(要求定義)何を実現するかを明確にする第4〜5回
外部設計サブシステムへ分割し、外から見た仕様を決める第6回
内部設計モジュールレベルまで詳細化する第6〜7回
実装プログラムを書く
テスト仕様を満たすことを確かめる第8回
運用・保守使いながら直し、育てる第11回

費用の大半は人件費であり、開発工数に比例します。 だからソフトウェア開発の管理とは、突きつめれば 「人の時間をどこに使うか」の管理です。 次回は、その時間をどんな順序で使うか ── 開発プロセスを扱います。

← 第1回 第3回 システム開発プロセス →