計算機(jī)科學(xué)導(dǎo)論課件第6章 軟件工程_第1頁
計算機(jī)科學(xué)導(dǎo)論課件第6章 軟件工程_第2頁
計算機(jī)科學(xué)導(dǎo)論課件第6章 軟件工程_第3頁
計算機(jī)科學(xué)導(dǎo)論課件第6章 軟件工程_第4頁
計算機(jī)科學(xué)導(dǎo)論課件第6章 軟件工程_第5頁
已閱讀5頁,還剩48頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第6章軟件工程問題引出人們把程序設(shè)計過程中遇到的困境稱為“軟件危機(jī)”.那么,如何走出這種困境,即如何運用現(xiàn)代軟件工程技術(shù)手段和方法開發(fā)出快速、高效、可靠和可維護(hù)的軟件?這就是本章所要討論的問題。軟件危機(jī)和軟件工程概念、軟件工程目標(biāo)、軟件工程原則、軟件過程模型、軟件生存周期和軟件質(zhì)量評價。教學(xué)重點教學(xué)要求了解:軟件危機(jī)和軟件工程概念;熟悉:

軟件工程目標(biāo)、軟件工程原則、軟件過程模型;掌握:軟件開發(fā)的基本方法和軟件質(zhì)量評價方法。§6.1軟件工程概述§6.4軟件質(zhì)量評價§6.3如阿健工程實施§6.2軟件過程本章教學(xué)內(nèi)容計算機(jī)軟件工程§6.1軟件工程概述

軟件工程是研究大規(guī)模程序設(shè)計的方法、工具和管理的一門工程科學(xué),它應(yīng)用計算機(jī)科學(xué)以及數(shù)學(xué)等原理,以工程化的原則和方法來指導(dǎo)計算機(jī)軟件開發(fā)過程。具體說,是用管理學(xué)的原理、方法來進(jìn)行軟件生產(chǎn)管理;用工程學(xué)的觀點來進(jìn)行費用估算、制定進(jìn)度和實施方案;用數(shù)學(xué)方法來建立軟件可靠性模型以及分析各種算法和性質(zhì),其目標(biāo)是提高軟件生產(chǎn)率和軟件質(zhì)量,降低軟件成本。軟件工程是在20世紀(jì)60年代末為了克服“軟件危機(jī)”,在這一領(lǐng)域做了大量工作,逐漸形成了系統(tǒng)的軟件開發(fā)理論、技術(shù)和方法。軟件工程的發(fā)展大體經(jīng)歷了3個時代:程序設(shè)計時代、軟件時代、軟件工程時代。軟件工程經(jīng)過40多年的研究與發(fā)展,正逐步走向成熟。6.1.1軟件危機(jī)

“軟件危機(jī)”(SoftwareCrisis)一詞是1968年北大西洋公約組織的計算機(jī)科學(xué)家在聯(lián)邦德國召開的國際學(xué)術(shù)會議上第一次提出了來的,是指軟件開發(fā)和維護(hù)過程中遇到的一系列嚴(yán)重問題。

1、產(chǎn)生軟件危機(jī)的原因早期的軟件開發(fā)依賴于開發(fā)人員的素質(zhì)和個人技能,沒有可遵循的原理、原則和方法,缺乏有效的管理。開發(fā)出來的軟件,在質(zhì)量、可靠性、可維護(hù)性等方面較差。2、軟件危機(jī)的表現(xiàn)軟件危機(jī)主要包括兩個方面:一是如何開發(fā)軟件,以滿足不斷增長,日趨復(fù)雜的需求;二是如何維護(hù)數(shù)量不斷膨脹的軟件產(chǎn)品,主要表現(xiàn)為:6.1.1軟件危機(jī)①不能正確地估計軟件開發(fā)成本和進(jìn)度,致使實際開發(fā)成本往往高出預(yù)算很多。

②軟件產(chǎn)品不可靠,軟件質(zhì)量差,滿足不了用戶的需求,甚至無法使用,維護(hù)困難。③交付使用的軟件不易演化,很少能夠重用,以致于不得不重復(fù)開發(fā)類似的軟件。④軟件生產(chǎn)率低下,遠(yuǎn)遠(yuǎn)滿足不了社會發(fā)展的需求。⑤軟件缺乏適當(dāng)?shù)奈臋n資料。

軟件工程的原則軟件開發(fā)目標(biāo)適用于所有的軟件系統(tǒng)開發(fā)。6.1.2軟件工程概念

1、軟件工程的定義

弗里茲?鮑爾(FritzBauer)曾經(jīng)為軟件工程下了定義:“軟件工程是為了經(jīng)濟(jì)地獲得能夠在實際機(jī)器上有效運行的可靠軟件而建立和使用的一系列完善的工程化原則”。

2、軟件工程要素

(1)軟件工程方法:包括項目計劃、系統(tǒng)需求分析、數(shù)據(jù)結(jié)構(gòu)、總體結(jié)構(gòu)設(shè)計、算法設(shè)計、編碼、測試以及維護(hù)等。

(2)軟件工程工具:為軟件工程方法提供了自動的或半自動的軟件支撐環(huán)境。計算機(jī)輔助軟件工程將各種軟件工具、開發(fā)機(jī)器和一個存放開發(fā)過程信息的工程數(shù)據(jù)庫組合起來形成千個軟件開發(fā)支撐系統(tǒng),即軟件工程環(huán)境。

(3)軟件工程過程:是將軟件工程的方法和工具綜合起來以達(dá)到合理、及時地進(jìn)行計算機(jī)軟件開發(fā)的目的。6.1.3軟件工程目標(biāo)

