999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

軟件體系架構(gòu)案例教學(xué):連珠軟件開發(fā)

2011-12-31 00:00:00
計(jì)算機(jī)教育 2011年16期


  摘要:軟件體系架構(gòu)(SA)是軟件工程專業(yè)主修課程。本文通過五子棋軟件開發(fā)案例,介紹我們給軟件工程專業(yè)學(xué)生教授SA課程方面的經(jīng)驗(yàn)。通過需求分析加深對軟件系統(tǒng)的理解,在此基礎(chǔ)上確定軟件質(zhì)量屬性的優(yōu)先級和所采用的、用來實(shí)現(xiàn)這些質(zhì)量屬性的戰(zhàn)術(shù)。設(shè)計(jì)合適的五子棋軟件架構(gòu)以滿足質(zhì)量屬性要求,并對架構(gòu)進(jìn)行評估。
  關(guān)鍵詞:軟件體系架構(gòu);案例教學(xué);本科課程;統(tǒng)一建模語言;軟件工程
  
  軟件體系架構(gòu) SA(Software Architecture)是軟件工程專業(yè)本科生的一門主修課程,通常在大學(xué)三年級開設(shè)。該門課程實(shí)踐性強(qiáng)、涉及內(nèi)容豐富,如何讓學(xué)生在短短一學(xué)期內(nèi)、在缺乏實(shí)踐經(jīng)驗(yàn)的情況下,理解掌握架構(gòu)設(shè)計(jì)方法,就成為一個(gè)亟待解決的問題。根據(jù)學(xué)生特點(diǎn),我們選擇五子棋人機(jī)交互軟件FIR(Five-in-a-Row)作為案例進(jìn)行教學(xué)。五子棋趣味性強(qiáng)、規(guī)則簡單、老少皆宜,同時(shí),極具挑戰(zhàn)性。設(shè)計(jì)這樣一個(gè)軟件會用到學(xué)生學(xué)過的很多課程知識,包括數(shù)據(jù)庫、數(shù)據(jù)結(jié)構(gòu)、算法設(shè)計(jì)與分析、高級程序設(shè)計(jì)語言,等等;初級版本的FIR程序代碼量約4 000至5 000行,這樣規(guī)模的軟件,如果不進(jìn)行架構(gòu)設(shè)計(jì)就直接來寫,是很困難的。因此,我們認(rèn)為這是一個(gè)極佳的教學(xué)案例。
  在案例教學(xué)中,我們采用質(zhì)量屬性驅(qū)動(dòng)ADD
  (Attribute Driven Design)方法[1] 165-185來設(shè)計(jì)架構(gòu),用UML(Unified Modeling Language)語言描述架構(gòu)[2],遵循統(tǒng)一過程RUP(Rational Unified Process)方法開發(fā)軟件。以下第1節(jié)對功能需求進(jìn)行描述和分析;第2節(jié)深入理解系統(tǒng)功能和運(yùn)行時(shí)狀態(tài);第3節(jié)分析質(zhì)量屬性和戰(zhàn)術(shù);第4節(jié)設(shè)計(jì)架構(gòu);第5節(jié)評估架構(gòu);第6節(jié)介紹代碼開發(fā)及“架構(gòu)-代碼”一致性檢查;第7節(jié)總結(jié)全文。
  1需求描述和分析
  需求分析一般在立項(xiàng)階段進(jìn)行(RUP中,需求分析在每一次迭代中都可能進(jìn)行),它的作用是使學(xué)生在編碼前初步了解系統(tǒng)功能以及功能模塊之間的關(guān)系,為確定質(zhì)量屬性和決策架構(gòu)做準(zhǔn)備。這個(gè)FIR軟件,主要以算法研究和教學(xué)為目的,初期版本計(jì)劃用時(shí)1月左右開發(fā)完成。
  圖1是學(xué)生根據(jù)需求描述設(shè)計(jì)的FIR軟件的頂層用例和內(nèi)部用例,只要稍有下棋經(jīng)驗(yàn)及機(jī)器博弈方面的知識就能夠完成。這時(shí)的用例圖不需要十分精確,因?yàn)殡S著后面內(nèi)容的進(jìn)行,用例圖會不斷進(jìn)行調(diào)整。
  2對系統(tǒng)功能及狀態(tài)的深入理解
  需求用例圖讓學(xué)生對系統(tǒng)各功能場景有了初步解,然而模塊之間具體如何交互,到目前為止仍不明朗——必須在架構(gòu)決策之前搞清楚其主要部分,這樣得到的架構(gòu)才可能合理。為此,我們選擇了典型的雙人對戰(zhàn)場景,讓學(xué)生弄清楚各模塊之間的交互關(guān)系,然后利用UML順序圖和協(xié)作圖描述場景。參考圖2和圖3。
  這種(對系統(tǒng)功能的)理解還可以通過完成其他場景的順序圖和協(xié)作圖來持續(xù)強(qiáng)化加深。但場景隨條件不同有很多,不可能都這樣來做——這個(gè)問題可由有限狀態(tài)機(jī)圖來解決。圖4是我們指導(dǎo)學(xué)生設(shè)計(jì)的FIR系統(tǒng)有限狀態(tài)機(jī),其中包括一個(gè)頂層有限狀態(tài)機(jī)和3個(gè)內(nèi)部狀態(tài)機(jī)。通過此環(huán)節(jié),學(xué)生弄清楚了系統(tǒng)運(yùn)行時(shí)所處狀態(tài)及變遷條件,結(jié)合前面的順序圖和協(xié)作圖,進(jìn)一步明確了系統(tǒng)模塊功能的劃分和交互。
  3質(zhì)量屬性及戰(zhàn)術(shù)
  深入了解系統(tǒng)功能及運(yùn)行時(shí)狀態(tài)后,下面著手分析系統(tǒng)的質(zhì)量屬性及相應(yīng)戰(zhàn)術(shù)。
  3.1質(zhì)量屬性優(yōu)先級
  本軟件質(zhì)量屬性場景主要有兩個(gè):算法研究平臺、教學(xué)案例。表1是學(xué)生根據(jù)系統(tǒng)功能和質(zhì)量屬性場景列出的質(zhì)量屬性優(yōu)先級,分高(High)、中(Middle)、
  低(Low)三個(gè)等級。由于算法研究主要追求更有效的搜索算法,因此把性能列為高等級質(zhì)量屬性。其余質(zhì)量屬性處于相對次要的地位。
  3.2實(shí)現(xiàn)質(zhì)量屬性所采用的戰(zhàn)術(shù)
  這一小節(jié)涉及內(nèi)容較為抽象,因此在確定戰(zhàn)術(shù)時(shí),教師與學(xué)生一起進(jìn)行討論。
  針對性能屬性需求,最終決定從3方面戰(zhàn)術(shù)著手:控制資源需求、對資源進(jìn)行管理和對資源競爭進(jìn)行仲裁[1] 120-135。分別采用提高計(jì)算效率、引入并發(fā)、合理調(diào)度的戰(zhàn)術(shù)。其中,提高計(jì)算效率的主要措施是通過發(fā)現(xiàn)更多的知識來建立更有效的估值函數(shù),然后利用剪枝技術(shù)提高算法搜索效率;另外還采用數(shù)據(jù)庫(End Game Database)技術(shù)進(jìn)一步提高搜索效率。引入并發(fā)涉及兩方面:一是分離人機(jī)交互部分和搜索部分,二是通過增加計(jì)算資源(并發(fā)線程)來提高搜索效率。
  針對可修改質(zhì)量屬性,主要采用局部化變更戰(zhàn)術(shù)和防止連鎖反應(yīng)戰(zhàn)術(shù)。局部化變更戰(zhàn)術(shù)包括抽象通用服務(wù)、保持語義一致性、預(yù)期可能變更等;防止連鎖反應(yīng)戰(zhàn)術(shù)包括信息隱藏和維持現(xiàn)有接口。
  針對易用性質(zhì)量屬性,采用n6+HyHU4ANRe3SF49a1Bhg==了支持用戶主動(dòng)(實(shí)現(xiàn)回退、重新開始等功能)、維持用戶模型(對某些任務(wù)做預(yù)先計(jì)算、給出提示信息和增加幫助功能等)戰(zhàn)術(shù)。
  4架構(gòu)分析和表述
  前面完成了需求分析、功能狀態(tài)分析、質(zhì)量屬性及戰(zhàn)術(shù)分析。接下來的任務(wù)就是根據(jù)戰(zhàn)術(shù)來創(chuàng)建或選用合適的軟件構(gòu)架。
  架構(gòu)風(fēng)格可以看做是一整套預(yù)制好的決策。我們已清楚地了解到FIR是一個(gè)典型的人機(jī)交互軟件系統(tǒng),這方面有許多成熟架構(gòu)風(fēng)格可以選用:PAC(表示-抽象-控制模型)、MVC(模型-視圖-控制器)、seeheim(塞海姆)等。最終通過集體討論選擇了MVC作為FIR的架構(gòu)。該架構(gòu)風(fēng)格把交互過程分為3部分:輸入、處理、輸出,分別由控制器、模型、視圖來負(fù)責(zé),避免了系統(tǒng)核心函數(shù)和用戶界面函數(shù)緊密交織帶來的可修改性和擴(kuò)展性問題,可以很方便地添加新的搜索模塊、增加新的界面功能,非常適合FIR系統(tǒng)。架構(gòu)的UML描述見圖5。
  根據(jù)ADD架構(gòu)設(shè)計(jì)方法,在確定了頂層(即系統(tǒng)本身)及最初幾層架構(gòu)后,接下來就是分解求精架構(gòu)的各個(gè)模塊,針對這些模塊,再選擇架構(gòu)驅(qū)動(dòng)因素、戰(zhàn)術(shù)和模式,繼續(xù)分解求精直至系統(tǒng)分解為某適當(dāng)?shù)牧6葹橹埂_@部分內(nèi)容受空間限制略去。
  5評估架構(gòu)
  完成架構(gòu)設(shè)計(jì)后,我們并沒有立即開始詳細(xì)設(shè)計(jì)及編碼工作,而是與學(xué)生一起針對所選架構(gòu)進(jìn)行評估。評估能發(fā)現(xiàn)一些潛在風(fēng)險(xiǎn),對大型軟件系統(tǒng)尤其重要。
  表2根據(jù)架構(gòu)評估權(quán)衡分析方法(ATAM) [1] 276-303,列出了FIR軟件架構(gòu)的質(zhì)量效用樹。限于空間,表中僅展示了性能、可修改性部分的質(zhì)量效用樹。
  針對質(zhì)量效用樹的高優(yōu)先級場景如VCF_搜索,我們討論了所采用的架構(gòu)決策點(diǎn)和權(quán)衡點(diǎn),包括提高計(jì)算效率(使用了一種Cache技術(shù))、引入并發(fā)(見圖6)等等。
  6代碼開發(fā)和架構(gòu)—代碼一致性檢測
  6.1代碼開發(fā)
  當(dāng)架構(gòu)層次分解穩(wěn)定后,就可以將各個(gè)模塊分配給開發(fā)小組在確定了接口規(guī)范及通訊消息協(xié)議后,我們將學(xué)生分組,分別負(fù)責(zé)不同模塊的代碼開發(fā)工作:數(shù)據(jù)庫小組、人機(jī)交互界面小組、搜索函數(shù)模塊小組(數(shù)個(gè))、集成和測試小組等等。定期開會交流進(jìn)展情況,由教師負(fù)責(zé)全局統(tǒng)籌管理。其中某些實(shí)現(xiàn)困難的模塊,由教師事先完成。圖7是FIR軟件進(jìn)行VCF(Victory by Continue Fours)計(jì)算的一個(gè)實(shí)戰(zhàn)場景。
  6.2架構(gòu)-代碼的一致性檢測
  軟件系統(tǒng)最終性能不僅受SA影響,還受限于編碼質(zhì)量,因此,對SA與系統(tǒng)實(shí)際功能是否一致需進(jìn)行檢查。迄今,未見參考文獻(xiàn)介紹如何在代碼中跟蹤具體戰(zhàn)術(shù)或架構(gòu)風(fēng)格。為此,架構(gòu)設(shè)計(jì)時(shí),我們根據(jù)實(shí)際需要制定了一些功能場景的效能目標(biāo),然后在代碼完成后檢測這些目標(biāo)的實(shí)現(xiàn)情況。這部分工作已經(jīng)記錄于表2中。以性能質(zhì)量屬性為例,在架構(gòu)設(shè)計(jì)時(shí)要求完成一次除VCF、VCT等高級搜索外的人機(jī)交互操作不超過10ms響應(yīng)時(shí)間,參考表2的“性能”行,其中,第4層場景求精列的括號中數(shù)字顯示了實(shí)測運(yùn)行時(shí)間,滿足設(shè)計(jì)架構(gòu)時(shí)設(shè)定的目標(biāo)(見第3層場景概念列和第4層場景求精列的括號外部分)。
  
  7結(jié)語
  好的案例勝過千言萬語,通過親身參與全過程的軟件開發(fā),學(xué)生理解了軟件架構(gòu)對于軟件開發(fā)的重要性,掌握了一種架構(gòu)設(shè)計(jì)方法,并深刻體會到從架構(gòu)到編碼再到最終軟件所付出巨大努力。
  在這個(gè)案例中,學(xué)生會碰到各式各樣的問題。教師應(yīng)當(dāng)以發(fā)揮學(xué)生主動(dòng)性為主,以自己出手代辦為輔,充分利用學(xué)生渴求知識、思維活躍的特點(diǎn)以及對棋的興趣,引導(dǎo)他們獨(dú)立解決問題。隨著問題的解決,學(xué)生不但融會貫通了本課程及以前課程所學(xué)知識,還獲得了很大的成就感和自信心,激發(fā)了學(xué)習(xí)興趣。
  今后,我們計(jì)劃讓學(xué)生利用課余時(shí)間,并根據(jù)自身興趣參與國內(nèi)外舉辦的機(jī)器博弈競賽或工業(yè)級項(xiàng)目產(chǎn)品開發(fā),以此作為課堂教學(xué)的有益補(bǔ)充。
  
  參考文獻(xiàn):
  [1] L.B

