ソフトウェア・エンジニアリング入門

ソフトウェア・エンジニアリング入門
セッション 1: はじめに
chart 1-1
このセミナー全体の目的
• 以下について理解するための “きっかけ” を提供する:
– ソフトウェアはどういうものなのか,
– ソフトウェアは実際にどうやって作られているのか,
– 自分のチームのソフトウェア・エンジニアが本当は何を
しているのか,
– 良いソフトウェアとはどのようなもので、どのように作っ
ていけばよいのか
• 「ソフトウェア・プロジェクト管理」セミナーへのイントロ
ダクションの役割を果たす。
chart 1-2
このセミナー全体のアウトライン
• セッション1: はじめに
– このセッション
• セッション2: ソフトウェア・プロセス(過程)
– 良いソフトウェアはどのように作るのかを考えます。
• セッション3: ソフトウェア・プロダクト(成果物)
– ソフトウェアの成果物、特に記述について考えます。
• セッション4: まとめ
– 全体を振り返ります。質問にお答えします。
chart 1-3
このセッションの目標
• ソフトウェアとはどういうものかを理解する。
– 相違点(ハードウェアとの~、ソフトウェア同士の
~)
– 共通点
– 問題点
• 良いソフトウェアとはどういうものかを考える。
– 品質特性
– 対象ソフトウェアの特徴と要求される品質特性
chart 1-4
このセッションのアウトライン
•
•
•
•
•
•
•
ソフトウェアとは
ソフトウェアの多様性
ソフトウェアの稼働環境
プログラミング言語
良いソフトウェアとは何か
品質特性
ソフトウェアの特徴と求められる品質特性
chart 1-5
ソフトウェアとは
• 広辞苑第五版(岩波書店)によれば:
– (1)コンピューターのプログラムを抽象的にとらえる呼
称。コンピューターの運用に関する手順や処理する情
報などを含めてもいう。ソフト。「―工学」「―危機」
• コンピューターのプログラムとは: コンピューターに対し
て、どのような手順で仕事をすべきかを、機械が解読で
きるような特別の言語などで指示するもの。
– (2)情報を表現・伝達する媒体とは区別して、情報の
内容を指す語。放送の番組や記録された音楽・映像
など。ソフト。「AV―」ハードウェア。
• ここでは、もちろん、(1)の「コンピュータ・ソフトウェア」の意味で
使用します。
chart 1-6
ソフトウェア(システム)にもいろいろある
• 用途: 社会生活基盤、産業用、医療用、個人用….
• 稼働形態: 機器組込、汎用コンピュータ+ネットワーク….
• 納入形態: 業者が納入して設定、組み込まれた機器を販
売、CD-ROMなどのメディアで販売、ネット上で希望者が
ダウンロード...
• 寿命: 一瞬~数ヶ月~1年~数年~数十年…
• バージョンアップ頻度: 毎日1回~年に1回~全くしない
– バージョンアップには、欠陥修正と仕様変更がある。
• 主な機能: 制御、通信、事務処理、情報検索、シミュレー
ション、作業支援…
chart 1-7
ソフトウェアの立場にもいろいろある
• 他のソフトウェアに対して基盤を提供するソフトウェア
– いわゆる「基盤」。OS 、DBMS、ライブラリ等。
• 他のソフトウェアに対して部品として組み込まれることを想定
して特定のサービスを提供するソフトウェア
– いわゆる「部品」「コンポーネント」。
– 部品の提供形態として、EJB(Enterprise Java Beans)等がある。
• ユーザに対して何らかのサービスを提供するソフトウェア
– いわゆる「アプリケーション」「システム」。
– 基盤の上でさまざまな部品を組み合わせて構築される。
• ソフトウェア開発に使用する道具としてのソフトウェア
– いわゆる「ソフトウェア開発支援ツール類」。CASEツール。
chart 1-8
ソフトウェアの多様性が増している
• コンピュータの高性能化、小型化、ネットワークの高速化
等に伴い、ソフトウェアへの期待は高まり広まっている。
• 使われる分野の多様化
• 利用環境の多様化
• 扱う情報の多様化 (動画、感性…)
• 利用者の多様化 (視覚等の障害、年齢、言語、文化…)
• 要求される品質の多様化
– 極めて高い品質が求められるものから
– じゅうぶん(そこそこ)良ければ良いというものまで
chart 1-9
同じSWシステムに対する要求も常に変化している
ソフトウェアを取り巻くいろいろなものが、互いに影響を及ぼしあっている。
ビジネス
顧客
経済・社会の要請
法律、規制
ソフトウェア
システム
利用者
機器・装置
ネットワーク
他システム
部品ソフト
プロトコル
コンピュータ
記述言語
基盤ソフト ツール
標準規格
符号化
chart 1-10
例: 文書を編集・印刷するソフトウェア
• 個人用のワープロソフト、業務用のレイアウトソフト等
• 扱う対象: 文書、文字列、単語、行、段落、ページ、修飾、図
表、画像、位置、大きさ等
– 文書の最も基本的な対象物は文字。文字や文字の集まりをど
う捉えるか。
• 基本的には同じ機能を持つソフトウェアでも、何を対象と考え、
対象をどのように扱うかで、いろいろと違いが出る。
• ユーザ層やニーズの幅広さ、用途等によって、求められる要
件(機能、価格、品質特性等)にも違いが出る。
• 時代や環境によっても、要件は変化する。
– 日本語もタイ語もハングル文字も同一文書で扱いたかったら?
chart 1-11
例: 現金自動預け払い機(ATM)
• 概要: 窓口を介さずに利用者が入出金等を行える機械
• 扱う対象: お札、硬貨、通帳、カード、口座、金額、ATM内部
の各装置、その口座のある勘定系システム等
• 実際には多数のセンサやポートを介して入出力を制御する。
–
センサ数: 200余り、ポート出力: 100余り 、マイクロプロセッサ15~16、100のタスクを同時実行 [坂本
1996年]
• 機能: 入金、出金、残高照会、通帳記入、振込等
• 利用者: 公衆、金融機関の保守担当者
• 他の金融機関の口座とのやりとりをするため、通信手順に
ついては業界標準が決まっている。
• 公衆の生活に直結するので、高品質が求められる。
chart 1-12
例: 企業の会計・販売管理等の基幹業務システム
•
•
•
•
目的: 会計・販売管理等の企業の業務を支援する。
利用者: 業務に精通した者からアルバイトまで
扱う情報: 金額、品目等業務に必要な情報。主に数字と文字列。
機器構成: 大企業なら、UNIXサーバ、クライアントPC、POS端末
等をネットワークで繋げるのが主流。安全および負荷分散のため、
サーバは複数設けるのが普通。
• ソフト構成: ERPまたは業務専用ソフト、DBMS、TPモニタ、ワー
クフローソフト、ジョブ管理ソフト等を利用し、足りないところは
SQL等で作り込むという場合が多い。
• 特徴: 一般に、大規模。日本の場合は、企業独自部分の作り込
みが多くなることが多く、運用・保守も困難。
• 寿命: 企業がその業務を行う限り、手直ししながら使う(?)
chart 1-13
ソフトウェアの稼働環境
• 基本的には、コンピュータ(CPUと記憶装置)
– CPUの個数、CPUのアーキテクチャや速度、メモリの容量
や速度、外部記憶装置の容量や速度等
• 周辺機器(キーボード、マウス、ディスプレイ、プリンタ等)
– インタフェース、速度、解像度等
• ネットワーク
– プロトコル、トポロジー、媒体の転送速度や特性
• OS (Operating System)
• ミドルソフトウェア (DBMS、TPモニタ等)
chart 1-14
OS (Operating System)
• OSの3つの役割:
使いやすさの提供
信頼性の提供
性能保証機能
• OSの2大機能:
– 機能マシン提供機能
• 入出力処理の汎用化、ファイルの論理化→機能マシン
– 資源管理機能 (ファイル管理、プロセス管理、メモリ管理...)
• 資源: CPU、主記憶装置、ファイル(外部記憶装置)
• OSの例:
– UNIX系, Windows系, MacOS, ITRON, リアルタイムOS系...
参考: 吉澤康文「-IT革命時代の- オペレーティングシステム」, 昭晃堂, 2000年3月, p.1-10
chart 1-15
DBMS (DataBase Management System)
• データベースを管理するソフトウェア
• データの一貫性/整合性を保証しつつ、データの保管、更新、
削除、検索等のサービスを提供してくれるもの
• 永続性サービス(persistence service)の一つ
• 現在は RDBMS (リレーショナルDBMS)が主流
• RDBは 基本的には表(table)ではなく集合を扱う
– 挿入した順番で格納されていると思いこんではいけない。
– 集合の中の要素を一意に特定するためのキーが必要となる。
• RDB操作の基本: 集合演算(select, projection, join)
• RDBMSにデータを問い合わせるための簡易言語: SQL
chart 1-16
プログラミング言語
• 手続きやデータをコンピュータに指示するために、人間が使用する
言語。
– 人間が読み書きできるものであること
– コンピュータが実行できる形式に翻訳できること
• 手続き:
– 直列処理、並列処理
– 連接、選択、反復、他への依頼、戻り
• データ型:
– 基本的なデータ型は何か。内部表現、互換性の問題。
– ユーザが柔軟にデータ型を定義できるか否か
– データ型を厳密にチェックするか否か
chart 1-17
ソフトウェア・システムで良く起きる問題点
• 開発に時間がかかりすぎる、納期遅延、予算超過...
• できたソフトウェアが使えない
– 要件分析が悪い、仕様が悪い、設計が悪い、実装が悪い
•
•
•
•
安定しない、遅い、使いにくい、正しくない...
大規模・複雑になりすぎて誰も実状がわからない
要件や環境の変化に追従できない
正しく動いていた(みたい)なのに、あるとき、突然誤動作
する…
• etc.
chart 1-18
良いソフトウェアとは何か
• 「顧客の期待と利用者のニーズ」を満たすソフトウェア
– 「顧客の期待」とは何か、「利用者のニーズ」とは何か
•
•
•
•
•
•
•
•
当面の問題を解決してくれること
必要な機能を提供してくれること
期待通り正しい結果が得られること
安全で安心して使えること
使いやすいこと
気持ちよく動作すること
期待やニーズの変化に柔軟に対応できること
…..
• 必要なときにいつでも親切にサポートしてくれること
chart 1-19
ISO 9126 の品質特性
• 機能性 (functionality)
• 信頼性 (reliability)
• 使用性 (usability)
• 効率性 (efficiency)
• 保守性 (maintainability)
• 移植性 (portability)
品質特性に関する数枚のスライドについての参考文献:
トッパン 「ソフトウェア品質向上のすすめ --新しいソフトウェア開発の標準--」, ISBN4-8101-8-87-5
原題: Software Quality -- A Framework for Success in Software Development and Support -chart 1-20
機能性 (functionality)
• 機能の集合の存在とそれらの規定された特徴の存在を
もたらす属性の集合。機能は、明示的または暗示的な必
要性を満たすものである。
• 機能性の副品質特性:
–
–
–
–
–
合目的性 (suitability)
正確性 (accuracy)
相互運用性 (interoperability)
標準適合性 (compliance)
機密保護性 (security)
chart 1-21
信頼性 (reliability)
• 規定された条件のもとで、規定された期間、その性能の
レベルを維持するソフトウェアの能力をもたらす属性の集
合。
• 信頼性の副品質特性:
– 成熟性 (maturity)
– 耐故障性 (fault tolerance)
– 回復性 (recoverability)
chart 1-22
使用性 (usability)
• 明示的、または、暗示的な複数の利用者が使用するた
めに必要とする労力および個々の使用結果による評価
に影響する属性の集合。
• 使用性の副品質特性:
– 理解性 (understandability)
– 習得性 (learnability)
– 操作性 (operability)
chart 1-23
効率性 (efficiency)
• 規定された条件下でのソフトウェアの性能レベルと使用
する資源の量との間の関係に影響する属性の集合。
• 効率性の副品質特性:
– 時間効率性 (time behavior)
– 資源効率性 (resource behavior)
chart 1-24
保守性 (maintainability)
• 仕様化された改訂を行う上で必要な労力に影響する属
性の集合。
• 保守性の副品質特性
–
–
–
–
分析容易性 (analyzability)
変更容易性 (changeability)
安定性 (stability)
試験容易性 (testability)
chart 1-25
移植性 (portability)
• ソフトウェアをある環境から別の環境へ移す場合の能力
に影響する属性の集合。
• 移植性の副品質特性
–
–
–
–
環境適応性 (adaptability)
設置容易性 (installability)
規格適合性 (conformance)
置換容易性 (replaceability)
chart 1-26
ソフトウェアの特徴と求められる品質特性
• たとえば:
– 信頼性はほとんどのソフトウェアで重視されるが、人命に
関わるシステムや公共性の高いシステムでは特に重視さ
れる。
– 寿命が長ければ、保守性や移植性が重視される。
– 制御系なら、一般に信頼性と効率性が重視される。
– 制御系で使用性が悪ければ、操作ミスによる大惨事や、売
行き不振の原因ともなる。
– 流行に左右されるものならば、安く早く作れることが最も重
視され、使用性、機能性、効率性も重視される。
– シミュレーションシステムなら、シミュレーション方法(の改
良)、結果の正しさ、速さ、わかりやすさが重視される。
chart 1-27
良いソフトウェアはどのように作ればよいか
• セッション2で考えましょう
chart 1-28