




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
軟件工程電子教學(xué)文檔第1章軟件工程概述
第2章軟件的定義及可行性研究第3章需求分析第4章軟件設(shè)計第5章面向?qū)ο筌浖こ?/p>
目錄
第6章編碼
第7章軟件測試
第8章軟件維護
第9章軟件項目管理
第10章軟件設(shè)計過程的技術(shù)與方法目錄
第1章軟件工程概述
內(nèi)容提要1.1軟件的概念、特點及分類1.2軟件開發(fā)引發(fā)的問題1.3軟件工程的基本內(nèi)容1.4軟件工程的基本目標和原則1.5本章小結(jié)
軟件的概念、特點及分類
軟件的概念、特點及分類1.1.1軟件的概念及其特點
從計算機應(yīng)用的角度來看,計算機軟件是計算機在各個方面應(yīng)用的基礎(chǔ)。計算機軟件不僅包含計算機可以識別的代碼形式,而且還包含每個項目內(nèi)部構(gòu)件的所有文件,如技術(shù)要求文件、設(shè)計文件、各種法律和財務(wù)上的文件、軟件項目管理計劃以及其他的管理文本和所有形式的手冊。因此,軟件是程序及程序開發(fā)、使用和維護過程中需要的所有文檔。計算機軟件從其特征上來看,主要有以下特點:軟件的概念、特點及分類1.軟件是邏輯意義上的概念而不是有形的系統(tǒng)中的部件。從這個意義上來說,軟件是具體化的知識,軟件的生產(chǎn)是一個知識化的腦力勞動過程,而不是一般的產(chǎn)品生產(chǎn)制造過程。2.軟件的退化和失效不是因為使用過程中的消耗和老化而是由軟件的自身缺陷以及維護修改不當導(dǎo)致的。軟件的維護與硬件的維修有著本質(zhì)的區(qū)別,它是一個使軟件持續(xù)發(fā)揮其效能的更復(fù)雜、更重要的過程。主要是為適應(yīng)對象的使用要求所做的軟件改進和軟件開發(fā)中存在缺陷的去除,而不是因部件損壞或失效使其恢復(fù)性能的一般修理。因此,軟件的維護在整個軟件的生命周期中起著舉足輕重的作用。3.由于軟件不能完全擺脫硬件和軟件環(huán)境而單獨發(fā)揮作用,因此軟件的開發(fā)必須考慮計算機系統(tǒng)所能提供的基礎(chǔ)條件,軟件開發(fā)和運行對計算機系統(tǒng)有一定的依賴性。4.由于軟件只有與實際應(yīng)用緊密相結(jié)合才能發(fā)揮出其獨特的效力,所以軟件一般都是由定制的專門化生產(chǎn)來滿足需求。從這個意義上講,一個軟件的應(yīng)用成功與否取決于軟件能否最大限度地滿足對象的使用要求。軟件的概念、特點及分類
5.軟件,特別是大型軟件的開發(fā)需要投入大量的、復(fù)雜的和高強度的腦力勞動,這導(dǎo)致了軟件的高成本特征。如今,軟件開發(fā)的費用已大大超過硬件的開銷。另外由于軟件開發(fā)技術(shù)本身的局限性和其他各方面因素的影響,大量軟件開發(fā)資金投入后并不能保證都能獲得預(yù)期的成果和回報。據(jù)統(tǒng)計,美國軍方每年花費數(shù)十億美元來購買軟件,其中可直接使用的僅占百分之二,另外有百分之三要做一些修改才能投入使用,剩下的百分之九十五由于基本不能滿足使用要求而失去了使用價值。由此可以看出,軟件開發(fā)具有高風險的特征。
軟件的概念、特點及分類軟件的概念、特點及分類
6.相對于計算機硬件技術(shù)的發(fā)展,計算機軟件技術(shù)的發(fā)展十分緩慢,不論是在理論研究中還是在實際開發(fā)的普及上都與計算機硬件的發(fā)展有相當?shù)木嚯x。面對計算機硬件的飛速發(fā)展,軟件已經(jīng)成為制約計算機技術(shù)發(fā)展和應(yīng)用的瓶頸。計算機軟件技術(shù)的發(fā)展時期:程序設(shè)計(ProgramDesign)時期(1947年~60年代初)程序系統(tǒng)(ProgramSystem)時期(60年代初~70年代初)軟件工程(SoftwareEngineering)時期(70年代初至今)其發(fā)展主線是由個體簡單的開發(fā)方式向著復(fù)雜、大規(guī)模、標準化、工程化的方向發(fā)展。在其最高階段,把軟件的開發(fā)界定為兩個方面的內(nèi)容:軟件開發(fā)和隨軟件應(yīng)用要求而帶來的軟件維護。軟件的概念、特點及分類1.1.2軟件的分類計算機軟件是一個涉及多個領(lǐng)域、應(yīng)用廣泛的概念。人們從各個不同的角度對計算機軟件提出了許多分類方法。目前一般的分類方法有:按軟件的功能進行劃分;按軟件的規(guī)模進行劃分;按軟件的工作方式進行劃分;按軟件服務(wù)對象的范圍進行劃分;按使用頻度進行劃分;按軟件失效影響進行劃分。從某種程度上說,要兼顧多個不同類型的對象和范圍對計算機軟件給出一個科學(xué)、通用的分類確實是一件不容易的事情。因為不管是從哪個角度講,隨著軟件復(fù)雜性的增加和應(yīng)用領(lǐng)域及對象的多樣性,各種分類方法都擺脫不了分類間的相互滲透,因此難以找出它們之間一般的差異性。軟件的概念、特點及分類從應(yīng)用領(lǐng)域的角度,把軟件做以下歸類。
系統(tǒng)軟件
實時軟件
嵌入式軟件
基于Web的軟件
實用軟件軟件的概念、特點及分類
1.系統(tǒng)軟件與計算機硬件緊密結(jié)合,構(gòu)成用戶在某一方面使用計算機的基礎(chǔ)平臺。它的功能既包括復(fù)雜信息的數(shù)據(jù)結(jié)構(gòu)處理,也包括計算機資源的共享與復(fù)雜的進程管理。不管哪種情況,系統(tǒng)軟件的工作通常都伴隨著與計算機硬件的頻繁交互,需要精細調(diào)度。它同時又具有良好的用戶支持、資源共享及多外部接口的特征,如操作系統(tǒng)、數(shù)據(jù)庫管理系統(tǒng)、設(shè)備驅(qū)動程序等。這些軟件在某種程度上具有較大范圍的適應(yīng)性,一般由專業(yè)的軟件公司有目的的開發(fā)并較好地維護。
2.實時軟件計算機的高速處理能力使得應(yīng)用計算機對事件和數(shù)據(jù)進行實時處理成為可能,例如,工業(yè)過程控制、衛(wèi)星導(dǎo)彈的運行控制、管理信息處理等等。這些完成處理、反饋、控制過程的軟件稱為實時軟件。這些軟件的特征是,對事件的響應(yīng)時間有嚴格限定。它主要包括數(shù)據(jù)收集、實時分析和輸出控制三個部分。實時軟件既可以應(yīng)用于信息處理,也可以廣泛應(yīng)用于過程控制。軟件的概念、特點及分類3.嵌入式軟件隨著智能化產(chǎn)品的不斷出現(xiàn),微型處理器(MCU)在消費產(chǎn)品和工業(yè)產(chǎn)品中的應(yīng)用越來越普及。這些用于提供控制和專職功能的軟件稱之為嵌入式軟件。嵌入式軟件一般為某一單獨的應(yīng)用專門設(shè)計,駐留在只讀內(nèi)存中,執(zhí)行有限的專職功能(如洗衣機、電冰箱等簡單器具的操作及控制)或提供重要的功能及復(fù)雜的控制能力(如空調(diào)器的控制、數(shù)控機床等控制系統(tǒng)),另外還可以用來進行信息處理(如電子詞典、PDA等)。軟件的概念、特點及分類軟件的概念、特點及分類4.基于Web的軟件互聯(lián)網(wǎng)的普及給計算機的應(yīng)用提供了更廣泛的空間,Internet提供了無所不包、使用方便的軟件資源。為了瀏覽和檢索,基于Web的可執(zhí)行指令(如CGI、HTML、Perl或Java)以及數(shù)據(jù)(如超文本以及可視、音頻等格式的數(shù)據(jù))等應(yīng)用于瀏覽器的軟件成為當今的又一個熱點。5.實用軟件這些軟件是針對計算機在某一領(lǐng)域或特定工作性質(zhì)的環(huán)境中應(yīng)用的具有一定通用性質(zhì)的軟件。它通常可分為應(yīng)用軟件和支撐軟件兩大類,應(yīng)用軟件是在操作系統(tǒng)的基礎(chǔ)上為某一特定領(lǐng)域應(yīng)用而開發(fā)的軟件,例如商業(yè)處理軟件、科學(xué)計算軟件、計算機輔助設(shè)計軟件、人工智能軟件等等;支撐軟件一般用來輔助和支持開發(fā)人員開發(fā)和維護軟件,例如需求分析工具、設(shè)計工具、編碼工具、測試工具、維護和管理工具等等。軟件的概念、特點及分類軟件開發(fā)引發(fā)的問題
1.2.1社會對軟件需求的不斷發(fā)展隨著社會的發(fā)展和科技的進步,人們需要解決的問題愈加復(fù)雜,并有更高的實時性要求。上述問題若單靠人工解決,不光是成本高而且要耗費大量的時間,有時甚至是問題解決了卻由于時間過長而失去了意義。對于種種單靠人類自身能力難以解決的問題,人們使用計算機而成功地達到了預(yù)期的目的。在計算機技術(shù)的應(yīng)用中,多樣化問題的解決,需要大量不同軟件的支持。因為離開了軟件,計算機將不能解決任何問題,所以作為當今計算機信息技術(shù)靈魂的軟件,隨著計算機應(yīng)用的日益普及和深化,它的數(shù)量正以驚人的速度急劇膨脹,復(fù)雜程度和規(guī)模也在迅速地增加。軟件開發(fā)引發(fā)的問題軟件開發(fā)引發(fā)的問題1.2.2軟件開發(fā)理念和手段與客觀實際存在的差異長期以來,由于計算機及其軟件技術(shù)發(fā)展的階段性和種種制約,人們總是憑著對計算機技術(shù)的片面理解和對實際問題的不充分的認識來進行軟件開發(fā)。應(yīng)用的開發(fā)理念和手段與客觀實際的情況存在較大的差異,這些差異的存在對軟件開發(fā)的各個環(huán)節(jié)形成了較大的障礙。目前,存在的差異主要表現(xiàn)在以下幾個方面。
1.對軟件本身的認識存在差異:
在計算機產(chǎn)生初期,計算機軟件被認為是獨立的程序,認識的角度是獨立的、個體的。那時認為軟件開發(fā)工作的主要任務(wù)就是編程,編程是程序設(shè)計人員個人技巧的充分發(fā)揮,工作是獨立完成的而且是無章可循的。沒有把個人的活動和整個軟件的開發(fā)活動結(jié)合起來,片面地夸大了個人的作用。整個軟件的開發(fā)過程缺乏系統(tǒng)的理論和方法,對軟件產(chǎn)品本身的認識也等同于一般的產(chǎn)品,把重點放到生產(chǎn)制造環(huán)節(jié),缺乏維護的思想。軟件開發(fā)引發(fā)的問題軟件開發(fā)引發(fā)的問題2.對軟件的服務(wù)對象認識不足:在人們的傳統(tǒng)認識中,一直把軟件開發(fā)的重點放在開發(fā)者本身上,而對使用者一方?jīng)]有給予足夠的重視。隨著軟件的日益復(fù)雜和規(guī)模的不斷擴大,軟件的專業(yè)性也隨之增強。這時軟件開發(fā)人員對實際問題的理解和認識就成了軟件開發(fā)成敗的關(guān)鍵所在。現(xiàn)代軟件工程要求對使用者提出的問題給予充分的認識和定義,并且進一步在軟件開發(fā)中加以完善。軟件開發(fā)引發(fā)的問題3.對軟件的開發(fā)缺乏科學(xué)的管理:現(xiàn)代軟件開發(fā)過程是一個復(fù)雜的系統(tǒng)工程,具有明顯的工程特征和較高的技術(shù)含量。由于軟件開發(fā)過程能見度低,管理人員對開發(fā)人員的工作和進度都難以把握,所以現(xiàn)有的管理手段和方法也難以適應(yīng)軟件開發(fā)的要求。例如,用一般工作量的衡量方法,比如以人·時、人·月或人·年作為計量單位的方法(簡稱人時、人月或人年)就難以準確地把握軟件開發(fā)的工作進度。因為在軟件的開發(fā)過程中,任務(wù)是不能簡單分解的。任務(wù)分解后,人員的增加會帶來溝通和交流的工作量增加,從而使總的工作量進一步增加。因此人員的數(shù)量和時間是不能簡單替換的,它們的關(guān)系見圖1.1。軟件開發(fā)引發(fā)的問題圖1.1軟件開發(fā)過程中人員的數(shù)量和時間的關(guān)系軟件開發(fā)引發(fā)的問題
4.軟件開發(fā)手段和工具的不完善:從人們長期的勞動實踐中可以看出,每一次先進工具的引入都會極大地提高生產(chǎn)效率。這一點在軟件開發(fā)的過程中也不例外。雖然在長期的軟件開發(fā)過程中人們一直在不斷地探索、研究和制造有效實用的開發(fā)工具,但是,由于軟件的開發(fā)工程是人類智慧的運用過程,所面臨的對象又是復(fù)雜多樣的,所以雖然目前出現(xiàn)了一些開發(fā)工具,但是都只能應(yīng)用在軟件開發(fā)的某一方面。尤其是在軟件的分析、設(shè)計階段,更無有效的工具,這一方面的工作還是主要由人工完成的。軟件開發(fā)引發(fā)的問題1.2.3由軟件開發(fā)導(dǎo)致的“軟件危機”
軟件危機是指在計算機軟件開發(fā)和維護過程中遇到的一系列嚴重問題。這些問題主要體現(xiàn)在如何開發(fā)軟件以滿足用戶日益增長的需求和如何對已有的軟件進行維護。對于這一系列源于軟件的開發(fā)理念、方法與客觀現(xiàn)實不適應(yīng)的嚴重問題,人們在軟件的開發(fā)過程中不是徹底失敗了就是雖然軟件開發(fā)出來了但是運行結(jié)果不甚理想,有的雖然完成了預(yù)定的功能要求但是在工期或者成本上卻大大超出了預(yù)算。軟件開發(fā)引發(fā)的問題軟件開發(fā)的高成本與軟件產(chǎn)品的低質(zhì)量之間的尖銳矛盾是導(dǎo)致軟件危機的主要原因。它的主要表現(xiàn)和產(chǎn)生原因可以歸結(jié)為以下幾個方面。
1.軟件開發(fā)成本和進度難以滿足要求在復(fù)雜多樣的軟件開發(fā)對象面前,沒有系統(tǒng)的開發(fā)手段和方法。開發(fā)具有較大的盲目性,從而導(dǎo)致不是經(jīng)費的大大超支就是工作完成期限一拖再拖。這不僅損害了軟件開發(fā)者的信譽,也極大地損害了委托開發(fā)者的利益。軟件開發(fā)引發(fā)的問題
2.軟件系統(tǒng)不能符合用戶的要求在軟件開發(fā)的初期,軟件設(shè)計的依據(jù)是根據(jù)用戶的需求提出的。由于種種原因,這些需求存在著用戶表達的局限性和開發(fā)者理解的差異性。若在軟件開發(fā)的過程中軟件開發(fā)人員和用戶沒有及時溝通和不斷地修正,則勢必造成開發(fā)的軟件與用戶的需求產(chǎn)生巨大的分歧,從而給雙方帶來巨大的損失。
軟件開發(fā)引發(fā)的問題3.軟件難以維護在傳統(tǒng)的軟件開發(fā)過程中,由于輕視軟件開發(fā)的管理和缺乏統(tǒng)一的要求,導(dǎo)致軟件設(shè)計人員存在較大的自由傾向性,加大了軟件對設(shè)計人員的依賴性。另外,在開發(fā)過程中對設(shè)計和實現(xiàn)過程的資料收集不夠重視,開發(fā)人員間的接口部分不規(guī)范,這些都給軟件的維護工作帶來了極大的困難甚至使維護工作不可行。
4.軟件工作不可靠
在軟件開發(fā)完成后由于種種原因不能保證軟件的正確性。軟件測試是保證軟件正常工作的重要環(huán)節(jié)。由于技術(shù)和其他方面的原因,軟件開發(fā)者未能對軟件做好充分的檢測工作,導(dǎo)致提交給用戶的軟件質(zhì)量難以保證。這些存在缺陷的軟件在運行中暴露出大量的問題,輕者影響系統(tǒng)的正常工作,重者會發(fā)生意想不到的重大事故。尋找解決軟件危機方法的過程就是軟件工程形成的過程。軟件工程目前已成為軟件開發(fā)中的一門綜合技術(shù)與管理兩個方面的新興學(xué)科,逐漸成為計算機軟件開發(fā)、維護和管理的重要理論依據(jù)。軟件開發(fā)引發(fā)的問題軟件工程的基本內(nèi)容軟件工程的基本內(nèi)容
軟件工程以計算機軟件生產(chǎn)為對象,其核心是以工程化的原理和方法對軟件進行規(guī)劃定義、開發(fā)和維護。其宗旨是以較少的投入,最快的時間生產(chǎn)出高質(zhì)量的軟件。
1.3.1軟件工程的概念及其要素一般認為,軟件工程學(xué)是指研究軟件生產(chǎn)過程的理論和方法以及綜合管理技術(shù)的應(yīng)用學(xué)科,凝聚了軟件實踐者的成功經(jīng)驗和失敗教訓(xùn)。軟件工程一詞最早是在1968年由北大西洋公約組織在聯(lián)邦德國召開的一次會議上針對軟件危機提出的。軟件工程的主要思想是強調(diào)軟件開發(fā)過程中應(yīng)用工程化原則的重要性。軟件工程的基本內(nèi)容作為一門獨立的學(xué)科,軟件工程的內(nèi)容包括三個方面的要素,即方法、工具和過程。軟件工程方法為軟件開發(fā)提供了開發(fā)、維護的實現(xiàn)技術(shù)。它采用特殊的語言或圖形方式、結(jié)合完善的質(zhì)量保證手段為軟件開發(fā)的各個階段提供了可靠的技術(shù)保證。軟件工具是為軟件工程方法的順利實施提供的軟件、技術(shù)的支撐環(huán)境,它為軟件工程方法提供了自動化或半自動化的支持。如果將多個工具集成起來,由一個工具輸出的信息就可以被另一個工具使用,這樣就創(chuàng)建了支持軟件開發(fā)的綜合系統(tǒng)——計算機輔助軟件工程(CASE)系統(tǒng)。
軟件工程的基本內(nèi)容軟件工程過程是軟件工程方法和軟件工程工具的綜合,以人為主為軟件開發(fā)過程制定的一系列可操作的步驟并規(guī)定了每一步使用的方法及產(chǎn)生的結(jié)果,其目的是合理、及時地進行計算機軟件開發(fā)。對軟件工程的認識既要借鑒傳統(tǒng)工程的知識、方法和技術(shù),又要充分考慮軟件自身的特殊性。在短短的30多年的發(fā)展歷程中,軟件工程的理論、方法和技術(shù)有了較大的發(fā)展,但是由于計算機技術(shù)本身就是一門新興的學(xué)科,所以還不能說軟件工程學(xué)科已經(jīng)像經(jīng)典的工程學(xué)科那樣成熟。軟件工程的基本內(nèi)容1.3.2軟件的生命周期軟件工程強調(diào)使用生命周期的方法從時間的角度對軟件開發(fā)和維護的復(fù)雜問題進行分解。使用這種方法把軟件從形成概念開始,經(jīng)過開發(fā)、使用和維護直到退役的漫長周期劃分為若干個階段,每個階段都有相對獨立的任務(wù)和解決的步驟和方法。這樣,有利于軟件開發(fā)過程的組織和管理,從而降低了整個軟件開發(fā)過程的困難程度。對每個階段都可選用最優(yōu)的管理方法,同時也使每個階段能夠規(guī)定更明確的目標和恰當?shù)膶徍藰藴省_@樣有利于保證軟件的質(zhì)量,大大地提高了軟件開發(fā)的生產(chǎn)效率和成功率。軟件工程的基本內(nèi)容
軟件生命周期的劃分涉及軟件本身以及軟件開發(fā)等方面的多種因素,而且從不同的角度出發(fā)也有不同的劃分方法。但它們都有一個統(tǒng)一的原則,即同一階段內(nèi)包含的任務(wù)性質(zhì)盡量統(tǒng)一,各階段任務(wù)間盡可能相對獨立。目前通常采用的方法是把軟件的生命周期劃分為三個時期,即軟件定義、軟件開發(fā)和軟件維護。在上述三個時期的敘述方法中,比較明確地揭示了軟件開發(fā)的基本過程。為了更加深入地揭示軟件的生命周期,給軟件開發(fā)提供更明確的指導(dǎo),我們把上述的基本時期進一步展開從而揭示軟件生命周期的更詳細、更具有明確特征的6個階段。即問題的定義和可行性研究、需求分析、軟件設(shè)計、程序編碼、軟件測試以及軟件的維護。軟件工程的基本內(nèi)容
1.問題的定義和可行性研究每一個軟件的開發(fā)都有確定的應(yīng)用領(lǐng)域及使用對象,要使開發(fā)出的軟件符合使用要求,就必須明確軟件要解決的問題。軟件開發(fā)人員通過與用戶的充分溝通,根據(jù)用戶提出的要求,從開發(fā)的角度把問題明晰化以作為軟件開發(fā)的依據(jù)。在問題明確后,接下來的工作就是針對問題進行項目實施的可行性研究,探討解決問題的可能方案,結(jié)合軟件開發(fā)、使用的可利用條件(計算機硬件、軟件、人力等資源)、開發(fā)費用以及軟件投入使用后的經(jīng)濟效益等方面的問題,對定義的問題做出客觀的評價,就問題的解決從技術(shù)、實施以及經(jīng)濟的角度做出是否可行的明確結(jié)論,以作為項目實施的決策依據(jù)。若可行,則在此基礎(chǔ)上制定出完成開發(fā)項目的實施計劃。軟件工程的基本內(nèi)容2.需求分析
在軟件開發(fā)的初期用戶提交系統(tǒng)要求時,一般只是從使用的角度,對所要求的內(nèi)容概略地確定使用計算機解決問題的框架。對于這些要求,有些是開發(fā)工作能夠滿足的,有些需要在實現(xiàn)方法上做一些修改,有些實施起來存在困難,另外還存在軟件可以實現(xiàn)而用戶沒有涉及到的功能。針對上面的問題,軟件設(shè)計人員需要在已經(jīng)明確定義了問題的基礎(chǔ)上,反復(fù)與用戶討論、溝通。使用戶針對提出的問題進一步明確所達到的目的。使軟件開發(fā)者與用戶對開發(fā)軟件的認識達成一致,從而得到更詳細的定義。最后根據(jù)分析的結(jié)果寫出軟件需求說明書以及與軟件相關(guān)的初步說明文件。軟件工程的基本內(nèi)容
3.軟件設(shè)計
軟件設(shè)計是軟件實現(xiàn)的一個重要過程。要實現(xiàn)一個軟件的良好設(shè)計,前提是對軟件需求的準確分析。有了良好的分析基礎(chǔ),首先進行總體設(shè)計,接下來再做詳細設(shè)計。在總體設(shè)計中,確定軟件系統(tǒng)的總體結(jié)構(gòu),結(jié)構(gòu)中的各部分由與特定需求相對應(yīng)的模塊組成,根據(jù)系統(tǒng)的實現(xiàn)要求確定模塊之間的關(guān)系。在詳細設(shè)計階段,對總體設(shè)計確定的功能模塊逐步進行細化,為軟件程序的編寫打下基礎(chǔ)。
軟件工程的基本內(nèi)容
在軟件設(shè)計中,為了提高工作效率,有許多可供選擇的方法和工具。隨著對軟件工程研究的不斷深入,大量的新方法和有效的工具不斷地涌現(xiàn),這無疑給軟件開發(fā)注入了新的活力。例如目前常用的結(jié)構(gòu)化設(shè)計方法、面向?qū)ο笤O(shè)計方法、統(tǒng)一建模語言UML以及產(chǎn)品化的輔助工具RationalRose軟件等。4.程序編碼軟件要發(fā)揮其功能最終是要有能在計算機上運行的、符合用戶要求的程序。軟件工程的基本內(nèi)容程序編碼的任務(wù)是應(yīng)用適當?shù)某绦蛘Z言,把軟件設(shè)計的結(jié)果轉(zhuǎn)換成計算機可運行的程序代碼。其要求是語言結(jié)構(gòu)清晰、能準確實現(xiàn)軟件的功能、有較高的運行效率并且易于維護。5.軟件測試為保證軟件的功能得以準確地實現(xiàn),在軟件設(shè)計完成后要經(jīng)過嚴格的測試,以發(fā)現(xiàn)軟件在整個設(shè)計過程中存在的問題并加以糾正。整個測試過程分單元測試、組裝測試以及系統(tǒng)測試三個階段進行。最后的結(jié)果是保證軟件達到預(yù)定的要求。軟件工程的基本內(nèi)容
6.軟件的維護軟件維護是軟件生命周期中持續(xù)時間最長的階段。在軟件開發(fā)完成并投入使用后,由于多方面的原因,軟件不能繼續(xù)適應(yīng)用戶的要求。要延續(xù)軟件的使用壽命,就必須對軟件進行維護。軟件的維護包括糾錯性維護和改進性維護兩個方面。軟件工程的基本內(nèi)容1.3.3軟件開發(fā)技術(shù)及過程管理
1.軟件開發(fā)模型
軟件開發(fā)模型是在軟件生命周期基礎(chǔ)上構(gòu)造出的由軟件開發(fā)全過程中的活動和任務(wù)組成的結(jié)構(gòu)框架。它反映了軟件開發(fā)中各種活動的組織銜接方式。它是軟件項目開發(fā)工作的基礎(chǔ)。它規(guī)定了軟件開發(fā)、運作和維護中所需的過程、活動和任務(wù)。軟件開發(fā)中使用的模型化方法就是用一定的流程將軟件開發(fā)的各個環(huán)節(jié)連接起來,用規(guī)范的方式操作的軟件實現(xiàn)過程,此過程類似于一般產(chǎn)品在工廠中的整個生產(chǎn)歷程。軟件工程的基本內(nèi)容目前軟件工程的研究學(xué)者和開發(fā)人員根據(jù)軟件開發(fā)的實踐經(jīng)驗提出了許多軟件開發(fā)模型,例如:
瀑布模型(圖1.2)
漸增式模型(圖1.3)
軟件重用模型
噴泉模型
螺旋模型(圖1.4)軟件工程的基本內(nèi)容圖1.2瀑布模型軟件工程的基本內(nèi)容圖1.3漸增式模型軟件工程的基本內(nèi)容軟件重用模型該模型是將有一般功能的軟件模塊組成重用庫,以備在下一次軟件開發(fā)中對有相近功能的模塊實現(xiàn)重用。這樣可減少軟件開發(fā)中的重復(fù)工作,提高開發(fā)效率,縮短開發(fā)周期,降低開發(fā)成本。軟件工程的基本內(nèi)容噴泉模型該模型主要是針對面向?qū)ο筌浖_發(fā)模式提出的,著重強調(diào)不同軟件開發(fā)階段的重疊,各階段沒有嚴格的分界線,在軟件開發(fā)過程中某一部分經(jīng)常需要重復(fù)進行多次。比如,每個軟件開發(fā)階段結(jié)束后都要進行復(fù)審。另外,噴泉模型也強調(diào)模塊的重用和合成,在設(shè)計中不強調(diào)從頭開始,而是盡可能利用已有的設(shè)計模塊。軟件工程的基本內(nèi)容圖1.4螺旋模型軟件工程的基本內(nèi)容
對于實際的軟件開發(fā),由于問題的復(fù)雜性,一般一種模型很難符合要求。通常把幾種模型組合在一起,配套使用,這樣就形成了組合模型。這種把模型組合的方法,允許一個項目沿著最有效的路徑發(fā)展,從而容易達到降低軟件開發(fā)成本、縮短軟件開發(fā)時間、提高軟件產(chǎn)品質(zhì)量的目的。軟件工程的基本內(nèi)容
2.軟件開發(fā)的主要技術(shù)在軟件開發(fā)中通常采用的技術(shù)方法有:
結(jié)構(gòu)化分析和設(shè)計技術(shù)
Jackson軟件設(shè)計技術(shù)
原型設(shè)計技術(shù)
面向?qū)ο蟮能浖O(shè)計技術(shù)軟件工程的基本內(nèi)容
結(jié)構(gòu)化分析和設(shè)計技術(shù)SADT(StructuredAnalysisandDesignTechnique)是Softech公司為解決復(fù)雜問題而提出的一種軟件設(shè)計技術(shù),它也是目前軟件系統(tǒng)開發(fā)中使用最廣泛的一種技術(shù)。SADT首先對問題進行結(jié)構(gòu)分析,然后逐層分解,直至明了做什么(在需求分析階段)或怎樣做(在設(shè)計階段)為止,最后寫出詳細的系統(tǒng)說明書。SADT技術(shù)軟件系統(tǒng)的開發(fā)過程以瀑布式生命周期模型為基礎(chǔ),主要用于需求分析和功能設(shè)計階段。軟件工程的基本內(nèi)容
Jackson技術(shù)為面向數(shù)據(jù)流的軟件設(shè)計技術(shù),稱為Jackson(也稱面向數(shù)據(jù)結(jié)構(gòu)的)軟件設(shè)計技術(shù)。在許多應(yīng)用領(lǐng)域,數(shù)據(jù)結(jié)構(gòu)對軟件設(shè)計的影響很大,不僅影響軟件結(jié)構(gòu)的設(shè)計,還影響軟件過程的設(shè)計。應(yīng)用領(lǐng)域中的任一數(shù)據(jù)結(jié)構(gòu)都可以概括為以下三種:重復(fù)性的控制結(jié)構(gòu)即循環(huán)結(jié)構(gòu)、具有選擇特性的條件語句結(jié)構(gòu)和分層次的層次軟件結(jié)構(gòu)。所以,基于數(shù)據(jù)結(jié)構(gòu)能充分揭示軟件結(jié)構(gòu)的思想,Jackson方法為面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計定義了一組以數(shù)據(jù)結(jié)構(gòu)為指導(dǎo)的映射過程。軟件工程的基本內(nèi)容
原型設(shè)計技術(shù)(PrototypesTechno1ogy)是針對傳統(tǒng)瀑布模型的缺點而提出的一種新的軟件開發(fā)技術(shù)。它通過建立和使用一系列原型來進行系統(tǒng)的設(shè)計、實現(xiàn)、測試和安裝。其核心思想是快速建立一個具有若干功能(不要求完全)的可執(zhí)行的原型,用該原型啟發(fā)用戶和設(shè)計者不斷試用和完善(甚至可拋棄)。每次完善都獲得一個新原型,直到滿足用戶全部要求為止。因此,許多人把原型技術(shù)稱為“快速弱功能”開發(fā)技術(shù)。軟件工程的基本內(nèi)容
面向?qū)ο蠹夹g(shù)不僅已在計算機學(xué)科的傳統(tǒng)領(lǐng)域,如程序設(shè)計語言、數(shù)據(jù)庫、程序設(shè)計方法等方面取得成功,而且在CASE(計算機輔助軟件工程)、CAD(計算機輔助設(shè)計)、CAI(計算機輔助教育)、多媒體、超文本、超媒體等新領(lǐng)域中也得到廣泛應(yīng)用。
面向?qū)ο筌浖?(數(shù)據(jù)+相應(yīng)操作)的封裝,以數(shù)據(jù)為中心。面向?qū)ο筌浖鞘挛锏募?,通過對象以及對象和對象之間的通訊聯(lián)系實現(xiàn)。它采用交互式、并行處理方式,由消息驅(qū)動控制。從應(yīng)用的角度看,面向?qū)ο蠓椒ǜ舆m合大型復(fù)雜的人機交互式軟件和數(shù)據(jù)統(tǒng)計管理軟件的開發(fā)。軟件工程的基本內(nèi)容3.軟件過程管理
軟件工程過程是軟件工程師在軟件開發(fā)過程中為實現(xiàn)開發(fā)目標而完成的一系列軟件工程活動。其關(guān)鍵部分是軟件開發(fā)和維護中的管理和支持能力。一個好的管理是成功的基礎(chǔ),一個差的或者是不當?shù)墓芾韯荼貙?dǎo)致過程的失敗。為了成功地實施軟件開發(fā)過程,首先管理者應(yīng)對軟件工程的目標、所需要的資源、經(jīng)費以及工作量有一個基本的了解。然后在此基礎(chǔ)上制定一個科學(xué)的軟件開發(fā)計劃、有效的具體實施措施以及完善的質(zhì)量控制標準,并在軟件開發(fā)過程中合理地掌握進度。軟件工程的基本內(nèi)容軟件工程是一門實踐性很強的應(yīng)用學(xué)科,它的對象主要是軟件開發(fā)中的社會學(xué)———人的問題,因而在實踐中有很大的靈活性和多樣性。即使是相同性質(zhì)項目的開發(fā),針對不同的團隊(人員)也不能照搬原有的開發(fā)管理模式,必須根據(jù)實際情況進行調(diào)整。因此科學(xué)的管理是軟件項目成功所不可缺少的重要組成部分。軟件工程的基本目標和原則1.4.1軟件工程的基本目標軟件工程的目標是在給定成本、工期的前提下,達到要求的軟件功能,取得較好的軟件性能,開發(fā)的軟件應(yīng)易于移植、可靠、有效、可重用。并且應(yīng)盡量提高軟件質(zhì)量與生產(chǎn)率,最終實現(xiàn)軟件的工業(yè)化生產(chǎn)目標。在諸多的因素中質(zhì)量是軟件需求方最關(guān)心的問題,而生產(chǎn)率是軟件供應(yīng)方最關(guān)心的問題。從經(jīng)濟學(xué)的角度看,質(zhì)量與生產(chǎn)率之間有著內(nèi)在的聯(lián)系,高生產(chǎn)率必須以質(zhì)量合格為前提。質(zhì)量與生產(chǎn)率之間不存在根本的對立,好的軟件工程方法可以同時提高質(zhì)量與生產(chǎn)率。軟件工程的基本目標和原則軟件工程的基本目標和原則1.4.2軟件工程的基本方法及原則
抽象
局部化與信息隱蔽方法
模塊化(高內(nèi)聚,低耦合)
一致性
完全性和可驗證性軟件工程的基本目標和原則
1.抽象抽象就是透過現(xiàn)象深入里層,抽取出本質(zhì)的過程和方法。人們對客觀事物的認識是通過一系列抽象思維來完成的,抽象思維的過程就是運用概念進行判斷、推理的過程。工程設(shè)計中的許多重要技術(shù)都是以抽象為基礎(chǔ)的,如系統(tǒng)、模型、設(shè)計流程等。軟件工程屬于工程科學(xué)范疇,軟件項目的開發(fā)也繼承了這些思想、方法和技術(shù)。軟件工程的基本目標和原則
2.局部化與信息隱蔽方法
局部化是指把一些有關(guān)的、具有特定目的的軟件要素放在一起,以使程序的一個部分與另一個部分不相互牽扯和影響。
信息隱蔽是指一個模塊將一些具有特定目的的數(shù)據(jù)及對數(shù)據(jù)的操作封裝起來使其內(nèi)部與外界相隔離。模塊信息隱蔽的結(jié)果意味著系統(tǒng)有效的模塊化可以通過定義一組獨立的模塊來實現(xiàn),這些獨立的模塊彼此之間僅僅交換那些為了完成系統(tǒng)功能所必須交換的信息。當在測試或軟件維護期間需要修改軟件時,使用局部化與信息隱蔽原則設(shè)計的軟件會把修改的影響限制在最小的范圍之內(nèi)。這對于提高程序的可靠性、可維護性以及模塊的可重用性尤為重要。軟件工程的基本目標和原則3.模塊化(高內(nèi)聚,低耦合)軟件模塊化,是指把軟件系統(tǒng)劃分為若干個邏輯上獨立的模塊,每個模塊完成獨立的子功能,將所有的模塊集合起來能滿足問題的要求。模塊化是設(shè)計復(fù)雜軟件的有效方法,也是為了有效地管理和維護軟件經(jīng)常采用的方法。模塊化設(shè)計使軟件結(jié)構(gòu)清晰、設(shè)計方便、理解容易,并且易于修改和測試,有助于提高軟件的可靠性和程序員的分工合作。軟件工程的基本目標和原則模塊獨立,是指一個模塊的工作不依賴于另一個模塊的存在,模塊與模塊之間的聯(lián)系只是不可缺少的必要的數(shù)據(jù)聯(lián)系。它是抽象、模塊化、局部化和信息隱蔽的直接結(jié)果,也是獲得良好設(shè)計的關(guān)鍵。對降低軟件成本、提高軟件開發(fā)的成功率至關(guān)重要。模塊的獨立性可以由兩個定性的標準來衡量,即內(nèi)聚度和耦合度。內(nèi)聚度是指模塊內(nèi)部各個成分之間聯(lián)系的緊密程度,用來衡量模塊的內(nèi)部特性;耦合度是指模塊與模塊之間互相依賴的程度,用來衡量模塊的外部特性。一個模塊的內(nèi)聚度愈高、耦合度愈低,模塊的獨立性就愈好。軟件工程的基本目標和原則4.一致性為了保證系統(tǒng)的良好性能,在軟件設(shè)計時應(yīng)使用統(tǒng)一的結(jié)構(gòu)和規(guī)則。這包括系統(tǒng)接口的一致性、符號術(shù)語的一致性以及規(guī)格說明與實現(xiàn)對象的一致性。為實現(xiàn)一致性的原則,軟件工程提供了許多有效的軟件設(shè)計工具(如數(shù)據(jù)詞典、數(shù)據(jù)庫、文檔自動生成器與一致性檢查工具)和設(shè)計方法以及編碼風格的支持。軟件工程的基本目標和原則5.完全性和可驗證性一個成功的軟件應(yīng)該完全、充分地實現(xiàn)系統(tǒng)所需的功能,而且要使系統(tǒng)有一定的“堅固性”,即在系統(tǒng)處于非正常狀態(tài)時有一定的使系統(tǒng)行為保持正常的能力。同時,對于一個在開發(fā)中分解細化的大型軟件系統(tǒng)應(yīng)注意遵循容易檢查、測試和評審的原則。本章小結(jié)
本章介紹了軟件以及軟件工程中所涉及的一些基本概念和軟件設(shè)計中的有關(guān)理論以及實踐中的方法和原則。從軟件開發(fā)所引發(fā)的軟件危機以及解決的方法導(dǎo)入了軟件工程的概念、要素及其在軟件開發(fā)中的方法和作用。講述了軟件及其特征、軟件工程的概念及要素、軟件工程過程、軟件的生命周期和開發(fā)模型等概念。
第2章軟件的定義及可行性研究
內(nèi)容提要2.1
問題定義2.2
可行性研究2.3
可行性研究報告的主要內(nèi)容以及在
軟件開發(fā)中的作用2.4
實例分析2.5
本章小結(jié)軟件的定義及可行性研究一般說來,把軟件的生命周期劃分為軟件定義、軟件開發(fā)、軟件運行三個時期。軟件定義時期是生命周期的第一個時期,也是軟件開發(fā)的基礎(chǔ)。根據(jù)軟件開發(fā)的基本過程,這個時期可分為兩個階段:問題定義和可行性研究。這兩個階段的主要任務(wù)就是分析用戶要求,在對用戶要求充分了解的前提下,分析未來新系統(tǒng)(即目標系統(tǒng))的主要目標,分析開發(fā)系統(tǒng)的可行性。參加這個時期工作的人員有用戶和系統(tǒng)分析員。軟件的定義及可行性研究圖2.1軟件定義時期工作流程
2.1問題定義
問題定義問題定義是軟件定義時期的第一個階段,作為軟件的開發(fā)者,在這個階段必須弄清用戶“需要計算機解決什么問題”。2.1.1問題定義的內(nèi)容(1)問題的背景,弄清楚待開發(fā)系統(tǒng)現(xiàn)在處于什么狀態(tài),為什么要開發(fā)它,是否具備開發(fā)條件等問題。(2)提出開發(fā)系統(tǒng)的問題要求以及總體要求。(3)明確問題的性質(zhì)、類型和范圍。(4)明確待開發(fā)系統(tǒng)要實現(xiàn)的目標、功能和規(guī)模。(5)提出開發(fā)的條件要求和環(huán)境要求。問題定義2.1.2問題定義的方法在問題定義階段,需要用戶和系統(tǒng)分析員共同協(xié)作、緊密配合,方能圓滿地完成問題定義報告。具體步驟如下:
首先,系統(tǒng)分析員要針對用戶的要求做詳細的調(diào)查研究,認真聽取用戶對問題的介紹;閱讀與問題有關(guān)的資料,必要時還要深入現(xiàn)場,親自操作;調(diào)查開發(fā)系統(tǒng)的背景;了解用戶對開發(fā)的要求。其次是與用戶反復(fù)討論,以使問題進一步確定化。經(jīng)過用戶和系統(tǒng)分析員雙方充分協(xié)商,確定問題定義的內(nèi)容。最后寫出雙方均認可的問題定義報告。
2.2可行性研究可行性研究可行性研究是在問題定義之后進行的,它是軟件定義時期的第二個階段??尚行匝芯康哪康氖敲鞔_“問題是否能夠解決”和“是否值得去解決”。也就是判斷為開發(fā)系統(tǒng)所定的目標和規(guī)模是否能夠?qū)崿F(xiàn),新系統(tǒng)是否能夠帶來經(jīng)濟效益??尚行匝芯康膶嵸|(zhì)是在高層次上做一次大大簡化了的需求分析和設(shè)計。作為可行性研究的成果,最后要寫出《可行性論證報告》??尚行匝芯?.2.1可行性研究的任務(wù)1.技術(shù)可行性從技術(shù)的角度去研究系統(tǒng)實現(xiàn)的可行性。主要包括:在給出的限制范圍內(nèi),能否設(shè)計出系統(tǒng),并實現(xiàn)必要的功能和性能;開發(fā)人員、硬件和軟件是否存在問題;系統(tǒng)所用到的相關(guān)技術(shù)是否支持。2.經(jīng)濟可行性是對軟件開發(fā)項目進行成本.效益估算,分析實現(xiàn)這個系統(tǒng)有沒有經(jīng)濟效益。3.運行可行性指為新系統(tǒng)規(guī)定的運行方式是否可行。如果新系統(tǒng)建立在原來已擔負其他任務(wù)的原系統(tǒng)上,就不能要求它在實時在線狀態(tài)下運行,以免與原有的任務(wù)相矛盾??尚行匝芯?.法律可行性研究新系統(tǒng)的開發(fā)在社會上和政治上會不會引起侵權(quán)、破壞以及會不會與法律相抵觸等問題??尚行匝芯孔罡镜娜蝿?wù)是對以后的行動方向提出建議。如果可行性研究的結(jié)果是問題沒有可行的解,那么系統(tǒng)分析員應(yīng)該建議停止這項工程的開發(fā);如果可行性研究的結(jié)果是問題值得去解決,那么系統(tǒng)分析員應(yīng)該推薦一個較好的解決方案,并且為工程制定一個初步的開發(fā)計劃??尚行匝芯?.2.2可行性研究的方法和步驟可行性研究的整個過程是從分析《新系統(tǒng)目標與范圍的說明書》開始到新系統(tǒng)的推薦方案通過審查為止。在整個過程中,要經(jīng)過以下步驟:1.審核系統(tǒng)的規(guī)模和目標2.研究當前正在使用的系統(tǒng)3.導(dǎo)出新系統(tǒng)的高層邏輯模型(1)由當前物理系統(tǒng)提出當前系統(tǒng)物理模型;(2)由當前系統(tǒng)物理模型,導(dǎo)出當前系統(tǒng)邏輯模型;(3)參考當前系統(tǒng)邏輯模型,設(shè)想出新系統(tǒng)邏輯模型;(4)根據(jù)新系統(tǒng)邏輯模型建造新系統(tǒng)物理模型,導(dǎo)出新物理系統(tǒng)??尚行匝芯?/p>
4.重新定義問題圖2.3建立系統(tǒng)邏輯模型的過程可行性研究5.提出和評價供選擇的方案6.推薦一個方案和行動方針(1)項目的開發(fā)價值;(2)推薦這個方案的理由。7.草擬項目開發(fā)計劃(1)工程進度表(2)開發(fā)人員(3)各種資源(4)成本估計8.書寫文檔,提交審查可行性研究2.2.3系統(tǒng)流程圖在進行可行性研究的過程中,需要用物理模型對當前物理系統(tǒng)和新物理系統(tǒng)進行描述,系統(tǒng)流程圖是用來描述系統(tǒng)物理模型的一種傳統(tǒng)工具。
系統(tǒng)流程圖的基本內(nèi)容是:
(1)用圖形符號以黑盒子形式描述系統(tǒng)內(nèi)的每一個成分(例如:程序、文件、數(shù)據(jù)庫、硬件設(shè)備、人工過程等)。
(2)用“→”表示信息在系統(tǒng)各個成分之間的流動情況(不要誤認為“”表示信息的加工和控制過程)??尚行匝芯繄D2.4教師圖書采購系統(tǒng)流程圖可行性研究2.2.4數(shù)據(jù)流圖數(shù)據(jù)流圖(DFD)是描述數(shù)據(jù)處理過程的工具。它從數(shù)據(jù)傳遞和加工的角度,以圖形的方式描述數(shù)據(jù)流從輸入到輸出的傳輸變換過程。它表示了系統(tǒng)內(nèi)部信息的流向以及系統(tǒng)的邏輯處理功能。數(shù)據(jù)流圖中的基本圖形符號有四種:(1)“→”表示數(shù)據(jù)和數(shù)據(jù)流。箭頭表示數(shù)據(jù)的流動方向。數(shù)據(jù)流圖中應(yīng)在線旁標注數(shù)據(jù)流名。(2)“○”表示對數(shù)據(jù)的加工,即對數(shù)據(jù)的某種操作或變換。數(shù)據(jù)流圖中應(yīng)在圓圈內(nèi)寫上加工名。(3)“”表示按照某種規(guī)則生成,且長度不限的數(shù)據(jù)文件(也稱數(shù)據(jù)存儲)。數(shù)據(jù)流圖中應(yīng)在雙線旁標注文件名。(4)“□”表示數(shù)據(jù)流的源頭和終端??尚行匝芯繄D2.5教師圖書采購系統(tǒng)數(shù)據(jù)流圖可行性研究數(shù)據(jù)流圖中各種成分及命名方法(1)數(shù)據(jù)流數(shù)據(jù)流表明數(shù)據(jù)和數(shù)據(jù)流向,它通常由一組數(shù)據(jù)項組成。兩個加工之間可以有多個數(shù)據(jù)流,這些數(shù)據(jù)流之間沒有任何聯(lián)系。數(shù)據(jù)流圖中也不表明它們的先后次序。指向文件的數(shù)據(jù)流可以是寫入文件或查詢文件,從文件引出的數(shù)據(jù)流可以是從文件讀出的數(shù)據(jù)或得到的查詢結(jié)果。在加工之間傳輸?shù)臄?shù)據(jù)流必須有一個合適的名詞,而在文件和加工之間傳輸?shù)臄?shù)據(jù)流可以不命名,因為可以從“加工”和“文件”的名字,弄清數(shù)據(jù)流的含義??尚行匝芯浚?)加工加工是對數(shù)據(jù)的某種操作或變換。加工要取適當?shù)拿郑蕴岣呖勺x性?!凹庸ぁ钡拿滞ǔJ莿釉~短語,它應(yīng)簡明扼要地表明完成什么加工。不要使用含糊不具體的動詞,如“處理”、“加工”等。(3)文件文件起暫時保存數(shù)據(jù)的作用。文件的命名方法與數(shù)據(jù)流的命名方法類似。
(4)數(shù)據(jù)源頭和終點數(shù)據(jù)源頭和終點是數(shù)據(jù)的始發(fā)點和終止點,是表示系統(tǒng)和環(huán)境的接口。在實際問題中,它可以是人員、計算機外部設(shè)備或其他裝置,不需要對它進行軟件設(shè)計和實現(xiàn)。因此,在命名時應(yīng)符合環(huán)境的真實狀況??尚行匝芯?.2.5經(jīng)濟可行性在可行性研究過程中,經(jīng)濟可行性研究占有重要地位,它從經(jīng)濟上衡量一個項目是否有開發(fā)價值。經(jīng)濟可行性研究主要包括兩個方面的內(nèi)容:一是新系統(tǒng)成本的估計;二是新系統(tǒng)可能產(chǎn)生的效益。又稱為成本/效益分析。主要內(nèi)容系統(tǒng)成本系統(tǒng)效益軟件開發(fā)成本運行維護成本經(jīng)濟效益社會效益圖2.6經(jīng)濟可行性分析的主要內(nèi)容可行性研究報告的主要內(nèi)容以及在軟件開發(fā)中的作用可行性研究報告的主要內(nèi)容
以及在軟件開發(fā)中的作用可行性研究報告是可行性分析階段結(jié)束后提交的文檔,是決定軟件開發(fā)項目的重要基礎(chǔ),也是軟件后續(xù)設(shè)計的基本依據(jù)。2.3.1
可行性研究報告的基本內(nèi)容
1.引言
2.可行性研究的前提
3.對現(xiàn)有系統(tǒng)的分析
4.所建議技術(shù)的可行性分析
5.所建議系統(tǒng)經(jīng)濟可行性分析
6.社會因素可行性分析
7.其他可供選擇的方案
8.結(jié)論意見可行性研究報告的主要內(nèi)容
以及在軟件開發(fā)中的作用1.引言
(1)闡明編寫該報告的目的,指出讀者對象。(2)指出項目的背景。包括項目名稱;項目的任務(wù)提出者、開發(fā)者、用戶及實現(xiàn)軟件的單位;項目與其他軟件系統(tǒng)的關(guān)系。(3)定義。給出報告中用到的專門術(shù)語的定義和英文縮寫的原文。(4)參考資料。列出可能使用到的有關(guān)資料的標題、標號、作者、發(fā)表日期、出版社或資料來源。
①書寫文檔所引用的有關(guān)資料所參考的軟件標準或規(guī)范;
②與項目有關(guān)的已發(fā)表的資料;
③項目經(jīng)批準的計劃任務(wù)書、合同或上級機關(guān)的批文??尚行匝芯繄蟾娴闹饕獌?nèi)容
以及在軟件開發(fā)中的作用2.可行性研究的前提(1)要求:列出對擬開發(fā)項目的各項基本要求,并加以說明。包括:功能、性能、輸入.輸出、基本數(shù)據(jù)流圖、安全與保密要求等。(2)目標:可包括人力與設(shè)備費用的節(jié)省、處理速度的提高、控制精度或生產(chǎn)力的提高、管理信息服務(wù)的改進、決策系統(tǒng)的改進、人員工作效率的提高。(3)條件、假定和限制:可包括建議開發(fā)軟件運行的最短壽命,經(jīng)費來源和使用限制,法律和政策方面的限制,硬件、軟件、運行環(huán)境和開發(fā)環(huán)境的條件和限制,可利用的信息和資源,建議開發(fā)軟件投入使用的最遲時間等。(4)可行性研究方法。(5)決定可行性的主要因素??尚行匝芯繄蟾娴闹饕獌?nèi)容
以及在軟件開發(fā)中的作用3.對現(xiàn)有系統(tǒng)的分析
(1)處理流程和數(shù)據(jù)流程。(2)工作負荷。(3)費用支出:如人力、設(shè)備、空間、支持性服務(wù)、材料等各項開支。(4)人員:列出所需人員的專業(yè)技術(shù)類別和數(shù)量。(5)設(shè)備。(6)局限性:說明現(xiàn)有系統(tǒng)存在的問題以及開發(fā)新系統(tǒng)的必要性??尚行匝芯繄蟾娴闹饕獌?nèi)容
以及在軟件開發(fā)中的作用4.所建議技術(shù)的可行性分析(1)對系統(tǒng)的簡要概述。(2)與現(xiàn)有系統(tǒng)比較的優(yōu)越性。(3)處理流程和數(shù)據(jù)流程。(4)采用建議系統(tǒng)帶來的影響:對設(shè)備的影響、對現(xiàn)有軟件的影響、對用戶的影響、對系統(tǒng)運行的影響、對開發(fā)環(huán)境的影響、對經(jīng)費支出的影響。(5)技術(shù)可行性評價:包括在限制的條件下,功能目的能否達到;利用現(xiàn)有技術(shù),功能目的能否達到;對開發(fā)人員數(shù)量和質(zhì)量的要求,并說明是否滿足;在規(guī)定的期限內(nèi),開發(fā)能否完成??尚行匝芯繄蟾娴闹饕獌?nèi)容
以及在軟件開發(fā)中的作用
5.所建議系統(tǒng)經(jīng)濟可行性分析(1)支出。(2)效益。(3)收益/投資比。(4)投資回收周期。(5)敏感性分析:指一些關(guān)鍵性因素,如系統(tǒng)生命周期長短、系統(tǒng)工作負荷量、處理速度要求、設(shè)備和軟件配置變化等對支出和收益的影響分析??尚行匝芯繄蟾娴闹饕獌?nèi)容
以及在軟件開發(fā)中的作用
6.社會因素可行性分析(1)法律因素:如合同責任、侵犯專利權(quán)、侵犯版權(quán)等。(2)用戶使用可行性:如用戶單位的行政管理、工作制度、人員素質(zhì)等能否滿足要求。
7.其他可供選擇的方案逐個闡明其他可供選擇的方案,并重點說明未被推薦的理由。
8.結(jié)論意見(1)著手組織開發(fā);
(2)等待若干條件具備后才能開發(fā);(3)需對開發(fā)目標進行某些修改;(4)不能進行或不必進行;(5)其他??尚行匝芯繄蟾娴闹饕獌?nèi)容
以及在軟件開發(fā)中的作用2.3.2可行性研究報告編制中應(yīng)注意的問題1.堅持實事求是的原則,不要隨意夸大新系統(tǒng)的功能和其他指標。2.任何一項內(nèi)容的書寫均要以科學(xué)分析的結(jié)果為依據(jù),不能憑空想象。
3.對每一項內(nèi)容的描述必須反復(fù)推敲,一定要做到用詞恰當、準確。
4.從具體情況出發(fā)。可行性研究報告不一定面面俱到,但對于用戶關(guān)心的部分或項目中重要的部分要重點闡明。5.書寫形式要規(guī)范??尚行匝芯繄蟾娴闹饕獌?nèi)容
以及在軟件開發(fā)中的作用2.3.3可行性研究報告在軟件開發(fā)中的作用1.可行性研究報告是可行性研究階段的成果。
2.可行性研究報告提出了軟件開發(fā)的總體目標和范圍,因此它是軟件開發(fā)的行動指南。
3.可行性研究報告是需求分析的基礎(chǔ)和依據(jù)。2.4實例分析實例分析
2.4.1弄清問題的背景及定義
2.4.2確定目標系統(tǒng)的功能
2.4.3技術(shù)可行性分析
1.網(wǎng)絡(luò)方面
2.數(shù)據(jù)庫方面2.4.4經(jīng)濟效益分析2.4.5項目實施計劃1.需求分析;2.需求分析確認;3.系統(tǒng)設(shè)計;4.程序設(shè)計;5.新作業(yè)制度實施;6.數(shù)據(jù)收集整理與建檔本章小結(jié)軟件的定義及可行性研究是軟件生命周期的第一個階段。在問題正確定義的基礎(chǔ)上,通過分析,導(dǎo)出問題的初步試探性的解法。然后在此基礎(chǔ)上復(fù)查,并修改問題的定義,再分析,再提出改進解法……如此反復(fù),直至提出一個符合系統(tǒng)目標的高層次的邏輯模型。由這個邏輯模型可設(shè)想出多種可能的物理系統(tǒng)。然后對這些物理系統(tǒng)進行可行性研究,最后由系統(tǒng)分析員提出一個推薦的行動方案,提交審查。數(shù)據(jù)流圖是描述系統(tǒng)邏輯模型的最好工具,而系統(tǒng)流程圖則是描述系統(tǒng)物理模型的最好工具。在可行性研究中,經(jīng)濟可行性是一項重要內(nèi)容。使用部門往往從經(jīng)濟的角度考慮是否投資于這項工程?!笨尚行匝芯繄蟾妗笔擒浖亩x及可行性研究時期所產(chǎn)生的重要文檔。
第3章需求分析
內(nèi)容提要3.1
需求分析的目標和任務(wù)3.2
軟件需求的獲取方法3.3
需求分析的基本過程3.4
結(jié)構(gòu)化需求分析的方法3.5
支持需求分析的原型化方法需求分析需求分析是軟件生命周期中最重要的一步,也是最關(guān)鍵的一步。它將可行性研究階段產(chǎn)生的軟件功能和性能的總體概念描述為具體的軟件需求規(guī)格說明。而軟件需求規(guī)格說明是軟件開發(fā)的基礎(chǔ),它關(guān)系到工程的成敗和軟件產(chǎn)品的質(zhì)量。軟件需求分析也是一個不斷認識“問題”,逐步細化系統(tǒng)“做什么”的過程。在該過程中,要將軟件定義和規(guī)劃階段所確定的軟件范圍逐步細化到可詳細定義的程度,分析和提出各種不同的軟件元素,然后為這些元素找到可行的解決方法。用戶和系統(tǒng)分析員在軟件需求分析階段均充當著重要角色。
3.1需求分析的目標和任務(wù)
需求分析的目標和任務(wù)需求分析的基本任務(wù)就是細化“系統(tǒng)必須做什么”,準確地回答“系統(tǒng)必須做什么”。需求分析實際上分兩個階段:需求理解獲取階段和需求表達階段需求分析的目標和任務(wù)需求分析的任務(wù)確定系統(tǒng)必須完成哪些工作,也就是對新系統(tǒng)提出完整、準確、清晰、具體的要求。系統(tǒng)分析員以可行性研究階段產(chǎn)生的數(shù)據(jù)流圖(邏輯模型)為出發(fā)點,在實現(xiàn)系統(tǒng)基本功能的基礎(chǔ)上,對這些功能仔細研究,從而進一步將功能具體化。需求分析階段結(jié)束時提交的文檔,應(yīng)包括詳細的數(shù)據(jù)流圖、數(shù)據(jù)詞典。需求分析的任務(wù)就是借助于當前系統(tǒng)的邏輯模型導(dǎo)出新系統(tǒng)的邏輯模型,確定新系統(tǒng)“做什么”的問題。需求分析的目標和任務(wù)軟件需求分析階段的具體任務(wù)
1.確定軟件系統(tǒng)的綜合需求軟件系統(tǒng)綜合需求有:系統(tǒng)功能需求、系統(tǒng)性能需求、系統(tǒng)環(huán)境需求、可靠性需求、安全保密性需求、用戶界面需求以及將來可能提出的需求等。
2.分析系統(tǒng)的數(shù)據(jù)需求任何一個軟件系統(tǒng)本質(zhì)上都是信息處理系統(tǒng),都經(jīng)過數(shù)據(jù)的輸入、處理與輸出的過程。系統(tǒng)要求處理的信息和輸出的信息在很大程度上決定了系統(tǒng)的概貌。因此,分析系統(tǒng)的數(shù)據(jù)需求是一個重要任務(wù)。復(fù)雜的數(shù)據(jù)是由許多基本數(shù)據(jù)元素組成的,數(shù)據(jù)元素之間的邏輯關(guān)系可由數(shù)據(jù)結(jié)構(gòu)表示,可以利用數(shù)據(jù)詞典全面地定義數(shù)據(jù)。需求分析的目標和任務(wù)3.導(dǎo)出新系統(tǒng)的邏輯模型完成了以上工作后,就可以導(dǎo)出新系統(tǒng)的邏輯模型了。它采用分層表示的方法,對可行性研究時導(dǎo)出的高層邏輯模型做逐層細化的處理。4.修正系統(tǒng)開發(fā)計劃經(jīng)過需求分析,分析員對新系統(tǒng)有了更深入更具體的認識。因此,可以較準確地計劃系統(tǒng)的進度和估算成本,在此基礎(chǔ)上應(yīng)該對以前制定的開發(fā)計劃進行修正。5.開發(fā)原型系統(tǒng)一般說來,在生產(chǎn)一種新的工業(yè)產(chǎn)品時,常常先制造一個“樣機”,成功后再成批投產(chǎn)。原型化軟件開發(fā)思想,正是從“樣機”借用過來的。在開發(fā)新系統(tǒng)之前,先構(gòu)造一個原型系統(tǒng)(相當于“樣機”,詳見3.5節(jié))。需求分析的目標和任務(wù)構(gòu)造原型系統(tǒng)的目的是:用較少的投入和較短的時間,讓用戶看到新系統(tǒng)的主要功能,從而使用戶可以更準確地提出和確定對新系統(tǒng)的要求。6.編寫軟件需求規(guī)格說明書軟件需求分析階段結(jié)束后要編寫軟件需求規(guī)格說明書,它明確地表達了用戶與系統(tǒng)分析員對軟件系統(tǒng)的共同理解。
3.2軟件需求的獲取方法軟件需求的獲取方法軟件需求分析首先要進行需求理解的獲取。通常,獲取軟件需求的一般途徑和方法有以下幾個方面:1.用戶訪談和會議。在系統(tǒng)分析員和用戶之間存在這樣一個問題:用戶熟悉業(yè)務(wù),但不熟悉計算機技術(shù),而系統(tǒng)分析員熟悉計算機技術(shù),卻不了解用戶業(yè)務(wù)。因此就會出現(xiàn)用戶提出的所有要求并不一定都合理,而系統(tǒng)分析員對一些用戶要求又模糊不清的問題。這就需要系統(tǒng)分析員和用戶反復(fù)交談,共同討論,必要時系統(tǒng)分析員可以通過深入現(xiàn)場,開座談會的方式,了解用戶對軟件系統(tǒng)的各種要求。澄清模糊的需求認識,去掉那些無法實現(xiàn)的和不合理的要求,然后再決定采納哪些要求。對于去掉的要求,應(yīng)向用戶做充分的解釋,以求得諒解。軟件需求的獲取方法2.了解用戶當前工作流程,找出新系統(tǒng)實現(xiàn)的方法。用戶的當前系統(tǒng)可能是某個需要改進的已在計算機上運行的數(shù)據(jù)處理系統(tǒng),也可能是一個人工的數(shù)據(jù)處理過程。系統(tǒng)分析員要深入現(xiàn)場調(diào)查研究,了解當前系統(tǒng)是如何運行的,其組織結(jié)構(gòu)、輸入、輸出以及資源利用情況和日常數(shù)據(jù)處理過程是怎樣的,并把自己對當前系統(tǒng)的理解用一個物理模型描述出來。然后,對當前的物理模型進行分析,區(qū)分出本質(zhì)的和非本質(zhì)的因素。去掉那些非本質(zhì)的因素,得到反映系統(tǒng)本質(zhì)的邏輯模型。接下來的工作就是:決定新系統(tǒng)與當前系統(tǒng)在邏輯上的差別,將變化的部分看作是新的處理步驟,對數(shù)據(jù)流圖進行調(diào)整。從這個邏輯模型我們可以找出當前系統(tǒng)的缺陷。3.開發(fā)人員和委托人要充分地交流和合作。3.3軟件需求的基本過程3.3軟件需求的基本過程軟件需求分析的基本過程可以分成以下四步:問題識別、分析與綜合、編制文檔和綜合評審。3.3.1問題識別首先,系統(tǒng)分析員要研究可行性分析報告(如果有的話)和軟件項目實施計劃。主要是從系統(tǒng)的角度來理解軟件,確定對目標系統(tǒng)的綜合要求,即軟件的需求。還要提出這些需求實現(xiàn)的條件,以及需求應(yīng)達到的標準。也就是解決待開發(fā)系統(tǒng)需要“做什么”,“做到什么程度”的問題。這些需求包括:
(1)功能需求:提出目標系統(tǒng)在職能上應(yīng)該做什么,這是最主要的需求。(2)性能需求:給出目標系統(tǒng)的技術(shù)性能指標,包括存儲容量限制、運行時間限制等。3.3軟件需求的基本過程(3)環(huán)境需求:給出目標系統(tǒng)運行時所需的環(huán)境要求。例如,在硬件方面,采用的機型、外部設(shè)備、數(shù)據(jù)通信接口等。在軟件方面,支持系統(tǒng)運行的系統(tǒng)軟件(操作系統(tǒng)、網(wǎng)絡(luò)軟件、數(shù)據(jù)庫管理系統(tǒng)等)。在使用方面,使用部門的制度和操作人員的技術(shù)水平應(yīng)具備的條件等。(4)可靠性需求:不同的軟件在運行時,失效的影響各不相同。在需求分析時應(yīng)對目標系統(tǒng)投入運行后不發(fā)生故障的概率按實際的運行環(huán)境提出要求。對于重要系統(tǒng),或是運行失效會造成嚴重后果的系統(tǒng),應(yīng)提出較高的可靠性需求。
3.3軟件需求的基本過程(5)安全保密性需求:不同的用戶,對系統(tǒng)的安全、保密的要求也不相同。應(yīng)當對用戶這方面的需求恰當?shù)刈龀鲆?guī)定,以便給待開發(fā)系統(tǒng)以特殊的設(shè)計,使其在運行中安全保密方面的性能得到必要的保證。(6)用戶界面需求:系統(tǒng)與用戶界面如果友好,用戶就能夠方便、有效、愉快地使用該系統(tǒng)。從市場角度看,具有友好用戶界面的軟件系統(tǒng)有很強的競爭力。因此,在需求分析時,必須為用戶界面細致地規(guī)定應(yīng)達到的要求。3.3軟件需求的基本過程(7)資源使用需求:這是指對目標系統(tǒng)運行時所需的數(shù)據(jù)、軟件、內(nèi)存空間等各項資源的要求。另外,軟件系統(tǒng)開發(fā)時所需要的人力、支撐軟件、開發(fā)設(shè)備等都屬于軟件開發(fā)的資源,需要在需求分析時加以確定。(8)軟件成本消耗與開發(fā)進度需求:在軟件項目立項后,要根據(jù)合同規(guī)定,對軟件開發(fā)的進度和各步驟的費用提出要求,作為開發(fā)管理的依據(jù)。(9)預(yù)先估計以后系統(tǒng)可能達到的目標。這樣,在開發(fā)過程中,可以對系統(tǒng)將來可能的擴充與修改做準備。一旦需要時,就比較容易進行補充和修改。3.3軟件需求的基本過程3.3.2分析與綜合問題分析和方案的綜合是需求分析第二個方面的工作。系統(tǒng)分析員必須從信息流和信息結(jié)構(gòu)出發(fā),逐步細化所有的軟件功能,找出系統(tǒng)各元素之間的聯(lián)系、接口特性和設(shè)計上的約束,分析它們是否滿足功能要求、是否合理。依據(jù)功能需求、性能需求、運行環(huán)境需求等,除去不合理的部分,增加需要部分。最終綜合成系統(tǒng)的解決方案,給出目標系統(tǒng)的詳細邏輯模型。
3.3軟件需求的基本過程
在這個步驟中,分析和綜合工作應(yīng)反復(fù)地進行。在對現(xiàn)行問題和期望的信息(輸入和輸出)進行分析的基礎(chǔ)上,系統(tǒng)分析員開始綜合出一個或幾個解決方案,然后檢查它的工作是否符合軟件計劃中規(guī)定的范圍,若有不符再進行修改。總之,對問題進行分析和綜合的過程將一直持續(xù)到系統(tǒng)分析員與用戶雙方都認為可以正確地制定該軟件的規(guī)格說明為止。3.3軟件需求的基本過程
3.3.3編制文檔經(jīng)過分析,確定了系統(tǒng)必須具有的功能和性能,定義了系統(tǒng)中的數(shù)據(jù)并且簡略地描述了處理數(shù)據(jù)的主要算法。下一步應(yīng)該把分析的結(jié)果用正式的文檔記錄下來,作為最終軟件配置的一個組成成分。根據(jù)需求分析階段的基本任務(wù),在這個階段一般應(yīng)該完成下述四份文檔資料。(1)系統(tǒng)規(guī)格說明:主要描述目標系統(tǒng)的概貌、功能需求、性能需求、運行需求和將來可能提出的需求。在分析過程中得出的數(shù)據(jù)流圖和用IPO圖或其他工具簡要描述的系統(tǒng)的主要算法是這份文檔的重要組成部分。此外,這份文檔還應(yīng)該包括用戶需求和系統(tǒng)分析功能之間的參照關(guān)系以及設(shè)計約束等。3.3軟件需求的基本過程(2)數(shù)據(jù)要求:主要包括通過需求分析建立起來的數(shù)據(jù)詞典以及描繪數(shù)據(jù)結(jié)構(gòu)的層次方框圖和對存儲信息(數(shù)據(jù)庫和普通文件)分析的結(jié)果。(3)用戶系統(tǒng)描述:這份文檔從用戶使用系統(tǒng)的角度來描述系統(tǒng),相當于一份初步的用戶手冊。其內(nèi)容包括對系統(tǒng)功能和性能的簡要描述,使用系統(tǒng)的主要步驟和方法以及系統(tǒng)用戶的責任等。這份初步的用戶手冊使未來的用戶能從使用的角度檢查該項目系統(tǒng),從而使他們比較易于判斷這個系統(tǒng)是否符合他們的需要。(4)修正的開發(fā)計劃:經(jīng)過需求分析階段的工作,系統(tǒng)分析員對目標系統(tǒng)有了更深入更具體的認識,因此,可以對系統(tǒng)的成本和進度做出更準確的估計。在此基礎(chǔ)上應(yīng)該對開發(fā)計劃進行修正。包括修正后的成本計劃、資源和進度計劃等。3.3軟件需求的基本過程3.3.4綜合評審需求分析階段工作的復(fù)查是綜合評審。綜合評審就是對功能的正確性、完整性、清晰性以及其他需求給予評價。評審的主要內(nèi)容如下:(1)系統(tǒng)定義的目標是否與用戶的需求一致;
(2)系統(tǒng)需求分析階段提供的文檔資料是否齊全;
(3)文檔中的所有描述是否完整、清晰、準確地反映了用戶需求;(4)與所有其他系統(tǒng)成分的重要接口是否都已經(jīng)描述;3.3軟件需求的基本過程
(5)待開發(fā)項目的數(shù)據(jù)流與數(shù)據(jù)結(jié)構(gòu)是否完全確定;(6)所有圖表是否清楚,在不補充說明時能否理解;
(7)主要功能是否已包括在規(guī)定的軟件范圍之內(nèi),是否都已充分說明;(8)設(shè)計的約束條件或限制條件是否符合實際。除系統(tǒng)分析員之外,用戶.需求者、開發(fā)部門的管理者以及軟件設(shè)計、實現(xiàn)、測試人員都應(yīng)當參加評審工作。評審結(jié)束時應(yīng)有評審負責人的結(jié)論意見及簽字。
3.4結(jié)構(gòu)化需求分析的方法結(jié)構(gòu)化需求分析的方法需求分析常用的方法有:面向數(shù)據(jù)流的結(jié)構(gòu)化分析方法、面向數(shù)據(jù)結(jié)構(gòu)的Jackson方法、結(jié)構(gòu)化數(shù)據(jù)系統(tǒng)開發(fā)方法、面向?qū)ο蟮姆治龇椒ǖ?,對于要求時序的調(diào)度類軟件,還可使用狀態(tài)遷移圖、Petri網(wǎng)等。
3.4.1面向數(shù)據(jù)流的結(jié)構(gòu)化分析方法結(jié)構(gòu)化分析方法(StructuredAnalysis,簡稱SA方法)是20世紀70年代由E.Yourdon等人提出的一種系統(tǒng)化的軟件開發(fā)方法。三十多年來,結(jié)構(gòu)化分析方法一直在軟件設(shè)計中起著重要的作用,它的一些重要概念,也應(yīng)用于其他開發(fā)方法中。結(jié)構(gòu)化需求分析的方法
結(jié)構(gòu)化分析方法的核心思想:采用“自頂向下,逐步求精”的技術(shù),對系統(tǒng)進行劃分。最初,把整個系統(tǒng)表示成一張環(huán)境總圖,指出系統(tǒng)所有的輸入、輸出和邊界。然后,逐步對系統(tǒng)進行細化,每細化一次,就把一些復(fù)雜的功能分解成較簡單的功能,并增加細節(jié)描述。繼續(xù)細化,直到所有的功能都足夠簡單,不需要再細化為止。面向數(shù)據(jù)流的結(jié)構(gòu)化分析方法中的常用工具:
數(shù)據(jù)詞典和結(jié)構(gòu)化語言結(jié)構(gòu)化需求分析的方法3.4.2數(shù)據(jù)詞典及其功能顧名思義,數(shù)據(jù)詞典是數(shù)據(jù)的集合,它對數(shù)據(jù)流圖中的各個元素作出完整的定義和說明,是數(shù)據(jù)流圖的補充工具。數(shù)據(jù)流圖和數(shù)據(jù)詞典共同構(gòu)成系統(tǒng)的邏輯模型,兩者缺一不可。
1.數(shù)據(jù)詞典的內(nèi)容一般說來,數(shù)據(jù)詞典應(yīng)包括以下6類元素的定義。
(1)數(shù)據(jù)流在一個數(shù)據(jù)流圖中,數(shù)據(jù)以數(shù)據(jù)流為單位進行傳輸。定義的主要內(nèi)容有:數(shù)據(jù)流名稱及其編號、別名、數(shù)據(jù)流的來源、數(shù)據(jù)流的去向、數(shù)據(jù)流的組成結(jié)構(gòu)化需求分析的方法(2)數(shù)據(jù)項也稱數(shù)據(jù)元素,是數(shù)據(jù)的最小單位。定義的主要內(nèi)容有:數(shù)據(jù)項名稱及其編號、別名、取值范圍和取值含義、備注。(3)數(shù)據(jù)結(jié)構(gòu)一個數(shù)據(jù)結(jié)構(gòu)可以由若干個數(shù)據(jù)項組成,或者由若干個數(shù)據(jù)結(jié)構(gòu)組成,也可以由若干個數(shù)據(jù)項和數(shù)據(jù)結(jié)構(gòu)共同組成,總之它把關(guān)系“密切”的數(shù)據(jù)組合在一起。定義的主要內(nèi)容有:名稱及其編號、數(shù)據(jù)結(jié)構(gòu)的組成。若是一個簡單的數(shù)據(jù)結(jié)構(gòu),只列出數(shù)據(jù)項;若嵌套了數(shù)據(jù)結(jié)構(gòu),只列出數(shù)據(jù)結(jié)構(gòu)的名稱。結(jié)構(gòu)化需求分析的方法(4)數(shù)據(jù)存儲數(shù)據(jù)存儲是保留或保存數(shù)據(jù)的地方。定義的主要內(nèi)容有:數(shù)據(jù)存儲名稱及其編號、數(shù)據(jù)存儲的組成(它所包含的數(shù)據(jù)項或數(shù)據(jù)結(jié)構(gòu))、組織方式。(5)加工邏輯定義加工邏輯的主要內(nèi)容有:名稱及其編號、加工邏輯的輸入和輸出、加工邏輯的說明(對加工邏輯的功能做明確的描述,常采用的工具有:結(jié)構(gòu)化語言、判定樹、判定表等)。(6)外部實體外部實體是系統(tǒng)的“人—機”界面。數(shù)據(jù)流由外部實體輸入,又從系統(tǒng)向外部實體輸出。定義的主要內(nèi)容有:外部實體的名稱及其編號、外部實體的簡述、與外部實體有關(guān)的數(shù)據(jù)流。結(jié)構(gòu)化需求分析的方法
2.數(shù)據(jù)詞典中使用的符號為了定義簡明,在詞典中允許使用5種關(guān)系符號和1種注釋符號。符號含義
=
等于,定義為
+加
[]選擇符號,表示對[]中列舉的值可以任選其一{}重復(fù)符號,表示對{}中的內(nèi)容可視需要重復(fù)使用()可選符號,表示對()中的內(nèi)容可由設(shè)計者決定取舍*…*
注釋符號,表示兩個*之間的內(nèi)容是對條目的注釋結(jié)構(gòu)化需求分析的方法
3.加工邏輯的說明通常采用結(jié)構(gòu)化語言、判定表或判定樹等工具來描述加工邏輯。(1)結(jié)構(gòu)化語言自然語言加上結(jié)構(gòu)化的形式就構(gòu)成了結(jié)構(gòu)化語言,這是一種介于自然語言與程序設(shè)計語言之間的語言。結(jié)構(gòu)化程序有順序、選擇、循環(huán)等控制結(jié)構(gòu)。結(jié)構(gòu)化需求分析的方法(2)判定表在一些數(shù)據(jù)處理中,數(shù)據(jù)流圖的加工需要經(jīng)過多個邏輯條件組合的取值才能確定,此時運用判定表描述就比較清晰明了。判定表由四部分組成,各部分功能如下:左上部:列出所有條件。左下部:列出所有可能做的工作。右上部:每一列表表示各種條件的一種可能組合。右下部:每一列表表示與每一種條件組合所對應(yīng)的工作。(3)判定樹判定樹也是用來表達加工邏輯的工具,有時比判定表更直觀,更易于接受。下面以一個具體實例來說明以上三種加工邏輯的應(yīng)用。結(jié)構(gòu)化需求分析的方法4.數(shù)據(jù)詞典的功能數(shù)據(jù)詞典最重要的功能就是作為分析階段的工具。用戶通過它可以清楚地了解系統(tǒng)分析員對系統(tǒng)數(shù)據(jù)和加工邏輯的詳細說明。不同的開發(fā)人員或不同的開發(fā)小組之間可以通過對數(shù)據(jù)做出一致的定義來避免定義的混亂。數(shù)據(jù)詞典中對加工邏輯的描述很有價值,若改變了某個數(shù)據(jù)的定義,則很容易看出對加工邏輯所產(chǎn)生的影響,并且可方便地對受影響的加工邏輯做出相應(yīng)的改變。數(shù)據(jù)詞典也是下一步設(shè)計的依據(jù),若要求所有的開發(fā)人員都按照數(shù)據(jù)詞典的定義去設(shè)計模塊,則會避免麻煩的接口問題。結(jié)構(gòu)化需求分析的方法5.數(shù)據(jù)詞典的實現(xiàn)通常,實現(xiàn)數(shù)據(jù)詞典有三種途徑。(1)人工方法:采用人工方法實現(xiàn)時,把每一詞典條目(即每一個數(shù)據(jù)定義或每一個加工邏輯說明)寫在一張卡片上,由專人管理和維護。為了便于搜索,所有卡片按數(shù)據(jù)名稱排序。人工方法的優(yōu)點是容易實現(xiàn)。(2)自動方法:把詞典存在計算機中,用計算機對它搜索和維護?,F(xiàn)有多種“詞典管理程序”如PLS.PSA。用計算機管理詞典質(zhì)量高,搜索、維護方便。(3)人工和自動混合的方法:在人工過程中可使用正文編寫程序、報告生成程序等幫助完成。結(jié)構(gòu)化需求分析的方法3.4.3數(shù)據(jù)流圖的細化經(jīng)過需求獲取階段的工作,分析員更加清楚地確定了系統(tǒng)邊界,即系統(tǒng)與外界或環(huán)境的輸入和輸出。因此可以酌情對它進行完善,從而得到頂層數(shù)據(jù)流圖。由于它表示了系統(tǒng)的環(huán)境,因此也稱為系統(tǒng)環(huán)境圖。
1.數(shù)據(jù)流圖的細化有了頂層數(shù)據(jù)流圖后,接下來的工作就是自頂向下畫出各層的數(shù)據(jù)流圖。具體地說,就是對加工邏輯進行“逐步分解”或“逐層細化”,直到底層的加工足夠簡單,功能清晰易懂,不必再繼續(xù)分解為止。結(jié)構(gòu)化需求分析的方法
2.數(shù)據(jù)流圖和加工的編號問題為了便于管理,對于所有的數(shù)據(jù)流圖和加工均需要編號。編號原則為:在整個系統(tǒng)中每一編號是惟一的。我們采用以下的編號規(guī)則:
(1)數(shù)據(jù)流圖的編號規(guī)則:頂層不參加編號,從0層開始所有的子圖均有一個編號,其編號采用所分解的父圖和相應(yīng)加工的編號。結(jié)構(gòu)化需求分析的方法(2)加工編號規(guī)則:頂層加工不編號,0層的加工編號為1,2,3…,從1層開始所有加工的編號由相應(yīng)的子圖號、小數(shù)點和加工在子圖中的順序組成。
3.數(shù)據(jù)流圖的補充和完善經(jīng)過細化的數(shù)據(jù)流圖,并沒有對數(shù)據(jù)和加工進行詳細的說明。因此,我們還必須在數(shù)據(jù)詞典中完成以下工作:(1)定義各層數(shù)據(jù)流圖中所包含的數(shù)據(jù)流和數(shù)據(jù)存儲。(2)定義最底層數(shù)據(jù)流圖中的所有加工。3.5支持需求分析的原型化方法3.5支持需求分析的原型化方法在需求分析階段很難得到一個完整的規(guī)格說明,對于一些大型軟件項目更是如此。究其原因,一方面,在軟件開發(fā)初期用戶想法模糊,很難完全準確地表達系統(tǒng)的全面需求;另一方面,軟件開發(fā)者不熟悉應(yīng)用環(huán)境,對問題的認識更是模糊不清。雖然經(jīng)過詳細的討論和分析也許能夠得到一份較好的規(guī)格說明,但它很難能將系統(tǒng)的各個方面都描述得完整、準確且與環(huán)境相符合。環(huán)境發(fā)生了變化,開發(fā)者遇到了事先未預(yù)料到的困難,就需要改變需求來解決,因此規(guī)格說明難以完善。需求的變更以及通信中的模糊和誤解,都會成為軟件開發(fā)的障礙。為了解決上述問題,逐漸形成了軟件系統(tǒng)快速原型化的概念。在工業(yè)產(chǎn)品中,原型就是“樣機”,在軟件開發(fā)中,原型則是軟件的一個早期可運行的版本。它必須反映出最終系統(tǒng)的重要特性。3.5支持需求分析的原型化方法軟件原型化方法:在獲得一組基本需求說明后,經(jīng)過快速分析構(gòu)造出一個滿足用戶基本要求的小型的軟件系統(tǒng)(原型系統(tǒng))。用戶運行該系統(tǒng),從中得到感受和啟發(fā),進而對該系統(tǒng)做出反應(yīng)和評價,然后開發(fā)者根據(jù)用戶的意見對原型加以改進。隨著不斷地實驗、糾錯、使用、評價和修改,不斷獲得新的原型版本。如此反復(fù),逐步減少分析和通話中的誤解,彌補不足之處,進一步確定各種需求細節(jié),適應(yīng)需求的變更,從而提高最終產(chǎn)品的質(zhì)量。3.5支持需求分析的原型化方法
3.5.1
溫馨提示
- 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)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2031年中國釹鐵硼磁鋼行業(yè)投資前景及策略咨詢研究報告
- 2025至2030年中國菱苦土砂輪數(shù)據(jù)監(jiān)測研究報告
- 2025至2031年中國高粘度乳化炸藥自動冷卻機行業(yè)投資前景及策略咨詢研究報告
- 2025至2031年中國金屬絲網(wǎng)行業(yè)投資前景及策略咨詢研究報告
- 項目調(diào)度管理協(xié)議書(2篇)
- 《跨境電商英語》課件- on going an inquiry
- 2025年汽車車身、掛車項目建議書
- 2022年北京市初三一模歷史試題匯編:隋唐時期-繁榮與開放的時代
- 2025至2030年中國自動烹飪鍋數(shù)據(jù)監(jiān)測研究報告
- 速凍食品企業(yè)數(shù)字化轉(zhuǎn)型與智慧升級戰(zhàn)略研究報告
- SYT 6680-2021 石油天然氣鉆采設(shè)備 鉆機和修井機出廠驗收規(guī)范-PDF解密
- 華為供應(yīng)鏈管理崗位筆試題目含筆試技巧
- 2024年常州機電職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測試題庫及答案解析
- 任務(wù)4 聚酯縮聚生產(chǎn)操作-生產(chǎn)操作規(guī)程
- 湖南天壹名校聯(lián)盟2024年高二3月大聯(lián)考數(shù)學(xué)試題+答案
- 鐵路少年-練習及答案
- 2024年人教版小學(xué)語文六年級下冊第二單元測試卷(含答案解析)【可編輯打印】
- 統(tǒng)編版八年級語文下冊 24 唐詩三首練習題 (含答案)
- 混凝土抗壓強度統(tǒng)計評定表(自動計算-數(shù)理-非數(shù)理)
- 公司清潔生產(chǎn)的審核報告書
- 貨運車輛交通安全講座教案
評論
0/150
提交評論