軟件件系統(tǒng)開發(fā)技術(shù)軟件工程_第1頁
軟件件系統(tǒng)開發(fā)技術(shù)軟件工程_第2頁
軟件件系統(tǒng)開發(fā)技術(shù)軟件工程_第3頁
軟件件系統(tǒng)開發(fā)技術(shù)軟件工程_第4頁
軟件件系統(tǒng)開發(fā)技術(shù)軟件工程_第5頁
已閱讀5頁,還剩504頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

軟件件系統(tǒng)開發(fā)技術(shù)軟件工程第一章軟件工程概述4/15/20232§1.1軟件工程的背景和歷史1968年由NATO(北大西洋公約組織)在德國Garmish召開的學(xué)術(shù)會議上,F(xiàn)eitzBauer首先提出了“軟件工程”概念。4/15/20233軟件工程與編程前者是一門學(xué)科,一種科學(xué)理論來指導(dǎo)軟件系統(tǒng)開發(fā),標(biāo)準(zhǔn)化,自動化的過程考慮如何分解一個系統(tǒng),以便各人分工開發(fā);考慮如何說明每個部分的規(guī)格要求;怎樣才能易于維護單純的代碼編寫是軟件工程發(fā)展的前身是軟件工程中占據(jù)很少時間和空間的一部分4/15/20234計算機學(xué)科的發(fā)展計算機科學(xué)(CS)計算機科學(xué)(CS)計算機工程(CE)軟件工程(SE)信息系統(tǒng)(IS)計算學(xué)科(computingdiscipline)4/15/2023560年代以來工廠管理病人監(jiān)護工資統(tǒng)發(fā)圖書館管理機票預(yù)定學(xué)籍管理4/15/20236早期

第二階段第三階段第四階段面向批處理多用戶分布式系統(tǒng)強大的桌面系統(tǒng)有限的分布實時嵌入“智能”面向?qū)ο蠹夹g(shù)自定義軟件數(shù)據(jù)庫低成本硬件專家系統(tǒng)軟件產(chǎn)品消費者的影響人工神經(jīng)網(wǎng)絡(luò)

并行計算

網(wǎng)絡(luò)計算機195019601970198019902000Evolutionofsoftware#4/15/20237為什么發(fā)展如此之快不準(zhǔn)確的時間和金錢的估算軟件質(zhì)量的低下相對硬件產(chǎn)品開發(fā)軟件開發(fā)費用的增加維護、增強軟件系統(tǒng)的必要性硬件價格大幅度下降4/15/20238軟件技術(shù)面臨的問題

規(guī)模復(fù)雜性生產(chǎn)率

4/15/20239Windows95有1000萬行代碼Windows2000有5000萬行代碼例:Exchange2000和Windows2000開發(fā)人員結(jié)構(gòu)Exchange2000Windows2000項目經(jīng)理25人約250人開發(fā)人員140人約1700人測試人員350人約3200人4/15/202310《人月神話》焦油坑

史前史中,沒有別的場景比巨獸在焦油坑中垂死掙扎的場面更令人震撼。上帝見證著恐龍、猛犸象、劍齒虎在焦油中掙扎。它們掙扎得越是猛烈,焦油糾纏得越緊,沒有任何猛獸足夠強壯或具有足夠的技巧,能夠掙脫束縛,它們最后都沉到了坑底。

4/15/202311軟件危機的主要特征軟件開發(fā)周期大大超過規(guī)定日期;軟件開發(fā)成本嚴(yán)重超標(biāo);軟件質(zhì)量難于保證。4/15/202312軟件工程的定義FritzBauer在NATO會議上給出的定義:

“軟件工程是為了經(jīng)濟地獲得可靠的和能在實際機器上高效運行的軟件而確立和使用的健全的工程原理(方法)?!?/15/202313軟件工程的定義(2)

IEEE【IEE83】給出的軟件工程定義:

“軟件工程是開發(fā)、運行、維護和修復(fù)軟件的系統(tǒng)方法?!?/15/202314軟件工程的定義(3)IEEE【IEE93】給出了一個更加綜合的定義:

“將系統(tǒng)化的、規(guī)范的、可度量的方法應(yīng)用于軟件的開發(fā)、運行和維護的過程,即將工程化應(yīng)用于軟件中?!?/15/202315軟件工程是一門交叉學(xué)科軟件工程的主要研究內(nèi)容軟件開發(fā)技術(shù):軟件開發(fā)方法學(xué)軟件開發(fā)過程

軟件工具和軟件工程環(huán)境軟件工程管理:軟件管理學(xué)軟件經(jīng)濟學(xué)軟件心理學(xué)

軟件工程所包含的內(nèi)容不是一成不變的,隨著人們對軟件系統(tǒng)的研制開發(fā)和生產(chǎn)的理解。應(yīng)用發(fā)展的眼光看待它。4/15/202316軟件工程—一種層次化技術(shù)工具方法過程質(zhì)量焦點Softwareengineeringlayers軟件工程三個要素:方法、工具、過程4/15/202317軟件工程與一般工程的差異軟件是邏輯產(chǎn)品而不是實物產(chǎn)品軟件的功能依賴于硬件和軟件的運行環(huán)境以及人們對它的操作軟件設(shè)計的復(fù)雜性軟件特征: 功能的多樣性 實現(xiàn)的多樣性 能見度低 軟件結(jié)構(gòu)合理性差智力密集及知識產(chǎn)權(quán)保護4/15/202318軟件工程知識結(jié)構(gòu)

2001年5月ISO/IECJTC1(ISO和IEC的第一聯(lián)合技術(shù)委員會)發(fā)布了《SWEBOK指南V0.95(試用版)》SWEBOK把軟件工程學(xué)科的主體知識分為10個知識領(lǐng)域。4/15/202319軟件工程知識結(jié)構(gòu)軟件需求軟件設(shè)計軟件構(gòu)造軟件測試軟件維護軟件配置管理軟件工程管理軟件工程過程軟件工程工具和方法軟件質(zhì)量4/15/202320“軟件工程”課程

與其它軟件專業(yè)課的區(qū)別(1)立足于系統(tǒng)的整體。(2)講授系統(tǒng)分析、系統(tǒng)設(shè)計、測試及維護的理論和方法。(3)構(gòu)筑一個軟件系統(tǒng),實踐軟件開發(fā)全過程。4/15/202321“軟件工程”課程教學(xué)的目標(biāo)轉(zhuǎn)變對軟件的認(rèn)識:上升

程序系統(tǒng)

轉(zhuǎn)變思維定式:上升

程序員系統(tǒng)工程師(系統(tǒng)分析員)4/15/202322軟件產(chǎn)品的標(biāo)準(zhǔn)化軟件開發(fā)過程的標(biāo)準(zhǔn)化4/15/202323軟件的工業(yè)化生產(chǎn)過程應(yīng)具備的特點:明確的工作步驟詳細(xì)具體的規(guī)范化文檔明確的質(zhì)量評價標(biāo)準(zhǔn)“一個好的工業(yè),應(yīng)有一套

良好的標(biāo)準(zhǔn)來配套”4/15/202324軟件工程技術(shù)的兩個特點

強調(diào)規(guī)范化強調(diào)文檔化4/15/202325§1.2軟件和軟件生命期模型(SoftwareLifeCycle)軟件產(chǎn)品或軟件系統(tǒng)從設(shè)計、投入使用到被淘汰的全過程。4/15/202326軟件生存期的階段劃分(1)可行性研究與計劃(2)需求分析(3)總體設(shè)計(4)詳細(xì)設(shè)計(5)實現(xiàn)(6)集成測試(7)確認(rèn)測試(8)使用和維護成長期(開發(fā)期)懷孕期(計劃期)

成年期(運行期)4/15/202327新的國際標(biāo)準(zhǔn)定義的軟件生存過程(1995ISO/IEC12207)軟件生存期過程支持過程組織過程主要過程獲取過程供應(yīng)過程開發(fā)過程運行過程維護過程文檔編制過程配置管理過程質(zhì)量保證過程驗證過程確認(rèn)過程聯(lián)合評審過程審核過程問題解決過程管理過程基礎(chǔ)設(shè)施過程改進過程培訓(xùn)過程4/15/202328軟件工作的范圍只考慮編寫程序

涉及整個軟件生存周期擴展到4/15/202329

軟件開發(fā)模型是軟件開發(fā)全部過程、活動和任務(wù)的結(jié)構(gòu)框架。它能直觀表達軟件開發(fā)全過程,明確規(guī)定要完成的主要活動、任務(wù)和開發(fā)策略。軟件開發(fā)模型也常稱為: 軟件過程模型 軟件生存周期模型 軟件工程范型軟件開發(fā)模型4/15/202330可行性研究與計劃需求分析設(shè)計編碼運行維護測試定義階段開發(fā)階段維護階段瀑布模型(WaterfallModel)4/15/202331開發(fā)軟件不僅僅是編程4/15/202332按照傳統(tǒng)瀑布模型開發(fā)軟件的特點1.階段間具有順序性和依賴性。2.推遲實現(xiàn)的觀點。3.每個階段必須完成規(guī)定的文檔;每個階段結(jié)束前完成文檔審查,及早改正錯誤。4/15/202333原型模型(快速原型模型)原型范型用戶測試運行原型建造/修改原型聽取用戶意見4/15/202334采用原型模型的軟件生存周期分析定義系統(tǒng)需求生成原型系統(tǒng)設(shè)計程序設(shè)計編碼測試運行和維護原型化含原型化的軟件生存期4/15/202335§1.3軟件質(zhì)量的評價成功的標(biāo)準(zhǔn):

