系統分析與軟體工程

Download Report

Transcript 系統分析與軟體工程

資電學院
計算機概論
F7810
第12章
系統分析與軟體工程
陳邦治編著
旗標出版社
本章重點




2
本章將介紹系統分析(system analysis)與軟體工程
(software engineering)二個主題
系統分析是指在設計系統前,對系統所進行的分析工
作
軟體工程則是研究如何運用系統化、規範化及數量化
等工程方法去進行軟體的開發和維護
軟體工程通常被分為軟體發展技術和軟體專案管理二
部份,而系統分析是軟體發展技術的重要主題,所以
可將系統分析視為軟體工程的一部份
大綱







3
導論
軟體開發生命週期
結構化分析工具及結構化方法
結構化軟體開發生命週期
軟體測試
系統轉換
軟體開發模式
導論


4
電腦資訊系統開發過程中擔任編寫程式工作的
人稱為程式設計師(programmer),而擔任規劃
系統架構工作的人則稱為系統分析師(System
Analyst;SA)
電腦資訊系統品質的優劣絕大部份是取決於系
統分析師所執行的系統分析工作品質的好壞,
因此系統分析師的素質及專業能力將會影響整
體電腦資訊系統的運作績效
系統分析師主要的工作








5
定義問題
列出系統目標
蒐集資料
分析及評估
提出解決方案
擬定系統開發計畫
定義系統規格
系統實作
執行系統切割工作時應注意事項

系統分析工作會將系統切割成子系統
(subsystem)
–
–
6
子系統間的複雜度會與切割後的子系統數量成正比
,但子系統內部本身的複雜度會與切割後的子系統
數量成反比;也就是說,切割後的子系統數量愈多
,子系統間的複雜度將愈高,但子系統本身內部的
複雜度將愈低。
盡量提高子系統本身之內聚力(cohesion),但應盡
量降低子系統間之耦合力(coupling)
「軟體工程」基礎



7
是一種可描述軟體工程產品特性的理論與科學
之基礎
是一種可對軟體工程產品與產品間關係建構模
式進行推論的數學基礎
是一種可對所發展的軟體產品之特性建立預測
能力的基本原理
傳統系統分析過程中,可能遭遇的問題




8
使用者需求可能經常變更
使用者與系統分析師之間不易溝通
使用者不易理解系統完整架構
系統不易分割,導致分工不易
軟體開發生命週期

傳統軟體開發生命週期分為九個階段
–
–
–
–
–
–
–
–
–
9
初步分析與可行性研究
細部分析
初步設計
硬體研究評估
細部設計
系統製作
撰寫系統文件
系統評估
系統運轉與維護
初步分析

「初步分析」是依據使用者的需求對系統有初
步的了解,本部分主要的工作是
–
–

10
分析並瞭解問題
確認系統範圍與目標
「初步分析」結束時會將結果撰寫成可行性分
析文件,提供「可行性研究」階段使用
可行性研究

「可行性研究」主要是根據已知的相關資料研究評估
新系統是否可行,評估的方向包括以下幾點:
–
–
–
–
–
–
11
成本因素:評估開發新系統所需支出的成本是否能接受
社會因素:評估新系統是否能被使用者接受
時間因素:評估開發新系統是否有足夠的時間
技術因素:評估開發新系統所需的人力及設備是否足夠
法律因素:評估新系統是否符合現行法令或將來可能修訂的
新法令的規定
管理因素:評估新系統是否能有較佳的管理功能
假設有一家販售運動彩卷的公司X想要開發一套資訊系統提供客戶利
用手持式行動裝置(例如手機或PDA),隨時隨地都可利用行動電話業
者提供的通訊連線服務登錄運動彩卷下注系統進行下注,則此系統
的可行性分析文件可能如下
12
細部分析

輸入
–

輸出
–
13
使用者需求及可行性分析文件。
確定系統的需求、範圍及目標後產生實體需求
(physical requirement)及功能規格書(function
specification)
初步設計

輸入
–

輸出
–
14
功能規格書
藉由把系統切割成子系統(subsystem),確定每個子
系統在軟體、硬體及人工作業方面的規格,本階段
輸出為系統規格書(system specification)
硬體研究評估

輸入
–

輸出
–
15
實體需求(細部分析階段的輸出)及硬體規格資料(初
步設計階段的輸出)。
硬體組態描述(hardware configuration description)及
硬體訂單
細部設計

輸入
–

輸出
–
16
系統規格書(初步設計階段的輸出)及硬體組態描述(
硬體研究評估階段的輸出)。
程式規格書(program specification),程式規格書中
包括輸出入格式、人工作業流程、文件及表格、程
式細部流程及實體資料庫等資料之設計
系統製作

本階段的工作包括
–
–
–
–
17
撰寫程式
系統測試
系統實際操作測試
系統實施等
撰寫系統文件

