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

下載本文檔

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

文檔簡介

第一章 軟件工程概述一、復習要求1. 了解軟件概念、特點及分類方法。2. 了解軟件發(fā)展及軟件危機的起因。3. 了解軟件工程過程及軟件生存期的概念。4. 了解軟件工程的概念及其要素。5. 了解軟件工程的基本目標和原則。二、內(nèi)容提要1. 軟件的概念、特點軟件是計算機系統(tǒng)中與硬件相互依存的另一部分,它是包括程序,數(shù)據(jù)及其相關文檔的完整集合。其中,程序是按事先設計的功能和性能要求執(zhí)行的指令序列;數(shù)據(jù)是使程序能正常操縱信息的數(shù)據(jù)結構;文檔是與程序開發(fā),維護和使用有關的圖文材料。軟件的特點是:(1) 軟件是一種邏輯實體,而不是具體的物理實體。因而它具有抽象性。(2) 軟件的生產(chǎn)與硬件不同,它沒有明顯的制造過程。對軟件的質(zhì)量控制,必須著重在軟件開發(fā)方面下功夫。(3) 在軟件的運行和使用期間,沒有硬件那樣的機械磨損,老化問題。任何機械、電子設備在運行和使用中,其失效率大都遵循如圖1.1(a)所示的型曲線(即浴盆曲線)。而軟件的情況與此不同,因為它不存在磨損和老化問題。然而它存在退化問題,必須要多次修改(維護)軟件,如圖1.1(b)所示。圖1.1 失效率曲線(4) 軟件的開發(fā)和運行常常受到計算機系統(tǒng)的限制,對計算機系統(tǒng)有著不同程度的依賴性。為了解除這種依賴性,在軟件開發(fā)中提出了軟件移植的問題。(5) 軟件的開發(fā)至今尚未完全擺脫手工藝的開發(fā)方式。(6) 軟件本身是復雜的。軟件的復雜性可能來自它所反映的實際問題的復雜性,也可能來自程序邏輯結構的復雜性。(7) 軟件成本相當昂貴。軟件的研制工作需要投入大量的、復雜的、高強度的腦力勞動,它的成本是比較高的。(8) 相當多的軟件工作涉及到社會因素。許多軟件的開發(fā)和運行涉及機構、體制及管理方式等問題,甚至涉及到人的觀念和人們的心理。它直接影響到項目的成敗。2.軟件的分類(1) 按軟件的功能進行劃分:系統(tǒng)軟件: 能與計算機硬件緊密配合在一起,使計算機系統(tǒng)各個部件、相關的軟件和數(shù)據(jù)協(xié)調(diào)、高效地工作的軟件。例如,操作系統(tǒng)、數(shù)據(jù)庫管理系統(tǒng)、設備驅(qū)動程序以及通信處理程序等。支撐軟件: 是協(xié)助用戶開發(fā)軟件的工具性軟件,其中包括幫助程序人員開發(fā)軟件產(chǎn)品的工具,也包括幫助管理人員控制開發(fā)的進程的工具。應用軟件: 是在特定領域內(nèi)開發(fā),為特定目的服務的一類軟件。(2) 按軟件規(guī)模進行劃分:按開發(fā)軟件所需的人力、時間以及完成的源程序行數(shù),可確定六種不同規(guī)模的軟件。表1.1軟件規(guī)模的分類類別參加人員數(shù)研制期限產(chǎn)品規(guī)模(源程序行數(shù))微型114周0.5k小型116月1k2k中型2512年5k50k大型52023年50k100k甚大型100100045年1M(=1000k)極大型20005000510年1M10M規(guī)模大、時間長、很多人參加的軟件項目,其開發(fā)工作必須要有軟件工程的知識做指導。而規(guī)模小、時間短、參加人員少的軟件項目也得有軟件工程概念,遵循一定的開發(fā)規(guī)范。其基本原則是一樣的,只是對軟件工程技術依賴的程度不同而已。(3) 按軟件工作方式劃分:實時處理軟件: 指在事件或數(shù)據(jù)產(chǎn)生時,立即予以處理,并及時反饋信號,控制需要監(jiān)測和控制的過程的軟件。主要包括數(shù)據(jù)采集,分析,輸出三部分。分時軟件: 允許多個聯(lián)機用戶同時使用計算機。交互式軟件: 能實現(xiàn)人機通信的軟件。批處理軟件: 把一組輸入作業(yè)或一批數(shù)據(jù)以成批處理的方式一次運行,按順序逐個處理完的軟件。(4) 按軟件服務對象的范圍劃分:項目軟件: 也稱定制軟件,是受某個特定客戶(或少數(shù)客戶)的委托,由一個或多個軟件開發(fā)機構在合同的約束下開發(fā)出來的軟件。例如軍用防空指揮系統(tǒng)、衛(wèi)星控制系統(tǒng)。產(chǎn)品軟件: 是由軟件開發(fā)機構開發(fā)出來直接提供給市場,或是為千百個用戶服務的軟件。例如,文字處理軟件、文本處理軟件、財務處理軟件、人事管理軟件等。(5) 按使用的頻度進行劃分:有的軟件開發(fā)出來僅供一次使用。例如用于人口普查、工業(yè)普查的軟件。另外有些軟件具有較高的使用頻度,如天氣預報軟件。(6) 按軟件失效的影響進行劃分:有的軟件在工作中出現(xiàn)了故障,造成軟件失效,可能給軟件整個系統(tǒng)帶來的影響不大。有的軟件一旦失效。可能釀成災難性后果。例如財務金融、交通通信、航空航天等軟件。我們稱這類軟件為關鍵軟件。3.軟件的發(fā)展和軟件危機自20世紀40年代中出現(xiàn)了世界上第一臺計算機以后,就有了程序的概念。其后經(jīng)歷了幾十年的發(fā)展,計算機軟件經(jīng)歷了三個發(fā)展階段:程序設計階段,約為50至60年代程序系統(tǒng)階段,約為60至70年代軟件工程階段,約為70年代以后幾十年來最根本的變化體現(xiàn)在:(1) 人們改變了對軟件的看法。50年代到60年代時,程序設計曾經(jīng)被看做是一種任人發(fā)揮創(chuàng)造才能的技術領域。當時人們認為,寫出的程序只要能在計算機上得出正確的結果,程序的寫法可以不受任何約束。隨著計算機的廣泛使用,人們要求這些程序容易看懂、容易使用,并且容易修改和擴充。于是,程序便從個人按自己意圖創(chuàng)造的“藝術品”轉變?yōu)槟鼙粡V大用戶接受的工程化產(chǎn)品。(2) 軟件的需求是軟件發(fā)展的動力。早期的程序開發(fā)者只是為了滿足自己的需要,這種自給自足的生產(chǎn)方式仍然是其低級階段的表現(xiàn)。進入軟件工程階段以后,軟件開發(fā)的成果具有社會屬性,它要在市場中流通以滿足廣大用戶的需要。(3) 軟件工作的范圍從只考慮程序的編寫擴展到涉及整個軟件生存周期。在軟件技術發(fā)展的第二階段,隨著計算機硬件技術的進步,要求軟件能與之相適應。然而軟件技術的進步一直未能滿足形勢發(fā)展提出的要求。致使問題積累起來,形成了日益尖銳的矛盾。這就導致了軟件危機。問題歸結起來有:(1) 缺乏軟件開發(fā)的經(jīng)驗和有關軟件開發(fā)數(shù)據(jù)的積累,使得開發(fā)工作的計劃很難制定。致使經(jīng)費預算常常突破,進度計劃無法遵循,開發(fā)完成的期限一拖再拖。(2) 軟件需求,在開發(fā)的初期階段提得不夠明確,或是未能得到確切的表達。開發(fā)工作開始后,軟件人員和用戶又未能及時交換意見,造成開發(fā)后期矛盾的集中暴露。(3) 開發(fā)過程沒有統(tǒng)一的、公認的方法論和規(guī)范指導,參加的人員各行其事。加之設計和實現(xiàn)過程的資料很不完整;或忽視了每個人工作與其他人的接口,使得軟件很難維護。(4) 未能在測試階段充分做好檢測工作,提交用戶的軟件質(zhì)量差,在運行中暴露出大量的問題。如果這些障礙不能突破,進而擺脫困境,軟件的發(fā)展是沒有出路的。4. 軟件工程過程和軟件生存周期許多計算機和軟件科學家嘗試,把其它工程領域中行之有效的工程學知識運用到軟件開發(fā)工作中來。經(jīng)過不斷實踐和總結,最后得出一個結論:按工程化的原則和方法組織軟件開發(fā)工作是有效的,是擺脫軟件危機的一個主要出路。(1) 軟件工程過程 (Software Engineering Process)軟件工程過程是為獲得軟件產(chǎn)品,在軟件工具支持下由軟件工程師完成的一系列軟件工程活動。軟件工程過程通常包含四種基本的過程活動:P (Plan) : 軟件規(guī)格說明。規(guī)定軟件的功能及其運行的限制;D (Do) : 軟件開發(fā)。產(chǎn)生滿足規(guī)格說明的軟件;C (Check) : 軟件確認。確認軟件能夠完成客戶提出的要求;A (Action) : 軟件演進。為滿足客戶的變更要求,軟件必須在使用的過程中演進。事實上,軟件工程過程是一個軟件開發(fā)機構針對某一類軟件產(chǎn)品為自己規(guī)定的工作步驟,它應當是科學的、合理的,否則必將影響到軟件產(chǎn)品的質(zhì)量。(2) 軟件生存周期 (life cycle)正如同任何事物一樣,軟件也有一個孕育、誕生、成長、成熟、衰亡的生存過程。我們稱其為計算機軟件的生存周期。根據(jù)這一思想,把上述基本的過程活動進一步展開,可以得到軟件生存周期的六個步驟。制定計劃 : 確定要開發(fā)軟件系統(tǒng)的總目標,給出它的功能、性能、可靠性以及接口等方面的要求;研究完成該項軟件任務的可行性,探討解決問題的可能方案;制定完成開發(fā)任務的實施計劃,連同可行性研究報告,提交管理部門審查。需求分析 : 對待開發(fā)軟件提出的需求進行分析并給出詳細的定義。編寫出軟件需求說明書及初步的用戶手冊,提交管理機構評審。軟件設計 : 把已確定了的各項需求轉換成一個相應的體系結構。進而對每個模塊要完成的工作進行具體的描述。編寫設計說明書,提交評審。程序編寫 : 把軟件設計轉換成計算機可以接受的程序代碼。軟件測試 : 在設計測試用例的基礎上檢驗軟件的各個組成部分。運行維護 : 已交付的軟件投入正式使用,并在運行過程中進行適當?shù)木S護。(3) 軟件生存周期模型軟件生存周期模型是從軟件項目需求定義直至軟件經(jīng)使用后廢棄為止,跨越整個生存周期的系統(tǒng)開發(fā)、運作和維護所實施的全部過程、活動和任務的結構框架。a) 瀑布模型 : 瀑布模型規(guī)定了各項軟件工程活動,包括:制定開發(fā)計劃,進行需求分析和說明,軟件設計,程序編碼。測試及運行維護,參看圖1.2。并且規(guī)定了它們自上而下,相互銜接的固定次序,如同瀑布流水,逐級下落。 圖1.2 軟件生存周期的瀑布模型然而軟件開發(fā)的實踐表明,上述各項活動之間并非完全是自上而下,呈線性圖式。實際情況是,每項開發(fā)活動均處于一個質(zhì)量環(huán)(輸入-處理-輸出-評審)中。只有當其工作得到確認,才能繼續(xù)進行下一項活動,在圖1.2中用向下的箭頭表示;否則返工,在圖1.2中由向上的箭頭表示。b) 演化模型 : 由于在項目開發(fā)的初始階段人們對軟件的需求認識常常不夠清晰,因而使得開發(fā)項目難于做到一次開發(fā)成功,出現(xiàn)返工再開發(fā)在所難免。因此,可以先做試驗開發(fā),其目標只是在于探索可行性,弄清軟件需求;然后在此基礎上獲得較為滿意的軟件產(chǎn)品。通常把第一次得到的試驗性產(chǎn)品稱為“原型”。c) 螺旋模型 : 對于復雜的大型軟件,開發(fā)一個原型往往達不到要求。螺旋模型將瀑布模型與演化模型結合起來,并且加入兩種模型均忽略了的風險分析。螺旋模型沿著螺線旋轉,如圖1.3所示,在笛卡爾坐標的四個象限上分別表達了四個方面的活動,即: 制定計劃確定軟件目標,選定實施方案,弄清項目開發(fā)的限制條件; 風險分析分析所選方案,考慮如何識別和消除風險; 實施工程實施軟件開發(fā) 客戶評估評價開發(fā)工作,提出修正建議。沿螺線自內(nèi)向外每旋轉一圈便開發(fā)出更為完善的一個新的軟件版本。圖1.3 螺旋模型d) 噴泉模型 : 噴泉模型對軟件復用和生存周期中多項開發(fā)活動的集成提供了支持,主要支持面向?qū)ο蟮拈_發(fā)方法?!皣娙币辉~本身體現(xiàn)了迭代和無間隙特性。系統(tǒng)某個部分常常重復工作多次,相關功能在每次迭代中隨之加入演進的系統(tǒng)。所謂無間隙是指在開發(fā)活動,即分析、設計和編碼之間不存在明顯的邊界。如圖1.4所示。圖1.4 噴泉模型e) 智能模型 : 智能模型是基于知識的軟件開發(fā)模型,它綜合了上述若干模型,并把專家系統(tǒng)結合在一起。該模型應用基于規(guī)則的系統(tǒng),采用歸約和推理機制,幫助軟件人員完成開發(fā)工作,并使維護在系統(tǒng)規(guī)格說明一級進行。5. 軟件工程的目標和原則(1) 軟件工程的定義Fritz Bauer曾經(jīng)為軟件工程下了定義:“軟件工程是為了經(jīng)濟地獲得能夠在實際機器上有效運行的可靠軟件而建立和使用的一系列完善的工程化原則?!?983年IEEE給出的定義為:“軟件工程是開發(fā)、運行、維護和修復軟件的系統(tǒng)方法”,其中,“軟件”的定義為:計算機程序、方法、規(guī)則、相關的文檔資料以及在計算機上運行時所必需的數(shù)據(jù)。后來盡管又有一些人提出了許多更為完善的定義,但主要思想都是強調(diào)在軟件開發(fā)過程中需要應用工程化原則的重要性。軟件工程包括三個要素:方法、工具和過程。軟件工程方法為軟件開發(fā)提供了“如何做”的技術。它包括了多方面的任務,如項目計劃與估算、軟件系統(tǒng)需求分析、數(shù)據(jù)結構、系統(tǒng)總體結構的設計、算法過程的設計、編碼、測試以及維護等。軟件工具為軟件工程方法提供了自動的或半自動的軟件支撐環(huán)境。目前,已經(jīng)推出了許多軟件工具,這些軟件工具集成起來,建立起稱之為計算機輔助軟件工程(CASE)的軟件開發(fā)支撐系統(tǒng)。CASE將各種軟件工具、開發(fā)機器和一個存放開發(fā)過程信息的工程數(shù)據(jù)庫組合起來形成一個軟件工程環(huán)境。軟件工程的過程則是將軟件工程的方法和工具綜合起來以達到合理、及時地進行計算機軟件開發(fā)的目的。過程定義了方法使用的順序、要求交付的文檔資料、為保證質(zhì)量和協(xié)調(diào)變化所需要的管理、及軟件開發(fā)各個階段完成的里程碑。(2) 軟件工程項目的基本目標組織實施軟件工程項目,最終希望得到項目的成功。所謂成功指的是達到以下幾個主要的目標:付出較低的開發(fā)成本;達到要求的軟件功能;取得較好的軟件性能;開發(fā)的軟件易于移植;需要較低的維護費用;能按時完成開發(fā)工作,及時交付使用。在具體項目的實際開發(fā)中,企圖讓以上幾個目標都達到理想的程度往往是非常困難的。 圖1.5 軟件工程目標之間的關系圖1.5表明了軟件工程目標之間存在的相互關系。其中有些目標之間是互補關系,例如,易于維護和高可靠性之間,低開發(fā)成本與按時交付之間。還有一些目標是彼此互斥的,例如,低開發(fā)成本與軟件可靠性之間,提高軟件性能與軟件可移植性之間,就存在沖突。(3) 軟件工程的原則以上的軟件工程基本目標適合于所有的軟件工程項目。為達到這些目標,在軟件開發(fā)過程中必須遵循下列軟件工程原則。抽象 : 抽取事物最基本的特性和行為,忽略非基本的細節(jié)。采用分層次抽象,自頂向下、逐層細化的辦法控制軟件開發(fā)過程的復雜性。信息隱蔽 : 將模塊設計成“黑箱”,實現(xiàn)的細節(jié)隱藏在模塊內(nèi)部,不讓模塊的使用者直接訪問。這就是信息封裝,使用與實現(xiàn)分離的原則。使用者只能通過模塊接口訪問模塊中封裝的數(shù)據(jù)。模塊化 : 模塊是程序中邏輯上相對獨立的成分,是獨立的編程單位,應有良好的接口定義。如C語言程序中的函數(shù)過程,C+語言程序中的類。模塊化有助于信息隱蔽和抽象,有助于表示復雜的系統(tǒng)。局部化 : 要求在一個物理模塊內(nèi)集中邏輯上相互關聯(lián)的計算機資源,保證模塊之間具有松散的耦合,模塊內(nèi)部具有較強的內(nèi)聚。這有助于控制解的復雜性。確定性 : 軟件開發(fā)過程中所有概念的表達應是確定的、無歧義性的、規(guī)范的。這有助于人們之間在交流時不會產(chǎn)生誤解、遺漏,保證整個開發(fā)工作協(xié)調(diào)一致。一致性 : 整個軟件系統(tǒng)(包括程序、文檔和數(shù)據(jù))的各個模塊應使用一致的概念、符號和術語。程序內(nèi)部接口應保持一致。軟件和硬件、操作系統(tǒng)的接口應保持一致。系統(tǒng)規(guī)格說明與系統(tǒng)行為應保持一致。用于形式化規(guī)格說明的公理系統(tǒng)應保持一致。完備性 : 軟件系統(tǒng)不丟失任何重要成分,可以完全實現(xiàn)系統(tǒng)所要求功能的程度。為了保證系統(tǒng)的完備性,在軟件開發(fā)和運行過程中需要嚴格的技術評審。可驗證性 : 開發(fā)大型的軟件系統(tǒng)需要對系統(tǒng)自頂向下、逐層分解。系統(tǒng)分解應遵循系統(tǒng)易于檢查、測試、評審的原則,以確保系統(tǒng)的正確性。使用一致性、完備性和可驗證性的原則可以幫助人們實現(xiàn)一個正確的系統(tǒng)。三、例題分析【例1】軟件是計算機系統(tǒng)中與硬件相互依存的另一部分,它是包括( A )、( B )及( C )的完整集合。其中,( A )是按事先設計的功能和性能要求執(zhí)行的指令序列。( B )是使程序能夠正確操縱信息的數(shù)據(jù)結構。( C )是與程序開發(fā)、維護和使用有關的圖文材料。供選擇的答案: AC. 軟件 程序 代碼 硬件 文檔 外設 數(shù)據(jù) 圖表答案:A. , B. , C. 分析:軟件是計算機系統(tǒng)中與硬件相互依存的另一部分,它是包括程序、數(shù)據(jù)及相關文檔的完整集合。其中,程序是按事先設計的功能和性能要求執(zhí)行的指令序列。數(shù)據(jù)是使程序能夠正確操縱信息的數(shù)據(jù)結構。文檔是與程序開發(fā)、維護和使用有關的圖文材料。需要注意的是,程序與算法在含義上有不同:算法的每一條指令必須是最基本的、必須通過有限步做完,而程序沒有這個要求。 【例2】開發(fā)軟件時對提高軟件開發(fā)人員工作效率至關重要的是( A )。軟件工程中描述生存周期的瀑布模型一般包括計劃、( B )、設計、編碼、測試、維護等幾個階段,其中設計階段在管理上又可以依次分成( C )和( D )兩步。 供選擇的答案:A 程序開發(fā)環(huán)境 操作系統(tǒng)的資源管理功能 程序人員數(shù)量 計算機的并行處理能力B 需求分析 需求調(diào)查 可行性分析 問題定義C、D 方案設計 代碼設計 概要設計 數(shù)據(jù)設計 運行設計 詳細設計 故障處理設計 軟件體系結構設計答案:A. , B. ,C. , D. 分析:有合適的程序開發(fā)環(huán)境可以提供有用的工具,大大提高開發(fā)人員的工作效率。軟件工程中描述軟件生存周期的瀑布模型一般包括計劃、需求分析、設計、編碼、測試和運行維護等六個階段。需求分析完成對軟件產(chǎn)品在功能、性能、用戶接口、運行環(huán)境、可靠性、安全性、開發(fā)資源、開發(fā)進度、開發(fā)成本等方面的需求定義。問題定義、可行性分析、需求調(diào)查都可能是需求分析中要做的一部分工作。軟件設計在管理上劃分為概要設計與詳細設計兩個步驟。概要設計的目標是建立軟件的體系結構,完成全局數(shù)據(jù)結構設計,同時進行處理方式設計、運行配置設計、出錯處理設計、故障恢復設計等。詳細設計是對每一個模塊的操作的控制流程和局部數(shù)據(jù)結構進行設計?!纠?】從供選擇的答案中選出適當字句填入下列關于軟件發(fā)展過程的敘述中的( )內(nèi)。有人將軟件的發(fā)展過程劃分為4個階段:第一階段(19501950年代末)稱為“程序設計的原始時期”,這時既沒有( A ),也沒有( B ),程序員只能用機器指令編寫程序。第二階段(1950年代末1960年代末)稱為“基本軟件期”。出現(xiàn)了( A ),并逐漸普及。隨著( B )的發(fā)展,編譯技術也有較大的發(fā)展。第三階段(1960年代末1970年代中期)稱為“程序設計方法時代”。這一時期,與硬件費用下降相反,軟件開發(fā)費急劇上升。人們提出了( C )和( D )等程序設計方法,設法降低軟件的開發(fā)費用。第四階段(1970年代中期現(xiàn)在)稱為“軟件工程時期”。軟件開發(fā)技術不再僅僅是程序設計技術,而是包括了與軟件開發(fā)的各個階段,如( E )、( F )、編碼、單元測試、綜合測試、( G )及其整體有關的各種管理技術。供選擇的答案:A D: 匯編語言 操作系統(tǒng) 虛擬存儲器概念 高級語言 結構式程序設計 數(shù)據(jù)庫概念 固件 模塊化程序設計E G: 使用和維護 兼容性的確認 完整性的確認 設計 需求定義 圖象處理答案:A. , B. , C. , D. , E. , F. , G. 。注意,C與D的答案順序可互換。分析:在軟件發(fā)展的早期,匯編語言和高級語言尚未出現(xiàn),人們只能用機器指令來編寫程序。為了好讀,有的指令系統(tǒng)可以用八進制代碼書寫。其后,由于匯編語言的出現(xiàn),人們擺脫了繁重的地址分配等工作,可以用符號編程。隨著高級語言的出現(xiàn)和普及,人們用近似于自然語言的語句編寫程序,大大減輕了程序員的負擔。高級語言的處理,從解釋執(zhí)行到編譯執(zhí)行,處理效率和存儲利用率不斷提高。結構化程序設計和模塊化程序設計是科學家為解決軟件危機,借用其它領域的技術改進程序設計方法而提出來的。由于這些技術的使用,提高了程序的可讀性、局部性、抽象性、清晰性、簡單性、確定性、一致性等,降低了程序開發(fā)的費用。后來發(fā)展到軟件工程階段,明確地劃分了軟件開發(fā)階段,規(guī)范了軟件開發(fā)過程,明確了各個階段的任務以及應交付的成果和里程碑,使得軟件開發(fā)逐步達到工程化和標準化。四、習題【1-1】軟件工程過程有哪幾個基本過程活動?試說明之?!?-2】試說明“軟件生存周期”的概念?!?-3】試論述瀑布模型軟件開發(fā)方法的基本過程?!?-4】軟件工程是開發(fā)、運行、維護和修復軟件的系統(tǒng)化方法,它包含哪些要素?試說明之。【1-5】軟件工程學的基本原則有哪些?試說明之?!?-6】有人說:軟件開發(fā)時,一個錯誤發(fā)現(xiàn)得越晚,為改正它所付出的代價就越大。對否?請解釋你的回答。五、習題解答【1-1】軟件工程過程的基本過程活動有4步:P (Plan) : 軟件規(guī)格說明。規(guī)定軟件的功能及其運行的限制;D (Do) : 軟件開發(fā)。產(chǎn)生滿足規(guī)格說明的軟件;C (Check) : 軟件確認。確認軟件能夠完成客戶提出的要求; A (Action) : 軟件演進。為滿足客戶的變更要求,軟件必須在使用的過程中演進?!?-2】軟件與任何一個事物一樣,有它的孕育、誕生、成長、成熟、衰亡的生存過程。這就是軟件的生存周期。它主要分為6個階段:軟件項目計劃、軟件需求分析和定義、軟件設計、程序編碼、軟件測試,以及運行維護。(1) 軟件項目計劃 :在這一步要確定軟件工作范圍,進行軟件風險分析,預計軟件開發(fā)所需要的資源,建立成本與進度的估算。根據(jù)有關成本與進度的限制分析項目的可行性。(2) 軟件需求分析和定義 :在這一步詳細定義分配給軟件的系統(tǒng)元素??梢杂靡韵聝煞N方式中的一種對需求進行分析和定義。一種是正式的信息域分析,可用于建立信息流和信息結構的模型,然后逐漸擴充這些模型成為軟件的規(guī)格說明。另一種是軟件原型化方法,即建立軟件原型,并由用戶進行評價,從而確定軟件需求。(3) 軟件設計 :軟件的設計過程分兩步走。第一步進行概要設計,以結構設計和數(shù)據(jù)設計開始,建立程序的模塊結構,定義接口并建立數(shù)據(jù)結構。此外,要使用一些設計準則來判斷軟件的質(zhì)量。第二步做詳細設計,考慮設計每一個模塊部件的過程描述。經(jīng)過評審后,把每一個加細的過程性描述加到設計規(guī)格說明中去。(4) 程序編碼 :在設計完成之后,用一種適當?shù)某绦蛟O計語言或CASE工具生成源程序。應當就風格及清晰性對代碼進行評審,而且反過來應能直接追溯到詳細設計描述。(5) 軟件測試 :單元測試檢查每一單獨的模塊部件的功能和性能。組裝測試提供了構造軟件模塊結構的手段,同時測試其功能和接口。確認測試檢查所有的需求是否都得到滿足。在每一個測試步驟之后,要進行調(diào)試,以診斷和糾正軟件的故障。(6) 軟件維護 :為改正錯誤,適應環(huán)境變化及功能增強而進行的一系列修改活動。與軟件維護相關聯(lián)的那些任務依賴于所要實施的維護的類型?!?-3】瀑布模型規(guī)定了各項軟件工程活動,包括:制定軟件項目計劃,進行需求分析和定義,軟件設計,程序編碼,測試及運行維護。并且規(guī)定了它們自上而下,相互銜接的固定次序,如同瀑布流水,逐級下落。然而軟件開發(fā)的實踐表明,上述各項活動之間并非完全是自上而下,呈線性圖式。實際情況是,每項開發(fā)活動均應具有以下特征:(1) 從上一項活動接受本項活動的工作對象,做為輸入;(2) 利用這一輸入實施本項活動應完成的內(nèi)容;(3) 給出本項活動的工作成果,做為輸出傳給下一項活動;(4) 對本項活動實施的工作進行評審。若其工作得到確認,則繼續(xù)進行下一項活動,否則返回前項,甚至更前項的活動進行返工?!?-4】軟件工程包括三個要素:方法、工具和過程。軟件工程方法為軟件開發(fā)提供了“如何做”的技術。它包括了多方面的任務,如項目計劃與估算、軟件系統(tǒng)需求分析、數(shù)據(jù)結構、系統(tǒng)總體結構的設計、算法過程的設計、編碼、測試以及維護等。軟件工程方法常采用某一種特殊的語言或

溫馨提示

  • 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

提交評論