


下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、體系結(jié)構(gòu)風(fēng)格:我以前做的都是ERP和OA系統(tǒng),所以體系結(jié)構(gòu)的選擇是基于怎么更好的完成業(yè)務(wù)處理1、 事務(wù)處理a) 簡單系統(tǒng)可以采用數(shù)據(jù)庫的事務(wù)處理功能優(yōu)勢:簡單、易學(xué)、性能高劣勢:將業(yè)務(wù)邏輯綁定在數(shù)據(jù)庫一層,很難使用高級語言來實現(xiàn)b) 復(fù)雜系統(tǒng)可以使用EJB來實現(xiàn)優(yōu)勢:支持分布式不同廠家數(shù)據(jù)庫上的事務(wù)處理,可以使用高級語言來實現(xiàn)劣勢:開發(fā)復(fù)雜,執(zhí)行效率低c) 注意:需要事務(wù)處理的地方不能選用MS的產(chǎn)品和框架,他們的事務(wù)處理完全依靠數(shù)據(jù)庫完成,基本沒有擴展的可能。WebService不支持事務(wù),不能承載業(yè)務(wù)處理接口,只能提供一些可出錯或出錯后可重試的功能。2、 業(yè)務(wù)邏輯的實現(xiàn):高級語言vs存儲過程
2、除非使用EJB,否則使用存儲過程來實現(xiàn)業(yè)務(wù)處理。從數(shù)據(jù)庫中讀取出數(shù)據(jù),經(jīng)過計算,寫回計算結(jié)果。這樣的過程是無法做到訪問互斥的。如果同時有線程在處理這些數(shù)據(jù),就會產(chǎn)生沖突。就算使用數(shù)據(jù)庫事務(wù)也無法解決這個問題,因為數(shù)據(jù)的讀取并不受事務(wù)控制,系統(tǒng)不會保證讀取、計算和寫回的原子性。所以,使用存儲過程來實現(xiàn)復(fù)雜業(yè)務(wù)邏輯是可靠的。特別是如果系統(tǒng)是采用結(jié)構(gòu)化的開發(fā)風(fēng)格,存儲過程可以作為最底層的模塊供高級語言實現(xiàn)的模塊調(diào)用。3、 軟件系統(tǒng)的分層a) 數(shù)據(jù)庫b) 數(shù)據(jù)持久層:如果需要用高級語言來實現(xiàn)業(yè)務(wù)邏輯,則這一層需要提供讀寫鎖操作。Hibernate好像提供了這種功能,一般還是使用ejb。c) 業(yè)務(wù)邏輯層
3、:實現(xiàn)核心業(yè)務(wù)邏輯,例如:入庫操作d) 業(yè)務(wù)外觀(facade)層:組織業(yè)務(wù)邏輯層發(fā)布的接口完成業(yè)務(wù)邏輯處理,還負責(zé)一些外圍工作:數(shù)據(jù)校驗、錯誤處理、日志記錄等等e) 界面表現(xiàn)層i. 界面構(gòu)件:一些基礎(chǔ)界面構(gòu)件,頁面框架,樣式表等ii. 界面程序?qū)ο蠡幊田L(fēng)格:1、 和OO課上講的差不多結(jié)構(gòu)化編程風(fēng)格:1、 模塊間公共的常量要用宏定義,模塊內(nèi)的公共常量要用靜態(tài)變量定義2、 不被外部調(diào)用的函數(shù)不要在頭文件中申明3、 模塊對外的接口要使用簡單數(shù)據(jù)類型:不要為了接口函數(shù)看著簡單而把多個參數(shù)包裝成一個結(jié)構(gòu)體,而是直接使用多個簡單數(shù)據(jù)類型的參數(shù)。好處:易于理解、便于復(fù)用、不會造成模塊之間依賴關(guān)系復(fù)雜4、
4、 模塊對外的接口中不變的參數(shù)需要描述為const,告訴調(diào)用方這些數(shù)據(jù)不會被破壞5、 模塊分通常劃分為三類:a) 定義類模塊i. 定義一些公共變量和公共數(shù)據(jù)結(jié)構(gòu)。針對公共數(shù)據(jù)類型的公用操作函數(shù),例如:結(jié)構(gòu)的初始化、釋放、序列化等等函數(shù)ii. 還有一個邏輯無關(guān)的處理函數(shù)可以放在這里,例如:日志打印b) 邏輯處理模塊:這類模塊一般有很強的內(nèi)聚性,一般不依賴或少依賴其他模塊。一般只依賴一些定義類模塊。這類模塊一般針對特定數(shù)據(jù)結(jié)構(gòu)進行計算操作,不會訪問文件、網(wǎng)絡(luò)等等外部設(shè)備。c) 組裝模塊i. 接口模塊:負責(zé)在對邏輯處理模塊進行包裝。例如:為了使用方便,將邏輯處理模塊中的一個處理函數(shù)包裝成多種參數(shù)的多個
5、函數(shù)。在這類模塊中,接口函數(shù)可以使用結(jié)構(gòu)體作為參數(shù),而不用嚴格遵循接口函數(shù)簡單變量的規(guī)定。ii. 調(diào)度模塊:負責(zé)調(diào)度各種多個處理單元合作完成工作,及一些高層邏輯,例如:多線程管理、網(wǎng)絡(luò)套接字管理、緩存管理等等代碼風(fēng)格:1、 函數(shù)頭要寫注釋,說明函數(shù)的用途、輸入變量的含義和取值范圍,輸出的結(jié)果2、 變量名不要怕長,多個小寫英文詞用下劃線連接3、 函數(shù)要進行分類a) 功能簡單明確的函數(shù):需要寫注釋描述函數(shù)頭b) 將上述簡單函數(shù)組合起來完成復(fù)雜功能的函數(shù):需要在內(nèi)部寫注釋說明為什么進行分支判斷和調(diào)用那些簡單函數(shù)4、 不能省略大括號,即:if (xxx=yyy) do_somthing();雖然只有一
6、行,但不要省略大括號,便于別人閱讀時知道判斷的作用范圍5、 不能使用魔鬼數(shù)字:不要告訴別的開發(fā)人員1代表什么,2又代表什么。把這些都定義成宏或常量6、 goto一般用于出錯處理(跳到錯誤處理段,通常在函數(shù)最后),不允許往上跳7、 避免用同一個函數(shù)名來定義不同參數(shù)的多個函數(shù)8、 避免使用遞歸函數(shù)基于CVS的分支開發(fā)方法本方法適合多人針對同一個模塊進行開發(fā),各人的開發(fā)都是在原有模塊上增加無關(guān)的新功能。為了避免別人的修改造成自己開發(fā)和測試中發(fā)生問題,所以使用CVS的分支開發(fā)功能1、 針對每個新功能,在當(dāng)前最新版本的基礎(chǔ)上建立代碼分支XXX_BRANCH2、 在分支上進行開發(fā),版本號的最后一位表示送測
7、次數(shù)。如果一次就測試通過則版本號最后一位為0,如果測試發(fā)現(xiàn)錯誤后修改了再送測則版本號最后一位加13、 分支開發(fā)、測試完畢,則將模塊最新版本合并到當(dāng)前分支上。創(chuàng)建分支時,模塊發(fā)布的最新版本號可能是x.y.z,分支測試完畢后x.y.z可能已經(jīng)發(fā)布了。就需要在XXX_BRANCH分支中合并版本x.y.z到x.y.z版本之間的變更。可以使用cvs up j x.y.z實現(xiàn)。合并完畢后再對合并結(jié)果進行回歸測試。把XXX_BRANCH定一個版本號,例如:t_XXX_BRANCH4、 合并測試之后,需要將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來合并從t_XXX_BRANCH到x.y.z的代碼變化。(由于t_XXX_BRANCH分支已經(jīng)合并過一次x.y.z,所以這一步一般不會發(fā)生什么變化,如果發(fā)生變化則說明x.y.z之后又有人發(fā)布了新版本,哪么就需要重新合并分支并重新測試)5、 發(fā)布t_XXX_BRANCH,并確定新的基線版本號為x.y+1.z單元測試風(fēng)格(一般是開發(fā)人員完成,測試人員沒有能力干)1、 測試框架:測試框架一般分兩部分a) 測試數(shù)據(jù)的自動生成和結(jié)果的比對自動生成比較困難,一般都是在單元測試中由開發(fā)人員寫程序來模擬產(chǎn)生
9、。但多版本程序的輸出數(shù)據(jù)的存儲、管理、比對應(yīng)該由框架完成b) 測試用例的承載這部分需要解決的是測試用例該如何編寫,以及系統(tǒng)怎么執(zhí)行這些用例及怎么反饋測試用例的執(zhí)行情況2、 函數(shù)級測試根據(jù)函數(shù)的重要性可以決定是否對其編寫測試函數(shù)。測試函數(shù)中可以硬編碼許多(20-100個)測試數(shù)據(jù),在調(diào)用被測試函數(shù)之后判斷返回結(jié)果是否符合預(yù)期。3、 模塊級測試針對模塊對外提供的接口進行測試,由于模塊的輸入輸出可能很復(fù)雜,可以用數(shù)據(jù)文件作為輸入。測試框架應(yīng)當(dāng)提供將被測函數(shù)的輸出數(shù)據(jù)存儲成文件的功能。若該模塊經(jīng)過其他測試能保證質(zhì)量,則生成的輸出文件可以作為標(biāo)準輸出供下一次模塊測試使用。例如:對該模塊進行修改后可以用相同輸入文件進行測試,獲得新輸出數(shù)據(jù)文件。比較這兩個文件是否存在差異。4、 系統(tǒng)級測試系統(tǒng)級測試的正確性測試方法和模塊級測試完全相同。系統(tǒng)級測試過程中還應(yīng)當(dāng)考察一些特殊內(nèi)容。例如:性能和容錯性可以使用一些dummy模塊來模擬該模塊被破壞的情況下系統(tǒng)整體運行情況,一個模塊發(fā)生錯誤系統(tǒng)可能采用以下方式進行處理:容忍錯誤(整體系統(tǒng)能“正?!边\行)、錯誤報警(需要測試是否發(fā)出報警及多快發(fā)生報警)、修復(fù)錯誤(一般來說是通過重新啟動出錯模塊來完成的。)性能測試需要測試系統(tǒng)在不同的壓力下的表現(xiàn),需要在日志中記錄
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫(yī)療器械托管經(jīng)營協(xié)議書
- 森林防火邊界聯(lián)防協(xié)議書
- 公共部位委托管理協(xié)議書
- 律師代理績效收費協(xié)議書
- 個人組織游玩安全協(xié)議書
- 個人汽車無償轉(zhuǎn)讓協(xié)議書
- 農(nóng)村租房合同免責(zé)協(xié)議書
- 水庫大壩除草清淤協(xié)議書
- 樂清項目財務(wù)代理協(xié)議書
- 拆遷安置合同轉(zhuǎn)讓協(xié)議書
- 山東省高考志愿規(guī)劃
- 籃球研究報告
- 機械通氣基礎(chǔ)知識與常見模式
- 家具借款借條模板
- 預(yù)防肥胖幼兒園
- 淚道置管的護理課件
- 造影劑腦病護理查房課件
- 電力鐵塔制造培訓(xùn)資料
- 采購詢價單模板
- 聯(lián)合體內(nèi)部協(xié)議
- 海南省近5年中考語文作文真題及模擬題匯編(含參考例文)
評論
0/150
提交評論