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

下載本文檔

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

文檔簡介

1、Welcome to the World of Software Engineering!Software EngineeringInstructor(Course): Jian Shu School of Software Phone: Office hour: Mon. 7:00pm9:00pm E-mail: Instructors(Lab): -Jian Shu, Binquan Chen, Fengyu YangTeaching Assistants: -Course StaffLab ScheduleClassWeek 9Wen. 7,8Week 11Wen. 7,8Week 13

2、Wen. 7,8Week 14Wen. 7,8162011D304 舒 堅D304 舒 堅D304 舒 堅D304 舒 堅162012D306 陳斌全D306 陳斌全D306 陳斌全D306 陳斌全162013D308 楊豐玉D308 楊豐玉D308 楊豐玉D308 楊豐玉Final examFinal grade: Assignment+Lab.+Project 40% exam 60% Assignment & Lab. dont wait for the last minutes.Course Grading第一章軟件工程概論第二章軟件工程過程模型第三章傳統(tǒng)軟件工程第四章面向?qū)ο蠡A(chǔ)第五

3、章 可行性分析及項目計劃制定第六章面向?qū)ο蠓治龅谄哒旅嫦驅(qū)ο笤O(shè)計第八章 軟件編碼與測試第九章 軟件維護課程章節(jié)1 (美)Frederick P. Brooks, Jr. 李琦注. 人月神話M,北京:人民郵電出版社,2007.102 (美)Frederick P. Brooks, Jr. 王海鵬,高博 譯. 設(shè)計原本:計算機科學(xué)巨匠Frederick P. Brooks的思考M,北京:機械工業(yè)出版社,2011.013 孫家廣,劉強. 軟件工程-理論、方法與實踐M. 北京:高等教育出版社,2010.114 齊治昌,譚慶平,寧洪.軟件工程(第3版) M,北京:高等教育出版社,2012.05參考書目5

4、 許家珆. 軟件工程:方法與實踐(第2版)M,北京:機械工業(yè)出版社,2011.126 劉偉. 設(shè)計模式M,北京:清華大學(xué)出版社,2011.107 張海藩. 軟件工程導(dǎo)論(第5版)M. 北京:清華大學(xué)出版社,2012.058 (美)Stephen R.Schach. 鄧迎春,韓松 譯. 軟件工程:面向?qū)ο蠛蛡鹘y(tǒng)的方法M. 北京:機械工業(yè)出版社,2012.01參考書目9 殷人昆,鄭人杰等. 實用軟件工程(第3版) M,北京:清華大學(xué)出版社,2010.1110 劉超,張莉. 可視化面向?qū)ο蠼<夹g(shù)-標(biāo)準(zhǔn)建模語言UMLM,北京:北京航空航天大學(xué)出版社,2001.0311 (美)Roger S. Pre

5、ssman. 鄭人杰,馬素霞,白曉穎 譯. 軟件工程:實踐者的研究方法(第6版)M. 北京:機械工業(yè)出版社,2007.0112 Jason Baragry. Understanding Software Engineering: From Analogies with other Disciplines to Philosophical Foundations PhD thesis. Victoria: La Trobe University, 2000.13 計算機軟件工程規(guī)范國家標(biāo)準(zhǔn)匯編(第二版)M. 中國標(biāo)準(zhǔn)出版社,2011.08 參考書目14 (美)Robert C.Martin. 敏

6、捷軟件開發(fā)-原則、模式與實踐 M,北京:清華大學(xué)出版社,2011.0615 (美)Alan Shallowaay,James R.Trott. 設(shè)計模式解析 (第2版)M,北京:人民郵電出版社,2010.12參考書目每人必須做筆記實驗必須預(yù)習(xí)大作業(yè)每人的職責(zé)必須明確教材為主要的參考書缺課、缺實驗按“學(xué)生守則”辦理手機打到震動或關(guān)機課程要求第一章 概論Software Engineering 軟件 軟件工程 軟件工程發(fā)展歷程 軟件工程基本原理 軟件工程知識體系主要內(nèi)容1.1 軟件開發(fā)軟件就是編寫程序? 軟件 = 程序+數(shù)據(jù)+文檔+知識 程序是計算任務(wù)的處理對象和處理規(guī)則的描述數(shù)據(jù)指的是程序能夠適

7、當(dāng)?shù)夭僮鞯男畔?文檔是為了便于了解程序所需的闡明性資料 軟件蘊含著“完成特定功能和性能”的知識和經(jīng)驗 軟件的特征軟件是計算機系統(tǒng)中的邏輯成分,相對于硬件的有形的物理特性,軟件則是抽象的,具有無形性 (人腦與智慧)軟件是硬件的靈魂,硬件是軟件的基礎(chǔ) 軟件是智慧和知識的結(jié)晶 軟件不會“磨損”,而是逐步完善 軟件分類按軟件功能劃分 系統(tǒng)軟件 支撐軟件 應(yīng)用軟件 軟件工作方式劃分實時處理軟件 分時處理軟件 交互式軟件 批處理軟件 軟件分類(續(xù))按軟件規(guī)模劃分微型軟件 小型軟件 中型軟件 大型軟件 按軟件服務(wù)對象劃分 通用軟件 定制軟件 軟件的發(fā)展歷程程序設(shè)計時代(匯編語言)程序系統(tǒng)時代(高級語言) 軟

8、件工程時代60年代末-70年代中期:結(jié)構(gòu)化程序設(shè)計技術(shù)70年代中期-80年代 :計算機輔助軟件工程 80年代中期-90年代 :面向?qū)ο笳Z言和方法 90年代以來:統(tǒng)一建模語言 軟件從簡單到復(fù)雜,軟件開發(fā)從個人行為到大型團隊分工合作開發(fā),軟件開發(fā)工具和開發(fā)模式從粗糙到完善的發(fā)展歷程 1.2 軟件危機1991年海灣戰(zhàn)爭中,一枚飛毛腿導(dǎo)彈穿過了愛國者反導(dǎo)彈的防御,擊中了沙特阿拉伯的Dhahran附近的一個兵營,造成28名美國人死亡,98人受傷。這個錯誤是由累積的定時錯誤引起的,愛國者導(dǎo)彈每次只能工作幾小時,超過這個時間后,系統(tǒng)時鐘就會復(fù)位??杀氖切碌能浖诙觳胚\到。 美國國內(nèi)稅收處20世紀(jì)90年代

9、讓Sperry公司建立一套聯(lián)邦稅收表格自動處理系統(tǒng),該系統(tǒng)被證明不適合當(dāng)前的工作量,花費幾乎是預(yù)算的2倍。到1996年,共花費了40億美元,但情況并沒改善,原因是“沒有充分計劃就錯誤行事”。 軟件危機的表現(xiàn)超出預(yù)算時間和成本 客戶對生產(chǎn)出的軟件不滿意 軟件有殘存的錯誤 軟件產(chǎn)品不可維護 文檔資料不完整 軟件生產(chǎn)率的提高跟不上硬件的發(fā)展速度 軟件成本比例不斷提高軟件危機產(chǎn)生原因軟件開發(fā)無計劃性 軟件開發(fā)進度落后了應(yīng)該增加人手么?軟件需求不充分 滿足的是客戶的需要,而不是展示個人的技巧 軟件開發(fā)過程無規(guī)范 沒有統(tǒng)一的方法和規(guī)范,也不重視文檔 軟件產(chǎn)品無評測手段 提交產(chǎn)品測試;接口測試,整體測試,壓

