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

下載本文檔

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

文檔簡介

軟件工程內(nèi)容摘要

本書為配合國家技能型緊缺人才培養(yǎng)培訓工程并根據(jù)《計算機應用和軟件專業(yè)領域技能型緊缺人才培養(yǎng)培訓指導方案》的要求而編寫。本書針對職業(yè)院校學生的特點,充分體現(xiàn)《指導方案》中素質(zhì)為基礎、能力為本位、需求為依據(jù)、就業(yè)為導向的基本原則,教學內(nèi)容注重選擇當前軟件工程中的一些新理論、新方法與新技術,通過一個小型軟件項目為案例貫穿全書,使學生在學完后能基本掌握軟件工程的基本理論與方法在軟件項目開發(fā)中的實際應用。其主要內(nèi)容涉及軟件工程中的軟件策劃、需求分析、軟件設計、編碼實現(xiàn)、軟件測試及實施與維護等方面的內(nèi)容,考慮職業(yè)院校學生的就業(yè)定位,重點側重于詳細設計、軟件編碼、軟件測試、軟件維護這幾個方面的基本知識與技能。為保持教學內(nèi)容的先進性同時便于對教學進行科學靈活的組織,對諸如UML方法、面向對象的分析、設計與編程、面向對象軟件測試、CMM等也作了介紹。本書可以作為職業(yè)院校計算機類專業(yè)的軟件工程課程的教材或教學參考書,也可作為IT行業(yè)程序員、測試員、維護員等的培訓教材或參考書。主要內(nèi)容第1章軟件工程概述第2章系統(tǒng)策劃第3章需求分析第4章軟件設計第5章編碼第6章軟件測試第7章軟件實施與維護第8章軟件項目管理第9章軟件過程管理第一章軟件工程概述本章主要內(nèi)容1.1軟件與軟件工程1.2軟件生存周期與開發(fā)模型1.3軟件工程過程1.4軟件開發(fā)工具簡介1.5學習指南11軟件及軟件工程—軟件軟件的定義在運行中能提供所希望的功能與性能的程序

使程序能夠正確運行的數(shù)據(jù)及其結構描述軟件研制過程和方法所用的文檔

軟件的特點軟件角色的雙重性軟件不是傳統(tǒng)意義上的被制造軟件不會“磨損”,但會退化軟件都是手工定制的開發(fā)過程的復雜與費用的昂貴11軟件及軟件工程—軟件軟件的分類分類方法軟件類型按功能(1)系統(tǒng)軟件(2)支撐軟件

(3)應用軟件按版權(1)商業(yè)軟件(2)共享軟件

(3)自由(免費)軟件(4)公有領域軟件按工作方式(1)實時軟件(2)分時軟件(3)交互式軟件(4)批處理軟件按銷售方式(1)訂制軟件(2)產(chǎn)品軟件11軟件及軟件工程—軟件工程軟件危機軟件開發(fā)的生產(chǎn)率遠遠不能滿足客觀需要

開發(fā)的軟件產(chǎn)品往往不能滿足用戶的實際需要

軟件產(chǎn)品的質(zhì)量低下且可維護性差

很難估計軟件開發(fā)的進度計劃與成本

軟件神話有了軟件開發(fā)書籍,就可以解決軟件開發(fā)中的一切問題進度滯后了?好,增加程序員只要程序正確,項目就成功,文檔可有可無軟件質(zhì)量只能在正式投入運行后才知道11軟件及軟件工程—軟件工程軟件工程的定義IEEE定義:軟件工程是將系統(tǒng)化的、嚴格約束的、可量化的方法應用于軟件的開發(fā)、運行和維護,即將工程化應用于軟件。通俗地說,軟件工程是指導軟件開發(fā)和維護的一門工程學科。它采用工程的概念、原理、技術和方法,把經(jīng)過時間檢驗而證明是正確的管理技術和當前能夠得到的最好的技術方法結合起來,用于開發(fā)和維護軟件。

質(zhì)量焦點11軟件及軟件工程—軟件工程軟件工程—層次化技術過程方法軟件工程三個要素:方法、工具、過程工具11軟件及軟件工程—軟件工程軟件工程的作用【成功案例】美國聯(lián)邦速遞公司(FedEX)的管理信息系統(tǒng)

【失敗案例】英國倫敦的急救服務管理信息系統(tǒng)

軟件工程的基本原理用分階段的生存周期計劃嚴格管理

堅持進行階段評審

實行嚴格的產(chǎn)品控制

采用現(xiàn)代程序設計技術

結果應能清楚地審查

開發(fā)小組的人員應該少而精

承認不斷改進軟件工程實踐的必要性

80:20原則12軟件生存周期與開發(fā)模型—生存周期軟件生存周期人的生存周期嬰兒——幼兒——兒童——少年——青年——中年——老年——死亡

軟件的生存周期軟件定義軟件開發(fā)軟件支持問題定義可行性分析需求分析概要設計詳細設計編碼測試軟件發(fā)布軟件運行維護或退役12軟件生存周期與開發(fā)模型—生存周期軟件定義階段問題定義可行性分析立項或簽訂合同軟件開發(fā)階段需求分析軟件設計編碼與測試發(fā)布或安裝驗收軟件開發(fā)階段軟件的使用、運行軟件維護12軟件生存周期與開發(fā)模型—開發(fā)模型問題的提出—軟件工程需要解決什么問題?軟件開發(fā)模型做什么軟件?怎么做軟件?軟件如何適應變化?軟件開發(fā)過程概括,是軟件工程思想的具體化它是跨越整個軟件生存周期的各個階段所需要的全部工作與任務的結構框架

12軟件生存周期與開發(fā)模型—開發(fā)模型瀑布模型—線性順序模型可行性分析需求分析設計編碼測試支持定義階段開發(fā)階段支持階段12軟件生存周期與開發(fā)模型—開發(fā)模型瀑布模型的特點:瀑布模型的應用范圍階段間具有順序性和依賴性每個階段必須完成規(guī)定的文檔;每個階段結束前完成文檔審查,及早改正錯誤,但:開發(fā)過程一般不能逆轉,否則代價太大。實際的項目開發(fā)很難嚴格按該模型進行。客戶往往很難清楚地給出所有的需求,而該模型卻要求如此。軟件的實際情況必須到項目開發(fā)的后期客戶才能看到,這要求客戶有足夠的耐心。用戶的需求非常清楚全面,且在開發(fā)過程中沒有或很少變化

開發(fā)人員對軟件的應用領域很熟悉。用戶的使用環(huán)境非常穩(wěn)定。開發(fā)工作對用戶參與的要求很低

12軟件生存周期與開發(fā)模型—開發(fā)模型原型模型用戶測試運行原型建造/修改原型

聽取用戶意見12軟件生存周期與開發(fā)模型—開發(fā)模型原型模型的特點:原型模型的應用范圍可以得到比較良好的需求定義,容易適應需求的變化。有利于開發(fā)與培訓的同步。開發(fā)費用低、開發(fā)周期短、維護容易且對用戶更友好??蛻襞c開發(fā)者對原型理解不同準確的原型設計比較困難不利于開發(fā)人員的創(chuàng)新對所開發(fā)的領域比較熟悉而且有快速的原型開發(fā)工具項目招投標時,可以以原型模型作為軟件的開發(fā)模型進行產(chǎn)品移植或升級時,或對已有產(chǎn)品原型進行客戶化工作時,原型模型是非常適合的。

12軟件生存周期與開發(fā)模型—開發(fā)模型基于構件的開發(fā)模型特點:屬于演化式開發(fā)或迭代式開發(fā),其開發(fā)過程:客戶的交流,獲得問題的定義標識基本類計劃與風險分析類的復用或重新開發(fā)構造系統(tǒng)用戶評估采用了先進的面向對象技術。

基于構件庫的開發(fā),這是軟件復用的基礎,開發(fā)速度快。

融合了螺旋模型特征支持軟件開發(fā)的迭代方法,是一種演化型的開發(fā)技術。

13軟件工程過程軟件工程過程的概念ISO9000過程:軟件工程的三要素之一從開發(fā)到維護軟件相關產(chǎn)品所采取一系列管理活動。主要包括項目管理、配置管理、質(zhì)量管理、文檔管理等。IS09001:設計、開發(fā)、生產(chǎn)、安裝和服務的質(zhì)量保證模式

IS09002:生產(chǎn)、安裝和服務的質(zhì)量保證模式IS09003:最終檢驗和試驗的質(zhì)量保證模式。

13軟件工程過程CMM軟件能力成熟度模型

CMM(CapabilityMaturityModel)CMM的級別初始級Initial可重復級Repeatable已定義級Defined已管理級Managed優(yōu)化級Optimizing開發(fā)工具的作用與功能14軟件開發(fā)工具簡介—CASE工具計算機輔助軟件工程

CASE作用認識與描述系統(tǒng)需求

保存與管理開發(fā)過程中的信息

代碼的生成

文檔的編制與生成