用戶在用用戶可很容易做完要做的事失敗的根本原因:

開發(fā)人員寫出的東西達不到用戶要求(人的問題.技術(shù)問題)4/15/202336質(zhì)量與生產(chǎn)率質(zhì)量是軟件需求方最關(guān)心的問題,用戶即使不圖物美價廉,也要求個貨真價實質(zhì)量與生產(chǎn)率之間有著內(nèi)在的聯(lián)系,高生產(chǎn)率必須以質(zhì)量合格為前提質(zhì)量與生產(chǎn)率的提高就指望程序員與程序經(jīng)理非得在質(zhì)量與生產(chǎn)率之間分個主次不可,那么應(yīng)該是質(zhì)量第一,生產(chǎn)率第二4/15/202337質(zhì)量與生產(chǎn)率(2)質(zhì)量直接體現(xiàn)在軟件的每段程序中,高質(zhì)量自然是開發(fā)人員的技術(shù)追求,也是職業(yè)道德的要求高質(zhì)量對所有的用戶都有價值,而高生產(chǎn)率只對開發(fā)方有意義如果一開始就追求高生產(chǎn)率,容易使人急功近利,留下隱患4/15/202338不貪污的官就是好官嗎“運行正確”的程序就是高質(zhì)量的程序嗎?也許運行速度很低并且浪費內(nèi)存;也許代碼寫得一塌糊涂

4/15/202339軟件的質(zhì)量因素

軟件的質(zhì)量因素很多,如正確性、精確性、可靠性、容錯性、性能、效率、易用性、可理解性、簡潔性、可復(fù)用性、可擴充性、兼容性等等(還可以列出十幾個)

一般說來傾向于可維護性、可靠性、可理解性和效率4/15/202340軟件質(zhì)量因素分類和武學(xué)分類正確性與精確性易用性可理解性與簡潔性性能與效率可復(fù)用性與可擴充性少林派、武當(dāng)派華山派昆侖派峨嵋派崆峒派4/15/202341正確性與精確性

機器不會主動欺騙人,軟件運行不正確或者不精確一般都是人造成的

需求分析錯了,那么對客戶而言這個軟件也存在錯誤

如果軟件沒有100%地按需求規(guī)格執(zhí)行,那么這個軟件也存在錯誤程序員要為“正確”、“精確”四個字竭盡全力

4/15/202342性能與效率

用戶都希望軟件的運行速度高些(高性能),并且占用資源少些(高效率)

舊社會地主就是這么對待長工的:干活要快點,吃得要少點

通過優(yōu)化算法、數(shù)據(jù)結(jié)構(gòu)和代碼組織來提高軟件系統(tǒng)的性能與效率優(yōu)化的關(guān)鍵工作是找出限制性能與效率的“瓶頸”

4/15/202343易用性

導(dǎo)致軟件易用性差的根本原因是開發(fā)人員犯了“錯位”的毛?。核詾橹灰约河闷饋矸奖悖脩粢惨欢〞M意

當(dāng)用戶真的感到軟件很好用時,一股溫暖的感覺油然而生,于是就用“友好”來評價易用性

4/15/202344可理解性與簡潔性(Note1)

開發(fā)人員只有在自己思路清晰時才可能寫出讓別人能理解的程序

編程時還要注意不可濫用技巧,應(yīng)該用自然的方式編程

簡潔是一種美

如果把學(xué)術(shù)文章寫得很簡潔,讓人很容易理解,它往往中不了

4/15/202345可復(fù)用性與可擴充性

一種方式是原封不動地使用現(xiàn)成的軟件構(gòu)件

一種方式是對現(xiàn)成的軟構(gòu)件進行必要的擴充后再使用

可復(fù)用性好的程序一般也具有良好的可擴充性

4/15/202346可行性研究與計劃需求分析設(shè)計編碼運行維護測試測試已經(jīng)開始返回上級,再…..瀑布模型的質(zhì)量保障體系4/15/202347小結(jié)(Note2)軟件的高質(zhì)量主要是設(shè)計出來的不是“管”出來的更不能依賴質(zhì)量檢查。

4/15/202348第二章

可行性研究與計劃4/15/202349系統(tǒng)流程圖(Note3)輸入單據(jù)磁盤文件處理輸出單據(jù)4/15/202350數(shù)據(jù)流程圖數(shù)據(jù)源點和終點變換數(shù)據(jù)的加工文件數(shù)據(jù)邏輯關(guān)系符號:與、或、異或4/15/202351§2.1可行性研究基本概念可行性研究的任務(wù):