10、力及性能測試 1.3 解決之道:軟件工程工程的含義工程是將理論和所學(xué)的知識應(yīng)用于實踐的科學(xué),以便經(jīng)濟有效地解決實際問題工程的含義(續(xù))規(guī)模上的差異 花園小道vs. 汽車高速公路 樹上小屋vs. 摩天大樓 加法程序vs. 醫(yī)院檔案系統(tǒng)手工(Craft): 小規(guī)模的設(shè)計與建造 簡單問題與單一目標(biāo) 個人控制與個人技能工程(Engineering): 大規(guī)模的設(shè)計與建造 復(fù)雜問題與目標(biāo)分解 多人參與,需要考慮運營、管理、成本、質(zhì)量控制、安全等工程的特征平衡與決策 需要進行一系列決策和認真評價,并在每一個決策點做出適當(dāng)選擇,適當(dāng)與否可以通過平衡成本和利益的分析來判斷。度量與驗證 應(yīng)該度量事物,在適當(dāng)?shù)臅r

11、候定量工作;需要校正并驗證度量,并在經(jīng)驗和實驗數(shù)據(jù)的基礎(chǔ)上進行近似。運用工具 工程師需要將工具系統(tǒng)地應(yīng)用在過程中,因此選用適當(dāng)?shù)墓ぞ呤枪こ痰年P(guān)鍵軟件工程定義(續(xù))Boehm運用現(xiàn)代科學(xué)技術(shù)知識來設(shè)計并構(gòu)造計算機程序及為開發(fā)、運行和維護這些程序所必需的相關(guān)文件資料。IEEE軟件工程是開發(fā)、運行、維護和修復(fù)軟件的系統(tǒng)方法。Fritz Bauer建立并使用完善的工程化原則,以較經(jīng)濟的手段獲得能在實際機器上有效運行的可靠軟件的一系列方法。軟件工程定義軟件工程是研究和應(yīng)用如何以系統(tǒng)性的、規(guī)范化的、可定量的過程化方法去開發(fā)和維護軟件,以及如何把經(jīng)過時間考驗而證明正確的管理技術(shù)和當(dāng)前能夠得到的最好的技術(shù)方法

12、結(jié)合起來 軟件工程基本原理B.W.Boehm提出的七條原理,最小集合,彼此不能互相替代用分階段的生命周期計劃嚴格管理件開發(fā)與維護的漫長的生命周期中,需要完成許多性質(zhì)各異的工作,應(yīng)該把軟件生命周期劃分成若干個階段,并相應(yīng)地制定出切實可行的計劃,然后嚴格按照計劃對軟件的開發(fā)與維護工作進行管理 軟件工程基本原理(續(xù))堅持進行階段評審 統(tǒng)計資料表明:大部分錯誤是在編碼之前造成的,例如,根據(jù)Boehm等人的統(tǒng)計,設(shè)計錯誤占軟件錯誤的63%,編碼僅占37%;錯誤發(fā)現(xiàn)與改正得越晚,所需付出的代價也越高。 軟件工程基本原理(續(xù))實行嚴格的產(chǎn)品控制不能硬性禁止客戶提出改變需求的要求,而只能依靠科學(xué)的產(chǎn)品控制技術(shù)

13、來順應(yīng)這種要求 采用現(xiàn)代程序設(shè)計技術(shù) 結(jié)構(gòu)化分析設(shè)計技術(shù),面向?qū)ο蠓治鲈O(shè)計技術(shù)結(jié)果應(yīng)能清楚地審查每個階段的成果如果表現(xiàn)?軟件工程基本原理(續(xù))開發(fā)小組的人員應(yīng)該少而精 軟件工程基本原理(續(xù))承認不斷改進軟件工程實踐的必要性 軟件工程知識體SWEBOK 軟件工程知識體SWEBOK(續(xù))軟件工程知識體SWEBOK(續(xù))軟件工程基礎(chǔ)知識域SWEBOK V3(2014)的主要內(nèi)容變化 SWEBOK V3由15個知識域組成,其中包括11個軟件工程實踐知識域,分別是軟件需求、軟件設(shè)計、軟件構(gòu)造、軟件測試、軟件維護、軟件配置管理、軟件工程管理、軟件工程過程、軟件工程模型和方法、軟件質(zhì)量、軟件工程職業(yè)實踐;以

14、及4個軟件工程教育基礎(chǔ)知識域軟件工程經(jīng)濟學(xué)、計算基礎(chǔ)、數(shù)學(xué)基礎(chǔ)和工程基礎(chǔ)。與SWEBOK V2相比,SWEBOK V3的主要內(nèi)容變化有以下幾個方面: SWEBOK V3(2014)的主要內(nèi)容變化 更新了所有知識域的內(nèi)容,以反映軟件工程近10年的新成果,并和CSDA、CSDP、軟件工程本科課程大綱SE2004、軟件工程碩士課程大綱GSwE2009和軟件工程術(shù)語SEVOCAB等標(biāo)準(zhǔn)進行了知識體系的統(tǒng)一新增了四個基礎(chǔ)知識域(軟件工程經(jīng)濟學(xué)、計算基礎(chǔ)、數(shù)學(xué)基礎(chǔ)和工程基礎(chǔ))和一個軟件工程職業(yè)實踐知識域 SWEBOK V3(2014)的主要內(nèi)容變化 在軟件設(shè)計和軟件測試中新增了人機界面的內(nèi)容;把軟件工具的

15、內(nèi)容從原先的“軟件工程工具和方法”中移到其他各知識域中,并對該知識域重命名為“軟件工程模型和方法”,使其更關(guān)注方法 更突出了架構(gòu)設(shè)計和詳細設(shè)計的不同,同時在軟件設(shè)計中增加了硬件問題的新主題,以及面向方面(aspect-oriented )設(shè)計的討論 SWEBOK V3(2014)的主要內(nèi)容變化 新增了軟件重構(gòu)、遷移和退役的新主題,更多地討論了建模和敏捷方法 在多個知識域中都增加了保密安全性(security)的考慮 合并了多個標(biāo)準(zhǔn)中的參考文獻,并進行更新和遴選,減少了文獻數(shù)量 軟件工程及其相關(guān)學(xué)科軟件工程是應(yīng)用計算機科學(xué)、數(shù)學(xué)與管理科學(xué)等基本原理,開發(fā)軟件的工程。它借鑒傳統(tǒng)工程的原則和方法,以

16、提高質(zhì)量,降低成本為目的。計算機科學(xué)和數(shù)學(xué)用于構(gòu)造軟件的模型與算法;工程科學(xué)用于制定規(guī)范、設(shè)計范型、評估成本及確定權(quán)衡;管理科學(xué)用于計劃、資源、質(zhì)量、成本等管理。軟件工程與計算機科學(xué)軟件工程與計算機科學(xué)的區(qū)別計算機科學(xué)研究構(gòu)成計算機和軟件系統(tǒng)基礎(chǔ)的有關(guān)理論和方法舉例:數(shù)據(jù)結(jié)構(gòu)、離散數(shù)學(xué)、算法分析等軟件工程研究開發(fā)和發(fā)布軟件的實際問題舉例:飛行控制軟件軟件工程的研究與實踐包括兩個方面,一是根植于計算機科學(xué),二是表現(xiàn)為一種工程學(xué)科。軟件工程職業(yè)道德規(guī)范軟件工程不僅是技術(shù)的應(yīng)用,還包括許多責(zé)任。軟件工程人員應(yīng)當(dāng)遵循本行業(yè)的職業(yè)道德規(guī)范,否則無法在這個行業(yè)中長久立足。分析下面的一些行為:將公司的軟件代

