語句數(shù)內(nèi)存數(shù)輸出程序開發(fā)時間效率清晰性_第1頁
語句數(shù)內(nèi)存數(shù)輸出程序開發(fā)時間效率清晰性_第2頁
語句數(shù)內(nèi)存數(shù)輸出程序開發(fā)時間效率清晰性_第3頁
語句數(shù)內(nèi)存數(shù)輸出程序開發(fā)時間效率清晰性_第4頁
語句數(shù)內(nèi)存數(shù)輸出程序開發(fā)時間效率清晰性_第5頁
已閱讀5頁,還剩324頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、講授的內(nèi)容Contents,第1章 軟件與軟件工程Chapter 1 Introduction,本章要講的主要內(nèi)容是: 軟件(Software) 軟件危機(Software Crisis) 軟件工程(Software Engineering) 軟件工程與計算機科學(xué)的關(guān)系 (Relationship between SE and CS,1.1 軟件Software,軟件的概念與特征 軟件的發(fā)展歷程 軟件的分類 軟件開發(fā)的案例分析,軟件的概念與特征,軟件的定義 軟件是程序和所有使程序正確運行所需要的相關(guān)文檔和配置信息。 Software = Program + Data + Document,軟件

2、的特征 軟件是無形的 (intangible) 軟件副本制作簡單 軟件無磨損,軟件的發(fā)展歷程,軟件的分類,基于不同工程對象劃分 基于軟件規(guī)模的劃分,基于不同工程對象劃分,通用軟件產(chǎn)品 Generic -由軟件開發(fā)機構(gòu)制作,市場上公開銷售,獨立使用。 ( developed to be sold to a range of different customers) 數(shù)據(jù)庫軟件、字處理軟件、繪圖軟件、工程管理工具。 定制軟件產(chǎn)品Bespoke (custom) - 受特定客戶委托,由軟件承包商專門制作。 (developed for a single customer according to t

3、heir specification,基于軟件規(guī)模的劃分,微小型軟件-一般都在2000行以內(nèi)的程序長度。在開發(fā)過程中,不講究開發(fā)方法和開發(fā)實施的步驟,沒有相應(yīng)的軟件編寫文檔。 中型軟件-通常程序長度在500010000行之間,一般需要510人、持續(xù)一至兩年時間開發(fā),以團隊方式采用統(tǒng)一的標準開發(fā)模式。 大型軟件-采用軟件工程指導(dǎo)下的軟件開發(fā)方法和遵循相應(yīng)的開發(fā)規(guī)范,建立軟件開發(fā)過程的文檔,由上百、千人參加形成的龐大開發(fā)團隊,不同領(lǐng)域的人員相互溝通合作,軟件開發(fā)的案例分析,系統(tǒng)軟件-是一組為其他程序服務(wù)的程序。 實時軟件-管理、分析、控制現(xiàn)實世界中發(fā)生的事件的程序。 商業(yè)軟件-商業(yè)信息處理是最大的

4、軟件應(yīng)用領(lǐng)域。 工程和科學(xué)計算軟件-這類軟件的特點是一般具有數(shù)值計算。 嵌入式軟件-智能產(chǎn)品應(yīng)用于所有的領(lǐng)域,嵌入式軟件作用于這些智能產(chǎn)品,執(zhí)行有限但專一的功能。 個人計算機軟件-用于個人的文字、圖片、財務(wù)、娛樂等等方面的軟件系統(tǒng)。 人工智能軟件-人工智能(AI)軟件利用非數(shù)值計算解決復(fù)雜問題,請給出相應(yīng)的實例,軟件的未來與工業(yè)化,作坊式生產(chǎn) 軟件工業(yè)化 CMMI認證,1.2 軟件工程,軟件工程的概念 軟件工程的范疇 軟件工程的開發(fā)原則 軟件工程面臨的挑戰(zhàn) 軟件工程師的未來,問題分解的特征,軟件開發(fā)過程中存在的問題,1) 軟件需求急劇增長; (2) 軟件開發(fā)成本和進度估計 不準確; (3) 軟

5、件產(chǎn)品不滿足用戶需 求; (4) 軟件難以維護; (5) 軟件價格昂貴,軟件工程的概念,中心思想: 把軟件當(dāng)作一種工業(yè)產(chǎn)品,要求采用工程化的原理與方法對軟件進行計劃、開發(fā)和維護。 目的: 實現(xiàn)按預(yù)期的進度和經(jīng)費完成軟件生產(chǎn)計劃,提高軟件的生產(chǎn)率和可靠性,軟件工程框架,軟件工程的范疇,軟件工程開發(fā)的原則,分解 信息隱蔽 模塊化 標準化,軟件工程面臨的挑戰(zhàn),遺留系統(tǒng) 交付上的挑戰(zhàn) 多樣性的挑戰(zhàn),軟件工程師的未來,軟件工程人員應(yīng)當(dāng)遵守以下八條準則: (1)公眾感(PUBLIC):軟件工程師始終與公眾利益保持一致。 (2)客戶和雇主(CLIENT AND EMPLOYER):滿足客戶和雇主的最大利益。

6、 (3)產(chǎn)品(PRODUCT ):保證產(chǎn)品達到盡可能高的行業(yè)標準。 (4)判斷力(JUDGEMENT):具有公正和獨立的職業(yè)判斷力。 (5)管理(MANAGEMENT):提倡合乎道德的軟件開發(fā)和維護的管理辦法。 (6)職業(yè)感(PROFESSION):弘揚職業(yè)正義感和容易感,尊重社會公正利益。 (7)同事(COLLEAGUES):公平對待和協(xié)助每一位同事。 (8)自己(SELF):畢生學(xué)習(xí)專業(yè)知識,合乎職業(yè)道德的職業(yè)活動方式,1.3 軟件過程模型,軟件生存周期 軟件開發(fā)模型 瀑布模型 進化式模型 演化模型 形式化開發(fā),軟件生存周期,軟件生存周期的概念: 一個軟件從計劃起,到廢棄不用止。 軟件生存

7、周期包括:計劃、開發(fā)、運行,軟件開發(fā)模型概念,軟件開發(fā)模型的概念: 為整個軟件生存期建立的模型,軟件開發(fā)模型分類: 瀑布模型 進化式開發(fā)模型 演化模型 形式化開發(fā)模型,軟件開發(fā)模型,1 瀑布模型 The waterfall model,瀑布模型的優(yōu)點,階段間的順序性 和依賴性 推遲實現(xiàn)的觀點 質(zhì)量保證的觀點,瀑布模型的問題Waterfall model problems,將項目生硬地分解成確切的階段。 Inflexible partitioning of the project into distinct stages 對用戶需求變更的相應(yīng)困難。 This makes it difficult

8、 to respond to changing customer requirements 需求了解的好的時候,采用瀑布模型。 This model is only appropriate when the requirements are well-understood,2快速原型開發(fā)模型Prototype Model,基本思想: 先開發(fā)出一個原型系統(tǒng)給用戶使用,通過用戶反饋意見來不斷修改系統(tǒng)直到最后成熟。 讓描述、開發(fā)、有效性驗證活動并行執(zhí)行,原型模型,原型模型的優(yōu)點,原型化模型突出一個“快”字。軟件開發(fā)人員向用戶提供一個“樣品”,用戶向開發(fā)人員迅速作出“反饋,建立原型系統(tǒng)的方法,原型系統(tǒng)

9、僅包括未來系統(tǒng)的主要功能,以及系統(tǒng)重要的接口。 開發(fā)原型系統(tǒng)盡可能使用能縮短開發(fā)周期的語言和工具,3演化模型-增量模型Evolutionary Model,增量模型的基本思想,每個增量提供系統(tǒng)功能的一個子集,一個增量完成并交付,部分系統(tǒng)功能可以提前交付使用。 對增量中服務(wù)的分配取決于服務(wù)優(yōu)先次序。最高優(yōu)先權(quán)的服務(wù)首先被交付。 第一個增量往往是核心的產(chǎn)品。 開發(fā)者能通過對系統(tǒng)的經(jīng)驗幫助理解后面的增量需求和目前增量后續(xù)版本的需求變更,Incremental development advantages增量式開發(fā)過程的優(yōu)點,客戶無需等到整個系統(tǒng)的實現(xiàn)。 客戶可以將早期的增量作為原型,從中獲得對后面系

10、統(tǒng)增量的需求經(jīng)驗。 項目總體性失敗的風(fēng)險比較低。 最高優(yōu)先權(quán)的服務(wù)接受最多的測試,Example,使用增量式開發(fā)的字處理軟件 在第一個增量中發(fā)布基本的文件管理、編輯和文檔生成功能; 在第二個增量中發(fā)布更加完善的編輯和文檔生成能力; 第三個增量中實現(xiàn)拼寫和文法檢查功能; 第四個增量完成高級的頁面布局功能,4演化模型-螺旋模型Evolutionary Model,螺旋模型的基本思想,每一個螺旋周期(Spiral model sectors)包含四個部分: (1)確定目標,選擇方案,設(shè)定約束條件,選定完成本周期所定目標的策略。 (2)分析該策略可能存在的風(fēng)險。 (3)在排除風(fēng)險后,實現(xiàn)本螺旋周期的目

11、標。 (4)評價前一步的結(jié)果,并且計劃下一輪的工作,螺旋模型的特點,每一階段考慮技術(shù)風(fēng)險。 依賴于風(fēng)險評估,5形式化方法模型,轉(zhuǎn)換模型(Transformational Model)-是結(jié)合形式化軟件開發(fā)方法和程序自動生成技術(shù)的一種軟件開發(fā)模型,轉(zhuǎn)換模型,凈室模型Cleanroom Model,是一種形式化的增量開發(fā)模型。 基本思想: 力求在分析階段就消除錯誤,確保正確,然后在無缺陷或“潔凈”的狀態(tài)下實現(xiàn)軟件的制作。 “盒”(Box)-每一增量是一個形式化方式表示,凈室模型,6基于組件的開發(fā)過程,Advantages 優(yōu)勢,減少需要開發(fā)的軟件數(shù)量 降低軟件開發(fā)成本 降低風(fēng)險 軟件快速交付,小結(jié)

12、,軟件 軟件工程 軟件過程模型,小結(jié),瀑布模型 原型模型 增量模型 螺旋模型 形式化開發(fā)模型 組件開發(fā)模型,新的開發(fā)模型 RUP統(tǒng)一開發(fā)過程 敏捷開發(fā) 極限編程 RAD快速的應(yīng)用開發(fā) 設(shè)計模式,思考題1,調(diào)查目前軟件公司對軟件開發(fā)過程中存在的主要問題。 現(xiàn)代軟件的分類。 都知道哪些軟件開發(fā)的方法? 軟件工程有意義嗎? 以上問題請于本周調(diào)查,下次課提問,思考題2,為以下各系統(tǒng)提出合適的軟件過程模型,闡述理由: (1) 汽車防鎖死剎車控制系統(tǒng) (2)一個支持軟件維護的虛擬現(xiàn)實系統(tǒng) (3)大學(xué)記賬系統(tǒng),準備替換一個已存在的系統(tǒng) (4)一個位于火車站的交互式火車車次查詢系統(tǒng),第2章 軟件需求分析Req

13、uirements Analysis,需求分析的任務(wù)和分類; 需求獲取的相關(guān)技術(shù); 軟件需求分析的描述模型; 需求分析的方法; 軟件需求分析文檔; 軟件的案例需求分析,項目相關(guān)人員,涉及對項目有利益關(guān)系的人員,包括: (1)發(fā)現(xiàn)系統(tǒng)的潛在最終用戶; (2)考慮系統(tǒng)打算支持的業(yè)務(wù)過程描述以及與這些過程相關(guān)的人員; (3)可能會受到系統(tǒng)引入的影響的人員; (4)使用系統(tǒng)的客戶; (5)開發(fā)和維護系統(tǒng)的工程師和維護人員; (6)可能給系統(tǒng)添加需求的監(jiān)管機構(gòu)和認證機構(gòu)等。因此,項目相關(guān)人員可能是系統(tǒng)最終用戶和機構(gòu)管理人員、工程人員、業(yè)務(wù)專家、工會代表等等,Autoteller銀行自動柜員機系統(tǒng)(ATM

14、)的項目相關(guān)人員,當(dāng)前銀行客戶 其他銀行代表 硬件和軟件維護工程師 市場開發(fā)部 銀行管理者 柜臺職員 數(shù)據(jù)庫管理員 信息安全管理員,需求的定義,需求應(yīng)該是對系統(tǒng)應(yīng)提供的服務(wù)和所受到的約束的描述。 需求來自于用戶,同時也是經(jīng)過了開發(fā)人員抽象之后的需求,Types of requirements需求種類,User requirements用戶需求 Statements in natural language plus diagrams of the services the system provides and its operational constraints. Written for c

15、ustomers 是用自然語言加圖表的形式給出的關(guān)于系統(tǒng)需要提供哪些服務(wù)以及系統(tǒng)操作受到哪些約束的聲明,Types of requirements需求種類,System requirements系統(tǒng)需求 A structured document setting out detailed descriptions of the system services. Written as a contract between client and contractor 詳細給出系統(tǒng)將要提供的服務(wù)以及系統(tǒng)所受的約束,User requirements,Client managers System en

16、d-users Client engineers Contractor managers System architects,System requirements,System end-users Client engineers System architects Software developers,客戶管理者 系統(tǒng)最終用戶 客戶工程師 承包商管理者 系統(tǒng)體系結(jié)構(gòu)工程師,系統(tǒng)最終用戶 客戶工程師 系統(tǒng)體系結(jié)構(gòu)工程師 軟件開發(fā)人員,用戶需求,系統(tǒng)需求,用戶需求和系統(tǒng)需求描述,系統(tǒng)需求的描述方面,Functional requirements 功能性需求 Non-functional re

17、quirements 非功能性需求 Domain requirements 領(lǐng)域需求,Functional requirements功能性需求,These are statements of services the system should provide, how the system should react to particular inputs and how the system should behave in particular situations. 包括對系統(tǒng)提供的服務(wù)、如何對輸入做出反應(yīng)以及系統(tǒng)在特定條件下的行為描述,Non-functional requireme

18、nts非功能性需求,Non-functional requirements relate to emergent system properties such as reliability, response time and store occupancy. 是指不直接與系統(tǒng)具體功能相關(guān)的一類需求,與系統(tǒng)的總體特性有關(guān),如可靠性、反應(yīng)時間和存儲空間,Domain requirements 領(lǐng)域需求,These are requirements that come from the application domain of the system and reflect characteris

19、tics of that domain. 來自系統(tǒng)應(yīng)用領(lǐng)域的需求,反應(yīng)該領(lǐng)域的特點,Types of non-functional requirements,Product requirements產(chǎn)品需求 Requirements which specify that the delivered product must behave in a particular way e.g. execution speed, reliability, etc. 描述產(chǎn)品行為的需求,包括運行速度、可靠性等,Types of non-functional requirements,Organisatio

20、nal requirements機構(gòu)需求 Requirements which are a consequence of organisational policies and procedures e.g. process standards used, implementation requirements, etc. 起源于客戶所在的機構(gòu)和開發(fā)者所在的機構(gòu)中政策和規(guī)定,Types of non-functional requirements,External requirements外部需求 Requirements which arise from factors which are

21、external to the system and its development process e.g. interoperability requirements, legislative requirements, etc. 包括系統(tǒng)外部因素和開發(fā)過程,Non-functional requirement types,非功能性需求,需求分析的任務(wù),1)通過對問題及其環(huán)境的理解、分析和綜合,建立分析模型(Analysis Model)。 (2)在完全弄清用戶對軟件系統(tǒng)的確切要求的基礎(chǔ)上,用“軟件需求規(guī)格說明書”(Software requirement Specification, S

22、RS)把用戶的需求表達出來,需求分析的步驟,需求的內(nèi)容,1) 功能描述 (2) 性能描述 (3) 環(huán)境需求 (4) 界面需求 (5) 用戶或人的因素 (6) 文檔需求 (7) 數(shù)據(jù)需求 (8) 資源需求 (9) 安全保密 (10)軟件成本消耗與開發(fā)進度 (11)質(zhì)量保證,需求的特征,1. 完整性 2. 正確性 3. 可行性 4. 必要性 5. 劃分優(yōu)先級 6. 無二義性 7. 可驗證性,需求獲取技術(shù),需求獲取面臨的挑戰(zhàn)主要是對問題空間的理解、人與人之間的通信,以及需求的不斷變化,需求分析中出現(xiàn)的問題,1交流障礙 2問題的復(fù)雜性 3不完整性和不一致性,需求獲取的基本原則,1深入淺出 2以流程為主

