軟件工程課件_第1頁
軟件工程課件_第2頁
軟件工程課件_第3頁
軟件工程課件_第4頁
軟件工程課件_第5頁
已閱讀5頁,還剩275頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

軟件工程--

原理、方法與應(yīng)用第一章緒論軟件與軟件危機軟件工程學傳統(tǒng)軟件工程和面向?qū)ο筌浖こ誊浖こ痰膽?yīng)用軟件程序、軟件與軟件產(chǎn)品獨唱-->小合唱-->合唱-->萬人大合唱

|||簡單程序較復(fù)雜程序軟件軟件定義:軟件=程序+數(shù)據(jù)+文檔程序:按事先設(shè)計的功能和性能需求執(zhí)行的指令序列數(shù)據(jù):是程序能正常操縱信息的數(shù)據(jù)結(jié)構(gòu)文檔:與程序開發(fā)、維護和使用有關(guān)的圖文材料軟件的特征軟件是邏輯的,而不是物理的軟件開發(fā)與人關(guān)系密切軟件開發(fā)成本大軟件生產(chǎn)是簡單的拷貝軟件不會磨損和老化軟件受環(huán)境影響大軟件維護易產(chǎn)生新的問題軟件開發(fā)的發(fā)展過程計算機應(yīng)用發(fā)展軟件數(shù)量多規(guī)模大軟件成本高質(zhì)量低個體化軟件開發(fā)方法軟件維護困難軟件危機軟件工程軟件危機定義計算機軟件的開發(fā)和維護過程所遇到的一系列嚴重問題表現(xiàn)對軟件開發(fā)成本和進度的估算很不準確用戶很不滿意質(zhì)量很不可靠沒有適當?shù)奈臋n軟件成本比重上升供不應(yīng)求:軟件開發(fā)生產(chǎn)率跟不上計算機應(yīng)用迅速深入的趨勢硬件/軟件成本變化趨勢

硬件

軟件

100%0%195519701985軟件技術(shù)進步落后于需求增長軟件危機原因客觀:軟件本身特點邏輯部件規(guī)模龐大主觀:不正確的開發(fā)方法忽視需求分析錯誤認為:軟件開發(fā)=程序編寫輕視軟件維護軟件危機解決途徑組織管理工程項目管理方法技術(shù)措施軟件開發(fā)技術(shù)與方法軟件工具軟件工程學的范疇軟件工程學指導(dǎo)計算機軟件開發(fā)和維護的工程學科工程管理+開發(fā)技術(shù)軟件開發(fā)技術(shù)軟件開發(fā)方法學軟件工具軟件工程環(huán)境軟件工程管理軟件管理學軟件經(jīng)濟學軟件度量學兩種程序設(shè)計方法程序設(shè)計的兩次飛躍結(jié)構(gòu)化程序設(shè)計程序=數(shù)據(jù)結(jié)構(gòu)+算法面向?qū)ο蟪绦蛟O(shè)計程序

=對象

+消息

面向過程和面向?qū)ο蟮木幋a存款取款利息結(jié)算帳戶余額帳戶余額利息結(jié)算存款取款兩類軟件工程方法傳統(tǒng)軟件工程軟件分析

總體設(shè)計

詳細設(shè)計

面向過程的編碼

測試

面向?qū)ο筌浖こ誊浖治雠c對象抽取

對象詳細設(shè)計

面向?qū)ο蟮木幋a

測試

軟件工程的應(yīng)用軟件工程指導(dǎo)中小型軟件軟件工程指導(dǎo)大型軟件軟件工程的成就軟件工程的局限第二章軟件開發(fā)模型傳統(tǒng)開發(fā)模型瀑布模型(waterfallmodel)快速原型模型(rapidprototypemodel)演化開發(fā)模型增量模型(incrementalmodel)螺旋模型(spiralmodel)面向?qū)ο箝_發(fā)模型構(gòu)件集成模型(componentintegrationmodel)

形式化開發(fā)模型轉(zhuǎn)換模型(transformationalmodel)凈室模型(cleanroommodel)軟件生存周期計劃時期問題定義可行性分析開發(fā)時期需求分析軟件設(shè)計編碼測試運行時期軟件維護瀑布模型問題定義可行性研究需求分析軟件設(shè)計編碼測試維護計劃時期開發(fā)時期運行時期瀑布模型特點階段的順序性和依賴性推遲實現(xiàn)的觀點質(zhì)量保證存在問題不適合需求模糊的系統(tǒng)快速原型模型需求分析原型開發(fā)最終系統(tǒng)設(shè)計原型評價最終系統(tǒng)實現(xiàn)用戶反饋快速原型模型特點快速開發(fā)工具循環(huán)低成本種類漸進型拋棄型增量模型規(guī)格說明設(shè)計實現(xiàn)和集成交付客戶規(guī)格說明設(shè)計實現(xiàn)和集成交付客戶規(guī)格說明設(shè)計實現(xiàn)和集成交付客戶規(guī)格說明設(shè)計實現(xiàn)和集成交付客戶增量1增量2增量3增量n增量模型增量小而可用的軟件特點在前面增量的基礎(chǔ)上開發(fā)后面的增量每個增量的開發(fā)可用瀑布或快速原型模型迭代的思路螺旋模型螺旋模型特點瀑布模型+快速原型+風險分析迭代過程一個螺旋式周期

確定目標,選擇方案,選定完成目標的策略

風險角度分析該策略

啟動一個開發(fā)階段

評價前一步的結(jié)果,計劃下一輪的工作

構(gòu)件集成模型構(gòu)件集成模型特點面向?qū)ο蠡跇?gòu)件庫融合螺旋模型特征支持軟件開發(fā)的迭代方法

軟件重用面向?qū)ο蟮幕靖拍顚ο驩bject類Class繼承Inheritance消息Message面向?qū)ο髮ο?類+繼承+消息通信對象Object客觀世界中的實體狀態(tài)(靜態(tài)屬性Attributes)操作(動態(tài)行為Methods)對象::=<ID,MS,DS,MI>IdentifierMethodSetDataStructureMessageInterface對象的特點以數(shù)據(jù)為中心對象是主動的實現(xiàn)數(shù)據(jù)封裝本質(zhì)上有并行性模塊獨立性好類Class和實例Instance類相同屬性和行為的對象的抽象實例特定類所描述的一個具體對象子類直接繼承父類的數(shù)據(jù)和操作繼承的傳遞性,單繼承、多重繼承繼承(Inheritance)家具桌子椅子衣柜床椅子的實例多態(tài)性Polymorphism概念不同類層次共享一個方法名相同的參數(shù)特征和返回值類型多種不同實現(xiàn)C++中虛函數(shù)實現(xiàn)動態(tài)聯(lián)編重載Overloading函數(shù)重載同一作用域多個名字相同的函數(shù)參數(shù)特征不同靜態(tài)聯(lián)編運算符重載消息Message對象間的交互手段形式:Message:[dest,op,para]DestinationObjectOperationParameters轉(zhuǎn)換模型形式化規(guī)格說明與需求比較后修正變換2變換1變換n測試形式化開發(fā)記錄系統(tǒng)需求目標系統(tǒng)轉(zhuǎn)換模型特點形式化軟件開發(fā)方法

形式化需求規(guī)格說明

變換技術(shù)程序自動生成技術(shù)

