軟件工程與項(xiàng)目管理(循序漸進(jìn),內(nèi)容詳備,適合初學(xué)者)_第1頁(yè)
軟件工程與項(xiàng)目管理(循序漸進(jìn),內(nèi)容詳備,適合初學(xué)者)_第2頁(yè)
軟件工程與項(xiàng)目管理(循序漸進(jìn),內(nèi)容詳備,適合初學(xué)者)_第3頁(yè)
軟件工程與項(xiàng)目管理(循序漸進(jìn),內(nèi)容詳備,適合初學(xué)者)_第4頁(yè)
軟件工程與項(xiàng)目管理(循序漸進(jìn),內(nèi)容詳備,適合初學(xué)者)_第5頁(yè)
已閱讀5頁(yè),還剩567頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

軟件工程與項(xiàng)目管理?yè)P(yáng)州大學(xué):徐守威

第1章軟件工程概述掌握:軟件危機(jī)、軟件工程、軟件生命周期、軟件開(kāi)發(fā)方法、軟件開(kāi)發(fā)模型、軟件工具及支撐環(huán)境的相關(guān)概念。1.1軟件危機(jī)1.1.1軟件

1.軟件的定義

軟件是計(jì)算機(jī)系統(tǒng)中與硬件相互依存的一部分,它是包括程序、數(shù)據(jù)及相關(guān)文檔的完整集合。其中,程序是指按事先設(shè)計(jì)的功能和性能要求執(zhí)行的指令序列;數(shù)據(jù)是指使程序能正常操縱信息的數(shù)據(jù)結(jié)構(gòu);文檔是指與程序開(kāi)發(fā)、維護(hù)和使用有關(guān)的圖文資料。2.軟件的分類(lèi)1)按軟件功能系統(tǒng)軟件支撐軟件應(yīng)用軟件2)按軟件規(guī)模微型軟件小型軟件中型軟件大型軟件甚大型軟件極大型軟件3.軟件的特點(diǎn)軟件是一種邏輯實(shí)體,而不是物理實(shí)體。軟件的生產(chǎn)過(guò)程是開(kāi)發(fā),而不是制造。軟件不存在磨損、老化現(xiàn)象。軟件的開(kāi)發(fā)和運(yùn)行常常受到計(jì)算機(jī)系統(tǒng)的限制。軟件是復(fù)雜的。年份軟件指令條數(shù)1963水星計(jì)劃系統(tǒng)200萬(wàn)條1967雙子星座計(jì)劃系統(tǒng)400萬(wàn)條1973阿波羅計(jì)劃系統(tǒng)1000萬(wàn)條1979哥倫比亞航天飛機(jī)系統(tǒng)4000萬(wàn)條美國(guó)宇航局的軟件系統(tǒng)一覽表圖1-1計(jì)算機(jī)系統(tǒng)中軟硬件成本所占比例的變化1.1.2

軟件生產(chǎn)的發(fā)展

程序設(shè)計(jì)時(shí)期(約為20世紀(jì)50~60年代)程序系統(tǒng)時(shí)期(約為20世紀(jì)60~70年代)軟件工程時(shí)期(20世紀(jì)70年代以后)

時(shí)期特點(diǎn)程序設(shè)計(jì)程序系統(tǒng)軟件工程軟件的含義程序程序及規(guī)格說(shuō)明書(shū)程序、文檔、數(shù)據(jù)主要程序設(shè)計(jì)語(yǔ)言匯編語(yǔ)言、機(jī)器語(yǔ)言高級(jí)語(yǔ)言

高級(jí)語(yǔ)言、各種開(kāi)發(fā)工具軟件使用者程序員本人少數(shù)用戶(hù)市場(chǎng)用戶(hù)軟件規(guī)模小型中型大型開(kāi)發(fā)軟件需要的人力個(gè)人開(kāi)發(fā)小組開(kāi)發(fā)小組及大中型軟件開(kāi)發(fā)機(jī)構(gòu)軟件開(kāi)發(fā)涉及的工作編碼設(shè)計(jì)、編碼、測(cè)試軟件生命周期的各個(gè)階段1.1.3

軟件開(kāi)發(fā)面臨的主要問(wèn)題

西方計(jì)算機(jī)科學(xué)家在20世紀(jì)60—70年代總結(jié)了軟件開(kāi)發(fā)和維護(hù)過(guò)程中遇到的一系列嚴(yán)重問(wèn)題,表現(xiàn)為以下幾方面:對(duì)軟件開(kāi)發(fā)成本和進(jìn)度的估計(jì)常常不準(zhǔn)確,開(kāi)發(fā)成本超出預(yù)算,實(shí)際進(jìn)度相比預(yù)定計(jì)劃一再拖延。用戶(hù)對(duì)“已完成”系統(tǒng)不滿(mǎn)意的現(xiàn)象時(shí)有發(fā)生。軟件質(zhì)量常常不可靠,“缺陷”和“補(bǔ)丁”不斷。軟件的可維護(hù)程度非常低。軟件通常沒(méi)有相應(yīng)的文檔資料。軟件成本不斷提高。軟件開(kāi)發(fā)生產(chǎn)率的提高趕不上硬件的發(fā)展和人們需求的增長(zhǎng)。1.1.4

軟件危機(jī)的提出

1968年,北大西洋公約組織的計(jì)算機(jī)科學(xué)家在聯(lián)邦德國(guó)召開(kāi)國(guó)際會(huì)議,第一次討論了“軟件危機(jī)”問(wèn)題。“軟件危機(jī)”是指在計(jì)算機(jī)軟件的開(kāi)發(fā)和維護(hù)過(guò)程中所遇到的一系列嚴(yán)重問(wèn)題,這類(lèi)問(wèn)題不僅僅是“不能正常運(yùn)行的軟件”才具有的,實(shí)際上幾乎所有軟件都不同程度地存在這類(lèi)問(wèn)題。概括來(lái)說(shuō),軟件危機(jī)包含兩方面的問(wèn)題:一是如何開(kāi)發(fā)軟件,以滿(mǎn)足不斷增長(zhǎng)、日趨復(fù)雜的需求;二是如何維護(hù)規(guī)模不斷膨脹的軟件產(chǎn)品。這次會(huì)議同時(shí)提出了解決“軟件危機(jī)”的途徑,即采用工程化的思想來(lái)管理軟件開(kāi)發(fā)的過(guò)程,并正式提出“軟件工程”一詞,從此一門(mén)新興的工程學(xué)科—軟件工程—應(yīng)運(yùn)而生。1.2軟件工程1.2.1軟件工程的定義軟件工程是導(dǎo)軟件開(kāi)發(fā)和維護(hù)的一門(mén)工程學(xué)科。它采用工程的概念、原理、技術(shù)和方法,把經(jīng)過(guò)時(shí)間檢驗(yàn)而證明是正確的管理技術(shù)和當(dāng)前能夠得到的最好的技術(shù)方法結(jié)合起來(lái),用于開(kāi)發(fā)和維護(hù)軟件。軟件工程是一門(mén)綜合性的交叉學(xué)科,它涉及哲學(xué)、計(jì)算機(jī)科學(xué)、工程科學(xué)、管理科學(xué)、數(shù)學(xué)及應(yīng)用領(lǐng)域知識(shí)。2.軟件的分類(lèi)1)按軟件功能系統(tǒng)軟件支撐軟件應(yīng)用軟件1.2.2軟件工程的內(nèi)容和目標(biāo)軟件工程的三個(gè)要素軟件工程方法軟件工具軟件工程的過(guò)程軟件工程的目標(biāo)付出較低的開(kāi)發(fā)成本達(dá)到要求的軟件功能取得較好的軟件性能開(kāi)發(fā)的軟件易于移植需要較低的維護(hù)費(fèi)用能按時(shí)完成開(kāi)發(fā)工作,及時(shí)交付使用1.2.3軟件工程的作用(1)從軟件企業(yè)的專(zhuān)業(yè)人才來(lái)講,其作用體現(xiàn)在以下幾個(gè)方面:高層管理人員利用軟件工程的理論和方法來(lái)管理整個(gè)公司。中層項(xiàng)目經(jīng)理和軟件工程師:利用軟件工程的理論和方法,來(lái)管理項(xiàng)目組的軟件開(kāi)發(fā)。軟件藍(lán)領(lǐng)工人利用軟件工程的理論和方法來(lái)實(shí)現(xiàn)軟件的開(kāi)發(fā)。軟件營(yíng)銷(xiāo)人員利用軟件工程的理論和方法與客戶(hù)進(jìn)行溝通,以贏得客戶(hù)的信任。軟件實(shí)施和維護(hù)人員:利用軟件工程的理論和方法,來(lái)實(shí)現(xiàn)軟件的功能、性能與接口的實(shí)施和維護(hù)。軟件售前人員利用軟件工程的理論和方法,來(lái)提高投標(biāo)成功的把握。(2)從軟件項(xiàng)目管理來(lái)講,其作用體現(xiàn)在:在規(guī)定的時(shí)間內(nèi)按照規(guī)定的成本實(shí)現(xiàn)符合預(yù)期的質(zhì)量目標(biāo)(軟件的功能、性能和接口達(dá)到需求說(shuō)明書(shū)的要求)的軟件。(3)從軟件企業(yè)本身來(lái)講,其作用體現(xiàn)在:持續(xù)地規(guī)范軟件開(kāi)發(fā)過(guò)程和軟件管理過(guò)程,不斷地優(yōu)化軟件組織的個(gè)人素質(zhì)和集體素質(zhì),從而逐漸增強(qiáng)軟件企業(yè)的市場(chǎng)競(jìng)爭(zhēng)實(shí)力。(4)從軟件企業(yè)發(fā)展進(jìn)程來(lái)講,其作用體現(xiàn)在:克服軟件危機(jī),控制軟件開(kāi)發(fā)進(jìn)度,節(jié)約開(kāi)發(fā)成本,提高軟件質(zhì)量。2.軟件的分類(lèi)1)按軟件功能系統(tǒng)軟件支撐軟件應(yīng)用軟件1.2.4軟件工程的基本原則用分階段的生存周期計(jì)劃嚴(yán)格管理堅(jiān)持進(jìn)行階段評(píng)審實(shí)行嚴(yán)格的產(chǎn)品控制采用現(xiàn)代程序設(shè)計(jì)技術(shù)結(jié)果應(yīng)能清楚地審查開(kāi)發(fā)小組的人員應(yīng)該少而精承認(rèn)不斷改進(jìn)軟件工程實(shí)踐的必要性1.3軟件生命周期1.3.1軟件生命周期的定義可行性分析需求分析概要設(shè)計(jì)詳細(xì)設(shè)計(jì)編碼測(cè)試維護(hù)可行性分析在項(xiàng)目進(jìn)入具體開(kāi)發(fā)之前,首先需要進(jìn)行的步驟是可行性分析。這一步驟必須回答的問(wèn)題是“將要開(kāi)發(fā)的軟件系統(tǒng)是做什么的?在經(jīng)濟(jì)上、技術(shù)上和操作上是否可行?”,具體來(lái)說(shuō),需要考慮的問(wèn)題有:該軟件項(xiàng)目的性質(zhì)是什么、它是數(shù)據(jù)處理問(wèn)題還是實(shí)時(shí)控制問(wèn)題、它是科學(xué)計(jì)算問(wèn)題還是人工智能問(wèn)題等,以及該問(wèn)題是否有行得通的解決辦法,若有解決問(wèn)題的辦法,則需要多少費(fèi)用、多少資源(包括硬件、軟件和人員)、多少時(shí)間。需求分析這一階段主要要解決的是系統(tǒng)“做什么”的問(wèn)題。用戶(hù)了解他們所面對(duì)的問(wèn)題,知道必須做什么,但是通常不能完整地、準(zhǔn)確地表達(dá)出來(lái),也不知道怎樣用計(jì)算機(jī)解決他們的問(wèn)題。而軟件開(kāi)發(fā)人員雖然知道怎樣用軟件完成人們提出的各種功能要求,但是,對(duì)用戶(hù)的具體業(yè)務(wù)和需求不完全清楚,這是需求分析階段的困難所在。概要設(shè)計(jì)這一階段主要解決的是系統(tǒng)“怎么做”的問(wèn)題。具體來(lái)說(shuō),開(kāi)發(fā)人員要把確定的各項(xiàng)功能需求轉(zhuǎn)換成相應(yīng)的軟件體系結(jié)構(gòu),在該結(jié)構(gòu)中,每個(gè)成分都是意義明確的模塊,即每個(gè)模塊都和某些功能需求相對(duì)應(yīng)。因此,概要設(shè)計(jì)的核心內(nèi)容就是設(shè)計(jì)軟件的結(jié)構(gòu),弄清該結(jié)構(gòu)由哪些模塊構(gòu)成,每個(gè)模塊的功能是什么,這些模塊之間的層次結(jié)構(gòu)是怎樣的。同時(shí),還要設(shè)計(jì)該應(yīng)用系統(tǒng)的總體數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)庫(kù)結(jié)構(gòu),即應(yīng)用系統(tǒng)要存儲(chǔ)什么數(shù)據(jù),這些數(shù)據(jù)是什么樣的結(jié)構(gòu),它們之間有什么關(guān)系等。可行性分析在項(xiàng)目進(jìn)入具體開(kāi)發(fā)之前,首先需要進(jìn)行的步驟是可行性分析。這一步驟必須回答的問(wèn)題是“將要開(kāi)發(fā)的軟件系統(tǒng)是做什么的?在經(jīng)濟(jì)上、技術(shù)上和操作上是否可行?”,具體來(lái)說(shuō),需要考慮的問(wèn)題有:該軟件項(xiàng)目的性質(zhì)是什么、它是數(shù)據(jù)處理問(wèn)題還是實(shí)時(shí)控制問(wèn)題、它是科學(xué)計(jì)算問(wèn)題還是人工智能問(wèn)題等,以及該問(wèn)題是否有行得通的解決辦法,若有解決問(wèn)題的辦法,則需要多少費(fèi)用、多少資源(包括硬件、軟件和人員)、多少時(shí)間。詳細(xì)設(shè)計(jì)詳細(xì)設(shè)計(jì)階段就是對(duì)每個(gè)模塊要完成的功能具體描述為精確的、結(jié)構(gòu)化的過(guò)程描述,即該模塊的控制結(jié)構(gòu)是怎樣的,先做什么,后做什么,有什么樣的條件判定,有哪些重復(fù)處理等,然后用相應(yīng)的工具把這些控制結(jié)構(gòu)表示出來(lái)。編碼編碼階段就是把每個(gè)模塊的控制結(jié)構(gòu)轉(zhuǎn)換成計(jì)算機(jī)可接受的程序代碼,即用種某特定程序設(shè)計(jì)語(yǔ)言編寫(xiě)的“源程序清單”。編寫(xiě)出的程序應(yīng)該結(jié)構(gòu)好、清晰易讀,并與設(shè)計(jì)一致。測(cè)試軟件測(cè)試階段的主要任務(wù)是發(fā)現(xiàn)和排除錯(cuò)誤,也就是對(duì)軟件系統(tǒng)進(jìn)行從上到下的全面的測(cè)試和檢驗(yàn),看它是否符合軟件總體設(shè)計(jì)方案規(guī)定的功能和要求。測(cè)試分為模塊測(cè)試、集成測(cè)試、確認(rèn)測(cè)試。模塊測(cè)試是查找各模塊在功能和結(jié)構(gòu)上存在的問(wèn)題。集成測(cè)試是將各模塊按一定順序組裝起來(lái)進(jìn)行的測(cè)試,主要是查找各模塊之間的接口問(wèn)題。確認(rèn)測(cè)試是按需求說(shuō)明書(shū)對(duì)軟件的功能逐項(xiàng)進(jìn)行測(cè)試,以確定軟件功能是否符合用戶(hù)的需求,開(kāi)發(fā)的軟件是否合格,能否交付用戶(hù)使用。維護(hù)軟件維護(hù)是軟件生存周期中時(shí)間最長(zhǎng)的階段。己交付的軟件正式投入使用后便進(jìn)入了軟件維護(hù)階段,它可以持續(xù)幾年甚至幾十年。在軟件運(yùn)行過(guò)程中,可能由于各方面的原因需要對(duì)其進(jìn)行修改,如運(yùn)行中發(fā)現(xiàn)了軟件隱含的錯(cuò)誤而需要修改,為了適應(yīng)變化了的軟件運(yùn)行環(huán)境而需要做適當(dāng)?shù)刈兏?,也可能是因?yàn)橛脩?hù)業(yè)務(wù)發(fā)生變化而需要擴(kuò)充和增強(qiáng)軟件的功能等。1.4