23、線,需求獲取的常用技術(shù),跟班作業(yè) 開調(diào)查會 請專人介紹 詢問 設(shè)計調(diào)查表,請用戶填寫 查閱記錄,需求分析建模,用例建模 數(shù)據(jù)建模 過程建模,用例建模,用例是系統(tǒng)開發(fā)中用來描述系統(tǒng)需求,從用戶的角度描述系統(tǒng)的場景,概括有關(guān)參與者和用例信息的一個圖形化模型,描述了系統(tǒng)、子系統(tǒng)和類的一致的功能集合,表示了角色和用例之間的關(guān)系,表現(xiàn)為系統(tǒng)和一個或多個外部交互者(角色)得消息交互動作序列。 主要包括系統(tǒng)、用例、角色和關(guān)聯(lián),Use Case 用例圖,一個用例可描述軟件系統(tǒng)和一個外部角色(Actor)之間的一次交互。 角色-可以使人、軟件、硬件或其他與系統(tǒng)交互的實體。 組成:系統(tǒng)、用例、角色、關(guān)聯(lián),Use

24、Case 用例圖組成,用例名,系統(tǒng),用例,角色,關(guān)聯(lián),Library use-cases圖書館的用例,用例之間的關(guān)系,擴展關(guān)系 若一個用例中加入一些新的動作后構(gòu)成一個新的用例,用例之間的關(guān)系,使用關(guān)系 當(dāng)一個用例使用另一個用例時,這兩個用例構(gòu)成使用關(guān)系,用例之間的關(guān)系,組合關(guān)系 用例之間存在類似的行為,或相互之間存在必要的關(guān)系,可以將相關(guān)的用例以封裝方式加以組合,數(shù)據(jù)建模,系統(tǒng)需求分析建模就是定義系統(tǒng)處理的數(shù)據(jù)的邏輯結(jié)構(gòu)。比較廣泛采用的數(shù)據(jù)建模技術(shù)是實體-關(guān)系建模,它描述了數(shù)據(jù)實體以及實體之間的關(guān)系和相關(guān)的屬性,基本圖形,兩個實體學(xué)生和教師的關(guān)系,實體(Entity,需要一個概念來抽象地表示一

25、組類似事物的所有實例,稱這個概念為實體。是需要收集數(shù)據(jù)和存儲數(shù)據(jù)的人、地點、對象、事件或概念的類??梢詺w類為: 人Persons:代理、承包商、客戶、部門、分部、雇員、導(dǎo)師、學(xué)生、供應(yīng)商; 地點Places:銷售地區(qū)、建筑物、房間、分支辦公室、校園; 對象Objects:圖書、機器、部件、產(chǎn)品、原材料、軟件許可證、軟件包、工具、汽車模型、汽車; 事件Events:獎勵、取消、分類、飛行、開發(fā)票、訂單、注冊、續(xù)借、獲取、預(yù)定、銷售、旅行; 概念Concepts:帳號、時間段、債劵、課程、基金、資格、股票,E-R圖,描述各種數(shù)據(jù)之間的關(guān)系。 組成: 長方形-數(shù)據(jù)對象(實體) 菱形-數(shù)據(jù)之間的關(guān)系,

26、Example,狀態(tài)轉(zhuǎn)換圖(STD,描述軟件狀態(tài)的變遷。 矩形-系統(tǒng)狀態(tài); 箭頭-狀態(tài)的轉(zhuǎn)變方向,STD Example,對象-行為圖,過程建模,數(shù)據(jù)流圖從數(shù)據(jù)傳遞和加工的角度出發(fā),刻畫數(shù)據(jù)流從輸入到輸出的移動和變換過程,它能夠清晰地反映系統(tǒng)必須完成的邏輯功能,DFD數(shù)據(jù)流圖的組成,圓框-加工 箭頭-數(shù)據(jù)流向 方框-數(shù)據(jù)的源點和終點 雙杠或單杠-數(shù)據(jù)文件或數(shù)據(jù)庫,數(shù)據(jù)文件,Example,數(shù)據(jù)字典(DD,數(shù)據(jù)的三種情況: 數(shù)據(jù)項-只含一個數(shù)據(jù)或數(shù)據(jù)元素; 數(shù)據(jù)流-由多個相關(guān)數(shù)據(jù)項組成; 數(shù)據(jù)文件或數(shù)據(jù)庫,數(shù)據(jù)項,數(shù)據(jù)流,數(shù)據(jù)文件,加工說明,結(jié)構(gòu)化語言 自然語言加上結(jié)構(gòu)化的形式。 判定表或判定樹

27、 適用于表達含有復(fù)雜判斷的加工邏輯,例 判定表,例 判定樹,exercise,某校的課酬計算方案為:基本課酬20元;班級人數(shù)超過60人,增加基本課酬的10%;班級人數(shù)超過80人,增加基本課酬的20%;教師為副教授,增加基本課酬的10%;為教授,增加基本課酬的20%;見習(xí)助教,減少基本課酬的10%。請用判定表描述上述問題的加工邏輯,需求分析建模,結(jié)構(gòu)化分析模型,結(jié)構(gòu)化分析方法,SA( Structured Analysis)結(jié)構(gòu)化分析: 是使用DFD、DD、結(jié)構(gòu)化語言、判定表和判定樹等工具,來建立結(jié)構(gòu)化說明書(SRS,自頂向下、逐步細化Top-Down Stepwise Refinement,從

28、系統(tǒng)的基本模型(把整個系統(tǒng)看成一個加工)開始,逐層地對系統(tǒng)進行分解。酶分解一次,系統(tǒng)的加工數(shù)量就增多一些,每個加工的功能也更具體一些。繼續(xù)分解,直到所有的加工都足夠簡單,不必再分解為止,三層的數(shù)據(jù)流圖,1)頂層的數(shù)據(jù)流圖,2)第二層DFD圖,3)第三層DFD圖,DFD圖的基本要求,父圖和子圖平衡; 區(qū)分局部文件和局部外部項; 分解的步子應(yīng)均勻,不應(yīng)過快,可分解為24個子加工,最多不超過7個; 遵守加工編號,Example-DFD,頂層數(shù)據(jù)流圖,Example-DFD-第二層數(shù)據(jù)流圖,Example-DFD-第三層數(shù)據(jù)流圖,需求分析的建模,面向?qū)ο蠓治瞿P?面向?qū)ο蠓治龇椒?定義用例 領(lǐng)域分析