確保正確凈室模型需求收集盒結(jié)構(gòu)規(guī)約形式化設(shè)計統(tǒng)計性使用測試正確性證明代碼生成與檢查測試計劃認證需求收集盒結(jié)構(gòu)規(guī)約形式化設(shè)計統(tǒng)計性使用測試正確性證明代碼生成與檢查測試計劃認證需求收集盒結(jié)構(gòu)規(guī)約形式化設(shè)計統(tǒng)計性使用測試正確性證明代碼生成與檢查測試計劃認證增量1增量2增量n凈室模型凈室思想在分析和設(shè)計階段消除錯誤在“潔凈”狀態(tài)下實現(xiàn)軟件制作形式化盒結(jié)構(gòu)表示分析和設(shè)計正確性驗證增量模型小結(jié)軟件開發(fā)模型是不斷發(fā)展的各種軟件開發(fā)模型各有優(yōu)缺點選用時不必拘泥與某種模型可組合多種模型也可根據(jù)實際創(chuàng)建新的模型第三章軟件需求分析需求分析的任務(wù)與步驟需求獲取的常用方法分析建模軟件需求說明結(jié)構(gòu)化分析方法面向?qū)ο蠓治龇椒ㄐ枨蠓治龅娜蝿?wù)和步驟需求分析的任務(wù)建立分析模型

編寫需求說明

需求分析的步驟需求獲取

需求提煉

需求描述

需求驗證

需求獲取的常用方法聯(lián)合分析小組

用戶代表、領(lǐng)域?qū)<液拖到y(tǒng)分析員客戶訪談

充分準備,尋找共同語言循循序漸進、逐步逼近

問題分析與確認

多個來回分析建模結(jié)構(gòu)化分析模型面向?qū)ο蠓治瞿P头治瞿P兔枋龉ぞ逥FD、DD和PSPECCFD、CSPEC和STDE-R圖

用例圖,對象-關(guān)系圖,對象-行為圖

結(jié)構(gòu)化分析模型加工說明數(shù)據(jù)對象說明CFD,STD圖DFD圖E-R圖DD控制說明面向?qū)ο蠓治瞿P蛯傩?、操作、協(xié)作者對象-行為模型對象-關(guān)系模型類/對象模型使用實例分析模型描述工具結(jié)構(gòu)化分析工具DFD、DD和PSPECCFD、CSPEC和STDE-R圖

面向?qū)ο蠓治龉ぞ哂美龍D,類對象圖對象-關(guān)系圖對象-行為圖數(shù)據(jù)流圖DFD描述系統(tǒng)邏輯模型信息在系統(tǒng)中的流動和處理用途交流信息的工具結(jié)構(gòu)化分析和設(shè)計的工具

數(shù)據(jù)流圖DFD組成符號圓框代表加工箭頭代表數(shù)據(jù)流向方框代表源點和終點雙杠表示數(shù)據(jù)文件或數(shù)據(jù)庫分層從高層到低層分解前后的數(shù)據(jù)流必須一致命名數(shù)據(jù)流處理領(lǐng)書單

進書通知

購書單

缺書單

DFD練習—售書系統(tǒng)學生教材購銷系統(tǒng)書庫保管員領(lǐng)書單進書通知

進書通知

購書單缺書單

DFD練習—售書系統(tǒng)1銷售2采購書庫保管員學生F1教材存量表

F2缺書登記表

數(shù)據(jù)字典DDDFD中所有元素的定義的集合內(nèi)容數(shù)據(jù)流數(shù)據(jù)流分量數(shù)據(jù)存儲處理(一般不用DD描述)數(shù)據(jù)字典DD定義數(shù)據(jù)的方法自頂向下分解數(shù)據(jù)數(shù)據(jù)元素的組合方式順序:A+B選擇:[A|B]重復(fù):1{A}5可選:(A)數(shù)據(jù)字典DDDD的用途分析階段的交流工具包含控制信息數(shù)據(jù)庫設(shè)計的基礎(chǔ)例子P41例3.6加工說明加工說明PSPEC說明DFD中的每個加工描述工具結(jié)構(gòu)化語言判定表判定樹加工說明—例子結(jié)構(gòu)化語言P42-43,例3.7,3.8判定樹P44,例3.9判定表P44,例3.9CFD和CSPEC適合實時系統(tǒng)的分析與DFD和PSPEC類似和DFD與PSPEC配合使用表示控制流和控制加工CFD和DFD的關(guān)系

數(shù)據(jù)條件控制輸入加工激活信號控制輸出輸入數(shù)據(jù)加工模型PSPEC控制模型CSPEC輸出數(shù)據(jù)

控制輸入CFD的符號表示控制信息或事件引用控制說明DFD和CFD例子---DFD信號半分鐘數(shù)據(jù)光電管采集計數(shù)傳送工控機處理實時數(shù)據(jù)顯示班數(shù)據(jù)處理半小時數(shù)據(jù)班數(shù)據(jù)DFD和CFD例子---CFD翻屏人工驅(qū)動信息時鐘半小時半分鐘某型號累加物品經(jīng)過信號半分鐘數(shù)據(jù)光電管采集計數(shù)傳送工控機處理實時數(shù)據(jù)顯示班數(shù)據(jù)處理半小時數(shù)據(jù)班數(shù)據(jù)STD描述軟件狀態(tài)變遷符號表示矩形---系統(tǒng)狀態(tài)箭頭---狀態(tài)轉(zhuǎn)變方向規(guī)則表達式---事件/觸發(fā)行為狀態(tài)1狀態(tài)2事件/觸發(fā)行為STD例子20秒到/翻屏生成最新數(shù)據(jù)/翻屏半小時到/工控處理半分鐘到/傳送空閑/采集物品經(jīng)過/計數(shù)采集PLC計數(shù)傳送工控處理實時翻屏E-R圖用于對復(fù)雜數(shù)據(jù)的用作數(shù)據(jù)分析和建模實體、屬性和關(guān)系組成符號0:11:10:m1:mE-R圖例子電話機生產(chǎn)廠商經(jīng)銷商用戶生產(chǎn)購買使用經(jīng)銷用例圖用例:系統(tǒng)和外部角色的交互符號表示:

系統(tǒng)名稱系統(tǒng)用例名用例角色關(guān)聯(lián)UseCase圖例子保險商務(wù)系統(tǒng)簽定保險單銷售統(tǒng)計客戶統(tǒng)計客戶保險銷售員用例之間的關(guān)系擴展關(guān)系使用關(guān)系組合關(guān)系《擴展》簽保險單簽汽車購買契約《使用》《使用》簽保險單簽汽車保險單簽房屋保險單對象-關(guān)系圖從E-R圖演變而來描述對象間關(guān)系學生書出版商購買來自1:10:m1:11:1對象-行為圖描述對象的動態(tài)行為對象狀態(tài)轉(zhuǎn)換圖事件軌跡圖事件流圖對象狀態(tài)轉(zhuǎn)換圖例子加紙紙用完故障修復(fù)打印故障打印完成接到打印命令就緒打印缺紙故障事件軌跡圖例子[打印機忙]保存文件[打印機就緒]打印文件打印文件打印文件計算機打印服務(wù)器打印隊列打印機事件流圖例子[打印機忙]保存文件[打印機就緒]打印文件打印文件計算機打印隊列打印服務(wù)器打印機軟件需求說明(SRS)引言信息描述功能描述行為描述質(zhì)量保證接口描述其它結(jié)構(gòu)化分析方法基本步驟自頂向下,功能分解分層DFD由后向前,定義數(shù)據(jù)和加工DD,PSPEC根據(jù)需要,分析復(fù)雜數(shù)據(jù)和動態(tài)模型E-R圖,CFD,CSPEC,STD編寫SRSDFD的復(fù)審父圖和子圖不平衡未區(qū)分局部文件和局部外部項分解的速度太快不遵守加工編號規(guī)則面向?qū)ο蠓治龇椒ɑ静襟E定義系統(tǒng)的用例領(lǐng)域分析,建立類對象模型建立對象-關(guān)系模型建立對象-行為模型編寫SRS定義用例回答問題—發(fā)現(xiàn)角色使用系統(tǒng)主要功能的人是誰?

