SE1101-lecture11_軟件實(shí)現(xiàn)40_第1頁(yè)
SE1101-lecture11_軟件實(shí)現(xiàn)40_第2頁(yè)
SE1101-lecture11_軟件實(shí)現(xiàn)40_第3頁(yè)
SE1101-lecture11_軟件實(shí)現(xiàn)40_第4頁(yè)
SE1101-lecture11_軟件實(shí)現(xiàn)40_第5頁(yè)
已閱讀5頁(yè),還剩61頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第8章 軟件實(shí)現(xiàn),本章導(dǎo)讀: 從宏觀上講,軟件實(shí)現(xiàn)包括詳細(xì)設(shè)計(jì)、編程實(shí)現(xiàn)、單元測(cè)試和集成測(cè)試。從微觀上講,軟件實(shí)現(xiàn)是指編程和單元測(cè)試。 本章只講IT企業(yè)的編程實(shí)現(xiàn)方法,包括軟件實(shí)現(xiàn)概論、實(shí)現(xiàn)原則、編程語(yǔ)言、編碼技術(shù)、界面設(shè)計(jì)、幫助信息、軟件實(shí)現(xiàn)管理,以及用戶指南書寫的參考指南。由于程序設(shè)計(jì)語(yǔ)言發(fā)展很快,尤其是面向?qū)ο笳Z(yǔ)言和數(shù)據(jù)庫(kù)語(yǔ)言功能強(qiáng)大,以及類庫(kù)、構(gòu)件庫(kù)、中間件和業(yè)務(wù)基礎(chǔ)平臺(tái)的出現(xiàn),使得編程工作的效率大大提高。,1,本章對(duì)讀者的要求,要求了解: (1)函數(shù)的實(shí)現(xiàn)及函數(shù)庫(kù)的管理概念 (2)存儲(chǔ)過程的實(shí)現(xiàn)及存儲(chǔ)過程庫(kù)的管理概念 (3)類的實(shí)現(xiàn)及類庫(kù)的管理概念 (4)構(gòu)件的實(shí)現(xiàn)及構(gòu)件庫(kù)的管理概念

2、 (5)中間件的實(shí)現(xiàn)及中間件的管理概念,2,要求理解: (1)軟件實(shí)現(xiàn)的輸入與輸出 (2) 軟件實(shí)現(xiàn)原則 (3) 軟件實(shí)現(xiàn)管理 (4) 編碼技術(shù) (5) 編碼風(fēng)格、編程規(guī)范、界面設(shè)計(jì) (6) 幫助和提示信息,3,要求掌握: (1)用戶使用手冊(cè)的編寫方法 (2)用戶安裝手冊(cè)的編寫方法 對(duì)軟件開發(fā)人員的希望: 作為一名軟件開發(fā)人員,若能熟練地掌握J(rèn)2EE和.Net兩個(gè)開發(fā)平臺(tái),那么他就是一名軟件實(shí)現(xiàn)高手,只要他努力工作,就能在軟件行業(yè)做出優(yōu)秀的成績(jī),在社會(huì)上獲得豐厚的回報(bào)。,4,8.1 軟件實(shí)現(xiàn)概論,軟件實(shí)現(xiàn)的輸入是詳細(xì)設(shè)計(jì)說(shuō)明書,輸出是源程序、目標(biāo)程序及用戶指南。 根據(jù)“五個(gè)面向理論”,編程實(shí)現(xiàn)

3、的主要方法是“面向?qū)ο髮?shí)現(xiàn)”。 因?yàn)楝F(xiàn)在流行的編程語(yǔ)言,基本上都是面向?qū)ο蟮恼Z(yǔ)言,如Delphi,Visual Basic,C+,C#,Java等。所以軟件實(shí)現(xiàn),主要的方法都是“面向?qū)ο髮?shí)現(xiàn)”。,5,宏觀上講,“面向?qū)ο髮?shí)現(xiàn)”的目標(biāo)是:按照詳細(xì)設(shè)計(jì)說(shuō)明書的要求,從公司的函數(shù)庫(kù)、存儲(chǔ)過程庫(kù)、類庫(kù)、構(gòu)件庫(kù)、中間件庫(kù)中挑選有關(guān)的部件,遵照軟件公司的程序設(shè)計(jì)規(guī)范,按照詳細(xì)設(shè)計(jì)說(shuō)明書中對(duì)數(shù)據(jù)結(jié)構(gòu)、算法分析和模塊實(shí)現(xiàn)等方面的設(shè)計(jì)說(shuō)明,用面向?qū)ο蟮恼Z(yǔ)言,通過穿針引線的方法,將這些部件組裝起來(lái),分別實(shí)現(xiàn)各模塊的功能,從而實(shí)現(xiàn)目標(biāo)系統(tǒng)的功能、性能、接口、界面等要求。,6,微觀上講,軟件實(shí)現(xiàn)是指通過編碼、調(diào)試、單