17、碼隨意復(fù)制給其他人為了個人的利益作出不切實際的承諾使用盜版軟件迫于時間壓力交付缺乏嚴格測試的代碼未經(jīng)允許就在別人的機器上玩游戲和上網(wǎng)IEEEACM 職業(yè)道德準(zhǔn)則1.公眾軟件工程人員應(yīng)始終與公眾利益保持一致。2.客戶和雇主在與公眾利益保持一致的原則下,軟件工程人員應(yīng)滿足客戶和雇主的最大利益。3.產(chǎn)品軟件工程人員應(yīng)當(dāng)確保他們的產(chǎn)品及其改進符合盡可能高的專業(yè)標(biāo)準(zhǔn)。4.判斷軟件工程人員應(yīng)當(dāng)具備公正和獨立的職業(yè)判斷力。IEEEACM 職業(yè)道德準(zhǔn)則5.管理軟件工程管理者和領(lǐng)導(dǎo)者應(yīng)擁護和倡導(dǎo)合乎道德的有關(guān)軟件開發(fā)和維護的管理方法。6.職業(yè)在與公眾利益保持一致的原則下,軟件工程人員應(yīng)滿足客戶和雇主的最大利益。

18、7.同行軟件工程人員對其同行應(yīng)持平等和支持的態(tài)度。8.自我軟件工程人員應(yīng)當(dāng)終身學(xué)習(xí)專業(yè)知識,促進合乎道德的職業(yè)實踐方法。道德的判斷有影響的軟件工程期刊Transactions on Software Engineering(IEEE)Software(IEEE)Software Engineering Notes(ACM Special Interest Group)Transactions on Software Engineering and Methodology(ACM)The Journal of Systems and Software(Elsevier)Proceedings o

19、f the International Conference on Software Engineering(ACMIEEE)Proceedings of the International Conference on Software Maintenance(IEEE)Software Maintenance: Research and Practice(Wiley)參考文獻1.F.P. Brooks Jr., “No silver bullet: essence and accidents of software engineering”, IEEE Computer, vol. 20,

20、No. 4, pp10-19, 1987.2.Brooks, F., The Mythical Man-Month, Addison-Wesley, 19753.Bourque, Pierre, et al., “The Guide to the Software Engineering Body of Knowledge”, IEEE Software, Nov./Dec., pp 35-44, 19994.Abran, A. and J. Moore, SWEBOK: Guide to the Software Engineering Body of Knowledge, IEEE Com

21、puter Society Press, 2002, can be download at /5.IEEE Computer Society/ACM Joint Task Force on Software Engin-eeringEthics and Professional Practices. Software engineering code of ethics and professional practice, available at /tab/seprof/code.htm常見觀點辨析軟件開發(fā)就是編程?開發(fā)進度落后,增加人手就可以了?用戶什么都不懂,問他們還不如我自己看書想怎么

22、開發(fā)?不要跟我講什么規(guī)范,把程序?qū)懲昃涂梢粤??能完成開發(fā)任務(wù)就可以了,不要管我怎么完成的?常見觀點辨析(續(xù))我就是喜歡一邊想一邊寫,這樣開發(fā)速度快有一種新的開發(fā)工具,據(jù)說可以提高10%的開發(fā)速度,我們應(yīng)該馬上采用編程高手可以搞定所有的事情第二章 軟件工程過程模型Software Engineering軟件生命周期瀑布模型快速原型增量模型極限編程螺旋模型RUP主要內(nèi)容2.1軟件生命周期計算機軟件開發(fā)規(guī)范(GB85668),軟件生命周期包含:軟件定義、軟件開發(fā)、軟件運行維護三個時期,并可以細分為可行性研究、項目計劃、需求分析、概要設(shè)計、詳細設(shè)計、編碼實現(xiàn)與單元測試、系統(tǒng)集成測試、系統(tǒng)確認驗證、系統(tǒng)

23、運行與維護等幾個階段。 軟件定義期要開發(fā)什么樣的軟件?軟件任務(wù)立項(項目立項報告)項目可行性分析 (可行性分析報告)制定項目計劃 (軟件項目開發(fā)計劃)軟件需求分析(軟件需求規(guī)格說明書) 以用戶需求為基本依據(jù),從功能、性能、數(shù)據(jù)、操作等多個方面,對軟件系統(tǒng)給出完整、準(zhǔn)確、具體的描述,用于確定軟件規(guī)格 軟件開發(fā)期軟件概要設(shè)計 (概要設(shè)計說明書)軟件系統(tǒng)的結(jié)構(gòu)設(shè)計,用于從總體上對軟件的構(gòu)造、接口、全局數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)環(huán)境等給出設(shè)計說明模塊是概要設(shè)計時構(gòu)造軟件的基本元素,概要設(shè)計中軟件也就主要體現(xiàn)在模塊的構(gòu)成與模塊接口這兩個方面,主要以模塊的內(nèi)聚、耦合性兩個指標(biāo)來進行評價 軟件開發(fā)期(續(xù))詳細設(shè)計(詳細

24、設(shè)計說明書 )概要設(shè)計為依據(jù),用于確定軟件結(jié)構(gòu)中每個模塊的內(nèi)部細節(jié)(程序算法和模塊內(nèi)部的局部數(shù)據(jù)) 編碼和單元測試(帶注釋的源代碼) 編碼必須按照“詳細設(shè)計說明書”的要求逐個模塊地實現(xiàn)基本模塊的單元測試也往往和編碼結(jié)合在一起進行 軟件開發(fā)期(續(xù))軟件系統(tǒng)集成測試(測試報告)軟件系統(tǒng)組過程中,需要對整個軟件系統(tǒng)進行集成測試,以確保軟件系統(tǒng)在技術(shù)上符合設(shè)計要求,在應(yīng)用上滿足需求規(guī)格要求 軟件系統(tǒng)確認驗證(項目開發(fā)總結(jié))以用戶為主體,以需求規(guī)格說明書中對軟件的定義為依據(jù),由此對軟件的各項規(guī)格進行逐項地確認 軟件運行與維護期 軟件不斷進化升級的過程,以使軟件系統(tǒng)更加持久地滿足用戶的需要改正性維護適應(yīng)性

25、維護完善性維護 2.2建造修補模型 “邊做邊改”模型 建造修補模型(續(xù))優(yōu)點可以用于探索某個函數(shù)或類的用法缺點:不能用于實際的軟件開發(fā)對沒有規(guī)格說明和設(shè)計文檔的產(chǎn)品進行維護相當(dāng)困難,而且發(fā)生回歸錯誤的可能性也相當(dāng)大 從整個軟件過程來說,特別是考慮到維護階段的情況,實際上建造修補模型的花費遠遠大于有正規(guī)的規(guī)格說明、經(jīng)過詳細設(shè)計的產(chǎn)品所需要的花費 2.3瀑布模型 是其它開發(fā)模型的源頭瀑布模型將軟件生命周期劃分為需求分析、規(guī)格說明、軟件設(shè)計、程序?qū)崿F(xiàn)、軟件集成和運行維護等六個基本活動,并且規(guī)定了它們自上而下、相互銜接的固定次序,如同瀑布流水,逐級下落 瀑布模型(續(xù))第一個投入實際開發(fā)的有效模型,瀑布

26、模型的成功主要得益于強制性原則:階段產(chǎn)品與文檔確認之前不進入下一個階段,每個階段必須經(jīng)過軟件質(zhì)量保證(Software Quality Assurance,SQA)小組的評審文檔驅(qū)動原則:瀑布模型強調(diào)文檔必須與產(chǎn)品同步,開發(fā)過程中和每個階段的結(jié)束都要求有規(guī)范的文檔 瀑布模型(續(xù))缺點:由于文檔驅(qū)動原則,客戶只能在整個產(chǎn)品完成編程之后才首次能夠看到工作的產(chǎn)品,規(guī)格說明文檔只存在于紙面上,客戶因而不能真正理解產(chǎn)品本身會是什么樣子(軟件的不可見性) 開發(fā)過程只能按階段順序向下進行,發(fā)現(xiàn)錯誤只能逐級回溯, 為避免回溯錯誤,每個階段修改后必須重新評審,其進度有可能被嚴重拖延,最終導(dǎo)致成本和質(zhì)量的失控 2