軟件開(kāi)發(fā)方法1.4.1結(jié)構(gòu)化開(kāi)發(fā)方法1978年,E.Yourdon和L.L.Constan-tine提出SASD(StructuredAnalysisandStructuredDesign)方法,也可稱(chēng)為面向功能的軟件開(kāi)發(fā)方法,或面向數(shù)據(jù)流的軟件開(kāi)發(fā)方法結(jié)構(gòu)化開(kāi)發(fā)方法的指導(dǎo)思想是自頂向下、逐步求精,基本原則是功能分解與抽象,它由結(jié)構(gòu)化分析、結(jié)構(gòu)化設(shè)計(jì)和結(jié)構(gòu)化程序設(shè)計(jì)構(gòu)成1.4.2

面向數(shù)據(jù)結(jié)構(gòu)的開(kāi)發(fā)方法以數(shù)據(jù)結(jié)構(gòu)為驅(qū)動(dòng)的以1975年M.A.Jackson提出的Jackson方法和1974年J.D.Warnier提出的Warnier方法最有代表性主要思想是:一個(gè)問(wèn)題的數(shù)據(jù)結(jié)構(gòu)與處理該問(wèn)題數(shù)據(jù)結(jié)構(gòu)的控制結(jié)構(gòu)有著驚人的相似之處,根據(jù)這一思想,從目標(biāo)系統(tǒng)的輸入、輸出數(shù)據(jù)結(jié)構(gòu)入手,導(dǎo)出程序框架結(jié)構(gòu),再補(bǔ)充其他細(xì)節(jié),就可以得到完整的程序結(jié)構(gòu)圖對(duì)輸入、輸出數(shù)據(jù)結(jié)構(gòu)明確的中小型系統(tǒng)特別有效1.4.3面向?qū)ο蟮拈_(kāi)發(fā)方法面向?qū)ο箝_(kāi)發(fā)方法的基本出發(fā)點(diǎn)是盡可能按照人類(lèi)認(rèn)識(shí)世界的方法和思維方式來(lái)分析和解決問(wèn)題。客觀世界是由許多具體的事物、事件、概念和規(guī)則組成的,這些均可看成對(duì)象面向?qū)ο驩O(Object-Oriented)技術(shù)在需求分析、可維護(hù)性和可靠性這3個(gè)軟件開(kāi)發(fā)的關(guān)鍵環(huán)節(jié)和質(zhì)量指標(biāo)上有了實(shí)質(zhì)性的突破,徹底解決了在這些方面存在的問(wèn)題1.5軟件開(kāi)發(fā)模型1.5.1瀑布模型

瀑布模型是由溫斯頓?羅伊斯(WinstonRoyce)在1970年提出的,其核心思想是按工序?qū)?wèn)題簡(jiǎn)化,將功能的實(shí)現(xiàn)與設(shè)計(jì)分開(kāi),便于分工協(xié)作,即采用結(jié)構(gòu)化的分析與設(shè)計(jì)方法將邏輯實(shí)現(xiàn)與物理實(shí)現(xiàn)分開(kāi)。瀑布模型將軟件生命周期劃分為軟件計(jì)劃、需求分析和定義、軟件設(shè)計(jì)、軟件實(shí)現(xiàn)、軟件測(cè)試、軟件運(yùn)行和維護(hù)6個(gè)階段,并規(guī)定了它們自上而下、相互銜接的固定次序瀑布模型的特點(diǎn)十分明顯:軟件生存周期的順序性盡可能推遲軟件的編碼強(qiáng)調(diào)文檔瀑布模型的主要問(wèn)題:各個(gè)階段的劃分完全固定,階段之間產(chǎn)生大量的文檔,極大地增加了工作量。由于開(kāi)發(fā)模型是線(xiàn)性的,用戶(hù)只有等到整個(gè)過(guò)程的末期才能見(jiàn)到開(kāi)發(fā)成果,從而增加了開(kāi)發(fā)的風(fēng)險(xiǎn)。早期的錯(cuò)誤可能要等到開(kāi)發(fā)后期的測(cè)試階段才能發(fā)現(xiàn),進(jìn)而帶來(lái)嚴(yán)重的后果。1.5.2快速原型模型

快速原型模型主要是針對(duì)在軟件開(kāi)發(fā)過(guò)程中需求分析不明確的情形而提出的,它又稱(chēng)為原型模型。采用快速原型模型進(jìn)行開(kāi)發(fā)的過(guò)程是:在開(kāi)發(fā)真實(shí)系統(tǒng)之前構(gòu)造一個(gè)原型,在該原型的基礎(chǔ)上逐漸完成整個(gè)系統(tǒng)的開(kāi)發(fā)工作。與瀑布模型相比,快速原型模型克服了瀑布模型的缺點(diǎn),減少了由于軟件需求不明確而帶來(lái)的開(kāi)發(fā)風(fēng)險(xiǎn);軟件原型直觀、形象,更多地遵循了人們認(rèn)識(shí)事物的規(guī)律,因而更容易被人們接受;采用模擬的方法,縮短了用戶(hù)和系統(tǒng)分析、設(shè)計(jì)人員之間的距離;在整個(gè)系統(tǒng)開(kāi)發(fā)過(guò)程中反饋及時(shí),標(biāo)準(zhǔn)統(tǒng)一,因而可及時(shí)地暴露問(wèn)題;充分利用了新一代軟件開(kāi)發(fā)工具,使系統(tǒng)開(kāi)發(fā)和運(yùn)行的效率都大大提高。快速原型模型的不足之處在于:快速建立起來(lái)的系統(tǒng)結(jié)構(gòu)加上連續(xù)的修改可能會(huì)導(dǎo)致產(chǎn)品質(zhì)量低下。1.5.3

漸增模型與瀑布模型相比,快速原型模型克服了瀑布模型的缺點(diǎn),減少了由于軟件需求不明確而帶來(lái)的開(kāi)發(fā)風(fēng)險(xiǎn);軟件原型直觀、形象,更多地遵循了人們認(rèn)識(shí)事物的規(guī)律,因而更容易被人們接受;采用模擬的方法,縮短了用戶(hù)和系統(tǒng)分析、設(shè)計(jì)人員之間的距離;在整個(gè)系統(tǒng)開(kāi)發(fā)過(guò)程中反饋及時(shí),標(biāo)準(zhǔn)統(tǒng)一,因而可及時(shí)地暴露問(wèn)題;充分利用了新一代軟件開(kāi)發(fā)工具,使系統(tǒng)開(kāi)發(fā)和運(yùn)行的效率都大大提高??焖僭湍P偷牟蛔阒幵谟冢嚎焖俳⑵饋?lái)的系統(tǒng)結(jié)構(gòu)加上連續(xù)的修改可能會(huì)導(dǎo)致產(chǎn)品質(zhì)量低下。1.5.4

螺旋模型

螺旋模型將軟件開(kāi)發(fā)劃分為制訂計(jì)劃、風(fēng)險(xiǎn)分析、實(shí)施開(kāi)發(fā)和客戶(hù)評(píng)估4類(lèi)活動(dòng),活動(dòng)描述如下:制訂計(jì)劃:確定軟件目標(biāo),選定實(shí)施方案,明確項(xiàng)目開(kāi)發(fā)的限制條件。風(fēng)險(xiǎn)分析:分析所選方案,考慮如何識(shí)別和消除風(fēng)險(xiǎn)。實(shí)施開(kāi)發(fā):實(shí)施軟件開(kāi)發(fā)仍然按照瀑布模型中的分析、設(shè)計(jì)、編碼、測(cè)試等步驟進(jìn)行??蛻?hù)評(píng)估:評(píng)價(jià)軟件的功能和性能,并提出修改意見(jiàn)。1.5.5

噴泉模型1.5.6

構(gòu)件化開(kāi)發(fā)模型

用于演化式的開(kāi)發(fā)或迭代式的開(kāi)發(fā),它從與客戶(hù)的交流開(kāi)始,首先獲得問(wèn)題的定義,同時(shí)標(biāo)識(shí)基本的類(lèi),然后對(duì)項(xiàng)目進(jìn)行計(jì)劃與風(fēng)險(xiǎn)分析。在進(jìn)入開(kāi)發(fā)階段后,首先從候選類(lèi)的標(biāo)識(shí)開(kāi)始,在已有的類(lèi)庫(kù)中查找相應(yīng)的類(lèi)是否存在,如果已經(jīng)存在則提取出來(lái)進(jìn)行復(fù)用;如果候選類(lèi)不存在,就要利用面向?qū)ο蟮姆椒▌?chuàng)建并存放到類(lèi)庫(kù)中,初步完成系統(tǒng)的構(gòu)造后,再送客戶(hù)進(jìn)行評(píng)估,這樣即完成了第一次迭代。如此反復(fù)迭代,螺旋向前,逐步完成項(xiàng)目的開(kāi)發(fā)。1.6

軟件工具及支撐環(huán)境1.6.1軟件工具的分類(lèi)需求分析工具設(shè)計(jì)工具編碼工具確認(rèn)工具維護(hù)工具1.6.2