1可靠性:指能夠防止因概念、設(shè)計和結(jié)構(gòu)等方面的不完善造成的軟件系統(tǒng)失效,具有挽回系統(tǒng)失效的能力。2可修改性:指允許對系統(tǒng)進(jìn)行修改而不增加原系統(tǒng)的復(fù)雜性,是一個難以度量和難以達(dá)到的目標(biāo)。3有效性:指軟件系統(tǒng)能最有效地利用計算機(jī)的時間資源和空間資源,是衡量軟件質(zhì)量的一項重要技術(shù)指標(biāo)。4可理解性:指系統(tǒng)具有清晰的結(jié)構(gòu),能直接反映問題的需求。它有助于控制軟件系統(tǒng)的復(fù)雜性,支持軟件維護(hù)…5可維護(hù)性:指軟件產(chǎn)品交付使用后能夠?qū)λM(jìn)行修改,以便改正潛伏的錯誤,改進(jìn)性能和其它屬性。6.1.3軟件工程目標(biāo)

6可移植性:指軟件從一個計算機(jī)系統(tǒng)或環(huán)境搬到另一個計算機(jī)系統(tǒng)或環(huán)境的難易程度。7可重用性:指概念或功能相對獨立的一個或一組相關(guān)模塊定義為一個軟部件。8可適應(yīng)性:指軟件在不同的系統(tǒng)約束條件下,使用戶需求得到滿足的難易程度。9可追蹤性:指根據(jù)軟件需求對軟件設(shè)計進(jìn)行正向追蹤,或根據(jù)程序、軟件設(shè)計對軟件需求進(jìn)行逆向追蹤的能力。10可互操作性:指多個軟件元素相互通信并協(xié)同完成任務(wù)的能力。軟件工程是研究軟件結(jié)構(gòu)、軟件設(shè)計與維護(hù)方法、軟件工具與環(huán)境、軟件工程標(biāo)準(zhǔn)與規(guī)范、軟件開發(fā)與管理技術(shù)的相關(guān)理論。軟件工程的最終目標(biāo)是以較少投資獲得易于維護(hù)、高可靠性、高性能、按時交付的軟件產(chǎn)品。軟件工程目標(biāo)之間的關(guān)系如圖6-1所示。圖6-1

軟件工程目標(biāo)之間的關(guān)系互斥關(guān)系按時交付易于維護(hù)低開發(fā)成本高性能高可靠性互補關(guān)系6.1.3軟件工程目標(biāo)6.1.4軟件工程原則

1、選取合適的開發(fā)模型在系統(tǒng)設(shè)計中,軟件的需求、硬件需求以及其它因素之間是相互制約和影響的,需要權(quán)衡。

2、選取合適的設(shè)計方法在軟件設(shè)計中,通常要考慮軟件的特征,合適的設(shè)計方法有利于特征的實現(xiàn),以達(dá)到軟件工程的目標(biāo)。

(1)抽象(Abstraction):指抽取事物最基本的特性和行為,忽略非基本的細(xì)節(jié)。

(2)信息隱藏(Informationhiding):指將模塊中的軟件設(shè)計決策封裝起來的技術(shù)。由于對象或操作的實現(xiàn)細(xì)節(jié)被隱藏,軟件開發(fā)人員便能將注意力集中于更高層次的抽象上。

6.1.4軟件工程原則

(3)模塊化(Modularity):模塊是程序中邏輯上相對獨立的成分,是一個獨立的編程單位,應(yīng)有良好的接口定義。

(4)局部化(Localization):指要求在一個物理模塊內(nèi)集中邏輯上相互關(guān)聯(lián)的計算資源。從物理和邏輯兩個方面保證系統(tǒng)中模塊之間具有松散的耦合關(guān)系,而在模塊內(nèi)部有較強(qiáng)的內(nèi)聚性,這樣有助于控制解的復(fù)雜性。

(5)確定性(Accuracy):指軟件開發(fā)過程中所有概念的表達(dá)應(yīng)該是確定的、無歧義、規(guī)范的。

(6)一致性(Consistency):整個軟件系統(tǒng)的各個模塊均應(yīng)使用一致的概念、符號和術(shù)語;程序內(nèi)部接口應(yīng)保持一致;軟件與硬件接口應(yīng)保持一致;系統(tǒng)規(guī)格說明與系統(tǒng)行為應(yīng)保持一致;用于形式化規(guī)格說明的公理系統(tǒng)應(yīng)保持一致,等等。

6.1.4軟件工程原則

(7)完備性(Completeness):軟件系統(tǒng)不丟失任何重要成分,完全實現(xiàn)系統(tǒng)所需功能的程度在形式化開發(fā)方法中,按照給出的公理系統(tǒng),描述系統(tǒng)行為的充分性;當(dāng)系統(tǒng)處于出錯或非預(yù)期狀態(tài)時,系統(tǒng)行為保持正常的能力。

(8)可驗證性(Verifiability):開發(fā)大型軟件系統(tǒng)需要對系統(tǒng)逐步分解。系統(tǒng)分解應(yīng)該遵循系統(tǒng)容易檢查、測試、評審的原則,以便保證系統(tǒng)的正確性。

3、提供高質(zhì)量的工程支撐軟件工程項目的質(zhì)量與開銷直接取決于對軟件工程所提供的支撐質(zhì)量和效用。

4、重視軟件工程的管理軟件工程的管理直接影響可用資源的有效利用、生產(chǎn)滿足目標(biāo)的軟件產(chǎn)品以及提高軟件組織的生產(chǎn)能力等。