可行性研究的主要任務(wù)是“了解客戶的要求及現(xiàn)實環(huán)境,從技術(shù)、經(jīng)濟和社會因素等三方面研究并論證本軟件項目的可行性,編寫可行性研究報告,制定初步項目開發(fā)計劃。”4/15/202352可行性研究的內(nèi)容(1)技術(shù)可行性(2)經(jīng)濟可行性(3)操作可行性(4)社會可行性(法律可行性)(5)抉擇4/15/202353技術(shù)可行性(Note4)度量一個特定技術(shù)信息系統(tǒng)解決方案的實用性及技術(shù)資源的可用性考慮的問題開發(fā)風(fēng)險分析資源分析相關(guān)技術(shù)的發(fā)展(現(xiàn)有技術(shù)能否實現(xiàn)新系統(tǒng),技術(shù)難點、建議采用技術(shù)的先進性)4/15/202354經(jīng)濟可行性度量系統(tǒng)解決方案的性能價格比考慮的問題成本/效益分析有形成本、效益無形成本、效益價值和成本的關(guān)系質(zhì)量與價值、成本的關(guān)系價值/成本的均衡4/15/202355經(jīng)濟可行性考慮的問題(Note5)成本和效益的估算開發(fā)成本的估算開發(fā)效益的估算運行成本的估算運行效益的估算4/15/202356成本分析代碼行技術(shù)(page19)任務(wù)估算技術(shù)(page20)總成本、總?cè)肆ο鄬φ`差在內(nèi)Putnam估算模型(page21)COCOMO模型比較復(fù)雜4/15/202357效益分析系統(tǒng)的經(jīng)濟效益=使用新系統(tǒng)增加收入+使用心系統(tǒng)可以節(jié)省的運行費用總的效益和軟件生存周期有關(guān)貨幣的時間價值(page23)投資回收期(page23)投資回收率(page23)純收入(page23)投資回收率4/15/202358系統(tǒng)開發(fā)和每年運行費用舉例1.系統(tǒng)開發(fā)費用(一次).2名系統(tǒng)分析員(450小時/名,45美元/小時)$40,500.5名系統(tǒng)開發(fā)人員(275小時/名,36美元/小時)$49,500.1名數(shù)據(jù)庫管理員(30小時/名,42美元/小時)$1,260.2名技術(shù)寫作者(120小時/名,25美元/小時)$6,000.1名秘書(160小時/名,15美元/小時)$2,4004/15/202359系統(tǒng)開發(fā)和每年運行費用舉例.1名數(shù)據(jù)通訊專家(60小時/名,42美元/小時)$2,4002名在轉(zhuǎn)換期間數(shù)據(jù)輸入人員$49,500(40小時/名,12美元/小時)4/15/202360系統(tǒng)開發(fā)和每年運行費用舉例培訓(xùn):三天的開發(fā)人員內(nèi)部培訓(xùn)課程$7,00030個用戶,三天的內(nèi)部培訓(xùn)課程$10,000物資:復(fù)印$500磁盤、紙張等消耗品$6504/15/202361系統(tǒng)開發(fā)和每年運行費用舉例購買硬件、軟件:20臺工作站W(wǎng)indows軟件$1,00020臺工作站內(nèi)存升級$8,000網(wǎng)絡(luò)軟件$17,50020臺工作站辦公軟件產(chǎn)品$20,000系統(tǒng)開發(fā)總費用$161,6704/15/202362系統(tǒng)開發(fā)和每年運行費用舉例2.年運行費用(每年)人員:維護程序員/分析員(250小時/年,42美元/小時)

$10,500網(wǎng)絡(luò)管理員(300小時/年,50美元/小時)$15,000購買硬件、軟件升級:硬件$5,000軟件$6,000物資和雜項$3,500每年總運行費用$40,0004/15/202363操作可行性

用戶使用可能性時間進度可行性

組織和文化上的可行性4/15/202364社會可行性(法律可行性)開發(fā)項目是否會在社會上或政治上引起侵權(quán)、破壞或其它責(zé)任問題4/15/202365可行性研究計劃的完成可行性研究計劃4/15/202366§2.3可行性研究的步驟(page15)

(1)復(fù)查確認(rèn)系統(tǒng)目標(biāo)、規(guī)模(2)研究正使用系統(tǒng)工作流程(3)導(dǎo)出新系統(tǒng)高層邏輯模型(4)重新定義問題(5)導(dǎo)出和評價供選擇的方案(6)推薦可行的方案

(7)草擬開發(fā)計劃(8)編寫可行性研究報告,送審4/15/202367第三章需求分析和規(guī)格說明4/15/202368§3.1為什么需要需求分析開發(fā)人員往往急于求成希望對開發(fā)進行指導(dǎo)希望開發(fā)人員對用戶的要求理解希望用戶理解開發(fā)人員測試部門有理可依4/15/202369需求分析的任務(wù)

準(zhǔn)確地定義未來系統(tǒng)的目標(biāo),確定為了滿足用戶的需求系統(tǒng)必須做什么。用<需求規(guī)格說明書>規(guī)范的形式準(zhǔn)確地表達用戶的需求。4/15/202370什么是用戶需求思考、涉及的幾個問題如何識別、獲取需求?你能夠采取何種手段與用戶進行交流溝通?何為需求建模?你如何理解模型與建模?4/15/202371軟件需求分析的幾個階段問題分析問題評估和方案綜合建模規(guī)約復(fù)審系統(tǒng)分析員的主要焦點是“做什么(what)”,不是“怎樣做(how)”4/15/202372需求獲取面臨的挑戰(zhàn)(Note6)客戶說不清楚需求

需求易變性問題的復(fù)雜性和對問題空間理解的不完備性與不一致性4/15/202373§3.2需求獲取的常用方法(Note7)建立分析小組領(lǐng)域?qū)<遥褐鹘窍到y(tǒng)分析員:導(dǎo)演客戶訪談問題分析與確認(rèn)4/15/202374某出版社系統(tǒng)調(diào)查表編號提出問題1您在哪個部門工作?2出版業(yè)務(wù)流程是什么?3您每日都處理那些文件、數(shù)據(jù)、報表?4工作中手工處理特別麻煩的事情是什么?5工作中手工處理什么問題解決不了?影響效率的問題有哪些?6您認(rèn)為提高工作效率,節(jié)省工作時間,減輕工作強度可采取哪些辦法?4/15/202375某出版社系統(tǒng)調(diào)查表編號提出問題7您的部門需要成本核算和統(tǒng)計的內(nèi)容有哪些?8您的部門采用計算機管理工作情況如何?9如何改進業(yè)務(wù)流程使之更合理?10哪些問題是目前傳統(tǒng)手工方法根本無法解決的?11出版社計算機管理信息系統(tǒng)需要解決什么問題?4/15/202376聽一個故事(Note8)主人公:Contoso制藥公司的高級管理長官GerhardContoso公司的信息系統(tǒng)開發(fā)小組的新管理員Cynthia內(nèi)容:客戶的需求觀

4/15/202377誰是客戶客戶是指直接或間接從產(chǎn)品中獲得利益的個人或組織軟件客戶包括提出要求、支付款項、選擇、具體說明或使用軟件產(chǎn)品的項目風(fēng)險承擔(dān)者(stakeholder)或是獲得產(chǎn)品所產(chǎn)生的結(jié)果的人。4/15/202378客戶與開發(fā)人員之間的合作關(guān)系(Note10)

高質(zhì)量的需求來源于客戶與開發(fā)人員之間有效的交流與合作通常,開發(fā)人員與客戶或客戶代理人成為一種對立關(guān)系

4/15/202379軟件客戶需求權(quán)利書(1)(Note11)

客戶有如下權(quán)利:1.要求分析人員使用符合客戶語言習(xí)慣的表達。2.要求分析人員了解客戶系統(tǒng)的業(yè)務(wù)及目標(biāo)。3.要求分析人員組織需求獲取期間所介紹的信息,并編寫軟件需求規(guī)格說明。4.要求開發(fā)人員對需求過程中所產(chǎn)生的工作結(jié)果進行解釋說明。5.要求開發(fā)人員在整個交流過程中保持和維護一種合作的職業(yè)態(tài)度。4/15/202380軟件客戶需求權(quán)利書(2)(Note12)6.要求開發(fā)人員對產(chǎn)品的實現(xiàn)及需求都要提供建議,拿出主意。7.描述產(chǎn)品使其具有易用、好用的特性。8.可以調(diào)整需求,允許重用已有的軟件組件。9.當(dāng)需要對需求進行變更時,對成本、影響、得失(trade-off)有個真實可信的評估。10.獲得滿足客戶功能和質(zhì)量要求的系統(tǒng),并且這些要求是開發(fā)人員同意的。

4/15/202381軟件客戶需求義務(wù)書(1)(Note13)客戶有下列義務(wù):1.給分析人員講解業(yè)務(wù)及說明業(yè)務(wù)方面的術(shù)語等專業(yè)問題。2.抽出時間清楚地說明需求并不斷完善。3.當(dāng)說明系統(tǒng)需求時,力求準(zhǔn)確詳細(xì)。4.需要時要及時對需求做出決策。5.要尊重開發(fā)人員的成本估算和對需求的可行性分析。4/15/202382軟件客戶需求義務(wù)書(2)(Note14)6.對單項需求、系統(tǒng)特性或使用實例劃分優(yōu)先級。7.評審需求文檔和原型。8.一旦知道要對項目需求進行變更,要馬上與開發(fā)人員聯(lián)系。9.在要求需求變更時,應(yīng)遵照開發(fā)組織確定的工作過程來處理。10.尊重需求工程中開發(fā)人員采用的流程(過程)。

4/15/202383“簽約”意味著什么(Note15)客戶與開發(fā)人員關(guān)系中的重要部分客戶代表經(jīng)常把“簽約”看作是毫無意義的更為重要的是簽名是建立在一個需求協(xié)議的基線上與你的重要客戶一起討論權(quán)利書和義務(wù)書,以達成協(xié)議,并付諸實踐4/15/202384高質(zhì)量的需求過程帶來的好處(Note16)開發(fā)后期和整個維護階段的重做的工作大大減少強調(diào)需求質(zhì)量并不能引起某些人的重視,他們錯誤地認(rèn)為在需求上消耗多少時間就會導(dǎo)致產(chǎn)品開發(fā)推遲多少時間將選定系統(tǒng)的需求明確地分配到各軟件子系統(tǒng),強調(diào)采用產(chǎn)品工程的系統(tǒng)方法。這樣能簡化硬軟件的集成

4/15/202385優(yōu)秀需求具有的特性(Note17)1.完整性2.正確性3.可行性4.必要性5.劃分優(yōu)先級6.無二義性7.可驗證性

4/15/202386§3.3需求獲取的內(nèi)容

1.用戶需求分類(1)功能性需求:定義了系統(tǒng)做什么(描述系統(tǒng)必須支持的功能和過程)(2)非功能性需求(技術(shù)需求):定義了系統(tǒng)工作時的特性(描述操作環(huán)境和性能目標(biāo))4/15/202387兩類需求包括的內(nèi)容(1)功能(2)性能(3)環(huán)境(4)界面(5)用戶或人 的因素(6)文檔(7)數(shù)據(jù)(8)資源(9)安全保密(10)軟件成本消耗 與開發(fā)進度(11)質(zhì)量保證4/15/202388(1)功能需求

系統(tǒng)做什么?系統(tǒng)何時做什么?系統(tǒng)何時及如何修改或升級?4/15/202389(2)性能需求軟件開發(fā)的技術(shù)性指標(biāo)例如:存儲容量限制執(zhí)行速度、相應(yīng)時間吞吐量4/15/202390(3)環(huán)境需求硬件設(shè)備:機型、外設(shè)、接口、地點、分布、溫度、濕度、磁場干擾等軟件:操作系統(tǒng)網(wǎng)絡(luò)數(shù)據(jù)庫4/15/202391(4)界面需求有來自其它系統(tǒng)的輸入嗎?到自其它系統(tǒng)的輸出嗎?對數(shù)據(jù)格式有規(guī)定嗎?對數(shù)據(jù)存儲介質(zhì)有規(guī)定嗎?4/15/202392(5)用戶或人的因素

用戶類型?各種用戶熟練程度?需受何種訓(xùn)練?用戶理解、使用系統(tǒng)的難度?用戶錯誤操作系統(tǒng)的可能性?4/15/202393(6)文檔需求需哪些文檔?文檔針對哪些讀者?4/15/202394(7)數(shù)據(jù)需求輸入、輸出數(shù)據(jù)的格式?接收、發(fā)送數(shù)據(jù)的頻率?數(shù)據(jù)的準(zhǔn)確性和精度?數(shù)據(jù)流量?數(shù)據(jù)需保持的時間?4/15/202395(8)資源需求

軟件運行時所需的數(shù)據(jù)、軟件。內(nèi)存空間等資源。軟件開發(fā)、維護所需的人力、支撐軟件、開發(fā)設(shè)備等。4/15/202396(9)安全保密要求需對訪問系統(tǒng)或系統(tǒng)信息加以控制嗎?如何隔離用戶之間的數(shù)據(jù)?用戶程序如何與其它程序和操作系統(tǒng)隔離?系統(tǒng)備份要求?4/15/202397(10)軟件成本消耗

與開發(fā)進度需求開發(fā)有規(guī)定的時間表嗎?軟硬件投資有無限制?4/15/202398(11)質(zhì)量保證

系統(tǒng)的可靠性要求?系統(tǒng)必須監(jiān)測和隔離錯誤嗎?規(guī)定系統(tǒng)平均出錯時間?出錯后,重啟系統(tǒng)允許的時間?系統(tǒng)變化如何反映到設(shè)計中?維護是否包括對系統(tǒng)的改進?系統(tǒng)的可移植性?4/15/202399怎樣寫需求分析報告作報告時要先從宏觀上講一、二、三、四、五,再從細(xì)節(jié)上講A、B、C、D、E。需求分析不象偵探推理那樣從蛛絲馬跡著手。應(yīng)該先了解宏觀的問題,再了解細(xì)節(jié)的問題

如圖S={D1,D2,D3,…Dn}Di={P1,P2,P3,…Pm}Pj={F1,F(xiàn)2,F(xiàn)3,…Fk}4/15/2023100怎樣寫需求分析報告4/15/2023101§3.4需求的開發(fā)和管理 整個軟件需求工程研究領(lǐng)域劃分為需求開發(fā)和需求管理兩部分更合適需求工程域的層次分解示意圖

4/15/2023102需求開發(fā)(Note18)

問題獲?。╡licitation)分析(analysis)編寫規(guī)格說明(specification)驗證(verification)

4/15/2023103知識技能

(Note19)

絕大部分的軟件開發(fā)人員都沒有接受過高效需求工程所需技能的正規(guī)培訓(xùn)培訓(xùn)需求分析人員所有的開發(fā)人員都應(yīng)接受一個基本的需求工程培訓(xùn)培訓(xùn)軟件需求的用戶代表和管理人員參與軟件開發(fā)的用戶代表應(yīng)接受為期一天左右,關(guān)于需求工程的培訓(xùn),開發(fā)管理者和客戶管理者也應(yīng)參加讓開發(fā)人員了解應(yīng)用領(lǐng)域的基本概念組織一些簡短的關(guān)于客戶業(yè)務(wù)活動、術(shù)語、目標(biāo)等方面的討論會以幫助開發(fā)人員對應(yīng)用領(lǐng)域有個基本了解

4/15/2023104需求獲取(1)(Note20)

確定需求開發(fā)過程編寫項目視圖和范圍文檔項目視圖將用戶群分類并歸納各自特點選擇每類用戶的產(chǎn)品代表建立起典型用戶的核心隊伍把同類產(chǎn)品或你的產(chǎn)品的先前版本用戶代表召集起來,從他們那里收集目前產(chǎn)品的功能需求和非功能需求

4/15/2023105需求獲取(2)(Note21)讓用戶代表確定使用實例召開應(yīng)用程序開發(fā)聯(lián)系會議分析用戶工作流程觀察用戶執(zhí)行業(yè)務(wù)任務(wù)的過程確定質(zhì)量屬性和其它非功能需求在功能需求之外再考慮一下非功能的質(zhì)量特點通過檢查當(dāng)前系統(tǒng)的問題報告來進一步完善可查看需求是否有足夠的靈活性以允許重用一些已有的軟件組件4/15/2023106需求分析(Note22)繪制系統(tǒng)關(guān)聯(lián)圖。建立數(shù)據(jù)字典。為需求建立模型。建立用戶接口原型。確定需求優(yōu)先級。

4/15/2023107需求規(guī)格說明(SRS)(Note23)采用原始模板在你的組織中要為編寫軟件需求文檔定義一種標(biāo)準(zhǔn)模板指明需求的來源為每項需求注上標(biāo)號制定一種慣例來為每項需求提供一個獨立的可識別的標(biāo)號或記號記錄業(yè)務(wù)規(guī)范業(yè)務(wù)規(guī)范創(chuàng)建需求跟蹤能力矩陣4/15/2023108需求驗證(Note24)對需求文檔進行正式審查以需求為依據(jù)編寫測試用例編寫用戶手冊在需求開發(fā)早期即可起草一份用戶手冊確定合格的標(biāo)準(zhǔn)讓用戶描述什么樣的產(chǎn)品才算滿足他們的要求和適合他們使用的

4/15/2023109需求管理(Note25)確定一個選擇、分析和決策需求變更的過程建立變更控制委員會評估每項選擇的需求變更跟蹤所有受需求變更影響的工作產(chǎn)品建立需求基準(zhǔn)版本和需求控制版本文檔維護需求變更的歷史記錄記錄跟蹤每項需求的狀態(tài)建立一個數(shù)據(jù)庫衡量需求穩(wěn)定性記錄基準(zhǔn)需求的數(shù)量和變更數(shù)量使用需求管理工具商業(yè)化的需求管理工具

4/15/2023110項目管理(Note26)選擇一種合適的軟件開發(fā)方法生存周期項目開發(fā)計劃的進度安排將會不斷改變發(fā)生需求變更時協(xié)商項目約定編寫文檔和管理與需求相關(guān)的風(fēng)險跟蹤需求工程所耗的工作量4/15/2023111分析編寫文檔評審,商議基準(zhǔn)需求說明需求變更過程管理客戶需求市場當(dāng)前基線修正后基線市場,客戶,管理項目環(huán)境需求開發(fā)與需求管理之間的界限(Note27)

4/15/2023112§3.5改進需求過程(Note28)軟件開發(fā)過程的改進有以下兩個主要目標(biāo):解決在以前項目或目前項目中遇到的問題。防止和避免你可能在將來的項目中要遇到的問題。4/15/2023113四條改進軟件的原則(Note29)改進過程應(yīng)該是革命性的、徹底的、連續(xù)的、反復(fù)的人們和組織機構(gòu)都只有在他們獲得激勵時才愿意變更過程變更是面向目標(biāo)的將改進活動看作一些小項目4/15/2023114過程改進周期(Note30)

評價當(dāng)前采用的方法指定活動改進計劃創(chuàng)建、實驗和實施新過程評價結(jié)果圖:軟件開發(fā)過程改進的周期發(fā)現(xiàn)和建議活動計劃新的過程,實驗結(jié)果,獲得經(jīng)驗實施情況怎樣活動計劃的效果如何新過程是否達到預(yù)期目標(biāo)?計劃下一步的改進周期4/15/2023115§3.6軟件需求與風(fēng)險管理(Note31)聽一個故事:同樣在Contoso制藥公司主人公“化學(xué)制品跟蹤系統(tǒng)”的項目管理人員Dave首席程序員Helen首席測試員Ramesh內(nèi)容需求工程的風(fēng)險為何物?4/15/2023116軟件風(fēng)險管理的要素(Note32)風(fēng)險管理就是使用某些工具和步驟把項目風(fēng)險限制在一個可接受的范圍內(nèi)。風(fēng)險管理提供了一種標(biāo)準(zhǔn)的方法來指出風(fēng)險并把風(fēng)險因素編成文檔,評估其潛在的威脅,以及確定減少這些風(fēng)險評價(riskassessment)風(fēng)險避免(riskavoidance)風(fēng)險控制(riskcontrol)4/15/2023117編寫項目風(fēng)險文檔(Note33)4/15/2023118與需求有關(guān)的風(fēng)險

下面介紹的風(fēng)險因素是按需求工程中獲取、分析、編寫規(guī)格說明、驗證和管理匯總起來的,并推薦了一些方法用于降低風(fēng)險發(fā)生的可能性或減輕風(fēng)險發(fā)生給項目帶來的影響。這張清單僅僅是一個起點,在你做項目逐漸積累經(jīng)驗過程中,加入你的風(fēng)險因素清單和減輕風(fēng)險的策略。使用這里提供的條目來幫助你識別需求風(fēng)險并采用條件—結(jié)果的格式來書寫風(fēng)險說明。4/15/2023119需求獲取

(Note34)1)產(chǎn)品視圖與范圍2)需求開發(fā)所需時間3)需求規(guī)格說明的完整性和正確性4)對革新產(chǎn)品的需求5)明確非功能需求6)客戶贊同產(chǎn)品需求7)未加說明的需求8)把已有的產(chǎn)品作為需求基線9)給出期望的解決辦法4/15/2023120需求分析(Note35)1)劃分需求優(yōu)先級2)帶來技術(shù)困難的特性3)不熟悉的技術(shù)、方法、語言、工具或硬件平臺4/15/2023121需求規(guī)格說明

(Note36)1)需求理解2)時間壓力對TBD的影響3)具有二義性的術(shù)語4)需求說明中包括了設(shè)計

4/15/2023122需求驗證

(Note37)1)未經(jīng)驗證的需求2)審查的有效性4/15/2023123需求管理

(Note38)1)變更需求2)需求變更過程3)未實現(xiàn)的需求4)擴充項目范圍4/15/2023124建立項目視圖與范圍(Note39)一個項目可能包括一些與軟件沒有直接關(guān)系的需求,例如:硬件的購買、產(chǎn)品的安裝、維護或廣告。但在此,我們只關(guān)心與軟件產(chǎn)品有關(guān)系的業(yè)務(wù)需求。4/15/2023125通過業(yè)務(wù)需求確定項目視圖(Note40)項目視圖可以把項目參與者定位到一個共同和明確的方向上項目視圖描述了產(chǎn)品所涉及的各個方面和在一個完美環(huán)境中最終所具有的功能市場需求文檔&視圖和范圍的文檔來自各個渠道的業(yè)務(wù)需求可能會發(fā)生沖突

4/15/2023126項目視圖和范圍文檔的模板(Note41)a.業(yè)務(wù)需求a.1背景a.2業(yè)務(wù)機遇a.3業(yè)務(wù)目標(biāo)a.4客戶或市場需求a.5提供給客戶的價值a.6業(yè)務(wù)風(fēng)險b.項目視圖的解決方案b.1項目視圖陳述b.2主要特性b.3假設(shè)和依賴環(huán)境c.范圍和局限性c.1首次發(fā)行的范圍c.2隨后發(fā)行的范圍c.3局限性和專用性d.業(yè)務(wù)環(huán)境d.1客戶概貌d.2項目優(yōu)先級e.產(chǎn)品成功的因素4/15/2023127計算機學(xué)科的發(fā)展計算機科學(xué)(CS)計算機科學(xué)(CS)計算機工程(CE)軟件工程(SE)信息系統(tǒng)(IS)計算學(xué)科(computingdiscipline)計算學(xué)科是研究通過在計算機上建立模型并模擬物理過程來進行科學(xué)調(diào)查和研究的學(xué)科.4/15/2023128學(xué)科的3個形態(tài)理論抽象(模型化)設(shè)計重復(fù)出現(xiàn)的概念綁定(binding)概念與形式模型一致性和完備性抽象層次重用……典型的學(xué)科方法:數(shù)學(xué)方法系統(tǒng)科學(xué)方法……計算中抽象的本質(zhì)和使用。在處理復(fù)雜事務(wù)、構(gòu)造系統(tǒng)、隱藏細(xì)節(jié)和獲取重復(fù)模式方面使用抽象,通過具有不同層次的細(xì)節(jié)和指標(biāo)的抽象,能夠表達一個實體和系統(tǒng)計算機科學(xué)與技術(shù)學(xué)科的方法論4/15/2023129模型(model)模型:現(xiàn)實世界某些重要方面的表示。有時我們使用術(shù)語“抽象”來表示模型,因為我們從現(xiàn)實世界中抽象出對我們特別有用的東西。4/15/2023130抽象(模型化)源于實驗科學(xué),主要要素為數(shù)據(jù)采集方法和假設(shè)的形式說明,模型的構(gòu)造與預(yù)測實驗分析結(jié)果分析.在為可能的算法數(shù)據(jù)結(jié)構(gòu)和系統(tǒng)結(jié)構(gòu)等構(gòu)造模型時使用此過程.抽象的結(jié)果是概念符號模型4/15/2023131§3.4需求分析的步驟當(dāng)前系統(tǒng)目標(biāo)系統(tǒng)物理模型邏輯模型邏輯模型物理模型模型化抽象化具體化實例化怎么做做什么當(dāng)前系統(tǒng)目標(biāo)系統(tǒng)需求定義4/15/2023132邏輯模型和物理模型模型是對對象系統(tǒng)的形式化的特征抽象,概括性或近似地表示構(gòu)造模型的過程是一個抽象、分析的過程。對象系統(tǒng)模型系統(tǒng)抽象(映射)模型應(yīng)用模型構(gòu)造的過程4/15/2023133

邏輯模型物理模型

(本質(zhì)模型、概念模型)

(實施模型、技術(shù)模型)現(xiàn)行系統(tǒng)目標(biāo)系統(tǒng)描述重要的業(yè)務(wù)功能,無論系統(tǒng)是如何實施的。描述現(xiàn)實系統(tǒng)是如何在物理上實現(xiàn)的。描述新系統(tǒng)的主要業(yè)務(wù)功能和用戶新的需求,無論系統(tǒng)應(yīng)如何實施。描述新系統(tǒng)是如何實施的(包括技術(shù))。4/15/2023134分析階段中常用的模型

(邏輯模型)數(shù)據(jù)流圖(DFD)實體―聯(lián)系圖(ERD)類圖實例圖時序圖狀態(tài)圖協(xié)作圖事件列表數(shù)據(jù)流定義數(shù)據(jù)元素定義……4/15/2023135數(shù)據(jù)流圖

(DFD,DataFlowDiagram)(Note42)

描述邏輯模型的圖形工具,表示數(shù)據(jù)在系統(tǒng)內(nèi)的變化。 DFD可以用來表示一個系統(tǒng)或軟件在任何層次上的抽象。較大型軟件系統(tǒng)DFD分成多層(子圖、父圖概念),可以表示數(shù)據(jù)流和功能的進一步的細(xì)節(jié)。4/15/2023136數(shù)據(jù)流程圖的表示(32)數(shù)據(jù)源點和終點變換數(shù)據(jù)的加工文件數(shù)據(jù)邏輯關(guān)系符號:與、或、異或4/15/2023137畫數(shù)據(jù)流圖(page32-33)規(guī)則:由外向里畫畫系統(tǒng)的輸出、輸入化系統(tǒng)的內(nèi)部畫加工的內(nèi)部4/15/2023138應(yīng)該注意的幾個問題(34)適當(dāng)?shù)孛嫈?shù)據(jù)流而不是控制流先考慮穩(wěn)定狀態(tài)忽略瑣碎的枝節(jié)隨時準(zhǔn)備重畫4/15/2023139分層數(shù)據(jù)流圖對于大型系統(tǒng),往往使用一張數(shù)據(jù)流圖畫出所有數(shù)據(jù)流和加工是不可能的自頂向下逐層分解不要一下子引入過多細(xì)節(jié),應(yīng)該逐步增加細(xì)節(jié)例子(page35):

圖3.13(a)畫出了…..。圖3說明“產(chǎn)生新文件”……。顯然……。4/15/2023140由頂向下畫分層數(shù)據(jù)流圖(page37)描繪中應(yīng)該注意的問題:編號父圖和子圖的平衡局部文件分解的程度4/15/2023141實例——運動會管理系統(tǒng)自學(xué)3.3.5節(jié)(Page40)4/15/2023142數(shù)據(jù)流圖的改進檢查數(shù)據(jù)流圖的正確性數(shù)據(jù)守恒(42)文件的使用(page42)父圖和子圖的平衡(43)提高數(shù)據(jù)流圖的易理解性簡化加工間的聯(lián)系(page43)分解的均勻(page43)適當(dāng)?shù)孛?4)重新分解(page44)4/15/2023143數(shù)據(jù)實體關(guān)聯(lián)圖(Note43)與數(shù)據(jù)流圖描繪了系統(tǒng)中發(fā)生的過程一樣,實體聯(lián)系圖(entity-relationshipdiagram,ERD)描繪了系統(tǒng)的數(shù)據(jù)關(guān)系分析實體聯(lián)系圖有助于對業(yè)務(wù)或系統(tǒng)數(shù)據(jù)組成的理解和交互,并暗示產(chǎn)品將有必要包含一個數(shù)據(jù)庫。實體(entity)是物理數(shù)據(jù)項(包括人)或者數(shù)據(jù)項的集合,這對所分析的業(yè)務(wù)或所要構(gòu)造的系統(tǒng)是很重要的

4/15/2023144化學(xué)制品倉庫存貨清單化學(xué)制品容器存儲執(zhí)行化學(xué)制品請求1MM1“化學(xué)制品跟蹤系統(tǒng)”的實體聯(lián)系圖4/15/2023145需求建模實例

酒店管理系統(tǒng)的局部DFD已預(yù)訂的入住預(yù)訂請求預(yù)訂預(yù)訂確認(rèn)未預(yù)訂的入住已預(yù)訂的入住請求未預(yù)訂的入住請求客人數(shù)據(jù)客房數(shù)據(jù)預(yù)訂確認(rèn)信息客人信息夜審結(jié)算信息財務(wù)系統(tǒng)時鐘4/15/2023146需求建模實例:

某金融貿(mào)易系統(tǒng)用例圖(UML)風(fēng)險分析交易估計進行交易進行交易接待員酒店系統(tǒng)財務(wù)系統(tǒng)4/15/2023147需求建模實例:

用例圖舉例(UML)簽定一份保險單客戶保險銷售人員銷售統(tǒng)計客戶統(tǒng)計4/15/2023148需求建模實例:

UML類圖實例(Note44)客人姓名地址身份證號碼護照號碼……預(yù)訂……入住住宿編號付款方式……退房……客房狀態(tài)日期人數(shù)……設(shè)置狀態(tài)……客房……服務(wù)日期數(shù)量設(shè)置……讀取……服務(wù)類別名稱價格設(shè)置……10..*10..*0..*0..11..*10..*1*4/15/2023149需求建模實例:

描述客房狀態(tài)的狀態(tài)圖(Note45)取消預(yù)定入住已預(yù)訂空閑占用維修維修完成退房換房入住事件創(chuàng)建4/15/2023150需求建模實例:

接的順序圖(UML)受話者交換機遠(yuǎn)程交換機受話者拿起話筒聽通話聲撥號碼鈴響信號鈴響鈴響停止信號拿起話筒鈴響停止<10deabc{b-a<1}{e-d<5}{c-b<10}路徑4/15/2023151需求建模實例:

UML協(xié)作圖舉例計算機隊列打印服務(wù)器打印機打印文件打印機忙保存打印文件打印機空閑打印文件4/15/2023152§3.5數(shù)據(jù)詞典

(DD,DataDictionary) DD是對所有與系統(tǒng)相關(guān)的數(shù)據(jù)元素的一個有組織的列表,以及精確的、嚴(yán)格的定義,使得用戶和系統(tǒng)分析員對于輸入、輸出、存儲成分和中間計算有共同的理解4/15/2023153詞典與數(shù)據(jù)流圖之間關(guān)系(page44)數(shù)據(jù)流圖描述了系統(tǒng)的“分解”;依靠“詞典”來說明各個成分的含義;數(shù)據(jù)流圖中所有名字的定義就構(gòu)成一本詞典;數(shù)據(jù)流圖和詞典結(jié)合在一起構(gòu)成了“需求說明書”數(shù)據(jù)流圖中出現(xiàn)的每一個數(shù)據(jù)流名、每一個文件名和每一個加工名在詞典中都應(yīng)該有一個條目給出這個名字的定義。4/15/2023154詞典條目的各種類型(page.45)四個類型條目數(shù)據(jù)流文件數(shù)據(jù)項(指不在分解的數(shù)據(jù)單位)加工詞典條目的實例(page46-47)結(jié)合上次自習(xí)的內(nèi)容自行學(xué)習(xí)本節(jié)4/15/2023155需求建模實例:

數(shù)據(jù)字典條目的定義預(yù)訂請求=客人數(shù)據(jù)+住宿期限+客房類別客人數(shù)據(jù)=客人姓名+地址+身份證號碼+[護照號碼]+支付方式身份證號碼=十進制15{數(shù)字}18護照號碼=字母+8{數(shù)字}8字母=“A”…“Z”十進制數(shù)字=“0”…“9”4/15/2023156需求建模實例:

數(shù)據(jù)字典條目的定義F1:航班信息文件={航空公司名稱+航班號+起點+終點+日期+起飛時間+降落時間}航空公司名稱=2{字母}4航班號=3{十進制數(shù)字}3字母=“A”…“Z”十進制數(shù)字=“0”…“9”起點=終點=1{漢字}10起飛時間=降落時間=時+分4/15/2023157需求建模實例:

數(shù)據(jù)字典條目的定義

時=“00”…“23”分=“00”…“59”日期=年+月+日年=[2000|2001|2002|2004]月=“01”…“12”日=“01”…“31”4/15/2023158§3.6小說明數(shù)據(jù)流圖中每一個基本加工(即不再進一步被分解的加工)都必須有一個“小說明”小說明中應(yīng)精確描述用戶要求一個加工“做什么” 加工的激發(fā)條件加工邏輯加工優(yōu)先級加工執(zhí)行頻率出錯處理4/15/2023159結(jié)構(gòu)化的語言(page51)構(gòu)成方式語態(tài)詞匯舉例4/15/2023160判定表與判定樹(56)有些問題不易用單純的語言表達判定表組成:條件樁條件條目操作樁操作條目判定樹4/15/2023161§3.7模型的作用在建模過程中了解系統(tǒng)通過抽象降低復(fù)雜性有助于回憶所有的細(xì)節(jié)有助于開發(fā)小組間的交流有助于與用戶的交流為系統(tǒng)的維護提供文檔

4/15/2023162需求分析建模方法分析建模方法結(jié)構(gòu)化分析(傳統(tǒng)建模方法)面向?qū)ο蠓治?/15/2023163模型的作用計算機世界現(xiàn)實世界影射4/15/2023164計算機世界現(xiàn)實世界結(jié)構(gòu)化開發(fā)方法結(jié)構(gòu)化分析結(jié)構(gòu)化設(shè)計結(jié)構(gòu)化編程OOAOODOOP面向?qū)ο箝_發(fā)方法模型的作用4/15/2023165結(jié)構(gòu)化分析模型的組成結(jié)構(gòu)數(shù)據(jù)流圖(DFD)E-R圖狀態(tài)變遷圖(STD圖)加工說明控制說明數(shù)據(jù)對象說明數(shù)據(jù)字典(DD)4/15/2023166面向?qū)ο蠓治瞿P偷慕M成結(jié)構(gòu)對象-關(guān)系模型類/對象模型對象-行為模型使用實例(UseCase)操作、屬性、協(xié)作者4/15/2023167重點小結(jié)4/15/2023168§3.8結(jié)構(gòu)化分析方法(StructuredAnalisys,SA)基于數(shù)據(jù)流技術(shù)的分析方法需求獲取應(yīng)遵循的三條基本原則:分解抽象投影4/15/2023169分析模型的元素數(shù)據(jù)字典(DD):模型核心(中心庫)E-R圖(ERD):數(shù)據(jù)流圖(DFD)指明數(shù)據(jù)在系統(tǒng)中移動時如何被變換;描述對數(shù)據(jù)流進行變換的功能;DFD中每個功能的描述包含在加工規(guī)約(小說明)。狀態(tài)變遷圖(STD)指明作為外部事件的結(jié)果,系統(tǒng)將如何動作。4/15/2023170E-R圖是數(shù)據(jù)建模的基礎(chǔ)客人入住客房狀態(tài)客房服務(wù)服務(wù)類別姓名地址身份證號碼護照號碼電話……客房號床位數(shù)房間類別價格1……住宿編號住宿時間支付方式……日期,客人數(shù)狀態(tài)(已預(yù)定/占用/維修中)……日期,數(shù)量……名稱,價格……4/15/2023171將分析模型轉(zhuǎn)換為軟件設(shè)計數(shù)據(jù)字典數(shù)據(jù)流圖E-R圖狀態(tài)變遷圖加工規(guī)約控制規(guī)約數(shù)據(jù)對描述象數(shù)據(jù)設(shè)計體系結(jié)構(gòu)設(shè)計接口設(shè)計過程設(shè)計分析模型設(shè)計模型4/15/2023172§3.9實例考務(wù)處理系統(tǒng)功能(1)對考生送來的報名單進行檢查;(2)對合格的報名單編好準(zhǔn)考證號后將準(zhǔn)考證送給考生,并將匯總后的考生名單送給閱卷站;(3)對閱卷站送來的成績單進行檢查,并根據(jù)考試中心制定的合格標(biāo)準(zhǔn)審定合格者;(4)制作考生通知單(含成績及合格/不合格標(biāo)志)送給考生;(5)按地區(qū)進行成績分類統(tǒng)計和試題難度分析,產(chǎn)生統(tǒng)計分析表。4/15/2023173實例

考務(wù)處理系統(tǒng)功能考務(wù)處理系統(tǒng)的分層DFD如下:4/15/2023174頂層數(shù)據(jù)流圖考生考務(wù)處理系統(tǒng)考試中心閱卷站不合格報名單報名單準(zhǔn)考證考生通知單成績清單合格標(biāo)準(zhǔn)錯誤成績清單考生名單統(tǒng)計分析表4/15/20231750層數(shù)據(jù)流圖登記報名單報名單準(zhǔn)考證1統(tǒng)計成績2不合格報名單考生通知單成統(tǒng)計分析表考生名冊績清單合格標(biāo)準(zhǔn)考生名單成績清單錯誤4/15/2023176一層數(shù)據(jù)流圖(a)檢查報名單報名單準(zhǔn)考證1.1編準(zhǔn)考證號1.2不合格報名單考生名冊考生名單合格報名單登記考生1.34/15/2023177一層數(shù)據(jù)流圖(b)檢查成績清單2.1審定合格者2.2考生名冊正確成績清單制作通知單2.3分析統(tǒng)計成績2.4分析試題難度2.5試題得分清單考生通知單難度分析表合格標(biāo)準(zhǔn)分類統(tǒng)計表成績清單錯誤成績清單經(jīng)審定的成績清單4/15/2023178S2132.22.12.33.13.2頂層(不編號)0層1層4/15/2023179數(shù)據(jù)字典舉例F1:航班信息文件={航空公司名稱+航班號+起點+終點+日期+起飛時間+降落時間}航空公司名稱=2{字母}4航班號=3{十進制數(shù)字}3字母=“A”…“Z”十進制數(shù)字=“0”…“9”起點=終點=1{漢字}10起飛時間=降落時間=時+分4/15/2023180再來看看——

結(jié)構(gòu)化分析模型的組成結(jié)構(gòu)數(shù)據(jù)流圖(DFD)E-R圖狀態(tài)變遷圖(STD圖)加工說明控制說明數(shù)據(jù)對象說明數(shù)據(jù)字典(DD)4/15/2023181§3.11需求分析的其他工作(page63)確定設(shè)計限制確定驗收標(biāo)準(zhǔn)編寫“初步用戶手冊”復(fù)查需求說明書4/15/2023182補充知識UML語言和圖4/15/2023183UML簡介(NoteL1)UML定義由信息系統(tǒng)三位專家GradyBooch,JamesRumbaugh和IvarJacobonOMG組織采奶作為業(yè)界標(biāo)準(zhǔn)4/15/2023184UML的開發(fā)歷程(NoteL2)Booch’91其它方法OMT-1OOSEBooch’93OMT-2UML0.8UML0.9&0.91UML1.0UML1.1UML同行專家意見OMG認(rèn)證10/9510/96&9/96OMG審核,1/97OMG修正,9/97OMG采用,11/97UML1.34/15/2023185UML架構(gòu)(NoteL3)UML由圖和元模型組成元元模型層元模型層模型層用戶模型層4/15/2023186UML的模型、視圖、圖與

系統(tǒng)架構(gòu)的建模(NoteL4)用例視圖邏輯視圖并發(fā)視圖組件視圖展開視圖4/15/2023187UML與面相對象的軟件分析與設(shè)計(OOA&D)(NoteL5)標(biāo)準(zhǔn)的表示方法與軟件開發(fā)的成功經(jīng)驗集成4/15/2023188UML的應(yīng)用領(lǐng)域(NoteL6)UML被用來為系統(tǒng)建模,它可應(yīng)用的范圍非常廣泛在不同系統(tǒng)中的應(yīng)用信息系統(tǒng)技術(shù)系統(tǒng)嵌入式實時系統(tǒng)分布式系統(tǒng)商業(yè)系統(tǒng)4/15/2023189在軟件開發(fā)不同階段的應(yīng)用(NoteL7)需求分析分析設(shè)計構(gòu)造測試4/15/2023190靜態(tài)建模:用例和用例圖(NoteL8)用例模型的基本組成:用例、角色和系統(tǒng)用例圖:風(fēng)險分析交易估計進行交易進行交易接待員酒店系統(tǒng)財務(wù)系統(tǒng)4/15/2023191發(fā)現(xiàn)角色(NoteL9)通過回答下淚問題,可以幫助建模者發(fā)現(xiàn)角色使用系統(tǒng)主要功能的人是誰?需要借助于系統(tǒng)完成日常工作的人是誰?誰來維護、管理系統(tǒng),保證系統(tǒng)正常工作系統(tǒng)控制的硬件設(shè)備有哪些?系統(tǒng)需要與哪些其它系統(tǒng)交互?對系統(tǒng)產(chǎn)生的結(jié)果感興趣的人或事是哪些?4/15/2023192發(fā)現(xiàn)用例(NoteL10)詢問以下問題角色需要從系統(tǒng)中獲得哪種功能?角色需要做什么?角色需要讀取、產(chǎn)生、刪除、修改或存儲系統(tǒng)中的信息嗎?系統(tǒng)中發(fā)生的事件需要通知角色嗎?如果用系統(tǒng)的新功能處理角色的日常工作是簡化了還是提高了工作效率?4/15/2023193UML中的用例(NoteL11)4/15/2023194用例之間的關(guān)系(NoteL12)4/15/2023195描述用例

(NoteL13)4/15/2023196測試用例(NoteL14)用例可用于測試系統(tǒng)的正確性和有效性。正確性表明系統(tǒng)的實現(xiàn)符合規(guī)格說明。有效性保證開發(fā)的系統(tǒng)是用戶真正需要的系統(tǒng)4/15/2023197實現(xiàn)用例

(NoteL15)UML中實現(xiàn)用例的基本思想是用協(xié)作表示用例,而協(xié)作又被細(xì)化為用若干個圖。協(xié)作的實現(xiàn)用腳本描述。4/15/2023198第四章設(shè)計方法4/15/2023199主要內(nèi)容(Note46)▲什么是結(jié)構(gòu)化設(shè)計▲結(jié)構(gòu)化設(shè)計方法的主要思想▲結(jié)構(gòu)化設(shè)計的重要組成部分▲結(jié)構(gòu)化設(shè)計的方法4/15/2023200結(jié)構(gòu)化設(shè)計的工作原理(Note47)結(jié)構(gòu)化設(shè)計目標(biāo)結(jié)構(gòu)化設(shè)計的優(yōu)點利用模塊結(jié)構(gòu)減少開發(fā)和維護軟件的費用4/15/2023201軟件設(shè)計分為兩個階段:(1)概要設(shè)計(總體設(shè)計)(Page66)確定軟件的結(jié)構(gòu)以及各組成成分(子系統(tǒng)或模塊)之間的相互關(guān)系。(2)詳細(xì)設(shè)計確定模塊內(nèi)部的算法和數(shù)據(jù)結(jié)構(gòu),產(chǎn)生描述各模塊程序過程的詳細(xì)文檔。4/15/2023202模塊模塊是魚油一定功能的可以用名詞調(diào)用的程序語句集合,如:獨立的匯編程序COBOL的段和節(jié)Pascal過程FORTRAN的子程序匯編的宏4/15/2023203控制結(jié)構(gòu)(程序結(jié)構(gòu))控制結(jié)構(gòu)是軟件模塊間關(guān)系的表示4/15/2023204控制結(jié)構(gòu)圖示:4/15/2023205控制結(jié)構(gòu)的層次規(guī)則只有一個頂層(0層)模塊0層外任一模塊都會在它的鄰層存在一模塊與它有關(guān)同層模塊間不發(fā)生聯(lián)系4/15/2023206軟件結(jié)構(gòu)度量術(shù)語深度寬度扇出扇入(模塊的層數(shù))(同一層最大模塊數(shù))(一個模塊直接調(diào)用的模塊數(shù))(調(diào)用一個給定模塊的模塊個數(shù))4/15/2023207模塊化(Modularity)模塊化是好的軟件設(shè)計的一個基本準(zhǔn)則高層模塊從整體上把握問題,隱蔽細(xì)節(jié)復(fù)雜問題較小問題分解可減小解題所需的總的工作分解4/15/2023208抽象(Abstraction)抽象原則應(yīng)用舉例WindowsNT一體化的I/O系統(tǒng)設(shè)計文件管理網(wǎng)絡(luò)管理設(shè)備管理高速緩沖存儲器OS對虛擬文件的字節(jié)流,虛擬文件可為任何設(shè)備和實體抽象4/15/2023209例:將問題(P1+P2)分解為P1,P2設(shè)函數(shù)C(x)定義問題

x

的復(fù)雜程度函數(shù)E(x)確定解決問題

x

需要的工作量對問題P1和P2,如:

C(P1)>C(P2)顯然:E(P1)>E(P2)有規(guī)律:C(P1+P2)>C(P1)+C(P2)

E(P1+P2)>E(P1)+E(P2)

"各個擊破"理論4/15/2023210模塊度(Note48)成本或工作量模塊數(shù)量軟件總成本集成成本成本/模塊M最小成本區(qū)域4/15/2023211結(jié)構(gòu)化設(shè)計的適用范圍(Note49)尤其適用于采用結(jié)構(gòu)化程序設(shè)計實現(xiàn)的系統(tǒng)結(jié)構(gòu)化設(shè)計并不是一種廣泛適用的系統(tǒng)設(shè)計技術(shù)什么人來完成設(shè)計呢?結(jié)構(gòu)化設(shè)計的結(jié)果4/15/2023212SA與SD的關(guān)系(Note50)結(jié)構(gòu)化分析的結(jié)果結(jié)構(gòu)化設(shè)計的工具數(shù)據(jù)流圖初始結(jié)構(gòu)圖生存周期字典的數(shù)據(jù)部分設(shè)計數(shù)據(jù)字典偽碼實現(xiàn)方面?zhèn)未a實體關(guān)系圖數(shù)據(jù)庫設(shè)計事務(wù)框圖分層、細(xì)化事務(wù)模型4/15/2023213SD來源于SA來源:結(jié)構(gòu)化分析來源:結(jié)構(gòu)化分析來源:結(jié)構(gòu)化分析數(shù)據(jù)流圖字典項偽碼實體關(guān)系圖事務(wù)框圖環(huán)境的限制質(zhì)量的標(biāo)準(zhǔn)轉(zhuǎn)化分析細(xì)化設(shè)計進入實現(xiàn)階段初始結(jié)構(gòu)框圖4/15/2023214概要設(shè)計的基本概念將系統(tǒng)劃分成模塊(Page66)決定每個模塊的功能(Page66)決定模塊的調(diào)用關(guān)系(Page66)決定模塊的界面,即模塊間傳遞的數(shù)據(jù)(Page66)4/15/2023215結(jié)構(gòu)化設(shè)計(SD方法)概要相對獨立、單一功能的模塊(page67)塊間聯(lián)系和塊內(nèi)聯(lián)系(page67)描述方法(page68)步驟(page69)4/15/2023216結(jié)構(gòu)圖(SCStructureChart)結(jié)構(gòu)圖主要成分(page68)模塊——用方框表示,方框中寫有模塊的名字,一個模塊的名字應(yīng)適當(dāng)?shù)胤从尺@個模塊的功能,這就在某種程度上反映了塊內(nèi)聯(lián)系;調(diào)用——從一個模塊指向另一個模塊的箭頭表示前一模塊中含有對后一模塊的調(diào)用;數(shù)據(jù)——調(diào)用箭頭邊上的小箭頭表示調(diào)用時從一個模塊傳入送給另一個模塊的數(shù)據(jù),小箭頭也指出了傳送的方向。4/15/2023217結(jié)構(gòu)圖(SCStructureChart)SD方法在概要設(shè)計中的主要表達工具約定:編輯學(xué)生記錄讀學(xué)生記錄學(xué)生數(shù)據(jù)無此學(xué)生學(xué)號不加區(qū)分的數(shù)據(jù)數(shù)據(jù)信息控制信息4/15/2023218SC中的四種模塊傳入模塊(a)(b)AA傳出模塊BB變換模塊(c)CD協(xié)調(diào)模塊E(d)EFF4/15/2023219SC中的選擇調(diào)用ACBDA根據(jù)內(nèi)部判斷決定是否調(diào)用BA按另一判定結(jié)果選擇調(diào)用C或D4/15/2023220SC中的循環(huán)調(diào)用ABCA根據(jù)內(nèi)在的循環(huán)重復(fù)調(diào)用B、C等模塊4/15/2023221結(jié)構(gòu)圖(SC)舉例醫(yī)院管理系統(tǒng)門診管理藥房管理藥庫管理病房管理財務(wù)管理處方掛號處理掛號費總計掛號單掛號費總計出庫處理進藥管理病歷管理處方管理常規(guī)處理4/15/2023222酒店管理信息系統(tǒng)功能結(jié)構(gòu)圖HMIS收銀管理子系統(tǒng)收銀管理子系統(tǒng)收銀管理子系統(tǒng)客人登記預(yù)定登記客房處理歷史記錄客房查詢預(yù)定查詢餐桌安排菜單作業(yè)營業(yè)結(jié)帳匯總打印各類查詢初始設(shè)置客帳處理退房處理夜審處理客帳查詢報表打印4/15/2023223大型零售商場管理信息系統(tǒng)功能結(jié)構(gòu)圖TMMIS系統(tǒng)維護POS系統(tǒng)零售實時系統(tǒng)商品進貨管理商品批發(fā)管理商品庫存管理商品及商品帳管理顧客管理連鎖店管理財務(wù)管理人事工資管理計劃統(tǒng)計管理經(jīng)理查詢4/15/2023224信息隱蔽(InformationHiding)模塊所包含的信息,不允許其它不需要這些信息的模塊訪問,獨立的模塊間僅僅交換為完成系統(tǒng)功能而必須交換的信息。4/15/2023225塊間聯(lián)系塊間聯(lián)系大?。悍绞?、作用、數(shù)量聯(lián)系方式(Page71)用過程語句調(diào)用、直接引用共用信息的作用(Page73)公用信息的數(shù)量(Page74)表格4.1(page75)4/15/2023226塊內(nèi)聯(lián)系偶然型(Page76)邏輯型(Page76)瞬時型(Page77)通訊型(Page77)順序型(Page78)功能型(Page78)4/15/2023227偶然內(nèi)聚(巧合內(nèi)聚)ABCMMOVEOTORREADFILEFMOVESTOT模塊M中的三個語句沒有任何聯(lián)系缺點:可理解性差,可修改性差例:4/15/2023228邏輯內(nèi)聚把幾種相關(guān)功能(邏輯上相似的功能)組合在一模塊內(nèi),每次調(diào)用由傳給模塊的參數(shù)確定執(zhí)行哪種功能。4/15/2023229邏輯內(nèi)聚模塊ABCEFGABCEFGA1B1C1EFG模塊內(nèi)部邏輯E、F、G邏輯功能相似,組成新模塊EFG缺點:增強了耦合程度(控制耦合)不易修改,效率低公用代碼段公用代碼段4/15/2023230時間內(nèi)聚(經(jīng)典內(nèi)聚)模塊完成的功能必須在同一時間內(nèi)執(zhí)行,這些功能只因時間因素關(guān)聯(lián)在一起。例如:初始化系統(tǒng)模塊、系統(tǒng)結(jié)束模塊、緊急故障處理模塊等均是時間性聚合模塊.4/15/2023231過程內(nèi)聚(順序性組合)模塊內(nèi)各處理成分相關(guān),且必須以特定次序執(zhí)行4/15/2023232過程內(nèi)聚模塊讀入成績單審查成績單統(tǒng)計成績打印成績讀入并審查成績單統(tǒng)計并打印成績單4/15/2023233通信內(nèi)聚模塊內(nèi)各部分使用相同的輸入數(shù)據(jù),或產(chǎn)生相同的輸出結(jié)果4/15/2023234通信內(nèi)聚模塊例產(chǎn)生工資報表計算平均工資職工工資記錄職工工資報表平均工資產(chǎn)生職工工資報表并計算平均工資模塊4/15/2023235信息內(nèi)聚模塊完成多個功能,各功能都在同一數(shù)據(jù)結(jié)構(gòu)上操作,每一功能有唯一入口。4/15/2023236信息內(nèi)聚模塊符號

表查找登錄刪除修改幾個加工同時引用一個共同的數(shù)據(jù)4/15/2023237功能內(nèi)聚模塊僅包括為完成某個功能所必須的所有成分。模塊所有成分共同完成一個功能,缺一不可內(nèi)聚性最強4/15/2023238塊間聯(lián)系無直接關(guān)系型數(shù)據(jù)耦合標(biāo)記耦合控制耦合外部耦合公共耦合內(nèi)容耦合4/15/2023239(1)無直接耦合兩個模塊沒有直接關(guān)系(模塊1和模塊2),模塊獨立性最強。模塊1模塊2模塊3模塊44/15/2023240(2)數(shù)據(jù)耦合

一模塊調(diào)用另一模塊時,被調(diào)用模塊的輸入、輸出都是簡單的數(shù)據(jù)(若干參數(shù))。屬松散耦合。241數(shù)據(jù)耦合舉例開發(fā)票計算水費單價數(shù)量金額242(3)標(biāo)記耦合(復(fù)合型耦合) 如兩個模塊通過傳遞數(shù)據(jù)結(jié)構(gòu)(不是簡單數(shù)據(jù),而是記錄、數(shù)組等)加以聯(lián)系,或都與一個數(shù)據(jù)結(jié)構(gòu)有關(guān)系,則稱這兩個模塊間存在標(biāo)記偶合。243標(biāo)記耦合舉例計算水電費計算水費計算電費住戶情況水費電費住戶情況“住戶情況”是一個數(shù)據(jù)結(jié)構(gòu),圖中模塊都與此數(shù)據(jù)結(jié)構(gòu)有關(guān).“計算水費”和“計算電費”本無關(guān),由于引用了此數(shù)據(jù)結(jié)構(gòu)產(chǎn)生依賴關(guān)系,它們之間也是標(biāo)記偶合.244將標(biāo)記耦合修改為數(shù)據(jù)耦合舉例計算水電費計算水費計算電費本月用水量本月用電量水費電費245(4)控制耦合

一模塊向下屬模塊傳遞的信息(開關(guān)量、標(biāo)志等控制被調(diào)用模塊決策的變量)控制了被調(diào)用模塊的內(nèi)部邏輯。246控制耦合舉例A計算平均分或最高分B平均/最高(控制信號)成績讀入分?jǐn)?shù)輸出結(jié)果計算平均分計算最高分平均/最高?B247 控制耦合增加了理解和編程的復(fù)雜性,調(diào)用模塊必須知道被調(diào)模塊的內(nèi)部邏輯,增加了相互依賴(1)將被調(diào)用模塊內(nèi)的判定上移到調(diào)用模塊中進行(2)被調(diào)用模塊分解成若干單一功能模塊去除模塊間控制耦合的方法248改控制耦合為數(shù)據(jù)耦合舉例A計算平均分B1平均成績最高成績計算最高分B2249(5)外部耦合一組模塊均與同一外部環(huán)境關(guān)聯(lián)(例如,I/O模塊與特定的設(shè)備、格式和通信協(xié)議相關(guān)聯(lián)),它們之間便存在外部耦合。外部偶合必不可少,但這種模塊數(shù)目應(yīng)盡量少。250(6)公共耦合(公共數(shù)據(jù)區(qū)耦合) 一組模塊引用同一個公用數(shù)據(jù)區(qū)(也稱全局?jǐn)?shù)據(jù)區(qū)、公共數(shù)據(jù)環(huán)境)。公共數(shù)據(jù)區(qū)指:

全局?jǐn)?shù)據(jù)結(jié)構(gòu)共享通訊區(qū)內(nèi)存公共覆蓋區(qū)等251公共耦合舉例A公共數(shù)據(jù)區(qū)CB模塊A、B、C間存在錯綜復(fù)雜的聯(lián)系252(1)軟件可理解性降低(2)診斷錯誤困難(3)軟件可維護性差,(4)軟件可靠性差(公共數(shù)據(jù)區(qū)及全程變量無保護措施)慎用公共數(shù)據(jù)區(qū)和全程變量!!!公共耦合存在的問題253(7)內(nèi)容耦合一模塊直接訪問另一模塊的內(nèi)部信息(程序代碼或數(shù)據(jù))最不好的耦合形式!!!ABAB模塊代碼重疊Entry1……Entry1……多入口模塊254系統(tǒng)結(jié)構(gòu)的形態(tài)(Note52)形態(tài)(morphology)所指的是系統(tǒng)結(jié)構(gòu)所表現(xiàn)出來的形狀。深度、寬度、扇出和扇入Page68”描述方式”模塊、調(diào)用、數(shù)據(jù)一個模塊在結(jié)構(gòu)圖中只能出現(xiàn)一次輸入模塊在作,輸出模塊在右,計算模塊居中4/15/2023255系統(tǒng)結(jié)構(gòu)的影響范圍和控制范圍系統(tǒng)中某一層上模塊中的判定或者條件語句(例如If語句)在系統(tǒng)

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論