軟件開(kāi)發(fā)支撐環(huán)境軟件開(kāi)發(fā)支撐環(huán)境是指在基本硬件與軟件的基礎(chǔ)上,提供一組能支持軟件生存周期的工具,即提供能支持軟件開(kāi)發(fā)、維護(hù)、管理和質(zhì)量控制等各個(gè)方面,而且能適應(yīng)多種用戶(hù)要求的工具。軟件開(kāi)發(fā)支撐環(huán)境一般由數(shù)據(jù)庫(kù)、一組工具和一組統(tǒng)一的命令或調(diào)用方式3部分組成1.6.3常用CASE工具VisioIBMRational系列PowerDesigner第2章軟件可行性分析與項(xiàng)目開(kāi)發(fā)計(jì)劃掌握:軟件可行性分析的方法、項(xiàng)目開(kāi)發(fā)計(jì)劃的制訂、軟件可行性分析報(bào)告及項(xiàng)目開(kāi)發(fā)計(jì)劃的規(guī)范化編寫(xiě)。2.1軟件可行性分析可行性分析的目的是用最小的代價(jià)在盡可能短的時(shí)間內(nèi)確定問(wèn)題是否值得去解決,以及問(wèn)題是否能夠被解決。值得注意的是,可行性分析的目的并不是研究如何解決問(wèn)題,而是研究問(wèn)題是否值得去解。經(jīng)過(guò)可行性分析以后,如果認(rèn)為問(wèn)題值得去解,則制訂項(xiàng)目開(kāi)發(fā)計(jì)劃,進(jìn)入實(shí)際開(kāi)發(fā)過(guò)程;否則直接終止項(xiàng)目。2.1.2

可行性分析的內(nèi)容

技術(shù)可行性經(jīng)濟(jì)可行性社會(huì)可行性1.技術(shù)可行性技術(shù)可行性分析是指針對(duì)待需要解決的問(wèn)題,分析目前已有的技術(shù)能否實(shí)現(xiàn),能否解決系統(tǒng)中的技術(shù)難題,所開(kāi)發(fā)的系統(tǒng)能否達(dá)到所要求的功能和性能,系統(tǒng)對(duì)技術(shù)人員的要求,現(xiàn)有的技術(shù)人員能否勝任,開(kāi)發(fā)所需要的軟件與硬件能否如期得到等。總的來(lái)說(shuō),技術(shù)可行性分析主要考慮以下3個(gè)方面:在給定的時(shí)間內(nèi)能否實(shí)現(xiàn)系統(tǒng)定義中的功能軟件的質(zhì)量如何軟件的生產(chǎn)率如何2.經(jīng)濟(jì)可行性所謂經(jīng)濟(jì)可行性分析,就是分析開(kāi)發(fā)該項(xiàng)目能否取得合理的經(jīng)濟(jì)效益,主要是分析成本與收益這兩個(gè)方面,要作出投資的估算和系統(tǒng)投入運(yùn)行后可能獲得的經(jīng)濟(jì)效益或可節(jié)約的費(fèi)用估算。辦公成本人員成本資源成本其他成本1)成本分析

常用的成本估算方法代碼行方法:用每行代碼的平均成本乘以程序的行數(shù)來(lái)確定軟件的成本功能點(diǎn)方法:根據(jù)軟件所提供的功能來(lái)測(cè)量工作量經(jīng)驗(yàn)?zāi)P头椒ㄒ话銇?lái)說(shuō),假設(shè)利率為I,現(xiàn)有貨幣P元,則n年后的價(jià)值F可按一個(gè)簡(jiǎn)單的公式計(jì)算:F=P(1+i)n反之,若n年后的效益為F元,那么現(xiàn)在的價(jià)值P為:P=F/(1+i)n2)收益分析表2-1效益折算計(jì)算表年份將來(lái)值(萬(wàn)元)(1+i)n現(xiàn)在值(萬(wàn)元)1450001.140909.092450001.2137190.083450001.33133809.174450001.464130735.613.社會(huì)可行性社會(huì)可行性主要是指軟件生產(chǎn)需要考慮的社會(huì)因素,具體來(lái)說(shuō)是指市場(chǎng)、政策與法律方面的考慮。在市場(chǎng)方面,考慮軟件產(chǎn)品所面對(duì)的市場(chǎng)的性質(zhì)是成熟的、未成熟的或即將消亡的。在政策方面,考慮的是國(guó)家宏觀的經(jīng)濟(jì)政策對(duì)軟件開(kāi)發(fā)及銷(xiāo)售的影響。在法律方面,應(yīng)該考慮軟件的開(kāi)發(fā)是否會(huì)侵犯他人、集體或國(guó)家的利益,是否會(huì)違反國(guó)家的法律并可能由此承擔(dān)相應(yīng)的法律責(zé)任等,例如,某用戶(hù)希望開(kāi)發(fā)一款能攻擊其競(jìng)爭(zhēng)對(duì)手的數(shù)據(jù)庫(kù)的軟件,這顯然侵犯了他人的利益,因此屬于不可行的開(kāi)發(fā)項(xiàng)目。2.1.3可行性分析的步驟明確系統(tǒng)的規(guī)模和目標(biāo)研究目前正在使用的系統(tǒng)建立新系統(tǒng)的高層邏輯模型導(dǎo)出各種實(shí)現(xiàn)方案并對(duì)方案進(jìn)行評(píng)價(jià)推薦可行的方案編寫(xiě)可行性研究報(bào)告2.1.4

可行性分析報(bào)告1引言1.1編寫(xiě)目的1.2背景1.3定義1.4參考資料2可行性研究的前提2.1要求2.2目標(biāo)2.3條件、假定和限制2.4進(jìn)行可行性研究的方法2.5評(píng)價(jià)尺度3對(duì)現(xiàn)有系統(tǒng)的分析3.1處理流程和數(shù)據(jù)流程3.2工作負(fù)荷3.3費(fèi)用開(kāi)支3.4人員3.5設(shè)備3.6局限性4所建議的系統(tǒng)4.1對(duì)所建議系統(tǒng)的說(shuō)明4.2處理流程和數(shù)據(jù)流程4.3改進(jìn)之處4.4影響4.4.1對(duì)設(shè)備的影響4.4.2對(duì)軟件的影響4.4.3對(duì)用戶(hù)單位機(jī)構(gòu)的影響4.4.4對(duì)系統(tǒng)運(yùn)行過(guò)程的影響4.4.5對(duì)開(kāi)發(fā)的影響4.4.6對(duì)地點(diǎn)和設(shè)施的影響4.4.7對(duì)經(jīng)費(fèi)開(kāi)支的影響4.5局限性4.6技術(shù)條件方面的可行性5可選擇的其他系統(tǒng)方案5.1可選擇的系統(tǒng)方案15.2可選擇的系統(tǒng)方案26投資及效益分析6.1支出6.1.1基本建設(shè)投資6.1.2其他一次性支出6.1.3非一次性支出6.2收益6.2.1一次性收益6.2.2非一次性收益6.2.3不可定量的收益6.3收益/投資比6.4投資回收周期6.5敏感性分析7社會(huì)因素方面的可行性7.1法律方面的可行性7.2使用方面的可行性8結(jié)論2.2項(xiàng)目開(kāi)發(fā)計(jì)劃

1.確定軟件工作范圍

確定軟件工作范圍是軟件計(jì)劃的一項(xiàng)重要任務(wù),它包括對(duì)軟件功能、性能、可靠性和接口等問(wèn)題的描述。功能方面性能方面可靠性方面接口方面2.確定開(kāi)發(fā)資源需求

軟件計(jì)劃中所講的資源包括硬件、軟件和人。要考慮對(duì)資源的性能描述(如需要什么技術(shù)水平的人,什么樣的功能、性能的硬件及軟件等),對(duì)資源要求的日程表,即在什么時(shí)間開(kāi)始需要,以及對(duì)資源使用的持續(xù)時(shí)間。硬件資源軟件資源人力資源3.估算軟件開(kāi)發(fā)成本

軟件產(chǎn)品的成本主要是人的勞動(dòng)消耗。軟件成本的計(jì)算方法是以一次性開(kāi)發(fā)過(guò)程所花費(fèi)的代價(jià)來(lái)計(jì)算的,也就是從軟件計(jì)劃、需求分析、軟件總體設(shè)計(jì)、軟件詳細(xì)設(shè)計(jì)、軟件編碼、單元測(cè)試、整體測(cè)試的全過(guò)程所花費(fèi)的代價(jià)作為軟件成本。所以,軟件成本主要表現(xiàn)為人力消耗。因?yàn)槌杀竟烙?jì)不是精確的計(jì)算,因此使用幾種不同的軟件成本估算技術(shù)進(jìn)行相互校驗(yàn)是一種值得采用的做法。4.制訂開(kāi)發(fā)進(jìn)度計(jì)劃

進(jìn)度安排要確定最終的軟件交付日期,并在限定的日期內(nèi)安排和分配工作員,或者在合理復(fù)用各種資源分配工作量的基礎(chǔ)上確定最終交付日期。項(xiàng)目開(kāi)發(fā)計(jì)劃的編制:1引言1.1編寫(xiě)目的1.2背景1.3定義1.4參考資料2項(xiàng)目概述2.1工作內(nèi)容2.2主要參加人員2.3產(chǎn)品2.3.1程序2.3.2文件2.3.3服務(wù)2.3.4非移交的產(chǎn)品2.4驗(yàn)收標(biāo)準(zhǔn)2.5完成項(xiàng)目的最遲期限2.6本計(jì)劃的批準(zhǔn)者和批準(zhǔn)日期3實(shí)施計(jì)劃3.1工作任務(wù)的分解與人員分工3.2接口人員3.3進(jìn)度3.4預(yù)算3.5關(guān)鍵問(wèn)題4支持條件4.1計(jì)算機(jī)系統(tǒng)支持4.2需由用戶(hù)承擔(dān)的工作4.3由外單位提供的條件5專(zhuān)題計(jì)劃要點(diǎn)2.3軟件可行性分析與項(xiàng)目開(kāi)發(fā)計(jì)劃案例2.3.1案例概要

某高校擬打算開(kāi)發(fā)一套“學(xué)生學(xué)籍管理系統(tǒng)”,以實(shí)現(xiàn)對(duì)本校學(xué)生學(xué)籍的計(jì)算機(jī)管理。該高校對(duì)這一工作十分重視,并委托計(jì)算機(jī)學(xué)院成立了開(kāi)發(fā)小組。在進(jìn)行具體開(kāi)發(fā)之前,該開(kāi)發(fā)小組進(jìn)行了可行性分析,并制定了項(xiàng)目開(kāi)發(fā)計(jì)劃。2.3.2可行性分析

按照可行性分析的步驟,開(kāi)發(fā)小組中的系統(tǒng)分析員與學(xué)校負(fù)責(zé)學(xué)生學(xué)籍管理的教務(wù)部分進(jìn)行了多輪討論,了解了開(kāi)發(fā)背景,明確了待開(kāi)發(fā)的軟件的功能,對(duì)軟件的成本/效益作了分析,最終,形成了以下的可行性分析報(bào)告(見(jiàn)教材)。2.3.3

項(xiàng)目開(kāi)發(fā)計(jì)劃

軟件可行性分析報(bào)告被提交給相關(guān)領(lǐng)導(dǎo)討論通過(guò)之后,在此基礎(chǔ)上,項(xiàng)目經(jīng)理進(jìn)一步明確了軟件的功能范圍、開(kāi)發(fā)資源需求,制訂項(xiàng)目開(kāi)發(fā)進(jìn)度,并編寫(xiě)項(xiàng)目開(kāi)發(fā)計(jì)劃(見(jiàn)教材)。第3章軟件需求分析掌握:需求分析的重要性、需求分析的任務(wù)、需求分析的步驟、數(shù)據(jù)流圖、數(shù)據(jù)字典、判定表和判定樹(shù)、軟件需求分析規(guī)格說(shuō)明書(shū)。3.1需求分析概述3.1.1

需求分析的重要性

通俗地說(shuō),需求分析就是分析軟件用戶(hù)的需求是什么。試想一下,如果投入大量的人力、物力、財(cái)力和時(shí)間,開(kāi)發(fā)出的軟件卻滿(mǎn)足不了客戶(hù)的要求,那所有的投入都是徒勞。如果費(fèi)了很大的精力,開(kāi)發(fā)一個(gè)軟件,最后卻因不滿(mǎn)足用戶(hù)的要求,而要重新開(kāi)發(fā),這種返工同樣也是讓人痛心疾首的。3.1.2需求分析的任務(wù)

需求分析階段的任務(wù)主要要解決的是系統(tǒng)“做什么”的問(wèn)題。用戶(hù)了解他們所面對(duì)的問(wèn)題,知道必須做什么,但是通常不能完整地、準(zhǔn)確地表達(dá)出來(lái),也不知道怎樣用計(jì)算機(jī)解決他們的問(wèn)題。而軟件開(kāi)發(fā)人員雖然知道怎樣用軟件完成人們提出的各種功能要求,但是,對(duì)用戶(hù)的具體業(yè)務(wù)和需求不完全清楚,這是需求分析階段的困難所在。3.1.2需求分析的原則