軟件項目的管理開發(fā)工具的分類14軟件開發(fā)工具簡介—CASE工具分類方法按應用階段劃分

按功能劃分設計工具分析工具項目管理軟件配置質(zhì)量保證分析設計計劃工具界面開發(fā)客戶服務器Web開發(fā)IBMRational工具14軟件開發(fā)工具簡介—常用CASE工具Rational公司是專門從事CASE工具研制與開發(fā)的軟件公司,2003年被IBM公司收購。該公司所研發(fā)的Rational系列軟件是完整的CASE集成工具,貫穿從需求分析到軟件維護的整個軟件生存周期。需求分析與設計工具產(chǎn)品主要構成測試工具軟件配置管理工具RosePurifyPlusRobotClearCase北大青鳥工具14軟件開發(fā)工具簡介—常用CASE工具

北大青鳥系列CASE工具北京北大青鳥軟件有限公司開發(fā)研制的,在國內(nèi)有較高的知名度,北京大學軟件工程國家工程研究中心就設在該公司。產(chǎn)品主要構成面向對象軟件開發(fā)工具集

JBOO構件庫管理系統(tǒng)

JBCLMS項目管理與質(zhì)量保證

JBCMJBPMJBCCM軟件測試系統(tǒng)Safepro微軟版本管理器—VSS14軟件開發(fā)工具簡介—常用CASE工具版本管理是軟件配置管理中的核心工作,由Microsoft公司開發(fā)的VisualSourceSafe6.0使用非常廣泛而且很容易獲得。文件檢入與檢出產(chǎn)品主要功能版本控制

文件的拆分與共享權限管理本書案例介紹—教師教學網(wǎng)絡測評系統(tǒng)15學習指南—學習案例

為實現(xiàn)教學質(zhì)量的量化考核,借此評價教師的教學水平并有針對性的提高教學質(zhì)量,某高校開發(fā)了基于校園網(wǎng)的教學質(zhì)量網(wǎng)上測評系統(tǒng)四大功能模塊數(shù)據(jù)采集模塊,學生對一個學期中所學課程的各任課教師的教學水平及師德兩個方面給予的百分制評價分值數(shù)據(jù)統(tǒng)計模塊,根據(jù)教務處規(guī)定的統(tǒng)計方法統(tǒng)計出每位任課教師在一個學期中的教學水平及師德的最終測評得分。數(shù)據(jù)查詢模塊,查詢?nèi)H握n教師的最終得分及名次,還能夠查詢各個班級的學生對任課教師的教學水平及師德的評分情況。輔助功能模塊,包括基礎數(shù)據(jù)的管理、測評類型的管理等。

本書案例介紹—教師教學網(wǎng)絡測評系統(tǒng)15學習指南—學習案例系統(tǒng)運行界面—瀏覽器端:本書案例介紹—教師教學網(wǎng)絡測評系統(tǒng)15學習指南—學習案例系統(tǒng)運行界面—服務器端:第二章系統(tǒng)策劃這個項目是做還是不做呢?還是先去做一下市場調(diào)研或與客戶談談簽約的事吧!2.1可行性研究2.2軟件項目計劃本章主要內(nèi)容21可行性研究問題的定義問題定義確定軟件開發(fā)項目必須完成的目標。其關鍵問題是:“要解決什么問題?”含義主要內(nèi)容問題的背景、總體要求與目標、類型范圍、功能規(guī)模、實現(xiàn)目標的方案、開發(fā)的條件、環(huán)境要求等問題定義報告應包括內(nèi)容

項目名稱

使用方對問題的概括定義項目的目標項目的規(guī)模21可行性研究問題的定義案例分析

某校在校生近5000人,每學期在期中都要進行一次對教師的教學質(zhì)量測評,要求所有學生都要參加。以前測評的方式都是手工操作,由教務處發(fā)出書面問卷調(diào)查表,每個同學填寫完成后交回到教務處。然后教務處再使用手工的方法對問卷進行統(tǒng)計匯總,最后得出學生對每一位教師的總體評價。這種方法一方面浪費了大量的財力、人力,另一方面統(tǒng)計繁瑣且容易出錯??紤]到現(xiàn)在學校校園網(wǎng)已經(jīng)建成,為節(jié)省開支,提高效率,學校決定委托計算機系開發(fā)一套基于校園網(wǎng)的《教師教學網(wǎng)絡測評系統(tǒng)》

1、問題的提出21可行性研究問題的定義案例分析2、問題分析

系統(tǒng)分析人員經(jīng)過與學校教務部門及各相關單位進行充分的調(diào)查后,了解了該項目的一些背景資料與基本要求。教師測評分兩大部分,一是師德測評;二是教學質(zhì)量測評。師德測評有4項指標,教學質(zhì)量測評有14項指標。系統(tǒng)要實現(xiàn)的目標是:

?所有學生在指定時間內(nèi)在指定機房的計算機上完成對任課教師的測評打分,測評過程全部采用選擇的方法,不需要輸入任何信息

?所有的測評數(shù)據(jù)保存在學校中心服務器上,有較為嚴格的安全措施

?系統(tǒng)能對所有的數(shù)據(jù)進行統(tǒng)計匯總,得出每一位教師的測評結果,并能進行排序、輸出。

……系統(tǒng)開發(fā)的大體費用在1.2萬元左右,開發(fā)周期大約6個人月。

21可行性研究問題的定義案例分析3、系統(tǒng)定義報告根據(jù)以上分析,形成如下的系統(tǒng)定義報告。

案例文檔之一——系統(tǒng)定義報告用戶單位:XX學校教務處負責人:XXX開發(fā)單位:XX學校計算機系分析員:XXX項目名稱:基于校園網(wǎng)的教學質(zhì)量測評系統(tǒng)問題概述:教師教學質(zhì)量測評每學期必須進行一次,原有的手工方法存在資源浪費、效率極低、結果不準確等問題?!?其它的相關說明)項目目標:開發(fā)一個效率高且相對通用的教師教學網(wǎng)絡測評系統(tǒng)。項目規(guī)模:開發(fā)成本大約1.2萬元,開發(fā)周期約6個人月??尚行匝芯浚航ㄗh進行一周,費用不超過500元。21可行性研究可行性研究的任務與步驟一、可行性研究的任務

2、經(jīng)濟可行性

3、社會因素的考慮分析成本——收益與短期效益——長遠利益這兩個方面。要作出投資的估算和系統(tǒng)投入運行后可能獲得的經(jīng)濟效益或可節(jié)約的費用估算。分析利用現(xiàn)有的技術能否實現(xiàn),能否解決系統(tǒng)中的技術難題,所開發(fā)的系統(tǒng)能否達到所要求的功能和性能,系統(tǒng)對技術人員的要求,現(xiàn)有的技術人員能否勝任,開發(fā)所需要的軟件與硬件能否如期得到等

1、技術可行性

主要考慮的是市場、政策與法律方面的問題

21可行性研究可行性研究的任務與步驟二、可行性研究的步驟1、重新檢查系統(tǒng)定義報告中相關內(nèi)容,明確對目標系統(tǒng)限制與約束。

2、研究目前正在使用的系統(tǒng),找出其基本功能和所需要的基本信息,繪制系統(tǒng)流程圖。

3、設想新系統(tǒng)高層邏輯模型,分析歸納現(xiàn)有系統(tǒng),最后建造新物理系統(tǒng)。

4、導出各種實現(xiàn)方案并對方案進行評價

5、推薦可行性方案6、編寫可行性研究報告21可行性研究技術可行性分析技術可行性分析的三個方面

1、在給定的時間內(nèi)能否實現(xiàn)系統(tǒng)定義中的功能。2、軟件的質(zhì)量如何?如實時性、正確性和精確性。3、軟件的生產(chǎn)率如何?高生產(chǎn)率意味著利潤。做得了嗎?做得好嗎?做得快嗎?

先分析21可行性研究技術可行性分析

在進行技術可行性分析時,一個重要的內(nèi)容是對現(xiàn)有系統(tǒng)與擬開發(fā)的系統(tǒng)繪制系統(tǒng)流程圖。系統(tǒng)流程圖中所用的符號與程序設計語言中的程序流程圖所用的符號類似。但系統(tǒng)流程圖與程序流程圖不同,系統(tǒng)流程圖表達的是信息在系統(tǒng)中各個部件之間的流動情況,而程序流程圖表達的是程序對信息進行加工處理的控制過程

系統(tǒng)流程圖21可行性研究技術可行性分析符

號名稱含

義處理能改變數(shù)據(jù)或數(shù)據(jù)位置的加工或部件輸入/輸出廣義的不指明具體設備的輸入與輸出連接在同一頁上指明轉到圖的另一部分或從圖的另一部分轉來換頁連接指轉到另一頁或從另一頁轉來數(shù)據(jù)流連接其他符號,指明數(shù)據(jù)的流動方向文檔通常表示打印輸出系統(tǒng)流程圖中的常用符號

系統(tǒng)流程圖中的常用符號

