ソフトウェア工学の概要kussharo.complex.eng.hokudai.ac.jp/~kurihara/classes/se/...(software...
TRANSCRIPT
1
ソフトウェア工学の概要INTRODUCTION TO SOFTWARE ENGINEERING
1 ソフトウェア工学
Software Engineering
世の中のソフトウェア化/サービス化
■ハードウェアからソフトウェアへ
■モノからサービスへ
自動車でさえ,開発費の %以上(?)はソフトウェア
Software As A Service製造業から 業へ
人や社会の営みを支援.
機器に組み込まれて機器を制御.
業務ソフトウェア
ビジネス(商業・流通,金融,行政,教育,管理)Webサービス(一般ユーザ)
組込みソフトウェア
産業設備(工場,プラント),交通機器(飛行機,自動車)通信機器(スマートフォン),医療機器(自動手術機器)
■人や社会に欠かせないソフトウェア
40
情報サービス
(business software)
(embedded software)
2
ソフトウェアの特徴
• 多種多様
• 大規模・複雑
• 変化が激しい
ソフトウェア開発のむずかしさ
ソフトウェア科学/ソフトウェア工学→良いソフトウェアの良い作り方
(プロダクト) (プロセス)Product Process
【価値観の問題】良いソフトウェアプロダクトとは?良いソフトウェアプロセスとは?
ソフトウェア工学とは目的とするソフトウェアを,時間やコストなどの現実的な制約の中で開発したり利用したりするための理論や実践的技術の体系
ソフトウェア工学
時間制約 コスト制約
理論/実践的技術
目的(要求)
ソフトウェア製品
3
ソフトウェア開発工程の概略と問題点
要求定義
顧客の要求
設 計
実 装
テ ス ト
要求仕様書
設計書
プログラム 製品
上流工程
下流工程
多くの不具合が上流工程で作り込まれる
多くの不具合は下流工程で発見される
手戻り!
requirements definition
design
implementation
testing
要求の変化!
プロジェクト管理
ソフトウェアプロダクトの古い価値観
• 高速に動作させたい
• 小さなシステムでも動作させたい
時間(CPU)効率の良いプログラム
資源(メモリ,外部記憶)効率が良いプログラム
Efficiency
Efficiency
4
ソフトウェアプロダクトの現代的な価値観
情報システムは生命や財産を守っている
医療,飛行機,原子力発電,銀行, 証券
社会やビジネスの環境が激しく変化している
社会制度の改正,価値観の変化,技術の進歩
安全・安心なソフトウェア
変化にすばやく追従して進化するソフトウェアEvolution
Security, Dependability
ソフトウェア開発の基本的な考え方(1/2)
• 会議で仕様/設計/実装の確認(レビュー)
• ソフトを実行して動作確認(テスト)
• ソフトを実行せずにツールで解析(静的解析)
• 数理論理学に基づくツールの活用(形式手法)
安全・安心なソフトウェア
正しさ,妥当性,セキュリティ正 し い = 実装が仕様を満たす (correct)
(valid)
(review)
(testing)
(static analysis)
(formal method)
(secure)セキュア = 悪意ある人やソフトに対して安全妥 当 = 要求が達成されている
5
ソフトウェア開発の基本的な考え方(2/2)
変化にすばやく追従できるソフトウェア
• 構造を明確に(構造化)
• 抽象的に表現(抽象化)
• モデルの作成(モデリング)
• 設計やコードの再利用
• 変化にすばやく対応できる開発プロセス
• 人工知能技術の活用
ソフトウェアの読みやすさ,修正しやすさの向上
(structuring)
(abstraction)
(reuse)
(software process)
(AI)
(modeling)
ソフトウェアプロセスの価値観
• 品 質: システムへの要求が満たされる
• コスト: 費用(おもに人件費)が少ない
• 納 期: 所定の期限までに納品
• 変 化: 要求の変化に適応して進化させやすい
Delivery
Cost
Quality
Change
6
この授業で学ぶ事項の位置付け(1/2)
構造化プログラミング
プログラミング作法
プログラムの正当性
抽象データ型
構造的帰納法
オブジェクト指向プログラミング
並行プログラミング
モデル検査
ソフトウェアモデリング
デザインパターン
ソフトウェアアーキテクチャ
ソフトウェアプロセス
形 式 手 法人 工 知 能
構 造 化
抽 象 化
モデリング
再 利 用
開発プロセス
そ の 他
学部3年生向けに,基本的な考え方に重点がある
ソフトウェア工学の概要
この授業で学ぶ事項の位置付け(2/2)
構造化プログラミング
プログラミング作法
プログラムの正当性抽象データ型
構造的帰納法
オブジェクト指向プログラミング
並行プログラミング
モデル検査
ソフトウェアモデリング
デザインパターンソフトウェアアーキテクチャ
ソフトウェアプロセス
設 計
要 求 定 義
実 装
テ ス ト
学部3年生向けに,下流工程の技術にやや重点がある
ソフトウェア工学の概要
7
演習問題 1
(1)ソフトウェア工学で使う「プロダクト」および「プロセス」という言葉の意味について,簡単に説明しなさい。
(2)ソフトウェアの開発工程の概要を述べ,その主要な問題点を簡単に述べなさい.
(3)ソフトウェアの不具合が社会的問題になった事例を調べて概略を述べなさい.
(4)社会やビジネスの環境の変化に適応して進化しているソフトウェアの実例を示し,それがなぜ進化する必要があるのか簡単に説明しなさい.