需要借助于系統(tǒng)完成日常工作的人是誰?

誰來維護、管理系統(tǒng),保證系統(tǒng)正常工作?

系統(tǒng)控制的硬件設(shè)備有哪些?

系統(tǒng)需要和哪些其它系統(tǒng)接口?

對系統(tǒng)產(chǎn)生的結(jié)果感興趣的人和事是哪些?

定義用例回答問題—發(fā)現(xiàn)用例角色需要從系統(tǒng)中獲得哪種功能?需要角色做什么?

角色需要讀取、產(chǎn)生、刪除、修改或存儲系統(tǒng)中的某種信息嗎?

系統(tǒng)中發(fā)生的事件需要通知角色嗎?角色需要通知系統(tǒng)某件事嗎?這些事件能干什么?

系統(tǒng)需要輸入/輸出的是什么信息?這些輸入/輸出信息從哪兒來

?到哪兒去?

系統(tǒng)當前的實現(xiàn)要解決的問題是什么?

領(lǐng)域分析

目的發(fā)現(xiàn)或創(chuàng)建可廣泛應(yīng)用的類,以便復(fù)用

分析特定的應(yīng)用領(lǐng)域

形式公共對象、類、子集合和框架等類對象建模(一)確定分析模型中的類對象考察系統(tǒng)用例匯總名詞、名詞短語得到候選對象確定類對象必要的信息、需求、服務(wù)多個屬性、公共操作類對象建模(二)定義類結(jié)構(gòu)與層次一般----特殊整體----部分定義主題和子系統(tǒng)高層抽象例子電話話筒按鍵連接線話機人電話人教師大學生小學生學生中學生建立對象—關(guān)系模型步驟復(fù)審需求描述和用例陳述找出表示關(guān)系的動詞或動詞短語用線連接起來,箭頭表示方向給連接命名,標上基數(shù)對象-關(guān)系圖例子1:10:11:11:10:11:m1:11:11:m0:m1:11:10:m1:11:11:m1:11:m1:11:m1:1部門流水線工序材料在制品1:m不良品指標數(shù)據(jù)1:m1:1規(guī)格實時數(shù)據(jù)建立對象行為模型基本過程評估用例,理解系統(tǒng)中的交互序列找出驅(qū)動交互序列的事件為每個用例創(chuàng)建事件軌跡為對象創(chuàng)建狀態(tài)轉(zhuǎn)換圖第四章軟件設(shè)計概述軟件設(shè)計的任務(wù)軟件設(shè)計的基本概念模塊化設(shè)計設(shè)計需要處理的問題設(shè)計文檔及其復(fù)審軟件設(shè)計的任務(wù)分析模型設(shè)計模型設(shè)計文檔回答Howtodo?可以分為概要設(shè)計、詳細設(shè)計軟件設(shè)計包括數(shù)據(jù)設(shè)計體系結(jié)構(gòu)設(shè)計接口設(shè)計過程設(shè)計軟件設(shè)計的任務(wù)數(shù)據(jù)設(shè)計信息模型軟件數(shù)據(jù)結(jié)構(gòu)體系結(jié)構(gòu)設(shè)計定義軟件部件間的關(guān)系接口設(shè)計軟件內(nèi)部、外部及與人之間的通信過程設(shè)計軟件組件的過程性描述軟件設(shè)計的基本概念模塊(module)與構(gòu)件(component)模塊:定義輸入、輸出和特性的程序?qū)嶓w構(gòu)件:可重復(fù)使用的軟件組件抽象(abstract)與細化(refinement)抽象:分層次考慮和處理問題(數(shù)據(jù)和過程)細化:從高到低的逐步分解過程信息隱藏對其它模塊隱藏模塊內(nèi)部的數(shù)據(jù)和過程軟件復(fù)用Designwithreuse,designforreuse

模塊化設(shè)計(modulardesign)分解(decomposition)模塊獨立性(moduleindependence)自頂向下(top—downdesign)自底向上(bottom—updesign)分解(decomposition)C(P1+P2)>C(P1)+C(P2) E(P1+P2)>E(P1)+E(P2)

C為問題的復(fù)雜度,E為解題需要的工作量

模塊數(shù)接口成本最小成本區(qū)M軟件開發(fā)工作量總成本模塊成本模塊獨立性(moduleindependence)內(nèi)聚(cohesion)模塊內(nèi)部各成分之間耦合(coupling)一個模塊與其它模塊之間模塊的獨立性高

塊內(nèi)聯(lián)系強

塊間聯(lián)系弱

內(nèi)聚1234567

弱強低內(nèi)聚中內(nèi)聚高內(nèi)聚

內(nèi)聚cohesion1.偶然性內(nèi)聚

coincidentalcohesion2.邏輯性內(nèi)聚

logicalcohesion3.時間性內(nèi)聚

temporalcohesion4.過程性內(nèi)聚

proceduralcohesion5.通訊性內(nèi)聚

communicationalcohesion6.順序性內(nèi)聚

sequentialcohesion7.功能性內(nèi)聚functionalcohesion邏輯性模塊

讀入分數(shù)平均/最高?計算平均分計算最高分輸出結(jié)果耦合coupling1.非直接耦合nodirectcoupling

2.數(shù)據(jù)耦合datacoupling

3.特征耦合

stampcoupling

4.控制耦合controlcoupling

5.外部耦合

externalcoupling6.公共耦合

commoncoupling7.內(nèi)容耦合

contentcoupling弱耦合數(shù)據(jù)耦合非直接耦合模塊2模塊1模塊4模塊3特征耦合(參數(shù)表傳遞數(shù)據(jù)結(jié)構(gòu))公共耦合DCBANL自定向下和自底向上設(shè)計自頂向下頂層開始逐步分解由底向上選擇關(guān)鍵部分先設(shè)計擴展到整個系統(tǒng)設(shè)計需要處理的問題協(xié)同設(shè)計誰最合適設(shè)計系統(tǒng)的某一方面?

如何使組內(nèi)成員相互了解別人的設(shè)計?

如何協(xié)調(diào)設(shè)計組件使整個系統(tǒng)統(tǒng)一?

用戶界面設(shè)計讓用戶駕馭軟件,不是軟件駕馭用戶

減少用戶的記憶

保持界面的一致性

并發(fā)系統(tǒng)設(shè)計怎樣確保同時執(zhí)行的組件間對共享數(shù)據(jù)的一致性

并發(fā)處理(順序執(zhí)行)1、