21可行性研究技術可行性分析聯(lián)機存儲任何種類的聯(lián)機存儲磁盤磁盤的輸入/輸出,也表示存儲在磁盤上的數(shù)據(jù)庫或文件人工輸入在脫機情況下人工輸入數(shù)據(jù),如填寫表格人工操作人工完成的操作,如在表格上的簽名通信鏈路通過通信鏈路傳送數(shù)據(jù)測評數(shù)據(jù)庫測評設置測評人員管理人員數(shù)據(jù)處理數(shù)據(jù)提交驗證驗證測評測評結果教師教學網(wǎng)絡測評系統(tǒng)流程圖

21可行性研究技術可行性分析21可行性研究經(jīng)濟可行性分析經(jīng)濟可行性分析

1.成本分析

2.收益分析辦公成本

人員成本資源成本其它成本貨幣的時間價值純收入

如果從經(jīng)濟可行性的角度分析得出純收入小于或等于零的結論,則這個項目是不能投資的

最難準確核算

純收入=總收入折現(xiàn)-總成本折現(xiàn)P=F(1+i)-n

稱為折現(xiàn)21可行性研究經(jīng)濟可行性分析常用成本估算策略1、在項目后期進行估算,即完全精確核算2、基于已經(jīng)完成的類似項目進行估算3、使用相對簡單的分解技術以生成項目成本及工作量的估算4、使用一個或多個經(jīng)驗模型進行軟件成本及工作量的估算估算不能選擇比較切實可行兩種常用策略21可行性研究經(jīng)濟可行性分析兩種成本估算方法代碼行法(LOC)功能點法(FP)每行代碼的平均成本乘以程序的行數(shù)采用軟件所提供的功能來測量的21可行性研究案例分析(可行性研究)可行性研究最終生成可行性研究報告案例文檔之二——可行性研究報告1.引言1.1編寫目的本報告分析了《教師教學網(wǎng)絡測評系統(tǒng)》開發(fā)的可行性,請院領導審閱并對是否進行該系統(tǒng)的開發(fā)做出批示。1.2項目背景建議進行《教師教學網(wǎng)絡測評系統(tǒng)》的開發(fā)。(背景介紹略)我院計算機系具備進行該軟件系統(tǒng)開發(fā)的能力并承擔本軟件系統(tǒng)的開發(fā)與維護工作。該軟件系統(tǒng)由我院教務處使用。……詳見教材22軟件項目計劃系統(tǒng)定義報告

用戶的需求報告

可行性研究報告

項目開發(fā)計劃及相關的一些專題計劃

如:測試計劃、質(zhì)量保證計劃、配置管理計劃、人員培訓計劃、系統(tǒng)安裝計劃

22軟件項目計劃軟件項目計劃的主要內(nèi)容制訂方法軟件項目計劃資源計劃

軟件估算計劃進度安排計劃人力資源

可復用的構件開發(fā)環(huán)境高層管理人員

項目經(jīng)理

開發(fā)人員客戶、最終用戶軟件/硬件環(huán)境

采用任務分解技術對軟件的規(guī)模與工作量進行估算,并將總的開發(fā)費用分配到開發(fā)的各個階段中

軟件規(guī)模工作量進度成本進度安排要確定最終的軟件交付日期,并在限定的日期內(nèi)安排和分配工作量;或者在合理復用各種資源分配工作量的基礎上確定最終交付日期。

其它專題計劃如質(zhì)量保證計劃、配置管理計劃、里程碑及評審計劃、測試計劃等

22軟件項目計劃案例分析(軟件項目開發(fā)計劃書)案例文檔之三—軟件項目開發(fā)計劃書1.引言1.1編寫目的為保證《教師教學網(wǎng)絡測評系統(tǒng)》的開發(fā)成功,按期交付使用,特編寫項目開發(fā)計劃,請參與開發(fā)的人員遵照執(zhí)行。1.2項目背景(略)1.3定義《教師教學網(wǎng)絡測評系統(tǒng)》以下簡稱《測評系統(tǒng)》。

。。。。。詳見教材第三章需求分析本章主要內(nèi)容3.1需求分析概述3.2結構化分析3.3面向對象分析3.4UML概述31需求分析概述--需求分析的重要性

需求分析是發(fā)現(xiàn)、求精、建模、規(guī)格說明和復審的過程;需求分析是系統(tǒng)設計的基礎,關系到程的成敗和軟件產(chǎn)品的質(zhì)量。重要性需求獲取困難,原因有三一是用戶需求的動態(tài)性(不穩(wěn)定性)二是需求的模糊性(不準確性)三是需求必須得到用戶的確認,否則毫無意義31需求分析概述—需求分析的任務1、確定對系統(tǒng)的綜合要求:系統(tǒng)界面要求、系統(tǒng)功能要求、系統(tǒng)性能要求、完全性可靠性保密性要求、系統(tǒng)運行要求、異常處理要求、將來可能提出的要求、分析系統(tǒng)的數(shù)據(jù)要求。

2、分析系統(tǒng)的數(shù)據(jù)要求

3、異出系統(tǒng)的邏輯模型

4、修正項目開發(fā)劃

5、開發(fā)原型系統(tǒng)需求分析任務需求工程需求開發(fā)需求管理需求獲取需求分析編寫需求文檔需求確認需求工程層次分解圖31需求分析概述--需求分析的過程與方法一、需求分析過程需求獲取用戶概要信息業(yè)務需求功能需求用戶需求非功能性需求可行性報告系統(tǒng)定義報告系統(tǒng)分析員程序員分析調(diào)研座談法

調(diào)查表法

觀察法31需求分析概述--需求分析的過程與方法需求分析獲取數(shù)據(jù)分析、處理目標邏輯模型需求獲取系統(tǒng)分析員從數(shù)據(jù)流和數(shù)據(jù)結構出發(fā),找出系統(tǒng)各元素之間的聯(lián)系、接口特征及設計限制、能否滿足功能需求31需求分析概述--需求分析的過程與方法系統(tǒng)分析員需求規(guī)格說明書編寫目標系統(tǒng)的基本描述

系統(tǒng)各項需求

系統(tǒng)限制及條件

系統(tǒng)數(shù)據(jù)定義

……需求分析結果需求文檔編寫31需求分析概述--需求分析的過程與方法評審、驗證的四個方面一致性完整性現(xiàn)實性有效性所有需求必須一致,不能前、后和相互矛盾說明書應包括用戶需求的每一方面在現(xiàn)有基礎上可實現(xiàn)必須證明需求有效,能解決用戶提出的問題需求評審與確認31需求分析概述--需求分析的過程與方法31需求分析概述--需求分析的過程與方法二、需求分析的方法分析方法結構化分析方法面向對象的分析方法面向數(shù)據(jù)的方法,以數(shù)據(jù)流為中心。其核心概念包括:進程、數(shù)據(jù)流、數(shù)據(jù)存儲、外部實體、數(shù)據(jù)組和數(shù)據(jù)元素。有代表性的模擬工具有:數(shù)據(jù)流圖、數(shù)據(jù)字典、原始進程規(guī)格說明。

面向對象分析以對象及其服務作為建模標準,比較自然,對象也具有相對的穩(wěn)定性。主要模擬的元素有:對象、類、屬性、關系、方法、消息傳遞、用例等。其主要原理包括分類、繼承、層次、信息隱藏、匯集關系等?;舅枷胱皂斚蛳轮饘臃纸饨Y構化分析(StructuredAnalysis)它是一種面向數(shù)據(jù)流的需求分析方法,適用分析大型數(shù)據(jù)處理系統(tǒng),是一種簡單、實用的方法。32結構化分析軟件系統(tǒng)(S)D1D2D3…Dn問題域DiP1P2P3…Pn問題PjF1F2F3…Fn問題域問題行為(功能)對應于軟件子系統(tǒng)對應于子軟件的軟構件對應于軟件子系統(tǒng)32結構化分析自頂向下需求分析模型圖S={D1,D2,D3,…Dn}Di={P1,P2,P3,…Pm}Pj={F1,F(xiàn)2,F(xiàn)3,…Fk}概念是描述數(shù)據(jù)信息的集合,是對系統(tǒng)中所有數(shù)據(jù)元素定義的集合。包含信息數(shù)據(jù)、控制項、數(shù)據(jù)存儲或外部實體的主要名稱和別名使用數(shù)據(jù)和對象的列表、使用對象的方式描述數(shù)據(jù)或控制內(nèi)容的符號關于數(shù)據(jù)類型、預置值、限制等其他補充信息32結構化分析--數(shù)據(jù)字典一、定義32結構化分析--數(shù)據(jù)字典二、數(shù)據(jù)項的定義數(shù)據(jù)三種基本類型順序選擇循環(huán)即以確定次序連接兩個或多個分量從兩個或多個可能的元素選取一個即把指定的分量重復零次或多次算符意義=等價于或定義為+連接兩個分量[]或(從方括號內(nèi)列出的若干個分量中選擇一個),用“|”號分開供選擇分量{}重復(重復花括號內(nèi)的分量)()可選(圓括號內(nèi)的分量可有可無)數(shù)據(jù)字典符號三、數(shù)據(jù)字典舉例教師測評系統(tǒng)中,數(shù)據(jù)字內(nèi)部分內(nèi)容測評子項得分={測評子項編號+{子項得分}}學生評測數(shù)據(jù)={序號+教師姓名+{所任課程}+{測評子項得分}}以測評子項得分為單位的評測數(shù)據(jù)記錄={學期+被評對象編號+測評類型編號+評測者區(qū)別編號+測評子項名稱+測評子項所得分值}以測評類型得分為單位的評測數(shù)據(jù)記錄={學期+被評對象編號+測評類型編號+評測者區(qū)別編號+本測評類型所得分值}被評對象各測評類型的得分記錄={學期+被評對象編號+測評類型編號+測評類型得分+本測評類型占總分的比率}32結構化分析--數(shù)據(jù)字典定義數(shù)據(jù)流變換數(shù)據(jù)的處理數(shù)據(jù)存儲數(shù)據(jù)的源/宿32結構化分析--數(shù)據(jù)流圖數(shù)據(jù)流圖(DFD)是一種圖形化技術,它描繪信息和數(shù)據(jù)從輸入到輸出的過程中所經(jīng)受的變換。