軟件過程(SoftwareProcesses)的概念在20世紀(jì)80年代被正式提出和明確定義,ISO9000將其過程定義為:“把輸入轉(zhuǎn)化為輸出的一組彼此相關(guān)的資源和活動”。進(jìn)入90年代,國際標(biāo)準(zhǔn)化組織(ISO)和國際電氣與電子工程師學(xué)會(IEEE)分別推出《軟件過程標(biāo)準(zhǔn)》,我們可將其描述為:軟件過程是一個為建造高質(zhì)量軟件所需完成任務(wù)的框架,即形成軟件產(chǎn)品的一系列步驟,包括中間產(chǎn)品、資源、角色及過程中采取的方法、工具等范疇。軟件過程規(guī)定了開發(fā)和維護(hù)一個軟件時,要實施的基本過程、活動和任務(wù),其目的是為各種人員提供一個公共的框架,以便用相同的語言進(jìn)行交流,用相似的方法進(jìn)行實施。這個相似的方法就是軟件生存周期、軟件開發(fā)模型和軟件開發(fā)方法。§6.2軟件工程過程6.2.1軟件生存周期軟件生存周期是軟件工程中的一個基礎(chǔ)概念,指軟件產(chǎn)品從提出開發(fā)要求、功能確定、設(shè)計再到開發(fā)成功投入使用,并在使用中不斷地修改、增補和完善,直至被新的需要所替代而停止該軟件的使用過程。軟件開發(fā)過程如圖6-2所示。軟件開發(fā)階段過時嗎?軟件運行階段軟件維護(hù)階段停止(廢棄)軟件規(guī)劃階段開始

6.2.1軟件生存周期軟件生存周期的劃分使得軟件開發(fā)變得“有章可循”,即前一階段任務(wù)的完成是后一階段的前提和基礎(chǔ);后一階段通常是將前一階段方案的進(jìn)一步具體化,而且每一階段的開始都有嚴(yán)格的技術(shù)標(biāo)準(zhǔn),每一個階段結(jié)束之前都要接受嚴(yán)格的技術(shù)評審。軟件生存周期各階段的任務(wù)和文檔要求如表6-1所示。階段/項目任務(wù)文檔軟件規(guī)劃階段問題定義確定問題的性質(zhì)、工程目標(biāo)以及規(guī)模作為項目計劃書中的一項項目計劃進(jìn)行可行性分析,安排資源分配、進(jìn)度可行性分析、項目計劃書需求分析確定軟件的功能、性能、數(shù)據(jù)、界面等需求規(guī)格說明書軟件開發(fā)階段系統(tǒng)設(shè)計把需求轉(zhuǎn)變?yōu)榉铣杀竞唾|(zhì)量要求方案設(shè)計說明書和數(shù)據(jù)說明書軟件編碼用程序語言將軟件設(shè)計轉(zhuǎn)變?yōu)楣δ艹绦蚓幋a規(guī)范的源程序清單軟件測試發(fā)現(xiàn)軟件中的錯誤并加以糾正軟件測試計劃和測試報告維護(hù)退役軟件維護(hù)為改正錯誤或滿足需要而修改和完善記錄軟件維護(hù)過程軟件退役終止對軟件產(chǎn)品的支持,軟件停止使用記錄軟件退役原因、日期6.2.2軟件開發(fā)模型軟件開發(fā)模型是從一個特定角度提出的軟件過程的簡化描述,是一種開發(fā)策略,這種策略針對軟件工程的各個階段提供了一套范型,使工程的進(jìn)展達(dá)到預(yù)期的目的。因此,可定義“軟件開發(fā)模型是軟件開發(fā)全部過程、活動和任務(wù)的結(jié)構(gòu)框架。自20世紀(jì)60年代以來,隨著軟件工程思想逐漸形成與發(fā)展,出現(xiàn)了很多軟件過程模型與方法,例如瀑布模型、增量模型和螺旋模型等,稱它們?yōu)閭鹘y(tǒng)軟件過程模型。這些模型的提出不斷豐富著軟件過程理論,也為開發(fā)者提供了一個可參考的過程框架。但是,這些新方法或多或少仍有局限性,這也是激勵人們對現(xiàn)有的軟件過程及其模型進(jìn)行持續(xù)改進(jìn)的原動力。下面簡要介紹幾種常見的軟件開發(fā)模型。

6.2.2軟件開發(fā)模型軟件開發(fā)模型BECDA演化模型

螺旋模型

智能模型

噴泉模型

瀑布模型6.2.2軟件開發(fā)模型

1、瀑布模型(WaterfallModel)

將開發(fā)過程劃分成若干個互相區(qū)別而又彼此聯(lián)系的階段,每個階段中的工作都以上一個階段工作的結(jié)果為依據(jù),同時為下一個階段的工作提供了前提,如圖6-3所示。圖6-3瀑布模型制訂計劃需求分析系統(tǒng)設(shè)計軟件編碼軟件測試使用、維護(hù)規(guī)劃階段開發(fā)階段維護(hù)階段

2、演化模型(EvolutionaryModel)

是針對事先不能完整定義需求的軟件項目開發(fā)。對需要開發(fā)的軟件給出基本需求,作第一次試驗開發(fā),其目標(biāo)僅在于探索可行性和弄清需求,取得有效的反饋信息,以支持軟件的最終設(shè)計和實現(xiàn),圖6-4是演化模型的例子。圖6-4演化模型例子工作版本2信息流信息流R2I/ASC/TDI/ASC/TDRn工作版本1工作版本nR1I/ASC/TD其中:R為需求;D為設(shè)計;C/T為編碼/測試;I/AS為安裝和驗收支持。6.2.2軟件開發(fā)模型

3、螺旋模型圖(SpiralModel)