組件1查詢X是否為空。2、

組件1被告知X不為空。3、

組件2查詢X是否為空。4、

組件2被告知X不為空。5、

組件1出棧,刪除最后一個元素。6、組件2想出棧,但X已為空,系統(tǒng)進入非法狀態(tài)。

并發(fā)處理1、

組件1詢問棧X是否為空。2、

組件1被告知棧X不為空。3、

組件2詢問棧X是否為空。4、

組件2被告知棧X不為空。5、

組件1出棧,刪去最后一個元素,并鎖住棧X。6、

組件2想出棧,但被告知X已上鎖。7、

另一個組件加了一個元素到棧X中。8、

組件2被告知X已開鎖(由于外部進程或者因為組件2再次嘗試)9、 組件2出棧。

軟件設(shè)計文檔軟件設(shè)計說明書1)

范圍

2)

數(shù)據(jù)設(shè)計

3)

體系結(jié)構(gòu)設(shè)計4)接口設(shè)計

5)

模塊的過程設(shè)計

6)其他

包括測試的考慮,確保設(shè)計滿足所有需求,設(shè)計約束和一些特殊注解等內(nèi)容。

設(shè)計復(fù)審(designreview)及早發(fā)現(xiàn)設(shè)計中的缺陷差錯的傳播復(fù)審的內(nèi)容概要設(shè)計復(fù)審

系統(tǒng)的總體結(jié)構(gòu),模塊劃分,內(nèi)外接口

詳細設(shè)計復(fù)審

各個模塊的具體設(shè)計

設(shè)計復(fù)審(designreview)復(fù)審的方式FormalreviewDesignreviewmeetingInformalreviewWalk-through第五章傳統(tǒng)的設(shè)計方法結(jié)構(gòu)化設(shè)計模型結(jié)構(gòu)化設(shè)計方法過程設(shè)計Jackson方法PSPEC結(jié)構(gòu)化設(shè)計的內(nèi)容數(shù)據(jù)對象描述CFDDFDE-RDDCSPEC過程設(shè)計

接口設(shè)計體系結(jié)構(gòu)設(shè)計數(shù)據(jù)設(shè)計結(jié)構(gòu)化設(shè)計的內(nèi)容結(jié)構(gòu)設(shè)計—概要設(shè)計體系結(jié)構(gòu)設(shè)計SC圖接口設(shè)計SC圖數(shù)據(jù)庫設(shè)計物理數(shù)據(jù)模型過程設(shè)計—詳細設(shè)計模塊的處理過程N-S圖,PAD,PDL等描述工具—SC圖SC圖的組成符號(P88)矩形框來表示模塊

帶箭頭的連線表示模塊間的調(diào)用關(guān)系傳入和傳出模塊的數(shù)據(jù)流SC圖中的模塊符號傳入傳出變換源漏控制SC圖中的模塊調(diào)用簡單調(diào)用

選擇調(diào)用

循環(huán)調(diào)用ABCDABC面向數(shù)據(jù)流的設(shè)計方法DFD圖的類型

變換型結(jié)構(gòu)

事務(wù)型結(jié)構(gòu)

從DFD圖到SC圖的映射

復(fù)審DFD圖,必要時可再次進行修改或細化鑒別DFD圖的結(jié)構(gòu)特征:事務(wù)?變換?按照規(guī)則,把DFD圖為初始的SC圖改進初始的SC圖變換結(jié)構(gòu)的DFD變換中心傳入傳出信息傳入流傳出流

變換流時間事務(wù)型結(jié)構(gòu)DFD事務(wù)中心接受路徑動作路徑同時存在兩類結(jié)構(gòu)T傳入變換傳出事務(wù)中心變換分析劃分DFD圖的邊界

建立初始SC圖的框架頂層都只含一個用于控制的主模塊

第一層包括傳入、傳出和中心變換三個模塊

分解SC圖的各個分支

分解實質(zhì)上是“映射”

例子—劃分DFDPEDCBAWRUVQabcdeprwuv傳入部分變換中心傳出部分第一級分解MEMTMCMAc,ec,eu,wu,w傳入分支的分解GetEAtoBReadDDtoEReadABtoCGetBGetCMAc,ecebbcaabddb傳出分支的分解WriteWUtoVWriteVPutUMEw,uwuuvv變換中心的分解MTRPQepc,prrw,u初始SC圖MCMTQPRMEWriteWPutUUtoVWriteVAtoBReadAGetBDtoEReadDBtoCGetCGetEMA事務(wù)分析在DFD圖上確定邊界事務(wù)中心接受部分(包括接受路徑)發(fā)送部分(包括全部動作路徑)

畫出SC圖框架

DFD圖的三個部分分別映射為事務(wù)控制模塊,接受模塊和動作發(fā)送模塊

分解和細化接受分支和發(fā)送分支

例子—劃分DFD傳入T變換傳出接受部分事務(wù)中心動作部分Example----first-levelfactoring發(fā)送事務(wù)控制接收頂層第一層混合結(jié)構(gòu)C1AC3BC2DLFGEKJabb1b2b3c1c2c3defghjklm優(yōu)化結(jié)構(gòu)設(shè)計的指導(dǎo)規(guī)則

對模塊分割、合并和變動調(diào)用關(guān)系的指導(dǎo)規(guī)則

提高內(nèi)聚,降低耦合后簡化模塊接口少用全局性數(shù)據(jù)和控制型信息保持高扇入/低扇出的原則

作用域/控制域規(guī)則

作用域不要超出控制域的范圍

位置離受它控制的模塊越近越好

扇入和扇出MMM的扇入M的扇出例子:扇出計算實發(fā)工資取得工資數(shù)據(jù)編外人員扣款編外人員工資編外人員稅收薪金制工資額計時制工資額常規(guī)扣款稅收扣款煎餅形結(jié)構(gòu)不可??!例子:扇出常規(guī)扣款編外人員實發(fā)工資

計算實發(fā)工資取得工資數(shù)據(jù)計時工人實發(fā)工資計薪工人實發(fā)工資編外人員扣款編外人員稅收編外人員工資稅收扣款計時制工資額薪金制工資額塔型結(jié)構(gòu)過程設(shè)計

目的確定模塊采用的算法和塊內(nèi)數(shù)據(jù)結(jié)構(gòu)

任務(wù):編寫軟件的“過程設(shè)計說明書”

為每個模塊確定采用的算法

確定每一模塊使用的數(shù)據(jù)結(jié)構(gòu)

確定模塊接口的細節(jié)

過程設(shè)計的原則清晰第一的設(shè)計風格結(jié)構(gòu)化的控制結(jié)構(gòu)逐步細化的實現(xiàn)方法過程設(shè)計工具流程圖N-S圖偽代碼PDL語言N-S圖S1S2順序CTFS1S2選擇WhileC

S

SUntilC

循環(huán)Jackson方法實體動作實體結(jié)構(gòu)初始建模系統(tǒng)功能系統(tǒng)時間系統(tǒng)實現(xiàn)Jackson表示法Jackson圖Jackson偽代碼ABCAB0C0AB*順序選擇重復(fù)AseqAselectcond1Aiter{until

或while}condBBCorcond2BendAC

endAendA

(a)順序(b)選擇(c)重復(fù)面向?qū)ο笤O(shè)計的任務(wù)面向?qū)ο笤O(shè)計的任務(wù)