符號數(shù)據(jù)流圖說明:描繪“做什么”,不考慮“怎么做”箭頭:數(shù)據(jù)流圖和程序圖中用箭頭表示的控制流有本質(zhì)不同,不能混淆。在數(shù)據(jù)流圖中應該描繪所有可能的數(shù)據(jù)流向,而不應該描繪出現(xiàn)某個數(shù)據(jù)流的條件。處理:處理并不一定是一個程序。一個處理框可以代表一系列程序、單個程序或者程序的一個模塊,也可代表一個人工處理過程,如用戶目視檢查數(shù)據(jù)正確性。數(shù)據(jù)存儲:一個數(shù)據(jù)存儲并不等同于一個文件,它可以表示一個文件、文件的一部分、數(shù)據(jù)庫的元素或記錄的一部分等;數(shù)據(jù)可以存儲在磁盤、磁帶、磁鼓、主存、微縮膠片、穿孔卡片及其他任何介質(zhì)上(包括人腦)。數(shù)據(jù)存儲和數(shù)據(jù)流都是數(shù)據(jù),僅僅所處的狀態(tài)不同。數(shù)據(jù)存儲是處于靜止狀態(tài)的數(shù)據(jù),數(shù)據(jù)流是處于運動中的數(shù)據(jù)。32結構化分析--數(shù)據(jù)流圖32結構化分析--數(shù)據(jù)流圖教師教學網(wǎng)絡測評系統(tǒng)數(shù)據(jù)流圖統(tǒng)計查詢學生評測數(shù)據(jù)提交并存儲以測評子項得分為單位評測數(shù)據(jù)記錄以測評類型得分為單位評測數(shù)據(jù)記錄被評對象各測評類型的得分記錄被評對象各測評子項得分記錄以評測類型為單位的測評表案例狀態(tài)轉換圖簡稱狀態(tài)圖,描述的是系統(tǒng)的狀態(tài)及引系統(tǒng)狀態(tài)轉換的事件,可用來表示系統(tǒng)的行為。狀態(tài)圖指出了作為特定事件的結果將執(zhí)行哪些動作(如處理數(shù)據(jù))。所以說,狀態(tài)圖提供了行為建模機制。狀態(tài)1do:行為1初始事件狀態(tài)2do:行為2事件[條件1]結束事件表示從一個狀態(tài)到另一個狀態(tài)的轉換,箭頭的方向表示轉換的方向。表示狀態(tài)。定義符號狀態(tài)圖示例32結構化分析--狀態(tài)轉換圖軟件需求規(guī)格說明闡述一個軟件系統(tǒng)必須提供的功能和性能以及它所要考慮的限制條件,它不僅是系統(tǒng)測試和用戶文檔的基礎,也是所有子系列項目規(guī)劃、設計和編碼的基礎。它應該盡可能完整地描述系統(tǒng)預期的外部行為和用戶可視化行為。除了設計和實現(xiàn)上的限制,軟件需求規(guī)格說明不應該包括設計、構造、測試或工程管理的細節(jié)。說明格式見教材32結構化分析--需求規(guī)格說明書33面向對象的分析

面向對象分析方法的核心是利用面向對象的概念和方法為軟件需求建造模型。它包含面向對象的圖形語言機制以及用于指導需求分析的面向對象的方法學。本節(jié)主要介紹面向對象的概念、面向對象方法及面向對象分析過程。33面向對象的需求分析--面向對象的概念面向對象=對象+分類+繼承+通信對象對象是現(xiàn)實世界中個體或事物的抽象表示,它封裝了特殊的屬性(數(shù)據(jù))和行為方法。例如,大型客機可視為對象,它具有位置、速度、顏色、容量等屬性,對于該對象可施行起飛、降落、加速、維修等操作,這些操作將或多或少地改變飛機的屬性值(狀態(tài))。

類類是具有相同屬性和操作的一組相似對象的抽象例如,飛行器類是所有能夠飛行的器械的抽象(如各種飛機、航天器等),它可以包含位置、速度、顏色等屬性,同時也具有起飛、降落、加速等操作。顯然類是一個支持繼承的抽象數(shù)據(jù)類型,而對象就是類的實例。33面向對象的需求分析--面向對象的概念實例是由某個特定的類所描述的一個具體的對象例如,圓具有半徑和圓心等屬性,它是一個抽象類,可用circle類來定義,有許多不同半徑和不同圓心的具體的圓,它們是類的一個個實例。33面向對象的需求分析--面向對象的概念屬性是類或對象中所定義的數(shù)據(jù),它是描述客觀世界實體靜態(tài)特征的數(shù)據(jù)項。當類被實例化而形成具體的對象后,它不僅包含類所具有的一些屬性,而且還有自己所特有的屬性值例如,Circle類中定義的代表圓心坐標、半徑、顏色等的數(shù)據(jù)成員,就是圓類所具有的屬性,當實例一個具體的圓后,其屬性也必然存在,還可能增加一些特殊的屬性。33面向對象的需求分析--面向對象的概念方法方法是對象所能執(zhí)行的操作,也就是類中所定義的服務。方法描述了對象執(zhí)行操作的算法,響應消息的方法在C++語言中把方法稱為成員函數(shù)。例如在圓的對象中可以定義一個方法GetColor(),用來取得圓的顏色。33面向對象的需求分析--面向對象的概念消息就是要求某個對象執(zhí)行在定義它的那個類中所定義的某個操作的規(guī)格說明。通常,一個消息由以下三部分組成:

?接收消息的對象;

?消息選擇符即消息名;

?零個或多個變元。例如,MyCircle是一個半徑4cm、圓心位于(100,200)的Circle類,也就是一個實例,當要求它以綠顏色在屏幕上顯示自己時,在C++語言中應該向它發(fā)下列消息:MyCircle.Show(GREEN);

其中,MyCircle是接受消息的對象名,Show是消息選擇符(即消息名),圓括號內(nèi)的GREEN是消息的變元。當Mycircle接收到這個消息后,將執(zhí)行在Circle類中所定義的Show操作。33面向對象的需求分析--面向對象的概念封裝所謂封裝就是把某個事物包起來,使外界不知道該事物的具體內(nèi)容。在面向對象的程序中,把數(shù)據(jù)和實現(xiàn)操作的代碼集中起來放在對象內(nèi)部。

*

數(shù)據(jù)與方法代碼的內(nèi)部細節(jié)對外界隱藏,這樣對其的任何改變可能引起的副作用只能作用在內(nèi)部,不會傳播。

*封裝是軟件復用的基礎。*被封裝對象間的接口大大地簡化了,對象之間通過消息聯(lián)系它時不再關心對象內(nèi)部的數(shù)據(jù)結構,系統(tǒng)的耦合度降低了。

含義優(yōu)點33面向對象的需求分析--面向對象的概念繼承含義分類類之間的繼承關系是現(xiàn)實世界中遺傳關系的直接模擬,它表示類之間的內(nèi)在聯(lián)系以及對屬性和操作的共享,即子類可沿用父類(被繼承)的某些特征。當然也可以具有自己獨有的屬性和操作。

單重繼承

多重繼承子類僅從一個父類繼承屬性和行為,而且子類可以覆蓋父類的部分屬性和方法子類可從多個父類繼承屬性和方法33面向對象的需求分析--面向對象的概念類繼承實例汽車類轎車類貨車類商用轎車家用轎車汽車是抽象層次較高的概念,在汽車類的基礎上可以分出轎車類與貨車類等,如果再細分,還可在轎車類的基礎上分出商用轎車與家用轎車等。由于商用轎車與家用轎車作為轎車在絕大多數(shù)的屬性和行為上是一致的,可以把轎車類看成是家用轎車的父類,而家用轎車這個子類繼承了父類所擁有的屬性與行為,并在父類的基礎上加入了特殊化的屬性與行為而形成了新的類。在類的層次結構中,相對上層的是超類(superclass),相對下層的是子類(subclass)

