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

下載本文檔

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

文檔簡介

軟件工程基礎KrisZhang章征暉江蘇微軟技術中心zhangzh@軟件工程基礎KrisZhang章征暉前言《大道至簡—軟件工程實踐者的思想》---周愛民

在大學時代、在課桌上令人昏昏欲睡的《軟件工程》才是軟件開發(fā)中的髓質與靈魂選擇什么語言、如何重構、有沒有或應不應該采用某種模式,都是軟件開發(fā)的細微末節(jié)我們常常陷于行動而沒有思想,思想與行為脫節(jié)。常常知道做什么,但不知道為什么要這樣做JiangsuMicrosoftTechnologyCenter2

“停下來,思考才是進步的本質!”前言《大道至簡—軟件工程實踐者的思想》---周愛民Ji主題軟件工程的定義軟件工程的研究內(nèi)容軟件工程的基本原理軟件工程的作用軟件開發(fā)的4種常用方法軟件工程的5個面向理論軟件的支持過程軟件的管理過程軟件生存周期及開發(fā)模型JiangsuMicrosoftTechnologyCenter3RogerS.Pressman軟件過程改善和軟件工程技術方面國際知名的權威。30多年來,他作為軟件工程師、管理人員、教授、作者及咨詢顧問始終投身于軟件工程領域。主題軟件工程的定義JiangsuMicrosoftTec計算機工程的定義計算機由硬件和軟件組成計算機工程由硬件工程和軟件工程組成硬件工程:研究硬件生產(chǎn)和硬件管理的工程學科,包括計算機及網(wǎng)絡硬件的分析、設計、生產(chǎn)、采購、驗收、安裝、培訓、維護等。軟件工程:研究軟件生產(chǎn)和軟件管理的工程學科,包括市場調研、正式立項、項目策劃、需求分析、概要設計、詳細設計、編程、測試、試運行、產(chǎn)品發(fā)布、用戶培訓、產(chǎn)品復制、銷售、實施、系統(tǒng)維護、版本升級等。系統(tǒng)集成工程:有時也稱網(wǎng)絡工程,介于硬件工程和軟件工程之間的系統(tǒng)工程(如:規(guī)劃設計安裝一個校園網(wǎng))JiangsuMicrosoftTechnologyCenter4計算機工程的定義計算機由硬件和軟件組成JiangsuMic程序與軟件定義程序的定義面向過程的程序=算法+數(shù)據(jù)結構面向對象的程序=對象+消息面向構件的程序=構件+構架軟件的定義軟件=程序+數(shù)據(jù)+文檔JiangsuMicrosoftTechnologyCenter5“人生就是一段程序,這段程序是用特殊代碼寫成的,只是算法極其復雜而已?!背绦蚺c軟件定義程序的定義JiangsuMicrosoft軟件≠程序越早開始寫代碼的人,就是越遲完成代碼的人!JiangsuMicrosoftTechnologyCenter6年代對軟件定義的認識20世紀50年代軟件就等于程序,軟件系統(tǒng)就是程序系統(tǒng)20世紀60年代軟件等于程序加文檔,這里的文檔僅指開發(fā)文檔,即軟件開發(fā)過程中的分析、設計、實現(xiàn)、測試、維護文檔,還不包括管理文檔20世紀70年代軟件等于程序加文檔和數(shù)據(jù),這里的文檔指開發(fā)文檔和管理文檔,這里的數(shù)據(jù)不僅包括初始化數(shù)據(jù)、測試數(shù)據(jù)、而且包括研發(fā)數(shù)據(jù)、運行數(shù)據(jù)、維護數(shù)據(jù),也包括軟件企業(yè)積累的項目工程數(shù)據(jù)和項目管理數(shù)據(jù)中的大量決策原始記錄數(shù)據(jù)軟件≠程序越早開始寫代碼的人,就是越遲完成代碼的人!Jian軟件工程的定義1993年,權威組織IEEE對軟件工程定義為:軟件工程是將系統(tǒng)化的、嚴格約束的、可量化的方法,應用于軟件開發(fā)、運行和維護中去。2001年,RogerS.Pressman對軟件工程的定義是:軟件工程是一個過程、一組方法和一系列工具。現(xiàn)在的定義,軟件工程是研究軟件開發(fā)和軟件管理的一門工程科學。JiangsuMicrosoftTechnologyCenter7軟件工程的定義是與時俱進的軟件工程的定義1993年,權威組織IEEE對軟件工程定義為:軟件工程研究的內(nèi)容JiangsuMicrosoftTechnologyCenter8研究方面具體內(nèi)容軟件開發(fā)模型瀑布模型、增量模型、迭代模型、原型模型…軟件開發(fā)方法面向過程的方法、面向數(shù)據(jù)的方法、面向對象的方法…軟件支持工具建模工具、開發(fā)工具、測試工具、文檔工具、配置工具、安裝工具…軟件管理過程ISO9000、CMM/CMMI、微軟企業(yè)文化(MSF)、IBM企業(yè)文化、敏捷文化現(xiàn)象(XP)...軟件工程三要素:方法、工具、過程軟件工程研究的內(nèi)容JiangsuMicrosoftTec軟件工程的8個基本原理用分階段的生命周期計劃,嚴格管理軟件開發(fā)。堅持進行階段評審。實行嚴格的產(chǎn)品版本控制。采用現(xiàn)代程序設計技術。結果應能清楚地審查。文檔要有嚴格要求。開發(fā)小組的成員要少而精。要不斷地改進軟件工程實踐的經(jīng)驗和技術。牢記二八定律JiangsuMicrosoftTechnologyCenter9軟件工程的8個基本原理用分階段的生命周期計劃,嚴格管理軟件開軟件工程中的二八定律對軟件項目進度和工作量的估計:一般人主觀上認為已經(jīng)完成了80%,但實際上只完成了20%對程序中存在問題的估計:80%的問題存在于20%的程序之中對模塊功能的估計:20%的模塊,實現(xiàn)了80%的功能對人力資源的估計:20%的人,解決了軟件中80%的問題對投入資金的估計:企業(yè)信息系統(tǒng)中80%的問題,可以用20%的資金來解決。JiangsuMicrosoftTechnologyCenter10這條原理特別重要,項目經(jīng)理與高層經(jīng)理,要特別牢記!軟件工程中的二八定律對軟件項目進度和工作量的估計:一般人主觀軟件工程的作用從軟件項目團隊來講,解決在規(guī)定的時間內(nèi),按照規(guī)定的成本,完成預期質量目標(軟件的功能、性能和接口達到需求報告標準)的軟件。從軟件企業(yè)本身來講,解決持續(xù)地規(guī)范軟件開發(fā)過程和軟件管理過程,不斷地優(yōu)化軟件組織的個人素質和集體素質,從而逐漸增強軟件企業(yè)的市場競爭實力。從軟件發(fā)展進程來講,克服軟件危機,控制軟件進度,節(jié)約開發(fā)成本,提高軟件質量。從院校來講,以前它只是作為一門課或一本書?,F(xiàn)在它成為一個學科,一個體系,一個計算機學位,即軟件工程碩士學位和軟件工程博士學位。JiangsuMicrosoftTechnologyCenter11軟件工程的作用從軟件項目團隊來講,解決在規(guī)定的時間內(nèi),按照規(guī)軟件工程中的4個開發(fā)方法面向過程的方法面向對象的方法面向數(shù)據(jù)的方法形式化方法(*)JiangsuMicrosoftTechnologyCenter12軟件工程中的4個開發(fā)方法面向過程的方法JiangsuMic面向過程的方法內(nèi)容:面向過程需求分析、面向過程設計、面向過程編程、面向過程測試、面向過程維護、面向過程管理。面向過程的方法,又稱為面向功能的方法,或稱為結構化方法。特點:程序的執(zhí)行過程,不由用戶控制,完全由程序員控制。優(yōu)點:簡單實用。缺點:企圖用有窮的方法(枚舉法)來描述無窮的(隨機的)信息世界,所以不能完全描述信息世界;維護困難。JiangsuMicrosoftTechnologyCenter13面向過程的方法內(nèi)容:面向過程需求分析、面向過程設計、面向過程面向對象的方法內(nèi)容:面向對象需求分析、面向對象設計、面向對象編程、面向對象測試、面向對象維護、面向對象管理。在分析、設計、實現(xiàn)中用到“對象、類、繼承、消息通信”這四個基本概念,就是面向對象的方法。今天用UML來開發(fā)軟件,就是面向對象的方法。特點:(1).程序的執(zhí)行過程,不由程序員控制,完全由用戶控制。(2).分析設計時面向類,編程時面向對象。優(yōu)點:用無窮的方法來描述無窮的(隨機的)信息世界,所以能完全描述信息世界;易于維護。缺點:較難掌握。JiangsuMicrosoftTechnologyCenter14面向對象的方法內(nèi)容:面向對象需求分析、面向對象設計、面向對象面向數(shù)據(jù)的方法內(nèi)容:是建設信息系統(tǒng)數(shù)據(jù)庫和數(shù)據(jù)倉庫的基本方法。1)數(shù)據(jù)位于信息系統(tǒng)的中心。2)由元數(shù)據(jù)構成的數(shù)據(jù)模型是穩(wěn)定的。3)對元數(shù)據(jù)的處理方法是可變的。4)企業(yè)信息系統(tǒng)的核心是數(shù)據(jù)模型。5)系統(tǒng)的實現(xiàn)方法主要是面向對象。6)用戶始終參與信息系統(tǒng)的開發(fā)。特點:程序的執(zhí)行過程,有時由程序員控制,有時由用戶控制。優(yōu)點:適合數(shù)據(jù)層設計與實現(xiàn)。缺點:實現(xiàn)窗口界面較困難。JiangsuMicrosoftTechnologyCenter15面向數(shù)據(jù)的方法內(nèi)容:是建設信息系統(tǒng)數(shù)據(jù)庫和數(shù)據(jù)倉庫的基本方法形式化方法軟件工程的形式化方法是建立在嚴格數(shù)學基礎上、以邏輯推理為出發(fā)點、并且具有精確數(shù)學語義的開發(fā)方法。作為一種以數(shù)學邏輯為基礎的方法,形式化方法以其嚴密性越來越受到眾多領域的重視,尤其是在安全性和可靠性作為關鍵問題的系統(tǒng),如核電站、航空航天、鐵路運輸系統(tǒng)中得到了較為廣泛的應用。但是對于形式化方法在工業(yè)領域的實際應用問題,在軟件工程界,尤其是在系統(tǒng)開發(fā)人員當中,還存在著相當多的疑問。軟件工程中的形式化方法是軟件工程研究的領域之一,其內(nèi)容包括:有限狀態(tài)機、Statecharts、Petri網(wǎng)、通信順序進程、通信系統(tǒng)演算、一階邏輯、程序正確性證明、凈室軟件工程、時態(tài)邏輯、模型檢驗、Z形式規(guī)約語言、B語言和方法、VDM系統(tǒng)、Larch等。JiangsuMicrosoftTechnologyCenter16形式化方法軟件工程的形式化方法是建立在嚴格數(shù)學基礎上、以邏輯四種開發(fā)方法的比較JiangsuMicrosoftTechnologyCenter17方法名稱優(yōu)點缺點適合的場合面向過程的方法簡單好學不適應窗口界面,維護困難大型工程計算,實時數(shù)據(jù)跟蹤處理,各種自動化控制系統(tǒng),以及系統(tǒng)軟件實現(xiàn)等領域面向對象的方法功能強大,易于維護