系統(tǒng)設(shè)計

系統(tǒng)整體結(jié)構(gòu)的設(shè)計

對象設(shè)計

對OOA模型中類/對象模型的具體化和細化

消息設(shè)計

從對象-

關(guān)系模型,設(shè)計出消息模型

設(shè)計模型復(fù)審面向?qū)ο笤O(shè)計責任設(shè)計消息設(shè)計類及對象設(shè)計子系統(tǒng)設(shè)計屬性、操作、協(xié)作者對象-行為模型對象-關(guān)系模型類/對象模型使用實例系統(tǒng)設(shè)計過程⑴

劃分子系統(tǒng);⑵

確定需要并發(fā)運行的子系統(tǒng)并為它們分配處理器;⑶

描述子系統(tǒng)之間的通信;⑷

確定系統(tǒng)資源的管理和控制;⑸

確定人機交互構(gòu)件;⑹選擇實現(xiàn)數(shù)據(jù)管理和任務(wù)管理的基本策略。

四種主要子系統(tǒng)問題域子系統(tǒng)人機交互子系統(tǒng)任務(wù)管理子系統(tǒng)數(shù)據(jù)管理子系統(tǒng)劃分子系統(tǒng)劃分原則模塊化、功能獨立、信息隱藏同一個子系統(tǒng)的類擁有共同特性同一個子系統(tǒng)的類具有共同目的同一個子系統(tǒng)的類提供相似服務(wù)同一個子系統(tǒng)的類間相對高耦合子系統(tǒng)標準有明確的借口,與其他子系統(tǒng)通信一般類只和子系統(tǒng)內(nèi)部的其它類協(xié)作處理并發(fā)操作并發(fā)的對象(子系統(tǒng))同時異步作用于同一事件處理將并發(fā)子系統(tǒng)分配到不同處理器將并發(fā)子系統(tǒng)分配到同一處理器系統(tǒng)提供同步控制描述子系統(tǒng)間的通信子系統(tǒng)協(xié)作模型客戶/服務(wù)器端對端請求客戶子系統(tǒng)contract服務(wù)器子系統(tǒng)peersubsystempeersubsystem請求請求人機交互設(shè)計分類分析用戶特點,設(shè)計不同界面增加用戶界面專用的類和對象利用快速原型演示,改進界面設(shè)計任務(wù)管理設(shè)計策略確定任務(wù)的特征定義一個協(xié)調(diào)者任務(wù)和與之關(guān)聯(lián)的對象集成其它任務(wù)和協(xié)調(diào)者步驟識別由事件驅(qū)動和時間驅(qū)動的任務(wù)識別關(guān)鍵性任務(wù)、任務(wù)優(yōu)先級和任務(wù)管理類定義任務(wù)必要時擴充有關(guān)任務(wù)的類和對象數(shù)據(jù)管理設(shè)計解決對象數(shù)據(jù)的存儲和檢索數(shù)據(jù)管理設(shè)計定義數(shù)據(jù)格式與所使用的數(shù)據(jù)存儲管理模式相關(guān)設(shè)計相應(yīng)的操作說明對象及所屬類和對象如何存儲自己對象設(shè)計

設(shè)計模型對象數(shù)據(jù)結(jié)構(gòu)算法消息傳遞控制分析模型類屬性方法關(guān)系行為對象描述對象描述協(xié)議描述:一組消息和對消息的注釋

實現(xiàn)描述:對對象接收到某個消息后所執(zhí)行的操作的實現(xiàn)細節(jié)的描述

算法設(shè)計

程序構(gòu)件與接口

對象間的接口和對象的整體結(jié)構(gòu)

領(lǐng)域?qū)ο蟮脑O(shè)計設(shè)計目的——支持軟件復(fù)用設(shè)計內(nèi)容調(diào)整需求復(fù)用已有的組件引入父類,分組管理領(lǐng)域類添加一般化類以建立協(xié)議調(diào)整OOA模型設(shè)計復(fù)審設(shè)計模板第七章統(tǒng)一建模語言UMLUML簡介靜態(tài)建模動態(tài)建模物理架構(gòu)建模RUPUMLUnifiedModelingLanguage近10年來OOSE最重要的成果貢獻者:GradyBooch,IvarJacobson,

JinRumbaugh中文網(wǎng)站http://www.umlUML的組成UML的模型元素表示模型中的某個概念表示模型元素之間的關(guān)系UML的元模型結(jié)構(gòu)元元模型層元模型層模型層用戶模型層UML模型UML模型圖靜態(tài)圖動態(tài)圖視圖用例視圖邏輯視圖并發(fā)視圖構(gòu)件視圖部署視圖UML的特點統(tǒng)一標準面向?qū)ο蟊磉_能力強大可視化UML的應(yīng)用用于描述系統(tǒng)開發(fā)的不同類型于不同階段從需求分析到軟件設(shè)計到軟件測試及維護可視化問題描述,幫助理解問題幫助建立各階段的文檔獲取和交流有關(guān)應(yīng)用問題求解的知識輔助構(gòu)建系統(tǒng)靜態(tài)建模用例模型用例圖表示從最終用戶的角度描述系統(tǒng)功能類和對象模型類圖和對象圖表示類圖ClassDiagram學生姓名:string學號:string書書名:string價格:real 1 購買

0..*

屬于

對象圖ObjectDiagram王平:學生姓名:王平學號:020106英語:書書名:英語價格:26.5數(shù)學:書書名:數(shù)學價格:21.8對象間關(guān)系關(guān)聯(lián)關(guān)系

(Association)

聚集關(guān)系(Aggregation)

泛化關(guān)系(Generalization)

依賴關(guān)系(Dependency)

細化關(guān)系

(Refinement)包圖子系統(tǒng)A子系統(tǒng)D子系統(tǒng)B子系統(tǒng)C子系統(tǒng)E子系統(tǒng)F動態(tài)建模狀態(tài)圖(StateDiagram)時序圖(SequenceDiagram)協(xié)作圖(CollaborationDiagram)活動圖(ActivityDiagram)消息同步消息異步消息簡單消息狀態(tài)圖StateDiagram超時到達上樓上樓到達上樓到達在底樓向上移動向底樓移動向下移動空閑[打印機就緒]打印文件時序圖(SequenceDiagram)[打印機忙]保存文件打印文件打印文件計算機打印服務(wù)器打印隊列計算機協(xié)作圖(CollaborationDiagram)[打印機忙]保存文件[打印機就緒]打印文件打印文件計算機打印隊列打印服務(wù)器打印機活動圖ActivityDiagramDiskfreeDiskfull顯示磁盤滿顯示在打印刪去顯示信息建立打印文件Win.printAll()^printer.print()物理架構(gòu)建模邏輯架構(gòu)和物理架構(gòu)邏輯架構(gòu)物理架構(gòu)構(gòu)件圖配置圖RUP—基于UML的統(tǒng)一建模過程第八章編碼和語言選擇

編碼的目的編碼的風格編碼使用的語言編碼的目的

編碼模塊的過程性描述一一一>源程序(不可執(zhí)行的)(可執(zhí)行的)編碼的過程熟悉所選語言的功能和程序開發(fā)環(huán)境

仔細閱讀設(shè)計文檔詳細設(shè)計

弄清要編碼的模塊的外部接口與內(nèi)部過程