是由TRW公司的B.Boehm于1988年提出的,它是將瀑布模型和演化模型結(jié)合起來,并強(qiáng)調(diào)其它模型均忽略了的風(fēng)險分析。該模型更適合于大型軟件的開發(fā),對于具有高度風(fēng)險的大型復(fù)雜軟件系統(tǒng)的開發(fā)是較為實際的方法。螺旋模型將開發(fā)劃在笛卡爾坐標(biāo)的4個象限上分別表達(dá)制定計劃、風(fēng)險分析、實施工程、客戶評估4個方面的活動,如圖6-5所示。沿著螺旋線每轉(zhuǎn)一圈,表示開發(fā)出一個更完善的新軟件版本。如果開發(fā)風(fēng)險過大,開發(fā)機(jī)構(gòu)和客戶無法接受,項目有可能就此終止;多數(shù)情況下會沿著螺旋線繼續(xù)下去,自內(nèi)向外逐步延伸,最終得到滿意的軟件產(chǎn)品。6.2.2軟件開發(fā)模型圖6-5螺旋模型累計成本提交線評審制訂計劃決定目標(biāo)、方案和限制風(fēng)險分析評價方案、識別風(fēng)險、消除風(fēng)險客戶評價實施工程開發(fā)、驗證下一產(chǎn)品6.2.2軟件開發(fā)模型

4、噴泉模型(FountainModel)是于1990年提出的一種新開發(fā)模型。噴泉一詞本身就體現(xiàn)了迭代和無間隙的特性,表明軟件開發(fā)活動之間沒有明顯的間隙。噴泉模型如圖6-6所示。圖6-6噴泉模型維

護(hù)確

認(rèn)實

現(xiàn)演

設(shè)

計分

析6.2.2軟件開發(fā)模型

5、智能模型(IntelligentModel)智能模型是基于知識的開發(fā)模型,它綜合了上述若干模型,并把專家系統(tǒng)結(jié)合在一起,是知識工程與軟件工程在開發(fā)模型上結(jié)合的產(chǎn)物。智能模型如圖6-7所示。圖6-7智能模型需求分析需求分析需求分析獲取需求需求分析具體描述優(yōu)化程序知識庫/專家系統(tǒng)6.2.2軟件開發(fā)模型軟件開發(fā)方法是在不斷的實踐過程中形成的,并在一定程度上受程序設(shè)計方法的影響,但軟件開發(fā)方法絕不僅僅限于程序設(shè)計,它包含了更多的軟件工程的活動,并且貫穿于整個軟件工程活動過程。都目前為止,常見的軟件開發(fā)方法有以下幾種。

1、Parnas方法最早的軟件開發(fā)方法是加拿大學(xué)者帕尼斯(DavidParnas)在1972年提出的,由于當(dāng)時軟件在可維護(hù)性和可靠性方面存在著嚴(yán)重問題,因此帕尼斯提出的方法是針對這兩個問題的。帕尼斯對軟件開發(fā)提出了深刻的見解,遺憾的是他沒有給出明確的工作流程,所以這一方法不能獨立使用,只能作為其它方法的補充。6.2.3軟件開發(fā)方法

2.Yourdon方法Yourdon方法是1978年由美國科學(xué)家尤頓和康斯坦丁提出來的結(jié)構(gòu)化方法,即SASD方法,也稱為面向功能或面向數(shù)據(jù)流的軟件開發(fā)方法。1979年湯姆·迪馬克對此方法作了進(jìn)一步的完善。Yourdon方法是20世紀(jì)80年代使用最廣泛的軟件開發(fā)方法,它首先使用結(jié)構(gòu)化分析方法對軟件進(jìn)行需求分析,然后用結(jié)構(gòu)化設(shè)計方法進(jìn)行總體設(shè)計,最后是結(jié)構(gòu)化編程。

3、面向數(shù)據(jù)結(jié)構(gòu)方法面向數(shù)據(jù)結(jié)構(gòu)方法是結(jié)構(gòu)化方法的變形,它注重數(shù)據(jù)結(jié)構(gòu)而不是數(shù)據(jù)流。結(jié)構(gòu)化方法以分析信息流為主,用數(shù)據(jù)流圖來表示信息流;面向數(shù)據(jù)結(jié)構(gòu)方法是從數(shù)據(jù)結(jié)構(gòu)方面分析,并用數(shù)據(jù)結(jié)構(gòu)圖來表示,至今仍廣泛使用的軟件開發(fā)方法。6.2.3軟件開發(fā)方法

4、面向問題分析法面向問題分析法(ProblemAnalysisMethod,PAM)是20世紀(jì)80年代末由日立公司提出的一種軟件開發(fā)方法。它的基本思想是:考慮到輸入、輸出數(shù)據(jù)結(jié)構(gòu),指導(dǎo)系統(tǒng)的分解,在系統(tǒng)分析指導(dǎo)下逐步綜合。這一方法的具體步驟是從輸入、輸出數(shù)據(jù)結(jié)構(gòu)導(dǎo)出基本處理框;分析這些處理框之間的先后關(guān)系;按先后關(guān)系逐步綜合處理框,直到畫出整個系統(tǒng)的PAD圖。從上述步驟中可以看出,這一方法本質(zhì)上是綜合的自底向上的方法,但在逐步綜合之前已進(jìn)行了有目的的分解,這個目的就是充分考慮系統(tǒng)的輸入、輸出數(shù)據(jù)結(jié)構(gòu)。PAM方法的另一個優(yōu)點是使用二維樹形結(jié)構(gòu)圖PAD,是到目前為止最好的詳細(xì)設(shè)計表示方法之一。6.2.3軟件開發(fā)方法