1.分析人員要使用符合用戶(hù)語(yǔ)言習(xí)慣的表達(dá)2.分析人員要了解用戶(hù)的業(yè)務(wù)及目標(biāo)3.分析人員必須編寫(xiě)軟件需求報(bào)告4.要求得到需求工作結(jié)果的解釋說(shuō)明5.開(kāi)發(fā)人員要尊重客戶(hù)的意見(jiàn)6.開(kāi)發(fā)人員要對(duì)需求及產(chǎn)品實(shí)施提出建議和解決方案7.描述產(chǎn)品使用特性8.允許重用已有的軟件組件9.要求對(duì)變更的代價(jià)提供真實(shí)可靠的評(píng)估10.獲得滿(mǎn)足客戶(hù)功能和質(zhì)量要求的系統(tǒng)11.給分析人員講解業(yè)務(wù)12.用戶(hù)應(yīng)抽出時(shí)間清楚地說(shuō)明并完善需求13.準(zhǔn)確而詳細(xì)地說(shuō)明需求14.及時(shí)做出決定15.尊重開(kāi)發(fā)人員的需求可行性及成本評(píng)估16.劃分需求的優(yōu)先級(jí)17.評(píng)審需求文檔和原型18.需求變更要立即聯(lián)系19.遵照開(kāi)發(fā)小組處理需求變更的控制過(guò)程20.尊重開(kāi)發(fā)人員采用的需求分析過(guò)程3.1.3需求分析的步驟

(1)歸納整理用戶(hù)提出的各種問(wèn)題和要求,弄清用戶(hù)企圖通過(guò)軟件達(dá)到的目的,并把它作為要求和條件予以明確。分析人員借助各種工具和方法,獲得對(duì)用戶(hù)需求的基本理解,然后在需求獲取方法的驅(qū)動(dòng)和指導(dǎo)下,從非正式需求陳述中提取出用戶(hù)的實(shí)際需求,由此確定軟件的功能、性能、接口關(guān)系及有關(guān)屬性、限制和邊界等,標(biāo)定軟件的作用范圍,確認(rèn)支持性的軟硬件環(huán)境及輔助工具與條件。此階段還為軟件需求分析活動(dòng)提供了相應(yīng)的過(guò)程控制機(jī)制。(2)在需求獲取的基礎(chǔ)上建立邏輯模型,使用自頂向下、逐層分解的方法,把用戶(hù)對(duì)軟件的需求分解成若干子系統(tǒng)或軟件成分,定義軟件成分的內(nèi)部功能,并標(biāo)定它們之間的接口。(3)用準(zhǔn)確、簡(jiǎn)練、無(wú)二義性的語(yǔ)言將用戶(hù)需求規(guī)格化為軟件需求規(guī)格說(shuō)明,使用戶(hù)和開(kāi)發(fā)人員對(duì)擬開(kāi)發(fā)的軟件有共同的理解。軟件需求規(guī)格說(shuō)明同時(shí)還是軟件測(cè)試、驗(yàn)收和交付的基準(zhǔn)。(4)通過(guò)需求評(píng)審,對(duì)需求獲取、需求定義等進(jìn)行全面審查,力圖發(fā)現(xiàn)需求分析中的錯(cuò)誤和缺陷,最終確認(rèn)軟件需求規(guī)格說(shuō)明。同時(shí),以需求規(guī)格說(shuō)明為輸入,通過(guò)模擬或快速原型等方法,向用戶(hù)展示需求規(guī)格說(shuō)明所描述的系統(tǒng)外部行為和相應(yīng)特征。3.2結(jié)構(gòu)化分析方法及工具3.2.1

概述

結(jié)構(gòu)化分析(簡(jiǎn)稱(chēng)SA法)方法是面向數(shù)據(jù)流的需求分析方法,由Yourdon,Constaintine

及DeMarco

等人于70年代末提出,并得到廣泛的應(yīng)用。結(jié)構(gòu)化分析方法適合于分析大型的數(shù)據(jù)處理系統(tǒng),特別是企事業(yè)管理系統(tǒng)。結(jié)構(gòu)化分析的步驟如下:(1)分析當(dāng)前的情況,做出反映當(dāng)前物理模型的數(shù)據(jù)流圖。(2)推導(dǎo)出等價(jià)的邏輯模型的數(shù)據(jù)流圖。(3)設(shè)計(jì)新的邏輯系統(tǒng),生成數(shù)據(jù)字典和基元描述。(4)建立人機(jī)接口,提出可供選擇的目標(biāo)系統(tǒng)物理模型的數(shù)據(jù)流圖。(5)確定各種方案的成本和風(fēng)險(xiǎn)等級(jí),據(jù)此對(duì)各種方案進(jìn)行分析。(6)選擇一種方案。(7)建立完整的需求規(guī)約。3.2.2

數(shù)據(jù)流圖

數(shù)據(jù)流圖,簡(jiǎn)稱(chēng)DFD(DataFlowDiagraph),是采用圖形方式來(lái)表達(dá)系統(tǒng)的邏輯功能、數(shù)據(jù)在系統(tǒng)內(nèi)部的邏輯流向和邏輯變換過(guò)程,是結(jié)構(gòu)化系統(tǒng)分析方法的主要表達(dá)工具及用于表示軟件模型的一種圖示方法。

數(shù)據(jù)流圖由以下4部分組成:

1.?dāng)?shù)據(jù)流

數(shù)據(jù)流由一組固定成分的數(shù)據(jù)組成,表示數(shù)據(jù)的流向。值得注意的是,數(shù)據(jù)流圖中描述的是數(shù)據(jù)流,而不是控制流。除了流向數(shù)據(jù)存儲(chǔ)或從數(shù)據(jù)存儲(chǔ)流出的數(shù)據(jù)不必命名外,每個(gè)數(shù)據(jù)流必須要有一個(gè)合適的名字,以反映該數(shù)據(jù)流的含義。

2.加工

加工描述了輸入數(shù)據(jù)流到輸出數(shù)據(jù)之間的變換,也就是輸入數(shù)據(jù)流經(jīng)過(guò)什么處理后變成了輸出數(shù)據(jù)。每個(gè)加工都有一個(gè)名字和編號(hào)。編號(hào)能反映該加工位于分層的數(shù)據(jù)流圖的哪個(gè)層次和哪張圖中,能夠看出它是由哪個(gè)加工分解出來(lái)的子加工。

3.?dāng)?shù)據(jù)存儲(chǔ)

數(shù)據(jù)存儲(chǔ)表示暫時(shí)存儲(chǔ)的數(shù)據(jù)。每個(gè)數(shù)據(jù)存儲(chǔ)都有一個(gè)名字。

4.外部實(shí)體

外部實(shí)體是存在于軟件系統(tǒng)之外的人員或組織,它指出數(shù)據(jù)的發(fā)源地或系統(tǒng)所產(chǎn)生的數(shù)據(jù)的歸屬地。符號(hào)命名代表的意義矩形或立方體數(shù)據(jù)的源點(diǎn)/終點(diǎn)圓角矩形或圓形變換數(shù)據(jù)的處理缺右邊的矩形或平行線(xiàn)數(shù)據(jù)存儲(chǔ)箭頭數(shù)據(jù)流

在實(shí)際應(yīng)用中,一般是采用分層的數(shù)據(jù)流圖來(lái)描述軟件系統(tǒng),其步驟如下:

(1)從問(wèn)題描述中分析出4種基本組成成分(外部實(shí)體、加工、數(shù)據(jù)存儲(chǔ)、數(shù)據(jù)流)。

(2)根據(jù)(1)的結(jié)果畫(huà)出基本系統(tǒng)數(shù)據(jù)流圖,稱(chēng)為頂層圖。

(3)把(2)得到的基本系統(tǒng)模型細(xì)化為功能級(jí)數(shù)據(jù)流圖。

(4)對(duì)功能級(jí)數(shù)據(jù)流圖中的主要功能進(jìn)一步細(xì)化,直至滿(mǎn)意為止。

根據(jù)數(shù)據(jù)處理對(duì)象和處理方式的不同,通常又將數(shù)據(jù)流圖分為變換型數(shù)據(jù)流圖和事務(wù)型數(shù)據(jù)流圖:

(1)變換型數(shù)據(jù)流圖

具有較明顯的輸入、變換(或主加工)和輸出的數(shù)據(jù)流圖稱(chēng)為變換型數(shù)據(jù)流圖。在變換型數(shù)據(jù)流圖中,主加工是系統(tǒng)的中心。如圖3-2所示的是一個(gè)典型的變換型數(shù)據(jù)流圖,圖中“發(fā)卡”是主加工,“現(xiàn)金”是輸入,“IC卡”是輸出。圖3-2IC卡管理系統(tǒng)的頂層數(shù)據(jù)流圖

(2)事務(wù)型數(shù)據(jù)流圖

某個(gè)加工將它的輸入分離成一串發(fā)散的數(shù)據(jù)流,形成許多活動(dòng)路徑,并根據(jù)輸入的值選擇其中一條路徑,具有這樣特征的數(shù)據(jù)流圖是事務(wù)型數(shù)據(jù)流圖。圖3-1事務(wù)型數(shù)據(jù)流圖的一個(gè)例子

以下以某商場(chǎng)顧客IC卡管理系統(tǒng)為例,來(lái)說(shuō)明數(shù)據(jù)流圖的畫(huà)法。

顧客持IC卡進(jìn)行購(gòu)物,其中負(fù)責(zé)管理IC卡的業(yè)務(wù)包括發(fā)卡、維護(hù)、對(duì)賬及錯(cuò)誤處理、發(fā)票打印、結(jié)算。發(fā)卡需要向卡內(nèi)寫(xiě)入發(fā)卡信息;維護(hù)是指對(duì)卡的修復(fù)、初始化、讀取、查詢(xún)的操作;對(duì)賬及錯(cuò)誤處理指將IC卡帳戶(hù)主記錄中的金額與帳戶(hù)流水賬中的消費(fèi)明細(xì)進(jìn)行核對(duì),如發(fā)現(xiàn)賬目不同,則進(jìn)行錯(cuò)誤處理;發(fā)票打印是打印當(dāng)前IC卡所產(chǎn)生金額的發(fā)票;結(jié)算指當(dāng)前IC卡操作員對(duì)購(gòu)物進(jìn)行結(jié)算。

1)從問(wèn)題描述中分析出4種基本組成成分(1)外部實(shí)體:顧客。(2)數(shù)據(jù)流:顧客ID、現(xiàn)金、IC卡信息、購(gòu)物單、發(fā)票信息、維護(hù)結(jié)果、對(duì)賬結(jié)果、結(jié)賬信息、正確的帳戶(hù)信息。(3)加工:發(fā)卡、維護(hù)、對(duì)賬及錯(cuò)誤處理、發(fā)票打印、結(jié)算。(4)數(shù)據(jù)存儲(chǔ):發(fā)卡記錄、結(jié)賬記錄。2)畫(huà)出系統(tǒng)的基本模型圖3-2IC卡管理系統(tǒng)的頂層數(shù)據(jù)流圖

3)將基本系統(tǒng)模型細(xì)化為成功能級(jí)模型

根據(jù)系統(tǒng)個(gè)描述,在“發(fā)卡”后,還應(yīng)有“充值”,“購(gòu)物”后還應(yīng)有“收費(fèi)”。圖3-3對(duì)IC卡管理系統(tǒng)基本模型形成功能級(jí)模型

4)對(duì)系統(tǒng)主要功能進(jìn)一步細(xì)化

以“發(fā)卡”模塊為例,可細(xì)化為“發(fā)卡”、“打印”、“維護(hù)”、“結(jié)賬”、“對(duì)賬”幾個(gè)功能模塊。圖3-4IC卡管理系統(tǒng)模型的進(jìn)一步細(xì)化3.2.3

數(shù)據(jù)字典

分層數(shù)據(jù)流圖只是表達(dá)了系統(tǒng)的“分解”,為了完整地描述這個(gè)系統(tǒng),還需對(duì)圖中的每個(gè)數(shù)據(jù)和加工給出解釋。數(shù)據(jù)字典的作用就是對(duì)數(shù)據(jù)流圖進(jìn)行描述,它是數(shù)據(jù)流圖中包含的所有元素的定義的集合,是對(duì)數(shù)據(jù)流圖的補(bǔ)充。

數(shù)據(jù)字典包括了4類(lèi)條目:數(shù)據(jù)流、數(shù)據(jù)項(xiàng)、文件及基本加工。

1.?dāng)?shù)據(jù)流條目

它給出了數(shù)據(jù)流圖中數(shù)據(jù)流的定義,通常將數(shù)據(jù)流簡(jiǎn)單描述為該數(shù)據(jù)流的各組成數(shù)據(jù)項(xiàng)。