不易掌握

互聯(lián)網(wǎng)絡時代,完全由用戶交互控制程序執(zhí)行過程的應用軟件和系統(tǒng)軟件的開發(fā)面向數(shù)據(jù)的方法通俗易懂不適應窗口界面

以關系數(shù)據(jù)庫管理系統(tǒng)為支撐環(huán)境的信息系統(tǒng)建設形式化方法準確、嚴謹難于上手和應用對安全性要求極高,不容許出錯的軟件系統(tǒng),如軍事、醫(yī)藥、交通等領域四種開發(fā)方法的比較JiangsuMicrosoftTec軟件工程中的5個面向原則面向流程分析。面向數(shù)據(jù)設計面向對象實現(xiàn)面向功能測試面向過程管理JiangsuMicrosoftTechnologyCenter18軟件工程中的5個面向原則面向流程分析。JiangsuMic面向流程分析面向流程分析,就是面向流程需求分析。在需求分析時,系統(tǒng)分析員要面向業(yè)務流、資金流、信息流進行分析。只有將這“三個流”分析透了,才建立好系統(tǒng)的業(yè)務模型和功能模型。因為計算機網(wǎng)絡在本質上只認識數(shù)據(jù)及數(shù)據(jù)流(嚴格地講,它只認識二進制數(shù)和二進制數(shù)據(jù)的流動),而且這“三個流”,可以用“數(shù)據(jù)流”這一個流程來代替,或者說“三個流”是“數(shù)據(jù)流”在三個不同方向的投影。JiangsuMicrosoftTechnologyCenter19面向流程分析面向流程分析,就是面向流程需求分析。Jiangs面向數(shù)據(jù)的設計面向數(shù)據(jù)設計,就是面向元數(shù)據(jù)進行概要設計。在系統(tǒng)設計時,系統(tǒng)設計師要采用面向數(shù)據(jù)的方法進行概要設計。面向數(shù)據(jù)就是面向“元數(shù)據(jù)”(Metadata)。概要設計的主要任務是建立系統(tǒng)的數(shù)據(jù)模型,包括概念數(shù)據(jù)模型CDM和物理數(shù)據(jù)模型PDM,以及體現(xiàn)業(yè)務規(guī)則的存儲過程和觸發(fā)器,然后以數(shù)據(jù)模型為支撐,去實現(xiàn)系統(tǒng)的業(yè)務模型和功能模型(包括性能模型和接口模型)。為此,要對元數(shù)據(jù)進行分析,只有將元數(shù)據(jù)分析透了,才能建立好由元數(shù)據(jù)所構成的數(shù)據(jù)模型。這里講的面向數(shù)據(jù)設計,主要表現(xiàn)在數(shù)據(jù)庫服務器上的關系數(shù)據(jù)庫設計。JiangsuMicrosoftTechnologyCenter20面向數(shù)據(jù)的設計面向數(shù)據(jù)設計,就是面向元數(shù)據(jù)進行概要設計。Ji面向對象的實現(xiàn)面向對象實現(xiàn),就是面向對象進行詳細設計和編程實現(xiàn)。在兩層結構(C/S)的客戶層上,在三層結構(B/A/S)的表示層和業(yè)務邏輯層上,進行詳細設計和編程實現(xiàn)時,要采用面向對象的方法。當然,在數(shù)據(jù)服務層上的設計和編程實現(xiàn),仍然要采用面向數(shù)據(jù)的方法,因為主要是設計和編寫存儲過程,它們是面向數(shù)據(jù)的,不是面向對象的。詳細設計和編程實現(xiàn),實質上是用構件加上程序來實現(xiàn)系統(tǒng)的業(yè)務模型和功能模型。只有對系統(tǒng)的三個模型思想(業(yè)務模型、功能模型、數(shù)據(jù)模型)吃透了,才能設計和編寫出合格的程序。面向對象實現(xiàn),實質上是面向類實現(xiàn),因為實例化的類稱為對象。JiangsuMicrosoftTechnologyCenter21面向對象的實現(xiàn)面向對象實現(xiàn),就是面向對象進行詳細設計和編程實面向功能的測試面向功能測試,就是面向功能進行單元測試、集成測試、Alpha測試和Beta測試(或系統(tǒng)測試和驗收測試)。在進行測試時,測試人員要采用面向功能的方法。這里講的功能,包括系統(tǒng)的功能、性能和接口三部分內(nèi)容。面向功能測試的方法就是黑盒子測試方法,隨著第四代程序設計語言和構件技術的發(fā)展,該測試方法會越來越廣泛。今后采用白盒子測試方法(面向程序執(zhí)行路徑測試)的人,只有從事軟件構件生產(chǎn)和核心代碼編程的極少數(shù)人員。JiangsuMicrosoftTechnologyCenter22面向功能的測試面向功能測試,就是面向功能進行單元測試、集成測面向過程的管理面向過程管理,就是面向過程對軟件生命周期各個階段進行管理和控制。因為軟件產(chǎn)品質量的提高與改進,完全取決于軟件企業(yè)生產(chǎn)過程的改善。無論是CMM/CMMI、ISO9000、微軟企業(yè)文化,都是站在軟件生命周期過程的觀念上去提高軟件企業(yè)的素質。那種認為“只要有幾個優(yōu)秀的程序員就能辦好軟件企業(yè),就能生產(chǎn)出高質量的軟件產(chǎn)品”的觀點,在上世紀80年代理直氣壯,在90年代還能解決溫飽問題,在本世紀就站不住腳了,混不下去了,因為他們是手工作坊式的開發(fā)方法,忽視了軟件中的面向過程管理。JiangsuMicrosoftTechnologyCenter23面向過程的管理面向過程管理,就是面向過程對軟件生命周期各個階軟件的支持過程軟件工程中的過程,是指軟件生命周期(LifeCycle)中的時間序列。過程作為一個時間序列,它自然有起始點和終止點。例如,可以將一個軟件的生命周期劃分為市場調研、立項、策劃、需求分析、概要設計、詳細設計、編程、單元測試、集成測試、運行、維護這幾個過程,前一過程的終止點就是后一過程的起始點。過程與階段(Phase)相對應,階段與里程碑(Milestone)相對應。某些重要的里程碑的產(chǎn)出物又稱為基線(baseline)。JiangsuMicrosoftTechnologyCenter24軟件的支持過程軟件工程中的過程,是指軟件生命周期(Life軟件的支持過程軟件工程的支持過程,由支持軟件生命周期各個階段的生產(chǎn)工具所組成。生產(chǎn)工具如需求分析工具、設計工具、實現(xiàn)工具、測試工具、維護工具、配置工具,開發(fā)環(huán)境。支持過程是通過支持工具來實現(xiàn)的。每一種支持工具都是當前軟件界的熱點之一,但它不是軟件工程的重點內(nèi)容。JiangsuMicrosoftTechnologyCenter25軟件的支持過程軟件工程的支持過程,由支持軟件生命周期各個階段軟件工程常用支持工具系統(tǒng)分析設計與建模工具IBMRationalRoseMicrosoftVisualStudioTeamSystemMicrosoftOfficeVisioforEnterpriseArchitects數(shù)據(jù)庫設計與建模工具SybasePowerDesignerCAERWinMicrosoftVisualStudioTeamSystemMicrosoftOfficeVisioforEnterpriseArchitects開發(fā)工具MicrosoftVisualStudioTeamSystem(.NET平臺)開源Eclipse(JAVA平臺)單元測試工具MicrosoftVisualStudioTeamSystem開源NUnit(.NET平臺)開源JUnit(JAVA平臺)JiangsuMicrosoftTechnologyCenter26軟件工程常用支持工具系統(tǒng)分析設計與建模工具JiangsuM軟件工程常用支持工具安裝工具MicrosoftVisualStudio.NETInstallShield開源NSIS(編寫安裝腳本)文檔工具MicrosoftHelpWorkshop(制作HLP文件)MicrosoftHTMLHelpWorkshop(制作CHM文件)開源NDoc(根據(jù)代碼注釋自動生成文檔)畫圖工具MicrosoftOfficeVisio源代碼管理工具MicrosoftVisualStudioTeamSystemMicrosoftVisualSourceSafe(VSS)開源ConcurrentVersionsSystem(CVS/CVSNT)項目管理工具MicrosoftVisualStudioTeamSystemMicrosoftOfficeProjectJiangsuMicrosoftTechnologyCenter27軟件工程常用支持工具安裝工具JiangsuMicrosof軟件的管理過程“外行關注結果,內(nèi)行關注過程”。1974年,美國人認識到“軟件需要管理”。1984年,美國人認識到“軟件管理是過程管理”。軟件工程中主要存在3類過程管理模型:

ISO9000質量管理和質量保證體系

CMM/CMMI過程能力成熟度模型企業(yè)文化(微軟企業(yè)文化、敏捷文化現(xiàn)象等)JiangsuMicrosoftTechnologyCenter28牢記:軟件管理過程比開發(fā)技術更重要!軟件的管理過程“外行關注結果,內(nèi)行關注過程”。Jiangsu軟件工程中的3類過程管理模型JiangsuMicrosoftTechnologyCenter29序號名稱來源特點1ISO9000質量管理和質量保證體系國際標準化組織

ISO

按20多個質量要素管理2CMM/CMMI軟件能力成熟度模型美國卡內(nèi)基-梅隆大學軟件工程研究所(CMU/SEI)按25個過程域PA,分階段模型和連續(xù)模型兩種方式管理屬于重載過程管理3軟件企業(yè)文化Microsoft公司、IBM公司、敏捷方法屬于輕載過程管理軟件工程中的3類過程管理模型JiangsuMicrosof軟件生存周期概論任何有生命的動物、植物和人,都有一個生存周期(LifeCycle),例如人的生存周期為胎兒、嬰兒、幼兒、兒童、少年、青年、中年、老年、死亡。沒有生命的事物或實體,例如PC機、路由器、家具、房子、汽車,它們也有一個生存周期,這個生存周期就是使用壽命,即生產(chǎn)周期加上使用周期。生存周期與開發(fā)模型有關。JiangsuMicrosoftTechnologyCenter30軟件生存周期概論任何有生命的動物、植物和人,都有一個生存周期軟件的生存周期(常規(guī))JiangsuMicrosoftTechnologyCenter31周期序號周期名稱周期序號周期名稱1立項(或簽合同)、下達任務書6軟件測試2需求分析7軟件發(fā)布與實施3概要設計8軟件維護4詳細設計9版本更新或退役5編碼實現(xiàn)///////////////////////////////軟件的生存周期(常規(guī))JiangsuMicrosoftT瀑布模型(WaterfallModel)定義:1970年溫斯頓?羅伊斯(WinstonRoyce)提出了著名的“瀑布模型”,直到80年代早期,它一直是唯一被廣泛采用的軟件開發(fā)模型。瀑布模型核心思想是按工序將問題化簡,將功能的實現(xiàn)與設計分開,便于分工協(xié)作,即采用結構化的分析與設計方法將邏輯實現(xiàn)與物理實現(xiàn)分開。將軟件生命周期劃分為制定計劃、需求分析、軟件設計、程序編寫、軟件測試和運行維護等六個基本活動,并且規(guī)定了它們自上而下、相互銜接的固定次序,如同瀑布流水,逐級下落。瀑布模型是最早出現(xiàn)的軟件開發(fā)模型,在軟件工程中占有重要的地位,它提供了軟件開發(fā)的基本框架。其過程是從上一項活動接收該項活動的工作對象作為輸入,利用這一輸入實施該項活動應完成的內(nèi)容給出該項活動的工作成果,并作為輸出傳給下一項活動。同時評審該項活動的實施,若確認,則繼續(xù)下一項活動;否則返回前面,甚至更前面的活動。對于經(jīng)常變化的項目而言,瀑布模型毫無價值。JiangsuMicrosoftTechnologyCenter32瀑布模型(WaterfallModel)定義:1970年溫瀑布模型圖JiangsuMicrosoftTechnologyCenter33瀑布模型圖JiangsuMicrosoftTechnol瀑布模型優(yōu)缺點優(yōu)點:提供了軟件開發(fā)的基本框架為項目提供了按階段劃分的檢查點當前一階段完成后,您只需要去關注后續(xù)階段可在迭代模型中應用瀑布模型(*)缺點:在項目各個階段之間極少有反饋由于開發(fā)模型是線性的,用戶只有等到整個過程的末期才能見到開發(fā)成果,從而增加了開發(fā)的風險通過過多的強制完成日期和里程碑來跟蹤各個項目階段。而且各個階段的劃分完全固定,階段之間產(chǎn)生大量的文檔,極大地增加了工作量早期的錯誤可能要等到開發(fā)后期的測試階段才能發(fā)現(xiàn),進而帶來嚴重的后果JiangsuMicrosoftTechnologyCenter34瀑布模型優(yōu)缺點優(yōu)點:JiangsuMicrosoftTe瀑布模型選擇條件選擇模型的條件:在開發(fā)時間內(nèi)需求沒有或很少變化。分析設計人員對應用領域很熟悉。低風險項目(對目標、環(huán)境很熟悉)。用戶使用環(huán)境很穩(wěn)定。用戶除提出需求以外,很少參與開發(fā)。JiangsuMicrosoftTechnologyCenter35瀑布模型選擇條件選擇模型的條件:JiangsuMicros增量模型增量模型將軟件產(chǎn)品看作一組增量構件,每次設計、實現(xiàn)、集成、測試和交付一塊構件,直到所有構件全部實現(xiàn)為止。要開發(fā)一個大的軟件系統(tǒng),先開發(fā)其中的一個核心模塊,后再開發(fā)其他模塊,這樣一個個模塊地增加上去,直至整個系統(tǒng)開發(fā)完畢為止。增量模型的特點是引進了增量包的概念,無須等到所有需求都出來,只要某個需求的增量包出來即可進行開發(fā)。雖然某個增量包可能還需要進一步適應客戶的需求并且更改,但只要這個增量包足夠小,其影響對整個項目來說是可以承受的。JiangsuMicrosoftTechnologyCenter36增量模型增量模型將軟件產(chǎn)品看作一組增量構件,每次設計、實現(xiàn)、增量模型圖JiangsuMicrosoftTechnologyCenter37增量模型圖JiangsuMicrosoftTechnol增量模型的優(yōu)缺點優(yōu)點采用增量模型的優(yōu)點是人員分配靈活,剛開始不用投入大量人力資源。如果核心產(chǎn)品很受歡迎,則可增加人力實現(xiàn)下一個增量。當配備的人員不能在設定的期限內(nèi)完成產(chǎn)品時,它提供了一種先推出核心產(chǎn)品的途徑。這樣即可先發(fā)布部分功能給客戶,對客戶起到鎮(zhèn)靜劑的作用。增量能夠有計劃地管理技術風險。缺點由于各個構件是逐漸并入已有的軟件體系結構中的,所以加入構件必須不破壞已構造好的系統(tǒng)部分,這需要軟件具備開放式的體系結構。在開發(fā)過程中,需求的變化是不可避免的。增量模型的靈活性可以使其適應這種變化的能力大大優(yōu)于瀑布模型和快速原型模型,但也很容易退化為邊做邊改模型,從而是軟件過程的控制失去整體性。如果增量包之間存在相交的情況且未很好處理,則必須做全盤系統(tǒng)分析,這種模型將功能細化后分別開發(fā)的方法較適應于需求經(jīng)常改變的軟件開發(fā)過程。JiangsuMicrosoftTechnologyCenter38增量模型的優(yōu)缺點優(yōu)點JiangsuMicrosoftTe增量模型的選擇條件選擇模型的條件:在項目開發(fā)過程中,客戶接受分階段交付。開發(fā)人員對應用領域不熟悉,難以一步到位。工期過緊的中等或高風險項目。用戶可參與到整個軟件開發(fā)過程中。使用面向對象語言或第四代語言。軟件公司自己有較好的類庫、構件庫。JiangsuMicrosoftTechnologyCenter39增量模型的選擇條件選擇模型的條件:JiangsuMicro迭代模型(IterativeModel)迭代被定義為:迭代包括產(chǎn)生產(chǎn)品發(fā)布(穩(wěn)定、可執(zhí)行的產(chǎn)品版本)的全部開發(fā)活動和要使用該發(fā)布必需的所有其他外圍元素。在某種程度上,開發(fā)迭代是一次完整地經(jīng)過所有工作流程的過程:(至少包括)需求工作流程、分析設計工作流程、實施工作流程和測試工作流程。實質上,它類似小型的瀑布式項目。所有的階段(需求及其它)都可以細分為迭代。每一次的迭代都會產(chǎn)生一個可以發(fā)布的產(chǎn)品,這個產(chǎn)品是最終產(chǎn)品的一個子集。JiangsuMicrosoftTechnologyCenter40迭代模型(IterativeModel)迭代被定義為:迭代模型圖JiangsuMicrosoftTechnologyCenter41迭代模型圖JiangsuMicrosoftTechnol迭代模型的優(yōu)缺點優(yōu)點降低了在一個增量上的開支風險。如果開發(fā)人員重復某個迭代,那么損失只是這一個開發(fā)有誤的迭代的花費。降低了產(chǎn)品無法按照既定進度進入市場的風險。通過在開發(fā)早期就確定風險,可以盡早來解決而不至于在開發(fā)后期匆匆忙忙。加快了整個開發(fā)工作的進度。因為開發(fā)人員清楚問題的焦點所在,他們的工作會更有效率。由于用戶的需求并不能在一開始就作出完全的界定,它們通常是在后續(xù)階段中不斷細化的。因此,迭代過程這種模式使適應需求的變化會更容易些。缺點對項目組成員要求很高。必須掌握先進的開發(fā)工具JiangsuMicrosoftTechnologyCenter42迭代模型的優(yōu)缺點優(yōu)點JiangsuMicrosoftTe迭代模型的選擇條件選擇模型的條件:在項目開發(fā)早期需求可能有所變化。分析設計人員對應用領域很熟悉。高風險項目。用戶可不同程度地參與整個項目的開發(fā)過程。使用面向對象的語言或UML語言。使用CASE(ComputerAidedSoftwareEngineering,計算機輔助軟件工程)工具,如Rose。具有高素質的項目管理者和軟件研發(fā)團隊。JiangsuMicrosoftTechnologyCenter43迭代模型的選擇條件選擇模型的條件:JiangsuMicro原型模型先借用已有系統(tǒng)作為原型模型,通過“樣品”不斷改進,使得最后的產(chǎn)品就是用戶所需要的。在初步需求分析之后,馬上向客戶展示一個軟件產(chǎn)品原型,對客戶進行培訓,讓客戶試用,在試用中收集客戶意見,修改原型,再讓客戶試用,反復循環(huán)幾次,直到客戶確認為止。原型驅動。因此,開發(fā)者必須先有一個原型,至少要有一個原型的核心。JiangsuMicrosoftTechnologyCenter44原型模型先借用已有系統(tǒng)作為原型模型,通過“樣品”不斷改進,使原型模型圖JiangsuMicrosoftTechnologyCenter45原型模型圖JiangsuMicrosoftTechnol原型模型的優(yōu)缺點優(yōu)點開發(fā)人員和用戶在“原型”上達成一致。這樣一來,可以減少設計中的錯誤和開發(fā)中的風險,也減少了對用戶培訓的時間,而提高了系統(tǒng)的實用、正確性以及用戶的滿意程度縮短了開發(fā)周期,加快了工程進度降低成本缺點因為事先有一個展示性的產(chǎn)品原型,所以在一定程度上,不利于開發(fā)人員的創(chuàng)新當告訴用戶,還必須重新生產(chǎn)該產(chǎn)品時,用戶是很難接受的。這往往給工程繼續(xù)開展帶來不利因素。不宜利用原型系統(tǒng)作為最終產(chǎn)品。采用原型模型開發(fā)系統(tǒng),用戶和開發(fā)者必須達成一致:原型被建造僅僅是用戶用來定義需求,之后便部分或全部拋起,最終的軟件是要充分考慮了質量和可維護性等方面之后才被開發(fā)。JiangsuMicrosoftTechnologyCenter46原型模型的優(yōu)缺點優(yōu)點JiangsuMicrosoftTe原型模型的選擇條件選擇模型的條件:已有產(chǎn)品或產(chǎn)品的原型,只需客戶化的項目。簡單而熟悉的行業(yè)或領域。有快速原型開發(fā)工具。進行產(chǎn)品移植或升級。JiangsuMicrosoftTechnologyCenter47原型模型的選擇條件選擇模型的條件:JiangsuMicro開發(fā)模型的對比與關聯(lián)原型與迭代是包含的關系,一次迭代的過程可以采用原型法,也可以采用其它方法原型法里面的原型包括兩種拋棄型,只是為了獲得用戶需求,可能采用不同的技術實現(xiàn),得到用戶需求以后拋棄迭代型,開始完成的是系統(tǒng)核心功能或者是系統(tǒng)架構,逐步求精和完善增量和迭代的區(qū)別在于增量模型是從功能量上來劃分的,每階段完成一定的功能。迭代模型是從深度或細化的程度來劃分的,每階段功能得到完善、增強。增量和迭代的共同點是每個迭代和增量結束后都有產(chǎn)品發(fā)布。在實際應用中,增量、迭代經(jīng)常一起使用,如迭代時加入新的功能進行開發(fā),這也是他們經(jīng)常一起出現(xiàn)的原因。JiangsuMicrosoftTechnologyCenter48開發(fā)模型的對比與關聯(lián)原型與迭代是包含的關系,一次迭代的過程可開發(fā)模型小結進入IT企業(yè)參與軟件開發(fā)或軟件管理時,首先要明確:當前的項目或產(chǎn)品開發(fā)到底采用什么開發(fā)模型,由此確定軟件的生存周期和當前的軟件開發(fā)進度;合理安排項目組成員的工作。迅速適應IT企業(yè)文化,并很快進入角色。瀑布模型、增量模型、迭代模型和原型模型。因為4個模型各有所長,所以它們有各自的生存空間。因為它們各有所短,所示才會產(chǎn)生相互競爭,共同構成一個豐富多彩的多個模型競爭的世界。一個成熟的軟件組織,根據(jù)上述通用的4個軟件開發(fā)模型的普遍原則,結合本單位的開發(fā)經(jīng)驗和行業(yè)特點的具體實際,還需要定制適合本單位的“生存周期模型裁剪指南”,有針對性地對選定的軟件開發(fā)模型中定義的生存周期,進行恰當?shù)牟眉簦顾耆m合于本單位的需求。從而構成了完全適合本單位的“生存周期模型裁剪指南”。該“指南”在軟件組織內(nèi)部,專供高層經(jīng)理和項目經(jīng)理在軟件策劃中選取軟件開發(fā)模型時使用。JiangsuMicrosoftTechnologyCenter49開發(fā)模型小結進入IT企業(yè)參與軟件開發(fā)或軟件管理時,首先要明確感謝

ThankYouKrisZhang章征暉江蘇微軟技術中心zhangzh@感謝

ThankYouKrisZhang章征暉演講完畢,謝謝觀看!演講完畢,謝謝觀看!軟件工程基礎KrisZhang章征暉江蘇微軟技術中心zhangzh@軟件工程基礎KrisZhang章征暉前言《大道至簡—軟件工程實踐者的思想》---周愛民

在大學時代、在課桌上令人昏昏欲睡的《軟件工程》才是軟件開發(fā)中的髓質與靈魂選擇什么語言、如何重構、有沒有或應不應該采用某種模式,都是軟件開發(fā)的細微末節(jié)我們常常陷于行動而沒有思想,思想與行為脫節(jié)。常常知道做什么,但不知道為什么要這樣做JiangsuMicrosoftTechnologyCenter53

“停下來,思考才是進步的本質!”前言《大道至簡—軟件工程實踐者的思想》---周愛民Ji主題軟件工程的定義軟件工程的研究內(nèi)容軟件工程的基本原理軟件工程的作用軟件開發(fā)的4種常用方法軟件工程的5個面向理論軟件的支持過程軟件的管理過程軟件生存周期及開發(fā)模型JiangsuMicrosoftTechnologyCenter54RogerS.Pressman軟件過程改善和軟件工程技術方面國際知名的權威。30多年來,他作為軟件工程師、管理人員、教授、作者及咨詢顧問始終投身于軟件工程領域。主題軟件工程的定義JiangsuMicrosoftTec計算機工程的定義計算機由硬件和軟件組成計算機工程由硬件工程和軟件工程組成硬件工程:研究硬件生產(chǎn)和硬件管理的工程學科,包括計算機及網(wǎng)絡硬件的分析、設計、生產(chǎn)、采購、驗收、安裝、培訓、維護等。軟件工程:研究軟件生產(chǎn)和軟件管理的工程學科,包括市場調研、正式立項、項目策劃、需求分析、概要設計、詳細設計、編程、測試、試運行、產(chǎn)品發(fā)布、用戶培訓、產(chǎn)品復制、銷售、實施、系統(tǒng)維護、版本升級等。系統(tǒng)集成工程:有時也稱網(wǎng)絡工程,介于硬件工程和軟件工程之間的系統(tǒng)工程(如:規(guī)劃設計安裝一個校園網(wǎng))JiangsuMicrosoftTechnologyCenter55計算機工程的定義計算機由硬件和軟件組成JiangsuMic程序與軟件定義程序的定義面向過程的程序=算法+數(shù)據(jù)結構面向對象的程序=對象+消息面向構件的程序=構件+構架軟件的定義軟件=程序+數(shù)據(jù)+文檔JiangsuMicrosoftTechnologyCenter56“人生就是一段程序,這段程序是用特殊代碼寫成的,只是算法極其復雜而已?!背绦蚺c軟件定義程序的定義JiangsuMicrosoft軟件≠程序越早開始寫代碼的人,就是越遲完成代碼的人!JiangsuMicrosoftTechnologyCenter57年代對軟件定義的認識20世紀50年代軟件就等于程序,軟件系統(tǒng)就是程序系統(tǒng)20世紀60年代軟件等于程序加文檔,這里的文檔僅指開發(fā)文檔,即軟件開發(fā)過程中的分析、設計、實現(xiàn)、測試、維護文檔,還不包括管理文檔20世紀70年代軟件等于程序加文檔和數(shù)據(jù),這里的文檔指開發(fā)文檔和管理文檔,這里的數(shù)據(jù)不僅包括初始化數(shù)據(jù)、測試數(shù)據(jù)、而且包括研發(fā)數(shù)據(jù)、運行數(shù)據(jù)、維護數(shù)據(jù),也包括軟件企業(yè)積累的項目工程數(shù)據(jù)和項目管理數(shù)據(jù)中的大量決策原始記錄數(shù)據(jù)軟件≠程序越早開始寫代碼的人,就是越遲完成代碼的人!Jian軟件工程的定義1993年,權威組織IEEE對軟件工程定義為:軟件工程是將系統(tǒng)化的、嚴格約束的、可量化的方法,應用于軟件開發(fā)、運行和維護中去。2001年,RogerS.Pressman對軟件工程的定義是:軟件工程是一個過程、一組方法和一系列工具?,F(xiàn)在的定義,軟件工程是研究軟件開發(fā)和軟件管理的一門工程科學。JiangsuMicrosoftTechnologyCenter58軟件工程的定義是與時俱進的軟件工程的定義1993年,權威組織IEEE對軟件工程定義為:軟件工程研究的內(nèi)容JiangsuMicrosoftTechnologyCenter59研究方面具體內(nèi)容軟件開發(fā)模型瀑布模型、增量模型、迭代模型、原型模型…軟件開發(fā)方法面向過程的方法、面向數(shù)據(jù)的方法、面向對象的方法…軟件支持工具建模工具、開發(fā)工具、測試工具、文檔工具、配置工具、安裝工具…軟件管理過程ISO9000、CMM/CMMI、微軟企業(yè)文化(MSF)、IBM企業(yè)文化、敏捷文化現(xiàn)象(XP)...軟件工程三要素:方法、工具、過程軟件工程研究的內(nèi)容JiangsuMicrosoftTec軟件工程的8個基本原理用分階段的生命周期計劃,嚴格管理軟件開發(fā)。堅持進行階段評審。實行嚴格的產(chǎn)品版本控制。采用現(xiàn)代程序設計技術。結果應能清楚地審查。文檔要有嚴格要求。開發(fā)小組的成員要少而精。要不斷地改進軟件工程實踐的經(jīng)驗和技術。牢記二八定律JiangsuMicrosoftTechnologyCenter60軟件工程的8個基本原理用分階段的生命周期計劃,嚴格管理軟件開軟件工程中的二八定律對軟件項目進度和工作量的估計:一般人主觀上認為已經(jīng)完成了80%,但實際上只完成了20%對程序中存在問題的估計:80%的問題存在于20%的程序之中對模塊功能的估計:20%的模塊,實現(xiàn)了80%的功能對人力資源的估計:20%的人,解決了軟件中80%的問題對投入資金的估計:企業(yè)信息系統(tǒng)中80%的問題,可以用20%的資金來解決。JiangsuMicrosoftTechnologyCenter61這條原理特別重要,項目經(jīng)理與高層經(jīng)理,要特別牢記!軟件工程中的二八定律對軟件項目進度和工作量的估計:一般人主觀軟件工程的作用從軟件項目團隊來講,解決在規(guī)定的時間內(nèi),按照規(guī)定的成本,完成預期質量目標(軟件的功能、性能和接口達到需求報告標準)的軟件。從軟件企業(yè)本身來講,解決持續(xù)地規(guī)范軟件開發(fā)過程和軟件管理過程,不斷地優(yōu)化軟件組織的個人素質和集體素質,從而逐漸增強軟件企業(yè)的市場競爭實力。從軟件發(fā)展進程來講,克服軟件危機,控制軟件進度,節(jié)約開發(fā)成本,提高軟件質量。從院校來講,以前它只是作為一門課或一本書?,F(xiàn)在它成為一個學科,一個體系,一個計算機學位,即軟件工程碩士學位和軟件工程博士學位。JiangsuMicrosoftTechnologyCenter62軟件工程的作用從軟件項目團隊來講,解決在規(guī)定的時間內(nèi),按照規(guī)軟件工程中的4個開發(fā)方法面向過程的方法面向對象的方法面向數(shù)據(jù)的方法形式化方法(*)JiangsuMicrosoftTechnologyCenter63軟件工程中的4個開發(fā)方法面向過程的方法JiangsuMic面向過程的方法內(nèi)容:面向過程需求分析、面向過程設計、面向過程編程、面向過程測試、面向過程維護、面向過程管理。面向過程的方法,又稱為面向功能的方法,或稱為結構化方法。特點:程序的執(zhí)行過程,不由用戶控制,完全由程序員控制。優(yōu)點:簡單實用。缺點:企圖用有窮的方法(枚舉法)來描述無窮的(隨機的)信息世界,所以不能完全描述信息世界;維護困難。JiangsuMicrosoftTechnologyCenter64面向過程的方法內(nèi)容:面向過程需求分析、面向過程設計、面向過程面向對象的方法內(nèi)容:面向對象需求分析、面向對象設計、面向對象編程、面向對象測試、面向對象維護、面向對象管理。在分析、設計、實現(xiàn)中用到“對象、類、繼承、消息通信”這四個基本概念,就是面向對象的方法。今天用UML來開發(fā)軟件,就是面向對象的方法。特點:(1).程序的執(zhí)行過程,不由程序員控制,完全由用戶控制。(2).分析設計時面向類,編程時面向對象。優(yōu)點:用無窮的方法來描述無窮的(隨機的)信息世界,所以能完全描述信息世界;易于維護。缺點:較難掌握。JiangsuMicrosoftTechnologyCenter65面向對象的方法內(nèi)容:面向對象需求分析、面向對象設計、面向對象面向數(shù)據(jù)的方法內(nèi)容:是建設信息系統(tǒng)數(shù)據(jù)庫和數(shù)據(jù)倉庫的基本方法。1)數(shù)據(jù)位于信息系統(tǒng)的中心。2)由元數(shù)據(jù)構成的數(shù)據(jù)模型是穩(wěn)定的。3)對元數(shù)據(jù)的處理方法是可變的。4)企業(yè)信息系統(tǒng)的核心是數(shù)據(jù)模型。5)系統(tǒng)的實現(xiàn)方法主要是面向對象。6)用戶始終參與信息系統(tǒng)的開發(fā)。特點:程序的執(zhí)行過程,有時由程序員控制,有時由用戶控制。優(yōu)點:適合數(shù)據(jù)層設計與實現(xiàn)。缺點:實現(xiàn)窗口界面較困難。JiangsuMicrosoftTechnologyCenter66面向數(shù)據(jù)的方法內(nèi)容:是建設信息系統(tǒng)數(shù)據(jù)庫和數(shù)據(jù)倉庫的基本方法形式化方法軟件工程的形式化方法是建立在嚴格數(shù)學基礎上、以邏輯推理為出發(fā)點、并且具有精確數(shù)學語義的開發(fā)方法。作為一種以數(shù)學邏輯為基礎的方法,形式化方法以其嚴密性越來越受到眾多領域的重視,尤其是在安全性和可靠性作為關鍵問題的系統(tǒng),如核電站、航空航天、鐵路運輸系統(tǒng)中得到了較為廣泛的應用。但是對于形式化方法在工業(yè)領域的實際應用問題,在軟件工程界,尤其是在系統(tǒng)開發(fā)人員當中,還存在著相當多的疑問。軟件工程中的形式化方法是軟件工程研究的領域之一,其內(nèi)容包括:有限狀態(tài)機、Statecharts、Petri網(wǎng)、通信順序進程、通信系統(tǒng)演算、一階邏輯、程序正確性證明、凈室軟件工程、時態(tài)邏輯、模型檢驗、Z形式規(guī)約語言、B語言和方法、VDM系統(tǒng)、Larch等。JiangsuMicrosoftTechnologyCenter67形式化方法軟件工程的形式化方法是建立在嚴格數(shù)學基礎上、以邏輯四種開發(fā)方法的比較JiangsuMicrosoftTechnologyCenter68方法名稱優(yōu)點缺點適合的場合面向過程的方法簡單好學不適應窗口界面,維護困難大型工程計算,實時數(shù)據(jù)跟蹤處理,各種自動化控制系統(tǒng),以及系統(tǒng)軟件實現(xiàn)等領域面向對象的方法功能強大,易于維護

