




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、8章軟件工程基礎(chǔ)軟件工程(SoftwareEngineering,簡稱SE)是應(yīng)用計算機(jī)科學(xué)、數(shù)學(xué)及管理科學(xué)等原理,開發(fā)軟件的工程。軟件工程借鑒傳統(tǒng)工程的原則、方法,以提高質(zhì)量、降低成本。對于軟件工程,本章主要介紹一下內(nèi)容:軟件工程基本概念,軟件生命周期概念,軟件工具與軟件開發(fā)環(huán)境。結(jié)構(gòu)化分析方法,數(shù)據(jù)流圖,數(shù)據(jù)字典,軟件需求規(guī)格說明書。結(jié)構(gòu)化設(shè)計方法,總體設(shè)計與詳細(xì)設(shè)計。程序設(shè)計方法與風(fēng)格,結(jié)構(gòu)化程序設(shè)計,面向?qū)ο蟪绦蛟O(shè)計。軟件測試的方法,白盒測試與黑盒測試,測試用例設(shè)計,軟件測試的實施,單元測試、集成測試和系統(tǒng)測試。程序的調(diào)試,靜態(tài)調(diào)試與動態(tài)調(diào)試。軟件工程的基本概念軟件及其特點計算機(jī)系統(tǒng)由
2、硬件和軟件兩部分組成。計算機(jī)軟件是包括程序、數(shù)據(jù)及其相關(guān)文檔資料的完整集合。其中,程序是軟件開發(fā)人員根據(jù)用戶需求開發(fā)的、用程序設(shè)計語言描述的、適合計算機(jī)執(zhí)行的指令(語句)序列。數(shù)據(jù)是使程序能夠正常操縱信息的數(shù)據(jù)結(jié)構(gòu)。文檔是與程序開發(fā)、維護(hù)和使用的圖文資料。由此可見,軟件由兩部分組成:一是機(jī)器可執(zhí)行的程序和數(shù)據(jù);二是機(jī)器不可執(zhí)行的,與軟件開發(fā)、運(yùn)行、維護(hù)和使用有關(guān)的文檔。軟件與硬件不同,它有以下特點:(1)軟件是一種邏輯實體,而不是物理實體,具有抽象性。這使得軟件與其他工程對象有著明顯的差異。可以將軟件記錄在紙上或其他存儲介質(zhì)上,但卻無法看到軟件本身的形態(tài),必2)軟件的生產(chǎn)沒有明顯的制作過程。在
3、軟件研制開發(fā)成功之后,可以大量拷貝須通過觀察、分析、思考、判斷,才能了解它的功能、性能等。同一內(nèi)容的副本。所以對軟件的質(zhì)量控制,必須著重在軟件開發(fā)方面下功夫。(3)軟件在運(yùn)行、使用期間不存在磨損、老化問題,但為了適應(yīng)硬件、環(huán)境以及需求的變化要進(jìn)行修改,而這些修改又會不可避免的引入錯誤,導(dǎo)致軟件失效率升高,從而使得軟件退化。(4)軟件的開發(fā)、運(yùn)行對計算機(jī)系統(tǒng)具有依賴性,受計算機(jī)系統(tǒng)的限制,這導(dǎo)致了軟件移植的問題。(5)軟件復(fù)雜性高,成本昂貴。軟件是人類有史以來生產(chǎn)的復(fù)雜度最高的工業(yè)產(chǎn)品。軟件涉及人類社會的各行各業(yè)、方方面面,軟件開發(fā)常常涉及其他領(lǐng)域的專門知識。軟件開發(fā)需要投入大量、高強(qiáng)度的腦力勞
4、動,這其中蘊(yùn)含著成本高,風(fēng)險大的問題。(6)軟件開發(fā)涉及諸多的社會因素。許多軟件的開發(fā)和運(yùn)行涉及軟件用戶的機(jī)構(gòu)設(shè)置,體制問題以及管理方式等,甚至涉及到人們的觀念和心理因素,軟件知識產(chǎn)權(quán)及法律等諸多的問題。軟件根據(jù)應(yīng)用目標(biāo)的不同,是多種多樣的。軟件按功能可以分為:應(yīng)用軟件、系統(tǒng)軟件、支撐軟件(或工具軟件)。應(yīng)用軟件是為解決特定領(lǐng)域的應(yīng)用而開發(fā)的軟件。例如,事務(wù)處理軟件,工程與科學(xué)計算軟件,實時處理軟件,嵌入式軟件以及人工智能軟件等各種應(yīng)用性質(zhì)不同的軟件。系統(tǒng)軟件是計算機(jī)管理自身資源,提高計算機(jī)使用效率并為計算機(jī)用戶提供各種服務(wù)的軟件。例如,操作系統(tǒng),編譯程序,匯編程序,網(wǎng)絡(luò)軟件,數(shù)據(jù)庫管理系統(tǒng)等
5、。支撐軟件是介于系統(tǒng)軟件和應(yīng)用軟件之間、協(xié)助用戶開發(fā)軟件的工具性軟件。例如,需求分析工具軟件,設(shè)計工具軟件,編碼工具軟件,測試工具軟件,維護(hù)工具軟件等。8.1.2軟件危機(jī)與軟件工程軟件危機(jī)“軟件危機(jī)”這個詞在20世紀(jì)60年代末以后頻繁出現(xiàn)。所謂軟件危機(jī)是泛指在計算機(jī)軟件的開發(fā)和維護(hù)過程中所遇到的一系列嚴(yán)重問題。隨著計算機(jī)技術(shù)的發(fā)展和計算機(jī)應(yīng)用范圍的擴(kuò)大,計算機(jī)硬件的性價比和質(zhì)量穩(wěn)步提高,軟件規(guī)模越來越大,復(fù)雜程度不斷增加,軟件成本逐年上升,質(zhì)量沒有可靠的保證,軟件已成為計算機(jī)科學(xué)發(fā)展的“瓶頸”。具體地說,在軟件開發(fā)和維護(hù)過程中,軟件危機(jī)主要表現(xiàn)在:(1)軟件需求的增長得不到滿足。用戶對系統(tǒng)不滿
6、意的情況經(jīng)常發(fā)生。(2)軟件開發(fā)成本和進(jìn)度無法控制。(3)軟件質(zhì)量難以保證。(4)軟件不可維護(hù)或維護(hù)程度非常低。(5)軟件的成本不斷提高。(6)軟件開發(fā)生產(chǎn)率的提高趕不上硬件的發(fā)展和應(yīng)用需求的增長。在軟件開發(fā)和維護(hù)過程中,之所以存在這些嚴(yán)重的問題,一方面與軟件本身的特點有關(guān)。例如,在軟件運(yùn)行前,軟件開發(fā)過程的進(jìn)展難以衡量,質(zhì)量難以評價,因此管理和控制軟件開發(fā)過程相當(dāng)困難;在軟件運(yùn)行過程中,軟件維護(hù)意味著改正或修改原來的設(shè)計。另外,軟件的顯著特點是規(guī)模龐大,在開發(fā)大型軟件時,要保證高質(zhì)量,極端復(fù)雜困難,不僅涉及技術(shù)問題(如分析方法、設(shè)計方法、版本控制),更重要的是必須有嚴(yán)格而科學(xué)的管理。軟件工程
7、為了消除軟件危機(jī),通過認(rèn)真研究解決軟件危機(jī)的方法,認(rèn)識到軟件工程是使計算機(jī)軟件走向工程科學(xué)的途徑,逐步形成了軟件工程的概念,開辟了工程學(xué)的新領(lǐng)域軟件工程學(xué)。軟件工程就是試圖用工程、科學(xué)和數(shù)學(xué)的原理與方法研制、維護(hù)計算機(jī)軟件的有關(guān)技術(shù)及管理方法。關(guān)于軟件工程的定義,國標(biāo)(GB)中指出,軟件工程是應(yīng)用于計算機(jī)軟件的定義、開發(fā)和維護(hù)的一整套方法、工具、文檔、實踐標(biāo)準(zhǔn)和工序。1968年在北大西洋公約組織會議(NATO會議)上,討論擺脫軟件危機(jī)的辦法,軟件工程(SoftwareEngineering)作為一個概念首次被提出,這在軟件技術(shù)發(fā)展史上是一件大事。在會議上,德國人FritzBauer認(rèn)為:“軟件
8、工程是建立并使用完善的工程化原則,以較經(jīng)濟(jì)的手段獲 TOC o 1-5 h z 得能在實際機(jī)器上有效運(yùn)行的可靠軟件的一系列方法”。1993年,IEEE(InstituteOfElectrical&ElectronicEngineers,電氣和電子工程師學(xué)會)給出了一個更加綜合的定義:“將系統(tǒng)化的、規(guī)范的、可度量的方法應(yīng)用于軟件的開發(fā)、運(yùn)行和維護(hù)的過程,即將工程化應(yīng)用于軟件中”。這些主要思想都是強(qiáng)調(diào)在軟件開發(fā)過程中需要應(yīng)用工程化原則。軟件工程包括3個要素,即方法、工具和過程。方法是完成軟件工程項目的技術(shù)手段;工具支持軟件的開發(fā)、管理、文檔生成;過程支持軟件開發(fā)的各個環(huán)節(jié)的控制、管理。軟件工程的核
9、心思想是把軟件產(chǎn)品作為是一個工程產(chǎn)品來處理。把需求計劃、可行性研究、工程審核、質(zhì)量監(jiān)督等工程化的概念引入到軟件生產(chǎn)當(dāng)中,以期達(dá)到工程項目的三個基本要素:進(jìn)度、經(jīng)費(fèi)和質(zhì)量的目標(biāo)。同時軟件工程也注重研究不同于其他工業(yè)產(chǎn)品生產(chǎn)的一些特性,并針對軟件的特點提出了許多有別于一般工業(yè)技術(shù)的一些技術(shù)方法。從經(jīng)濟(jì)學(xué)意義上說,軟件龐大的維護(hù)費(fèi)用遠(yuǎn)比軟件開發(fā)費(fèi)用高,因此開發(fā)軟件不能只考慮開發(fā)期間的費(fèi)用,而應(yīng)考慮軟件生命周期內(nèi)的全部費(fèi)用。8.1.3軟件工程過程與軟件生命周期軟件工程過程(SoftwareEngineeringProcess)軟件工程過程包括兩方面的內(nèi)涵:(1)軟件工程過程是為獲得軟件產(chǎn)品,在軟件工具
10、的支持下由軟件人員完成的一系列軟件工程活動。從這個方面來說,軟件工程過程通常包含四種基本活動:軟件規(guī)格說明:規(guī)定軟件的功能及其運(yùn)行的限制;軟件開發(fā):產(chǎn)生滿足規(guī)格說明的軟件;軟件確認(rèn):確認(rèn)軟件能夠完成客戶提出的要求;軟件演進(jìn):為滿足客戶的變更要求,軟件必須在使用的過程中演進(jìn)。(2)從軟件開發(fā)的觀點看,軟件工程過程就是使用適當(dāng)?shù)馁Y源(包括人員、軟硬件工具、時間等)為開發(fā)軟件進(jìn)行的一組開發(fā)活動,在過程結(jié)束時將輸入(用戶要求)轉(zhuǎn)化為輸出(軟件產(chǎn)品)。所以,軟件工程的過程是將軟件工程的方法和工具綜合起來,以達(dá)到合理、及時地進(jìn)行計算機(jī)軟件開發(fā)的目的。.軟件的生命周期(SoftwareLifeCycle)通
11、常,將軟件產(chǎn)品提出、實現(xiàn)、使用維護(hù)到停止使用退役的過程稱為軟件的生命周期。可以將軟件生命周期分為如圖14-1所示的軟件定義、軟件開發(fā)及軟件運(yùn)行維護(hù)三個階段。圖14-1軟件生命周期圖14-1所示的軟件生命周期的主要活動階段是:(1)可行性研究與計劃制定。確定待開發(fā)軟件系統(tǒng)的開發(fā)目標(biāo)和總的要求,給出它的功能、性能、可靠性以及接口等方面的可能方案,制定完成開發(fā)任務(wù)的實施計劃。(2)需求分析。對待開發(fā)軟件提出的需求進(jìn)行分析弁給出詳細(xì)定義。編寫軟件規(guī)格說明書及初步的用戶手冊,提交評審。(3)軟件設(shè)計。系統(tǒng)設(shè)計人員和程序設(shè)計人員應(yīng)該在反復(fù)理解軟件需求的基礎(chǔ)上,給出軟件的結(jié)構(gòu)、模塊的劃分、功能的分配以及處理
12、流程。如果系統(tǒng)比較復(fù)雜,則可將設(shè)計階段分為概要設(shè)計和詳細(xì)設(shè)計兩個階段。(4)軟件實現(xiàn)。把軟件設(shè)計轉(zhuǎn)換成計算機(jī)可以接受的程序代碼。(5)軟件測試。在設(shè)計測試用例的基礎(chǔ)上,檢驗軟件的各個組成部分。(6)運(yùn)行和維護(hù)。將已交付的軟件投入運(yùn)行,弁在運(yùn)行使用中不斷地維護(hù),根據(jù)新提出的需求進(jìn)行必要而且可能的擴(kuò)充和刪改。8.1.4軟件工程的目標(biāo)與原則.軟件工程的目標(biāo)軟件工程的目標(biāo)是,在給定成本與進(jìn)度的前提下,開發(fā)出滿足用戶需求且其有效性、可靠性、可理解性、可維護(hù)性、可重用性、可適應(yīng)性、可移植性、可追蹤性和可互操作性較好的產(chǎn)品。軟件工程需要達(dá)到的基本目標(biāo)應(yīng)是:付出較低的開發(fā)成本;達(dá)到要求的軟件功能;取得較好的軟
13、件性能;開發(fā)的軟件易于移植;需要較低的維護(hù)費(fèi)用;能按時完成開發(fā),及時交付使用。為了達(dá)到軟件工程的目標(biāo),軟件工程研究的內(nèi)容主要包括:軟件開發(fā)技術(shù)和軟件工程管理。1)軟件開發(fā)技術(shù)軟件開發(fā)技術(shù)包括:軟件開發(fā)方法學(xué)、軟件開發(fā)過程、軟件開發(fā)工具和軟件工程環(huán)境,其主體內(nèi)容是軟件開發(fā)方法學(xué)。軟件開發(fā)方法學(xué)是根據(jù)不同的軟件類型,按不同的觀點和原則,對軟件開發(fā)中應(yīng)遵循的策略、原則、步驟和必須產(chǎn)生的文檔資料都做出規(guī)定,從而使軟件的開發(fā)能夠進(jìn)入規(guī)范化和工程化的階段,以克服早期的手工方法生產(chǎn)中的隨意性和非規(guī)范性做法。2)軟件工程管理軟件工程管理包括:軟件管理學(xué)、軟件工程經(jīng)濟(jì)學(xué)、軟件心理學(xué)等內(nèi)容。軟件工程管理是軟件按工
14、程化生產(chǎn)時的重要環(huán)節(jié),它要求按照預(yù)先制定的計劃、進(jìn)度和預(yù)算執(zhí)行,以實現(xiàn)預(yù)期的經(jīng)濟(jì)效益和社會效益。軟件管理學(xué)包括人員組織、進(jìn)度安排、質(zhì)量保證、配置管理、項目計劃等。軟件工程經(jīng)濟(jì)學(xué)是研究軟件開發(fā)中成本的估算、成本效益分析的方法和技術(shù),用經(jīng)濟(jì)學(xué)的基本原理來研究軟件工程開發(fā)中的經(jīng)濟(jì)效益問題。軟件心理學(xué)是從個體心理、人類行為、組織行為和企業(yè)文化等角度來研究軟件管理和軟件工程的。軟件工程的原則為了達(dá)到上述的軟件工程目標(biāo),在軟件開發(fā)過程中,必須遵循軟件工程的基本原則。這些基本原則包括抽象、信息隱蔽、模塊化、局部化、確定性、一致性、完備性和可驗證性。1)抽象。抽取事物最基本的特性和行為,忽略非本質(zhì)細(xì)節(jié)。在實施
15、過程中,采用分層次抽象,自頂向下,逐層細(xì)化的方法來化解軟件開發(fā)過程的復(fù)雜性。2)信息隱蔽。用封裝技術(shù),將程序模塊的實現(xiàn)細(xì)節(jié)隱藏起來,并提供盡可能簡單的模塊接口,以便于和其他模塊連接在一起。3)模塊化。模塊是程序中相對獨(dú)立的成分,一個模塊是一個獨(dú)立的編程單位。模塊應(yīng)具有良好的接口定義。模塊的大小要適當(dāng)。4)局部化。要求在一個物理模塊內(nèi)集中邏輯上相互關(guān)聯(lián)的計算資源,保證模塊間具有松散的耦合關(guān)系,模塊內(nèi)部有較強(qiáng)的內(nèi)聚性,這有助于控制系統(tǒng)的復(fù)雜性。5)確定性。軟件開發(fā)過程中所有概念的表達(dá)應(yīng)是確定的、無歧義的和規(guī)范的。這有助于人與人之間的交流,不會產(chǎn)生誤解和遺漏,從而保證整個開發(fā)工作的協(xié)調(diào)一致。6)一致
16、性。在程序、數(shù)據(jù)和文檔的整個軟件系統(tǒng)的各模塊中,應(yīng)使用已知的概念、符號和術(shù)語;程序內(nèi)部和外部接口應(yīng)保持一致,系統(tǒng)規(guī)格說明與系統(tǒng)行為應(yīng)保持一致。7)完備性。軟件系統(tǒng)不丟失任何重要成分,完全實現(xiàn)系統(tǒng)所需的功能。8)可驗證性。開發(fā)大型軟件系統(tǒng)需要對系統(tǒng)自頂向下,逐層分解。系統(tǒng)分解應(yīng)遵循容易檢查、測評、評審的原則,以確保系統(tǒng)的正確性。8.1.5軟件開發(fā)工具與軟件開發(fā)環(huán)境現(xiàn)代軟件工程方法之所以得以實施,依賴于相應(yīng)的軟件開發(fā)工具和環(huán)境的支持,使軟件在開發(fā)效率、工程質(zhì)量等多方面得到改善。軟件工程鼓勵研制和采用各種先進(jìn)的軟件開發(fā)方法、工具和環(huán)境,而工具和環(huán)境的使用又進(jìn)一步提高了軟件的開發(fā)效率、維護(hù)效率和軟件質(zhì)
17、量。1軟件開發(fā)工具軟件開發(fā)工具(SoftwareDevelopmentofTool)是指可以用來幫助開發(fā),測試、分析、維護(hù)其他計算機(jī)程序及其文檔資料的一類程序。軟件開發(fā)工具的完善和發(fā)展將促進(jìn)軟件開發(fā)方法的進(jìn)步和完善,促成軟件開發(fā)的高速度和高質(zhì)量。軟件開發(fā)工具的發(fā)展是從單項工具的開發(fā)逐步向集成工具發(fā)展的,軟件開發(fā)工具為軟件工程方法提供了自動的或半自動的軟件支撐環(huán)境。同時,軟件開發(fā)方法的有效應(yīng)用也必須得到軟件開發(fā)工具的支持,否則方法將難以有效的實施。2軟件開發(fā)環(huán)境軟件開發(fā)環(huán)境或軟件工程環(huán)境(SoftwareEngineeringEnvironment,SEE)是全面支持軟件開發(fā)全過程的軟件工具集合
18、。它們按照一定的方法或模式組合起來,支持軟件生命周期內(nèi)的各個階段中各項任務(wù)的完成。計算機(jī)輔助軟件工程(ComputerAidedSoftwareEngineering,CASE)是當(dāng)前軟件開發(fā)環(huán)境中富有特色的研究工作和發(fā)展方向。CASE將各種軟件工具、開發(fā)機(jī)器和一個存放開發(fā)過程信息的中心數(shù)據(jù)庫組合起來,形成軟件工程環(huán)境。CASE的成功產(chǎn)品將最大限度地降低軟件開發(fā)的技術(shù)難度,并使軟件開發(fā)的質(zhì)量得到保證。8.2軟件需求分析需求分析與需求分析方法需求分析軟件需求是指用戶對目標(biāo)軟件系統(tǒng)在功能、行為、性能、設(shè)計約束等方面的期望和要求。需求分析的目的是形成軟件需求規(guī)格說明書,但還不是確定系統(tǒng)如何工作,僅對
19、目標(biāo)系統(tǒng)提出明確具體的要求。需求分析必須達(dá)到開發(fā)人員和用戶完全一致的要求。需求分析階段的工作,可以概括為四個方面:1)需求獲?。盒枨螳@取的目的是確定對目標(biāo)系統(tǒng)的各方面需求。2)需求分析:對獲取的需求進(jìn)行分析和綜合,最終給出系統(tǒng)的解決方案和目標(biāo)系統(tǒng)的邏輯模型。3)編寫需求規(guī)格說明書:需求規(guī)格說明書作為需求分析的階段成果,可為用戶、分析人員和設(shè)計人員之間的交流提供方便,可直接支持目標(biāo)軟件系統(tǒng)的確認(rèn),還可以作為控制軟件開發(fā)進(jìn)程的依據(jù)。4)需求評審:在需求分析的最后一步,對需求分析階段的工作進(jìn)行復(fù)審,驗證需求文檔的一致性、可行性、完整性和有效性。需求分析方法常見的需求分析方法有以下兩種:1)結(jié)構(gòu)化分析
20、方法。主要包括:面向數(shù)據(jù)流的結(jié)構(gòu)化分析方法(StructuredAnalysis,SA),面向數(shù)據(jù)結(jié)構(gòu)的Jackson系統(tǒng)開發(fā)方法(JacksonSystemDevelopmentMethod,JSD),面向數(shù)據(jù)結(jié)構(gòu)的結(jié)構(gòu)化數(shù)據(jù)系統(tǒng)開發(fā)方法(DataStructuredSystemDevelopmentMethod,DSSD)。2)面向?qū)ο蟮姆治龇椒ǎ∣bject-OrientedMethod,OOA)。從需求分析建立的模型的特性來分,需求分析方法又分為靜態(tài)分析方法和動態(tài)分析方法。8.2.2結(jié)構(gòu)化分析方法結(jié)構(gòu)化分析方法是結(jié)構(gòu)化程序設(shè)計理論在軟件需求分析階段的運(yùn)用。它起源于20世紀(jì)70年代的基于
21、功能分解的分析方法,可幫助我們弄清用戶對軟件的需求。結(jié)構(gòu)化分析方法的實質(zhì)是著眼于數(shù)據(jù)流,自頂向下,逐層分解,建立系統(tǒng)的處理流程,以數(shù)據(jù)流圖和數(shù)據(jù)字典為主要工具,建立系統(tǒng)的邏輯模型。結(jié)構(gòu)化分析的步驟如下:(1)通過對用戶的調(diào)查,以軟件的需求為線索,獲得當(dāng)前系統(tǒng)的具體模型。去掉具體模型中非本質(zhì)因素,抽象出當(dāng)前系統(tǒng)的邏輯模型。根據(jù)計算機(jī)的特點分析當(dāng)前系統(tǒng)與目標(biāo)系統(tǒng)的差別,建立目標(biāo)系統(tǒng)的邏輯模型。完善目標(biāo)系統(tǒng)并補(bǔ)充細(xì)節(jié),寫出目標(biāo)系統(tǒng)的軟件需求規(guī)格說明。評審直到確認(rèn)完全符合用戶對軟件的需求。結(jié)構(gòu)化分析的常用工具有數(shù)據(jù)流圖、數(shù)據(jù)字典、判定表和判定樹等。數(shù)據(jù)流圖(DataFlowDiagram,DFD)數(shù)據(jù)
22、流圖是描述數(shù)據(jù)處理過程的工具,是從數(shù)據(jù)傳遞和加工的角度,以圖形的方式描繪數(shù)據(jù)在系統(tǒng)中流動和處理的過程。這里以人們熟悉的事務(wù)處理一一去銀行取款為例說明數(shù)據(jù)流圖如何描述處理過程。圖14-2表示儲戶攜帶存折去銀行辦理取款手續(xù)。儲戶把存折和取款單交給銀行工作人員,工作人員核對賬目。檢驗存折有效性,取款單填寫問題,在合格后工作人員將取款信息登記在存折和賬戶上,弁通知取款,付款給儲戶從而完成一系列的數(shù)據(jù)處理活動o賬卡檢驗出問題檢驗取款信息存折日歷年月日圖14-2銀行取款業(yè)務(wù)的數(shù)據(jù)流圖從數(shù)據(jù)流圖中可知,數(shù)據(jù)流圖的基本圖形元素有4種,如圖14-3所示。圖14-3DFD的基本圖形符號圓形:加工。輸入數(shù)據(jù)經(jīng)加工變
23、換產(chǎn)生輸出。矩形:表示數(shù)據(jù)的源點或終點。是系統(tǒng)和環(huán)境的接口,屬系統(tǒng)之外的實體。箭頭:數(shù)據(jù)流。沿箭頭方向傳送數(shù)據(jù)的通道。雙杠:表示存儲文件(數(shù)據(jù)源)。即處理過程中存放各種數(shù)據(jù)文件。數(shù)據(jù)流是沿箭頭方向傳送的數(shù)據(jù),在加工之間傳輸?shù)臄?shù)據(jù)流一般是有名的,連接數(shù)據(jù)存儲文件和加工的數(shù)據(jù)流有些沒有命名,這些數(shù)據(jù)流雖然沒有命名,但因所連接的是有名加工和有名文件,所以含義是清楚的。同一數(shù)據(jù)流圖上不能有兩個數(shù)據(jù)流名字相同。.數(shù)據(jù)字典(DataDictionary,DD)數(shù)據(jù)字典是結(jié)構(gòu)化分析方法的另一個工具。它與數(shù)據(jù)流圖配合,能清楚地表達(dá)數(shù)據(jù)處理的要求。數(shù)據(jù)流圖給出系統(tǒng)的組成及其內(nèi)部各元素相互之間的關(guān)系,但未說明數(shù)據(jù)
24、元素的具體含義。僅靠數(shù)據(jù)流圖人們很難理解它所描述的對象。數(shù)據(jù)字典是對所有與系統(tǒng)相關(guān)的數(shù)據(jù)元素的一個有組織的列表,以及精確的、嚴(yán)格的定義,使得用戶和系統(tǒng)分析員對于輸入、輸出、存儲成分和中間計算結(jié)果有共同的理解。在數(shù)據(jù)字典的編制過程中,常使用定義式方式描述數(shù)據(jù)結(jié)構(gòu)。表14-1給出了常用的定義式符號。表14-1數(shù)據(jù)字典定義式方式中出現(xiàn)的符號符號含義解釋=定義為+與例如x=a+b,表示x由a和b組成【1或例如,x=a,b,x=a|b,表示x由a或由b組成與,和例如,x=a,表示x由0個或多個a組成nm重復(fù)例如,x=4a9,表示a可以在x中至少出現(xiàn)4次最多出現(xiàn)9次()可選例如,x=(a)表示a可以在x中
25、出現(xiàn),也可以不出現(xiàn)基本可選兀素例如,x=a,表示x為取值為a的數(shù)據(jù)兀素連接符例如,x=3.9,表示x可以取3到9之間的任一值例如,銀行取款業(yè)務(wù)的數(shù)據(jù)流圖中,存儲文件“存折”的數(shù)據(jù)字典定義如下:存折=戶名+所號賬戶+開戶日+性質(zhì)+(印密)+1存取行50戶名=2字母24所號=00L.“999”注:儲蓄所編碼,規(guī)定為3位數(shù)字賬號.“00000001”?99999999”注:賬號規(guī)定由8位數(shù)字組成開戶日=年+月+日性質(zhì)二“了6”“注:“1”表7K普通用戶,“5”表7K工資用戶一、J等、一,一印密=0”學(xué)注:密印在存折上不顯示存取行=日期+(摘要)+支出+存入+余額+操作+復(fù)核日期=年+月+日年=00”
26、.“99”月=01”.“12”日=01”.“31”摘要=1字母)4支出=金額金額=0000000.01”“9999998.99”操作=00001”.”99999”?判定表當(dāng)數(shù)據(jù)流圖中的加工要依賴于多個邏輯條件的取值,即完成該加工的一組動作是由于某一組條件取值的組合而引發(fā)的,使用判定表描述比較合適。例如,檢查定購單的加工邏輯是:如果金額超過600元又未過期則發(fā)出批準(zhǔn)單和提貨單;若金額超過600元但過期了則不發(fā)批準(zhǔn)單;如果金額不超過600元,則無論過期與否都發(fā)批準(zhǔn)單和提貨單;在過期的情況下,還需發(fā)出通知單。上述文字是不易懂的,用判定表的方式可以寫為表14-2:表14-2檢查訂購單的判定表條件分類1
27、234金額600600600600動作賬目狀況未過期已過期未過期已過期才并批準(zhǔn)單V發(fā)出批準(zhǔn)單VVV發(fā)出提貨單VVV發(fā)出通知單V.判定樹判定樹也是用來表達(dá)加工邏輯的一種工具。有時候,它比判定表更加直觀,用它來描述加工很容易為用戶所接受。使用判定樹進(jìn)行描述時,應(yīng)先從問題定義的文字描述中分清哪些是判定的條件,哪些是判定的結(jié)論,根據(jù)描述材料中的連接詞找出判定條件之間的從屬關(guān)系、弁列關(guān)系、選擇關(guān)系,根據(jù)它們構(gòu)造判定樹。例如,我們看一個例子,某工廠制定出對職工超產(chǎn)的獎勵政策是:對產(chǎn)品甲和產(chǎn)品乙,凡是實際生產(chǎn)數(shù)量超過計劃指標(biāo)的,均可發(fā)給獎金。原則是:超產(chǎn)越多,獎金就越多,不封頂。對產(chǎn)品甲,個人生產(chǎn)數(shù)量超過計
28、劃指標(biāo)1?20件,按超產(chǎn)部分每件發(fā)給獎金0.10元計算;如果個人生產(chǎn)數(shù)量超過計劃指標(biāo)21?50件,其中前20件按0.10元計獎金,其余部分按每件0.12元計算獎金;如果超過50件,從第51件起按每件0.15元發(fā)獎金。對產(chǎn)品乙,個人生產(chǎn)數(shù)量超過計劃1?100件,按每超一件發(fā)獎金0.20元計算;如果超產(chǎn)101?200件,前100件按每件0.20元;101?200件的每件0.30元計算;超產(chǎn)200件以上的部分每件發(fā)獎金0.40元。若用結(jié)構(gòu)化語言是相當(dāng)長的一段,我們可以用判定樹清晰地表達(dá)出來。1_N_200.10N產(chǎn)品甲505.6元+0.15(N-50)元獎金政策一1EN1000.2XN元產(chǎn)品乙100
29、N200-50元+(N-200)0.40元這張判定樹能夠使人很快地看出,在什么樣的情況下應(yīng)該采取什么獎金措施,特別是對那些存在判定處理的加工邏輯,判定樹是一種十分有效的表達(dá)工具。8.2.3軟件需求規(guī)格說明書軟件需求規(guī)格說明書(SoftwareRequirementSpecification,SRS是需求分析階段的最后成果,是軟件開發(fā)中的重要文檔之一。1.軟件需求規(guī)格說明書的作用軟件需求規(guī)格說明書的作用是:+1)便于用戶、開發(fā)人員進(jìn)行理解和交流。+2)反映出用戶問題的結(jié)構(gòu),可以作為軟件開發(fā)工作的基礎(chǔ)和依據(jù)。3)作為確認(rèn)測試和驗收的依據(jù)。2.軟件需求規(guī)格說明書的內(nèi)容軟件需求規(guī)格說明書是作為需求分析
30、的一部分而制定的可交付說明、恰當(dāng)?shù)臋z驗標(biāo)準(zhǔn)以及其他與要求有關(guān)的數(shù)據(jù)。文檔該說明 將在軟件計劃中確定的軟件范圍加以展開,制定出完整的信息描述、詳細(xì)的功能軟件需求規(guī)格說明書所包括的內(nèi)容和書寫框架如下:一、概述二、數(shù)據(jù)描述?數(shù)據(jù)流圖?數(shù)據(jù)字典?系統(tǒng)接口說明?內(nèi)部接口三、功能描述?功能?處理說明?設(shè)計的限制四、性能描述?性能參數(shù)?測試種類?預(yù)期的軟件響應(yīng)?應(yīng)考慮的特殊問題五、參考文獻(xiàn)目錄六、附錄其中:(1)概述是從系統(tǒng)的角度描述軟件的目標(biāo)和任務(wù)。數(shù)據(jù)描述是對軟件系統(tǒng)所必須解決的問題做出的詳細(xì)說明。功能描述中描述了為解決用戶問題所需要的每一項功能的過程細(xì)節(jié)。對每項功能要給出處理說明以及在設(shè)計時需要考慮的
31、限制條件。在性能描述中說明系統(tǒng)應(yīng)達(dá)到的性能和應(yīng)該滿足的限制條件,檢測的方法和標(biāo)準(zhǔn),預(yù)期的軟件響應(yīng)和可能需要考慮的特殊問題。參考文獻(xiàn)目錄中應(yīng)包括與該軟件有關(guān)的全部參考文獻(xiàn),其中包括前期的其他文檔、技術(shù)參考資料、產(chǎn)品目錄手冊以及標(biāo)準(zhǔn)等。附錄部分包括一些補(bǔ)充資料。如列表數(shù)據(jù)、算法的詳細(xì)說明、框圖、圖表和其他材料。3軟件需求規(guī)格說明書的特征軟件需求規(guī)格說明書是確保軟件質(zhì)量的有力措施,衡量軟件需求規(guī)格說明書質(zhì)量好壞的標(biāo)準(zhǔn)、標(biāo)準(zhǔn)的優(yōu)先級及標(biāo)準(zhǔn)的內(nèi)涵如下:(1)正確性。體現(xiàn)待開發(fā)系統(tǒng)的真實要求。無歧義性。對每一個需求只有一種解釋,其陳述具有惟一性。完整性。包括全部有意義的需求,功能的、性能的、設(shè)計的、約束的
32、、屬性或外部接口等方面的需求??沈炞C性。描述的每一個需求都是可驗證的,即存在有限代價的有效過程驗證確認(rèn)。(5)一致性。各個需求的描述不矛盾。(6)可理解性。需求說明書要簡明易懂,盡量少包含計算機(jī)的概念和術(shù)語,以便用戶和軟件人員都能接受它。7)可修改性。SRS的結(jié)構(gòu)風(fēng)格在需求有必要改變時是易于實現(xiàn)的。8)可追蹤性。每一個需求的來源、流向是清晰的,當(dāng)產(chǎn)生和改變文件編制時,可以方便地追蹤每一個軟件需求。軟件需求規(guī)格說明書是軟件生命周期中一份至關(guān)重要的文件,它在開發(fā)早期就為將要設(shè)計的軟件系統(tǒng)建立了可見的邏輯模型,可以保證開發(fā)工作的順利進(jìn)行,因此,應(yīng)該重視這項工作,應(yīng)及時地建立并保證它的質(zhì)量。作為設(shè)計的
33、基礎(chǔ)和驗收的依據(jù),軟件需求規(guī)格說明書應(yīng)該精確而無二義性,軟件需求規(guī)格說明書越精確,則以后出現(xiàn)錯誤、混淆、反復(fù)的可能性越小。軟件需求規(guī)格說明書應(yīng)該是簡單易懂的,以便用戶和軟件人員都能接受它。其中應(yīng)盡量少包含計算機(jī)的概念和術(shù)語,以便用戶能看懂并且發(fā)現(xiàn)和指出其中的錯誤,這是保證軟件系統(tǒng)質(zhì)量的關(guān)鍵。8.3軟件設(shè)計軟件設(shè)計是根據(jù)需求分析階段得到的需求規(guī)格說明書,設(shè)計出實現(xiàn)軟件屬性性能及其他)集合的算法和數(shù)據(jù)結(jié)構(gòu),并對它們進(jìn)行規(guī)格化處理,也就是從抽象的需求規(guī)格向具體的程序功能、與數(shù)據(jù)集合的變換過程。在此過程中,要形成各種設(shè)計文檔,即各種設(shè)計書,它是設(shè)計階段最終產(chǎn)品。軟件設(shè)計階段是軟件開發(fā)過程中的一個關(guān)鍵階
34、段,對未來軟件的質(zhì)量有決定性的影響。軟件設(shè)計的基木概念分析階段的工作結(jié)果是需求說明書,它明確地描述了用戶要求軟件系統(tǒng)“做什么”但對于大型系統(tǒng)來說,為了保證軟件產(chǎn)品的質(zhì)量,并使開發(fā)工作順利進(jìn)行,必須先為編程序制定一個計劃,這項工作稱為軟件設(shè)計,設(shè)計實際上是為需求說明書到程序之間的過渡架起一座橋梁。軟件設(shè)計的基礎(chǔ)軟件設(shè)計是軟件工程的重要階段,是一個把軟件需求轉(zhuǎn)換為軟件表示的過程。軟件設(shè)計的基本目標(biāo)是用比較抽象概括的方式確定目標(biāo)系統(tǒng)如何完成預(yù)定的任務(wù),計是確定系統(tǒng)的物理模型。即軟件設(shè)軟件設(shè)計的重要性和地位可概括為以下幾點:1)軟件開發(fā)階段(設(shè)計、編碼、測試)占據(jù)軟件項目開發(fā)總成本絕大部分,是在軟件開
35、發(fā)中保證質(zhì)量的關(guān)鍵環(huán)節(jié)。2)軟件設(shè)計是開發(fā)階段最重要的步驟,是將需求準(zhǔn)確地轉(zhuǎn)化為完整的軟件產(chǎn)品或系統(tǒng)的唯一途徑。3)軟件設(shè)計做出的決策,最終影響軟件實現(xiàn)的成敗。從技術(shù)觀點來看,軟件設(shè)計包括軟件結(jié)構(gòu)設(shè)計、數(shù)4)設(shè)計是軟件工程和軟件維護(hù)的基礎(chǔ)。據(jù)設(shè)計、接口設(shè)計和過程設(shè)計。其中,結(jié)構(gòu)設(shè)計是定義軟件系統(tǒng)各主要部件之間的關(guān)系。數(shù)據(jù)設(shè)計是將分析時創(chuàng)建的模型轉(zhuǎn)化為數(shù)據(jù)結(jié)構(gòu)的定義。接口設(shè)計是描述軟件內(nèi)部、軟件和協(xié)作系統(tǒng)之間以及軟件與人之間如何通信。過程設(shè)計是將系統(tǒng)結(jié)構(gòu)部件轉(zhuǎn)換成軟件的過程性描述。從工程管理角度來看,軟件設(shè)計分兩步完成(概要設(shè)計和詳細(xì)設(shè)計)。概要設(shè)計:又稱為結(jié)構(gòu)設(shè)計。將軟件需求轉(zhuǎn)化為軟件體系結(jié)構(gòu)
36、,確定系統(tǒng)級接口、全局?jǐn)?shù)據(jù)結(jié)構(gòu)或數(shù)據(jù)庫模式。詳細(xì)設(shè)計:確定每個模塊的實現(xiàn)算法和局部數(shù)據(jù)結(jié)構(gòu),用適當(dāng)方法表示算法和數(shù)據(jù)結(jié)構(gòu)的細(xì)節(jié)。軟件設(shè)計的一般過程:軟件設(shè)計是一個迭代的過程,先進(jìn)行高層次的結(jié)構(gòu)設(shè)計;后進(jìn)行低層次的過程設(shè)計;穿插進(jìn)行數(shù)據(jù)設(shè)計和接口設(shè)計。最引人注意且使用范圍最廣的方法是結(jié)構(gòu)化設(shè)計方法。其基本思想是將軟件設(shè)計成由相對獨(dú)立且具有單一功能的模塊組成的結(jié)構(gòu)。軟件設(shè)計的基本原理在軟件開發(fā)實踐中,有許多軟件設(shè)計的概念和原則,它們對提高軟件的設(shè)計質(zhì)量有很大的幫助。1)模塊化模塊是數(shù)據(jù)說明、可執(zhí)行語句等程序?qū)ο蟮募?,可以對模塊單獨(dú)命名,而且可通過名字訪問,例如,過程、函數(shù)、子程序、宏等都可作為模
37、塊。模塊化是指解決一個復(fù)雜問題時自頂向下逐層把軟件系統(tǒng)劃分成若干模塊的過程。程序劃分成若干個模塊,每個模塊具有一個確定的子功能,把這些模塊集成為一個整體,就可以完成整個系統(tǒng)的功能。為了解決復(fù)雜的問題,在軟件設(shè)計中必須把整個問題進(jìn)行分解來降低復(fù)雜性,這樣就可以減少開發(fā)工作量并降低開發(fā)成本和提高軟件生產(chǎn)率。但是劃分模塊并不是越多越好,因為這會增加模塊之間接口的工作量,所以劃分模塊的層次和數(shù)量應(yīng)該避免過多或過少。2)抽象在現(xiàn)實世界中,事物、狀態(tài)或過程之間存在共性。把這些共性集中且概括起來,忽略它們之間的差異,這就是抽象。簡而言之抽象就是抽出事物的本質(zhì)特性而暫時不考慮它們的細(xì)節(jié)。軟件設(shè)計中考慮模塊化解
38、決方案時,可以定出多個抽象級別。抽象的層次從概要設(shè)計到詳細(xì)設(shè)計逐步降低。在概要設(shè)計中的模塊分層也是由抽象到具體逐步分析和構(gòu)造出來的。3)信息隱蔽信息隱蔽是指每個模塊的實現(xiàn)細(xì)節(jié)對于其他模塊來說是隱蔽的,也就是說,模塊中所包括的信息不允許其他不需要這些信息的模塊調(diào)用。4)模塊獨(dú)立性模塊獨(dú)立性是指每個模塊只完成系統(tǒng)要求的獨(dú)立的子功能,最好與其他模塊的聯(lián)系最少且接口簡單,這是評價設(shè)計好壞的重要標(biāo)準(zhǔn)。模塊的獨(dú)立性可由內(nèi)聚性和耦合性兩個標(biāo)準(zhǔn)來度量。耦合表示不同模塊之間互相連接的緊密程度,內(nèi)聚表示一個模塊內(nèi)部各個元素彼此結(jié)合的緊密程度。耦合性藕合性是對一個軟件結(jié)構(gòu)內(nèi)不同模塊之間互連程度的度量。藕合性強(qiáng)弱取決
39、于模塊間接口的復(fù)雜程度、調(diào)用模塊的方式以及通過接口的是哪些信息。藕合分為下列幾種,它們之間的藕合度由高到低排列如下。內(nèi)容藕合:若一個模塊直接訪問另一個模塊的內(nèi)容,則這兩個模塊稱為內(nèi)容藕合。它是最高程度的藕合。公共榴合:若一組模塊都訪問同一全局?jǐn)?shù)據(jù)結(jié)構(gòu),則它們之間的藕合稱為公共藕合。外部藕合:若一組模塊都訪問同一全局簡單變量而不是同一全局?jǐn)?shù)據(jù)結(jié)構(gòu),而且不通過參數(shù)表傳遞該全局變量的信息,則稱為外部藕合??刂婆汉希喝粢粋€模塊明顯地將開關(guān)量、名字等信息送入另一個模塊,控制另一個模塊的功能,則稱為控制藕合。控制藕合是中等程度的藕合,增加了系統(tǒng)的復(fù)雜程度。標(biāo)記藕合:若兩個以上的模塊都需要其余某一數(shù)據(jù)結(jié)構(gòu)子
40、結(jié)構(gòu)時,不使用其余全局變量的方式而是用記錄傳遞的方式,即兩模塊之間通過數(shù)據(jù)結(jié)構(gòu)變換信息,這樣的藕合稱為標(biāo)記藕合。數(shù)據(jù)藕合:若一個模塊訪問另一個模塊,被訪問模塊的輸入和輸出都是數(shù)據(jù)項參數(shù),即兩模塊之間通過數(shù)據(jù)參數(shù)交換信息,則這兩個模塊為數(shù)據(jù)藕合。非直接藕合:若兩個模塊沒有直接關(guān)系,它們之間的聯(lián)系完全是通過主模塊的控制和調(diào)用來實現(xiàn)的,則稱這兩個模塊為非直接藕合。非直接藕合的獨(dú)立性最強(qiáng)。從上面關(guān)于藕合機(jī)制的分類可以看出,一個模塊與其他模塊的藕合性越強(qiáng),則其模塊獨(dú)立性越弱。原則上,總是希望模塊之間的藕合表現(xiàn)為非直接藕合方式。但是,由于問題所固有的復(fù)雜性和結(jié)構(gòu)化設(shè)計的原則,非直接藕合往往是不存在的。(2
41、)內(nèi)聚性內(nèi)聚性是一個模塊內(nèi)部各個元素之間彼此結(jié)合的緊密程度的度量。內(nèi)聚是從功能角度來度量模塊內(nèi)的聯(lián)系的。簡單地說,理想內(nèi)聚的模塊只完成一個子功能。內(nèi)聚有以下幾種,它們之間的內(nèi)聚性由弱到強(qiáng)排列如下。偶然內(nèi)聚:指一個模塊完成一組任務(wù),這些任務(wù)間的關(guān)系很松散,稱為偶然內(nèi)聚。邏輯內(nèi)聚:指一個模塊完成的功能在邏輯上屬于相同或相似的一類,通過參數(shù)確定該模塊完成哪一個功能。時間內(nèi)聚:指一個模塊包含的任務(wù)必須在同一段時間內(nèi)執(zhí)行,就叫時間內(nèi)聚。例如,初始化模塊它按順序為變量賦初值。過程內(nèi)聚:指一個模塊內(nèi)各處理元素彼此相關(guān),且必須按特定順序執(zhí)行。通信內(nèi)聚:指一個模塊內(nèi)所有處理功能都通過使用公用數(shù)據(jù)而發(fā)生關(guān)系,這種
42、內(nèi)聚稱為通信內(nèi)聚,也具有過程內(nèi)聚的特點。順序內(nèi)聚:指一個模塊中各處理元素和同一個功能密切相關(guān),而且,這些處理必須順序執(zhí)行,通常前一個處理元素的輸出就是下一個處理元素的輸入。功能內(nèi)聚:指模塊內(nèi)所有元素共同完成一個功能,缺一不可,模塊已不可再分。這是最強(qiáng)的內(nèi)聚。內(nèi)聚性是信息隱蔽和局部化概念的自然擴(kuò)展。一個模塊的內(nèi)聚性越強(qiáng)則該模塊的模塊獨(dú)立性越強(qiáng)。作為軟件結(jié)構(gòu)設(shè)計的設(shè)計原則,要求每一個模塊的內(nèi)部都具有很強(qiáng)的內(nèi)聚性,它的各個組成部分彼此都密切相關(guān)。藕合性與內(nèi)聚性是模塊獨(dú)立性的兩個定性標(biāo)準(zhǔn),藕合與內(nèi)聚是相互關(guān)聯(lián)的。在程序結(jié)構(gòu)中,各模塊的內(nèi)聚性越強(qiáng),它們的藕合性越弱。一般來說,軟件設(shè)計時應(yīng)盡量做到高內(nèi)聚,
43、低藕合,即減弱模塊之間的藕合性和提高模塊內(nèi)的內(nèi)聚性,從而提高模塊的獨(dú)立性。8.3.2概要設(shè)計概要設(shè)計的任務(wù)軟件概要設(shè)計的基本任務(wù)是:(1)設(shè)計軟件系統(tǒng)結(jié)構(gòu)在需求分析階段,已經(jīng)把系統(tǒng)分解成層次結(jié)構(gòu),而在概要設(shè)計階段,需要進(jìn)一步分解,劃分為模塊以及模塊的層次結(jié)構(gòu)。劃分的具體過程是:采用某種設(shè)計方法,將一個復(fù)雜的系統(tǒng)按功能劃分成模塊。確定每個模塊的功能。確定模塊之間的調(diào)用關(guān)系。確定模塊之間的接口,即模塊之間傳遞的信息。評價模塊結(jié)構(gòu)的質(zhì)量。2)數(shù)據(jù)結(jié)構(gòu)及數(shù)據(jù)庫設(shè)計數(shù)據(jù)設(shè)計是實現(xiàn)需求定義和規(guī)格說明過程中提出的數(shù)據(jù)對象的邏輯表示。數(shù)據(jù)設(shè)計的具體任務(wù)是:確定輸入、輸出文件的詳細(xì)數(shù)據(jù)結(jié)構(gòu);結(jié)合算法設(shè)計,確定算
44、法所必需的邏輯數(shù)據(jù)結(jié)構(gòu)及其操作;確定對邏輯數(shù)據(jù)結(jié)構(gòu)所必須的那些操作的程序模塊,限制和確定各個數(shù)據(jù)設(shè)計決策的影響范圍;需要與操作系統(tǒng)或調(diào)度程序接口所必需的控制表進(jìn)行數(shù)據(jù)交換時,確定其詳細(xì)的數(shù)據(jù)結(jié)構(gòu)和使用規(guī)則;數(shù)據(jù)的保護(hù)性設(shè)計:防衛(wèi)性、一致性、冗余性設(shè)計。數(shù)據(jù)設(shè)計中應(yīng)注意掌握以下設(shè)計原則:用于功能和行為的系統(tǒng)分析原則也應(yīng)用于數(shù)據(jù)。應(yīng)該標(biāo)識所有的數(shù)據(jù)結(jié)構(gòu)以及其上的操作。應(yīng)當(dāng)建立數(shù)據(jù)字典,并用于數(shù)據(jù)設(shè)計和程序設(shè)計。低層的設(shè)計決策應(yīng)該推遲到設(shè)計過程的后期。只有那些需要直接使用數(shù)據(jù)結(jié)構(gòu)、內(nèi)部數(shù)據(jù)的模塊才能看到該數(shù)據(jù)的表示應(yīng)該開發(fā)一個由有用的數(shù)據(jù)結(jié)構(gòu)和應(yīng)用于其上的操作組成的庫。軟件設(shè)計和程序設(shè)計語言應(yīng)該支持
45、抽象數(shù)據(jù)類型的規(guī)格說明和實現(xiàn)。3)編寫概要設(shè)計文檔在概要設(shè)計階段,需要編寫的文檔有概要設(shè)計說明書、數(shù)據(jù)庫設(shè)計說明書、集成測試計劃等。(4)概要設(shè)計文檔評審在概要設(shè)計中,對設(shè)計部分是否完整地實現(xiàn)了需求中規(guī)定的功能、性能等要求,設(shè)計方案的可行性,關(guān)鍵的處理及內(nèi)外部接口定義正確性、有效性,各部分之間的一致性等都要進(jìn)行評審,以免在以后的設(shè)計中出現(xiàn)大的問題而返工。在概要設(shè)計過程中,常用的軟件結(jié)構(gòu)設(shè)計工具是結(jié)構(gòu)圖(StructureChart,SC),也稱為程序結(jié)構(gòu)圖。使用結(jié)構(gòu)圖描述軟件系統(tǒng)的層次和分塊結(jié)構(gòu)關(guān)系,它反映了整個系統(tǒng)的功能實現(xiàn)以及模塊與模塊之間的聯(lián)系和通信,描述了未來程序中的控制層次體系。結(jié)構(gòu)
46、圖是描述軟件結(jié)構(gòu)的圖形工具。結(jié)構(gòu)圖的基本圖符如圖14-4所示。一般模塊數(shù)據(jù)信息?-?控制信息圖14-4結(jié)構(gòu)圖基本圖符模塊用一個矩形表示,矩形內(nèi)注明模塊的功能和名字;箭頭表示模塊間調(diào)用關(guān)系。在結(jié)構(gòu)圖中還可以用帶注釋的箭頭表示模塊調(diào)用過程中來回傳遞的信息。如果希望進(jìn)步標(biāo)明傳遞的信息是數(shù)據(jù)還是控制信息,則可以用帶實心圓的箭頭表示傳遞的是控制信息,用帶空心圓箭頭表示傳遞的是數(shù)據(jù)。根據(jù)結(jié)構(gòu)化設(shè)計思想,結(jié)構(gòu)圖構(gòu)成的基本形式如圖14-5所示基本形式順序形式重復(fù)形式選擇形式圖14-5結(jié)構(gòu)圖構(gòu)成基本形式經(jīng)常使用的結(jié)構(gòu)圖有四種模塊類型:傳入模塊,傳出模塊、變換模塊和協(xié)調(diào)模塊。具表示形式如圖14-6所不傳出模塊倍出
47、欖塊:從上蛭塊朋得敷 據(jù),疑過理再舟 苴怙給下邊相堞?協(xié)調(diào)模塊圖14-6傳入模塊、傳出模塊、變換模塊和協(xié)調(diào)模塊的表示形式和含義F面通過圖14-7進(jìn)步了解程序結(jié)構(gòu)圖的有關(guān)術(shù)語財篝帳務(wù)系嫌上縱模聯(lián)從國慎塊憑證處理一國一J財務(wù)報一表- 圖14-7簡單財務(wù)賬務(wù)管理系統(tǒng)結(jié)構(gòu)圖深度:表示控制的層數(shù)。上級模塊、從屬模塊:上、下兩層模塊a和b,且有a調(diào)用b則a是上級模塊,b是從屬模塊。寬度:整體控制跨度(最大模塊數(shù)的層)的表示。扇入:調(diào)用一個給定模塊的模塊個數(shù)。扇出:一個模塊直接調(diào)用的其他模塊數(shù)。原子模塊:樹中位于葉子結(jié)點的模塊。2?面向數(shù)據(jù)流的設(shè)計方法在需求分析階段,主要是分析信息在系統(tǒng)中加工和流動的情況。
48、面向數(shù)據(jù)流的設(shè)計方法定義了一些不同的映射方法,利用這些映射方法可以把數(shù)據(jù)流圖變換成結(jié)構(gòu)圖表示的軟件結(jié)構(gòu)。首先需要了解數(shù)據(jù)流圖表示的數(shù)據(jù)處理的類型,然后針對不同類型分別進(jìn)行分析處理。數(shù)據(jù)流類型典型的數(shù)據(jù)流類型有兩種:變換型和事務(wù)型。變換型。變換型是指信息沿輸入通路進(jìn)入系統(tǒng),同時由外部形式變換成內(nèi)部形式,進(jìn)入系統(tǒng)的信息通過變換中心,經(jīng)加工處理以后再沿輸出通路變換成外部形式離開軟件系統(tǒng)。變換型數(shù)據(jù)處理問題的工作過程大致分為三步,即取得數(shù)據(jù)、變換數(shù)據(jù)和輸出數(shù)據(jù),如圖14-8所示。相應(yīng)于取得數(shù)據(jù)、變換數(shù)據(jù)、輸出數(shù)據(jù)的過程,變換型系統(tǒng)結(jié)構(gòu)圖由輸入、中心變換和輸出等三部分組成,如圖14-9所示。一傳入數(shù)據(jù)4
49、變換數(shù)據(jù)一傳出數(shù)據(jù)一圖14-8變換型數(shù)據(jù)流結(jié)構(gòu)變換型數(shù)據(jù)流圖映射的結(jié)構(gòu)圖如圖14-10所示。v.x-f廠一-取得數(shù)據(jù)-交換數(shù)據(jù)-輸出數(shù)據(jù)一-輸入中心變換輸出圖14-9變換型數(shù)據(jù)流結(jié)構(gòu)的組成主控模塊B_Jh輸入數(shù)據(jù)|交換中心輸出數(shù)據(jù)囪os變換型數(shù)據(jù)流系統(tǒng)結(jié)構(gòu)圖圖14-10事務(wù)型。在很多軟件應(yīng)用中,存在某種作業(yè)數(shù)據(jù)流,它可以引發(fā)一個或多個處理,這些處理能夠完成該作業(yè)要求的功能,這種數(shù)據(jù)流就叫做事務(wù)。事務(wù)型數(shù)據(jù)流的特點是接受一項事務(wù),根據(jù)事務(wù)處理的特點和性質(zhì),選擇分派一個適當(dāng)?shù)奶幚韱卧?事務(wù)處理中心),然后給出結(jié)果。這類數(shù)據(jù)流歸為特殊的一類,稱為事務(wù)型數(shù)據(jù)流,如圖14-11所示。在一個事務(wù)型數(shù)據(jù)流事
50、務(wù)1中,事務(wù)中心接收數(shù)據(jù),分析每個事務(wù)以確定它的類型,根據(jù)事務(wù)類型選取一條活動通路。事務(wù)處理中心事務(wù)n圖14-11事務(wù)型數(shù)據(jù)流結(jié)構(gòu)事務(wù)型數(shù)據(jù)流圖映射的結(jié)構(gòu)圖如圖14-12所示中存士心由人分析輸入流事務(wù)調(diào)度輸出泉圖14-12事務(wù)型數(shù)據(jù)流系統(tǒng)結(jié)構(gòu)圖在事務(wù)型數(shù)據(jù)流系統(tǒng)結(jié)構(gòu)圖中,事務(wù)中心模塊按所接受的事務(wù)類型,選擇某一事務(wù)處理模塊執(zhí)行,各事務(wù)處理模塊弁列。每個事務(wù)處理模塊可能要調(diào)用若干個操作模塊,而操作模塊又可能調(diào)用若干個細(xì)節(jié)模塊。(2)面向數(shù)據(jù)流設(shè)計方法的實施要點與設(shè)計過程面向數(shù)據(jù)流的結(jié)構(gòu)設(shè)計過程和步驟如下:分析、確認(rèn)數(shù)據(jù)流圖的類型,區(qū)分是事務(wù)型還是變換型。說明數(shù)據(jù)流的邊界。將數(shù)據(jù)流圖映射為程序結(jié)構(gòu)
51、。如果是事務(wù)流,則區(qū)分事務(wù)中心和數(shù)據(jù)接收通路,將其映射成事務(wù)結(jié)構(gòu);如果是變換流,則區(qū)分輸出和輸入分支,將其映射成變換結(jié)構(gòu)。根據(jù)設(shè)計準(zhǔn)則對產(chǎn)生的結(jié)構(gòu)進(jìn)行細(xì)化和求精。(3)變換型數(shù)據(jù)流圖轉(zhuǎn)換成程序結(jié)構(gòu)圖的實施步驟將變換型數(shù)據(jù)流圖映射成程序結(jié)構(gòu)圖稱為變換分析,其步驟如下:確定數(shù)據(jù)流圖是否具有變換特性。一般地說,一個系統(tǒng)中所有的信息流都可以認(rèn)為是變換流,但是,當(dāng)遇有明顯的事務(wù)特性的信息流時,建議采用事務(wù)分析方法進(jìn)行設(shè)計。這時,應(yīng)該觀察在整個數(shù)據(jù)流圖中哪種屬性占優(yōu)勢,先確定數(shù)據(jù)流的全局特性。另外,還應(yīng)把具有全局特性的不同特點的局部區(qū)域分離出來,根據(jù)這些子數(shù)據(jù)流的特點進(jìn)行部分處理。確定輸入流和輸出流的邊界
52、,劃分出輸入、變換和輸出,獨(dú)立出變換中心。進(jìn)行第一級分解,將變換型映射成軟件結(jié)構(gòu)(參見圖14-10),其中輸入數(shù)據(jù)處理模塊協(xié)調(diào)對所有輸入數(shù)據(jù)的接收;變換中心控制模塊管理對內(nèi)部形式的數(shù)據(jù)的所有操作;輸出數(shù)據(jù)處理控制模塊協(xié)調(diào)輸出信息的產(chǎn)生過程。按上述步驟,如出現(xiàn)事務(wù)流,也可按事務(wù)流的映射方式對各個子流進(jìn)行逐級分解,直至分解到基本功能。對每個模塊寫一個簡要說明,內(nèi)容包括該模塊的接口描述、模塊的內(nèi)部信息、過程陳述、包括的主要判定點及任務(wù)等。利用軟件結(jié)構(gòu)的設(shè)計原則對軟件結(jié)構(gòu)進(jìn)一步轉(zhuǎn)化。4)事務(wù)型數(shù)據(jù)流圖轉(zhuǎn)換成程序結(jié)構(gòu)圖的實施步驟將事務(wù)型映射成結(jié)構(gòu)圖又稱為事務(wù)分析。事務(wù)分析的設(shè)計步驟與變換分析設(shè)計步驟大致
53、類似,主要差別僅在于由數(shù)據(jù)流圖到軟件結(jié)構(gòu)的映射方法不同(參見圖14-10和圖14-12)。它是將事務(wù)中心映射成為軟件結(jié)構(gòu)中發(fā)送分支的調(diào)度模塊,將接收通路映射成軟件結(jié)構(gòu)的接收分支。設(shè)計的準(zhǔn)則人們在大量軟件設(shè)計的實踐中總結(jié)出以下設(shè)計準(zhǔn)則,用于設(shè)計的指導(dǎo)和對軟件結(jié)構(gòu)圖進(jìn)行優(yōu)化。1)提高模塊獨(dú)立性。對軟件結(jié)構(gòu)應(yīng)著眼于改善模塊的獨(dú)立性,依據(jù)降低耦合提高內(nèi)聚的原則,通過把一些模塊取消或合并來修改程序結(jié)構(gòu)。2)模塊規(guī)模適中。實踐表明,當(dāng)模塊增大時,模塊的可理解性大幅下降。但是當(dāng)對大的模塊分解時,不應(yīng)降低模塊的獨(dú)立性。因為,當(dāng)對一個大的模塊分解時,有可能會增加模塊間的依賴。(3)深度、寬度、扇出和扇入適當(dāng)。因
54、為:如果深度過大,則說明有的控制模塊可能簡單了。如果寬度過大,則說明系統(tǒng)的控制過于集中了。如果扇出過大則意味模塊過分復(fù)雜,需要控制和協(xié)調(diào)過多的下級模塊,這時應(yīng)適當(dāng)增加中間層次;若果扇出過小,則可以把下級模塊進(jìn)一步分解成若干個子功能模塊,或者合并到上級模塊中去。扇入越大則共享該模塊的上級模塊數(shù)目越多。經(jīng)驗表明,好的軟件設(shè)計結(jié)構(gòu)通常是頂層高扇出,中間扇出較少,底層高扇入。(4)將模塊的作用域限制在該模塊的控制域內(nèi)。模塊的作用域是指模塊內(nèi)一個判定的作用范圍,凡是受這個判定影響的所有模塊都屬于這個判定的作用域。模塊的控制域是指這個模塊本身以及所有直接或間接從屬于它的模塊的集合。在一個設(shè)計較好的系統(tǒng)中,
55、所有受某個判定影響的模塊應(yīng)該都從屬于做出判定的那個模塊,最好局限于做出判定的那個模塊本身及它的直屬下級模塊。如果一個軟件結(jié)構(gòu)不滿足這一條件,修改方法是,將判定點上移或者將那些在作用域內(nèi)但不在控制域內(nèi)的模塊移到控制域內(nèi)。減少模塊的接口和界面的復(fù)雜性。模塊的接口復(fù)雜是軟件容易發(fā)生錯誤的一個主要原因。因此,應(yīng)該仔細(xì)設(shè)計模塊接口,使得信息傳遞簡單并且和模塊的功能一致。設(shè)計成單入口、單出口的模塊。設(shè)計功能可預(yù)測(7),即不考慮模塊的模塊。如果一個模塊可以當(dāng)作一個“黑盒”的內(nèi)部結(jié)構(gòu)和處理過程,則該模塊的功能就是可以預(yù)測的。&3.3詳細(xì)設(shè)計在概要設(shè)計階段,已經(jīng)確定了軟件系統(tǒng)的總體結(jié)構(gòu),給出了系統(tǒng)中各個組成模
56、塊的功能和模塊間的聯(lián)系。而詳細(xì)設(shè)計的任務(wù),是為軟件系統(tǒng)的總體結(jié)構(gòu)中的每一個模塊確定實現(xiàn)算法和局部數(shù)據(jù)結(jié)構(gòu),用某種選定的表達(dá)工具表示算法和數(shù)據(jù)結(jié)構(gòu)的細(xì)節(jié)。表達(dá)工具可以由設(shè)計人員自由選擇,但它應(yīng)該具有描述過程細(xì)節(jié)的能力,而且能夠使程序員在編程時便于直接翻譯成程序設(shè)計語言的源程序。本節(jié)重點對過程設(shè)計進(jìn)行討論。在過程設(shè)計階段,要對每個模塊規(guī)定的功能以及算法的設(shè)計,給出適當(dāng)?shù)乃惴枋?即確定模塊內(nèi)部的詳細(xì)執(zhí)行過程,包括局部數(shù)據(jù)組織、控制流、每一步具體處理要求和各種實現(xiàn)細(xì)節(jié)等。其目的是確定應(yīng)該怎樣來具體實現(xiàn)所要求的系統(tǒng)常見的過程設(shè)計工具有:圖形工具:程序流程圖,N-S圖,PAD圖,HIPO圖。表格工具:判
57、定表。語言工具:PDL(偽碼)。下面介紹其中幾種主要的工具。?程序流程圖程序流程圖也稱為程序框圖,是軟件開發(fā)者最熟悉的一種算法描述工具。它的主要優(yōu)點是獨(dú)立于任何一種程序設(shè)計語言,比較直觀、清晰,易于學(xué)習(xí)掌握。在程序流程圖中常用的圖形符號如圖14-13所示:起止框輸入與輸出文檔框連接點控制流處理框邏輯條件圖14-13程序流程圖的基本圖符流程圖中的流程線用以指明程序的動態(tài)執(zhí)行順序。結(jié)構(gòu)化程序設(shè)計限制流程圖只能使用五種基本控制結(jié)構(gòu),如圖14-14所示。(1)順序結(jié)構(gòu)反映了若干個模塊之間連續(xù)執(zhí)行的順序。(2)在選擇結(jié)構(gòu)中,由某個條件P的取值來決定執(zhí)行兩個模塊之間的哪一個。(3)在當(dāng)型循環(huán)結(jié)構(gòu)中,只有當(dāng)
58、某個條件成立時才重復(fù)執(zhí)行特定的模塊(稱為循環(huán)體)。(4)在直到型循環(huán)結(jié)構(gòu)中,重復(fù)執(zhí)行一個特定的模塊,直到某個條件成立時才退出該模塊的重復(fù)執(zhí)行。(5)在多情況選擇結(jié)構(gòu)中,根據(jù)某控制變量的取值來決定選擇多個模塊中的哪一個。通過把程序流程圖的5種基本控制結(jié)構(gòu)相互組合或嵌套,可以構(gòu)成任何復(fù)雜的程序流程圖。多重選擇結(jié)梅直到亶循環(huán)圖14-14流程圖的五種基本控制結(jié)構(gòu)選擇結(jié)構(gòu)J例如,下面是簡單托運(yùn)貨物運(yùn)費(fèi)計算的問題。設(shè)貨物重量x,客戶信息y,輸入x、y后,計算運(yùn)費(fèi)的具體要求是:“輸如果0 x15(設(shè)為條件2),則用公式2計算后,循環(huán)3次完成同樣的“記賬”和“輸操作,然后程序結(jié)束。該問題程序的程序流程圖描述如
59、圖14-15。Tij圖14-15程序流程圖不例1973 年 Nossi 和 ShneidermanN-S圖。N-S圖是一種N-S圖中,去掉了流程圖中N-S圖為了避免流程圖在描述程序邏輯時的隨意性與靈活性,提出了用方框圖來代替?zhèn)鹘y(tǒng)的程序流程圖,通常也把這種圖稱為不允許破壞結(jié)構(gòu)化原則的圖形算法描述工具,又稱盒圖。在基本結(jié)構(gòu)圖14-16N-S圖的五種基本控制結(jié)構(gòu)容易引起麻煩的流程線,全部算法都寫在一個框內(nèi),每一種基本結(jié)構(gòu)也是一個框。五種的N-S圖如圖14-16N-S圖有以下幾個基本特點:(1)(2)(3)功能域比較明確,可以從圖的框中直接反映出來。不能任意轉(zhuǎn)移控制,符合結(jié)構(gòu)化原則。容易確定局部和全程
60、數(shù)據(jù)的作用域。容易表示嵌套關(guān)系,也可以表示模塊的層次結(jié)構(gòu)。例如,下面是求某整數(shù)是否是素數(shù)的問題,該問題的N-S圖描述如圖14-17所示:輸入n旦一-0-:一一否心i = wi+1 = iw =0止否輸出n “是素數(shù)”輸出n “不是素數(shù)”順序緒構(gòu)圖選擇結(jié)構(gòu)當(dāng)型循環(huán)結(jié)構(gòu)直到型循環(huán)結(jié)構(gòu)多分支選擇結(jié)構(gòu)0=w2=:in/i的余數(shù)r直到in或wm0圖14-17程序N-S圖示例PAD圖PAD圖是問題分析圖(ProblemAnalysisDiagram)的英文縮寫。它是繼程序流程圖和方框圖之后,提出的又一種主要用于描述軟件詳細(xì)設(shè)計的圖形表示工具。PAD圖的基本圖符及表示的5種基本控制結(jié)構(gòu),如圖14-18所示圖
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 省級醫(yī)學(xué)課題申報書范例
- 出售游艇別墅合同范本
- 原房主合同范例
- 北京租賃居間合同范本
- 課題立項申報書小學(xué)
- 人像攝影肖像合同范本
- 個人出租土地合同范本
- 【復(fù)習(xí)大串講】【中職專用】高二語文上學(xué)期期末綜合測試題(五)(職業(yè)模塊)(原卷版)
- 二手辦公用房買賣合同范本
- 養(yǎng)殖基地出售馬匹合同范本
- 初中物理競賽及自主招生專題講義:第8講 電路 (共5節(jié))含解析
- 《誠信經(jīng)營事業(yè)永恒》課件
- 2024年版慢性阻塞性肺疾病(COPD)診療指南解讀課件
- 基本養(yǎng)老金核定表、職工退休、退職審批表
- 2024年世界職業(yè)院校技能大賽高職組“導(dǎo)游服務(wù)組”賽項參考試題庫(含答案)
- 2024解析:第八章牛頓第一定律、二力平衡-基礎(chǔ)練(解析版)
- 《傳媒法的原則》課件
- 2024解析:第十三章內(nèi)能-基礎(chǔ)練(解析版)
- 2024年網(wǎng)格員考試題庫含答案
- GB/Z 44047-2024漂浮式海上風(fēng)力發(fā)電機(jī)組設(shè)計要求
- (完整)2019年風(fēng)廉政建設(shè)主體責(zé)任落實情況監(jiān)督檢查記錄表
評論
0/150
提交評論