編碼的風格追求“聰明”和“技巧”---〉提倡“簡明”和“直接”

使用標準的控制結(jié)構(gòu)

清晰的前提下求取效率

.Makeitrightbeforeyoumakeitfaster..Makeitclearbeforeyoumakeitfaster..Keepitrightwhenyoumakeitfaster.(求快不忘保持程序正確).Keepitsimpletomakeitfaster.(保持程序簡單以求快).don’tsacrificeclarityfor“efficiency”.(書寫清楚,不要為“效率”犧牲清楚)源程序的文檔化

(codedocumentation)有意義的變量名稱適當?shù)淖⑨寴藴实臅鴮懜袷健梅謱涌s進的寫法顯示嵌套結(jié)構(gòu)的層次;——在注釋段的周圍加上邊框;——在注釋段與程序段、以及不同程序段之間插入空行;——每行只寫一條語句;——書寫表達式時,適當使用空格或圓括號等作隔離符;

程序設(shè)計語言的發(fā)展面向機器的語言高級語言(第3代)甚高級語言機器語言(第1代)匯編語言(第2代)結(jié)構(gòu)語言基礎(chǔ)語言面向?qū)ο笳Z言第4代語言語言的選擇選擇編碼語言的標準

應(yīng)用領(lǐng)域

算法與計算復(fù)雜性

數(shù)據(jù)結(jié)構(gòu)的復(fù)雜性

效率的考慮

適用各類應(yīng)用領(lǐng)域的語言

年代應(yīng)用領(lǐng)域主要語言其他語言20世紀60年代商業(yè)COBOLAssembler科學計算FORTRANALGOL、BASIC、APL系統(tǒng)AssemblerForth人工智能LISPSNOBOL

現(xiàn)代商業(yè)COBOL、C++、Java、電子表格C、PL/1科學計算FORTRAN、C、C++JavaBASIC系統(tǒng)C、C++、JavaAda、Modula人工智能LISP、Prolog

第九章軟件測試

測試的基本概念

黑盒測試

白盒測試

測試用例設(shè)計

多模塊程序的測試策略

面向?qū)ο笙到y(tǒng)的測試

測試的基本概念

測試(testing)的目的與任務(wù)

目的:發(fā)現(xiàn)程序的錯誤

任務(wù):通過執(zhí)行程序,暴露潛在的錯誤

糾錯(debugging)的目的與任務(wù)

目的:定位和糾正錯誤

任務(wù):消除軟件故障,保證程序的可靠運行

測試的特性

挑剔性

抱著為證明程序有錯的目的去測試

復(fù)雜性

設(shè)計合適的測試用例

不徹底性

Dijkstra一句名言:“程序測試只能證明錯誤的存在,但不能證明錯誤不存在”

經(jīng)濟性測試的種類

靜態(tài)分析(不執(zhí)行程序)靜態(tài)分析器代碼復(fù)審(CodeReview)動態(tài)分析(執(zhí)行程序)黑盒測試測試程序功能白盒測試測試程序結(jié)構(gòu)測試的文檔

測試計劃

測試項目的名稱各項測試的目的、步驟和進度測試用例的設(shè)計

測試報告測試項目名稱實測結(jié)果與期望結(jié)果的比較發(fā)現(xiàn)的問題測試達到的效果

黑盒測試

等價分類法(equivalencepartitioning)把輸入數(shù)據(jù)的可能值劃分為若干等價類

有效等價類和無效等價類每一無效等價類至少需要一個測試用例

例子某工廠公開招工,規(guī)定報名者年齡應(yīng)在16周歲至35周歲之間(到2002年3月30日止)即出生年月不在上述范圍內(nèi),將拒絕接受,并顯示“年齡不合格”等出錯信息。

“出生年月”的等價分類

輸入數(shù)據(jù)有效等價類無效等價類出生年月①6位數(shù)字字符②有非數(shù)字字符③少于6個數(shù)字符④多于6個數(shù)字符對應(yīng)數(shù)值⑤在196702—198603之間⑥<196702⑦>198603月份對應(yīng)數(shù)值⑧在1—12之間⑨等于“0”⑩>12黑盒測試邊界值分析法(boundaryvalueanalysis)

使被測程序在邊界值及其附近運行,從而更有效地暴露程序中潛藏的錯誤

錯誤猜測法(errorguessing)

猜測被測程序在哪些地方容易出錯

針對可能的薄弱環(huán)節(jié)來設(shè)計測試用例

白盒測試

邏輯復(fù)蓋測試法(logiccoveragetesting)

用流程圖來設(shè)計測試用例

邏輯復(fù)蓋測試的5種標準發(fā)現(xiàn)錯誤的能力

強語句覆蓋每條語句至少執(zhí)行一次判定覆蓋每一判定的每個分支至少執(zhí)行一次條件覆蓋每一判定中的每個條件,分別按“真”、“假”至少各執(zhí)行一次判定/條件覆蓋同時滿足判定復(fù)蓋和條件復(fù)蓋的要求條件組合覆蓋求出判定中所有條件的各種可能組合值,每一可能的條件組合至少執(zhí)行一次白盒測試路徑測試法(pathtesting)著眼于程序執(zhí)行路徑的測試方法

程序圖(programgraph)

點覆蓋邊覆蓋路徑覆蓋測試用例設(shè)計黑盒測試用例設(shè)計三角形分類程序見教材p205白盒測試用例設(shè)計學生成績查詢程序見教材p208軟件的糾錯糾錯的策略試湊法跟蹤法推理法常用的糾錯技術(shù)插入打印語句設(shè)置斷點掩蔽部分程序蠻力糾錯技術(shù)多模塊程序的測試策略

測試的層次性

單元(模塊)測試(unittesting)綜合(集成)測試(integrationtesting)確認測試(validationtesting)系統(tǒng)測試(systemtesting)程序錯誤的類型

語法錯誤

結(jié)構(gòu)性錯誤

功能性錯誤

接口錯誤

單元測試

目的

通過模塊測試,使其代碼達到模塊說明書的需求

任務(wù)

(1)對模塊代碼進行編譯,發(fā)現(xiàn)并糾正其語法錯誤;(2)進行靜態(tài)分析,驗證模塊結(jié)構(gòu)及其內(nèi)部調(diào)用序列是否正確;(3)確定模塊的測試策略,并據(jù)此設(shè)計一組測試用例和必要的測試軟件;(4)用選定的測試用例對模塊進行測試,直至滿足測試終止標準為止;(5)編制單元測試報告。

單元測試實施步驟編譯靜態(tài)分析器檢查代碼評審動態(tài)測試測試驅(qū)動模塊測試樁模塊集成測試

目的將經(jīng)過單元測試的模塊逐步組裝成具有良好一致性的完整的程序任務(wù)制訂集成測試實施策略確定集成測試的實施步驟,設(shè)計測試用例逐一地添加模塊,進行測試集成測試策略與步驟

自頂向下測試

先廣后深實施步驟

先深后廣實施步驟

由底向上測試

混合方式測試(sandwichtesting)

對上層模塊采取自頂向下測試

對關(guān)鍵模塊或子系統(tǒng)采取由底向上測試

確認測試

目的

確認組裝好的程序是否滿足(SRS)的要求任務(wù)有效性測試(黑盒測試)配置復(fù)審(confingurationreview)