27、.4快速原型開發(fā)模型 使用瀑布模型,客戶與開發(fā)人員對于需求的不同理解是造成軟件開發(fā)失敗的最大因素,如果能夠在正式開發(fā)前在需求方面達成一致可有效地提高客戶的滿意度和軟件的可用性,快速原型開發(fā)模型正是基于這樣的思想而設(shè)計的快速原型開發(fā)模型(續(xù))優(yōu)點產(chǎn)品的開發(fā)基本上是線性的,最大程度避免回溯 開發(fā)進度快:正式設(shè)計和編程前做了大量的溝通和準(zhǔn)備工作,在開發(fā)過程回溯較少,因此整體上提高了開發(fā)的速度 缺點需求人員和客戶確定的展示性原型可能不利于設(shè)計人員的創(chuàng)新 (應(yīng)該只用做需求獲取工具,第3章詳述)2.5增量模型產(chǎn)品以一系列增量構(gòu)件的形式設(shè)計、實現(xiàn)、集成和測試,每個構(gòu)件(Builds)由一些代碼塊組成,這些代

28、碼塊來自多個相互作用的模塊,完成特定的功能 在增量模型的每一個階段,編寫出一個新構(gòu)件的代碼后,集成到已完成的軟件中,作為一個整體進行測試,當(dāng)產(chǎn)品達到功能目標(biāo)時,即滿足了規(guī)格說明后,這個進程停止舉例:文字處理系統(tǒng)的開發(fā) 增量模型優(yōu)點增量模型在每個階段交付一個可用的產(chǎn)品減少一個全新產(chǎn)品對客戶組織所帶來的心理上的影響 分階段交付產(chǎn)品對客戶的資金壓力較小 客戶可以在任何時候停止產(chǎn)品的開發(fā) 缺點每個增加的構(gòu)件必須能合并到已有的結(jié)構(gòu)中去,而不破壞原來的結(jié)構(gòu) (可擴展性,即插即用 )增量模型容易退化成建造修補模型 2.6極限編程 增量模型的一種擴展 主要特征根據(jù)效益分析,確定軟件需求 測試驅(qū)動 成對編程 每

29、日構(gòu)建 極限編程基本要求極限編程小組的計算機設(shè)置在一個大房間中,大房間中有許多彼此相連的小隔間,保證程序員之間能有順暢的交流 一個客戶代表始終和極限編程小組一起工作 ,為整個開發(fā)小組提供業(yè)務(wù)咨詢和指導(dǎo) 不允許連續(xù)兩周超時工作 沒有規(guī)格說明,編程小組的所有成員一起完成規(guī)格說明、設(shè)計、代碼和測試過程 建造出各種構(gòu)件之前沒有概要設(shè)計階段 極限編程的十二個最佳實踐 Kent Beck等人提出了12個軟件開發(fā)的最佳實踐 現(xiàn)場客戶(On-site Customer) 代碼規(guī)范(Code Standards) 每周40小時工作制(40-hour Week) 計劃博弈(Planning Game) 系統(tǒng)隱喻(

30、System Metaphor) 簡單設(shè)計(Simple Design) 極限編程的十二個最佳實踐測試驅(qū)動(Test-driven) 代碼重構(gòu)(Refactoring) 代碼共享(Code sharing) 成對編程(Pair Programming) 持續(xù)集成(Continuous Integration) 小型發(fā)布(Small Release) 極限編程優(yōu)點當(dāng)客戶的需要模糊或經(jīng)常改動時,使用極限編程可以通過不斷地調(diào)整而逐漸澄清需求,從而避免到開發(fā)的最后階段才發(fā)現(xiàn)需求理解錯誤 缺點僅適用于中小型項目,因為在整個項目開始前沒有詳細的概要設(shè)計,對于較復(fù)雜的軟件系統(tǒng)而言,各部分及部分之間的復(fù)雜性最

31、終會導(dǎo)致開發(fā)工作陷入無法正常工作的困境 2.7同步穩(wěn)定模型 也可以看作是增量模型的一種變型 在微軟公司內(nèi)部得到了成功的應(yīng)用訪問軟件潛在顧客,提取的優(yōu)先特性列表,擬制規(guī)格說明文檔,將工作分為3、4個構(gòu)件,第1個構(gòu)件包含最重要的特性,第2個構(gòu)件包含次重要的特性;每個構(gòu)件都由一些小組并行地完成每日同步,構(gòu)件穩(wěn)定即凍結(jié) 同步穩(wěn)定模型(續(xù))優(yōu)點同步步驟保證各個組件總能一起工作,部分地構(gòu)建產(chǎn)品使開發(fā)者能盡早深入了解每個產(chǎn)品的工作狀態(tài),而且必要時在構(gòu)件生成的過程中修改規(guī)格說明文檔,甚至在最初的規(guī)格說明文檔未完成前都可使用這個模型 缺點對開發(fā)人員要求很高,不僅指技術(shù)要求,更重要的是職業(yè)素養(yǎng) 2.8螺旋模型 強

32、調(diào)軟件開發(fā)風(fēng)險分析,特別適合于大型復(fù)雜的軟件系統(tǒng) 人員風(fēng)險 硬件風(fēng)險 測試投入 技術(shù)風(fēng)險 競爭對手 螺旋模型的優(yōu)缺點優(yōu)點強調(diào)可選辦法和限制條件能夠支持已有軟件的再利用,并把軟件質(zhì)量作為特定的目標(biāo)結(jié)合在其中 可以確定何時測試完畢,維護只是另一個螺旋循環(huán) 缺點專門用于內(nèi)部開發(fā) 只適用于大型軟件的開發(fā) 只有開發(fā)小組能夠勝任風(fēng)險分析才能使用螺旋模型 面向?qū)ο蟮纳芷谀P?2.10 RUP Rational統(tǒng)一過程(Rational Unified Process,RUP)主要經(jīng)驗迭代式開發(fā) 管理需求 基于組件的體系結(jié)構(gòu) 可視化建模 驗證軟件質(zhì)量 控制軟件變更 RUP中的用例驅(qū)動階段名稱階段任務(wù)階段中

33、的用例初始了解項目范圍,并且為其創(chuàng)建商業(yè)用例,最后決定:繼續(xù)這個項目是否有益開發(fā)出高層用例以幫助劃定項目的范圍,如應(yīng)包含的功能,項目范圍、進度和預(yù)算細化進行需求分析和風(fēng)險分析,開發(fā)出基本的體系結(jié)構(gòu),并且為構(gòu)造階段創(chuàng)建計劃更細化的用例,用于風(fēng)險分析和體系結(jié)構(gòu)的建立,創(chuàng)建構(gòu)造階段的計劃構(gòu)造進行一系列的迭代,每一次迭代包括分析、設(shè)計、實現(xiàn)和測試把用例作為設(shè)計和開發(fā)測試計劃的起點,在迭代的過程中對用例進一步細化。交付把已經(jīng)開發(fā)的項目完善成產(chǎn)品,包括Beta測試、性能調(diào)整和創(chuàng)建培訓(xùn)手冊、用戶指南以及銷售工具等文檔,為內(nèi)部或外部用戶制定相應(yīng)的產(chǎn)品推廣計劃。使用用例來開發(fā)用戶指南和培訓(xùn)手冊2.11案例引入