例如,數(shù)據(jù)流“乘客名單”由“乘客姓名”、“單位名”和“等級(jí)”組成,則數(shù)據(jù)字典中的“乘客名單”條目是:

乘客名單={乘客姓名+單位名+等級(jí)}

又如,報(bào)名單=姓名+單位名+年齡+性別+課程名。數(shù)據(jù)流名:查詢(xún)簡(jiǎn)述:系統(tǒng)處理的一個(gè)命令別名:無(wú)組成:[學(xué)生查詢(xún)|教師查詢(xún)|課程查詢(xún)]注釋?zhuān)褐?010年底還將增加3~4種查詢(xún)

2.文件條目

給出某個(gè)文件的定義。文件的定義通常是列出文件記錄的組成數(shù)據(jù)流,還可指出文件的組織方式。

例如,某銷(xiāo)售系統(tǒng)的訂單文件:

訂單文件=訂單編號(hào)+顧客名稱(chēng)+產(chǎn)品名稱(chēng)+訂貨數(shù)量+交貨日期3.?dāng)?shù)據(jù)項(xiàng)條目給出某個(gè)數(shù)據(jù)單項(xiàng)的定義,通常是該數(shù)據(jù)項(xiàng)的值類(lèi)型、允許值等。例如,賬號(hào)=00000~99999;存款期=[1|3|5](單位:年)4.加工條目加工條目就是“加工小說(shuō)明”,是對(duì)“加工”的注釋。由于“加工”是DFD圖的重要組成部分,一般應(yīng)單獨(dú)進(jìn)行說(shuō)明。符號(hào)含義例子及說(shuō)明=被定義為報(bào)名號(hào)=學(xué)名,表示報(bào)名單被定義為學(xué)號(hào)+與報(bào)名單=報(bào)名號(hào)+姓名,表示報(bào)名單由報(bào)名號(hào)和姓名組成[…|…]或性別=[男|女],表示性別是男或女{…}重復(fù)X={a},表示X由0個(gè)或多個(gè)a組成m{…}n重復(fù)X=2{a}6,表示重復(fù)2-6次a(…)可選X=(a),表示a可在X中出現(xiàn),也可不出現(xiàn)“…”基本數(shù)據(jù)元素X=“a”,表示X是取值為字符a的數(shù)據(jù)元素..連接符X=1..9,表示X可取1到8中的任意一個(gè)值表3-2在數(shù)據(jù)字典的定義中出現(xiàn)的符號(hào)3.2.4

結(jié)構(gòu)化語(yǔ)言結(jié)構(gòu)化語(yǔ)言是介乎自然語(yǔ)言和形式語(yǔ)言之間的一種半形式語(yǔ)言,它是自然語(yǔ)言的一個(gè)受限制的子集。結(jié)構(gòu)化語(yǔ)言一般分為兩層結(jié)構(gòu):外層語(yǔ)法較具體,為控制結(jié)構(gòu);內(nèi)層較靈活,表達(dá)要做什么。一般來(lái)說(shuō),外層的控制結(jié)構(gòu)可參考編程語(yǔ)言中的順序、選擇和循環(huán)結(jié)構(gòu)。以火車(chē)票售票為例,如果是學(xué)生,并且每年累計(jì)的乘車(chē)次數(shù)少于4次,則售半票,否則售全票。用形式化語(yǔ)言可描述如下:IF乘客是學(xué)生THENIF每年累計(jì)的乘車(chē)次數(shù)少于4次

THEN售半票

ELSE售全票

ENDIFELSE

售全票ENDIF結(jié)構(gòu)化語(yǔ)言的特點(diǎn)是簡(jiǎn)單直觀,且容易轉(zhuǎn)化為程序,但它不方便處理組合條件。3.2.5

判定表和判定樹(shù)判定表和判定樹(shù)都是用于描述加工的圖形工具。判定表采用表格形式來(lái)表達(dá)邏輯判斷問(wèn)題,表格分成4個(gè)部分:左上角為條件說(shuō)明,左下角為行動(dòng)說(shuō)明,右上角為各種條件的組合說(shuō)明,右下角為各條件組合下相應(yīng)的行動(dòng)。以某校教師的課時(shí)津貼為例,課時(shí)津貼標(biāo)準(zhǔn)是由教師的職稱(chēng)及類(lèi)別(本校、外聘)來(lái)決定的,本校教師:教授50元,副教授40元,講師35元,助教30元。外聘:教授60元,副教授50元,講師40元,助教35元。用判定表表達(dá)如表3-3所示。條件說(shuō)明教授YY副教授YY講師YY助教YY本校YYYY行動(dòng)說(shuō)明60*50**40**35**30*表3-3教師課時(shí)津貼的判定表表示圖3-5教師課時(shí)津貼的判定樹(shù)表示判定表雖然能清晰地表示復(fù)雜的條件組合與應(yīng)做的動(dòng)作之間的對(duì)應(yīng)關(guān)系,但其含義卻不是一眼就能看出來(lái)的,初次接觸這種工具的人要理解它需要有一個(gè)簡(jiǎn)短的學(xué)習(xí)過(guò)程。判定樹(shù)的優(yōu)點(diǎn)在于,它的形式簡(jiǎn)單到不需任何說(shuō)明,一眼就可以看出其含義,因此易于掌握和使用。雖然判定樹(shù)比判定表更直觀,但簡(jiǎn)潔性卻不如判定表3.2.6

層次方框圖層次方框圖用樹(shù)形結(jié)構(gòu)的一系列多層次的矩形框描述數(shù)據(jù)的層次結(jié)構(gòu)。樹(shù)形結(jié)構(gòu)的頂層是一個(gè)單獨(dú)的矩形框,它代表完整的數(shù)據(jù)結(jié)構(gòu),下面的各層矩形框代表這個(gè)數(shù)據(jù)結(jié)構(gòu)的子集,最底層的各個(gè)框代表組成這個(gè)數(shù)據(jù)結(jié)構(gòu)的實(shí)際數(shù)據(jù)元素。例如,描繪一家計(jì)算機(jī)公司的產(chǎn)品的數(shù)據(jù)結(jié)構(gòu)可用如圖3-6所示的層次方框圖來(lái)表示。圖3-6計(jì)算機(jī)公司產(chǎn)品結(jié)構(gòu)的層次方框圖3.2.7

Warnier圖法國(guó)計(jì)算機(jī)科學(xué)家Warnier提出了表示信息層次結(jié)構(gòu)的另外一種圖形工具Warnier圖。與層次方框圖類(lèi)似,Warnier圖也用樹(shù)形結(jié)構(gòu)描繪信息。圖3-7是用Warnier圖描繪軟件概念的例子,它說(shuō)明了這種圖形工具的用法。圖3-7軟件概念的Warnier圖3.2.8

IPO圖IPO圖是輸入/處理/輸出圖的簡(jiǎn)稱(chēng),它是由美國(guó)IBM公司發(fā)展完善起來(lái)的一種圖形工具,能夠方便地描繪輸入數(shù)據(jù)、數(shù)據(jù)處理和輸出數(shù)據(jù)的關(guān)系。IPO圖使用的基本符號(hào)既少又簡(jiǎn)單,因此很容易學(xué)會(huì)。IPO圖的基本形式是在左邊的框中列出有關(guān)的輸入數(shù)據(jù),在中間的框中列出主要的處理,在右邊的框中列出產(chǎn)生的輸出數(shù)據(jù)。圖3-8數(shù)據(jù)庫(kù)更新記錄的IPO圖IPO圖的不足之處在于:(1)它沒(méi)有驗(yàn)證功能。(2)它沒(méi)有反映軟件的性能要求。(3)對(duì)于一些大型軟件,資料量太大。例如,如果程序有1000個(gè)模塊,則僅IPO圖就需1000張。3.3

需求評(píng)審3.3.1

需求評(píng)審的原則1.分層次評(píng)審2.正式評(píng)審與非正式評(píng)審結(jié)合3.分階段評(píng)審4.精心挑選評(píng)審員5.對(duì)評(píng)審員進(jìn)行培訓(xùn)6.充分利用需求評(píng)審檢查單7.建立標(biāo)準(zhǔn)的評(píng)審流程8.做好評(píng)審后的跟蹤工作9.充分準(zhǔn)備評(píng)審3.4軟件需求分析規(guī)格說(shuō)明書(shū)3.4.1軟件需求分析規(guī)格說(shuō)明書(shū)的內(nèi)容1引言 1.1編寫(xiě)目的 1.2背景 1.3定義 1.4參考資料 2任務(wù)概述 2.1目標(biāo) 2.2用戶(hù)的特點(diǎn) 2.3假定和約束 3需求規(guī)定 3.1對(duì)功能的規(guī)定 3.2對(duì)性能的規(guī)定 3.2.1精度 3.2.2時(shí)間特性要求 3.2.3靈活性 3.3輸人輸出要求 3.4數(shù)據(jù)管理能力要求 3.5故障處理要求 3.6其他專(zhuān)門(mén)要求 4運(yùn)行環(huán)境規(guī)定 4.1設(shè)備 4.2支持軟件 4.3接口 4.4控制

3.4.2

案例分析圖3-9學(xué)生成績(jī)管理系統(tǒng)數(shù)據(jù)流圖第4章軟件設(shè)計(jì)掌握:概要設(shè)計(jì)的方法、詳細(xì)設(shè)計(jì)的方法、軟件設(shè)計(jì)說(shuō)明書(shū)的規(guī)范化編寫(xiě)。4.1軟件設(shè)計(jì)概述4.1.1軟件設(shè)計(jì)的任務(wù)

軟件設(shè)計(jì)的基本目的就是回答“系統(tǒng)應(yīng)該如何實(shí)現(xiàn)?”這個(gè)問(wèn)題。軟件設(shè)計(jì)的任務(wù),就是把分析階段產(chǎn)生的軟件需求說(shuō)明轉(zhuǎn)換為用適當(dāng)手段表示的軟件設(shè)計(jì)文檔。1.系統(tǒng)結(jié)構(gòu)設(shè)計(jì)系統(tǒng)結(jié)構(gòu)設(shè)計(jì)用于定義軟件主要結(jié)構(gòu)性元素之間的關(guān)系。系統(tǒng)結(jié)構(gòu)設(shè)計(jì)表示(即基于計(jì)算機(jī)的系統(tǒng)的框架)可以從系統(tǒng)規(guī)約、分析模型以及分析模型中所定義的子系統(tǒng)的交互中導(dǎo)出。2.?dāng)?shù)據(jù)設(shè)計(jì)數(shù)據(jù)設(shè)計(jì)用于將分析階段創(chuàng)建的信息模型,如數(shù)據(jù)字典、數(shù)據(jù)流圖等,轉(zhuǎn)變?yōu)閷?shí)現(xiàn)軟件所需的數(shù)據(jù)結(jié)構(gòu)。部分?jǐn)?shù)據(jù)設(shè)計(jì)可能和軟件系統(tǒng)結(jié)構(gòu)的設(shè)計(jì)同時(shí)發(fā)生,但更詳細(xì)的數(shù)據(jù)設(shè)計(jì)活動(dòng)則會(huì)發(fā)生在設(shè)計(jì)每個(gè)具體軟件構(gòu)件(或模塊)的時(shí)候。3.接口設(shè)計(jì)接口設(shè)計(jì)描述軟件內(nèi)部模塊之間以及軟件與人之間是如何通信的(包括數(shù)據(jù)流和控制流)。一個(gè)接口意味著特定的信息流(如數(shù)據(jù)流或控制流)以及行為類(lèi)型,因此,數(shù)據(jù)和控制流圖提供了接口設(shè)計(jì)所需的信息。4.構(gòu)件設(shè)計(jì)從工程管理的角度來(lái)看,傳統(tǒng)的軟件設(shè)計(jì)任務(wù)通常分兩個(gè)階段完成,即概要設(shè)計(jì)和詳細(xì)設(shè)計(jì)。

4.1.2模塊與模塊化

在軟件系統(tǒng)設(shè)計(jì)中,模塊是一個(gè)明確定義的輸入、輸出和特性的程序?qū)嶓w,通常程序中單獨(dú)命名且可通過(guò)名字訪問(wèn)的過(guò)程函數(shù)、子程序或宏調(diào)用都可看作模塊。一般模塊具有以下幾種特征:(1)接口:模塊的輸入/輸出。(2)功能:模塊實(shí)現(xiàn)什么功能,有什么作用。(3)邏輯:描述模塊內(nèi)部如何實(shí)現(xiàn)需求及所需數(shù)據(jù)。(4)狀態(tài):模塊的運(yùn)行環(huán)境,模塊間調(diào)用與被調(diào)用關(guān)系。軟件設(shè)計(jì)應(yīng)當(dāng)遵循“模塊化”的原則。所謂“模塊化”,就是將程序劃分成若干個(gè)獨(dú)立的模塊的過(guò)程,其中,每個(gè)模塊完成一個(gè)特定子功能,每個(gè)模塊既相對(duì)獨(dú)立,又相互聯(lián)系,它們共同完成系統(tǒng)指定的各項(xiàng)功能。4.1.3抽象與細(xì)化