4、元測(cè)試、集成測(cè)試等活動(dòng)創(chuàng)建軟件產(chǎn)品的過程。 軟件實(shí)現(xiàn)與軟件設(shè)計(jì)、軟件測(cè)試密不可分。軟件設(shè)計(jì)為軟件實(shí)現(xiàn)提供輸入,軟件實(shí)現(xiàn)的輸出是軟件測(cè)試的輸入。盡管軟件設(shè)計(jì)和軟件測(cè)試是獨(dú)立的過程,但軟件實(shí)現(xiàn)本身也涉及到設(shè)計(jì)和測(cè)試工作,它們之間的界限視具體項(xiàng)目而定。 軟件實(shí)現(xiàn)還會(huì)產(chǎn)生大量的軟件配置項(xiàng),例如,源文件、測(cè)試用例等,因此軟件實(shí)現(xiàn)過程還涉及配置管理,如圖8-2所示。,7,軟件實(shí)現(xiàn)示意圖,8,實(shí)現(xiàn)過程是不可缺少的,需求分析和軟件設(shè)計(jì)是為了更有效地軟件實(shí)現(xiàn),軟件測(cè)試是為了保證軟件實(shí)現(xiàn)的正確性,因此,軟件實(shí)現(xiàn)成為軟件工程的核心任務(wù)之一。 軟件實(shí)現(xiàn)在開發(fā)過程中占據(jù)很大的比例,根據(jù)項(xiàng)目性質(zhì)的不同,大約占30%80%

5、之間。一般而言,軟件企業(yè)越大越正規(guī),軟件實(shí)現(xiàn)的比重就越輕。反之,軟件實(shí)現(xiàn)的比重就越重。 只有軟件實(shí)現(xiàn)是軟件工程中唯一不可缺少的步驟。因?yàn)椋河袀€(gè)別特殊項(xiàng)目可能不經(jīng)過需求分析和設(shè)計(jì)就直接進(jìn)入編碼實(shí)現(xiàn)階段,有個(gè)別特殊項(xiàng)目會(huì)省略掉測(cè)試,但無(wú)論如何,實(shí)現(xiàn)過程是不可缺少的。,9,設(shè)計(jì)與實(shí)現(xiàn)有時(shí)是迭代進(jìn)行的,由于軟件設(shè)計(jì)過程可能貫穿于整個(gè)開發(fā)過程,因此,有時(shí)不應(yīng)將它看作一個(gè)獨(dú)立的階段。對(duì)某些小型的項(xiàng)目,設(shè)計(jì)過程通常在實(shí)現(xiàn)時(shí)完成;對(duì)某些大型的項(xiàng)目,會(huì)明確地劃分架構(gòu)設(shè)計(jì)和詳細(xì)設(shè)計(jì)兩個(gè)階段,即使如此,有些詳細(xì)設(shè)計(jì)工作仍會(huì)留在實(shí)現(xiàn)階段完成。這就是迭代模型產(chǎn)生的背景之一。 大型軟件企業(yè)在軟件實(shí)現(xiàn)工作中,還需要管理好如

6、下問題:,10,1. 建立公司的軟件開發(fā)財(cái)富庫(kù),新增函數(shù)的實(shí)現(xiàn)及函數(shù)庫(kù)的管理,新增存儲(chǔ)過程的實(shí)現(xiàn)及存儲(chǔ)過程庫(kù)的管理,新增類的實(shí)現(xiàn)及類庫(kù)的管理,新增構(gòu)件的實(shí)現(xiàn)及構(gòu)件庫(kù)的管理,新增中間件的實(shí)現(xiàn)及中間件的管理。這些庫(kù)統(tǒng)稱為開發(fā)財(cái)富庫(kù)。 如果讀者所在的軟件組織處在初創(chuàng)時(shí)期,函數(shù)庫(kù)、類庫(kù)、構(gòu)件庫(kù)都是空白,那么就只能利用面向?qū)ο笳Z(yǔ)言自帶的函數(shù)和基礎(chǔ)類庫(kù),從頭創(chuàng)業(yè),一邊對(duì)系統(tǒng)進(jìn)行編程實(shí)現(xiàn),一邊在實(shí)踐中積累函數(shù)、類和構(gòu)件,逐步建立自己的函數(shù)庫(kù)、類庫(kù)和構(gòu)件庫(kù),為日后的開發(fā)準(zhǔn)備財(cái)富。,11,2. 構(gòu)件的實(shí)現(xiàn)及構(gòu)件庫(kù)的管理,【定義8-1】所謂構(gòu)件(Component),就是被標(biāo)識(shí)的、且可被復(fù)用的軟件制品 (Arte

7、face)。 構(gòu)件與部件、組件基本上是一個(gè)意思,有時(shí)會(huì)認(rèn)為部件和組件的粒度比構(gòu)件大一些或范圍廣一些。 上述定義有三個(gè)特點(diǎn): 第一、構(gòu)件要被明確標(biāo)識(shí),即有一個(gè)被調(diào)用的名字; 第二、構(gòu)件應(yīng)該可復(fù)用,不可復(fù)用的只能稱做模塊或子系統(tǒng); 第三、構(gòu)件是軟件制品,在宏觀上軟件制品可以是項(xiàng)目計(jì)劃、成本估計(jì)、體系構(gòu)架、需求模型、設(shè)計(jì)模型、程序代碼、窗口界面、文檔、數(shù)據(jù)結(jié)構(gòu)、測(cè)試用例等。,12,構(gòu)件的實(shí)現(xiàn)及構(gòu)件庫(kù)的管理(續(xù)),微觀上的構(gòu)件,通常是指程序代碼級(jí)的構(gòu)件。這種構(gòu)件在技術(shù)上的三個(gè)流派:Sun的Java平臺(tái)、Microsoft的COM+平臺(tái)、IBM的CORBA平臺(tái)。構(gòu)件具有接口標(biāo)準(zhǔn)、通信協(xié)議、同步和異步操作