29、類/對象建模 (1)確定分析模型中的類/對象 (2)定義類的結(jié)構(gòu)與層次 (3)定義主題或子系統(tǒng) 建立對象-關(guān)系模型-對象層次模型 建立對象-行為模型-序列圖,定義用例,確定系統(tǒng)角色 (1)使用系統(tǒng)主要功能的人 (2)借助系統(tǒng)完成日常工作的人 (3)維護、管理系統(tǒng)、保證系統(tǒng)正常工作的人 (4)涉及的設(shè)備 (5)外圍系統(tǒng) (6)其他感興趣的人,發(fā)現(xiàn)一組系統(tǒng)的用例 (1)角色需要從系統(tǒng)中獲得哪些功能 (2)發(fā)生的事件需要通知系統(tǒng) (3)角色需要讀取、產(chǎn)生、刪除、修改或存儲的信息 (4)輸出、輸入的信息 (5)當(dāng)前存在的問題,類/對象建模,1)確定類/對象 (2)定義類的結(jié)構(gòu)與層次 (3)定義主題或子

30、系統(tǒng),1)確定類/對象,1)必要的信息 (2)需要的服務(wù) (3)多個屬性 (4)公共的屬性 (5)公共的操作 (6)必要的需求,考察系統(tǒng)的使用實例; 將名詞或名詞短語匯總; 分析特征,確定哪些應(yīng)包含在分析模型中,類/對象圖,2)定義類的結(jié)構(gòu)與層次,一般-特殊(泛化Generalization ) 對類進行分類,整體-部分(聚合Aggregation) 類的組成關(guān)系,對象模型的關(guān)系表示,泛化關(guān)系-一般到特殊 聚合關(guān)系-整體到部分,3)定義主題或子系統(tǒng),類模型的某個子集相互協(xié)作共同完成一組內(nèi)在功能時,可以將其定義為主題或子系統(tǒng),對象模型技術(shù),對象模型,對象-關(guān)系模型,對象-行為模型,三個模型之間的

