關(guān)于我們
書單推薦
新書推薦
|
軟件工程基礎(chǔ)與應(yīng)用
本書第2版選擇學(xué)生廣為熟知的案例為導(dǎo)引, 系統(tǒng)地介紹軟件工程的基本概念、軟件生命周期、需求的獲取及可行性研究的內(nèi)容, 特別是結(jié)構(gòu)化方法、面向?qū)ο蠹夹g(shù)與UM建模等主流開發(fā)方法的基本原理、特點、一般工具及其在項目開發(fā)過程中的具體運用, 以及軟件測試的常用方法、項目管理的一般知識等。
序
軟件工程學(xué)科的發(fā)展有其歷史的必然。近半個世紀以來,隨著通信、計算機、網(wǎng)絡(luò)應(yīng)用的普及,作為其靈魂的軟件的開發(fā)顯得越來越重要。無數(shù)的反例證明,如果軟件產(chǎn)品的質(zhì)量達不到要求,帶來的損失是極其嚴重的。為保證或提高軟件產(chǎn)品的質(zhì)量,最關(guān)鍵的問題就是從技術(shù)和管理兩方面雙管齊下,使用得到實際考驗的一系列最佳軟件開發(fā)實踐,作為我們工作的指導(dǎo)原則,切實做好軟件開發(fā)的各項活動。 有人講,軟件工程課程學(xué)不學(xué)沒有用處。事實上是這樣嗎?絕對不是。我在給清華大學(xué)計算機系的工程碩士上軟件工程課的時候,他們說,他們上的所有課程中,這門課最有用。因為他們都是從事軟件開發(fā)多年的在職研究生,他們反映,多年來困惑他們的很多問題,從課程中都能找到對應(yīng)的解決方法。有時,看上去是一句普通的“原則”,在實踐上卻能解決大問題。所以,雖然課本中講了許多條條框框,其實都是有其實踐背景的。 還有人講,軟件工程這門課程太枯燥,聽不懂,做不會,學(xué)習起來提不起興趣。這就是學(xué)習方法問題了。軟件工程有一條主線,即軟件生命周期過程。它的特點是分階段、有迭代。 從軟件開發(fā)方法來看,不論是傳統(tǒng)的結(jié)構(gòu)化方法,還是面向?qū)ο蠓椒ǎ蛐碌拿嫦蚍⻊?wù)架構(gòu),它們都有各自的適用領(lǐng)域,有不同的視角、不同的活動組織方式和不同的架構(gòu)。 從軟件工程過程來看,最基本的是開發(fā)過程、運行過程和維護過程,此外還有各種支持過程和組織過程,它們?yōu)榛具^程提供輔助支持和各種保證。 從軟件工程管理來看,有整體管理,包括啟動、計劃、執(zhí)行、控制和收尾5大過程,此外,還要考慮需求、成本、進度、質(zhì)量、人員、溝通和風險等方面的管理活動。 如果我們明確了軟件工程的主要方面,就可以有目的、系統(tǒng)地進行課程的學(xué)習了。 總之,對于軟件工程,應(yīng)首先想到它是有用的,也可能將來工作后用不到操作系統(tǒng)原理、計算機原理等課程所講的內(nèi)容,但只要是從事軟件開發(fā),軟件工程就是回避不了的。其次,要有它不難學(xué)的思想。關(guān)鍵是對將來自己工作的領(lǐng)域要有規(guī)劃,找準方向,有針對性地學(xué)習。特別地,由于社會需求〖1〗軟件工程基礎(chǔ)與應(yīng)用(第2版)序[3]〖3〗是不斷變化的,軟件開發(fā)技術(shù)是不斷進步的,軟件開發(fā)工具是層出不窮的,我們不要一味追求新的,而應(yīng)該從最成熟、最可靠的技術(shù)和工具學(xué)起。在學(xué)校里打好基礎(chǔ),將來在工作中就很容易接受新東西。 馬小軍老師從事軟件工程的教學(xué)已經(jīng)20多年了,我與她的相識是在20世紀90年代初她聽我的軟件工程課的時候。她是一位對工作很認真的老師,在這么多年的教學(xué)中已經(jīng)積累了豐富的教學(xué)經(jīng)驗,并領(lǐng)導(dǎo)了許多軟件開發(fā)項目,從如何培養(yǎng)應(yīng)用型技術(shù)人才角度出發(fā),對軟件工程的教學(xué)體系、課程內(nèi)容選材和實踐活動組織等各方面都有很好的想法,這本教材的編寫就體現(xiàn)了她的教學(xué)思路和多年教學(xué)的體會,有理論,有案例,全書在內(nèi)容組織方面注重科學(xué)性和系統(tǒng)性,在行文敘述方面頗具簡潔性和可讀性。我推薦同學(xué)們認真閱讀,切實領(lǐng)會其實質(zhì),不斷進步。 清華大學(xué)計算機系教授殷人昆 2013年7月
第1章概述/1
1.1軟件的基本概念及特點1 1.1.1軟件是什么1 1.1.2軟件的分類3 1.1.3軟件的發(fā)展5 1.2軟件工程的提出6 1.2.1軟件工程提出的導(dǎo)火索6 1.2.2軟件工程的原理8 1.2.3軟件工程的目標9 1.3軟件開發(fā)方法10 1.3.1結(jié)構(gòu)化方法10 1.3.2原型化方法11 1.3.3面向?qū)ο蠓椒?2 1.3.4敏捷開發(fā)方法13 1.4軟件工程師的職業(yè)道德與素質(zhì)14 本章小結(jié)15 習題16 第2章軟件生存周期模型/17 2.1軟件生存周期及其組成17 2.1.1軟件生存周期的概念和提出的意義17 2.1.2軟件生存周期的劃分與組成18 2.2軟件開發(fā)模型19 2.2.1瀑布模型20 2.2.2快速原型模型21 2.2.3增量模型22 2.2.4螺旋模型22 2.2.5噴泉模型23 2.3常用軟件建模工具24 2.3.1Microsoft Visio24〖1〗軟件工程基礎(chǔ)與應(yīng)用(第2版)目錄[3]〖3〗2.3.2Rational Rose27 本章小結(jié)28 習題29 第3章用戶需求調(diào)研與可行性分析/30 3.1用戶需求調(diào)研30 3.1.1關(guān)于需求30 3.1.2用戶需求調(diào)研的必要性30 3.1.3需求調(diào)研方法32 3.1.4調(diào)研內(nèi)容和步驟32 3.2業(yè)務(wù)描述35 3.2.1業(yè)務(wù)流程定義35 3.2.2業(yè)務(wù)流程圖36 3.3軟件項目可行性分析39 3.4成本/效益分析41 3.4.1軟件開發(fā)成本估算41 3.4.2軟件效益分析42 本章小結(jié)44 習題44 第4章基于結(jié)構(gòu)化方法的需求分析/45 4.1需求分析簡述45 4.1.1何為需求分析45 4.1.2需求分析的主要任務(wù)46 4.1.3需求分析的原則47 4.1.4需求分析方法的分類48 4.2結(jié)構(gòu)化分析48 4.2.1結(jié)構(gòu)化分析的特點和原則48 4.2.2結(jié)構(gòu)化分析的主要工具49 4.3數(shù)據(jù)流程圖的構(gòu)建50 4.3.1構(gòu)建數(shù)據(jù)流程圖的作用50 4.3.2數(shù)據(jù)流程圖的基本符號51 4.3.3構(gòu)建數(shù)據(jù)流程圖的步驟52 4.3.4構(gòu)建數(shù)據(jù)流程圖需要注意的問題53 4.4數(shù)據(jù)字典56 4.4.1構(gòu)建數(shù)據(jù)字典的意義和用途56 4.4.2數(shù)據(jù)字典的主要內(nèi)容56 4.4.3構(gòu)建數(shù)據(jù)字典使用的符號57 4.4.4數(shù)據(jù)字典舉例58 4.5結(jié)構(gòu)化分析建模綜合舉例58 4.5.1系統(tǒng)數(shù)據(jù)流程圖58 4.5.2系統(tǒng)數(shù)據(jù)字典61 本章小結(jié)64 習題64 第5章系統(tǒng)概要設(shè)計/66 5.1簡述66 5.1.1概要設(shè)計基本任務(wù)66 5.1.2概要設(shè)計基本方法67 5.2概要設(shè)計基本原理69 5.2.1模塊化69 5.2.2抽象70 5.2.3逐步求精70 5.2.4信息隱藏和局部化71 5.2.5模塊獨立性71 5.3結(jié)構(gòu)化系統(tǒng)設(shè)計74 5.3.1軟件結(jié)構(gòu)圖種形式74 5.3.2數(shù)據(jù)流程圖的分類75 5.3.3變換型設(shè)計76 5.3.4事務(wù)型設(shè)計77 5.4軟件結(jié)構(gòu)的其他描述工具——HIPO圖81 5.5軟件結(jié)構(gòu)的優(yōu)化準則83 5.6結(jié)構(gòu)化設(shè)計綜合舉例85 本章小結(jié)88 習題88 第6章詳細設(shè)計與編碼實現(xiàn)/90 6.1詳細設(shè)計的基本任務(wù)90 6.2詳細設(shè)計的常用工具90 6.2.1程序流程圖91 6.2.2盒圖92 6.2.3PAD圖93 6.2.4判定表與判定樹93 6.2.5過程設(shè)計語言的使用95 6.3人機界面的設(shè)計96 6.3.1人機界面一般風格97 6.3.2人機界面設(shè)計原則及相關(guān)問題99 6.3.3人機界面設(shè)計過程100 6.4詳細設(shè)計綜合舉例100 6.4.1人機界面100 6.4.2數(shù)據(jù)庫表設(shè)計101 6.4.3模塊設(shè)計103 6.5編碼實現(xiàn)106 6.5.1編碼工具介紹106 6.5.2編碼工具的選擇107 6.5.3編碼原則107 6.5.4編碼舉例108 本章小結(jié)111 習題112 第7章面向?qū)ο蠹夹g(shù)/113 7.1面向?qū)ο蟾攀?13 7.1.1面向?qū)ο筇岢龅谋尘?13 7.1.2面向?qū)ο蠓椒ê喗?14 7.1.3面向?qū)ο蠡靖拍?15 7.1.4面向?qū)ο蟮奶卣?18 7.2面向?qū)ο蠓治?19 7.2.1面向?qū)ο蠓治鋈蝿?wù)概述119 7.2.2面向?qū)ο蠓治瞿P?20 7.2.3面向?qū)ο蠓治鲞^程126 7.3面向?qū)ο笤O(shè)計128 7.3.1面向?qū)ο笤O(shè)計任務(wù)128 7.3.2面向?qū)ο笤O(shè)計與面向?qū)ο蠓治龅年P(guān)系129 7.3.3面向?qū)ο笤O(shè)計基本原則130 7.3.4面向?qū)ο笤O(shè)計模型132 7.3.5面向?qū)ο笤O(shè)計過程132 本章小結(jié)135 習題135 第8章UML建模/137 8.1UML概述137 8.1.1發(fā)展歷史137 8.1.2UML簡介138 8.1.3視圖138 8.1.4UML中的圖139 8.2用例模型的構(gòu)建140 8.2.1用例圖的模型元素141 8.2.2確定參與者142 8.2.3確定用例142 8.3靜態(tài)模型的構(gòu)建146 8.3.1類圖和對象圖146 8.3.2標識類的方法150 8.3.3包圖153 8.4動態(tài)模型的構(gòu)建156 8.4.1順序圖156 8.4.2協(xié)作圖157 8.4.3狀態(tài)圖和活動圖158 8.5物理體系結(jié)構(gòu)的構(gòu)建161 8.5.1組件圖161 8.5.2部署圖162 8.6綜合實例163 8.6.1系統(tǒng)分析163 8.6.2系統(tǒng)設(shè)計172 8.6.3物理結(jié)構(gòu)設(shè)計176 本章小結(jié)180 習題181 第9章測試與維護/183 9.1軟件測試簡介183 9.1.1測試定義183 9.1.2軟件測試的原則184 9.1.3軟件測試的對象185 9.2軟件測試模型185 9.2.1V模型185 9.2.2W模型186 9.3軟件測試的一般過程187 9.3.1測試需求分析階段187 9.3.2測試計劃階段187 9.3.3測試方案設(shè)計階段188 9.3.4測試用例實現(xiàn)階段188 9.3.5測試執(zhí)行階段188 9.3.6評價與關(guān)閉階段189 9.4軟件測試常用方法189 9.4.1黑盒測試與白盒測試189 9.4.2黑盒測試法189 9.4.3白盒測試法194 9.5面向?qū)ο鬁y試197 9.6軟件測試自動化與測試工具199 9.6.1軟件測試自動化199 9.6.2軟件測試工具200 9.7軟件調(diào)試201 9.7.1軟件調(diào)試基本概念201 9.7.2軟件測試和軟件調(diào)試的區(qū)別201 9.7.3軟件調(diào)試的步驟201 9.7.4軟件調(diào)試方法202 9.8軟件維護203 9.8.1軟件維護的定義203 9.8.2影響維護工作量的因素203 9.8.3軟件維護成本204 9.8.4軟件維護過程204 9.8.5軟件的可維護性與提高方法206 本章小結(jié)207 習題207 第10章軟件項目管理/209 10.1軟件規(guī)模估算209 10.1.1軟件規(guī)模估算概述209 10.1.2軟件規(guī)模估算常用方法210 10.2風險管理211 10.2.1軟件項目風險定義及管理重要性211 10.2.2風險識別212 10.2.3風險分析及量化212 10.2.4風險應(yīng)對計劃212 10.2.5風險監(jiān)控213 10.3人員組織213 10.3.1團隊管理概述213 10.3.2軟件項目組織計劃213 10.3.3項目組織形式214 10.3.4團隊的組建215 10.3.5團隊合作與溝通217 10.4進度管理217 10.4.1進度管理定義217 10.4.2進度管理過程217 10.4.3軟件項目任務(wù)分解218 10.4.4軟件項目進度計劃219 10.4.5進度控制223 10.5質(zhì)量管理224 10.5.1軟件質(zhì)量的定義224 10.5.2軟件質(zhì)量模型225 10.5.3軟件質(zhì)量保證226 10.5.4軟件質(zhì)量控制226 本章小結(jié)228 習題228 參考文獻/230
第5章系統(tǒng)概要設(shè)計需求分析中得到的系統(tǒng)分析模型解決了“系統(tǒng)必須做什么”的問題,而“系統(tǒng)怎么做”是由系統(tǒng)概要設(shè)計來完成的。概要設(shè)計的基本目的就是回答“系統(tǒng)應(yīng)該如何實現(xiàn)?”這個問題。通過這個階段的工作將劃分出組成系統(tǒng)的物理元素: 模塊、文件、數(shù)據(jù)庫等等,但是每個物理元素仍然為“黑盒子”——即內(nèi)部結(jié)構(gòu)是不可見、不明確的。概要設(shè)計階段的另一項重要任務(wù)是設(shè)計軟件的結(jié)構(gòu),也就是要確定系統(tǒng)中每個程序是由哪些模塊組成的,以及這些模塊相互間的關(guān)系。
本章主要介紹系統(tǒng)概要設(shè)計的任務(wù)、基本原理、概要設(shè)計的基本方法以及軟件結(jié)構(gòu)的描述工具。 本章要點: 概要設(shè)計的基本任務(wù); 概要設(shè)計基本原理; 內(nèi)聚和耦合; 結(jié)構(gòu)化設(shè)計: 軟件結(jié)構(gòu)圖、變換型和事務(wù)型設(shè)計; 軟件結(jié)構(gòu)的優(yōu)化。 5.1簡述 我們知道,軟件設(shè)計是把一個軟件需求轉(zhuǎn)換為軟件表示的過程,而概要設(shè)計(又稱結(jié)構(gòu)設(shè)計)就是軟件設(shè)計最初形成的一個表示(這里的表示是一個名詞),它描述了軟件總的體系結(jié)構(gòu)。簡單地說,軟件概要設(shè)計就是設(shè)計出軟件的總體結(jié)構(gòu)框架。 5.1.1概要設(shè)計基本任務(wù) 軟件概要設(shè)計階段要完成的任務(wù)主要體現(xiàn)在這樣4個方面: 軟件結(jié)構(gòu)設(shè)計、數(shù)據(jù)結(jié)構(gòu)及數(shù)據(jù)庫設(shè)計、編寫概要設(shè)計文檔、設(shè)計評審。 1. 軟件結(jié)構(gòu)設(shè)計 在需求分析階段,采用結(jié)構(gòu)化技術(shù)已經(jīng)通過抽象確定出軟件系統(tǒng)的功能,并按自頂向下分層描述的方法構(gòu)建出功能模型——數(shù)據(jù)流程圖,而在概要設(shè)計階段,需要進一步分解,將邏輯功能轉(zhuǎn)化為功能模塊,并按層次體現(xiàn)模塊間的結(jié)構(gòu)。具體過程如下: (1) 采用某種設(shè)計方法,將一個復(fù)雜的系統(tǒng)按功能劃分成模塊。所謂模塊就是可獨立存在、有唯一的命名且可直接訪問的程序單元,每個模塊完成一個相對獨立的功能,通常具有功能、邏輯、接口和狀態(tài)等4個基本屬性。 (2) 確定每個模塊的功能。 (3) 確定模塊之間的調(diào)用關(guān)系。 (4) 軟件工程基礎(chǔ)與應(yīng)用(第2版)第5章系統(tǒng)概要設(shè)計[3]〖3〗(4) 確定模塊之間的接口,即模塊之間傳遞的信息。 (5) 評價模塊結(jié)構(gòu)的質(zhì)量。 2. 數(shù)據(jù)結(jié)構(gòu)及數(shù)據(jù)庫設(shè)計 對于大型數(shù)據(jù)處理的軟件系統(tǒng),數(shù)據(jù)是系統(tǒng)的核心內(nèi)容和處理對象,對數(shù)據(jù)進行準確定義和描述是系統(tǒng)概要設(shè)計的重要工作,其中包括數(shù)據(jù)結(jié)構(gòu)及數(shù)據(jù)庫設(shè)計兩方面的內(nèi)容。 (1) 數(shù)據(jù)結(jié)構(gòu)的設(shè)計。逐步細化的方法也適用于數(shù)據(jù)結(jié)構(gòu)的設(shè)計。在需求分析階段,已通過數(shù)據(jù)字典對數(shù)據(jù)的組成、操作約束、數(shù)據(jù)之間的關(guān)系等方面進行了描述,確定了數(shù)據(jù)的結(jié)構(gòu)特性,在概要設(shè)計階段要進一步細化。 (2) 數(shù)據(jù)庫的設(shè)計。數(shù)據(jù)庫的設(shè)計指數(shù)據(jù)存儲文件的設(shè)計,主要進行以下幾方面設(shè)計: 邏輯設(shè)計。在ER模型的基礎(chǔ)上,結(jié)合具體的DBMS特征來建立數(shù)據(jù)庫的邏輯結(jié)構(gòu)。對于關(guān)系型的DBMS來說,將概念結(jié)構(gòu)轉(zhuǎn)換為數(shù)據(jù)庫表結(jié)構(gòu),要給出數(shù)據(jù)庫表結(jié)構(gòu)的定義,即定義所含的數(shù)據(jù)項、類型、長度及它們之間的層次或相互關(guān)系的表格等。 物理設(shè)計。物理設(shè)計就是設(shè)計數(shù)據(jù)模式的物理細節(jié),如數(shù)據(jù)項存儲要求、存取方式、索引的建立等。 3. 編寫概要設(shè)計文檔 按照軟件工程的理念和生存周期的要求,在概要設(shè)計結(jié)束之前,需要編寫概要設(shè)計文檔,為后期軟件實現(xiàn)、修改和升級打下基礎(chǔ),同時也為用戶使用提供幫助。在概要設(shè)計階段,主要有以下文檔需要編寫: (1) 概要設(shè)計說明書。 (2) 數(shù)據(jù)庫設(shè)計說明書。 (3) 用戶手冊。 (4) 測試計劃的修訂版。 4. 評審 概要設(shè)計的最后一個任務(wù)就是評審,在概要設(shè)計中,對設(shè)計部分是否完整地實現(xiàn)了需求中規(guī)定的功能和性能要求、設(shè)計方案的可行性、關(guān)鍵的處理和內(nèi)外部接口定義正確性與有效性以及各部分之間的一致性等都要進行評審,以免在后續(xù)設(shè)計實現(xiàn)中出現(xiàn)大的問題而返工。 以上就是軟件概要設(shè)計的4個基本任務(wù),可以用8個字總結(jié)概括: 兩類結(jié)構(gòu),文檔評審。 5.1.2概要設(shè)計基本方法 軟件概要設(shè)計的方法主要有結(jié)構(gòu)化設(shè)計、面向?qū)ο蟮脑O(shè)計和面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計。本節(jié)主要介紹這幾種廣泛使用的概要設(shè)計方法。 1. 結(jié)構(gòu)化設(shè)計方法 結(jié)構(gòu)化設(shè)計方法是基于模塊化、自頂向下細化、結(jié)構(gòu)化程序設(shè)計等技術(shù)思想的基礎(chǔ)上發(fā)展起來的。結(jié)構(gòu)化設(shè)計方法給出一組幫助設(shè)計人員在模塊層次上區(qū)分設(shè)計質(zhì)量的原理與技術(shù),與結(jié)構(gòu)化分析方法銜接起來使用,以數(shù)據(jù)流程圖為基礎(chǔ)導(dǎo)出軟件的模塊結(jié)構(gòu)。在設(shè)計過程中,它從整個軟件的結(jié)構(gòu)出發(fā),利用軟件結(jié)構(gòu)圖表述模塊之間的調(diào)用關(guān)系。 結(jié)構(gòu)化設(shè)計的步驟如下: (1) 評審和細化數(shù)據(jù)流程圖。 (2) 分析并確定數(shù)據(jù)流程圖的類型。 (3) 基于上層數(shù)據(jù)流程圖映射出軟件模塊結(jié)構(gòu)的上層框架。 (4) 基于下層數(shù)據(jù)流程圖逐步分解高層模塊,設(shè)計中下層模塊結(jié)構(gòu)。 (5) 對模塊結(jié)構(gòu)進行優(yōu)化,得到更為合理的軟件結(jié)構(gòu)。 (6) 描述模塊接口。 2. 面向?qū)ο笤O(shè)計方法 面向?qū)ο笤O(shè)計方法是面向?qū)ο蠹夹g(shù)中的一個環(huán)節(jié),是對面向?qū)ο蠓治龅哪P瓦M行完善設(shè)計。面向?qū)ο蠓治龇椒ㄊ前褑栴}當作一組相互作用的實體,并確定實體間的關(guān)系。而面向?qū)ο笤O(shè)計更多地關(guān)心對象間的協(xié)作。 面向?qū)ο笤O(shè)計的主要作用是對分析模型進行整理,生成設(shè)計模型,為面向?qū)ο缶幊烫峁╅_發(fā)依據(jù)。面向?qū)ο笤O(shè)計內(nèi)容包括架構(gòu)設(shè)計、用例設(shè)計、子系統(tǒng)設(shè)計和類設(shè)計等。其中,架構(gòu)設(shè)計的重點在于系統(tǒng)的體系框架的合理性,保證系統(tǒng)架構(gòu)在系統(tǒng)的各個非功能性需求中保持一種平衡;子系統(tǒng)設(shè)計一般是采用縱向切割,關(guān)注的是系統(tǒng)的功能劃分;類設(shè)計是通過一組對象交互展示系統(tǒng)的邏輯實現(xiàn)。具體論述詳見7.3節(jié)。 3. Jackson設(shè)計方法 該方法由M.A.Jackson提出,其特點是從目標系統(tǒng)的輸入、輸出數(shù)據(jù)結(jié)構(gòu)入手,導(dǎo)出程序框架結(jié)構(gòu),再補充其他細節(jié),即能夠得到完整的程序結(jié)構(gòu)圖。這一方法對輸入、輸出數(shù)據(jù)結(jié)構(gòu)明確的中小型系統(tǒng)特別有效,如商業(yè)應(yīng)用中的文件表格處理。該方法也可與其他方法結(jié)合,用于模塊的詳細設(shè)計。 Jackson方法有時也稱為面向數(shù)據(jù)結(jié)構(gòu)的軟件設(shè)計方法。該方法一般通過以下5個步驟來完成設(shè)計: (1) 分析并確定輸入數(shù)據(jù)和輸出數(shù)據(jù)的邏輯結(jié)構(gòu),并用Jackson結(jié)構(gòu)圖來表示這些數(shù)據(jù)結(jié)構(gòu)。 (2) 找出輸入數(shù)據(jù)結(jié)構(gòu)和輸出數(shù)據(jù)結(jié)構(gòu)中有對應(yīng)關(guān)系的數(shù)據(jù)單元。 (3) 按以下的規(guī)則由輸入、輸出的數(shù)據(jù)結(jié)構(gòu)導(dǎo)出程序結(jié)構(gòu)。 為每一對在輸入數(shù)據(jù)結(jié)構(gòu)和輸出數(shù)據(jù)結(jié)構(gòu)中有對應(yīng)關(guān)系的單元畫一個處理框。 為輸入和輸出數(shù)據(jù)結(jié)構(gòu)中剩余的數(shù)據(jù)單元畫一個處理框。所有處理框在程序結(jié)構(gòu)圖上的位置,應(yīng)與由它處理的數(shù)據(jù)單元在數(shù)據(jù)結(jié)構(gòu)Jackson圖上的位置一致。必要時,可以對映射導(dǎo)出的程序結(jié)構(gòu)圖進行進一步的細化。 (4) 列出對每一對輸入、輸出數(shù)據(jù)結(jié)構(gòu)所做的基本操作以及操作的條件,并把它們分配到程序結(jié)構(gòu)圖的適當位置。 (5) 用偽碼寫出每個處理框的算法。 5.2概要設(shè)計基本原理 本節(jié)講述在軟件設(shè)計過程中應(yīng)該遵循的基本原理和相關(guān)概念。 5.2.1模塊化 如前所述已知,模塊是具有特定功能且可以獨立存在的單元,對后期編碼而言,就是程序代碼和數(shù)據(jù)結(jié)構(gòu)的集合體。按照模塊的定義,過程、函數(shù)、子程序和宏等都可視為模塊。面向?qū)ο蠓椒▽W(xué)中的類是模塊,類內(nèi)的方法(或稱為服務(wù))也可以是模塊。模塊是構(gòu)成軟件的基本單元。 模塊化就是把一個大的軟件系統(tǒng)劃分為多個模塊的過程,其中的每個模塊完成一個簡單功能,把這些模塊集成起來構(gòu)成一個軟件系統(tǒng),可以滿足用戶的需求,完成指定的功能。 如果一個軟件系統(tǒng)僅設(shè)計為由一個模塊組成,它的復(fù)雜性將增加,很難被人理解,也不可能做到全面考慮。所以,在軟件設(shè)計時一般要將一個大的系統(tǒng)基于模塊化進行分解,降低軟件開發(fā)的復(fù)雜度。根據(jù)人類解決問題的一般規(guī)律,模塊越復(fù)雜,開發(fā)的難度也越大。具體理由論述如下。 ……
你還可能感興趣
我要評論
|