34、圖書借閱管理系統(tǒng)第三章 傳統(tǒng)軟件工程Software Engineering主要內(nèi)容及重點結(jié)構(gòu)化方法概述結(jié)構(gòu)化需求方法結(jié)構(gòu)化設(shè)計方法重點:需求分析模塊及模塊獨立性自頂向下,逐步求精分解與抽象,信息隱藏3.1結(jié)構(gòu)化方法概述 結(jié)構(gòu)是指系統(tǒng)內(nèi)各個組成要素之間的相互聯(lián)系、相互作用的框架。結(jié)構(gòu)化開發(fā)方法提出了一組提高軟件結(jié)構(gòu)合理性的準(zhǔn)則,如:分解與抽象、模塊獨立性、信息隱蔽等 結(jié)構(gòu)化方法起源于結(jié)構(gòu)化程序設(shè)計語言 1966年,C.Bhm和G.Jacopini提出了關(guān)于程序結(jié)構(gòu)的理論,并證明了任何程序的邏輯結(jié)構(gòu)都可以用順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)來表示 結(jié)構(gòu)化方法概述(續(xù))結(jié)構(gòu)化分析方法強調(diào)開發(fā)方法的結(jié)構(gòu)合

35、理性以及所開發(fā)軟件的結(jié)構(gòu)合理性,給出了一組幫助系統(tǒng)分析人員產(chǎn)生功能規(guī)約的原理與技術(shù) 使用的工具主要有:數(shù)據(jù)流圖、數(shù)據(jù)字典、結(jié)構(gòu)化語言、判定表以及判定樹等以數(shù)據(jù)流圖、數(shù)據(jù)字典為主要工具表達需求,在此基礎(chǔ)上得到軟件的模塊結(jié)構(gòu)圖,用來表述程序模塊之間的關(guān)系 結(jié)構(gòu)化設(shè)計方法的設(shè)計原則 每個模塊只執(zhí)行一個功能,堅持功能性內(nèi)聚 每個模塊用函數(shù)方式調(diào)用其他模塊,不允許在模塊間直接跳轉(zhuǎn) 模塊間傳送的參數(shù)只能是模塊所使用的數(shù)據(jù),不能是控制信息 模塊間共用的信息(如全局變量等)應(yīng)盡量少,堅持局部化原則 3.2 結(jié)構(gòu)化需求分析方法需求分析是指在新開發(fā)一個系統(tǒng)或維護一個現(xiàn)有的軟件時通過與客戶的交流溝通后確定新系統(tǒng)的功

36、能、性能、界面及操作方式等 需求分析是軟件定義的一個階段,也是整個軟件開發(fā)的基礎(chǔ),但往往也是最困難的部分 需求分析不是為了知道客戶想要什么系統(tǒng),而是確定客戶真正需要什么樣的系統(tǒng) 需求分析的重要性需求分析對系統(tǒng)開發(fā)有決定性的影響 需求分析的錯誤將引起擴散性傳播,即水波效應(yīng) 需求分析生成的文檔是后繼工作的基礎(chǔ) 需求分析的工作量占整個系統(tǒng)開發(fā)工作量的30% 需求分析的困難需求人員不僅僅需要技術(shù)能力,也需要與客戶有良好的溝通和互動能力,即便如此,需求分析的結(jié)果往往也是不如人意的,主要原因是:客戶需求的動態(tài)性 客戶需求的模糊性 需求分析的困難(續(xù))問題的復(fù)雜性和對問題空間理解的不完備性與不一致性 需求人

37、員如何完全理解客戶的業(yè)務(wù)?需求人員編寫的需求分析文檔如何讓客戶能完全理解?需求分析的任務(wù)軟件需求階段的任務(wù)就是識別、獲取需求與為需求建模 需求分析的任務(wù)(續(xù))深入了解軟件的功能和性能 確定軟件設(shè)計的約束以及軟件同其它系統(tǒng)元素的接口細節(jié) 定義軟件的其它有效性需求 準(zhǔn)確地表達被接受的客戶要求 確定被開發(fā)系統(tǒng)的系統(tǒng)元素并將功能和信息結(jié)構(gòu)分配到這些系統(tǒng)元素中 軟件需求過程 軟件需求可以分成4個階段,分別是:問題識別、分析與綜合、編制需求階段的文檔、需求分析評審。首先建立軟件需求小組軟件需求過程(續(xù))問題識別 在該階段,需要確定客戶到底需要的是一個什么樣的系統(tǒng),并為這個系統(tǒng)劃定相應(yīng)的范圍;為完成預(yù)計的系

38、統(tǒng),需要客戶提供什么條件,如現(xiàn)在條件不能滿足是否需要增加新的軟硬件設(shè)備和其他設(shè)施,甚至考慮修改原有的規(guī)章制度和業(yè)務(wù)流程。需要多次與客戶溝通,交流,最后提出總體方案軟件需求分類軟件需求含義功能需求軟件應(yīng)該能做什么?可以為客戶解決什么問題?有哪些菜單項?性能需求在給定的條件下,軟件的響應(yīng)時間最差情況下是多少?環(huán)境需求軟件交付后在什么樣的系統(tǒng)下運行?對操作員的技能有何要求?可靠性需求連續(xù)工作多長時間不出現(xiàn)問題?安全保密需求如何保護數(shù)據(jù)的安全?如何防止非法入侵?客戶界面需求主菜單的布局、顏色如何?界面元素(如按鈕)的位置,大小,形狀是什么樣的?客戶如何操作軟件?資源需求正常運行程序需要多大的內(nèi)存、硬盤

39、?為達到最佳效果是否需要使用專用設(shè)備?成本消耗需求為保證軟件開發(fā)的順利進行,需要投入多少資金和人員?如何分配資源?開發(fā)進度需求為軟件開發(fā)設(shè)定期限,并制定相應(yīng)的開發(fā)進度計劃,標(biāo)出相應(yīng)的里程碑。分析與綜合階段 對資料的分析與綜合保持資料的一致性用戶的要求與現(xiàn)在的技術(shù)條件如何契合?結(jié)構(gòu)化分析方法與面向?qū)ο蟮姆治龇椒ň幹菩枨蠓治鑫臋n 主要有軟件需求規(guī)格說明書、數(shù)據(jù)字典、初步的客戶手冊、軟件開發(fā)計劃等按照相應(yīng)的規(guī)范編寫,如GB/T 9385-2008 計算機軟件需求規(guī)格說明規(guī)范 需求分析評審 獨立的第三方做為評審人員需求文檔和客戶的要求是否一致? 提供的文檔是否完備? 文檔中的描述是否完整清晰? 開發(fā)計

40、劃是否可行? 數(shù)據(jù)、數(shù)據(jù)結(jié)構(gòu)和圖表的說明是否清楚? 開發(fā)軟件的限制條件是什么? 開發(fā)過程中可能遇到的風(fēng)險是什么? 軟件需求獲取 建立需求分析小組 客戶組織架構(gòu)分析 組織構(gòu)成,分級,誰能做決定 獲取資料 資料的來源主要有:單據(jù)、報表、管理規(guī)定、操作指南、標(biāo)準(zhǔn)規(guī)范、業(yè)務(wù)辦理流程、備忘錄、會議紀(jì)要等 數(shù)據(jù)采樣 面談 問卷調(diào)查 用戶行為觀察(第6章中詳述)結(jié)構(gòu)化分析方法 面向數(shù)據(jù)流的需求分析方法,該方法適合數(shù)據(jù)處理類型軟件的需求分析,采用抽象模型的概念,按照軟件內(nèi)部數(shù)據(jù)傳遞、變換的關(guān)系,自頂向下逐層分解,直到找到滿足功能要求的所有可實現(xiàn)軟件為止 靜態(tài)分析方法:數(shù)據(jù)流圖,數(shù)據(jù)詞典,數(shù)據(jù)加工說明動態(tài)分析方