18
編寫系統文件說明書(system documents)
系統評估

19
評估系統的優缺點
系統運轉與維護

20
藉由修改軟體使系統能符合使用者需求
結構化分析工具及結構化方法




結構化分析是一種具嚴謹性及組織性的方法
利用結構化分析工具有容易學習及方便維護等優點
結構化方法(structured methodology)是指利用結構化分
析工具來表達資料處理之過程
常用的結構化分析工具有以下四種
–
–
–
–
21
資料流程圖
資料字典
資料結構圖
迷你規格書
資料流程圖


「資料流程圖」的作法是將系統分成幾個部份
,並利用圖形來描述系統中每個部份之間資料

流動的情形,並以網狀結構來表示
「資料流程圖」包含四個基本元件
–
–
–
–
22
處理程序(process)
資料流(data flow)
源頭或終點(source or sink)
資料儲存體(data store)
「資料流程圖」的繪製原則



23
先畫「資料流」,若資料必須轉換,則在轉換
處「處理程序」符號。「資料儲存體」最後才
處理
「資料流」先命名,「處理程序」次之。「處
理程序」命名原則最的是由一個動詞和一個名
詞組成
如果某個「處理程序」無法適當命名,必須考
慮是否應與其他「處理程序」合併或自行執行
分割動作
「資料流程圖」範例
教師與學生之間關於成績的輸入及輸出間的「資料流程圖」
24
「資料流程圖」的三個階層

頂層(top level)「資料流程圖」
–

底層(bottom diagram)「資料流程圖」
–

由一些不能再被分割的處理程序所構成,此時每個處理程序
代表一種基本功能
中層(middle diagram)「資料流程圖」
–
25
只有一個尚未分割的處理程序,又稱為context diagram,本類
流程圖可顯示出系統的範圍(boundaries)
介於頂層「資料流程圖」及底層「資料流程圖」間的資料流
程圖
三個階層的「資料流程圖」範例
26
在上圖的範例中,頂層只有一個名稱為1的處理程序,中層則是將處理程序1
分割為三個子程序1.1、1.2及1.3。中層的三個子程序再各自切割為底層中不
可再分割的處理程序
資料字典


27
「資料字典」是指所有在「資料流程圖」中所
用到項目,分別是「處理程序」、「資料流」
、「資料儲存體」及「資料元素」(data
element)的邏輯定義集合
「資料元素」是指不可再細分的資料流組成元
素
製作「資料字典」時應遵守的原則



28
資料定義應簡單清楚且不可重複定義
容易更新
搜尋快速
「資料字典」的運算子






29
「=」:表示「等於」。
「+」:表示「多個元素依序出現」。例如成績單=准考證號碼
+姓名+國文成績+數學成績
「{ }」:表示在{}內的資料出現0次、1次、...。比方說{考生姓
名}的可能結果有無窮多種,如0位考生、1位考生、2位考生、
……..
「[ ]」:表示從多個元件中選擇一項。比方說
代表由三個考場中選擇一個
「( )」:表示選擇或不選擇某一元件
「*註解說明 *」:表示在「*......*」間的內容為註解
「資料字典」的階層化結構


階層化結構是利用由上而下
的方式來定義資料
例如:
–
–
–
–
–
–
30
考場=台北考場+台中考場
+高雄考場
台北考場=台大考場+師大
考場+政大考場
台中考場=興大考場+東海
考場+靜宜考場+逢甲考場
高雄考場=中山考場
台大考場=電機系考場+資
工系考場+醫學系考場+外文
系考場+中文系考場
……………
資料字典的組成

資料字典包含四種不同的項目
–
–
–
–
31
資料流項目
資料元素項目
資料儲存體項目
處理程序項目
資料流項目

資料流項目由以下四部份所構成
–
資料流名稱(name)

–
別名(alias)

–
資料流的組成項目
說明(notes)

32
若資料流有二個或二個以上的名稱,則這些不同的名稱彼
此互為別名
組成(composition)

–
簡明易懂的名稱為佳
用來記錄其他有關的特性
資料流項目範例
33
資料元素項目

資料元素是指不能再被細分的資料流,由以下
四部份所構成:
–
–
–
資料元素名稱(name)
別名(alias)
值和意義

–
34
分為連續式(continuous)及離散式(discrete)二種
說明(notes)
資料元素範例
35
資料儲存體項目




資料儲存體名稱(name)
別名(alias)
組成(composition)
組織(organization)
–

36
組織欄位是用來描述檔案中記錄(record)的存取方
式,如索引存取(index access)或循序存取(sequential
access)等方法
說明(notes)
資料儲存體範例
37
處理程序項目

處理程序項目含以下四項
–
–
–
處理程序名稱(name)
編號
描述