主站蜘蛛池模板: 国产免费羞羞视频| 夜精品a一区二区三区| 免费可以看的无遮挡av无码| 日韩高清中文字幕| 亚洲av无码片一区二区三区| 波多野结衣无码视频在线观看| 久爱午夜精品免费视频| 国产丝袜91| 国产成人精品一区二区| 精品国产一区91在线| 欧洲精品视频在线观看| 国产麻豆另类AV| 国产成人成人一区二区| 99视频在线免费观看| 2021国产精品自拍| 久久精品只有这里有| 青青草原国产免费av观看| 欧美福利在线观看| 中文字幕亚洲综久久2021| 色成人综合| 国产精品任我爽爆在线播放6080| 中文字幕在线永久在线视频2020| 久久精品国产999大香线焦| 色综合成人| 欧美特级AAAAAA视频免费观看| 日韩无码黄色| 噜噜噜久久| 国产精品毛片一区视频播| 一本大道AV人久久综合| 国产69精品久久久久孕妇大杂乱| 国产成人狂喷潮在线观看2345| 久久精品电影| 中文精品久久久久国产网址 | 久久综合色天堂av| 婷婷色中文网| 伊人丁香五月天久久综合 | 伊人福利视频| a免费毛片在线播放| 欧美日韩亚洲国产| 国产拍在线| 国产精品手机视频一区二区| 亚洲av综合网| 亚洲午夜福利精品无码不卡 | 九九九精品成人免费视频7| 5555国产在线观看| 最新国产高清在线| 噜噜噜综合亚洲| 国产玖玖视频| 国产中文在线亚洲精品官网| 天天干天天色综合网| 伊人天堂网| 久久婷婷六月| 国产91精选在线观看| 无码免费视频| 在线精品亚洲国产| 国产十八禁在线观看免费| 国产精品主播| 免费又爽又刺激高潮网址| 精品夜恋影院亚洲欧洲| 久草国产在线观看| 亚洲精品成人福利在线电影| 92午夜福利影院一区二区三区| 国产精品毛片一区视频播| 国产一级二级在线观看| 亚洲—日韩aV在线| 国产成人精品午夜视频'| 婷婷色婷婷| 国产门事件在线| 99久久精品免费观看国产| 国产正在播放| 亚洲综合欧美在线一区在线播放| 澳门av无码| 亚洲v日韩v欧美在线观看| 欧美日韩精品综合在线一区| 一本久道久久综合多人| 国产精品女同一区三区五区| 在线国产欧美| 国产美女人喷水在线观看| 亚洲AV无码乱码在线观看代蜜桃| 粉嫩国产白浆在线观看| 极品性荡少妇一区二区色欲| 色精品视频|