8、。 構(gòu)件有兩種級(jí)別: (1). 可執(zhí)行文件級(jí)別上的構(gòu)件,它是已通過編譯的構(gòu)件,因而與語(yǔ)言無(wú)關(guān)。 (2). 源代碼級(jí)別上的構(gòu)件,實(shí)際上只是構(gòu)件模板,可以用多種語(yǔ)言實(shí)現(xiàn),當(dāng)然與語(yǔ)言有關(guān)。,13,構(gòu)件的實(shí)現(xiàn)及構(gòu)件庫(kù)的管理(續(xù)),大型軟件企業(yè)內(nèi)部有構(gòu)件庫(kù)。構(gòu)件庫(kù)是組織管理構(gòu)件的倉(cāng)庫(kù),程序員必須知道新增構(gòu)件的實(shí)現(xiàn)及構(gòu)件庫(kù)的管理,它是軟件實(shí)現(xiàn)的重要內(nèi)容。 構(gòu)件庫(kù)管理系統(tǒng)的功能:構(gòu)件的分類、入庫(kù)、檢索、瀏覽與存儲(chǔ),對(duì)不再使用的構(gòu)件進(jìn)行刪除,對(duì)構(gòu)件使用情況的統(tǒng)計(jì)與評(píng)價(jià)。,14,3中間件的實(shí)現(xiàn)及中間件的管理,中間件是一個(gè)非常大的組件,一般在網(wǎng)絡(luò)上運(yùn)行,完成批量數(shù)據(jù)的傳遞和通信工作,調(diào)用方式是通過一組事先約定的格

9、式與參數(shù)進(jìn)行的。 常見的中間件為文件傳輸中間件,如IBM公司的消息隊(duì)列中間件MQ(Message Queue),在網(wǎng)絡(luò)節(jié)點(diǎn)之間進(jìn)行點(diǎn)對(duì)點(diǎn)的數(shù)據(jù)通信和傳輸。又如城市醫(yī)療保險(xiǎn)系統(tǒng)中的中間件,它在市醫(yī)保局節(jié)點(diǎn)和全市各家醫(yī)院節(jié)點(diǎn)之間,進(jìn)行點(diǎn)對(duì)點(diǎn)的數(shù)據(jù)通信和傳輸,病號(hào)每次劃價(jià)計(jì)費(fèi),節(jié)點(diǎn)之間就交換一次信息。 在詳細(xì)設(shè)計(jì)說(shuō)明書中,已對(duì)新增中間件的功能和算法進(jìn)行了詳述,此處只要將詳細(xì)設(shè)計(jì)翻譯為源程序即可。,15,4程序設(shè)計(jì)風(fēng)格與編程規(guī)范的管理,為了提高編程實(shí)現(xiàn)的質(zhì)量,不僅需要有良好的程序設(shè)計(jì)風(fēng)格,而且需要大家一致遵守的編程規(guī)范。 程序設(shè)計(jì)風(fēng)格的內(nèi)容包括:規(guī)范化的程序內(nèi)部文檔、數(shù)據(jù)結(jié)構(gòu)的詳細(xì)說(shuō)明、清晰的語(yǔ)句層次

10、結(jié)構(gòu)、遵守某一編程規(guī)范。 編程規(guī)范的內(nèi)容包括:命名規(guī)范、界面規(guī)范、提示及幫助信息規(guī)范、熱鍵定義等。,16,8.2 軟件實(shí)現(xiàn)原則,(1) 盡量簡(jiǎn)單 在軟件實(shí)現(xiàn)過程中,應(yīng)創(chuàng)建簡(jiǎn)單、易讀的代碼。相同功能的代碼只寫一次。 (2) 易于驗(yàn)證。 無(wú)論是在編碼、測(cè)試還是實(shí)際操作中,應(yīng)該很容易地發(fā)現(xiàn)其中的錯(cuò)誤。自動(dòng)化的單元測(cè)試可幫助產(chǎn)生易于驗(yàn)證的代碼。 (3) 適應(yīng)變化。 外部環(huán)境、軟件需求和軟件設(shè)計(jì),在整個(gè)開發(fā)過程中可能會(huì)隨時(shí)變化,因此要求軟件實(shí)現(xiàn)時(shí)考慮適應(yīng)這些變化。 (4)遵守某一編程規(guī)范。 (5)選擇項(xiàng)目組成員最熟悉的工具或語(yǔ)言。,17,*8.3 編程語(yǔ)言,編程語(yǔ)言可分為三類: 1語(yǔ)言符號(hào) 使用文本來(lái)構(gòu)

11、建軟件。這些文本遵循一定的語(yǔ)法規(guī)則,并提供相應(yīng)的語(yǔ)義,使用者可以直觀地理解軟件將完成的工作。如HTML、XML等標(biāo)記語(yǔ)言。 2形式化符號(hào) 采用精確的、形式化定義的符號(hào)來(lái)構(gòu)建軟件。形式化符號(hào)和形式化方法是系統(tǒng)級(jí)編程的重要形式。如Pascal語(yǔ)言。 3可視化符號(hào) 采用可視化的部件來(lái)構(gòu)建軟件,通常用于界面元素的編程。如Visual Basic語(yǔ)言。,18,編程語(yǔ)言(續(xù)),(1) Java Java是一種面向?qū)ο蟮木幊陶Z(yǔ)言,語(yǔ)法結(jié)構(gòu)與C+類似。Java在虛擬機(jī)上運(yùn)行,通過為不同的平臺(tái)提供虛擬機(jī),實(shí)現(xiàn)了Java跨平臺(tái)的特性。Java被廣泛用于應(yīng)用服務(wù)器端程序和移動(dòng)設(shè)備程序中。 (2) C C既具有高級(jí)語(yǔ)