5、面向?qū)ο箝_發(fā)方法隨著OOP(面向?qū)ο缶幊蹋┫騉OD(面向?qū)ο笤O(shè)計)和OOP(面向?qū)ο蠓治觯┑陌l(fā)展,最終形成了面向?qū)ο蟮能浖_發(fā)方法(ObjectModelingTechnique,OMT)。面向?qū)ο蟮能浖_發(fā)方法是一種自底向上和自頂向下相結(jié)合的方法,并且它以對象建模為基礎(chǔ),不僅考慮了輸入、輸出數(shù)據(jù)結(jié)構(gòu),而且也包含了所有對象的數(shù)據(jù)結(jié)構(gòu),所以O(shè)MT完全實現(xiàn)了PAM沒有完全實現(xiàn)的目標(biāo)。不僅如此,面向?qū)ο蠹夹g(shù)在需求分析、可維護(hù)性和可靠性這3個軟件開發(fā)的關(guān)鍵環(huán)節(jié)和質(zhì)量指標(biāo)上有了實質(zhì)性的突破,基本解決了在這方面存在的嚴(yán)重問題。6.2.3軟件開發(fā)方法

6、可視化開發(fā)方法可視化開發(fā)方法是20世紀(jì)90年代軟件界最大的兩個熱點之一。隨著圖形用戶界面的興起,用戶界面在軟件系統(tǒng)中所占的比例也越來越大,有的甚至高達(dá)60%~70%。

7、軟件重用和組件連接軟件重用(Reuse)又稱軟件復(fù)用或軟件再用。軟件重用是利用已有的軟件成分來構(gòu)造新的軟件。它可以大大減少軟件開發(fā)所需的費用和時間,且有利于提高軟件的可維護(hù)性和可靠性。目前軟件重用沿著下面3個方向發(fā)展。6.2.3軟件開發(fā)方法

(1)基于軟件復(fù)用庫的軟件重用:是一種傳統(tǒng)的軟件重用技術(shù),這類軟件開發(fā)方法要求提供軟件可重用成分的模式分類和檢索,且要解決如何有效地組織、標(biāo)識、描述和引用這些軟件成分。

(2)與面向?qū)ο蠹夹g(shù)結(jié)合:OO技術(shù)中類的聚集、實例對類的成員函數(shù)或操作的引用、子類對父類的繼承等使軟件的可重用性有了較大的提高,而且這種類型的重用容易實現(xiàn),所以這種方式的軟件重用發(fā)展較快。

(3)組件連接:是目前發(fā)展最快的軟件重用方式。組件連接技術(shù)的實質(zhì)是一種軟件組件的接口標(biāo)準(zhǔn),任何人都可以按此標(biāo)準(zhǔn)獨立地開發(fā)組件和增值組件。這樣一來,應(yīng)用系統(tǒng)的開發(fā)人員可以把主要精力放在應(yīng)用系統(tǒng)本身的研究上,因為他們可在組件市場上購買所需的大部分組件。6.2.3軟件開發(fā)方法系統(tǒng)分析是為系統(tǒng)設(shè)計和系統(tǒng)實施提供可靠的具體依據(jù)。系統(tǒng)分析階段的主要活動包括系統(tǒng)初步調(diào)查、可行性研究、系統(tǒng)詳細(xì)調(diào)查和系統(tǒng)邏輯方案的提出。

1、系統(tǒng)初步調(diào)查系統(tǒng)初步調(diào)查是系統(tǒng)分析階段的第一項活動,也是整個系統(tǒng)開發(fā)的第一項活動,其主要目標(biāo)就是從系統(tǒng)分析人員和管理人員的角度看有無必要開發(fā)該系統(tǒng)。

2、可行性研究可行性研究的主要目標(biāo)是進(jìn)一步明確系統(tǒng)的目標(biāo)、規(guī)模與功能,對系統(tǒng)開發(fā)背景、必要性和意義進(jìn)行調(diào)查分析并根據(jù)需要和可能提出擬開發(fā)系統(tǒng)的初步方案與計劃,它包括三個方面:§6.3軟件工程過程6.3.1系統(tǒng)分析

(1)技術(shù)可行性:對現(xiàn)有技術(shù)進(jìn)行評價,分析系統(tǒng)是否可以利用現(xiàn)有技術(shù)來實施以及該技術(shù)對未來系統(tǒng)開發(fā)的影響。

(2)經(jīng)濟(jì)可行性:對組織的經(jīng)濟(jì)狀況和投資能力進(jìn)行分析,對系統(tǒng)的開發(fā)、運行和維護(hù)費用進(jìn)行估算,對系統(tǒng)建成后可能取得的社會效益及經(jīng)濟(jì)效益進(jìn)行估算。

(3)運行可行性:分析組織的現(xiàn)有機(jī)構(gòu)、人員、設(shè)施能否適應(yīng)新系統(tǒng)的運行??尚行匝芯客瓿珊?,要提交可行性研究報告??尚行匝芯繄蟾娴闹饕獌?nèi)容包括現(xiàn)行系統(tǒng)概況、用戶主要信息需求、擬開發(fā)系統(tǒng)的初步設(shè)計方案、技術(shù)可行性分析、經(jīng)濟(jì)可行性分析、運行可行性分析和結(jié)論。6.3.1系統(tǒng)分析

3、系統(tǒng)詳細(xì)調(diào)查系統(tǒng)詳細(xì)調(diào)查是在可行性研究的基礎(chǔ)上進(jìn)一步對現(xiàn)行系統(tǒng)進(jìn)行全面、深入的調(diào)查和分析,弄清楚現(xiàn)行系統(tǒng)運行狀況,發(fā)現(xiàn)其薄弱環(huán)節(jié),找出要解決問題的實質(zhì),確保所開發(fā)系統(tǒng)有效。系統(tǒng)詳細(xì)調(diào)查的主要工作包括對現(xiàn)行系統(tǒng)的目標(biāo)、主要功能、組織結(jié)構(gòu)、業(yè)務(wù)流程、數(shù)據(jù)流程的調(diào)查和分析。