–
38
處理程序的處理邏輯描述,通常使用結構化英文、決策樹
或決策表描述
說明(notes)
處理程序範例
39
資料結構圖


40
第三個要介紹的結構化分析工具是「資料結構
圖」(Data Structure Diagram;DSD )
「資料結構圖」是用於顯示資料儲存體中,各
種資料的存取途徑及描述系統中檔案間的關係
或是資料庫組織架構
「資料結構圖」之繪製原則



41
一個資料儲存體(或檔案)利用一個方形來表示,該資
料儲存體的存取鍵(access key)標示在此圖形的上半部
如果資料儲存體X能夠存取資料儲存體Y時,則用箭頭
線連結兩個資料儲存體,箭頭的方向是由X到Y。若欲
執行存取動作時,X與Y的存取鍵不同時,應把名稱註
明在箭頭線旁邊,相同時則可不寫
若被允許存取某個資料儲存體,則該資料儲存體以及
該資料儲存體在資料結構圖中所指向的任何資料儲存
體的內容均可被存取
「資料結構圖」範例
42
迷你規格書



43
第四個要介紹的結構化分析工具是「迷你規格
書」(mini-specification)
「迷你規格書」是「資料字典」中用來描述階
層化「資料流程圖」中最底層處理程序的基本
功能
製作「迷你規格書」必須符合簡潔且完整之規
定
「迷你規格書」製作原則




44
在階層化的資料流程圖中的每一個最底層處理程序均
必須有對應的「迷你規格書」來描述,其內容必須包
含該處理程序的輸入和輸出資料流的轉變原則
描述「做什麼?」(What to do?),不必描述「如何做
?」(How to do?)
「迷你規格書」的內容和「結構化規格書」的內容不
得重複
「迷你規格書」的內容應盡量不重覆,也就是達到正
交(orthogonal)的目標
「迷你規格書」內容
45
「結構化英語」(structured English)



46
「結構化英語」(structured English)是「迷你規
格書」的一種作法
「結構化英語」是用英語來表達計算過程,主
要的處理對象是邏輯結構較複雜且包含重覆結
構敘述之問題
「結構化英語」的限制是僅提供結構化程式設
計之三大結構:循序、選擇及反覆結構的語法
規則。用英語來表達計算過程
結構化英語使用的字彙

在結構化英語中使用的字彙有以下三種
–
–
在資料字典中已定義的字彙
循序、選擇及反覆結構中的保留字

–
47
如for、while、if-then-else等
命令式動詞
「結構化英語」特點




不需語言處理器加以處理,因此較不受語法之限制
具高度之機器獨立性
可幫助檢查設計之邏輯觀念是否正確
英語不佳者難以使用
通常用來表達程式的計算過程的演算法若是以英語來
寫作便可視為是以結構化英語來設計的方法
48
結構化軟體開發生命週期

49
本節將介紹利用前節介紹的結構化分析工具及
結構化方法設計出來的「結構化軟體開發生命
週期」之相關細節
「結構化軟體開發生命週期」五個階段





50
初步分析與可行性研究
結構化分析階段
結構化設計階段
系統製作階段
系統維護階段
初步分析與可行性研究

本階段主要的工作分為二項
–
「初步分析」

–
「可行性研究」 (feasibility study)

51
期望能初步瞭解系統的目的、功能、需求、作業流程、及
限制條件等事項。
根據已知的相關資料研究評估是否有足夠的金錢與時間來
完成系統,並將結果撰寫成文件,提供給下一個分析階段
來使用
結構化分析階段

本階段包含七個子階段
–
–
–
目前系統環境研究
目前邏輯資料流程圖推導
產生出新的邏輯系統

–
–
決定系統自動化的程度
量化選擇

–
根據新的實體資料流程圖以及成本效益研究報告,加以選擇,產生出所
要的實體需求,預算及進度規劃
產生「結構化規格書」

52
得到成本與效益研究報告
選擇

–
得到新的邏輯資料流程圖、迷你規格書以及資料字典
將「迷你規格書」、「資料字典」及選擇好的「資料流程圖」,加以整
理成「結構化規格書」
結構化設計階段

本階段包含
–
「推導出結構圖」

–
–
「模組設計」
「包裝設計」

53
「推導出結構圖」是根據資料流程圖導出結構圖
「包裝設計」則是得到設計結果及測試計畫
系統製作階段

系統製作階段主要應進行的工作
–
–
撰寫程式碼(coding)
測試

–
–
54
測試工作分為白箱測試(white-box testing)與黑箱測試
(black-box testing)二類
系統文件撰寫
系統評鑑等工作
系統維護階段


55
系統維護是指修改軟體使其能滿足目前的需求
系統維護是一種高成本的工作
「結構化軟體開發生命週期」各個階段之關連圖
56
軟體測試