抽象是指從一些事物中抽取其本質(zhì)的共同的特性,而忽略其非本質(zhì)細(xì)節(jié)的差異。細(xì)化是一種先總體、后局部的思維原則,也就是一種逐層分解、分而治之的方法。模塊的“粒度”是指模塊的規(guī)模。如果模塊的規(guī)模過(guò)大,會(huì)使得模塊的可重用性差,同時(shí),修改、維護(hù)也比較困難。在模塊設(shè)計(jì)中,“細(xì)化”與“抽象”的思想極為重要。通過(guò)細(xì)化,可以將一個(gè)大模塊分解成若干個(gè)小模塊;通過(guò)抽象,可以將多個(gè)模塊中的公共部分概括出來(lái),用單獨(dú)的模塊表示,從而降低了模塊的粒度。4.1.4信息隱蔽

信息隱蔽是在設(shè)計(jì)和確定模塊時(shí),使得一個(gè)模塊內(nèi)包含的信息(過(guò)程和數(shù)據(jù))對(duì)于不需要這些信息的模塊來(lái)說(shuō)是不能訪問(wèn)的。它通過(guò)定義一組獨(dú)立的模塊來(lái)實(shí)現(xiàn)有效的模塊化。信息隱蔽作為一種設(shè)計(jì)準(zhǔn)則用于模塊化系統(tǒng),在測(cè)試與維護(hù)期間會(huì)為軟件修改帶來(lái)極大的好處。4.1.5模塊的獨(dú)立性

模塊的獨(dú)立性是指軟件系統(tǒng)中的每個(gè)模塊只涉及軟件要求的具體的子功能,應(yīng)與軟件系統(tǒng)中其他模塊的接口保持簡(jiǎn)單化,即模塊間的聯(lián)系不要太多。例如,若一個(gè)模塊只具有單一的功能,且與其他模塊沒(méi)有太多的聯(lián)系,那么稱(chēng)此模塊具有模塊獨(dú)立性。1.耦合耦合是模塊之間的相對(duì)獨(dú)立性(互相連接的緊密程度)的度量。模塊之間的連接越緊密,聯(lián)系越多,耦合性就越高,而其模塊獨(dú)立性就越弱。1)非直接耦合非直接耦合是指兩個(gè)模塊之間無(wú)直接關(guān)系,它們之間的聯(lián)系完全是通過(guò)主程序的控制和調(diào)用來(lái)實(shí)現(xiàn)的。非直接耦合的模塊間耦合程度最低,即模塊獨(dú)立性最強(qiáng)。

2)數(shù)據(jù)耦合

數(shù)據(jù)耦合指的是模塊間的通信參數(shù)都是數(shù)據(jù)項(xiàng)。數(shù)據(jù)是模塊間進(jìn)行信息交流的一種必不可少的聯(lián)系形式。在模塊之間傳輸?shù)臄?shù)據(jù)項(xiàng)越少,產(chǎn)生的不利影響越少。圖4-1數(shù)據(jù)耦合

3)標(biāo)記耦合

如果兩個(gè)模塊通過(guò)參數(shù)表傳遞記錄信息,而這個(gè)記錄是某一數(shù)據(jù)結(jié)構(gòu)的子結(jié)構(gòu)(如字符串),而不是簡(jiǎn)單變量

4)控制耦合

控制耦合是指一個(gè)模塊向另一個(gè)模塊傳送的信息控制了另一個(gè)模塊的執(zhí)行。圖4-2控制耦合圖4-3控制耦合的修改5)外部耦合如果一組模塊通過(guò)同—個(gè)全局簡(jiǎn)單變量相互作用,那么它們之間的耦合稱(chēng)為外部耦合。6)公共耦合公共耦合就是一組模塊都訪問(wèn)同一全局?jǐn)?shù)據(jù)結(jié)構(gòu)。7)內(nèi)容耦合內(nèi)容耦合是指一個(gè)模塊直接訪問(wèn)另一模塊的內(nèi)容。圖4-47種耦合的耦合性及數(shù)據(jù)獨(dú)立性2.內(nèi)聚內(nèi)聚是模塊功能強(qiáng)度(一個(gè)模塊內(nèi)部各個(gè)元素彼此結(jié)合的緊密程度)的度量。一個(gè)模塊內(nèi)部各個(gè)元素之間的聯(lián)系越緊密,則它的內(nèi)聚性就越高,相對(duì)地,它與其他模塊之間的耦合性就會(huì)減低,而模塊獨(dú)立性也就越強(qiáng)。1)偶然內(nèi)聚如果一個(gè)模塊的各個(gè)部分之間沒(méi)有聯(lián)系,或者即使有聯(lián)系,這種聯(lián)系也是很松散的,就稱(chēng)為偶然內(nèi)聚。2)邏輯內(nèi)聚如果把幾個(gè)邏輯上相關(guān)的功能放在同一個(gè)模塊中,則模塊每次被調(diào)用時(shí),根據(jù)傳送給該模塊的判定參數(shù)來(lái)確定模塊應(yīng)執(zhí)行的功能,就稱(chēng)為邏輯內(nèi)聚。3)時(shí)間內(nèi)聚時(shí)間內(nèi)聚是指一個(gè)模塊的各個(gè)組成部分的處理動(dòng)作和時(shí)間有關(guān)。4)通信內(nèi)聚通信內(nèi)聚是指一個(gè)模塊內(nèi)各個(gè)組成部分的處理動(dòng)作都使用相同的輸入數(shù)據(jù)或產(chǎn)生相同的輸出數(shù)據(jù)。5)順序內(nèi)聚順序內(nèi)聚是指一個(gè)模塊內(nèi)部的各個(gè)組成部分執(zhí)行的幾個(gè)處理動(dòng)作有這樣的特征:前一處理動(dòng)作所產(chǎn)生的輸出數(shù)據(jù)是下一個(gè)處理動(dòng)作的輸入數(shù)據(jù)。6)功能內(nèi)聚功能內(nèi)聚是指一個(gè)模塊內(nèi)部的各個(gè)組成部分的處理動(dòng)作全部都為執(zhí)行同一個(gè)功能而存在,并且只執(zhí)行一個(gè)功能。圖4-56種耦合的耦合性及數(shù)據(jù)獨(dú)立4.1.6自底向上與自頂向下設(shè)計(jì)策略采用自頂向下的策略,首先將整個(gè)系統(tǒng)分解成子系統(tǒng),再將子系統(tǒng)分解成更小的子系統(tǒng),直至分解為能夠直接實(shí)現(xiàn)的軟件模塊。采用自底向上的策略則首先考慮最基本的系統(tǒng)構(gòu)件和系統(tǒng)的內(nèi)部函數(shù),然后逐步將這些構(gòu)件聚合成更大的軟件模塊、子系統(tǒng),最終形成整個(gè)系統(tǒng)。4.1.7結(jié)構(gòu)化設(shè)計(jì)原則(1)設(shè)計(jì)過(guò)程應(yīng)該能夠預(yù)測(cè)和評(píng)估。(2)設(shè)計(jì)對(duì)于分析模型應(yīng)該是可跟蹤的。(3)設(shè)計(jì)應(yīng)該重視資源重用。(4)設(shè)計(jì)應(yīng)該使最終軟件盡可能和現(xiàn)實(shí)世界中的問(wèn)題“相似”,也就是說(shuō),軟件設(shè)計(jì)的結(jié)構(gòu)應(yīng)該盡可能地模擬問(wèn)題域的結(jié)構(gòu)。(5)設(shè)計(jì)應(yīng)該表現(xiàn)出一致性和集成性。(6)設(shè)計(jì)應(yīng)該適應(yīng)擴(kuò)展和變更。(7)設(shè)計(jì)應(yīng)該考慮軟件的容錯(cuò)性和處理錯(cuò)誤、異常的能力。(8)設(shè)計(jì)不是編碼,編碼也不是設(shè)計(jì)。(9)在創(chuàng)建設(shè)計(jì)時(shí)就應(yīng)該能夠評(píng)估質(zhì)量,而不是在事情完成之后評(píng)估。(10)應(yīng)該評(píng)審設(shè)計(jì),以減少概念性(語(yǔ)義性)錯(cuò)誤。4.2

概要設(shè)計(jì)4.2.1概要設(shè)計(jì)的基本任務(wù)

1.制定規(guī)范如規(guī)定代碼體系、接口規(guī)約、命名規(guī)則等。2.總體結(jié)構(gòu)設(shè)計(jì)(1)將軟件功能轉(zhuǎn)換成模塊,規(guī)定每個(gè)功能用哪些模塊實(shí)現(xiàn),保證每個(gè)功能都有相應(yīng)的模塊來(lái)實(shí)現(xiàn)。(2)決定模塊層次結(jié)構(gòu)和模塊間的調(diào)用關(guān)系。(3)模塊間的接口設(shè)計(jì)決定模塊間傳遞的信息及結(jié)構(gòu)。(4)用戶(hù)界面設(shè)計(jì)。(5)詳細(xì)的數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì),如表、索引、文件等。(6)與算法相關(guān)的邏輯數(shù)據(jù)結(jié)構(gòu)及操作。(7)其他性能方面的設(shè)計(jì)。4.2.2概要設(shè)計(jì)的步驟

1.結(jié)構(gòu)化軟件設(shè)計(jì)方法結(jié)構(gòu)化軟件概要設(shè)計(jì)的步驟如下:(1)詳細(xì)閱讀需求規(guī)格說(shuō)明書(shū),理解系統(tǒng)建設(shè)目標(biāo)、業(yè)務(wù)現(xiàn)狀、現(xiàn)有系統(tǒng)、用戶(hù)需求的各功能說(shuō)明。(2)分析數(shù)據(jù)流圖,弄清數(shù)據(jù)流加工的過(guò)程。(3)根據(jù)數(shù)據(jù)流圖來(lái)決定數(shù)據(jù)處理問(wèn)題的類(lèi)型,一般分為變換型、事務(wù)型。(4)推導(dǎo)出系統(tǒng)的初始結(jié)構(gòu)圖。一般遵循以下步驟: 找出系統(tǒng)底層邏輯輸入、主加工和邏輯輸出; 設(shè)計(jì)頂層模塊和第一層模塊; 對(duì)輸入、變換、輸出模塊逐個(gè)分解,便可得到初始結(jié)構(gòu)圖(5)對(duì)初始結(jié)構(gòu)圖進(jìn)行改進(jìn)完善:所有的加工都要能對(duì)應(yīng)到相應(yīng)模塊(模塊的完整性在于它們完成了需求中的所有加工),消除完全相似或局部相似的重復(fù)功能,理清模塊間的層次、控制關(guān)系,平衡模塊大小。(6)由數(shù)據(jù)字典導(dǎo)出邏輯數(shù)據(jù)結(jié)構(gòu)、每種數(shù)據(jù)結(jié)構(gòu)上的操作,操作應(yīng)當(dāng)屬于某個(gè)模塊。(7)確定系統(tǒng)包含哪些應(yīng)用服務(wù)子系統(tǒng)、客戶(hù)端、數(shù)據(jù)庫(kù)管理子系統(tǒng)。(8)對(duì)每個(gè)篩選后的模塊進(jìn)行列表說(shuō)明。(9)對(duì)邏輯數(shù)據(jù)結(jié)構(gòu)進(jìn)行列表說(shuō)明。(10)編寫(xiě)概要設(shè)計(jì)說(shuō)明書(shū)。2.面向?qū)ο蟮能浖O(shè)計(jì)方法使用面向?qū)ο蟮脑O(shè)計(jì)方法,首先需要構(gòu)建軟件的體系結(jié)構(gòu),其過(guò)程是:先將系統(tǒng)劃分為子系統(tǒng)(可以使用包來(lái)描述子系統(tǒng)),根據(jù)子系統(tǒng)提供的操作定義它們的接口,然后設(shè)計(jì)子系統(tǒng)的概念模型。對(duì)復(fù)雜的子系統(tǒng),可以繼續(xù)將其分解,得到更簡(jiǎn)單的子系統(tǒng)。3.結(jié)構(gòu)化軟件設(shè)計(jì)方法和面向?qū)ο蟮能浖O(shè)計(jì)方法之間的比較(1)從概念方面看,結(jié)構(gòu)化軟件是功能的集合,通過(guò)模塊以及模塊和模塊之間的分層調(diào)用關(guān)系實(shí)現(xiàn);面向?qū)ο筌浖鞘挛锏募希ㄟ^(guò)對(duì)象以及對(duì)象和對(duì)象之間的通訊聯(lián)系實(shí)現(xiàn)。(2)從構(gòu)成方面看,結(jié)構(gòu)化軟件=過(guò)程+數(shù)據(jù),以過(guò)程為中心;面向?qū)ο筌浖剑〝?shù)據(jù)+相應(yīng)操作)的封裝,以數(shù)據(jù)為中心。(3)從運(yùn)行控制方面看,結(jié)構(gòu)化軟件采用順序處理方式,由過(guò)程驅(qū)動(dòng)控制;面向?qū)ο筌浖捎媒换ナ健⒉⑿刑幚矸绞?,由消息?qū)動(dòng)控制。(4)從開(kāi)發(fā)方面看,結(jié)構(gòu)化方法的工作重點(diǎn)是設(shè)計(jì);面向?qū)ο蠓椒ǖ墓ぷ髦攸c(diǎn)是分析。但是,在結(jié)構(gòu)化方法中,分析階段和設(shè)計(jì)階段采用了不相吻合的表達(dá)方式,需要把在分析階段采用的具有網(wǎng)絡(luò)特征的數(shù)據(jù)流圖轉(zhuǎn)換為設(shè)計(jì)階段采用的具有分層特征的結(jié)構(gòu)圖,而在面向?qū)ο蠓椒ㄖ袆t不存在這一問(wèn)題。(5)從應(yīng)用方面看,相對(duì)而言,結(jié)構(gòu)化方法和面向?qū)ο蟮姆椒ňm合數(shù)據(jù)處理、事務(wù)處理軟件的開(kāi)發(fā),但相對(duì)而言,結(jié)構(gòu)化方法更適合數(shù)據(jù)類(lèi)型比較簡(jiǎn)單的數(shù)值計(jì)算軟件的開(kāi)發(fā),面向?qū)ο蠓椒▌t更適合大型復(fù)雜軟件的開(kāi)發(fā)。4.2.3