驗收測試—專用

alpha與beta測試—通用系統(tǒng)測試

目的

軟件安裝到系統(tǒng)中以后,能否與系統(tǒng)的其余部分協(xié)調(diào)運行

任務(wù)測試是否與硬件協(xié)調(diào)運行測試是否和原來就有的其它軟件協(xié)調(diào)運行

測試是否完成SRS對它的要求

終止測試的標準規(guī)定測試策略和應(yīng)達標準規(guī)定至少要查出的錯誤數(shù)量面向?qū)ο笙到y(tǒng)的測試

OO軟件的測試策略

OO軟件測試用例設(shè)計

OO軟件的測試策略O(shè)O軟件的單元測試

全面地測試類和對象所封裝的屬性和操縱這些屬性的操作的整體

發(fā)現(xiàn)類的所有操作中存在的問題

與其他的類協(xié)同工作時可能出現(xiàn)的錯誤

OO軟件的集成測試

基于黑盒方法的集成測試

基于線程的測試(thread-basedtesting)

基于使用(use-based)的測試

OO軟件的測試策略O(shè)O軟件的確認測試和系統(tǒng)測試采用傳統(tǒng)的黑盒法OOA階段的用例所描述的用戶交互進行測試導(dǎo)出OO系統(tǒng)測試的測試用例對象—行為模型時序圖等模擬用戶實際使用環(huán)境OO軟件測試用例設(shè)計

(1)

每個測試用例都要有一個唯一的標識,并與被測試的一個或幾個類相關(guān)聯(lián)起來;(2)

每個測試用例都要陳述測試的目的;(3)

對每個測試用例要有相應(yīng)的測試步驟,包括被測對象的特定狀態(tài)、所使用的消息和操作、可能產(chǎn)生的錯誤、測試需要的外部環(huán)境等

OO概念對測試用例設(shè)計的影響

繼承的成員函數(shù)需要測試

子類的測試用例可以參照父類

類測試用例設(shè)計

基于故障的測試用例設(shè)計基于用例的測試用例設(shè)計類間測試用例設(shè)計

類—關(guān)系模型

類—行為模型

第十章軟件復(fù)用

軟件復(fù)用的基本概念 領(lǐng)域工程基于構(gòu)件的開發(fā)

面向?qū)ο笈c軟件復(fù)用

小結(jié)

軟件復(fù)用的基本概念

軟件復(fù)用的定義

軟件復(fù)用的重要性

軟件復(fù)用的目的是能更快、更好、成本更低地生產(chǎn)軟件制品。一般地說,在軟件開發(fā)中采用復(fù)用構(gòu)件可以比從頭開發(fā)這個軟件更加容易。軟件復(fù)用的粒度

按照可復(fù)用的粒度,軟件制品從小到大分為以下幾類:源代碼復(fù)用軟件體系結(jié)構(gòu)復(fù)用應(yīng)用程序生成器領(lǐng)域特定的軟件體系結(jié)構(gòu)的復(fù)用領(lǐng)域工程所謂的“領(lǐng)域”,指的是一組具有相似或相近軟件需求的應(yīng)用系統(tǒng)所覆蓋的功能區(qū)域。通過領(lǐng)域分析(domainanalysis)找出最優(yōu)復(fù)用,對它們進行設(shè)計和構(gòu)造,形成為可復(fù)用構(gòu)件,進而建立大規(guī)模的軟件構(gòu)件倉庫的過程,就是領(lǐng)域工程。橫向復(fù)用和縱向復(fù)用

橫向復(fù)用是指復(fù)用不同應(yīng)用領(lǐng)域中的軟件元素??v向復(fù)用是指在一類具有較多公共性的應(yīng)用領(lǐng)域之間進行軟部品復(fù)用。領(lǐng)域分析用戶需求軟件開發(fā)與構(gòu)件開發(fā)目標軟件確認可復(fù)用構(gòu)件庫檢索理解領(lǐng)域分析

定義領(lǐng)域分析是在特定應(yīng)用領(lǐng)域?qū)ふ易顑?yōu)復(fù)用,以公共對象、類、子集合和框架等形式進行標識、分析和規(guī)約。目標是獲得領(lǐng)域分析模型

領(lǐng)域分析的輸入和輸出

建造可復(fù)用構(gòu)件

創(chuàng)建領(lǐng)域構(gòu)件的設(shè)計框架

標準數(shù)據(jù)

標準接口協(xié)議程序模板構(gòu)件模型

建立可復(fù)用構(gòu)件庫

三種分類模式

枚舉分類

門面分類

屬性-值分類

基于構(gòu)件的開發(fā)

構(gòu)件集成模型應(yīng)用系統(tǒng)工程面向?qū)ο笈c軟件復(fù)用

OO方法對軟件復(fù)用的支持復(fù)用技術(shù)對OO方法的支持小結(jié)軟件復(fù)用是在軟件開發(fā)中避免重復(fù)勞動的解決方案。通過軟件復(fù)用,可以提高軟件開發(fā)的效率和質(zhì)量。軟件復(fù)用研究被視為解決軟件危機,提高軟件生產(chǎn)效率和質(zhì)量的現(xiàn)實可行的途徑。第十一章軟件維護軟件維護的種類

軟件可維護性

軟件維護的實施

軟件維護的管理

軟件再工程

軟件維護的種類完善性維護(perfectivemaintenance)

適應(yīng)性維護(adaptivemaintenance)糾錯性維護(correctivemaintenance)預(yù)防性維護(preventivemaintenance)

軟件可維護性

(maintainability)

影響可維護性的軟件屬性

可理解性(understandability)

可修改性(modifiability)

可測試性(testability)對可維護性的定量度量提高可維護性的途徑提供完整和一致的文檔

采用現(xiàn)代化的開發(fā)方法

軟件維護的實施

不嚴重

⊕維護人員糾錯嚴重名單測試*⊕已修改⊕適應(yīng)維護人*的軟件員名單已修改完善高的配置⊕批準交付低用戶的配置

開發(fā)項目表

嚴重性評價錯誤分析優(yōu)先度評價維護過程配置復(fù)審問題分析區(qū)分類型糾錯項目表維護的副作用

修改編碼的副作用

修改數(shù)據(jù)的副作用

修改文檔的副作用

軟件維護的管理

維護的機構(gòu)與人員

維護時期的配置管理

配置管理數(shù)據(jù)庫

版本控制

變動控制維護管理文檔

維護日志

維護申請摘要報告和維護趨勢圖

維護費用的估算

軟件再工程

正向工程信息庫分析文檔重構(gòu)逆向工程代碼重構(gòu)數(shù)據(jù)重構(gòu)逆向工程重構(gòu)代碼提取抽象求精簡化“臟的”源代碼干凈的源代碼初始的設(shè)計說明最終的設(shè)計說明處理界面數(shù)據(jù)庫計劃時期的工作流程開始問題定義可行性研究可行否項目實施計劃終止項目的建議停止問題定義目的弄清需要解決的問題項目所需的資源和經(jīng)費任務(wù)編寫“系統(tǒng)目標與范圍的說明”《系統(tǒng)目標與范圍的說明》