41、法:狀態(tài)遷移圖,時序圖,petri網(wǎng)數(shù)據(jù)流圖 數(shù)據(jù)流圖是作為描述“分解”的手段引進的,即將最初概括性的處理過程分解成幾個較小的處理過程,再逐層分解,直到最后一層的每個處理過程都可以很容易清楚地描述和處理為止 例:儲戶到銀行取款的業(yè)務(wù)流程 例:某培訓(xùn)中心業(yè)務(wù)處理系統(tǒng)為相關(guān)行業(yè)人員開設(shè)多門課程。有興趣的人通過來電來函報名選修某門課。培訓(xùn)中心收取一定費用,并開具發(fā)票。學(xué)員可通過來電來函查詢課程計劃。該培訓(xùn)中心首先將學(xué)員的來電來函分類,然后按不同情況進行如下處理:如學(xué)員來報名,將報名數(shù)據(jù)發(fā)給負責(zé)報名的職員,他們查詢課程文件,檢查課程是否額滿。如未滿,則在學(xué)生文件、課程文件上登記,開出報名單給財務(wù)部門,

42、財務(wù)部門對發(fā)票進行復(fù)審后通知學(xué)員來交費如學(xué)員付款,財務(wù)人員在賬目上登記,經(jīng)復(fù)審后給學(xué)員通知單如學(xué)員查詢相關(guān)課程,交查詢部門查詢課程文件后給出答復(fù)如學(xué)員想注銷某門課程,則注銷人員在課程、學(xué)生、賬目上做出相應(yīng)的修改,經(jīng)復(fù)審后通知學(xué)員拒絕學(xué)員的不合理要求例:某培訓(xùn)中心業(yè)務(wù)處理系統(tǒng)(續(xù))數(shù)據(jù)流圖的畫法可以用一句話來總結(jié):“從外向里,自頂向下”。“從外向里”指的是先找出系統(tǒng)的外部對象,即數(shù)據(jù)源點和終點,而系統(tǒng)內(nèi)部是對數(shù)據(jù)源點傳入的數(shù)據(jù)進行處理后傳出給數(shù)據(jù)終點;“自頂向下”即對問題的從粗略到精細的分解性說明 例:某培訓(xùn)中心業(yè)務(wù)處理系統(tǒng)(續(xù))分析過程(名詞動詞法)通過分析可知,四種基本元素中,外部實體、數(shù)據(jù)

43、流、數(shù)據(jù)存儲文件是名詞,數(shù)據(jù)加工是動詞或動賓結(jié)構(gòu),將對日常工作的描述中的名詞和動詞找出來,分配到各種基本元素中,就可以得到最初的分析結(jié)果 名詞:學(xué)員、報名數(shù)據(jù)、職員、課程文件、課程、學(xué)生文件、報名單、財務(wù)部門、發(fā)票、財務(wù)人員、賬目、通知單、查詢部門、答復(fù)、不合理要求。例:某培訓(xùn)中心業(yè)務(wù)處理系統(tǒng)(續(xù))動詞或動詞結(jié)構(gòu):報名、發(fā)給、查詢相關(guān)課程、檢查、登記、開出報名單、復(fù)審、通知、查詢課程文件、付款、交查詢部門、給出答復(fù)、注銷、修改、拒絕對于以上的最初分析結(jié)果,必須逐個進行檢查,首先排除的是屬于培訓(xùn)中心系統(tǒng)操作人員的名詞,如職員、財務(wù)部門、財務(wù)人員、查詢部門等;其次,對于某些動詞也要進行研究。例如,

44、“報名”這個動詞是“學(xué)員”這個外部實體的動作,會成生“報名數(shù)據(jù)”數(shù)據(jù)流,類似的還有交費、查詢相關(guān)課程、注銷等 例:某培訓(xùn)中心業(yè)務(wù)處理系統(tǒng)(續(xù))數(shù)據(jù)流圖上所有圖形符號只限于前述四種基本圖形元素。數(shù)據(jù)流圖的主圖必須包括前述四種基本元素,缺一不可。數(shù)據(jù)流圖的主圖上的數(shù)據(jù)流必須封閉在外部實體之間。每個加工至少有一個輸入數(shù)據(jù)流和一個輸出數(shù)據(jù)流。檢查和修改數(shù)據(jù)流圖的原則在數(shù)據(jù)流圖中,需按層給加工框編號。編號表明該加工所處層次及上下層的親子關(guān)系。規(guī)定任何一個數(shù)據(jù)流子圖必須與它上一層的一個加工對應(yīng),兩者的輸入數(shù)據(jù)流和輸出數(shù)據(jù)流必須一致。此即父圖與子圖的平衡??梢栽跀?shù)據(jù)流圖中加入物質(zhì)流,幫助用戶理解數(shù)據(jù)流圖。檢

45、查和修改數(shù)據(jù)流圖的原則圖上每個元素都必須有名字。數(shù)據(jù)流圖中不可夾帶控制流。初畫時可以忽略瑣碎的細節(jié),以集中精力于主要數(shù)據(jù)流。檢查和修改數(shù)據(jù)流圖的原則結(jié)構(gòu)化分析工具 數(shù)據(jù)流圖表明了數(shù)據(jù)的來源、處理和流向,但并沒有說明數(shù)據(jù)的具體含義和數(shù)據(jù)加工的具體過程,此處的數(shù)據(jù)指數(shù)據(jù)源點、數(shù)據(jù)終點、數(shù)據(jù)流和存儲文件等,也沒有說明系統(tǒng)的狀態(tài)變化等,因此需要其它的需求分析工具加以描述 數(shù)據(jù)詞典與數(shù)據(jù)流圖配合,能清楚地表達數(shù)據(jù)處理的要求。詞條描述對于在數(shù)據(jù)流圖中每一個被命名的圖形元素,均加以定義,其內(nèi)容有: 名字、別名或編號、分類、描述、定義、位置、其它。數(shù)據(jù)詞典數(shù)據(jù)詞典中的符號定義符號含義舉例=被定義為+與x =

46、a+b.,.或.|.或x = a , b,x = a | b.或m.n重復(fù)x = a,x = a8(.)可選x = (a)“.”基本數(shù)據(jù)元素x = “a”.連結(jié)符x = 1.9數(shù)據(jù)詞典舉例:學(xué)員報名表學(xué)員姓名:學(xué)員年齡:性別:聯(lián)系方式:學(xué)員編號:報名日期:課程編號課程名課程教師開課時間課程費用最多學(xué)員人數(shù)數(shù)據(jù)詞典舉例:學(xué)員報名表(續(xù))報名表 = 學(xué)員姓名 + 學(xué)員年齡 + 性別 + 聯(lián)系方式 + 學(xué)員編號 + 報名日期 + 1所選課程5;學(xué)員姓名 = 2漢字10;學(xué)員年齡 = “15”.”60” ;性別 = 男女;聯(lián)系方式 = 20漢字50;學(xué)員編號 = “000001”.”999999”;

47、報名日期 = 年 + 月 + 日; /開課時間類似。所選課程 = 課程編號 + 課程名 + 課程教師 + 開課時間 + 課程費用 + 最多學(xué)員人數(shù);課程編號 = 2字母10 + 2數(shù)字10; /字母表示課程分類號,數(shù)字代表流水號。課程名 = 2漢字100;課程教師 = 2漢字10;課程費用 = “700” .”1000”;最多學(xué)員人數(shù) = “10” .”30” 數(shù)據(jù)詞典:數(shù)據(jù)流數(shù)據(jù)流名:盡量做到見名知義說明:簡要介紹作用,即它產(chǎn)生的原因和結(jié)果數(shù)據(jù)流來源:來自何方數(shù)據(jù)流去向:去向何處數(shù)據(jù)流組成:數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)量或流通量:數(shù)據(jù)量、流通量,如每小時會產(chǎn)生多少條數(shù)據(jù)等注釋:相關(guān)事項數(shù)據(jù)詞典:數(shù)據(jù)流(續(xù))