31、關(guān)系,對象-關(guān)系模型,關(guān)系存在于任意兩個相關(guān)聯(lián)的類之間,可以通過檢查對系統(tǒng)的范圍或用例的陳述中的動詞或動詞短語導(dǎo)出。 (1)找出存在的關(guān)系網(wǎng)絡(luò),用線連接; (2)連線上表示基數(shù),User class hierarchy,Object aggregation課程的聚合對象,對象-關(guān)系圖,對象-行為模型,對象行為模型用于描述系統(tǒng)的動態(tài)行為,即系統(tǒng)如何應(yīng)對外部事件。 (1)對用例理解系統(tǒng)的交互序列; (2)找出驅(qū)動交互序列的事件; (3)為每個用例創(chuàng)建事件軌跡; (4)為對象創(chuàng)建狀態(tài)轉(zhuǎn)換圖,狀態(tài)轉(zhuǎn)換圖 事件軌跡圖,狀態(tài)轉(zhuǎn)換圖,描述系統(tǒng)狀態(tài)和事件,事件引發(fā)系統(tǒng)在狀態(tài)間的轉(zhuǎn)換,Microwave ove

32、n model,一個簡單的微波爐狀態(tài)機模型,事件軌跡圖,事件軌跡圖用于描述一個事件在各個對象之間的流動情況,可以顯示整個系統(tǒng)的狀態(tài)變化,Issue of electronic items電子科目的發(fā)放,需求分析的文檔,Introduction 引言 Glossary 術(shù)語 User requirements definition 用戶需求定義 System architecture 系統(tǒng)體系結(jié)構(gòu) System requirements specification 系統(tǒng)需求描述 System models 系統(tǒng)模型 System evolution 系統(tǒng)進化 Appendices 附錄 Inde