33面向對象的需求分析--面向對象的概念33面向對象的需求分析--面向對象方法簡介面向對象方法支持三種基本的活動

識別對象和類描述對象和類之間的關系通過描述每個類的功能定義對象的行為。面向對象方法Booch方法:提出面象對象的軟件工程的概念OMT方法:提出面象對象的建模技術方法OOSE方法:用例貫穿于軟件整個開發(fā)過程UML在Booch方法、OMT方法和OOSE方法的基礎上推出了統(tǒng)一的建模語言(UML),1997年被國際對象管理組織(OMG)確定為標準的建模語言33面向對象的需求分析--面向對象分析過程

面向對象方法實際上是一整套的軟件開發(fā)方法,它包括面向對象的分析OOA、面向對象的設計OOD、面向對象的編程OOP、面向對象的測試OOT等,可以看出面向對象方法可以貫穿軟件開發(fā)的整個過程。

OOA方法的關鍵,是識別問題域內(nèi)的對象,并分析它們相互間的關系,最終建立起問題域的簡潔、精確、可理解的正確模型。這是面向對象分析的首要任務

在實際工作中,建模的步驟并不一定嚴格按照前面講述的次序進行

OOA分析過程分析用戶需求識別類與對象

確定對象的內(nèi)部特征

識別對象之間的關系

定義主題詞

系統(tǒng)分析員應該深入地理解用戶需求,抽象出目標系統(tǒng)的本質(zhì)屬性,并用模型準確表示來;另外要向領域專家學習。確定問題域中的類和對象

確定對象的屬性的操作分類關系(一般/特殊)、組成關系(整體/部分),還有反映對象屬性之間聯(lián)系的實例連接、反映對象行為之間依賴關系的消息等

概念上把大型的、復雜的系統(tǒng)包含的內(nèi)容分解成若干個范疇

33面向對象的需求分析--面向對象分析過程34UML概述1997年UML1.1被對象管理組織OMG確定為標準建模語言是軟件工程領域最重要的、具有劃時代重大意義的事件。

UML是一種定義良好、易于表達、功能強大且普遍適用的標準的圖形化建模語言,用它可以簡明、準確地為目標系統(tǒng)建立模型。它融入了軟件工程領域的新思想、新方法和新技術。它的作用域不限于支持面向對象的分析與設計,還支持從需求分析開始的軟件開發(fā)的全過程。34UML概述--UML的結構一、UML中的基本構造塊——UML建模的積木塊構成UML模型的基本構造塊有三種積木元素或積木組合體,即:

反應的是類與類之間聯(lián)系的方法與性質(zhì),關系有依賴、關聯(lián)、繼承、實現(xiàn)和聚合5種

圖是軟件系統(tǒng)在不同角度上的投影,它是一組元素的表示,包含了事物及其關系的組合。UML有九種圖事物是UML模型中的靜態(tài)元素,UML中共有11種不同的事物

事物關系圖序號事物名稱語義及表示1類就是面向對象方法中的類,用具有上、中、下三部分的矩形表示。2接口一個類或一個構件的服務的操作集,用一個帶有名稱的圓表示。3協(xié)作表示多個元素的交互,用一個僅包含名稱的虛線橢圓表示。4用例涉及系統(tǒng)的參與者的一組動作序列(可以是人、設備或其他系統(tǒng)),用僅包含名稱的實線橢圓表示。5主動類擁有進程或線程的類,用外框線加粗的類表示。6構件物理上可替代的軟部件,用帶有小方框包含名稱的矩形表示7節(jié)點一般是網(wǎng)絡中的服務器,用包含名稱的立方體表示。8交互一組對象間的交換消息,用包含操作名的有向線段表示。9狀態(tài)機對象或交互在其生存周期內(nèi)呼應其事件而經(jīng)歷的狀態(tài)序列,用包含名稱的圓角矩形表示。10包UML模型的組織元素,用包含名稱的左上角帶有一個小矩形的大矩形表示。11注釋對UML模型的解釋,用包含注解內(nèi)容的右上角為折角的矩形表示UML中的“事物”

34UML概述--UML的結構二、UML中的規(guī)則——UML建模的“粘合劑”

UML中的規(guī)則是為了將UML中的構造塊有機地組裝在一起形成一個結構良好的模型而對事物進行描述的語義規(guī)則。

5種規(guī)則

1、為事物、關系命名的命名規(guī)則2、給一個名字以特定含義的范圍規(guī)則3、使名字可見或如何使用的可見性規(guī)則4、描述事件正確、一致地相互聯(lián)系的完整性規(guī)則5、描述運行或模擬動態(tài)模型含義的執(zhí)行規(guī)則

34UML概述--UML的結構三、應用于UML的通用機制——UML模型的圖紙說明為了對UML模型進行進一步的說明,同時增強其表達能力,UML提供了4種在整個語言中可以一致應用的“通用機制”,可以認為是對UML模型的圖紙說明四種機制規(guī)格說明

修飾通用劃分擴展機制UML圖形每個部分后面的語法語義描述UML表示法中每個元素都有一個基本符號UML構造塊有兩種劃分,即類與對象、接口與實現(xiàn)提高UML語言表達能力,它包含構造型、標記值和約束等3種類型34UML概述--UML的結構34UML概述--UML的圖UML主要用圖來表達模型的內(nèi)容,而圖又由代表模型元素的圖形符號組成。學會使用UML的圖,是學習、使用統(tǒng)一建模語言UML的關鍵。

UML的重要內(nèi)容可以由下列五類圖(共9種圖形)UML圖用例圖(Use-casediagram)靜態(tài)圖(Staticdiagram)

行為圖(Behaviordiagram)交互圖(Interactivediagram)實現(xiàn)圖(Implementationdiagram)34UML概述--UML的應用UML的目標是用面向對象的圖形方式來描述任何類型的系統(tǒng),因此,具有很寬的應用領域。其中最常用的是建立軟件系統(tǒng)模型,但是它同樣也可以用于描述非計算機軟件的其他系統(tǒng),如機械系統(tǒng)、商業(yè)系統(tǒng)、企業(yè)機構或業(yè)務過程、處理復雜數(shù)據(jù)的信息系統(tǒng)、具有實時要求的工業(yè)系統(tǒng)或工業(yè)過程等??傊?,UML是一個通用的標準建模語言,可以為任何具有靜態(tài)結構和動態(tài)行為的系統(tǒng)建立模型。UML適用于系統(tǒng)開發(fā)全過程

需求分析

分析設計編碼測試捕獲用戶的需求、用例建模用UML的邏輯視圖和動態(tài)視圖來描述問題域中的基本概念(例如抽象、類和對象等)和機制。類圖描述系統(tǒng)的靜態(tài)結構,合作圖、順序圖、活動圖和狀態(tài)圖描述系統(tǒng)的動態(tài)行為。把分析階段的結果擴展成技術解決方案,加入新的類來定義軟件系統(tǒng)的技術方案細節(jié)。設計階段用和分析階段類似的方式使用UML。這個階段的任務是把來自設計階段的類轉換成某種面對象程序語言的代碼(如VB、C++、Java等)UML模型可作為測試階段的依據(jù)。單元測試使用類圖和類規(guī)格說明;集成測試使用構件圖和合作圖;系統(tǒng)測試使用用例圖來驗證系統(tǒng)的行為34UML概述--UML的應用一、UML的應用領域二、UML的建模機制UML9個模型UML9種圖UML5個視圖業(yè)務模型、領域模型、用例模型、分析模型、設計模型、過程模型、部署模型、實現(xiàn)模型、測試模型

用例視圖、設計視圖、進程視圖、實現(xiàn)視圖、實施視圖用例圖、靜態(tài)圖(包括類圖、對象圖和包圖)、行為圖(包括狀態(tài)圖和活動圖)、交互圖(包括順序圖和協(xié)作圖)、實現(xiàn)圖(構件圖和配置圖)34UML概述--UML的應用靜態(tài)建模動態(tài)建模

反映的是目標系統(tǒng)的靜態(tài)數(shù)據(jù),用例圖、類圖、對象圖、包、構件圖、配置圖等是靜態(tài)建模機制,其中尤以用例圖和類圖最為重要。

強調(diào)的是系統(tǒng)的行為,動態(tài)建模所建立的模型或者可以執(zhí)行,或者表示執(zhí)行時的時序狀態(tài)或交互關系。它包括狀態(tài)圖、活動圖、順序圖和合作圖等四個圖形,是標準建模語言UML的動態(tài)建模機制。UML建模34UML概述--UML的應用