12、言的特征,又具有低級(jí)語(yǔ)言的功能,被廣泛應(yīng)用于系統(tǒng)軟件,嵌入式應(yīng)用軟件。 (3) C+ 在C基礎(chǔ)上發(fā)展起來(lái)的一種面向?qū)ο蟮恼Z(yǔ)言,C+提供了類,多態(tài),異常處理,模板,標(biāo)準(zhǔn)類庫(kù)等。,19,編程語(yǔ)言(續(xù)),(5) Visual Basic Visual Basic是一種面向?qū)ο蟆⒖梢暬木幊陶Z(yǔ)言,用于開發(fā)Windows桌面應(yīng)用程序和Web應(yīng)用程序。 (7) C# C#語(yǔ)法與Java類似,是.Net平臺(tái)上編程語(yǔ)言。 (10) Delphi Delphi是一種強(qiáng)類型的高級(jí)編譯語(yǔ)言,支持面向過程、面向數(shù)據(jù)和面向?qū)ο蟮娜N開發(fā)方法。Delphi源自Pascal,提供了大量的快速應(yīng)用程序開發(fā)組件。主要用于數(shù)據(jù)庫(kù)

13、應(yīng)用程序開發(fā)。,20,*8.4 編碼技術(shù),1. 編碼標(biāo)準(zhǔn) 遵循規(guī)范化的源代碼布局和命名規(guī)范,可以創(chuàng)建可讀性好,易于理解的代碼。 大型軟件企業(yè)都有一套開發(fā)標(biāo)準(zhǔn)、編碼標(biāo)準(zhǔn)、界面標(biāo)準(zhǔn),在全企業(yè)內(nèi)推廣應(yīng)用,形成自已的企業(yè)文化。新員工必須嚴(yán)格遵守,迅速適應(yīng)。,21,編碼技術(shù)(續(xù)),2代碼布局 代碼的布局不影響程序的執(zhí)行速度、內(nèi)存使用,以及對(duì)用戶可見的屬性。 代碼布局應(yīng)遵循的基本原則:代碼布局能夠正確地反映程序的邏輯結(jié)構(gòu)。 好的代碼布局能加強(qiáng)程序的可讀性。可讀性好的代碼,更易于理解,易于維護(hù),可以減少修改、調(diào)試以及審查的工作量。 通常,程序員通過縮排和空格表示程序內(nèi)部的邏輯。又稱鋸齒形程序布局。,22,編

14、碼技術(shù)(續(xù)),3實(shí)體命名 代碼中存在大量的實(shí)體名,如變量名、方法名、類名、接口名、包名等。好的命名可以提高代碼的可讀性。 在對(duì)一個(gè)實(shí)體進(jìn)行命名時(shí),最重要的一點(diǎn),是名稱能夠準(zhǔn)確地反映實(shí)體的本質(zhì)。先使用一句話來(lái)描述實(shí)體所代表的事物,然后抽取一個(gè)或幾個(gè)單詞作為實(shí)體的名稱。 研究表明,命名長(zhǎng)度在10到16個(gè)字符之間,調(diào)試代碼所需的工作量最少,過長(zhǎng)或過短的命名不易于代碼的理解。,23,3實(shí)體命名(續(xù)),實(shí)體命名可遵循的規(guī)則: (1)類名和對(duì)象:在Java和C+中,通常類名的首字母大寫,對(duì)象名的首字母小寫。 (2)全局變量:加上統(tǒng)一的前綴,例如,表示所有在線人數(shù)可以使用g_totalOnline。 (3)

15、成員變量:在類的成員變量前添加統(tǒng)計(jì)的前綴,例如_或m_,這樣可以很容易地區(qū)分成員變量和局部變量。 (4)常量:在Java和C+中,通常以全部大寫的單詞表示常量,單詞間以下劃線分隔。例如MAX_VALUE表示最大值。,24,編碼技術(shù)(續(xù)),4錯(cuò)誤處理 程序執(zhí)行過程中,可能出現(xiàn)可預(yù)測(cè)和不可預(yù)測(cè)的錯(cuò)誤,錯(cuò)誤處理方式將影響到軟件的正確性、穩(wěn)定性以及其它的非功能屬性??梢圆扇∫韵麓胧┻M(jìn)行處理: (1)返回一個(gè)中性值:當(dāng)錯(cuò)誤發(fā)生時(shí),程序繼續(xù)執(zhí)行,返回一個(gè)中性的值。例如,數(shù)值計(jì)算返回0;字符串操作返回空字符串。 (2)返回下一個(gè)有效值:當(dāng)一次操作失敗后,執(zhí)行下一次操作。例如,從網(wǎng)絡(luò)中讀取數(shù)據(jù)失敗后,取下一個(gè)