4、系統(tǒng)分析說明書在對現(xiàn)行系統(tǒng)詳細(xì)調(diào)查分析的基礎(chǔ)上,著重對用戶需求進(jìn)行進(jìn)一步調(diào)查分析,明確用戶的信息需求,包括組織、發(fā)展、改革的總信息需求和各級管理人員完成各自工作任務(wù)的信息需求,確定新系統(tǒng)的邏輯功能,提出新系統(tǒng)的邏輯方案。編寫完成系統(tǒng)分析階段的最終成果——系統(tǒng)分析說明書。6.3.1系統(tǒng)分析

5、系統(tǒng)分析評審

為了提高軟件質(zhì)量,確保軟件開發(fā)成功,降低軟件開發(fā)成本,一旦對目標(biāo)系統(tǒng)提出具體要求之后必須嚴(yán)格驗證這些需求的正確性。系統(tǒng)分析評審應(yīng)該從以下4個方面進(jìn)行驗證。

(1)一致性:所有需求必須是一致的,任何一條需求不能和其它求互相矛盾。

(2)完整性:需求必須是完整的,規(guī)格說明書應(yīng)該包括用戶需要的每一個功能或性能。

(3)現(xiàn)實性:指定的需求應(yīng)該是用現(xiàn)有的硬件技術(shù)和軟件技術(shù)基本上可以實現(xiàn)的。

(4)有效性:必須證明需求是正確有效的,確實能解決用戶面對的問題。6.3.1系統(tǒng)分析軟件需求分析是一個不斷認(rèn)識和逐步細(xì)化的過程。在該過程中能將軟件計劃階段所確定的軟件范圍逐步細(xì)化到可詳細(xì)定義的程度,并分析和提出各種不同的軟件元素(程序、文件、數(shù)據(jù)庫、文檔等),然后為這些元素找到解決方法。

1、需求分析的任務(wù)需求分析是軟件規(guī)劃階段的最后一個步驟,它的基本任務(wù)是準(zhǔn)確地回答“系統(tǒng)必須做什么?”這個問題。需求分析階段的任務(wù)主要有以下4個方面。

(1)確定對系統(tǒng)的綜合需求:主要有系統(tǒng)功能需求、系統(tǒng)性能需求、系統(tǒng)運行需求以及將來可能提出的其它需求。這一過程中,系統(tǒng)分析人員要與用戶協(xié)商,澄清模糊需求,刪除無法做到的需求,改正錯誤需求。6.3.2需求分析

(2)分析系統(tǒng)的數(shù)據(jù)需求:就是由系統(tǒng)的信息流歸納抽象出數(shù)據(jù)元素組成、數(shù)據(jù)的邏輯關(guān)系、數(shù)據(jù)字典格式和數(shù)據(jù)模型;并以輸入/處理/輸出的結(jié)構(gòu)方式表示出來的過程。因此,必須分析系統(tǒng)的數(shù)據(jù)需求,這是軟件需求分析的一個重要任務(wù)。

(3)導(dǎo)出系統(tǒng)的邏輯模型:就是在理解當(dāng)前系統(tǒng)“怎么做”的基礎(chǔ)上;抽取其“做什么”的本質(zhì)。在物理模型中有許多物理因素,需要對物理模型進(jìn)行分析,區(qū)分本質(zhì)和非本質(zhì)因素,去掉那些非本質(zhì)因素就可獲得反映系統(tǒng)本質(zhì)的邏輯模型,只要明確目標(biāo)系統(tǒng)要“做什么”,就可以導(dǎo)出系統(tǒng)詳細(xì)的邏輯模型。

(4)修正系統(tǒng)開發(fā)計劃:在經(jīng)過需求分析階段的工作后,分析員對目標(biāo)系統(tǒng)有了更深入更具體的認(rèn)識,因此可以對系統(tǒng)的成本和進(jìn)度做出更準(zhǔn)確的估計,在此基礎(chǔ)上對開發(fā)計劃進(jìn)行修正。6.3.2需求分析

2、需求分析的步驟

(1)調(diào)查研究:分析人員協(xié)同程序員研究系統(tǒng)數(shù)據(jù)的流程及調(diào)查用戶需求或查閱可行性報告、項目開發(fā)計劃報告,訪問現(xiàn)場,獲得當(dāng)前系統(tǒng)的具體模型,以IPO圖或DFD圖表示。

(2)分析與綜合:從數(shù)據(jù)流和數(shù)據(jù)結(jié)構(gòu)出發(fā),逐步細(xì)化軟件功能,找出系統(tǒng)各元素之間的聯(lián)系、接口特性和設(shè)計上的限制,最終綜合成系統(tǒng)的解決方案,給出目標(biāo)系統(tǒng)的邏輯模型。

(3)書寫需求規(guī)格說明書:詳細(xì)說明軟件系統(tǒng)的功能需求、性能需求、接口需求、設(shè)計需求、基本結(jié)構(gòu)以及開發(fā)標(biāo)準(zhǔn)和驗收原則等。

(4)需求分析評審:需求分析的最后一步,應(yīng)該對功能的正確性、完整性、清晰性,以及其它需求給予評價。6.3.2需求分析

3、需求分析的基本原則近年來已提出了許多軟件分析與說明的方法,雖然各種分析方法都有其獨特的描述方法,但總的看來,所有需求分析方法都有共同適用的基本原則。