48、別名:報名表。說明:學(xué)員因選修課程而填寫的單據(jù),用于記錄學(xué)員報名信息。來源:由學(xué)員填寫后提交。去向:經(jīng)分類處理后,提交給“報名”處理過程。組成:學(xué)員信息 + 1所選選課5。注釋:報名數(shù)據(jù)的正確性由顧客自行負責(zé),一旦提交不得修改 數(shù)據(jù)詞典:數(shù)據(jù)流的格式化描述數(shù)據(jù)流描述數(shù)據(jù)流ID號:DF_01_78數(shù)據(jù)流名稱:報名數(shù)據(jù)描述:包含學(xué)員個人信息和選課信息來源:學(xué)員目標(biāo):“報名”處理過程數(shù)據(jù)流類型:文件 界面 報表 表格 內(nèi)部數(shù)據(jù)數(shù)據(jù)流所包含的數(shù)據(jù)結(jié)構(gòu):報名信息單位時間流量:100/天備注:報名信息記錄了學(xué)員個人信息和選課信息。報名表可以通過電子郵件或傳真發(fā)送至處理部門。數(shù)據(jù)詞典:數(shù)據(jù)元素數(shù)據(jù)元素名簡述

49、:簡要描述數(shù)據(jù)元素。別名: 數(shù)據(jù)元素的其它常用名。組成:數(shù)據(jù)格式。類型:數(shù)字(離散值,連續(xù)值),文字(編碼類型)。長度: 數(shù)據(jù)元素的大小。取值范圍:相關(guān)的數(shù)據(jù)元素及數(shù)據(jù)結(jié)構(gòu):數(shù)據(jù)詞典:數(shù)據(jù)元素(續(xù))培訓(xùn)中心管理系統(tǒng)中“開課日期”可以描述如下:數(shù)據(jù)項名:開課日期簡述:課程開始上課的日期別名:上課日期組成:年 + 月 + 日類型:位數(shù)字注釋:年 1949數(shù)據(jù)詞典:數(shù)據(jù)存儲文件 數(shù)據(jù)文件名:簡述:存放的是什么數(shù)據(jù)。別名:數(shù)據(jù)文件的其它常用名。數(shù)據(jù)文件組成:數(shù)據(jù)結(jié)構(gòu)。數(shù)據(jù)容量:數(shù)據(jù)文件可以存放的數(shù)據(jù)量。存儲方式:順序,直接,關(guān)鍵碼。存取頻率(或效率):單位時間內(nèi)的數(shù)據(jù)吞吐量 數(shù)據(jù)詞典:數(shù)據(jù)存儲文件(續(xù)

50、)培訓(xùn)中心管理系統(tǒng)中“學(xué)員文件”可以描述如下:數(shù)據(jù)文件名:學(xué)員。簡述:包括學(xué)員的所有信息。別名:學(xué)員文件。數(shù)據(jù)文件組成:姓名 + 年齡 + 性別 + 聯(lián)系方式 + 學(xué)員編號。數(shù)據(jù)容量: 5000。存儲方式:按學(xué)員編號升序排列,以順序方式存儲。存取效率:查詢時間 1秒。注釋:學(xué)員編號從000001開始 數(shù)據(jù)加工邏輯說明 數(shù)據(jù)流圖的每一個基本加工,必須有一個基本加工邏輯說明,描述基本加工如何將輸入數(shù)據(jù)流變換為輸出數(shù)據(jù)流的加工規(guī)則,應(yīng)描述實現(xiàn)加工的策略而不是實現(xiàn)加工的細節(jié),包含的信息應(yīng)該是充足的、完備的、有用的、無冗余的。常用的數(shù)據(jù)加工邏輯說明工具包括:結(jié)構(gòu)化語言或偽代碼、判定表、判定樹 結(jié)構(gòu)化語言

51、或偽代碼詞匯表由英語命令動詞、數(shù)據(jù)詞典中定義的名詞、有限的自定義詞、邏輯關(guān)系詞 IF_THEN_ELSE、CASE_OF、WHILE_DO、REPEAT_UNTIL等組成無形容詞、副詞 數(shù)據(jù)結(jié)構(gòu)課程中的算法描述就是偽代碼結(jié)構(gòu)化語言或偽代碼 if 發(fā)貨單金額超過$500 thenif 欠款超過了60天 then在償還欠款前不予批準(zhǔn)else (欠款未超期)發(fā)批準(zhǔn)書、發(fā)貨單 else (發(fā)貨單金額未超過$500)if 欠款超過60天 then發(fā)批準(zhǔn)書、發(fā)貨單及賒欠報告else (欠款未超期)發(fā)批準(zhǔn)書、發(fā)貨單 判定表 判定表(續(xù))1234條件發(fā)貨單金額$50060天60天=60天操作不發(fā)出批準(zhǔn)書發(fā)出批

52、準(zhǔn)書發(fā)出發(fā)貨單發(fā)出賒欠報告判定樹 數(shù)據(jù)加工邏輯說明工具的選擇當(dāng)有許多重復(fù)的動作時,應(yīng)該選用結(jié)構(gòu)化語言,因為判定表和判定樹不能對重復(fù)動作進行描述;結(jié)構(gòu)化語言接近于自然語言,因此,當(dāng)與客戶的交流是最重要的考量因素時,也應(yīng)該選用結(jié)構(gòu)化語言;當(dāng)存在條件、行動和規(guī)則的復(fù)雜組合時,選用判定表,可以有效地避開冗余、矛盾和不可能情況;當(dāng)條件和動作的順序十分重要時,應(yīng)當(dāng)選用判定樹,因為并不是每個條件都與每個行動相關(guān),有些動作在第一個條件判定完后就可以決定 系統(tǒng)動態(tài)分析 更直觀地分析系統(tǒng)的動作,從特定的視點出發(fā)描述系統(tǒng)的行為,需要采用動態(tài)分析的方法。常用的系統(tǒng)動態(tài)分析工具有:狀態(tài)遷移圖、時序圖、Petri網(wǎng)等 狀

53、態(tài)遷移圖:CPU狀態(tài)變化 CPU狀態(tài)遷移圖、狀態(tài)遷移表時序圖 Petri網(wǎng)已廣泛地應(yīng)用于硬件與軟件系統(tǒng)的開發(fā)中,它適用于描述與分析相互獨立、協(xié)同操作的處理系統(tǒng),也就是并發(fā)執(zhí)行的處理系統(tǒng)。Petri網(wǎng)Petri網(wǎng)簡稱PNG (Petri Net Graph),它有兩種結(jié)點:位置(place):符號為“”,它用來表示系統(tǒng)的狀態(tài)。轉(zhuǎn)移(transition):符號為 “_”, 它用來表示系統(tǒng)中的事件。 表示對轉(zhuǎn)移的輸入. 表示由轉(zhuǎn)移的輸出Petri網(wǎng)標(biāo)記,或稱令牌(token),是表明系統(tǒng)當(dāng)前處于什么狀態(tài)的標(biāo)志。Petri網(wǎng)Petri網(wǎng)Petri網(wǎng):列車調(diào)度petri網(wǎng)Petri網(wǎng):系統(tǒng)進程調(diào)度Pe

54、tri網(wǎng):系統(tǒng)進程調(diào)度petri網(wǎng)數(shù)據(jù)及數(shù)據(jù)庫需求 如何把數(shù)據(jù)以最優(yōu)的方式組織起來,以滿足系統(tǒng)對數(shù)據(jù)的要求 與數(shù)據(jù)處理有關(guān)的的領(lǐng)域分為三個世界 現(xiàn)實世界現(xiàn)實生活中的事物 信息世界 由屬性組成的實體(06201115,張小飛,男,20,軟件工程)對應(yīng)的屬性集合(學(xué)號,姓名,性別,出生日期,專業(yè))數(shù)據(jù)及數(shù)據(jù)庫需求(續(xù))數(shù)據(jù)世界:字段,記錄,文件(表)學(xué)號姓名性別出生日期專業(yè)11201115張小飛男1993-02-12軟件工程11061217李靜女1992-11-18計算機科學(xué)與技術(shù)10071123錢進男1991-10-16應(yīng)用數(shù)學(xué)E-R圖原型化方法在開發(fā)初期,客戶往往對系統(tǒng)只有一個模糊的想法 、需

