これは

放送大学大学院文化科学研究科の「ソフトウェア工学」という授業で使われる「ソフトウェア工学」という教材書籍を自分なりにまとめたものです.

第 1 章では, ソフトウェアってそもそもなんなのか, ソフトウェアの歴史や, 様々なソフトウェアの特徴について, 幾つかの例をあげつつ説明されていて, SaaS やクラウド・コンピューティングなどについても書かれていました.

尚, 本まとめについては, 以下の Github リポジトリで管理しており, 加筆修正はリポジトリのみ行います.

software_engineering - 放送大学大学院文化科学研究科 / ソフトウェア工学

github.com

1. 現代社会を動かすソフトウェア

1. 社会のインフラとソフトウェア

  • 現代社会のインフラストラクチャー
    • 道路, 鉄道, 上下水道, 電力網, 通信網等
    • これらのインフラを構成するシステムはソフトウェアが支えている
  • インフラを利用する産業
    • 金融, 流通, 通信・放送, 製造業等多岐にわたる
    • これらの産業の根幹に情報システム, 制御システムが動いており, その中心で動いているのがソフトウェア
  • 身の回りのソフトウェア
    • 自動車 (数十から百個の半導体チップ)
    • 携帯電話
    • エアコンや冷蔵庫

2. ソフトウェアの語源

  • ハードウェアという言葉
    • 古くから利用されている
    • ナイフ等の金物や兵器
  • ソフトウェアがコンピュータを動かすものとして最初に使われた用例
    • 米国数学月報 1958/1 プリンストン大学統計学専門教授の J.W. Tukey
    • コンピュータの計算回路や記憶素子等をハードウェアと呼び, それを操作する抽象的な指令列をソフトウェアと呼ぶことにしたっぽい
  • コンピューターとは無関係なソフトウェア
    • 1850 年
    • 「チャールズ・ディケンズ・ウィークリー」という雑誌の短編小説の一節
    • 腐るもの全てを「ソフトウェア」として表現されている
  • ニューヨーク・タイムズ
    • 1961 年に登場している
  • 日本の新聞
    • 1969 年 4 月 12 日の朝日新聞
    • ソフトウェア (利用技術)
    • 利用技術 = コンピューターを利用する技術

2. ソフトウェアの特徴

1. ソフトとソフトウェア

  • ソフトウェアよりも「ソフト」という言葉が幅をきかせている
    • 映像「ソフト」
    • 音楽「ソフト」
  • ソフトウェアは目に見えない為, 人間はその存在を意識しない
    • 物理的な制約が無い
    • 「腐る」こともなく, 錆びることも摩耗することも無い
    • 「腐る」ことはあるような気がする
  • 物理的な制約が無い
    • 本質的に自由であるが, 巨大化し複雑化する
    • 抽象的なものである
  • ムーアの法則
    • インテルの創業者 Gordon Moore が 1965 年に提言
    • 半導体の集積度の上昇について, 向こう 10 年は集積度が毎年 2 倍に増大し, その後, 1 年半で 2 倍に達する
    • ソフトウェアが大きくなろうが, 重くなろうが, ハードウェアの進歩がそれを吸収してしまう
    • ソフトウェア開発上の制約は, それを設計し開発, 保守する人間の能力の限界

2. あらゆる分野が対象

  • ソフトウェアはあらゆる産業で使われ, あらゆる製品の中で組み込まれている
  • 業界間の交流は無く, 一般性のあるソフトウェア工学技術という視点をあまり意識せずに, 作られてきた傾向がある
    • 銀行のオンラインシステム, 自動車のエンジン制御ソフトウェア, ゲームソフト, ソフトウェアとしては見かけは変わらない

3. ハードウェアのソフト化

  • 従来ハードウェアとして作られていたものが, ソフトウェアで実現されるようになってきている
    • 電話 (ダイヤルからプッシュ), テレビのチャンネル (レバーからリモコンボタン)
    • 機械的な部分がデジタル信号による制御に切り替わっている
    • ファームウェア
      • ハードウェアを制御する為に機器に組み込まれたソフトウェア
      • ROM に書き込まれていて簡単に書き換えることが出来ない
      • 最近は, フラッシュメモリを使うことにより, 出荷後の変更も可能

3. ソフトウェアの種類

1. 情報システムと組み込みシステム

  • 情報システム
    • 企業, 政府機関, サービス機関が外部に情報サービスを提供システム
    • 内部の情報管理, 意思決定支援に用いる
      • データ処理, 事務処理, ビジネス・アプリケーション
      • エンタープライズシステム
      • 最近では Web を用いたアプリケーションとして作られている
  • 組み込みシステム
    • 自動車, 家電製品, 計測制御機器等に搭載されている
  • その他のシステム
    • 鉄鋼プラント, 原子力プラント, 重化学工業プラント等を動かす制御システム
    • ゲームソフトウェア

2. 汎用性品と注文製品

  • パッケージ・ソフトウェア (シュリンクラップ)
    • パッケージの箱を包装する樹脂のラップ
    • 「ラップを破ることで使用許諾の条項を承認したと見なす」という売り方
    • COTS (Commercial Off The Shelf)
    • 古くなってきている
  • オンライン販売
    • 主流となってきている
  • SaaS
    • 製品としてのソフトウェアを購入することなしに, そのサービスのみをインターネットを介して利用する
    • クラウド・コンピューティング
  • 注文製品
    • 使用する企業・組織から外部の業者に発注され生産される
    • 日本のソフトウェア産業の売上に占める比率は, 受託開発によるものがパッケージ販売に比べて圧倒的に高い (85%)
    • パッケージ・ソフトウェアの多くが海外製品
      • オペレーティング・システム
      • オフィスソフト
      • ERP (ドイツの SAP が大きなシェア)
      • CAD