16、有效值。 (3)返回前一個(gè)有效值:當(dāng)一次操作失敗時(shí),返回上一次成功操作的值。例如,從網(wǎng)絡(luò)中讀取數(shù)據(jù)失敗時(shí),返回上一次讀到的有效值。,25,4錯(cuò)誤處理(續(xù)),(4)返回最相近的有效值:例如,一個(gè)方法計(jì)算應(yīng)返回一個(gè)非負(fù)數(shù),如果計(jì)算值小于0,則返回0。 (5)記錄日志:當(dāng)錯(cuò)誤發(fā)生時(shí),記錄日志文件,并繼續(xù)執(zhí)行。 (6)返回錯(cuò)誤代碼:返回錯(cuò)誤代碼,指示錯(cuò)誤發(fā)生的原因,調(diào)用者可根據(jù)錯(cuò)誤代碼進(jìn)行錯(cuò)誤處理。 (7)調(diào)用錯(cuò)誤處理函數(shù):用錯(cuò)誤處理函數(shù)來(lái)統(tǒng)一地進(jìn)行錯(cuò)誤處理,這樣做的好處是可以集中地對(duì)錯(cuò)誤進(jìn)行管理。 (8)顯示錯(cuò)誤信息:當(dāng)錯(cuò)誤發(fā)生時(shí),向用戶提示錯(cuò)誤信息。例如,用戶錄入了非法數(shù)據(jù)時(shí),向用戶提示正確的輸入

17、格式。 (9)退出程序:這種方式對(duì)一些安全性要求較高的程序比較適合,防止繼續(xù)操作可能帶來(lái)的破壞。,26,編碼技術(shù)(續(xù)),5代碼重構(gòu) 代碼重構(gòu)是軟件進(jìn)化的重要手段,需要重構(gòu)的例子有: (1)重復(fù)代碼:重復(fù)的代碼需要你做重復(fù)的修改,即要修改一個(gè)地方,就要平行地修改其它地方。 (2)函數(shù)過長(zhǎng):在面向?qū)ο蟮木幊讨?,很少需要超過一屏的函數(shù)。出現(xiàn)這種情況,暗示著你使用了過程化編程方式,來(lái)進(jìn)行面向?qū)ο蟮木幊獭?(3)循環(huán)過長(zhǎng):過長(zhǎng)的循環(huán)體最好變成獨(dú)立的函數(shù),可有效地降低循環(huán)的復(fù)雜度。 (4)內(nèi)聚性差:如果你發(fā)現(xiàn)一類是一些不相關(guān)的責(zé)任的集合,這個(gè)類應(yīng)該分解成多個(gè)類,每個(gè)類負(fù)責(zé)一個(gè)邏輯相關(guān)的責(zé)任集合。 (5)參

18、數(shù)過多:好的函數(shù)通常比較簡(jiǎn)短,不應(yīng)有過多的參數(shù)。過多的參數(shù)通常表示方法沒有很好地抽象。,27,編碼技術(shù)(續(xù)),6成對(duì)編程 成對(duì)編程的定義:當(dāng)進(jìn)行成對(duì)編程時(shí),一個(gè)程序員輸入代碼,另一個(gè)在旁邊觀察代碼中是否存在錯(cuò)誤,并思考下一步要進(jìn)行的工作。 成對(duì)編程的優(yōu)點(diǎn): (1) 可以提高代碼的可讀性和可理解性,產(chǎn)生高質(zhì)量的代碼。 (2) 提高編程效率,使編程速度更快,代碼錯(cuò)誤更少。后期測(cè)試和糾錯(cuò)的工作量就大大降低。 (3) 成對(duì)編程可以提高開發(fā)團(tuán)隊(duì)的凝聚力和協(xié)作精神。,28,*8.5 軟件實(shí)現(xiàn)管理,1過程模型 這里講的過程模型,是指軟件開發(fā)模型。過程模型從其規(guī)范程度可分為兩大類,重量級(jí)開發(fā)模型和輕量級(jí)的敏捷

19、開發(fā)模型。不同的軟件開發(fā)模型,對(duì)軟件實(shí)現(xiàn)的重視程度不同。 (1)對(duì)于瀑布模型和RUP模型等重量級(jí)開發(fā)模型,實(shí)現(xiàn)階段必須在前期工作(需求分析、架構(gòu)設(shè)計(jì)、詳細(xì)設(shè)計(jì))的基礎(chǔ)上才能進(jìn)行。 (2)對(duì)于敏捷開發(fā)過程等輕量級(jí)開發(fā)模型,實(shí)現(xiàn)階段趨向于和其它的軟件開發(fā)活動(dòng)(需求、設(shè)計(jì)、測(cè)試)同步執(zhí)行。敏捷開發(fā)過程傾向于將編碼、設(shè)計(jì)、測(cè)試混合在一起構(gòu)成實(shí)現(xiàn)活動(dòng)。,29,軟件實(shí)現(xiàn)管理(續(xù)),2開發(fā)計(jì)劃 影響開發(fā)計(jì)劃的因素是: (1)過程模型影響開發(fā)計(jì)劃。不同的開發(fā)模型,有不同的開發(fā)計(jì)劃。因?yàn)椋洪_發(fā)計(jì)劃定義了系統(tǒng)部件創(chuàng)建和集成的順序、質(zhì)量管理過程和開發(fā)任務(wù)分配等。 (2)項(xiàng)目大小也影響開發(fā)計(jì)劃。估計(jì)項(xiàng)目大小和所需要的