55、求經(jīng)常變量、規(guī)格說明難以完善,交流困難解決方法:快速原型探索型實驗型進化型使用策略廢棄策略 追加策略 建立快速原型的好處增進軟件開發(fā)者和客戶對系統(tǒng)服務(wù)需求的理解 軟件原型化方法提供了一種有力的學(xué)習(xí)手段 可以容易地確定系統(tǒng)的性能,確認各項主要系統(tǒng)服務(wù)的可應(yīng)用性,確認系統(tǒng)設(shè)計的可行性,確認系統(tǒng)作為產(chǎn)品的結(jié)果 有利于建成最終系統(tǒng) 使用快速原型獲得的信息客戶反應(yīng) 客戶建議 可能的創(chuàng)新 修改計劃 快速原型法適用范圍 客戶的意愿 沒有類似系統(tǒng)或相關(guān)開發(fā)經(jīng)驗需求的模糊與不穩(wěn)定性 非結(jié)構(gòu)化或半結(jié)構(gòu)化 快速原型法的優(yōu)缺點 優(yōu)點可以在系統(tǒng)開發(fā)早期改變系統(tǒng) 可以及時放棄不符合需要的系統(tǒng) 設(shè)計一個滿足客戶需求和期望的

56、系統(tǒng) 缺點難以嚴格地管理原型 原型還不充分時,客戶把它當(dāng)作一個實際的系統(tǒng) 軟件復(fù)用 如果有類似的產(chǎn)品甚至于能夠?qū)⒁郧八龅墓ぷ鳎ㄎ臋n和代碼等直接移植到新系統(tǒng)中來,將可以減輕勞動強度,提高開發(fā)效率,減少開發(fā)時間軟件復(fù)用的主要思想是,將軟件看成是由不同功能部分的“組件”所組成的有機體,每一個組件在設(shè)計編寫時可以被設(shè)計成完成同類工作的通用工具 軟件利用的形式復(fù)用數(shù)據(jù) 復(fù)用模塊 復(fù)用結(jié)構(gòu) 復(fù)用設(shè)計 復(fù)用規(guī)格說明 需求文檔的編寫編寫原則功能與實現(xiàn)分離,即描述要“做什么”而不是“怎樣實現(xiàn)” 要求使用面向處理的規(guī)格說明語言 描述該目標(biāo)軟件與系統(tǒng)的其它系統(tǒng)元素交互的方式 必須包括系統(tǒng)運行的環(huán)境 必須是一個

57、認識的模型,而不是設(shè)計或?qū)崿F(xiàn)的模型 需求文檔的編寫(續(xù))規(guī)格說明必須是可操作的 規(guī)格說明必須容許不完備性并允許擴充 規(guī)格說明必須局部化和松散的耦合軟件需求規(guī)格說明書格式(見書) 3.3 結(jié)構(gòu)化設(shè)計方法1974年,W.StevensG.Myers和L.Constantine等人在IBM系統(tǒng)IBM System雜志上發(fā)表了結(jié)構(gòu)化設(shè)計論文 ,該方法的要點是:自頂向下、逐步求精的功能劃分 模塊化 軟件結(jié)構(gòu)化準(zhǔn)則是模塊獨立性 用軟件結(jié)構(gòu)圖來描述軟件結(jié)構(gòu) 軟件設(shè)計的目標(biāo)和任務(wù) 軟件設(shè)計過程 制定標(biāo)準(zhǔn)閱讀和理解軟件需求說明書 根據(jù)目標(biāo)確定最合適的設(shè)計方法 規(guī)定設(shè)計文檔的編制標(biāo)準(zhǔn) 規(guī)定編碼的信息形式 總體設(shè)計

58、系統(tǒng)按功能劃分成模塊的層次結(jié)構(gòu) 確定每個模塊的功能 建立與已確定的軟件需求的對應(yīng)關(guān)系 確定模塊間的調(diào)用關(guān)系 確定模塊間的接口 評估模塊劃分的質(zhì)量 軟件設(shè)計過程(續(xù))處理方式設(shè)計:確定為實現(xiàn)系統(tǒng)的功能需求所必需的算法,評估算法的性能 周轉(zhuǎn)時間 響應(yīng)時間 吞吐量 精度 確定外部信號的接收發(fā)送形式 軟件設(shè)計過程(續(xù))數(shù)據(jù)結(jié)構(gòu)設(shè)計 確定軟件涉及的文件系統(tǒng)的結(jié)構(gòu)以及數(shù)據(jù)庫的模式 確定輸入,輸出文件的詳細的數(shù)據(jù)結(jié)構(gòu) 確定算法所必需的邏輯數(shù)據(jù)結(jié)構(gòu)及其操作 確定對邏輯數(shù)據(jù)結(jié)構(gòu)所必需的那些操作的程序模塊 限制和確定各個數(shù)據(jù)設(shè)計決策的影響范圍 與操作系統(tǒng)或調(diào)度程序接口詳細的數(shù)據(jù)結(jié)構(gòu)和使用規(guī)則 插入自動檢錯,報錯和

59、糾錯的功能 數(shù)據(jù)的一致性設(shè)計 數(shù)據(jù)的冗余性設(shè)計 軟件設(shè)計過程(續(xù))可靠性設(shè)計:在軟件開發(fā)的一開始就要確定軟件可靠性和其它質(zhì)量指標(biāo),考慮相應(yīng)措施,以使得軟件易于修改和易于維護 文檔編寫概要設(shè)計說明書、數(shù)據(jù)庫設(shè)計說明書、客戶手冊、初步的測試計劃書 概要設(shè)計評審 軟件設(shè)計過程(續(xù))詳細設(shè)計 確定軟件各個組成部分內(nèi)的算法以及各部分的內(nèi)部數(shù)據(jù)組織 選定某種過程的表達形式來描述各種算法 進行詳細設(shè)計的評審 軟件設(shè)計基礎(chǔ) 自頂向下、逐步細化 將軟件的體系結(jié)構(gòu)按自頂向下方式,對各個層次的過程細節(jié)和數(shù)據(jù)細節(jié)逐層細化,直到用程序設(shè)計語言的語句能夠?qū)崿F(xiàn)為止,從而最后確立整個的體系結(jié)構(gòu) 軟件結(jié)構(gòu)程序的模塊結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)

60、 軟件設(shè)計基礎(chǔ):從問題到解決方案軟件設(shè)計基礎(chǔ)(續(xù))程序結(jié)構(gòu) 軟件設(shè)計基礎(chǔ)(續(xù))結(jié)構(gòu)圖 軟件設(shè)計基礎(chǔ)(續(xù))程序的系統(tǒng)結(jié)構(gòu)圖 軟件設(shè)計基礎(chǔ)(續(xù))系統(tǒng)的模塊化 :模塊如何劃分軟件設(shè)計基礎(chǔ)(續(xù))系統(tǒng)的抽象化抽象化是一個降低復(fù)雜程度的過程,將注意力集中于當(dāng)前最需要關(guān)心的事物上,而將不需要關(guān)心的部分忽略,將需要細化的部分放到下一步進行 最高的抽象層次上,可以使用問題所處環(huán)境的語言概括地描述問題的解法。在較低的抽象層次上,則采用過程化的方法 軟件設(shè)計基礎(chǔ)(續(xù))信息隱藏 每個模塊的實現(xiàn)細節(jié)對于其它模塊來說是隱蔽的。也就是說,模塊中所包含的信息(包括數(shù)據(jù)和過程)不允許其它不需要這些信息的模塊使用 信息隱蔽一方面

溫馨提示

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

評論

0/150

提交評論