(1)必須清晰描述數(shù)據(jù)域和功能域:所有軟件定義與開發(fā)工作最終是為了解決數(shù)據(jù)處理問題,即將一種形式的數(shù)據(jù)轉(zhuǎn)換成另一種形式的數(shù)據(jù)。

(2)按自頂向下、逐層分解問題:在需求分析階段,軟件的功能域和信息域都能做進(jìn)一步的分解。

(3)給出系統(tǒng)的邏輯視圖和物理視圖:給出系統(tǒng)的邏輯視圖表示和物理視圖表示。6.3.2需求分析系統(tǒng)設(shè)計的主要目的是將系統(tǒng)分析階段提出的反映用戶需求的系統(tǒng)邏輯方案轉(zhuǎn)換成可以實施的物理(技術(shù)方案)。系統(tǒng)設(shè)計階段的主要工作可分為概要設(shè)計和詳細(xì)設(shè)計。

1、概要設(shè)計概要設(shè)計也稱為總體結(jié)構(gòu)設(shè)計,其內(nèi)容主要有網(wǎng)絡(luò)運行模式選擇、操作系統(tǒng)選擇、數(shù)據(jù)庫管理系統(tǒng)選擇、網(wǎng)絡(luò)平臺及其結(jié)構(gòu)選擇和系統(tǒng)功能結(jié)構(gòu)設(shè)計等。

(1)運行模式選擇:目前常用的運行模式有4種:單機(jī)模式、主機(jī)模式、客戶機(jī)服務(wù)器(C/S)模式、瀏覽器服務(wù)器(B/S)模式。模式的選擇根據(jù)軟件需求分析來確定,但對于信息管理一類的軟件,通常選擇客戶機(jī)服務(wù)器(C/S)模式或瀏覽器服務(wù)器(B/S)模式。6.3.3系統(tǒng)設(shè)計

(2)操作系統(tǒng)選擇:目前流行的操作系統(tǒng)較多,可以考慮運行模式和數(shù)據(jù)庫管理系統(tǒng)對環(huán)境的要求來確定。

(3)數(shù)據(jù)庫管理系統(tǒng)(DBMS)選擇:目前可供選擇的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)有Oracle、SQLServer、DB2和Access等。前三種系統(tǒng)都是大型數(shù)據(jù)庫管理系統(tǒng),Access是一種小型數(shù)據(jù)庫管理系統(tǒng),適用于在單機(jī)上設(shè)計開發(fā)小型軟件。

(4)網(wǎng)絡(luò)平臺及其結(jié)構(gòu)選擇:機(jī)關(guān)和各基層單位應(yīng)分別建立相對獨立的局域網(wǎng),各基層單位的局域網(wǎng)與機(jī)關(guān)的局域網(wǎng)互聯(lián)。當(dāng)然,整個組織也可以只建一個局域網(wǎng)。

(5)系統(tǒng)功能結(jié)構(gòu)設(shè)計:將整個系統(tǒng)合理地劃分成各個功能模塊,其主要原則是模塊內(nèi)部聯(lián)系越緊密越好,模塊之間聯(lián)系越松散越好。6.3.3系統(tǒng)設(shè)計

2、詳細(xì)設(shè)計是對概要設(shè)計的進(jìn)一步細(xì)化,設(shè)計內(nèi)容主要有4個方面。

(1)算法設(shè)計:是確定每個模塊內(nèi)部的詳細(xì)執(zhí)行過程,即設(shè)計出完成模塊功能所需要的工作步驟,

(2)程序編碼:系統(tǒng)設(shè)計的一項重要工作就是把管理對象數(shù)字化或字符化,這就是編碼設(shè)計。編碼的作用有三個:①標(biāo)識作用。用來標(biāo)識和確定某個具體的對象,以便于計算機(jī)的識別和區(qū)分。②統(tǒng)計和檢索作用。當(dāng)按對象的屬性或類別進(jìn)行編碼設(shè)計時,易于完成有關(guān)的統(tǒng)計和檢索工作。③對象狀態(tài)的描述作用。編碼可以用來標(biāo)明事物所處的狀態(tài),便于對象的動態(tài)管理。6.3.3系統(tǒng)設(shè)計

(3)數(shù)據(jù)庫設(shè)計:數(shù)據(jù)庫設(shè)計的科學(xué)、合理,可以提高系統(tǒng)開發(fā)效率和運行效率。數(shù)據(jù)庫設(shè)計要滿足下面三項要求。①符合用戶需求,設(shè)計的數(shù)據(jù)庫要能合理存儲用戶的所有數(shù)據(jù),并支持用戶需要進(jìn)行的所有操作。②與選用的數(shù)據(jù)庫管理系統(tǒng)(DBMS)所支持的數(shù)據(jù)模型相匹配,這樣便于數(shù)據(jù)庫設(shè)計方案在計算機(jī)上的實現(xiàn)。③數(shù)據(jù)組織合理,易于實現(xiàn)對數(shù)據(jù)的操作和維護(hù)。

(4)用戶界面設(shè)計:用戶界面指軟件系統(tǒng)與用戶交互的接口,通常包括輸出、輸入、人機(jī)對話的界面與方式等,界面設(shè)計目前已成為評價軟件質(zhì)量的一項重要指標(biāo)。用戶界面設(shè)計沒有什么統(tǒng)一的標(biāo)準(zhǔn),做到美觀大方、風(fēng)格與系統(tǒng)功能協(xié)調(diào)、方便用戶使用即可。6.3.3系統(tǒng)設(shè)計軟件編碼是用程序設(shè)計語言編寫出正確的、容易理解的、容易維護(hù)的程序模塊代碼。在編碼中要考慮以下幾個問題:●程序能按使用要求正確運行,這是最基本的要求。●程序易于調(diào)試、檢測?!癯绦蚩勺x性好,易于修改和維護(hù)。軟件編碼是通過軟件工具來實現(xiàn)的。軟件工具指能為軟件工程方法提供自動的或半自動的軟件支撐環(huán)境,支持軟件的開發(fā)、管理和各種軟件文檔的生成。它能在軟件開發(fā)的各個階段為開發(fā)人員提供幫助,有助于提高軟件開發(fā)的質(zhì)量和效率。軟件工具包括項目管理工具、配置管理工具、分析和設(shè)計工具、編程工具、測試工具等?,F(xiàn)在開發(fā)規(guī)模較大的軟件,一般都要借助于軟件工具或軟件開發(fā)環(huán)境或計算機(jī)輔助軟件工程