20、工作量,是開發(fā)計(jì)劃和軟件項(xiàng)目管理中最具挑戰(zhàn)性的問題。準(zhǔn)確估計(jì)是保證軟件項(xiàng)目按質(zhì)、按量、按時(shí)完成的重要因素。 那么,如果開發(fā)計(jì)劃出現(xiàn)延期,怎么辦呢?,30,出現(xiàn)延期的處理方式,(1)增加開發(fā)人員。行不行?不行!因?yàn)椋合蛞粋€(gè)延期的項(xiàng)目添加人員,無(wú)異于火上澆油。 (2)減少項(xiàng)目?jī)?nèi)容。行不行?行!因?yàn)椋簻p少項(xiàng)目的內(nèi)容可以防止項(xiàng)目繼續(xù)延期。怎樣減少呢?在項(xiàng)目初期,應(yīng)當(dāng)標(biāo)識(shí)項(xiàng)目特征的優(yōu)先級(jí)。優(yōu)先級(jí)可以為“必須具有”、“最好具有”和“可選項(xiàng)”。這樣,如果項(xiàng)目延期了,就可以按優(yōu)先級(jí)來(lái)縮減項(xiàng)目?jī)?nèi)容。 (3)有什么辦法使項(xiàng)目不延期呢?有!這就是二八定律。要將二八規(guī)律作為制定開發(fā)計(jì)劃的座右銘,落實(shí)到工作量估計(jì)、進(jìn)度

21、估計(jì)和其他資源估計(jì)上去。,31,軟件實(shí)現(xiàn)管理(續(xù)),3實(shí)現(xiàn)度量 常見的度量包括如下五個(gè)方面: (1) 程序大小 代碼行數(shù) 注釋行數(shù) 類或函數(shù)的數(shù)量 數(shù)據(jù)聲明的數(shù)量 (2) 缺陷跟蹤 缺陷情況(嚴(yán)重程度、位置、來(lái)源、修正方式、修正人、影響代碼行數(shù)、花費(fèi)工時(shí)) 發(fā)現(xiàn)缺陷的平均時(shí)間 修正缺陷的平均時(shí)間 修正缺陷引入新錯(cuò)誤數(shù)量,32,實(shí)現(xiàn)度量(續(xù)),(3) 生產(chǎn)力 項(xiàng)目總工時(shí) 每個(gè)類或函數(shù)的工時(shí) 項(xiàng)目花費(fèi) 每行代碼花費(fèi) 每個(gè)缺陷花費(fèi) (4) 整體質(zhì)量 缺陷總數(shù)量 每個(gè)類或函數(shù)的缺陷數(shù)量 每千行代碼的缺陷數(shù)量,33,實(shí)現(xiàn)度量(續(xù)),(5) 可維護(hù)性 每個(gè)類公共數(shù)據(jù)、公共方法、私有數(shù)據(jù)、私有方法、代碼行、

22、注釋行的數(shù)量。 每個(gè)方法的參數(shù)、局部變量、調(diào)用其它方法、決策點(diǎn)、代碼行、注釋行的數(shù)量。 以上五個(gè)方面的度量數(shù)據(jù),都是存入軟件公司的測(cè)量數(shù)據(jù)庫(kù),作為公司軟件管理的財(cái)富。,34,8.6 屏幕界面設(shè)計(jì),屏幕界面上看得見的窗口、畫面、圖像、按鈕等對(duì)象,在設(shè)計(jì)與實(shí)現(xiàn)中,統(tǒng)稱為“控件”。構(gòu)件分為可視構(gòu)件和非可視構(gòu)件兩種,控件是一種可視構(gòu)件。上述控件的有機(jī)排列和組合,就構(gòu)成了用戶需求的各種屏幕界面。 屏幕界面設(shè)計(jì)包括三個(gè)級(jí)別: (1) 控件級(jí)設(shè)計(jì) (2) 窗口級(jí)設(shè)計(jì) (3) 系統(tǒng)級(jí)設(shè)計(jì) 屏幕界面設(shè)計(jì)原則是:界面簡(jiǎn)潔樸素,控件擺放整齊,顏色風(fēng)格統(tǒng)一,照顧客戶習(xí)慣。,35,8.8 軟件實(shí)現(xiàn)文檔,1實(shí)現(xiàn)文檔的組成

23、 軟件實(shí)現(xiàn)文檔由源程序清單和用戶指南組成。由于面向?qū)ο蟮恼Z(yǔ)言與面向過程的語(yǔ)言有所不同,所以完整的源程序清單有時(shí)打印不出來(lái),往往只能打印出部分源程序清單。一般的做法是:不打印出源程序清單,只保留其電子版本。 用戶指南主要包括用戶使用手冊(cè)和用戶安裝手冊(cè) 。 在特殊情況下,例如,數(shù)據(jù)庫(kù)服務(wù)器上的存儲(chǔ)管理、數(shù)據(jù)維護(hù)、數(shù)據(jù)備份、數(shù)據(jù)傳輸?shù)葐栴}較復(fù)雜時(shí),在用戶指南中還要增加系統(tǒng)管理員手冊(cè)的內(nèi)容。,36,軟件實(shí)現(xiàn)文檔(續(xù)),2用戶指南的編寫要求 (1)統(tǒng)一采用編寫工具Word2003進(jìn)行編寫。 (2)用統(tǒng)一的風(fēng)格和確定的方法,描述產(chǎn)品提供的所有功能。描述之后的功能,應(yīng)該具有如下特點(diǎn):對(duì)于每一項(xiàng)功能的描述應(yīng)該