軟件結(jié)構(gòu)圖

圖4-6成績(jī)管理系統(tǒng)的軟件結(jié)構(gòu)圖4.2.4

數(shù)據(jù)流圖

數(shù)據(jù)流圖簡(jiǎn)稱(chēng)DFD,是采用圖形方式來(lái)表達(dá)系統(tǒng)的邏輯功能、數(shù)據(jù)在系統(tǒng)內(nèi)部的邏輯流向和邏輯變換過(guò)程,是結(jié)構(gòu)化系統(tǒng)分析方法的主要表達(dá)工具及用于表示軟件模型的一種圖示方法。4.3

詳細(xì)設(shè)計(jì)4.3.1詳細(xì)設(shè)計(jì)的基本任務(wù)

(1)對(duì)每個(gè)模塊進(jìn)行詳細(xì)的算法設(shè)計(jì)。用某種圖形、表格、語(yǔ)言工具將每個(gè)模塊處理過(guò)程的詳細(xì)算法描述出來(lái)。(2)對(duì)模塊內(nèi)的數(shù)據(jù)結(jié)構(gòu)進(jìn)行設(shè)計(jì)。對(duì)需求分析、概要設(shè)計(jì)確定的概念性的數(shù)據(jù)類(lèi)型進(jìn)行確切的定義。(3)對(duì)數(shù)據(jù)結(jié)構(gòu)進(jìn)行物理設(shè)計(jì),即確定數(shù)據(jù)庫(kù)的物理結(jié)構(gòu)。物理結(jié)構(gòu)主要指數(shù)據(jù)庫(kù)的存儲(chǔ)記錄格式、存儲(chǔ)記錄安排和存儲(chǔ)方法,這些都依賴(lài)于具體所使用的數(shù)據(jù)庫(kù)系統(tǒng)。(4)其他設(shè)計(jì):為了提高數(shù)據(jù)的輸入、分類(lèi)、存儲(chǔ)、檢索等操作的效率,節(jié)約內(nèi)存空間,對(duì)數(shù)據(jù)庫(kù)中的某些數(shù)據(jù)項(xiàng)的值要進(jìn)行代碼設(shè)計(jì)。為了規(guī)范系統(tǒng)的輸入和輸出,還需要進(jìn)行輸入/輸出格式設(shè)計(jì)。對(duì)于一個(gè)實(shí)時(shí)系統(tǒng),用戶(hù)與計(jì)算機(jī)頻繁對(duì)話(huà),因此要進(jìn)行對(duì)話(huà)方式、內(nèi)容、格式的具體設(shè)計(jì)。(5)編寫(xiě)詳細(xì)設(shè)計(jì)說(shuō)明書(shū)。(6)評(píng)審。對(duì)處理過(guò)程的算法和數(shù)據(jù)庫(kù)的物理結(jié)構(gòu)都要評(píng)審。4.3.2

程序流程圖

符號(hào)說(shuō)明端點(diǎn):流程的開(kāi)始點(diǎn)或結(jié)束點(diǎn)處理:定義一個(gè)操作(一個(gè)或多個(gè)程序語(yǔ)句)流線(xiàn):表示程序控制轉(zhuǎn)向判斷:測(cè)試條件是否滿(mǎn)足表4-1程序流程圖的符號(hào)說(shuō)明圖4-7程序流程圖的一個(gè)簡(jiǎn)單例子4.3.3

盒圖

圖4-8盒圖的順序結(jié)構(gòu)圖4-9盒圖的條件結(jié)構(gòu)圖4-10盒圖的While循環(huán)結(jié)構(gòu)圖4-11盒圖的Until循環(huán)結(jié)構(gòu)圖4-12盒圖的選擇結(jié)構(gòu)圖4-13盒圖的端點(diǎn)表示圖4-14盒圖的模塊調(diào)用圖4-15盒圖表示的一個(gè)簡(jiǎn)單例子4.3.4

詳細(xì)設(shè)計(jì)中的IPO圖

IPO圖既是需求分析的工具,也是詳細(xì)設(shè)計(jì)的工具。它的優(yōu)點(diǎn)是輸入、輸出明顯,容易被人理解,適合于進(jìn)行自頂向下設(shè)計(jì),有一定的靈活性。另外,使用IPO圖開(kāi)發(fā)軟件還可以便于人員分工,具有易于測(cè)試、糾錯(cuò)等優(yōu)點(diǎn)。它的缺點(diǎn)是:制作量較大,修改較困難。4.3.5

PAD圖

圖4-16PAD圖的常見(jiàn)結(jié)構(gòu)4.3.6

偽代碼

偽代碼是一種算法描述語(yǔ)言,它介于自然語(yǔ)言與實(shí)際的編程語(yǔ)言之間。相比實(shí)際的編程語(yǔ)言而言,偽代碼的代碼簡(jiǎn)單、可讀性好,但它不可以在實(shí)際的編程環(huán)境中編譯運(yùn)行。相比自然語(yǔ)言而言,偽代碼更容易被轉(zhuǎn)換為實(shí)際的程序。一般來(lái)說(shuō),在軟件設(shè)計(jì)中,一些復(fù)雜的算法可以用偽代碼來(lái)表示。4.4

軟件設(shè)計(jì)說(shuō)明書(shū)與案例分析4.4.1軟件設(shè)計(jì)說(shuō)明書(shū)

1.概要設(shè)計(jì)說(shuō)明書(shū)1引言1.1編寫(xiě)目的1.2背景1.3定義1.4參考資料2總體設(shè)計(jì)2.1需求規(guī)定2.2運(yùn)行環(huán)境2.3基本設(shè)計(jì)概念和處理流程2.4結(jié)構(gòu)2.5功能需求與程序的關(guān)系2.6人工處理過(guò)程2.7尚未問(wèn)決的問(wèn)題3接口設(shè)計(jì)3.1用戶(hù)接口3.2外部接口3.3內(nèi)部接口4運(yùn)行設(shè)計(jì)4.1運(yùn)行模塊組合4.2運(yùn)行控制4.3運(yùn)行時(shí)間5系統(tǒng)數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)5.1邏輯結(jié)構(gòu)設(shè)計(jì)要點(diǎn)5.2物理結(jié)構(gòu)設(shè)計(jì)要點(diǎn)5.3數(shù)據(jù)結(jié)構(gòu)與程序的關(guān)系6系統(tǒng)出錯(cuò)處理設(shè)計(jì)6.1出錯(cuò)信息6.2補(bǔ)救措施6.3系統(tǒng)維護(hù)設(shè)計(jì)2.詳細(xì)設(shè)計(jì)說(shuō)明書(shū)1引言1.1編寫(xiě)目的1.2背景1.3定義1.4參考資料2程序系統(tǒng)的結(jié)構(gòu)3程序1(標(biāo)識(shí)符)設(shè)計(jì)說(shuō)明3.1程序描述3.2功能3.3性能3.4輸人項(xiàng)3.5輸出項(xiàng)3.6算法3.7流程邏輯3.8接口3.9存儲(chǔ)分配3.10注釋設(shè)計(jì)3.11限制條件3.12測(cè)試計(jì)劃3.13尚未解決的問(wèn)題4程序2(標(biāo)識(shí)符)設(shè)計(jì)說(shuō)明第5章軟件編碼掌握:程序設(shè)計(jì)語(yǔ)言分類(lèi)、常見(jiàn)程序設(shè)計(jì)語(yǔ)言及其特點(diǎn)、程序設(shè)計(jì)語(yǔ)言的選擇、編碼規(guī)范、結(jié)構(gòu)化程序設(shè)計(jì)的方法。5.1程序設(shè)計(jì)語(yǔ)言5.1.1程序設(shè)計(jì)語(yǔ)言分類(lèi)

1.機(jī)器語(yǔ)言機(jī)器語(yǔ)言又稱(chēng)“低級(jí)語(yǔ)言”,是以二進(jìn)制代碼表示的指令集合。占用內(nèi)存少、執(zhí)行效率高不易為人們理解、記憶和交流2.匯編語(yǔ)言匯編語(yǔ)言又稱(chēng)符號(hào)語(yǔ)言。,它把計(jì)算機(jī)能識(shí)別的機(jī)器指令用符號(hào)表示用匯編語(yǔ)言編寫(xiě)的程序更易理解、調(diào)試和維護(hù)3.高級(jí)語(yǔ)言與機(jī)器語(yǔ)言和匯編語(yǔ)言相比,高級(jí)語(yǔ)言比較容易理解和掌握,并且通用性好便于維護(hù),這極大地提高了編程的效率和程序的可靠件性用高級(jí)語(yǔ)言編寫(xiě)的程序也不能直接被機(jī)器識(shí)別和執(zhí)行5.1.2常見(jiàn)程序設(shè)計(jì)語(yǔ)言及其特點(diǎn)

1.C語(yǔ)言C語(yǔ)言是一種編譯型計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言,它既有高級(jí)語(yǔ)言的特點(diǎn),又具有匯編語(yǔ)言的特點(diǎn)。C語(yǔ)言可以作為系統(tǒng)設(shè)計(jì)語(yǔ)言,編寫(xiě)工作系統(tǒng)應(yīng)用程序,也可以作為應(yīng)用程序設(shè)計(jì)語(yǔ)言,編寫(xiě)不依賴(lài)計(jì)算機(jī)硬件的應(yīng)用程序,因此,其應(yīng)用范圍十分廣泛。C語(yǔ)言的優(yōu)點(diǎn)包括:(1)簡(jiǎn)潔緊湊、靈活方便。(2)運(yùn)算符豐富。(3)數(shù)據(jù)結(jié)構(gòu)豐富。(4)C語(yǔ)言是結(jié)構(gòu)式語(yǔ)言。(5)C語(yǔ)言的語(yǔ)法限制不太嚴(yán)格,程序設(shè)計(jì)自由度大。(6)C語(yǔ)言允許直接訪問(wèn)物理地址,可以直接對(duì)硬件進(jìn)行操作(7)C語(yǔ)言程序生成代碼質(zhì)量高,程序執(zhí)行效率高。(8)C語(yǔ)言適用范圍大,可移植性好。2.C++其優(yōu)點(diǎn)主要包括:(1)與C語(yǔ)言兼容,既支持面向?qū)ο蟮某绦蛟O(shè)計(jì),也支持結(jié)構(gòu)化的程序設(shè)計(jì)。(2)修補(bǔ)了C語(yǔ)言中的一些漏洞(3)生成的目標(biāo)程序質(zhì)量高,程序執(zhí)行效率高。(4)提供了異常處理機(jī)制,簡(jiǎn)化了程序的出錯(cuò)處理。(5)函數(shù)可以重載并可以使用缺省參數(shù)。(6)提供了模板機(jī)制。3.JavaJava的特點(diǎn)包括:(1)平臺(tái)無(wú)關(guān)性。(2)安全性。(3)面向?qū)ο蟆#?)分布式。(5)健壯性。4.Basic

