本書以項目為載體,以任務(wù)驅(qū)動的方式介紹軟件開發(fā)中各階段所需的知識、技術(shù)、方法、工具、開發(fā)過程,直至項目完成。
本書圍繞軟件開發(fā)能力的培養(yǎng)組織內(nèi)容,全書共8章,內(nèi)容如下:第1章,介紹軟件、軟件開發(fā)、軟件項目管理等相關(guān)概念,重點介紹軟件開發(fā)中容易混淆的一些概念并為后續(xù)學(xué)習(xí)做知識準備;第2和第3章,介紹傳統(tǒng)的軟件開發(fā)方法,適合軟件開發(fā)初學(xué)者學(xué)習(xí);第4和第5章,介紹面向?qū)ο蟮拈_發(fā)方法,利于讀者掌握目前流行的面向?qū)ο筌浖_發(fā)方法與工具;第6章,介紹軟件的實現(xiàn),包括編碼與測試,只有通過測試的軟件,其編碼才能告一段落;第7章,介紹軟件的維護;第8章,介紹本書軟件項目完整的開發(fā)過程,可作為軟件設(shè)計文檔范本。
第1章 軟件開發(fā)與管理概述 (1)
1.1 軟件與軟件開發(fā)概述 (1)
1.1.1 程序、軟件與系統(tǒng) (1)
1.1.2 軟件開發(fā)的特征 (3)
1.2 軟件開發(fā) (5)
1.2.1 軟件開發(fā)過程 (5)
1.2.2 軟件開發(fā)方法學(xué)和軟件工程 (9)
1.3 軟件項目管理內(nèi)容 (10)
1.3.1 軟件項目管理 (11)
1.3.2 軟件質(zhì)量管理 (13)
1.3.3 軟件過程質(zhì)量保證體系 (15)
小結(jié) (17)
習(xí)題 (18)
實訓(xùn):制定某項目進度計劃 (19)
第2章 進行需求分析了解用戶需求 (20) 第1章 軟件開發(fā)與管理概述 (1)
1.1 軟件與軟件開發(fā)概述 (1)
1.1.1 程序、軟件與系統(tǒng) (1)
1.1.2 軟件開發(fā)的特征 (3)
1.2 軟件開發(fā) (5)
1.2.1 軟件開發(fā)過程 (5)
1.2.2 軟件開發(fā)方法學(xué)和軟件工程 (9)
1.3 軟件項目管理內(nèi)容 (10)
1.3.1 軟件項目管理 (11)
1.3.2 軟件質(zhì)量管理 (13)
1.3.3 軟件過程質(zhì)量保證體系 (15)
小結(jié) (17)
習(xí)題 (18)
實訓(xùn):制定某項目進度計劃 (19)
第2章 進行需求分析了解用戶需求 (20)
2.1 軟件需求概述 (20)
2.1.1 需求分析任務(wù) (21)
2.1.2 需求分析過程 (21)
2.1.3 需求管理 (23)
2.1.4 軟件需求分析從問題定義開始 (24)
2.2 需求分析方法與分析模型 (25)
2.2.1 需求分析與建模方法 (25)
2.2.2 需求分析模型 (25)
2.3 用傳統(tǒng)方法建立系統(tǒng)數(shù)據(jù)模型 (26)
2.3.1 數(shù)據(jù)模型(E-R圖)的建立 (26)
2.3.2 E-R圖簡述 (29)
2.3.3 數(shù)據(jù)字典 (30)
2.4 用傳統(tǒng)方法建立系統(tǒng)功能模型 (30)
2.4.1 系統(tǒng)功能模型(數(shù)據(jù)流圖)的建立 (31)
2.4.2 數(shù)據(jù)流圖簡述 (31)
2.4.3 功能模型簡述 (32)
2.4.4 功能模型的文字描述 (33)
2.5 建立系統(tǒng)動態(tài)模型 (33)
2.6 需求說明書及書寫重點 (35)
小結(jié) (36)
習(xí)題 (36)
實訓(xùn):對“學(xué)生管理系統(tǒng)”進行需求分析與建模 (37)
第3章 基于需求分析進行軟件設(shè)計 (40)
3.1 軟件設(shè)計 (40)
3.1.1 軟件設(shè)計概述 (40)
3.1.2 軟件設(shè)計與編碼 (42)
3.1.3 軟件設(shè)計的內(nèi)容 (43)
3.2 項目設(shè)計案例 (44)
3.2.1 從E-R模型進行數(shù)據(jù)庫設(shè)計 (44)
3.2.2 概要設(shè)計(軟件結(jié)構(gòu)設(shè)計) (45)
3.3 軟件模塊的詳細設(shè)計 (48)
3.3.1 詳細設(shè)計的任務(wù) (49)
3.3.2 詳細設(shè)計的工具 (49)
3.4 軟件設(shè)計原則 (54)
3.4.1 模塊與模塊獨立性 (54)
3.4.2 模塊的耦合性 (55)
3.4.3 模塊的內(nèi)聚性 (55)
3.4.4 模塊的規(guī)模、大小適中原則 (56)
3.4.5 信息隱藏和局部化的原則 (57)
3.4.6 抽象性的原則 (57)
3.5 軟件設(shè)計說明書 (58)
3.5.1 軟件概要設(shè)計說明書大綱 (58)
3.5.2 軟件詳細設(shè)計說明書大綱 (58)
小結(jié) (59)
習(xí)題 (59)
實訓(xùn)一:對“學(xué)生管理系統(tǒng)”進行軟件概要設(shè)計 (60)
實訓(xùn)二:對“學(xué)生管理系統(tǒng)”進行詳細設(shè)計 (61)
第4章 用對象的觀點與方法進行分析建模 (64)
4.1 概述 (64)
4.2 從業(yè)務(wù)描述出發(fā)建立系統(tǒng)的用例模型 (65)
4.2.1 建立系統(tǒng)用例模型 (66)
4.2.2 確定系統(tǒng)的用例 (67)
4.2.3 用例之間的關(guān)系 (68)
4.2.4 描述用例 (69)
4.3 從用例的交互中識別實體建立對象模型 (71)
4.3.1 識別類與對象 (71)
4.3.2 確定類的屬性 (73)
4.3.3 確定類之間的聯(lián)系 (73)
4.4 類與類之間的“關(guān)系” (74)
4.4.1 關(guān)聯(lián)關(guān)系 (74)
4.4.2 泛化關(guān)系 (75)
4.4.3 依賴和細化關(guān)系 (76)
4.4.4 確定關(guān)聯(lián) (77)
4.5 從用例的交互中識別交互細節(jié)建立動態(tài)模型 (77)
4.5.1 建立順序圖 (78)
4.5.2 通過順序圖描述實體間的動態(tài)行為 (79)
4.5.3 通過順序圖等動態(tài)模型分析與確定類的行為 (79)
小結(jié) (81)
習(xí)題 (81)
實訓(xùn):用面向?qū)ο蟮姆椒ㄟM行需求分析與建模 (81)
第5章 用面向?qū)ο蟮挠^點和方法設(shè)計軟件 (84)
5.1 面向?qū)ο筌浖O(shè)計概述 (84)
5.1.1 包圖 (85)
5.1.2 數(shù)據(jù)庫設(shè)計 (85)
5.1.3 軟件架構(gòu)和類兩個層面的設(shè)計 (85)
5.2 高層軟件體系結(jié)構(gòu)設(shè)計 (86)
5.2.1 軟件體系結(jié)構(gòu)設(shè)計概況 (86)
5.2.2 軟件體系結(jié)構(gòu)設(shè)計內(nèi)容 (86)
5.3 底層類的設(shè)計 (87)
5.3.1 系統(tǒng)各部件類的設(shè)計及其層次 (87)
5.3.2 業(yè)務(wù)領(lǐng)域類的設(shè)計 (88)
5.3.3 類設(shè)計 (89)
5.3.4 使用MVC設(shè)計模式 (90)
5.4 面向?qū)ο筌浖_發(fā)過程及最佳做法 (91)
小結(jié) (93)
習(xí)題 (93)
實訓(xùn):用面向?qū)ο蟮姆椒ㄟM行軟件設(shè)計 (93)
第6章 按照軟件設(shè)計進行編程實現(xiàn)并測試 (95)
6.1 軟件編碼概述 (95)
6.1.1 從軟件設(shè)計過渡到軟件編碼 (95)
6.1.2 程序設(shè)計方法 (96)
6.1.3 常見計算機程序設(shè)計語言 (97)
6.1.4 常用軟件開發(fā)工具 (100)
6.1.5 選擇計算機程序設(shè)計語言并建立軟件開發(fā)環(huán)境 (102)
6.1.6 制定程序編碼規(guī)范 (102)
6.1.7 制定編程的過程標準 (103)
6.2 程序編碼過程 (104)
6.2.1 迭代、增量的開發(fā)過程 (104)
6.2.2 選擇某種MVC開發(fā)模式的工具編碼 (104)
6.2.3 通過迭代開發(fā)直至滿足用戶需求 (105)
6.3 按照用戶需求和軟件設(shè)計測試軟件 (106)
6.3.1 軟件測試概述 (106)
6.3.2 軟件測試階段 (108)
6.3.3 軟件測試用例設(shè)計案例 (110)
小結(jié) (116)
習(xí)題 (116)
實訓(xùn):對“學(xué)生管理系統(tǒng)”進行實現(xiàn)并測試 (117)
第7章 通過軟件維護不斷滿足用戶的需求 (118)
7.1 軟件維護概述 (118)
7.1.1 軟件維護原因 (118)
7.1.2 軟件維護類型 (119)
7.1.3 軟件維護中的常見問題 (120)
7.1.4 軟件維護策略 (120)
7.2 軟件維護的過程 (121)
7.2.1 維護組織 (122)
7.2.2 維護報告 (122)
7.2.3 維護過程 (122)
7.2.4 維護記錄 (123)
7.2.5 維護評價 (124)
7.3 提高軟件的可維護性 (124)
7.3.1 軟件的可維護性 (124)
7.3.2 軟件可維護性的量化 (124)
7.3.3 提高可維護性的方法 (125)
7.3.4 軟件維護的副作用 (126)
7.4 軟件維護相關(guān)文檔 (126)
7.4.1 軟件問題報告 (127)
7.4.2 軟件維護申請報告 (127)
7.4.3 軟件維護報告 (129)
7.4.4 軟件用戶意見反饋及滿意度調(diào)查 (129)
7.5 實施軟件維護 (130)
7.5.1 維護機構(gòu) (130)
7.5.2 維護流程 (131)
7.5.3 維護評價 (131)
7.5.4 維護成本 (132)
小結(jié) (132)
習(xí)題 (132)
實訓(xùn):設(shè)計一套結(jié)構(gòu)化維護過程及文檔格式 (133)
第8章 物流系統(tǒng)開發(fā)分析與設(shè)計案例 (134)
8.1 引言 (134)
8.2 項目概述 (135)
8.3 需求分析 (135)
8.3.1 業(yè)務(wù)描述 (135)
8.3.2 用例建模 (135)
8.3.3 用例交互實體建模——對象模型(實體類圖) (136)
8.3.4 功能分析 (137)
8.3.5 交互細節(jié)的建模—動態(tài)模型 (138)
8.4 軟件設(shè)計 (138)
8.4.1 功能模塊設(shè)計 (138)
8.4.2 軟件架構(gòu)設(shè)計(基于JavaEE) (139)
8.4.3 實體類的設(shè)計 (141)
8.4.4 數(shù)據(jù)庫設(shè)計 (141)
8.5 軟件模塊設(shè)計與實現(xiàn) (144)
8.5.1 送貨員信息管理模塊 (144)
8.5.2 接單管理模塊 (146)
8.5.3 接送貨管理模塊 (147)
8.5.4 倉儲與分揀管理模塊 (148)
8.5.5 結(jié)算管理模塊 (152)
小結(jié) (153)
附錄A 計算機軟件開發(fā)文件編制指南(GB/T8567—1988) (154)
附錄B UML簡介 (171)
術(shù)語表 (173)
參考文獻 (174)
教育部十六號文件《關(guān)于全面提高高等職業(yè)教育教學(xué)質(zhì)量的若干意見》明確指出要“加強素質(zhì)教育,增強學(xué)生的職業(yè)能力,加大課程建設(shè)與改革的力度”。本書嘗試摒棄傳統(tǒng)軟件工程的學(xué)科性教學(xué),圍繞軟件開發(fā)需要的職業(yè)能力培養(yǎng),組織與設(shè)計教學(xué)內(nèi)容。
傳統(tǒng)的軟件教學(xué)重點在知識與技術(shù)教學(xué),其不足主要表現(xiàn)在:概念與理論知識多、力求知識理論體系的完善;軟件開發(fā)技術(shù)、方法的教學(xué)針對性不強;每個軟件開發(fā)階段在過渡時技術(shù)上顯得脫節(jié);教學(xué)內(nèi)容對程序編碼的指導(dǎo)作用不明顯等。所以,學(xué)生難以理解與領(lǐng)悟其中的內(nèi)容,特別在實際操作上難以做到學(xué)以致用。另外,軟件開發(fā)與管理模式靈活多樣,知識體系龐大,要完整掌握難度大。
針對上述問題,筆者在進行教學(xué)內(nèi)容設(shè)計時,分析高職學(xué)生的特點,以軟件開發(fā)專業(yè)人才應(yīng)知應(yīng)會的知識、能力作為培養(yǎng)目標,并圍繞這些目標進行教學(xué)內(nèi)容的設(shè)計。本書教學(xué)內(nèi)容的設(shè)計具有以下特點:
內(nèi)容的取舍以實用為原則,為職業(yè)能力培養(yǎng)目標服務(wù)。
以軟件開發(fā)過程典型工作任務(wù)為重點,力爭在技術(shù)上連貫。
教學(xué)情境的設(shè)計深入淺出,以任務(wù)驅(qū)動的形式組織教學(xué),使學(xué)生容易消化。
加強各階段教學(xué)內(nèi)容在技術(shù)層面的銜接,突出了軟件設(shè)計到編碼技術(shù)上的過渡。
內(nèi)容組織中,體現(xiàn)了“項目導(dǎo)向、任務(wù)驅(qū)動”的教學(xué)。突出展現(xiàn)了軟件開發(fā)引導(dǎo)案例的技術(shù)連貫及其實現(xiàn),再通過它突出體現(xiàn)軟件開發(fā)的重要理論知識。
整個教學(xué)內(nèi)容以一個項目(物流系統(tǒng))為載體,將軟件開發(fā)的理論、方法、工具、開發(fā)過程等融為一體。最后一章還提供這些案例的完整文檔,讓讀者(特別是軟件專業(yè)的學(xué)生)能掌握軟件開發(fā)報告的編寫。
軟件開發(fā)過程主要有需求分析、軟件設(shè)計、編碼與測試、軟件維護等活動,它們構(gòu)成了軟件開發(fā)過程的主要任務(wù)階段。但是這些活動之間的組織不是簡單線性的,它們之間的組織關(guān)系非常靈活,有多種經(jīng)典模式。這就是為什么這些內(nèi)容在實際開發(fā)中難以被掌握的原因。
軟件開發(fā)各重要階段的教學(xué),就是本課程的教學(xué)重點內(nèi)容,其實它們又是教學(xué)難點內(nèi)容。這些教學(xué)內(nèi)容及它們在技術(shù)層面的過渡往往被以前的教材忽略,或連貫性不強。本書以項目為導(dǎo)向,通過任務(wù)驅(qū)動組織這些內(nèi)容,從而解決了上述重點與難點的教學(xué)內(nèi)容及銜接問題。
另外,本書的組織利于軟件開發(fā)人員的學(xué)習(xí)。比如第1~3章,目的是培養(yǎng)學(xué)生了解軟件開發(fā)過程,讓初學(xué)者知道軟件是如何開發(fā)的,使學(xué)生掌握軟件編碼前的一些概念,并掌握傳統(tǒng)需求分析、軟件設(shè)計的過程與基本方法。而后續(xù)第4、5章是面向?qū)ο蟮姆椒ǎ瑢W(xué)生在已學(xué)習(xí)需求分析和軟件設(shè)計的基礎(chǔ)上,采用流行的面向?qū)ο蟮姆椒ㄟM行需求、設(shè)計與建模,并體現(xiàn)了面向?qū)ο蟮脑O(shè)計向面向?qū)ο缶幋a技術(shù)上的過渡。第6章介紹了軟件的編碼與實現(xiàn),在軟件的編碼過程中,測試非常重要,只有通過測試才能得到實用軟件。第7章介紹了軟件使用中的維護。第8章則通過一個軟件開發(fā)案例,綜合應(yīng)用前面介紹的面向?qū)ο筌浖_發(fā)方法,介紹軟件開發(fā)的過程及文檔的編寫。
本書條理清晰、內(nèi)容實用、技術(shù)連貫;書中內(nèi)容的表述力爭做到深入淺出,使易混淆的概念、方法等容易被理解與掌握。本書內(nèi)容的過渡在技術(shù)上連貫,體現(xiàn)了“項目導(dǎo)向、任務(wù)驅(qū)動”的教學(xué),利于培養(yǎng)學(xué)生的軟件開發(fā)能力。本書內(nèi)容有助于軟件開發(fā)其他課程的學(xué)習(xí)與借鑒。
本書由廣東科學(xué)技術(shù)職業(yè)學(xué)院的牛德雄、龍立功擔(dān)任主編,其中,第1章、第4章、第5章由牛德雄、龍立功編寫;第2章、第3章由楊葉芬編寫;第6章由熊君麗編寫;第7章由扶卿妮編寫;第8章由牛德雄、施茂航編寫。另外,魏云柯設(shè)計了本書所用到的圖,移動中心數(shù)學(xué)企業(yè)頂峰公司參與了教材內(nèi)容的設(shè)計。在此一并表示感謝。
為了方便教師教學(xué),本書配有電子教學(xué)課件及相關(guān)資源,請有此需要的教師登錄華信教育資源網(wǎng)(www.hxedu.com.cn)免費注冊后下載,如有問題,可在網(wǎng)站留言板留言或與電子工業(yè)出版社聯(lián)系(E-mail:hxedu@phei.com.cn)。
目前,國內(nèi)外關(guān)于軟件工程、軟件開發(fā)與管理方面的資料非常多,新理論、新技術(shù)層出不窮。如何更好地取舍與組織適合高職學(xué)生教學(xué)的內(nèi)容需要不斷探索。由于時間倉促,書中難免存在疏漏和不足,懇請同行專家和讀者能給予批評和指正。
編 者