在UML中可以通過用例圖來構造目標系統(tǒng)的用例模型,它通過用例來捕獲用戶需求,通過用例建模,描述對系統(tǒng)感興趣的外部角色及其對系統(tǒng)(用例)的功能要求。它從系統(tǒng)外部觀察系統(tǒng),而不涉及到技術上如何做這些事。34UML概述--UML中的需求分析(用例圖的創(chuàng)建)一、用例模型(Usecasemodel)描述的是外部執(zhí)行者(Actor)所理解的系統(tǒng)功能。用例模型用于需求分析階段。在UML中,一個用例模型由若干個用例圖描述,用例圖的主要元素是用例和執(zhí)行者。用例模型是開發(fā)者和用戶對需求規(guī)格達成的共識用例模型※描述了待開發(fā)系統(tǒng)的功能需求;

※它將系統(tǒng)看作黑盒,從外部執(zhí)行者的角度來理解系統(tǒng);

※它驅動了需求分析之后各階段的開發(fā)工作,影響開發(fā)工作的各個階段和

UML的各個模型。

用例模型功能34UML概述--UML中的需求分析(用例圖的創(chuàng)建)二、用例(usecase)一個用例是用戶與計算機之間的一次典型交互過程。在UML中,用例表示為一個橢圓

含義

1、用例捕獲某些用戶可見的需求,實現(xiàn)一個具體的用戶目標。

2、用例由執(zhí)行者激活,并提供確切的值給執(zhí)行者。

3、用例可大可小,但它必須是對一個具體的用戶目標實現(xiàn)的完整描述。

特點34UML概述--UML中的需求分析(用例圖的創(chuàng)建)舉例教師測評系統(tǒng)用例圖

以《測評系統(tǒng)》為例,“一個學生測評某位老師”和“管理員進行測評數(shù)據(jù)處理”便是兩個典型的用例

測評數(shù)據(jù)處理學生管理員說明:學生、管理員是執(zhí)行者34UML概述--UML中的需求分析(用例圖的創(chuàng)建)三、執(zhí)行者(Actor)含義執(zhí)行者是指用戶在系統(tǒng)中所扮演的角色。其圖形化的表示是一個小人。

通信聯(lián)系不帶箭頭的線段將執(zhí)行者與用例連接到一起,表示兩者之間交換信息注意盡管執(zhí)行者在用例圖中是用類似人的圖形來表示的,但執(zhí)行者未必是人。意義面對一個大系統(tǒng),要列出用例清單常常是十分困難。這時可先列出執(zhí)行者清單,再對每個執(zhí)行者列出它的用例,問題就會變得容易很多34UML概述--UML中的需求分析(用例圖的創(chuàng)建)四、使用和擴展(UseandExtend)擴展關系當一個用例使用另一個用例時,這兩個用例之間就構成了使用關系當一個用例與另一個用例相似,但所做的動作多一些,就可以用到擴展關系

使用關系說明使用和擴展是兩種不同形式的繼承關系34UML概述--UML中的需求分析(用例圖的創(chuàng)建)舉例例中學位課程的學習包括課程設計,因此構成了使用關系;學位課程學習比專業(yè)課程學習有更多的要求,因此構成了擴展關系。課程設計的完成學位課程的學習專業(yè)課程的學習《使用》《擴展》34UML概述--UML中的需求分析(用例圖的創(chuàng)建)五、用例模型的獲取步驟獲取執(zhí)行者

1、使用系統(tǒng)的主要功能(主要使用者)。

l

2、誰需要系統(tǒng)支持他們的日常工作。

l

3、誰來維護、管理使系統(tǒng)正常工作(輔助使用者)。

4、系統(tǒng)需要操縱哪些硬件。

5、系統(tǒng)需要與哪些其它系統(tǒng)交互,包含其它計算機系統(tǒng)和其它應用程序。

獲取用例l

執(zhí)行者要求系統(tǒng)提供哪些功能(執(zhí)行者需要做什么)?

l

執(zhí)行者需要讀、產(chǎn)生、刪除、修改或存儲的信息有哪些類型。

l

必須提醒執(zhí)行者的系統(tǒng)事件有哪些?或者執(zhí)行者必須提醒系統(tǒng)的事件有哪些?怎樣把這些事件表示成用例中的功能?

l

為了完整地描述用例,還需要知道執(zhí)行者的某些典型功能能否被系統(tǒng)自動實現(xiàn)?

l

系統(tǒng)需要何種輸入輸出?輸入從何處來?輸出到何處?

當前運行系統(tǒng)(也許是一些手工操作而不是計算機系統(tǒng))的主要問題?

34UML概述--UML中的需求分析(用例圖的創(chuàng)建)舉例教師測評系統(tǒng)用例模型34UML概述--UML中的需求分析(用例圖的創(chuàng)建)第四章軟件設計41軟件設計基本概念軟件設計工作內(nèi)容概要設計詳細設計

將軟件需求轉化為軟件體系結構,確定系統(tǒng)級接口、全局數(shù)據(jù)結構或數(shù)據(jù)庫模式。

確立每個模塊的實現(xiàn)算法、局部數(shù)據(jù)結構,用適當方法表示算法和數(shù)據(jù)結構的細節(jié)。

41軟件設計基本概念軟件模塊定義

整個軟件被劃分成若干單獨命名和可編址的部分,稱之為模塊。

模塊的基本屬性模塊實現(xiàn)什么功能模塊的內(nèi)部實現(xiàn)邏輯該模塊使用時的環(huán)境和條件41軟件設計基本概念模塊劃分的原則

劃分模塊的重要目標是提高模塊的獨立性。度量模塊獨立性的兩個準則是模塊間的內(nèi)聚性和耦合性。好的軟件結構應該具有高內(nèi)聚、低耦合的模塊化結構。

內(nèi)聚性耦合性內(nèi)聚性是一個模塊內(nèi)部各個元素彼此結合的緊密程度的度量。

耦合性是模塊間互相連接的緊密程度的度量。它取決于各個模塊之間接口的復雜度、調(diào)用方式以及哪些信息通過接口。

41軟件設計基本概念內(nèi)聚性模塊內(nèi)聚按照模塊獨立性由高到低的順序敘述如下:

(1)功能內(nèi)聚(2)信息內(nèi)聚(3)通信內(nèi)聚(4)過程內(nèi)聚(5)時間內(nèi)聚(6)邏輯內(nèi)聚(7)巧合內(nèi)聚41軟件設計基本概念耦合性(1)非直接耦合(2)數(shù)據(jù)耦合(3)標記耦合(4)控制耦合(5)外部耦合(6)公共耦合(7)內(nèi)容耦合模塊間的耦合按照模塊獨立性由高到低的順序列舉如下:

42概要設計概要設計需要完成的工作(1)制定規(guī)范(2)軟件系統(tǒng)結構的總體設計(3)處理方式設計(4)數(shù)據(jù)結構設計(5)可靠性設計(6)編寫概要設計階段的文檔42概要設計概要設計的目標概要設計的主要目標是把需求轉換為軟件的體系結構。

軟件的體系結構程序的模塊結構程序的數(shù)據(jù)結構42概要設計設計程序的模塊結構

程序的模塊結構表明了程序各個部件(模塊)的組織情況,是軟件的過程表示。

42概要設計模塊間關系的表示

結構圖反映程序中模塊間的調(diào)用關系和模塊間信息的傳遞。結構圖的要素包括:(1)模塊:模塊用矩形框表示,并用模塊的名字標記它。(2)模塊的調(diào)用關系和接口:模塊之間用單向箭頭聯(lián)結,箭頭從調(diào)用模塊指向被調(diào)用模塊,表示調(diào)用模塊調(diào)用了被調(diào)用模塊。42概要設計設計程序的數(shù)據(jù)結構(1)確定軟件涉及的文件系統(tǒng)的結構以及數(shù)據(jù)庫的模式、子模式,進行數(shù)據(jù)完整性和安全性的設計。(2)確定輸入、輸出文件的詳細的數(shù)據(jù)結構。(3)結合算法設計,確定算法所必需的邏輯數(shù)據(jù)結構及其操作。(4)確定對邏輯數(shù)據(jù)結構所必需的那些操作的程序模塊(軟件包)。(5)限制和確定各個數(shù)據(jù)設計決策的影響范圍。(6)若需要與操作系統(tǒng)或調(diào)度程序接口所必須的控制表等數(shù)據(jù)時,確定其詳細的數(shù)據(jù)結構和使用規(guī)則。(7)數(shù)據(jù)的保護性設計

43詳細設計詳細設計需要完成的工作

在詳細設計過程中,需要完成的工作是:

(1)確定軟件各個組成部分內(nèi)的算法以及各部分的內(nèi)部數(shù)據(jù)組織。

(2)選定某種過程的表達形式來描述各種算法??蛇x用的過程表達形式有:流程圖、盒圖、PAD圖等。

(3)編寫詳細設計說明書。

(4)制定單元測試計劃。

(5)進行詳細設計評審。43詳細設計詳細設計的表示詳細設計中應采用合適的方式來描述模塊內(nèi)問題解決過程的細節(jié),采用結構化的圖形設計表示法是人們易于使用、易于理解的方式。