BASIC是Beginner’sAll-purposeSymbolicCode(初學(xué)者通用符號(hào)指令代碼)的縮寫(xiě)。BASIC語(yǔ)言是一種解釋執(zhí)行的會(huì)話(huà)語(yǔ)言,它簡(jiǎn)單易學(xué),因此成為許多初學(xué)者學(xué)習(xí)程序設(shè)計(jì)的入門(mén)語(yǔ)言。5.C#C#是微軟公司發(fā)布的一種面向?qū)ο蟮?、運(yùn)行于.NETFramework之上的高級(jí)程序設(shè)計(jì)語(yǔ)言。C#看起來(lái)與Java驚人的相似,它也包括了諸如單一繼承、界面等特性,并具有與Java幾乎同樣的語(yǔ)法及編譯成中間代碼再運(yùn)行的過(guò)程。C#與Java的不同之處在于它與COM(組件對(duì)象模型)是直接集成的。6.FORTRANFORTRAN是英文FormulaTranslator的縮寫(xiě),譯為“公式翻譯器”,它是世界上最早出現(xiàn)的計(jì)算機(jī)高級(jí)程序設(shè)計(jì)語(yǔ)言。Fortran語(yǔ)言的最大特點(diǎn)是接近數(shù)學(xué)公式的自然描述,以及具有很高的執(zhí)行效率。同時(shí),它易學(xué),語(yǔ)法嚴(yán)謹(jǐn),并可以直接對(duì)矩陣和復(fù)數(shù)進(jìn)行運(yùn)算。7.PASCALPascal是最早出現(xiàn)的結(jié)構(gòu)化編程語(yǔ)言,它具有豐富的數(shù)據(jù)類(lèi)型和簡(jiǎn)潔靈活的操作語(yǔ)句,對(duì)于數(shù)值和非數(shù)值問(wèn)題都具有很好的描述能力。Pascal語(yǔ)言現(xiàn)已成為使用最廣泛的基于DOS的語(yǔ)言之一,其主要特點(diǎn)有:嚴(yán)格的結(jié)構(gòu)化形式、豐富完備的數(shù)據(jù)類(lèi)型、運(yùn)行效率高、查錯(cuò)能力強(qiáng)。8.COBOLCOBOL是CommonBusinessOrientedLanguage(面向商業(yè)的公用語(yǔ)言)的縮寫(xiě),這是商業(yè)數(shù)據(jù)處理中廣泛使用的一種標(biāo)準(zhǔn)語(yǔ)言。它具有出色的適合商業(yè)應(yīng)用的數(shù)據(jù)類(lèi)型,能有效地支持與商業(yè)數(shù)據(jù)處理有關(guān)的各種技術(shù),適合于計(jì)算簡(jiǎn)單、數(shù)據(jù)量大的應(yīng)用場(chǎng)合,廣泛應(yīng)用于商業(yè)領(lǐng)域。9.ALGOLALGOL是結(jié)構(gòu)化語(yǔ)言的前驅(qū),它提供了特別豐富的過(guò)程構(gòu)造及數(shù)據(jù)類(lèi)型構(gòu)造,在歐洲得到了廣泛應(yīng)用。但是,PASCAL語(yǔ)言和C語(yǔ)言問(wèn)世以后,它的位置就逐漸被取代了。10.Ada

Ada是一種美國(guó)國(guó)防部為克服軟件開(kāi)發(fā)危機(jī)而耗費(fèi)巨資,歷時(shí)近20年研制成功的表現(xiàn)能力很強(qiáng)的通用程序設(shè)計(jì)語(yǔ)言,它被譽(yù)為第四代計(jì)算機(jī)語(yǔ)言的成功代表。Ada語(yǔ)言體現(xiàn)了許多現(xiàn)代軟件的開(kāi)發(fā)原理,并將這些原理付諸實(shí)現(xiàn)。Ada語(yǔ)言的使用大大提高了軟件系統(tǒng)的清晰性、可靠性、有效性、可維護(hù)性。11.LISPLISP(ListProcessor,鏈表處理語(yǔ)言)是由約翰?麥卡錫在1960年左右創(chuàng)造的一種基于λ演算的函數(shù)式編程語(yǔ)言,它主要應(yīng)用于人工智能領(lǐng)域。12.PrologProlog(ProgramminginLogic)是一種邏輯編程語(yǔ)言,它建立在邏輯學(xué)的理論基礎(chǔ)之上,最初被運(yùn)用于自然語(yǔ)言等研究領(lǐng)域?,F(xiàn)在Prolog已廣泛應(yīng)用于人工智能的研究中,用來(lái)建造專(zhuān)家系統(tǒng)、自然語(yǔ)言理解、智能知識(shí)庫(kù)等。使用Prolog能夠比使用其他語(yǔ)言更快速地開(kāi)發(fā)程序,因?yàn)樗木幊谭椒ǜ袷鞘褂眠壿嫷恼Z(yǔ)言來(lái)描述程序。13.SmallTalk

Smalltalk被公認(rèn)為歷史上第二個(gè)面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言和第一個(gè)真正的集成開(kāi)發(fā)環(huán)境(IDE),它由Alan

Kay,Dan

Ingalls,Ted

Kaehler,AdeleGoldberg等于20世紀(jì)70年代初在XeroxPARC開(kāi)發(fā)。5.1.3程序設(shè)計(jì)語(yǔ)言的選擇開(kāi)發(fā)人員在選擇程序設(shè)計(jì)語(yǔ)言時(shí),應(yīng)考慮以下因素:1.應(yīng)用領(lǐng)域2.算法與數(shù)據(jù)結(jié)構(gòu)的復(fù)雜性3.軟件執(zhí)行的環(huán)境4.軟件執(zhí)行的效率5.2

編碼規(guī)范5.2.1編排格式

1.采用縮進(jìn)風(fēng)格2.控制代碼行寬度3.使用空格字符實(shí)現(xiàn)縮進(jìn)4.適當(dāng)?shù)厥褂每招?.不允許把多個(gè)短語(yǔ)句寫(xiě)在一行中6.適當(dāng)使用空格5.2.2

命名規(guī)則

(1)盡量采用有意義的名字命名。(2)名字的長(zhǎng)度無(wú)限制,但也不宜過(guò)長(zhǎng)。(3)如果名字使用縮寫(xiě),那么縮寫(xiě)規(guī)則須保持一致。5.2.3

注釋

(1)每一個(gè)注釋都應(yīng)當(dāng)有用,應(yīng)避免無(wú)意義的注釋。(2)合理使用序言性注釋和功能性注釋。以下一段代碼是序言性注釋的例子:/*名稱(chēng):求平均值函數(shù)功能:計(jì)算數(shù)組的平均值輸入:score–

數(shù)組,元素類(lèi)型為float,代表分?jǐn)?shù)

n–

數(shù)組中元素的個(gè)數(shù)返回值:score數(shù)組中所有元素的平均值使用舉例:aver=average(score,n)作者:張**11/12/2008版本號(hào):1.1*/floataverage(score,n)

intn; floatscore[]; {

inti; floatscore[]; for(i=1;i<n;i++) sum=sum+socre[i]; aver=sum/n;

return(aver); }以下一段代碼是功能性注釋的例子:/*對(duì)每月銷(xiāo)售額求和*/TOTAL=AMOUNT+TOTAL(3)對(duì)函數(shù)、過(guò)程、方法、變量等合理命名,可增加代碼的可讀性,從而減少不必要的注釋。(4)注釋格式應(yīng)該盡量保持統(tǒng)一。5.2.4輸入/輸出

(1)對(duì)所有輸入數(shù)據(jù)都進(jìn)行檢驗(yàn),以保證每個(gè)數(shù)據(jù)的有效性。例如,某系統(tǒng)中身份證號(hào)字段的輸入,設(shè)計(jì)校驗(yàn)規(guī)則為:保證其不為空,并且由18位的純數(shù)字組成。(2)檢查輸入項(xiàng)重要組合的合法性。(3)保持輸入格式和輸入步驟的簡(jiǎn)單。(4)使用數(shù)據(jù)結(jié)構(gòu)標(biāo)記,不要要求用戶(hù)指定數(shù)據(jù)的數(shù)目。(5)明確提示交互式輸入的請(qǐng)求,詳細(xì)說(shuō)明可用的選擇或邊界數(shù)值。(6)當(dāng)程序設(shè)計(jì)語(yǔ)言的格式有嚴(yán)格要求時(shí),應(yīng)保持輸入格式一致。(7)設(shè)計(jì)良好的輸出報(bào)表。(8)給所有輸出數(shù)據(jù)加標(biāo)志。(9)當(dāng)程序設(shè)計(jì)語(yǔ)言對(duì)輸入/輸出格式有嚴(yán)格要求時(shí),應(yīng)保持輸入格式與輸入語(yǔ)句的要求一致。5.2.5程序結(jié)構(gòu)

程序結(jié)構(gòu)應(yīng)符合以下原則:(1)盡量避免使用復(fù)雜的條件測(cè)試。(2)盡量減少對(duì)“非”條件的測(cè)試。(3)避免過(guò)多使用循環(huán)嵌套和條件嵌套。(4)利用括號(hào)使邏輯表達(dá)式和算術(shù)表達(dá)式的運(yùn)算次序清晰、直觀。(5)盡可能使用庫(kù)函數(shù)。5.2.6效率和GOTO語(yǔ)句

1.效率一般來(lái)說(shuō),對(duì)效率的追求需要明確以下幾點(diǎn):(1)效率是一個(gè)性能要求,其目標(biāo)在需求分析階段就應(yīng)給出。(2)追求效率應(yīng)建立在不損害程序可讀性或可靠性的基礎(chǔ)上,要先使程序正確,再提高程序效率;先使程序清晰,再提高程序效率。(3)提高程序效率的根本途徑在于選擇良好的設(shè)計(jì)方法、良好的數(shù)據(jù)結(jié)構(gòu)算法。根據(jù)有關(guān)資料,以下原則對(duì)提高程序效率有一些幫助:(1)在編碼之前,先化簡(jiǎn)算術(shù)表達(dá)式和邏輯表達(dá)式。(2)特別注意嵌套的循環(huán),以確定是否有語(yǔ)句可以從循環(huán)內(nèi)層移到循環(huán)外層。(3)盡量避免使用多維數(shù)組和復(fù)雜的表格。(4)盡量使用執(zhí)行時(shí)間短的算術(shù)運(yùn)算。(5)盡量避免混合使用不同數(shù)據(jù)類(lèi)型的量。(6)盡量使用整型算術(shù)表達(dá)式和邏輯表達(dá)式。2.GOTO語(yǔ)句近年來(lái),關(guān)于“一切GOTO語(yǔ)句都是有害的”的論斷是否正確的爭(zhēng)論仍在繼續(xù),是否應(yīng)當(dāng)去掉GOTO語(yǔ)句還未有定論。因此,除非確實(shí)需要,否則最好不使用GOTO語(yǔ)句;確實(shí)需要GOTO語(yǔ)句時(shí),也要限制使用的范圍,特別要避免GOTO語(yǔ)句相互交叉的情況發(fā)生。5.3結(jié)構(gòu)化程序設(shè)計(jì)5.3.1結(jié)構(gòu)化程序設(shè)計(jì)的形成1968年,Dijskstra在《計(jì)算機(jī)通訊》上發(fā)表文章,提出了“結(jié)構(gòu)化程序設(shè)計(jì)”的思想。結(jié)構(gòu)化程序設(shè)計(jì)的基本思想是采用“自頂向下,逐步求精”的程序設(shè)計(jì)方法和“單入口單出口”的控制結(jié)構(gòu)。5.3.2

結(jié)構(gòu)化程序設(shè)計(jì)方法1.程序流程的基本結(jié)構(gòu)1)順序結(jié)構(gòu)語(yǔ)句形式如下:語(yǔ)句A語(yǔ)句B2)選擇結(jié)構(gòu)單分支結(jié)構(gòu)如圖4-8所示,相應(yīng)的語(yǔ)句形式如下:if(條件P)

語(yǔ)句Aelse

語(yǔ)句B多分支結(jié)構(gòu)如圖4-9所示,相應(yīng)的語(yǔ)句形式如下:switch(V){caseV1:語(yǔ)句A1caseV2:語(yǔ)句A2caseVn:語(yǔ)句An

……default:語(yǔ)句An+1}3)循環(huán)結(jié)構(gòu)while循環(huán)語(yǔ)句形式為:while(條件表達(dá)式P){

語(yǔ)句A}until循環(huán)語(yǔ)句形式為:do{

語(yǔ)句A}until(條件表達(dá)式P)2.自頂向下,逐步求精結(jié)構(gòu)化程序設(shè)計(jì)遵循的是自頂而下,逐步求精的設(shè)計(jì)方法。在分析一個(gè)問(wèn)題的編程思路時(shí),先將該問(wèn)題分成若干個(gè)大的步驟;然后對(duì)每一步驟再進(jìn)行細(xì)化,分成若干個(gè)小的步驟。這樣逐級(jí)劃分,直到最后能將每一個(gè)步驟直接翻譯成為相應(yīng)的計(jì)算機(jī)語(yǔ)言指令。5.4編程與程序員的基本素質(zhì)要成為一名合格的程序員,不僅

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論