下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、體系結(jié)構(gòu)風(fēng)格:我以前做的都是ERP和OA系統(tǒng),所以體系結(jié)構(gòu)的選擇是基于怎么更好的完成業(yè)務(wù)處理1、 事務(wù)處理a) 簡(jiǎn)單系統(tǒng)可以采用數(shù)據(jù)庫(kù)的事務(wù)處理功能優(yōu)勢(shì):簡(jiǎn)單、易學(xué)、性能高劣勢(shì):將業(yè)務(wù)邏輯綁定在數(shù)據(jù)庫(kù)一層,很難使用高級(jí)語(yǔ)言來(lái)實(shí)現(xiàn)b) 復(fù)雜系統(tǒng)可以使用EJB來(lái)實(shí)現(xiàn)優(yōu)勢(shì):支持分布式不同廠家數(shù)據(jù)庫(kù)上的事務(wù)處理,可以使用高級(jí)語(yǔ)言來(lái)實(shí)現(xiàn)劣勢(shì):開(kāi)發(fā)復(fù)雜,執(zhí)行效率低c) 注意:需要事務(wù)處理的地方不能選用MS的產(chǎn)品和框架,他們的事務(wù)處理完全依靠數(shù)據(jù)庫(kù)完成,基本沒(méi)有擴(kuò)展的可能。WebService不支持事務(wù),不能承載業(yè)務(wù)處理接口,只能提供一些可出錯(cuò)或出錯(cuò)后可重試的功能。2、 業(yè)務(wù)邏輯的實(shí)現(xiàn):高級(jí)語(yǔ)言vs存儲(chǔ)過(guò)程
2、除非使用EJB,否則使用存儲(chǔ)過(guò)程來(lái)實(shí)現(xiàn)業(yè)務(wù)處理。從數(shù)據(jù)庫(kù)中讀取出數(shù)據(jù),經(jīng)過(guò)計(jì)算,寫(xiě)回計(jì)算結(jié)果。這樣的過(guò)程是無(wú)法做到訪問(wèn)互斥的。如果同時(shí)有線程在處理這些數(shù)據(jù),就會(huì)產(chǎn)生沖突。就算使用數(shù)據(jù)庫(kù)事務(wù)也無(wú)法解決這個(gè)問(wèn)題,因?yàn)閿?shù)據(jù)的讀取并不受事務(wù)控制,系統(tǒng)不會(huì)保證讀取、計(jì)算和寫(xiě)回的原子性。所以,使用存儲(chǔ)過(guò)程來(lái)實(shí)現(xiàn)復(fù)雜業(yè)務(wù)邏輯是可靠的。特別是如果系統(tǒng)是采用結(jié)構(gòu)化的開(kāi)發(fā)風(fēng)格,存儲(chǔ)過(guò)程可以作為最底層的模塊供高級(jí)語(yǔ)言實(shí)現(xiàn)的模塊調(diào)用。3、 軟件系統(tǒng)的分層a) 數(shù)據(jù)庫(kù)b) 數(shù)據(jù)持久層:如果需要用高級(jí)語(yǔ)言來(lái)實(shí)現(xiàn)業(yè)務(wù)邏輯,則這一層需要提供讀寫(xiě)鎖操作。Hibernate好像提供了這種功能,一般還是使用ejb。c) 業(yè)務(wù)邏輯層
3、:實(shí)現(xiàn)核心業(yè)務(wù)邏輯,例如:入庫(kù)操作d) 業(yè)務(wù)外觀(facade)層:組織業(yè)務(wù)邏輯層發(fā)布的接口完成業(yè)務(wù)邏輯處理,還負(fù)責(zé)一些外圍工作:數(shù)據(jù)校驗(yàn)、錯(cuò)誤處理、日志記錄等等e) 界面表現(xiàn)層i. 界面構(gòu)件:一些基礎(chǔ)界面構(gòu)件,頁(yè)面框架,樣式表等ii. 界面程序?qū)ο蠡幊田L(fēng)格:1、 和OO課上講的差不多結(jié)構(gòu)化編程風(fēng)格:1、 模塊間公共的常量要用宏定義,模塊內(nèi)的公共常量要用靜態(tài)變量定義2、 不被外部調(diào)用的函數(shù)不要在頭文件中申明3、 模塊對(duì)外的接口要使用簡(jiǎn)單數(shù)據(jù)類型:不要為了接口函數(shù)看著簡(jiǎn)單而把多個(gè)參數(shù)包裝成一個(gè)結(jié)構(gòu)體,而是直接使用多個(gè)簡(jiǎn)單數(shù)據(jù)類型的參數(shù)。好處:易于理解、便于復(fù)用、不會(huì)造成模塊之間依賴關(guān)系復(fù)雜4、
4、 模塊對(duì)外的接口中不變的參數(shù)需要描述為const,告訴調(diào)用方這些數(shù)據(jù)不會(huì)被破壞5、 模塊分通常劃分為三類:a) 定義類模塊i. 定義一些公共變量和公共數(shù)據(jù)結(jié)構(gòu)。針對(duì)公共數(shù)據(jù)類型的公用操作函數(shù),例如:結(jié)構(gòu)的初始化、釋放、序列化等等函數(shù)ii. 還有一個(gè)邏輯無(wú)關(guān)的處理函數(shù)可以放在這里,例如:日志打印b) 邏輯處理模塊:這類模塊一般有很強(qiáng)的內(nèi)聚性,一般不依賴或少依賴其他模塊。一般只依賴一些定義類模塊。這類模塊一般針對(duì)特定數(shù)據(jù)結(jié)構(gòu)進(jìn)行計(jì)算操作,不會(huì)訪問(wèn)文件、網(wǎng)絡(luò)等等外部設(shè)備。c) 組裝模塊i. 接口模塊:負(fù)責(zé)在對(duì)邏輯處理模塊進(jìn)行包裝。例如:為了使用方便,將邏輯處理模塊中的一個(gè)處理函數(shù)包裝成多種參數(shù)的多個(gè)
5、函數(shù)。在這類模塊中,接口函數(shù)可以使用結(jié)構(gòu)體作為參數(shù),而不用嚴(yán)格遵循接口函數(shù)簡(jiǎn)單變量的規(guī)定。ii. 調(diào)度模塊:負(fù)責(zé)調(diào)度各種多個(gè)處理單元合作完成工作,及一些高層邏輯,例如:多線程管理、網(wǎng)絡(luò)套接字管理、緩存管理等等代碼風(fēng)格:1、 函數(shù)頭要寫(xiě)注釋,說(shuō)明函數(shù)的用途、輸入變量的含義和取值范圍,輸出的結(jié)果2、 變量名不要怕長(zhǎng),多個(gè)小寫(xiě)英文詞用下劃線連接3、 函數(shù)要進(jìn)行分類a) 功能簡(jiǎn)單明確的函數(shù):需要寫(xiě)注釋描述函數(shù)頭b) 將上述簡(jiǎn)單函數(shù)組合起來(lái)完成復(fù)雜功能的函數(shù):需要在內(nèi)部寫(xiě)注釋說(shuō)明為什么進(jìn)行分支判斷和調(diào)用那些簡(jiǎn)單函數(shù)4、 不能省略大括號(hào),即:if (xxx=yyy) do_somthing();雖然只有一
6、行,但不要省略大括號(hào),便于別人閱讀時(shí)知道判斷的作用范圍5、 不能使用魔鬼數(shù)字:不要告訴別的開(kāi)發(fā)人員1代表什么,2又代表什么。把這些都定義成宏或常量6、 goto一般用于出錯(cuò)處理(跳到錯(cuò)誤處理段,通常在函數(shù)最后),不允許往上跳7、 避免用同一個(gè)函數(shù)名來(lái)定義不同參數(shù)的多個(gè)函數(shù)8、 避免使用遞歸函數(shù)基于CVS的分支開(kāi)發(fā)方法本方法適合多人針對(duì)同一個(gè)模塊進(jìn)行開(kāi)發(fā),各人的開(kāi)發(fā)都是在原有模塊上增加無(wú)關(guān)的新功能。為了避免別人的修改造成自己開(kāi)發(fā)和測(cè)試中發(fā)生問(wèn)題,所以使用CVS的分支開(kāi)發(fā)功能1、 針對(duì)每個(gè)新功能,在當(dāng)前最新版本的基礎(chǔ)上建立代碼分支XXX_BRANCH2、 在分支上進(jìn)行開(kāi)發(fā),版本號(hào)的最后一位表示送測(cè)
7、次數(shù)。如果一次就測(cè)試通過(guò)則版本號(hào)最后一位為0,如果測(cè)試發(fā)現(xiàn)錯(cuò)誤后修改了再送測(cè)則版本號(hào)最后一位加13、 分支開(kāi)發(fā)、測(cè)試完畢,則將模塊最新版本合并到當(dāng)前分支上。創(chuàng)建分支時(shí),模塊發(fā)布的最新版本號(hào)可能是x.y.z,分支測(cè)試完畢后x.y.z可能已經(jīng)發(fā)布了。就需要在XXX_BRANCH分支中合并版本x.y.z到x.y.z版本之間的變更??梢允褂胏vs up j x.y.z實(shí)現(xiàn)。合并完畢后再對(duì)合并結(jié)果進(jìn)行回歸測(cè)試。把XXX_BRANCH定一個(gè)版本號(hào),例如:t_XXX_BRANCH4、 合并測(cè)試之后,需要將XXX_BRANCH合并到當(dāng)前release版本x.y.z上。首先使用cvs up dr x.y.z把當(dāng)
8、前目錄下的代碼切換到x.y.z版本。再使用命令cvs up j t_XXX_BRANCH j x.y.z來(lái)合并從t_XXX_BRANCH到x.y.z的代碼變化。(由于t_XXX_BRANCH分支已經(jīng)合并過(guò)一次x.y.z,所以這一步一般不會(huì)發(fā)生什么變化,如果發(fā)生變化則說(shuō)明x.y.z之后又有人發(fā)布了新版本,哪么就需要重新合并分支并重新測(cè)試)5、 發(fā)布t_XXX_BRANCH,并確定新的基線版本號(hào)為x.y+1.z單元測(cè)試風(fēng)格(一般是開(kāi)發(fā)人員完成,測(cè)試人員沒(méi)有能力干)1、 測(cè)試框架:測(cè)試框架一般分兩部分a) 測(cè)試數(shù)據(jù)的自動(dòng)生成和結(jié)果的比對(duì)自動(dòng)生成比較困難,一般都是在單元測(cè)試中由開(kāi)發(fā)人員寫(xiě)程序來(lái)模擬產(chǎn)生
9、。但多版本程序的輸出數(shù)據(jù)的存儲(chǔ)、管理、比對(duì)應(yīng)該由框架完成b) 測(cè)試用例的承載這部分需要解決的是測(cè)試用例該如何編寫(xiě),以及系統(tǒng)怎么執(zhí)行這些用例及怎么反饋測(cè)試用例的執(zhí)行情況2、 函數(shù)級(jí)測(cè)試根據(jù)函數(shù)的重要性可以決定是否對(duì)其編寫(xiě)測(cè)試函數(shù)。測(cè)試函數(shù)中可以硬編碼許多(20-100個(gè))測(cè)試數(shù)據(jù),在調(diào)用被測(cè)試函數(shù)之后判斷返回結(jié)果是否符合預(yù)期。3、 模塊級(jí)測(cè)試針對(duì)模塊對(duì)外提供的接口進(jìn)行測(cè)試,由于模塊的輸入輸出可能很復(fù)雜,可以用數(shù)據(jù)文件作為輸入。測(cè)試框架應(yīng)當(dāng)提供將被測(cè)函數(shù)的輸出數(shù)據(jù)存儲(chǔ)成文件的功能。若該模塊經(jīng)過(guò)其他測(cè)試能保證質(zhì)量,則生成的輸出文件可以作為標(biāo)準(zhǔn)輸出供下一次模塊測(cè)試使用。例如:對(duì)該模塊進(jìn)行修改后可以用相同輸入文件進(jìn)行測(cè)試,獲得新輸出數(shù)據(jù)文件。比較這兩個(gè)文件是否存在差異。4、 系統(tǒng)級(jí)測(cè)試系統(tǒng)級(jí)測(cè)試的正確性測(cè)試方法和模塊級(jí)測(cè)試完全相同。系統(tǒng)級(jí)測(cè)試過(guò)程中還應(yīng)當(dāng)考察一些特殊內(nèi)容。例如:性能和容錯(cuò)性可以使用一些dummy模塊來(lái)模擬該模塊被破壞的情況下系統(tǒng)整體運(yùn)行情況,一個(gè)模塊發(fā)生錯(cuò)誤系統(tǒng)可能采用以下方式進(jìn)行處理:容忍錯(cuò)誤(整體系統(tǒng)能“正?!边\(yùn)行)、錯(cuò)誤報(bào)警(需要測(cè)試是否發(fā)出報(bào)警及多快發(fā)生報(bào)警)、修復(fù)錯(cuò)誤(一般來(lái)說(shuō)是通過(guò)重新啟動(dòng)出錯(cuò)模塊來(lái)完成的。)性能測(cè)試需要測(cè)試系統(tǒng)在不同的壓力下的表現(xiàn),需要在日志中記錄
溫馨提示
- 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度SPF豬飼養(yǎng)產(chǎn)業(yè)鏈大數(shù)據(jù)分析與決策支持合同
- 系統(tǒng)集成課程設(shè)計(jì)日志
- 2025版高端商務(wù)辦公租賃合同范本2篇
- 2025版彩鋼瓦屋頂安裝與建筑節(jié)能改造評(píng)估合同3篇
- 自動(dòng)控制的課程設(shè)計(jì)
- 老馬養(yǎng)殖課程設(shè)計(jì)
- 2024年股權(quán)買賣保證書(shū)
- 油壺蓋課程設(shè)計(jì)
- 二零二五年度個(gè)人融資租賃合同示范文本下載3篇
- 美甲教學(xué)課程設(shè)計(jì)方案
- 期末+(試題)+-2024-2025學(xué)年重大版英語(yǔ)五年級(jí)上冊(cè)
- DL∕ Z 860.2-2006 變電站通信網(wǎng)絡(luò)和系統(tǒng) 第2部分:術(shù)語(yǔ)
- 斷親協(xié)議書(shū)模板
- 技能成才強(qiáng)國(guó)有我課件模板
- “雙減”背景下小學(xué)數(shù)學(xué)“教、學(xué)、評(píng)”一體化的思考與實(shí)踐
- 中外美術(shù)評(píng)析與欣賞智慧樹(shù)知到期末考試答案章節(jié)答案2024年湖南大學(xué)
- 事業(yè)單位考試《綜合知識(shí)和能力測(cè)試》試卷
- 福利住房與購(gòu)房補(bǔ)貼制度
- 康師傅烏龍茗茶營(yíng)銷策劃書(shū)
- 【川教版】《生命 生態(tài) 安全》四上第13課《預(yù)防凍瘡》課件
- 工廠籌建方案
評(píng)論
0/150
提交評(píng)論