工具與環(huán)境的支持。6.3.4軟件編碼測試是軟件交付使用前的最后一個階段,是保證軟件質(zhì)量的關(guān)鍵步驟,是對需求分析、設(shè)計和編碼的最后復(fù)審。

1、軟件測試過程軟件測試項目通常包括以下4個方面。

(1)單元測試:在編寫出每個模塊的代碼之后就對它做必要的測試,所以又稱為“模塊測試”。

(2)集成測試:在所有模塊都通過單元測試后,將所有模塊按一定邏輯組裝成一個完整的程序,檢驗?zāi)K之間的接口關(guān)系、數(shù)據(jù)訪問、模塊調(diào)用、各組成部分是否按照系統(tǒng)設(shè)計和程序設(shè)計規(guī)范協(xié)同一致地工作等,所以集成測試又稱為綜合測試。

(3)確認(rèn)測試:包括功能測試、性能測試、強(qiáng)度測試和配置評審等內(nèi)容。6.3.5軟件測試

(4)系統(tǒng)測試:是軟件開發(fā)過程中的最后一項測試,包括驗收測試和安裝測試。驗收測試用來檢查系統(tǒng)能否滿足用戶需求,按用戶的意愿進(jìn)行工作;安裝測試是為確保系統(tǒng)應(yīng)有的功能。

2、軟件測試方法軟件測試方法很多,最常用的有黑盒測試法和白盒測試法。

(1)黑盒測試法:又稱功能測試、數(shù)據(jù)驅(qū)動測試。用這種方法進(jìn)行測試時,被測程序被當(dāng)做看不見內(nèi)部的黑盒。黑盒測試試圖發(fā)現(xiàn)功能錯誤或遺漏、界面錯誤、數(shù)據(jù)結(jié)構(gòu)或外部數(shù)據(jù)庫訪問錯誤、性能錯誤、初始化和終止錯誤。

(2)白盒測試法:也稱為結(jié)構(gòu)測試法,是基于程序內(nèi)部語句的邏輯結(jié)構(gòu)的測試。為此,在設(shè)計測試數(shù)據(jù)之前,必須仔細(xì)分析程序內(nèi)部的邏輯結(jié)構(gòu)。6.3.5軟件測試

1、軟件維護(hù)的分類包括糾錯性維護(hù)、適應(yīng)性維護(hù)、完善性維護(hù)和預(yù)防性維護(hù)。

2、軟件維護(hù)的任務(wù)在軟件可交付使用的整個期間,為適應(yīng)外界環(huán)境的變化以及擴(kuò)充功能和改善質(zhì)量6.4.1軟件質(zhì)量概念,對軟件進(jìn)行修改。軟件的維護(hù)不僅包括程序代碼的維護(hù),還包括文檔的維護(hù)。①系統(tǒng)文檔。包括開發(fā)軟件系統(tǒng)各個階段的有關(guān)文檔。②用戶文檔。包括系統(tǒng)功能、安裝、使用、參考手冊等。

3、軟件退役是軟件生存周期中的最后一個階段,終止對軟件產(chǎn)品的支持,軟件停止使用。6.3.6軟件維護(hù)§6.4

軟件質(zhì)量評價6.4.1軟件質(zhì)量概念

1、軟件質(zhì)量定義軟件質(zhì)量的定義有多種,無論采用何種形式的定義,軟件質(zhì)量的定義均包含以下3個方面的含義:

(1)與所確定的功能和性能需求的一致性:軟件需求是進(jìn)行“質(zhì)量”測量的基礎(chǔ),與需求不符必然質(zhì)量不高。

(2)與所成文的開發(fā)標(biāo)準(zhǔn)的一致性:開發(fā)標(biāo)準(zhǔn)定義了一組指導(dǎo)軟件開發(fā)的準(zhǔn)則,用來指導(dǎo)軟件人員用工程化方法開發(fā)軟件。如果不能遵照這些準(zhǔn)則,軟件的高質(zhì)量無法得到保證。

(3)與所有專業(yè)開發(fā)的軟件所期望的隱含特性的一致性:如果軟件只滿足那些精確定義了的需求而沒有滿足哪些隱含的需求,軟件質(zhì)量也就不能得到保證。6.4.1軟件質(zhì)量概念

2、軟件質(zhì)量的度量和評價一般來說,影響軟件質(zhì)量的因素可以分為以下兩大類:

(1)直接度量的因素:如單位時間內(nèi)千行代碼中所產(chǎn)生的錯誤數(shù)。

(2)間接度量的因素:在軟件開發(fā)和維護(hù)過程中,為了定量地評價軟件質(zhì)量,必須對軟件質(zhì)量特性進(jìn)行度量,以測定軟件具有要求質(zhì)量特性的程度。1976年,Boehm等人提出了定量評價軟件質(zhì)量的層次模型。Walters和McCall提出了從軟件質(zhì)量要素、準(zhǔn)則到度量的3個層次式的軟件質(zhì)量度量模型。G.Murine根據(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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論