示例系統(tǒng)目標和范圍說明書2001年1月1.項目:教材銷售系統(tǒng)2.問題:人工發(fā)售教材手續(xù)繁瑣,且易出錯。3.項目目標:建立一個高效率、無差錯的微機教材銷售系統(tǒng)。4.項目范圍:利用現(xiàn)有微型計算機,軟件開發(fā)費用不超過5000元。5.初步想法:建議在系統(tǒng)中增加對缺書的統(tǒng)計與采購功能。6.可行性研究:建議進行大約10天的可行性研究,研究費用不超過1000元??尚行匝芯磕康难芯宽椖渴欠窨赡軐崿F(xiàn)和值得進行回答Whytodo?研究的內(nèi)容經(jīng)濟可行性技術(shù)可行性運行可行性法律可行性可行性研究研究的步驟細化和修改“系統(tǒng)目標和范圍”,得出新系統(tǒng)的邏輯模型弄清當前系統(tǒng)—系統(tǒng)流程圖導(dǎo)出新系統(tǒng)邏輯模型—數(shù)據(jù)流圖導(dǎo)出新系統(tǒng)的解決方案提出推薦的方案本項目的開發(fā)價值推薦這個方案的理由系統(tǒng)流程圖描述系統(tǒng)物理模型包含人員、硬件、軟件等子系統(tǒng)符號借用程序流程圖符號舉例見p268圖12.5成本—效益分析系統(tǒng)成本開發(fā)成本運行維護成本系統(tǒng)效益經(jīng)濟效益社會效益可行性論證報告系統(tǒng)概述簡述當前系統(tǒng)及其問題新系統(tǒng)功能及新舊系統(tǒng)的比較可行性分析經(jīng)濟、技術(shù)、法律上的可行性建立新系統(tǒng)的主客觀條件分析結(jié)論意見YesorNo軟件風險分析風險識別項目風險技術(shù)風險商業(yè)風險風險預(yù)測風險發(fā)生的可能性風險發(fā)生后的后果風險的駕馭和監(jiān)控軟件計劃項目實施計劃質(zhì)量保證計劃軟件測試計劃文檔編制計劃用戶培訓計劃綜合支持計劃軟件分發(fā)計劃項目實施計劃

系統(tǒng)概述包括項目目標,主要功能,系統(tǒng)特點,以及關(guān)于開發(fā)工作的安排系統(tǒng)資源包括開發(fā)和運行該軟件系統(tǒng)所需要的各種資源,如硬件、軟件、人員和組織機構(gòu)等費用預(yù)算分階段的人員費用、機時費用及其它費用進度安排各階段起止時間、完成文檔及驗收方式要交付的產(chǎn)品清單第十三章軟件工程管理管理的目的與內(nèi)容軟件估算模型軟件成本估計人員的分配與組織項目進度安排軟件知識產(chǎn)權(quán)保護管理的目的與內(nèi)容目的按預(yù)定的時間和費用,完成軟件的計劃、開發(fā)和維護內(nèi)容費用管理估算軟件的開發(fā)費用管理開發(fā)費用的有效使用質(zhì)量管理(包括配置管理)項目的其它管理項目進度安排人員的分配與組織軟件估算模型靜態(tài)單變量資源模型Putnam資源模型COCOMO模型靜態(tài)單變量資源模型資源=c1x(估計的軟件特征)c2資源開發(fā)工作量(E)、開發(fā)時間(T)或開發(fā)人數(shù)(P)估計的軟件特征源程序長度(L)或軟件工作量(E)c1,c2依賴于開發(fā)環(huán)境和軟件應(yīng)用領(lǐng)域的常數(shù)Putnam資源模型L=cK1/3T4/3或K=L3/(c3T4)L(行):源程序長度T(年):開發(fā)時間K(人-年):全生存期工作量c:與開發(fā)環(huán)境有關(guān)的常數(shù)COCOMO模型COnstructiveCOstMOdel以靜態(tài)單變量模型為基礎(chǔ)將軟件分類:組織半獨立嵌入增加工作量調(diào)節(jié)因子不同類型軟件的

COCOMO模型

軟件類別模型方程適用范圍組織型E=3.2×L1.05T=2.5×E0.38高級語言應(yīng)用程序,如科學計算,數(shù)據(jù)處理企業(yè)管理程序等半獨立型E=3.0×L1.12T=2.5×E0.35大多數(shù)實用程序,如編輯程序、連接程序編輯程序等嵌入型E=2.8×L1.20T=2.5×E0.32與硬件關(guān)系密切的系統(tǒng)程序,如操作系統(tǒng)數(shù)據(jù)庫管理系統(tǒng),實時處理與控制程序等調(diào)節(jié)因子和它的值范圍

屬性調(diào)節(jié)因子調(diào)節(jié)值范圍例13.1中使用的值產(chǎn)品屬性要求的可靠性等級數(shù)據(jù)庫規(guī)模產(chǎn)品復(fù)雜度0.75-1.400.94-1.160.70-1.651.000.941.30計算機屬性對程序執(zhí)行時間的約束對程序占用存儲容量的約束開發(fā)環(huán)境的變動開發(fā)環(huán)境的響應(yīng)時間1.00-1.661.0

-1.560.87-1.300.87-1.151.111.061.001.00人員屬性分析員水平程序員水平對應(yīng)用領(lǐng)域的熟悉程度對開發(fā)環(huán)境的熟悉程度對所用語言的熟悉程度1.46-0.711.42-0.701.29-0.821.21-0.901.14-0.950.860.861.001.101.00項目屬性開發(fā)方法的現(xiàn)代化軟件工具的數(shù)質(zhì)量完成時間的限制1.24-0.821.24-0.831.23-1.100.911.101.00軟件成本估計自頂向下成本估計由底向上成本估計算法模型估計自頂向下成本估計首先估算總成本然后在項目內(nèi)部進行成本分配特爾斐Delphi法多個專家各自填表綜合專家意見,摘要通知大家開始新一輪估計多次反復(fù),直到專家意見接近由底向上成本估算先將開發(fā)任務(wù)分解為許多子任務(wù)子任務(wù)分成子子任務(wù)估計各個任務(wù)單元的成本匯合成項目總成本算法模型估計算法模型就是資源模型由歷史數(shù)據(jù)導(dǎo)出選擇適用的模型模型估計法與自頂向下估計或由底向上估計結(jié)合使用人員的分配與組織Rayleigh-Norden曲線兩條重要定律人員組織Rayleigh-Norden曲線①②③td

t人力①浪費的人力②不足的人力③過晚的人力兩條重要的定律人員-時間權(quán)衡定律Brooks定律向一個已經(jīng)延晚的項目追加開發(fā)人員,可能使它完成得更晚E=常數(shù)/(T或td)4

人員組織層次型組織結(jié)構(gòu)軟件經(jīng)理項目經(jīng)理開發(fā)小組民主開發(fā)小組無我程序設(shè)計主程序員小組一元化領(lǐng)導(dǎo)主程序員分配工作主程序員決定重大問題項目進度安排計劃評審技術(shù)建立PERT圖找出關(guān)鍵路徑標出最遲開始時間PERT圖的使用Gannt圖PERT圖例子測試數(shù)據(jù)2編碼4產(chǎn)品測試4測試軟件6測試計劃2起點分析終點文檔2設(shè)計4關(guān)鍵路徑編碼4產(chǎn)品測試4測試軟件6測試數(shù)據(jù)2測試計劃2起點終點文檔2設(shè)計4分析3(0,0)(0,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論