24、完整。 (3)術(shù)語(yǔ)部分包括系統(tǒng)術(shù)語(yǔ)和基本概念。系統(tǒng)術(shù)語(yǔ)在整個(gè)系統(tǒng)的含義是統(tǒng)一的,放在前言部分描述?;靖拍钤诟饔嘘P(guān)章節(jié)進(jìn)行描述。 (4)語(yǔ)言要簡(jiǎn)潔明快,表達(dá)準(zhǔn)確。一句話不要太長(zhǎng),中間可以斷句幾次。 (5)指南格式應(yīng)統(tǒng)一。,37,軟件實(shí)現(xiàn)文檔(續(xù)),3用戶指南的排版建議 (1)2人以上合作編寫,一定要有一人負(fù)責(zé)統(tǒng)稿。 (2)交稿前一定要最后一次仔細(xì)審讀。 (3)圖以章為序,如圖5.1或圖5-1(半字線連接章號(hào)和圖號(hào)),圖的標(biāo)題在圖的下方。 (4)表以章為序,如表3.1或表3-2,表的標(biāo)題在表的上方。 (5)命令格式。操作步驟中使用的命令按鈕、菜單命令項(xiàng)、標(biāo)簽項(xiàng)等名稱用【】界定。如:打開【開始】菜

25、單選擇【程序】項(xiàng) (6)例題格式。例題以章為序,并用【】界定。如【例3.5】或【例3-5】。,38,用戶指南的排版建議(續(xù)),(7)交稿前一定要最后一次仔細(xì)審讀,盡量減少不應(yīng)有的文字錄入錯(cuò)誤,并做到5個(gè)銜接、6個(gè)統(tǒng)一、7個(gè)對(duì)應(yīng): 5個(gè)銜接是:章節(jié)號(hào)、表序號(hào)、圖序號(hào)、公式號(hào)、頁(yè)碼號(hào)要連續(xù)銜接,不重、不漏。 6個(gè)統(tǒng)一是:格式、層次、名詞術(shù)語(yǔ)、符號(hào)、代號(hào)、計(jì)量單位要統(tǒng)一、一致。 7個(gè)對(duì)應(yīng)是:目錄與正文標(biāo)題、標(biāo)題與內(nèi)容、正文與插圖、正文與表格、圖中代號(hào)與圖注、前后內(nèi)容要對(duì)應(yīng),避免重復(fù)和矛盾。 (8)嚴(yán)禁用Word 2003自動(dòng)格式生成章節(jié)標(biāo)題或序號(hào)。,39,軟件實(shí)現(xiàn)文檔(續(xù)),4用戶指南的編寫原則 (

26、1)列出應(yīng)編制文檔的目錄。 (2)提示編制文檔應(yīng)參考的標(biāo)準(zhǔn)。 (3)指定文檔管理員。 (4)提供編制文檔所需要的條件,落實(shí)文檔編寫人員、主管和所需經(jīng)費(fèi)以及編制工具等。 (5)明確保證文檔質(zhì)量的方法,為了確保文檔內(nèi)容的正確性、合理性,應(yīng)采取一定的措施,如評(píng)審、審稿、鑒定等。 (6)繪制進(jìn)度表,以圖表形式列出各階段應(yīng)產(chǎn)生的文檔、編制人員、編制主管、編制日期、完成日期、評(píng)審日期等。,40,軟件實(shí)現(xiàn)文檔(續(xù)),5用戶指南的審核鑒定 為了保證文檔的質(zhì)量以及文檔內(nèi)容的正確性、合理性,軟件工程管理部門應(yīng)對(duì)用戶指南進(jìn)行評(píng)審和鑒定工作,提出改進(jìn)意見,有利于整個(gè)文檔質(zhì)量的提高。 6軟件實(shí)現(xiàn)管理文檔 軟件實(shí)現(xiàn)管理文

27、檔包括用戶指南評(píng)審報(bào)告,模塊源程序行統(tǒng)計(jì)表(行/模塊名),源程序工作量統(tǒng)計(jì)表(行/人天)。這些管理文檔均較簡(jiǎn)單,作為習(xí)題,由讀者自己完成。,41,例:考勤卡系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn),考勤卡系統(tǒng)的設(shè)計(jì)工作分為四個(gè)部分: TimecardDomain包和TimecardWorkflow包 這兩個(gè)包依賴于相同的技術(shù),并且緊密耦合,放在一起進(jìn)行設(shè)計(jì) TimecardUI包 HtmlProduction框架 唯一生成HTML頁(yè)面的包。TimecardUI使用它,并應(yīng)當(dāng)促進(jìn)其發(fā)展,獨(dú)立于TimecardUI BillingSystemInterface子系統(tǒng) 該包是一個(gè)獨(dú)立的工作,可以并發(fā)或者有空余開發(fā)資源時(shí)開發(fā)

28、,42,回憶:Record Time用例需求,1、正常事件流(分析模型) 參與者請(qǐng)求當(dāng)前條目,Record TimeUI對(duì)象調(diào)用Record TimeWorkflow對(duì)象的getEntries方法,指向User對(duì)象的引用。有了User對(duì)象,Record TimeWorkflow對(duì)象向它要求當(dāng)前的Timecard對(duì)象。然后Record Timeworkflow對(duì)象能夠向Timecard對(duì)象要求它的所有條目,并將它們返回給RecordTimeUI。在Employee參與者完成對(duì)時(shí)間條目的更新后,Record Time UI對(duì)象使用Record Timeworkflow對(duì)象上的updateEntri