測試階段的工作是檢測在製作階段完成之成品
的正確性
常見的測試法
–
–
57
「白箱測試」
「黑箱測試」
白箱測試


「白箱測試」是測試軟體元件的內部結構,檢查軟體
元件是否能依照設計正確無錯誤的執行
本技術的測試實例是以程式的控制結構(control
structure)為依據進而設計而得,包括的測試細節如下
–
–
–
–
58
測試所有內部資料結構
對於所有含有「條件結構」及「反覆結構」中的布林運算式
之所有可能值均必須被執行過
對於所有「反覆結構」的內部敘述與所有條件可能值均須檢
查
確保程式中的每一組「獨立路徑」控制流程均應被檢查
黑箱測試




59
黑箱測試是依據軟體元件由外部所見的功能來
測試軟體元件是否能夠正確執行
此類測試主要的目標是以程式功能為導向
通常「白箱測試」會先做,確認程式本身沒問
題後才會執行「黑箱測試」
測試過程應特別注意檢驗輸入資料的最大可能
值及最小可能值之執行結果是否有誤
範例

假設有一個程式可針對最多50筆輸入的整數資
料(值介於0~100之間)進行排序,輸出為排序
之結果
–
–
60
執行受測程式內的每一個敘述至少一次,以確定程
式沒有錯誤,這類的測試模式屬於「白箱測試」
若以最大值(100)和最小值(0),以及最靠近最大值
(99)和最小值(1)的數值來做作為輸入資料,這種測
試方法稱為邊界值分析法(boundary testing),屬於
「黑箱測試」的一種
系統轉換



61
當系統完成了程式設計與測試後,便進入上線
前的系統轉換階段
系統轉換應考慮到新舊交替的適應性問題,同
時程式雖然經過測試,但是多半是在模擬的情
況下進行,在真實的工作環境下可能會發生事
先未曾料到的問題,因此系統轉換的過程就顯
得十分重要
系統轉換是指由一個舊系統轉換為新系統,通
常是系統開發過程中的最後一個步驟
系統轉換的方式




62
直接轉換(direct conversion)
平行轉換(parallel conversion)
試辦轉換(pilot conversion)
漸進式轉換(phase-in conversion)
直接轉換



直接轉換又稱為立即轉換(immediate conversion)
以新系統立即完全替換舊系統
若要採用直接轉換法必須滿足以下條件
–


63
新系統已經測試完全並保證不會有任何問題
本轉換法是最簡單的轉換方式,系統轉換的成本最低
風險最高,因為一旦舊系統完全被取代而新系統卻無
法正常運作,會有很大之影響
平行轉換




64
平行轉換方式適合較複雜的系統
在轉換的過程中(通常是二至三週),新舊系統
同時運作
所有的作業新舊系統皆同時處理,藉此檢驗新
系統之運作是否正常,待新系統可以正常後才
停止舊系統之運作
本法十分可靠方法但成本很高
試辦轉換




65
利用過去的資料供新系統進行處理,然後再與
舊系統之結果比較
此法可對新系統做全面性之檢測,因此安全性
較高
本方法可以讓新系統在轉換前徹底被測試,並
可讓系統管理人員熟悉新系統之操作
系統可靠度較高,但成本很高
漸進式轉換

66
本法混合上述至少兩種的轉換方法且將系統細
分成數個部份,各個部份分批且可能利用不同
轉換方法進行轉換工作
軟體開發模式


軟體開發通常會包含分析、設計與製作三個主
要階段
常用的軟體開發模式
–
–
67
「建構修改循環模式」
「瀑布式開發模式」
建構修改循環模式(build and fixed model)


68
本模式的作法是先推出一個初始版本給使用者
使用,再根據使用者的回應意見持續修改系統
,這個修改的過程要持續進行到使用者滿意後
才會結束
系統在使用一段時間之後,若發現程式有問題
或功能不足,另一個修改循環將會開始,而這
樣的循環會一直持續下去
建構修改循環模式圖示
若使用「建構修改循環
模式」將耗費許多時間
在「修改」的動作上,
如此一來將使得系統維
護工作比較困難,無法
對軟體之功能上做較大
幅度的擴充,進而使得
軟體品質不佳
69
瀑布式開發模式 (waterfall model)



70
在本模式中必須將系統的開發流程定義成多個階段,
各個階段的開始與結束均應定義明確,不同階段間的
轉換必須進行審查,而且應交付的文件也必須清楚定
義,各個階段依順序執行且僅循環一次
若系統需求一旦變更,將導致後方的階段也必須變更
,因此本模式存在相當大的依存問題(dependency)
通常這種開發模式比較適合大型的專案開發,如作業
系統或編譯程式等
瀑布式開發模式圖示
假設一系統的開發
分為分析階段、設
計階段及製作階段
等三個階段,則其
「瀑布式開發模式
」將被定義如右圖
71