圖形設計表示法流程圖盒圖PAD圖43詳細設計程序流程圖結構化程序基本結構順序結構選擇結構循環(huán)結構43詳細設計標準流程圖符號

我國國家標準局批準的國家標準(GB1525-89)流程圖符號:43詳細設計標準流程圖示例43詳細設計盒圖(N-S圖)43詳細設計面向數(shù)據(jù)結構的詳細設計方法

Jackson方法44面向對象的分析與設計面向對象的分析與設計步驟

使用面向對象的設計方法,同樣需要得出軟件的體系結構。首先,需要將系統(tǒng)劃分為子系統(tǒng),可以使用包來描述子系統(tǒng),根據(jù)子系統(tǒng)提供的操作定義它們的接口,然后設計子系統(tǒng)的概念模型。對復雜的子系統(tǒng),可以繼續(xù)將其分解,得到更簡單的子系統(tǒng)。直到得出子系統(tǒng)內(nèi)待解決問題域中的類。確定子系統(tǒng)中存在的類及類之間的關系,并定義了子系統(tǒng)的接口及關系后,便完成了系統(tǒng)的靜態(tài)建模工作。接下來需要描述待解決問題域中類的動態(tài)行為,從而建立問題解決過程的系統(tǒng)動態(tài)模型。44面向對象的分析與設計識別類

為了描述一個軟件系統(tǒng),識別其中的對象并將其抽象為類是極為關鍵的。識別類和對象的一些好的方法:(1)通過實體-關系模型識別類和對象。(2)基于自然語言信息識別類和對象。(3)基于用例與序列圖識別類和對象。44面向對象的分析與設計篩選出正確的類篩選時主要依據(jù)下列標準,刪除不正確或不必要的類—&—對象。①冗余

如果兩個類表達了同樣的信息,則應該保留在此問題域中最富于描述的類。②無關

現(xiàn)實世界中存在許多對象,不能把它們都納入到系統(tǒng)中去,僅需要把與本問題密切相關的類—&—對象放進目標系統(tǒng)中。有些類在其他問題中可能很重要,但與當前要解決的問題無關,同樣也應該把它們刪掉。44面向對象的分析與設計篩選出正確的類(續(xù))③籠統(tǒng)

在需求陳述中常常使用一些籠統(tǒng)的、泛指的名詞,雖然在初步分析時把它們作為候選的類—&—對象列出來了,但是,要么系統(tǒng)無須記憶有關它們的信息,要么在需求陳述中有更明確更具體的名詞對應它們所暗指的事務,因此,通常把這些籠統(tǒng)的或模糊的類去掉。④屬性

在需求陳述中有些名詞實際上描述的是其他對象的屬性,應該把這些名詞從候選類—&—對象中去掉。當然,如果某個性質(zhì)具有很強的獨立性,則應把它作為類而不是作為屬性。44面向對象的分析與設計篩選出正確的類(續(xù))⑤操作

在需求陳述中有時可能使用一些既可作為名詞,又可作為動詞的詞,應該慎重考慮它們在本問題中的含義,以便正確地決定把它們作為類還是作為類中定義的操作。⑥實現(xiàn)在分析階段不應該過早地考慮怎樣實現(xiàn)目標系統(tǒng)。因此,應該去掉僅和實現(xiàn)有關的候選的類—&—對象。在設計和實現(xiàn)階段,這些類—&—對象可能是重要的,但在分析階段過早地考慮它們反而會分散我們的注意力。44面向對象的分析與設計確定屬性一般來說,確定屬性的過程包括分析和選擇兩個步驟。①分析在需求陳述中用名詞詞組表示屬性,例如,“汽車的顏色”或“光標的位置”。往往用形容詞表示可枚舉的具體屬性,例如,“紅色的”、“打開的”。但是,不可能在需求陳述中找到所有屬性,分析員還必須藉助于領域知識和常識才能分析得出需要的屬性。②選擇認真考察經(jīng)初步分析而確定下來的那些屬性,從中刪除不正確的或不必要的屬性。44面向對象的分析與設計使用類圖來描述類

類圖通常表示為長方形,長方形又分三個部分,分別用來表示類的名字、屬性和操作。44面向對象的分析與設計類圖中類之間的關系及表示

普通關聯(lián)44面向對象的分析與設計類圖中類之間的關系及表示

導航關聯(lián)44面向對象的分析與設計類圖中類之間的關系及表示

關聯(lián)中的角色44面向對象的分析與設計類圖中類之間的關系及表示

聚合44面向對象的分析與設計類圖中類之間的關系及表示

復合聚合44面向對象的分析與設計類圖中類之間的關系及表示

通用化(繼承)44面向對象的分析與設計使用包來組織類

包(package)是一種組合機制,把許多類集合成一個更高層次的單位,形成一個高內(nèi)聚、低耦合的類的集合。包圖是一個很有用的工具,特別是對于改進系統(tǒng)的結構非常有幫助。44面向對象的分析與設計動態(tài)建模表示方法順序圖狀態(tài)圖合作圖其它44面向對象的分析與設計狀態(tài)圖

所有對象都具有狀態(tài),狀態(tài)是對象執(zhí)行了一系列活動的結果。當某個事件發(fā)生后,對象的狀態(tài)將發(fā)生變化。狀態(tài)圖中定義的狀態(tài)有:初態(tài)、終態(tài)、中間狀態(tài)、復合狀態(tài)。其中,初態(tài)是狀態(tài)圖的起始點,而終態(tài)則是狀態(tài)圖的終點。一個狀態(tài)圖只能有一個初態(tài),而終態(tài)則可以有多個。44面向對象的分析與設計順序圖

順序圖用來描述對象之間動態(tài)的交互關系,著重體現(xiàn)對象間消息傳遞的時間順序。44面向對象的分析與設計合作圖

合作圖用于描述相互合作的對象間的交互關系和鏈接關系。44面向對象的分析與設計動態(tài)建模表示方法小結狀態(tài)圖描述跨越多個用例的單個對象的行為順序圖和合作圖適合描述單個用例中幾個對象的行為。第五章編碼本章主要內(nèi)容5.1程序設計語言5.2編碼規(guī)范5.3結構化程序設計5.4面向對象的設計5.5用戶界面設計計算機語言分類面向機器的程序設計語言面向過程的程序設計語言面向對象的程序設計語言web編程語言.net程序設計語言51程序設計語言常用程序設計語言及其特點

語言特點舉例面向機器的語言機器語言程序運行速度高,但可讀性和可移植性差

匯編語言克服了機器語言的缺點,采用便于記憶并能描述指令功能的符號來表示指令的操作碼.

匯編語言編寫的程序較機器語言程序易理解、調(diào)試和維護

匯編語言面向過程的語言數(shù)據(jù)結構、算法是面向過程問題求解的核心FORTRAN,PASCAL,C面向對象的語言支持面向對象的設計方法.C++、VisualBasic、Java、Delphi、PowerBuild(PB)51程序設計語言常用程序設計語言及其特點語言特點Web編程語言

(編寫因特網(wǎng)應用程序的語言統(tǒng)稱為Web編程語言)HTML語言HTML(HyperTextMarkLanguage)是一種超文本標記語言,主要用來制作網(wǎng)頁。它以特殊的標記形式存儲為通常的文本文件

ASP(MicrosoftActiveServerPages)它是微軟開發(fā)的一套服務器端腳本環(huán)境。ASP內(nèi)含于微軟的IIS之中。JSP(JavaServerPages

)由Sun公司在Java語言上開發(fā)出來的一種動態(tài)網(wǎng)頁制作技術。其可使網(wǎng)頁中的動態(tài)部分和靜態(tài)的HTML相分離。PHP

(HypertextPreprocessor

)PHP是一種HTML內(nèi)嵌式的語言。而PHP獨特的語法混合了C、Java、Perl以及PHP式的新語法,提供了類和對象的實現(xiàn)機制,PHP的這種語法非常適合用于創(chuàng)建WEB項目。.Net

(如C#)“.Net”給我們帶來了嶄新的思維和技術。它代表了一個集合、一個環(huán)境、一個編程的基礎結構。有了.Net框架后,開發(fā)人員便可對選用的任何編程語言一律使用統(tǒng)一的命令集。51程序設計語言常用程序設計語言及其特點51程序設計語言程序設計語言的選擇選擇語言的理想標準為使程序易測試和維護以減少生存周期的總成本,選用高級語言應用理想的模塊化機制,以及可讀性好的控制結構和數(shù)據(jù)結構。為便于調(diào)試和提高軟件可靠性,應選用編譯程序能夠盡可能多地發(fā)現(xiàn)程序中錯誤的語言。為降低軟件開發(fā)和維護成本,選用的語言應具有良好的獨立的編譯機制。51程序設計語言程序設計語言的選擇選用語言綜合考慮標準

系統(tǒng)用戶的要求可以使用的編譯程序可以得到的軟件工具

程序員的知識軟件可移植性要求軟件應用領域工程規(guī)模如果所開發(fā)的系統(tǒng)由用戶負責維護,用戶通常要求用他們熟悉的語言書寫程序。

運行目標系統(tǒng)的環(huán)境中可以提供的編譯程序往往限制了可以選用的語言的范圍。如果某種語言有支持程序開發(fā)工具可以利用,則目標的實現(xiàn)和驗證都變得比較容易。標準化程度高、程序可移植性好是選擇語言的重要標準最好是選擇程序員最熟悉的語言52編碼規(guī)范代碼文檔化含義源程序的文檔化包括標識符的選擇與命名、注釋的安排、程序代碼的視覺組織等。程序清單的布局對于程序的可讀性也有很大影響,應該利用適當?shù)碾A梯(即縮進)形式使程序的層次結構清晰明顯舉例#defineONE1#defineTEN10#defineTWENTY20#defineINPUT_MODE1#defineINPUT_BUF10#defineOUTPUT_BUF20標識符選擇與命名不直觀直觀,明了52編碼規(guī)范數(shù)據(jù)說明與語句一、數(shù)據(jù)說明