29、es方法將更新傳播到整個(gè)系統(tǒng)。Record TimeWorkflow對(duì)象調(diào)用先前存儲(chǔ)的指向Timecard對(duì)象的引用上的setEntries方法。,-43-,回憶:RecordTime用例的類,-44-,回憶:Record Time用例時(shí)序圖,-45-,回憶:Record Time時(shí)序圖,2、提交考勤卡(分析模型),-46-,RecordTime用例設(shè)計(jì),正常事件流 開始:參與者請(qǐng)求條目。 RecordTimeServrlet對(duì)象向RecordTimeWorkflow的home接口要求指向RecordTimeworkflow會(huì)話bean的遠(yuǎn)程引用。 然后RecordTimeServlet能夠向

30、RecordTimeWorkflow會(huì)話bean請(qǐng)求當(dāng)前考勤卡。 RecordTimeWorkflow以數(shù)據(jù)傳輸對(duì)象的形式返回考勤卡信息。第一次信息請(qǐng)求要求RecordTimeworkflow尋找User對(duì)象,并存儲(chǔ)該User實(shí)體bean的本地引用,這就要求RecordTimeWorkflow會(huì)話bean實(shí)現(xiàn)為一個(gè)有狀態(tài)會(huì)話bean,之后的請(qǐng)求就使用RecordTimeWorkflow所保存的指向User實(shí)體bean的引用。 每次RecordTimeWorkflow收到一個(gè)信息請(qǐng)求,則傳遞給Timecard實(shí)體bean,并返回結(jié)果 每次RecordTimeWorkflow接收到一個(gè)更新命令,則

31、傳遞給Timecard實(shí)體bean,-47-,RecordTime用例設(shè)計(jì),-48-,實(shí)現(xiàn):TimecardDomain 包 和TimecardWorkflow包 的設(shè)計(jì),分析模型:顯示了邊界類、控制類和實(shí)體類是如何相互協(xié)作滿足系統(tǒng)需求的 系統(tǒng)結(jié)構(gòu):確定了包相互之間的約束關(guān)系 詳細(xì)設(shè)計(jì)的來(lái)源: 1、評(píng)審Login用例的分析模型(事件流,類) 2、評(píng)審RecordTime用例的分析模型(事件流,類),49,TimecardDomain包和TimecardWorkflow包 TimecardUI包 HtmlProduction框架 BillingSystemInterface子系統(tǒng),實(shí)現(xiàn):Time

32、cardDomain 包 和TimecardWorkflow包 的設(shè)計(jì),示例:User實(shí)體bean 一共包括三個(gè)文件:一個(gè)遠(yuǎn)程接口,一個(gè)home接口,一個(gè)實(shí)現(xiàn)類 (1)User.java:是User實(shí)體Bean的遠(yuǎn)程接口,定義了這個(gè)bean所有遠(yuǎn)程可訪問的業(yè)務(wù)方法。這個(gè)類統(tǒng)一了我們?cè)赗eacordTime用例和Login用例中所發(fā)現(xiàn)的行為,51,(2)UserHome.java 是User實(shí)體bean的home接口。它定義了所有用來(lái)尋找、生成以及銷毀User實(shí)體bean的方法,52,實(shí)現(xiàn):TimecardDomain 包 和TimecardWorkflow包 的設(shè)計(jì),53,(3)UserBea

33、n.java 是User實(shí)體bean的實(shí)現(xiàn),實(shí)現(xiàn)了home接口和遠(yuǎn)程接口中定義的方法 2、同理可得Timecard實(shí)體bean Timecard.java, TimecardHome.java和TimecardBean.java,54,實(shí)現(xiàn):TimecardDomain 包 和TimecardWorkflow包 的設(shè)計(jì),55,LoginWorkflow無(wú)狀態(tài)會(huì)話bean LoginWorkflow.java, LoginWorkflowHome.java和LoginWorkflowBean.java LoginWorkflow是一個(gè)無(wú)狀態(tài)會(huì)話bean,所以在調(diào)用生成方法時(shí)不需要參數(shù),56,實(shí)現(xiàn)

34、:TimecardDomain 包 和TimecardWorkflow包 的設(shè)計(jì),RecordTimeWorkflow有狀態(tài)會(huì)話bean RecordTimeWorkflow.java包含了RecordTimeWorkflow會(huì)話bean所有的遠(yuǎn)程可訪問方法; RecordTimeWorkflowHome.java包含了用來(lái)產(chǎn)生會(huì)話bean的方法,以用戶名作為參數(shù),將該會(huì)話與一個(gè)用戶關(guān)聯(lián)起來(lái) RecordTimeWorkflowBean.java是該會(huì)話類的實(shí)現(xiàn) 5、支撐類(略),57,實(shí)現(xiàn):TimecardDomain 包 和TimecardWorkflow包 的設(shè)計(jì),ChargeCode實(shí)體bean ChargeCode.java是一個(gè)簡(jiǎn)單的數(shù)據(jù)存儲(chǔ)器,簡(jiǎn)單的唯一性檢查。一個(gè)收費(fèi)項(xiàng)目代碼是一個(gè)可計(jì)算工資的工作單元。 ChargeCodeHome.java是ChargeCode實(shí)體bean的home接口,定義了查找以及生成ChargeCode實(shí)體bean的方法 ChargeCodeBean.java是ChargeCodeBean實(shí)體bean的實(shí)現(xiàn)類,提供了這個(gè)bean所有的實(shí)際數(shù)據(jù)和邏輯,58,實(shí)現(xiàn):Timec

溫馨提示

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

評(píng)論

0/150

提交評(píng)論