3. システム・ソフトウェアとアプリケーション

  • ソフトウェアの分類としては, システム・ソフトウェアとアプリケーション・ソフトウェアという分け方もある
    • システム・ソフトウェア = オペレーティング・システム (OS) とほぼ同じで, コンピュータを動かす為の基本となる汎用ソフトウェア
    • アプリケーション・ソフトウェア = 個別の適応分野に応じて作られている (数は圧倒的に多い)
    • ミドルウェア = OS とアプリケーションの中間に位置しており, アプリケーションが OS の機能を使うのを媒介する
      • データベース管理システム
      • トランザクション監視システム
      • メッセージ通信基盤
    • OS とミドルウェアを合わせてシステム・ソフトウェアと呼ぶことが多い

4. オープンソース・ソフトウェア

  • ソースプログラムを一般に公開しているもの
    • Linus Torvalds によって開発が始められた OS の Linux
    • Apache や Eclipse, Firebird 等
  • オープンソースはソフトウェアの形態というよりも, ソフトウェアを開発するプロジェクトのスタイルを指している
    • 不特定の個人が自由に参加出来る
    • 使うだけのユーザー, バグ報告をするユーザー, プログラムの修正, 追加を行う人々
  • オープンソース・ソフトウェアの最大の長所
    • 多数の目によってプログラムを監視し, 欠陥を修正していくというプロセスを取ることによる信頼性の向上

5. サービス思考とクラウド・コンピューティング

  • ソフトウェアをパッケージとして販売するより, サービスとして提供するという方向への変化進行している
  • サービス指向アーキテクチャ (SOA: Service Oriented Architecture)
    • サービス提供 (ビジネスプロセスを構成するサービス単位をネットワーク上に公開する)
      • ホテル予約
      • レンタカーのサービスシステム
    • サービス連携 (提供されたサービス単位を相互に連携させてビジネスシステムを構築するもの)
      • Web サービスとして旅行手配システムを作る場合, 航空券予約, ホテル, レンタカー等の既存サービスを組み合わせる
  • サービスとしてのソフトウェア (SaaS: Software as a Service)
    • ソフトウェアの機能のうち, ユーザーが必要とするものだけをインターネットを介してサービスとして提供するビジネス形態
    • Salesforce.com
    • 利用側から見ると自社固有のシステムを保有したように見えるようにする
    • システムを動かす為の計算機資源をユーザーが保有する必要がない
  • クラウド・コンピューティング
    • 2006 年 8 月, Google CEO の Eric Schmidt がサンノゼで提言したとされている
    • 雲 (インターネット) の向こうにあるコンピュータを利用する
    • ユーザーは自分でコンピュータやソフトウェアを保有せず, 利用に応じて料金を払う
    • SaaS とクラウドの違い
      • 単にソフトウェアだけが提供されているものではない
      • インフラプラットフォームを提供している
      • グーグルやアマゾンのような大企業による寡占化されてきている

4. 誰がどう作るか

1. 情報産業

  • 日本のソフトウェア産業の年間売上高は約 20 兆円 !!! (ソフトウェア業, 情報処理・提供サービス業約 18,000 事業者)
  • ソフトウェア業, 情報処理・提供サービス業以外の業者でも多様な組織でソフトウェアが作られている

2. ソフトウェア技術者

  • プログラマ (設計仕様を与えられてコードを書く作業に従事する人)
  • 分析や設計をする技術者 (ソフトウェア技術者) と区別する傾向がある
  • ソフトウェア技術者の総数は, 2009 年時点で 128 万人という推計がある
  • ソフトウェア技術者に要求される知識と能力
    • アメリカでは SWEBOK (Software Engineering Body of Knowledge) というソフトウェア工学の知識体系が作られている
    • 日本では J07 が 2008 年 3 月に公表されている
    • 経産省が行う国家試験
      • 基本情報技術者, 応用情報技術者, システムアーキテクト等の 12 区分
      • IT スキル標準 (IT Skill Standard: ITSS)

3. ソフトウェアの生産体制

  • ハッカーと呼ばれる天才的なプログラマが一人, または少人数のグループで開発
    • Unix
    • WWW (World Wide Web)
    • google
    • Emacs
  • 表計算ソフト
    • Visicalc
    • Dan Bricklin と Bob Frankston が 1979 年に作った
    • Excel に踏襲されている
  • ソフトウェア工場
    • ウォータフォール
    • 要求仕様, 設計仕様, テストケース等の文書形式を定型化して開発される
    • ソフトウェア技術者が一つ, 一つのソフトウェアを開発するプロセスは, 工業製品の設計作業に相当する

4. 人間的側面

  • ソフトウェア開発上の制約 = 人間の能力
    • ソフトウェア開発の自動化はある程度進んできている
    • とは言え, 属人化する面が大きく, 知識集約的且つ労働集約的
    • 労働集約的 = 「労働集約型とは、生産要素に占める資本の割合が低く、人間の労働力に頼る割合が大きい産業のこと」(こちらより引用)
  • ソフトウェア開発に関する重要な要素
    • ソフトウェアを使うのは人間
    • 要求を人から抽出して要求仕様にまとめることが最初に行うべきこと
    • 人と人の間の利害が対立することもあるので, それらの調整や社会的な観点からの判断
  • ヒューマン・インターフェースの設計
    • 汎用製品の開発でも, 利用者の使いやすさは重要な要素
    • ヒューマン・インターフェースの設計は製品の優劣に大きな影響を与える
    • 人間の認知的な側面への考慮がソフトウェア開発に占める比重が高い

以上

まとめでした.

人間的側面, やっぱり最後は人なんだなあと今の時点では思っております…

元記事はこちら

ソフトウェア工学 「第 1 章 ソフトウェアとは」のまとめ