編程序時需確定數(shù)據(jù)說明的風格。為了使數(shù)據(jù)更容易理解和維護,應該遵循一些比較簡單的原則:數(shù)據(jù)說明的次序應該標準化,如按照數(shù)據(jù)結構或數(shù)據(jù)類型確定說明的次序;當多個變量名在一個語句中說明時,應該按字母順序排列這些變量。如果設計時使用了一個復雜的數(shù)據(jù)結構,則應該用注釋說明用程序設計語言實現(xiàn)這個數(shù)據(jù)結構的方法和特點。含義及規(guī)則52編碼規(guī)范數(shù)據(jù)說明與語句舉例IntI,j,k;Floatli,lk;Charch;同時說明多個變量,則按字母順序按照數(shù)據(jù)類型確定說明的次序52編碼規(guī)范數(shù)據(jù)說明與語句二、語句構造語句構造基本規(guī)則不要為了節(jié)省空間而把多個語句寫在同一行盡量避免復雜的條件測試盡量減少對“非”條件的測試避免大量使用循環(huán)嵌套和條件嵌利用括號使邏輯表達式或算術表達式的運算次序清晰直觀52編碼規(guī)范輸入/輸出

I/O是幾乎所有應用程序都要涉及到的,如何提高I/O的效率、準確性與可靠性是編程時必須著重考慮的問題。以下是有關規(guī)則:對所有輸入數(shù)據(jù)都進行檢驗;檢查輸入項重要組合的合法性;

保持輸入格式的簡單;用數(shù)據(jù)結構標記,不要要求用戶指定數(shù)據(jù)的數(shù)目;明確提示交互式輸入的請求,詳細說明可用的選擇或邊界數(shù)值;當程序設計語言的格式有嚴格要求時,保持輸入格式一致;設計良好的輸出報表;給所有輸出數(shù)據(jù)加標志。

52編碼規(guī)范程序布局

程序布局是計算機編程上的美學問題,組織很好的代碼不僅讓人感到發(fā)自內(nèi)心的愉悅,并且還能清晰地顯示出程序的邏輯結構,提高程序的可讀性,易于修改。相反,不好的布局不僅不能讓人產(chǎn)生美感,反而在可讀性、可修改性上大打折扣。52編碼規(guī)范程序布局程序布局常用技巧

階梯(即縮進)形式:利用適當會使程序邏輯結構清晰明顯。

空格:包括空格、制表符、空行等,使用適當可使程序結構清晰,提高可讀性。分組:把完成某一功能的相關語句組織在一起。對齊:把同屬性的元素對齊。例如把同一類的一組賦值號對齊排成一條直線下來,直觀上讓一看就知道這些語句是同屬性的。括號:在有多個運算符的表達式中盡量多使用括號,以免產(chǎn)生運算優(yōu)先級的人機理解不一致。52編碼規(guī)范注釋

注釋是程序員和程序讀者通信的重要手段,正確的注釋非常有助于對程序的理解。重復的注釋

解釋性注釋標記注釋代碼的總結注釋意圖注釋用不同的詞重申了代碼的內(nèi)容,它沒有給讀者提供代碼的附加信息。

典型用于解釋復雜的,有效的和靈敏的代碼段它是給開發(fā)者的注釋,表示工作還未做

解釋代碼的目的

注釋有以下五類53結構化程序設計結構化程序設計的原則順序結構選擇結構循環(huán)結構基本原則自頂向下,逐步求精,單入口單出口程序三種基本流程結構不足系統(tǒng)是實現(xiàn)模塊功能的函數(shù)和過程的集合。由于用戶的需求和軟、硬件技術的不斷發(fā)展變化,按照功能劃分設計的系統(tǒng)模塊必然是易變的和不穩(wěn)定的。這樣開發(fā)出來的模塊可重用性不高

53結構化程序設計結構化程序設計的方法一、程序流程的語句描述

在軟件設計階段,我們得到了各個系統(tǒng)的圖形表示模型,或者用流程圖,或者用N-S圖或者PAD圖。一般來說,每種高級語言都有針對程序基本控制結構的語句,現(xiàn)以N-S圖及C語言為例進行說明。

53結構化程序設計結構化程序設計的方法順序結構順序結構是最簡單的一種,即語句按照書寫的順序依次執(zhí)行?!Z句組A語句組B…語句組A語句組B說明N-S圖語句格式53結構化程序設計結構化程序設計的方法選擇結構TPFABTPFAPP1P2…Pn缺省A1A2…AnAn+1if(條件P)

語句組Aif(條件P)

語句組A

else

語句組BSwitch(表達式P)

{

case常量表達式P1:語句組A1

case常量表達式P2:語句組A2

case常量表達式Pn:語句組An

default:語句組An+1

}NS圖語句格式單分支雙分支多分支53結構化程序設計結構化程序設計的方法循環(huán)結構while(條件表達式P)

循環(huán)體SDOWHILEPSSUNTILPDO

循環(huán)體SUNTILPNS圖語句格式

二、自頂向下逐步求精

結構化程序設計遵循的是自頂而下,逐步求精的設計方法。在分析一個問題的編程思路時,先將該問題分成若干個大的步驟,然后對每一步驟再進行細化分成若干個小的步驟,這樣逐級細分,直到最后能將每一個步驟直接翻譯成為相應的計算機語言的指令。53結構化程序設計結構化程序設計的方法53結構化程序設計結構化程序設計的方法舉例分析“計算某一個班級平均成績”的算法

(1)基本算法分析

要完成該題要考慮三個方面的問題:成績的輸入方法(班級人數(shù)的不確定)平均成績的計算(循環(huán)結構)輸出

53結構化程序設計結構化程序設計的方法(2)算法的設計(用N-S圖描述)總體功能描述

計算一個班的平均成績存入到變量中第一次細化

初始化變量輸入成績,求和與計數(shù)計算與打印班級平均成績第二次細化(分步)

經(jīng)過以上兩步的細化以后,每一小步已經(jīng)與具體語言的指令非常接近了,此時再進行程序編碼的工作不再是件難事

見下頁53結構化程序設計結構化程序設計的方法計數(shù)器不等于零?初始化變量輸入成績,求和與計數(shù)計算、打印平均成績初始化成績總和變量并清零初始化計數(shù)器變量并清零(存放平均成績與單個成績不需要初始化)輸入第一個成績(可能就是標記值)當輸入的成績不是結束標記時將該成績累計到總和變量中

計數(shù)器加1輸入下一個成績TF計算平均值輸出提示信息打印輸出54面向對象的設計—面向對象程序設計語言一、面向對象程序設計語言的特點

面向對象語言支持面向對象的概念,如封裝、繼承、多態(tài)、將數(shù)據(jù)抽象化等特點。如C++中一般用類來實現(xiàn)封裝;Java的類有層次之分,子類繼承父類的屬性和方法,重用性較好。大多數(shù)面向對象語言都提供一個實用的類庫。某些語言本身并沒有規(guī)定提供什么樣的類庫,而是由實現(xiàn)這種語言的編譯系統(tǒng)自行提供類庫。

54面向對象的設計—面向對象程序設計語言二、面向對象程序設計過程(1)選擇一種合適的面向對象的編程語言

(2)用選定語言編碼實現(xiàn)軟件設計步驟所得到的公式、圖表、說明和規(guī)則等軟件系統(tǒng)各對象類的詳盡描述。(3)將編寫好的各個類代碼模塊根據(jù)類的相互關系集成(4)利用開發(fā)人員提供的測試用例和用戶提供的測試用例分別檢驗編碼完成的各個模塊和整個軟件系統(tǒng)。面向對象程序設計過程是具體的編碼階段,其主要任務有54面向對象的設計—面向對象程序設計語言將來能否占主導地位

重用性

庫和開發(fā)環(huán)境

其他因素

選擇具體的語言時應考慮的因素重用提高軟件生產(chǎn)率

占主導地位的編程語言是軟件生命力的重要因素能

溫馨提示

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

評論

0/150

提交評論