33、x 索引,小結(jié),需求分析的任務(wù) 需求獲取的技術(shù) 需求分析文檔 結(jié)構(gòu)化分析方法 面向?qū)ο蠓治龇椒?要求掌握的內(nèi)容,結(jié)構(gòu)化分析方法 面向?qū)ο蠓治龇椒?數(shù)據(jù)流圖 數(shù)據(jù)字典 用例圖 對象模型-ERD 狀態(tài)圖 序列圖,本次課堂練習(xí),每名學(xué)生編寫需求分析文檔; 文檔中要有數(shù)據(jù)流圖、數(shù)據(jù)字典; 還有用例圖、ERD、序列圖。 需求文檔按所給的需求分析標準文檔形式,第3章 軟件設(shè)計,設(shè)計原則 結(jié)構(gòu)化設(shè)計方法 面向?qū)ο蟮脑O(shè)計方法 系統(tǒng)詳細設(shè)計,軟件設(shè)計的任務(wù),軟件設(shè)計的任務(wù)- 把分析階段產(chǎn)生的軟件需求說明轉(zhuǎn)換成用適當(dāng)?shù)氖侄伪硎镜能浖O(shè)計文檔,軟件設(shè)計包括的內(nèi)容: 軟件系統(tǒng)的體系結(jié)構(gòu)設(shè)計; 系統(tǒng)接口設(shè)計; 數(shù)據(jù)結(jié)構(gòu)