不易掌握

互聯(lián)網(wǎng)絡時代,完全由用戶交互控制程序執(zhí)行過程的應用軟件和系統(tǒng)軟件的開發(fā)面向數(shù)據(jù)的方法通俗易懂不適應窗口界面

以關系數(shù)據(jù)庫管理系統(tǒng)為支撐環(huán)境的信息系統(tǒng)建設形式化方法準確、嚴謹難于上手和應用對安全性要求極高,不容許出錯的軟件系統(tǒng),如軍事、醫(yī)藥、交通等領域四種開發(fā)方法的比較JiangsuMicrosoftTec軟件工程中的5個面向原則面向流程分析。面向數(shù)據(jù)設計面向對象實現(xiàn)面向功能測試面向過程管理JiangsuMicrosoftTechnologyCenter69軟件工程中的5個面向原則面向流程分析。JiangsuMic面向流程分析面向流程分析,就是面向流程需求分析。在需求分析時,系統(tǒng)分析員要面向業(yè)務流、資金流、信息流進行分析。只有將這“三個流”分析透了,才建立好系統(tǒng)的業(yè)務模型和功能模型。因為計算機網(wǎng)絡在本質上只認識數(shù)據(jù)及數(shù)據(jù)流(嚴格地講,它只認識二進制數(shù)和二進制數(shù)據(jù)的流動),而且這“三個流”,可以用“數(shù)據(jù)流”這一個流程來代替,或者說“三個流”是“數(shù)據(jù)流”在三個不同方向的投影。JiangsuMicrosoftTechnologyCenter70面向流程分析面向流程分析,就是面向流程需求分析。Jiangs面向數(shù)據(jù)的設計面向數(shù)據(jù)設計,就是面向元數(shù)據(jù)進行概要設計。在系統(tǒng)設計時,系統(tǒng)設計師要采用面向數(shù)據(jù)的方法進行概要設計。面向數(shù)據(jù)就是面向“元數(shù)據(jù)”(Metadata)。概要設計的主要任務是建立系統(tǒng)的數(shù)據(jù)模型,包括概念數(shù)據(jù)模型CDM和物理數(shù)據(jù)模型PDM,以及體現(xiàn)業(yè)務規(guī)則的存儲過程和觸發(fā)器,然后以數(shù)據(jù)模型為支撐,去實現(xiàn)系統(tǒng)的業(yè)務模型和功能模型(包括性能模型和接口模型)。為此,要對元數(shù)據(jù)進行分析,只有將元數(shù)據(jù)分析透了,才能建立好由元數(shù)據(jù)所構成的數(shù)據(jù)模型。這里講的面向數(shù)據(jù)設計,主要表現(xiàn)在數(shù)據(jù)庫服務器上的關系數(shù)據(jù)庫設計。JiangsuMicrosoftTechnologyCenter71面向數(shù)據(jù)的設計面向數(shù)據(jù)設計,就是面向元數(shù)據(jù)進行概要設計。Ji面向對象的實現(xiàn)面向對象實現(xiàn),就是面向對象進行詳細設計和編程實現(xiàn)。在兩層結構(C/S)的客戶層上,在三層結構(B/A/S)的表示層和業(yè)務邏輯層上,進行詳細設計和編程實現(xiàn)時,要采用面向對象的方法。當然,在數(shù)據(jù)服務層上的設計和編程實現(xiàn),仍然要采用面向數(shù)據(jù)的方法,因為主要是設計和編寫存儲過程,它們是面向數(shù)據(jù)的,不是面向對象的。詳細設計和編程實現(xiàn),實質上是用構件加上程序來實現(xiàn)系統(tǒng)的業(yè)務模型和功能模型。只有對系統(tǒng)的三個模型思想(業(yè)務模型、功能模型、數(shù)據(jù)模型)吃透了,才能設計和編寫出合格的程序。面向對象實現(xiàn),實質上是面向類實現(xiàn),因為實例化的類稱為對象。JiangsuMicrosoftTechnologyCenter72面向對象的實現(xiàn)面向對象實現(xiàn),就是面向對象進行詳細設計和編程實面向功能的測試面向功能測試,就是面向功能進行單元測試、集成測試、Alpha測試和Beta測試(或系統(tǒng)測試和驗收測試)。在進行測試時,測試人員要采用面向功能的方法。這里講的功能,包括系統(tǒng)的功能、性能和接口三部分內(nèi)容。面向功能測試的方法就是黑盒子測試方法,隨著第四代程序設計語言和構件技術的發(fā)展,該測試方法會越來越廣泛。今后采用白盒子測試方法(面向程序執(zhí)行路徑測試)的人,只有從事軟件構件生產(chǎn)和核心代碼編程的極少數(shù)人員。JiangsuMicrosoftTechnologyCenter73面向功能的測試面向功能測試,就是面向功能進行單元測試、集成測面向過程的管理面向過程管理,就是面向過程對軟件生命周期各個階段進行管理和控制。因為軟件產(chǎn)品質量的提高與改進,完全取決于軟件企業(yè)生產(chǎn)過程的改善。無論是CMM/CMMI、ISO9000、微軟企業(yè)文化,都是站在軟件生命周期過程的觀念上去提高軟件企業(yè)的素質。那種認為“只要有幾個優(yōu)秀的程序員就能辦好軟件企業(yè),就能生產(chǎn)出高質量的軟件產(chǎn)品”的觀點,在上世紀80年代理直氣壯,在90年代還能解決溫飽問題,在本世紀就站不住腳了,混不下去了,因為他們是手工作坊式的開發(fā)方法,忽視了軟件中的面向過程管理。JiangsuMicrosoftTechnologyCenter74面向過程的管理面向過程管理,就是面向過程對軟件生命周期各個階軟件的支持過程軟件工程中的過程,是指軟件生命周期(LifeCycle)中的時間序列。過程作為一個時間序列,它自然有起始點和終止點。例如,可以將一個軟件的生命周期劃分為市場調研、立項、策劃、需求分析、概要設計、詳細設計、編程、單元測試、集成測試、運行、維護這幾個過程,前一過程的終止點就是后一過程的起始點。過程與階段(Phase)相對應,階段與里程碑(Milestone)相對應。某些重要的里程碑的產(chǎn)出物又稱為基線(baseline)。JiangsuMicrosoftTechnologyCenter75軟件的支持過程軟件工程中的過程,是指軟件生命周期(Life軟件的支持過程軟件工程的支持過程,由支持軟件生命周期各個階段的生產(chǎn)工具所組成。生產(chǎn)工具如需求分析工具、設計工具、實現(xiàn)工具、測試工具、維護工具、配置工具,開發(fā)環(huán)境。支持過程是通過支持工具來實現(xiàn)的。每一種支持工具都是當前軟件界的熱點之一,但它不是軟件工程的重點內(nèi)容。JiangsuMicrosoftTechnologyCenter76軟件的支持過程軟件工程的支持過程,由支持軟件生命周期各個階段軟件工程常用支持工具系統(tǒng)分析設計與建模工具IBMRationalRoseMicrosoftVisualStudioTeamSystemMicrosoftOfficeVisioforEnterpriseArchitects數(shù)據(jù)庫設計與建模工具SybasePowerDesignerCAERWinMicrosoftVisualStudioTeamSystemMicrosoftOfficeVisioforEnterpriseArchitects開發(fā)工具MicrosoftVisualStudioTeamSystem(.NET平臺)開源Eclipse(JAVA平臺)單元測試工具MicrosoftVisualStudioTeamSystem開源NUnit(.NET平臺)開源JUnit(JAVA平臺)JiangsuMicrosoftTechnologyCenter77軟件工程常用支持工具系統(tǒng)分析設計與建模工具JiangsuM軟件工程常用支持工具安裝工具MicrosoftVisualStudio.NETInstallShield開源NSIS(編寫安裝腳本)文檔工具MicrosoftHelpWorkshop(制作HLP文件)MicrosoftHTMLHelpWorkshop(制作CHM文件)開源NDoc(根據(jù)代碼注釋自動生成文檔)畫圖工具MicrosoftOfficeVisio源代碼管理工具MicrosoftVisualStudioTeamSystemMicrosoftVisualSourceSafe(VSS)開源ConcurrentVersionsSystem(CVS/CVSNT)項目管理工具MicrosoftVisualStudioTeamSystemMicrosoftOfficeProjectJiangsuMicrosoftTechnologyCenter78軟件工程常用支持工具安裝工具JiangsuMicrosof軟件的管理過程“外行關注結果,內(nèi)行關注過程”。1974年,美國人認識到“軟件需要管理”。1984年,美國人認識到“軟件管理是過程管理”。軟件工程中主要存在3類過程管理模型:

ISO9000質量管理和質量保證體系

CMM/CMMI過程能力成熟度模型企業(yè)文化(微軟企業(yè)文化、敏捷文化現(xiàn)象等)JiangsuMicrosoftTechnologyCenter79牢記:軟件管理過程比開發(fā)技術更重要!軟件的管理過程“外行關注結果,內(nèi)行關注過程”。Jiangsu軟件工程中的3類過程管理模型JiangsuMicrosoftTechnologyCenter80序號名稱來源特點1ISO9000質量管理和質量保證體系國際標準化組織

ISO

按20多個質量要素管理2CMM/CMMI軟件能力成熟度模型美國卡內(nèi)基-梅隆大學軟件工程研究所(CMU/SEI)按25個過程域PA,分階段模型和連續(xù)模型兩種方式管理屬于重載過程管理3軟件企業(yè)文化Microsoft公司、IBM公司、敏捷方法屬于輕載過程管理軟件工程中的3類過程管理模型JiangsuMicrosof軟件生存周期概論任何有生命的動物、植物和人,都有一個生存周期(LifeCycle),例如人的生存周期為胎兒、嬰兒、幼兒、兒童、少年、青年、中年、老年、死亡。沒有生命的事物或實體,例如PC機、路由器、家具、房子、汽車,它們也有一個生存周期,這個生存周期就是使用壽命,即生產(chǎn)周期加上使用周期。生存周期與開發(fā)模型有關。JiangsuMicrosoftTechnologyCenter81軟件生存周期概論任何有生命的動物、植物和人,都有一個生存周期軟件的生存周期(常規(guī))JiangsuMicrosoftTechnologyCenter82周期序號周期名稱周期序號周期名稱1立項(或簽合同)、下達任務書6軟件測試2需求分析7軟件發(fā)布與實施3概要設計8軟件維護4詳細設計9版本更新或退役5編碼實現(xiàn)///////////////////////////////軟件的生存周期(常規(guī))JiangsuMicrosoftT瀑布模型(WaterfallModel)定義:1970年溫斯頓?羅伊斯(WinstonRoyce)提出了著名的“瀑布模型”,直到80年代早期,它一直是唯一被廣泛采用的軟件開發(fā)模型。瀑布模型核心思想是按工序將問題化簡,將功能的實現(xiàn)與設計分開,便于分工協(xié)作,即采用結構化的分析與設計方法將邏輯實現(xiàn)與物理實現(xiàn)分開。將軟件生命周期劃分為制定計劃、需求分析、軟件設計、程序編寫、軟件測試和運行維護等六個基本活動,并且規(guī)定了它們自上而下、相互銜接的固定次序,如同瀑布流水,逐級下落。瀑布模型是最早出現(xiàn)的軟件開發(fā)模型,在軟件工程中占有重要的地位,它提供了軟件開發(fā)的基本框架。其過程是從上一項活動接收該項活動的工作對象作為輸入,利用這一輸入實施該項活動應完成的內(nèi)容給出該項活動的工作成果,并作為輸出傳給下一項活動。同時評審該項活動的實施,若確認,則繼續(xù)下一項活動;否則返回前面,甚至更前面的活動。對于經(jīng)常變化的項目而言,瀑布模型毫無價值。JiangsuMicrosoftTechnologyCenter83瀑布模型(WaterfallModel)定義:1970年溫瀑布模型圖JiangsuMicrosoftTechnologyCenter84瀑布模型圖JiangsuMicrosoftTechnol瀑布模型優(yōu)缺點優(yōu)點:提供了軟件開發(fā)的基本框架為項目提供了按階段劃分的檢查點當前一階段完成后,您只需要去關注后續(xù)階段可在迭代模型中應用瀑布模型(*)缺點:在項目各個階段之間極少有反饋由于開發(fā)模型是線性的,用戶只有等到整個過程的末期才能見到開發(fā)成果,從而增加了開發(fā)的風險通過過多的強制完成日期和里程碑來跟蹤各個項目階段。而且各個階段的劃分完全固定,階段之間產(chǎn)生大量的文檔,極大地增加了工作量早期的錯誤可能要等到開發(fā)后期的測試階段才能發(fā)現(xiàn),進而帶來嚴重的后果JiangsuMicrosoftTechnologyCenter85瀑布模型優(yōu)缺點優(yōu)點:JiangsuMicrosoftTe瀑布模型選擇條件選擇模型的條件:在開發(fā)時間內(nèi)需求沒有或很少變化。分析設計人員對應用領域很熟悉。低風險項目(對目標、環(huán)境很熟悉)。用戶使用環(huán)境很穩(wěn)定。用戶除提出需求以外,很少參與開發(fā)。JiangsuMicrosoftTechnologyCenter86瀑布模型選擇條件選擇模型的條件:JiangsuMicros增量模型增量模型將軟件產(chǎn)品看作一組增量構件,每次設計、實現(xiàn)、集成、測試和交付一塊構件,直到所有構件全部實現(xiàn)為止。要開發(fā)一個大的軟件系統(tǒng),先開發(fā)其中的一個核心模塊,后再開發(fā)其他模塊,這樣一個個模塊地增加上去,直至整個系統(tǒng)開發(fā)完畢為止。增量模型的特點是引進了增量包的概念,無須等到所有需求都出來,只要某個需求的增量包出來即可進行開發(fā)。雖然某個增量包可能還需要進一步適應客戶的需求并且更改,但只要這個增量包足夠小,其影響對整個項目來說是可以承受的。JiangsuMicrosoftTechnologyCenter87增量模型增量模型將軟件產(chǎn)品看作一組增量構件,每次設計、實現(xiàn)、增量模型圖JiangsuMicrosoftTechnologyCenter88增量模型圖JiangsuMicrosoftTechnol增量模型的優(yōu)缺點優(yōu)點采用增量模型的優(yōu)點是人員分配靈活,剛開始不用投入大量人力資源。如果核心產(chǎn)品很受歡迎,則可增加人力實現(xiàn)下一個增量。當配備的人員不能在設定的期限內(nèi)完成產(chǎn)品時,它提供了一種先推出核心產(chǎn)品的途徑。這樣即可先發(fā)布部分功能給客戶,對客戶起到鎮(zhèn)靜劑的作用。增量能夠有計劃地管理技術風險。缺點由于各個構件是逐漸并入已有的軟件體系結構中的,所以加入構件必須不破壞已構造好的系統(tǒng)部分,這需要軟件具備開放式的體系結構。在開發(fā)過程中,需求的變化是不可避免的。增量模型的靈活性可以使其適應這種變化的能力大大優(yōu)于瀑布模型和快速原型模型,但也很容易退化為邊做邊改模型,從而是軟件過程的控制失去整體性。如果增量包之間存在相交的情況且未很好處理,則必須做全盤系統(tǒng)分析,這種模型將功能細化后分別開發(fā)的方法較適應于需求經(jīng)常改變的軟件開發(fā)過程。JiangsuMicrosoftTechnologyCenter89增量模型的優(yōu)缺點優(yōu)點JiangsuMicrosoftTe增量模型的選擇條件選擇模型的條件:在項目開發(fā)過程中,客戶接受分階段交付。開發(fā)人員對應用領域不熟悉,難以一步到位。工期過緊的中等或高風險項目。用戶可參與到整個軟件開發(fā)過程中。使用面向對象語言或第四代語言。軟件公司自己有較好的類庫、構件庫。JiangsuMicrosoftTechnologyCenter90增量模型的選擇條件選擇模型的條件:Jia

溫馨提示

  • 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

提交評論