34、設(shè)計; 軟件過程設(shè)計; 系統(tǒng)界面設(shè)計,軟件設(shè)計的概念,模塊-是一個擁有明確定義的輸入、輸出和特性的程序?qū)嶓w。 抽象(Abstraction)-軟件設(shè)計是在不同抽象級別考慮和處理問題的過程。 過程抽象、數(shù)據(jù)抽象 細化(Refinement)-分解過程。 信息隱蔽(Information Hiding)-模塊內(nèi)部的數(shù)據(jù)和過程,應(yīng)該對不需要了解這些數(shù)據(jù)與過程的模塊隱藏起來,模塊化設(shè)計,分解 任務(wù)P,分解為P1、P2兩個子任務(wù) P=P1+P2 C為問題復(fù)雜度 C(P1+P2)C(P1)+C(P2) E為完成任務(wù)所需的工作量 E(P1+P2)E(P1)+E(P2,分解,模塊獨立性(Module Inde

35、pendence,模塊獨立性-把軟件換份為模塊時遵循的標準。 度量-內(nèi)聚、耦合 內(nèi)聚-模塊內(nèi)部各個成分之間的聯(lián)系。(塊內(nèi)聯(lián)系或模塊強度) 耦合-模塊與模塊之間的聯(lián)系。(塊間聯(lián)系,內(nèi)聚(Cohesion,偶然性內(nèi)聚-塊內(nèi)各組成成分在功能上互不相關(guān)。 邏輯性內(nèi)聚-有若干個邏輯功能相似的成分組成。 時間性內(nèi)聚-由相同的執(zhí)行時間連接在一起。 過程性內(nèi)聚-一組任務(wù)必須按照某一特定次序執(zhí)行。 通信性內(nèi)聚-都使用同一種輸入數(shù)據(jù),或產(chǎn)生同一種輸出數(shù)據(jù)。 順序性內(nèi)聚-各組成部分順序執(zhí)行。 功能性內(nèi)聚-用于完成單一功能,耦合(Coupling,非直接耦合-模塊之間沒有直接的信息傳遞。 數(shù)據(jù)耦合-模塊之間傳遞的是簡

36、單變量。 特征耦合-模塊之間交換的是數(shù)據(jù)結(jié)構(gòu)。 控制耦合-模塊之間傳遞的是控制信號。 外部耦合-一組模塊訪問同一個全局變量。 公共耦合-一組模塊訪問同一個全局數(shù)據(jù)結(jié)構(gòu)。 內(nèi)容耦合-一個模塊直接調(diào)用另一個模塊的數(shù)據(jù)或直接轉(zhuǎn)移到另一個模塊內(nèi)部,系統(tǒng)結(jié)構(gòu)化,根據(jù)系統(tǒng)的分布情況可以將系統(tǒng)分解為一系列基本子系統(tǒng),每一個子系統(tǒng)都是一個獨立的軟件單元,同時識別出子系統(tǒng)之間的通信,控制模型,根據(jù)控制系統(tǒng)的各個部分之間控制關(guān)系,對系統(tǒng)進行有效地分解子系統(tǒng),可以形成集中管理、分散控制的分解模型,模塊分解,對整體軟件系統(tǒng)的結(jié)構(gòu)進行分解,可以將軟件系統(tǒng)形成層次分解的模塊結(jié)構(gòu),確定模塊的類型以及模塊之間的調(diào)用關(guān)系,體系

37、結(jié)構(gòu)的分類,容器模型 客戶機/服務(wù)器模型 分層模型,容器模型,客戶機/服務(wù)器模型,分層模型,設(shè)計方法,結(jié)構(gòu)化設(shè)計方法,用DFD圖表示的系統(tǒng)分析模型轉(zhuǎn)換為數(shù)據(jù)結(jié)構(gòu)的設(shè)計方法,SC圖組成符號,數(shù)據(jù)流圖的類型,變換型 事務(wù)型,SD結(jié)構(gòu)化設(shè)計方法,復(fù)審DFD圖,可進行修改或細化。 鑒別DFD圖的類型。 按照SD方法規(guī)定的一組規(guī)則,將DFD圖轉(zhuǎn)換為初始SC圖。 按照設(shè)計優(yōu)化原則改進初始SC圖,獲得最終SC圖,變換映射,劃分DFD圖的邊界; 建立初始SC圖的框架; 分解SC圖的各個分支,例子 EXAMPLE,第一步 劃分界限,第二步 完成第一級分解,第三步 完成第二級分解,細化SC圖的各個分支,中心加工分

38、支的分解,傳入分支的分解,傳出分支的分解,事務(wù)映射,在DFD圖上確定事務(wù)中心、接受部分、發(fā)送部分; 將DFD圖的三個部分分別映射為事務(wù)控制模塊、接受模塊、動作發(fā)送模塊; 分解和細化接受分支和發(fā)送分支,完成初始的SC圖,結(jié)構(gòu)化設(shè)計的優(yōu)化原則,分割、合并、變動模塊大小的指導(dǎo)原則 保持高扇入(Fan-in)、低扇出(Fan-out)的原則 作用域應(yīng)在控制域范圍內(nèi)的原則,Example-DFD到SC的轉(zhuǎn)化,本系統(tǒng)修改放在磁帶中的一個主文件上,對文件做修改的信息放在卡片上,該系統(tǒng)讀入一疊卡片,按卡片上的修改信息對磁帶中的紀錄作相應(yīng)修改,然后產(chǎn)生新的主文件,頂層數(shù)據(jù)流圖,第二層數(shù)據(jù)流圖,第三層數(shù)據(jù)流圖,S

39、C軟件結(jié)構(gòu)圖,過程設(shè)計的原則,清晰第一的設(shè)計風(fēng)格 結(jié)構(gòu)化的控制結(jié)構(gòu) 逐步細化的實現(xiàn)方法,An object-oriented design process面向?qū)ο笤O(shè)計過程,Define the context and modes of use of the system 了解并定義上下文和系統(tǒng)的使用模式。 Design the system architecture 設(shè)計系統(tǒng)體系結(jié)構(gòu)。 Identify the principal system objects 識別出系統(tǒng)中的主要對象。 Develop design models 開發(fā)設(shè)計模型。 Specify object interface

40、s 描述對象接口,系統(tǒng)上下文和使用模型,系統(tǒng)上下文模型是一個靜態(tài)模型,描述環(huán)境中的其他系統(tǒng); 系統(tǒng)使用模型是一個動態(tài)模型,描述系統(tǒng)如何與環(huán)境交互的,Subsystems in the weather mapping system,氣象制圖系統(tǒng)中的子系統(tǒng),Use-cases for the weather station氣象臺的用例,啟動,關(guān)機,報告,校準,測試,Use-case description報告用例的描述,報告用例的描述,體系結(jié)構(gòu)設(shè)計,可以結(jié)合體系結(jié)構(gòu)模型構(gòu)造體系結(jié)構(gòu),識別對象類,1)對系統(tǒng)的自然語言描述作文法分析。 對象和屬性是名詞,操作和服務(wù)是動詞。 (2)使用應(yīng)用領(lǐng)域中的真實實

41、體、職務(wù)、事件、交互、位置、機構(gòu)單元等。 (3)使用行為方法,對每個行為了解誰發(fā)起的和哪些實體參與了這個行為。 (4)使用基于腳本的分析識別出系統(tǒng)使用的各個腳本,并以此對其進行分析。識別出對象、屬性和操作,對象和對象類,對象是由狀態(tài)和在此狀態(tài)上的一組操作構(gòu)成的一個實體。 狀態(tài)由一組對象屬性來表示。 操作提供給其他對象相應(yīng)的服務(wù)。 對象通信通過向其他對象請求服務(wù)來實現(xiàn),Weather station object classes,Design models設(shè)計模型,Static models describe the static structure of the system in terms

42、 of object classes and relationships 靜態(tài)模型通過對象類及其之間的關(guān)系來描述系統(tǒng)的靜態(tài)結(jié)構(gòu)。 Dynamic models describe the dynamic interactions between objects. 動態(tài)模型描述系統(tǒng)的動態(tài)結(jié)構(gòu)和系統(tǒng)對象之間的交互,Examples of design models,Sub-system models 子系統(tǒng)模型 說明對象的邏輯分組,每個分組構(gòu)成一個子系統(tǒng)。靜態(tài)模型 Sequence models 序列模型 說明對象交互的序列。動態(tài)模型 State machine models狀態(tài)機模型 說明單個對象

43、如何相應(yīng)事件來改變它們的狀態(tài)。 Other models 用例模型說明系統(tǒng)中的交互,對象模型描述對象類,泛化或繼承模型說明類是如何通過對其他對象的泛化得到的,聚合模型說明對象集合是如何關(guān)聯(lián)的,Weather station subsystems,Weather station architecture氣象臺體系結(jié)構(gòu),Data collection sequence,Weather station state diagram,對象接口描述Weather station interface,數(shù)據(jù)設(shè)計,數(shù)據(jù)庫設(shè)計,圖書(圖書號,書名,作者,出版社,出版日期,單價,借出標志)讀者(借書證號,姓名,性別

44、,身份證,聯(lián)系電話,密碼) 借還書(借還時間,借還標志,圖書數(shù)據(jù)模型設(shè)計,索引的建立,主鍵-能唯一標識該結(jié)點或該條記錄。 外鍵-能對該結(jié)點與其他結(jié)點聯(lián)系的標識。 借還書(借還時間、借還標志) 外鍵-圖書、讀者,每一個數(shù)據(jù)文件結(jié)構(gòu),過程設(shè)計,為軟件中的每個模塊確定相應(yīng)的算法及內(nèi)部數(shù)據(jù)結(jié)構(gòu),獲得目標系統(tǒng)具體實現(xiàn)的精確描述,為編碼工作做好準備。 (1)圖形設(shè)計工具 (2)表格工具 (3)語言工具,程序流程圖,功能模型設(shè)計,輸入內(nèi)容-用戶對信息系統(tǒng)的錄入。 輸出內(nèi)容-信息系統(tǒng)對外的顯示或打印。 系統(tǒng)響應(yīng)-信息系統(tǒng)對用戶操作的處理過程,功能點列表,用戶界面設(shè)計,確認用戶輸入的信息 響應(yīng)的信息 出錯處理和

45、顯示信息 提供幫助和提示 處理窗口的滾動 建立功能與界面、數(shù)據(jù)庫表的關(guān)聯(lián) 建立應(yīng)用程序與界面的分離,用戶界面設(shè)計的特點,界面設(shè)計原則,設(shè)計方式比較,軟件設(shè)計說明書,范圍 數(shù)據(jù)設(shè)計 體系結(jié)構(gòu)設(shè)計 接口設(shè)計 模塊的過程設(shè)計 其他,小結(jié),軟件設(shè)計過程 體系結(jié)構(gòu)設(shè)計 接口設(shè)計 數(shù)據(jù)結(jié)構(gòu)設(shè)計 算法設(shè)計 用戶界面設(shè)計,本次要求,完成設(shè)計文檔 設(shè)計文檔中必須完成: 功能點列表 數(shù)據(jù)文件表 界面設(shè)計圖形表示(包含菜單、出錯處理、結(jié)果響應(yīng)等窗口的描述)。 對主要的函數(shù)給出流程圖描述,第4章 編碼實現(xiàn),編碼風(fēng)格 編碼語言的選擇,編碼風(fēng)格,編碼風(fēng)格,使用標準的控制結(jié)構(gòu) 有限制的使用GOTO語句 實現(xiàn)源程序的文檔化

46、滿足運行工程學(xué)的輸入輸出風(fēng)格,使用標準的控制結(jié)構(gòu),單入口、單出口標準結(jié)構(gòu) if c then s; If c then s1 else s2; Case I of a: s1; b: s2; n: sn; endcase,While c do s; for i:=m to n do s; Repeat s until c,有限制的使用GOTO-1,用GOTO 語句實現(xiàn)提前退出循環(huán); While c1 do begin if c2 then goto 20; if c3 then goto 30; end; 20: Goto 40; 30: 40,exit1:=false; exit2:=fal

47、se; While(c1) and (not exit1) and (not exit2) do Begin if c2 then exit1:=true; if c3 then exit2:=true; End If(exit1) then goto 20; If(exit2) then goto 30; 20: Goto 40; 30:. 40,有限制的使用GOTO-2,GOTO 語句用于出錯處理 boolean push(item,index,stack,errflag) int errflag,index; float item,stack100; if(index=100) goto

48、 10; errflag=0; index=index+1; stackindex=item; return(errflag); 10: errflag=1; return(errflag);,有限制的使用GOTO-3,使用GOTO語句減少重復(fù)程序段。 if p then a;b; else b; endif while q loop a;b; endloop,if p then L1: a; endif b; If q then goto l1,實現(xiàn)源程序的文檔化,有意義的變量名 適當(dāng)?shù)淖⑨?標準的書寫格式,名字,名字-非形式的、簡練的、容易記憶的。 一個變量的作用于越大,名字所攜帶的信息越

49、多。 全局變量-使用具有說明性的名字;并加以注釋。 局部變量-用短名字,Npending=0;/current length of input quene 全局變量采用大寫開頭的變量名。 如:Globle 常量用大寫字母拼寫。 如:CONSTANTS 變量的類型也應(yīng)體現(xiàn): 如:strTo,strFrom 字符串,名字,保持一致性 class UserQueue int noOfItemsInQ,frontOfTheQueue, queueCapacity; public: int noOfUserInQueue(),1)同一個詞queue分別用了 Q、Queue、queue (2) 在類型Us

50、erQueue訪問 queue.queueCapacity多余 可改為: class UserQueue int nitems, front, capacity; public: int nusers() queue.capacity+; n=queue.nusers(,名字,函數(shù)采用動作性的動詞,后面可以跟著名詞。 now=date.getTime(); putchar(/n,表達式和語句,用縮行顯示程序的結(jié)構(gòu) for(n=0;n100;fieldn+=0); *i=0; return(n); 改為: for(n=0;n100;n+) fieldn=0; *i=0; return(n,表達式

51、和語句,使用表達式的自然形式。 避免含有否定運算的條件表達式。 可以改變關(guān)系運算方向,變成肯定的。 如 if(!block_id=unblocks) 改為 if(block_id=actblks)|(block_idunblocks,表達式和語句,用加括號的方式排除二義性。 特別是C語言,關(guān)系運算符比邏輯運算符優(yōu)先級高。 if(x 分解為: if(2*kn-m) *xp=ck+1; else *xp=dk-; *x+=*xp,一致性和習(xí)慣用法,使用一致的縮排和加括號風(fēng)格; if(month=FEB) int day; nday=28; if(year%4=0) nday=29; if(dayn

52、day) legal=FALSE; 最好采用習(xí)慣用法; for(i=0;in;i+) arrayi=1.0,使用字符形式的常量,不要用整數(shù)。 if(c=65,注釋,不要大談明顯的東西。 給函數(shù)和全局數(shù)據(jù)加注釋,滿足運行工程學(xué)的輸入輸出風(fēng)格,輸入方面: (1)對輸入數(shù)據(jù)進行有效性檢驗; (2)輸入格式力求簡單、一致; (3)使用結(jié)束標志終止輸入; (4)提示“請輸入”,給出范圍和邊界值; (5)對多個輸入組合進行檢查,輸出方面: (1)對輸出數(shù)據(jù)加以說明; (2)良好的報表和報告形式; (3)在線幫助; (4)對可能產(chǎn)生重大后果的給與提示; (5)防止用戶意外非正常操作,具有防彈功能; (6)區(qū)

53、別不同用戶,適合用戶的習(xí)慣和水平; (7)系統(tǒng)能夠自動恢復(fù),編碼語言的選擇,選擇編碼語言的標準: (1)應(yīng)用領(lǐng)域 (2)算法和計算復(fù)雜性 (3)數(shù)據(jù)結(jié)構(gòu)的復(fù)雜性 (4)效率的考慮,第5章 軟件測試Software Testing,Objective of Testing Testing Methods Testing and Debugging Process of Testing,Verification: Are we building the product right The software should conform to its specification 檢查軟件是否符合它的

54、描述。 檢查系統(tǒng)是否滿足它所定義的功能和非功能的需要,檢驗與驗證Verification vs validation,Validation: Are we building the right product The software should do what the user really requires 軟件是否滿足用戶的最終需要,Verification vs validation,V&V process,Software Inspections軟件檢查 Analyse and check system representations such as requirements do

55、cumentation,design disgrams and the program source code. Software Testing軟件測試 Involves executing an implementation of the software with test data and examining the outputs of the software and its operational behaviour,Static and dynamic V&V,The V-model of development,Software inspections 軟件檢查,Involv

56、e people examining the source representation with the aim of discovering anomalies and defects Do not require execution of a system so may be used before implementation 軟件檢查不需要運行程序,可在程序完成之前進行驗證,The inspection process,Static analysis checks,程序檢查內(nèi)容,測試的基本概念Testing Concept,Testing: To find errors in pro

57、grams 發(fā)現(xiàn)程序的錯誤 Debugging: Locate and modify errors 定位和糾正錯誤,Verification and validation is concerned with establishing the existence of defects in a program 確定在程序中存在錯誤 Debugging is concerned with locating and repairing these errors 查找錯誤并修復(fù)錯誤,Testing and debugging,測試和糾錯的流程Testing and Debugging Process,

58、Testing,Testing Results,Debugging,The defect testing process,測試的種類Types of Testing,辦公桌檢查,測試方法Testing Methods,黑盒測試方法 (Black-Box) (1)等價分類法(Equivalence Partitioning) (2)邊界值分析法(Boundary Value Analysis) (3)錯誤猜測法(Error Guessing) 白盒測試方法(White-Box) (1)路經(jīng)測試法(Path Testing) (2)邏輯覆蓋法(Logic Coverage Testing,Blac

59、k-box testing,Equivalence partitioning等價分類法,Input data and output results often fall into different classes where all members of a class are related Each of these classes is an equivalence partition where the program behaves in an equivalent way for each class member,等價分類法Equivalence Partitioning,基本思想:把輸入數(shù)據(jù)的可能值劃分若干等價類,使每類中的任何一個測試用例,都能代表同一等價類中的其他測試用例。 即:從某一等價類中任選一個測試用例未能發(fā)現(xiàn)程序的錯誤,就可以合理認為在該類中的其他測試用例也不會發(fā)現(xiàn)錯誤,Equivalence partitioning,Partition system inputs and outputs into equivalence sets If input is a 5-digit integer between 10,000 and 99,999, equivalence partitions are 10, 000,Equivalence

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論