国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

軟件體系架構課程本科教學探討

2010-12-31 00:00:00裘國永
計算機教育 2010年24期


  摘要:現(xiàn)代社會的每一方面都需要依賴軟件,構造高質量軟件需要設計良好的架構和專業(yè)的實現(xiàn)過程。因此,軟件體系架構被選作軟件工程方面的主修課程。文章結合軟件體系架構本身及學生知識結構特點,介紹如何選擇本科階段軟件體系架構課程教學內容、以及教授方面的經(jīng)驗。文章設計了教學內容的體系架構,涵蓋課堂教學及實驗環(huán)節(jié),并進行詳細闡述。
  關鍵詞:軟件體系架構;本科課程;軟件工程
  
  軟件體系架構 (Software Architecture,以下簡稱SA)學科涉及內容紛繁龐雜,至今一直處于發(fā)展演進階段,選取什么樣的內容進行本科階段教學工作,是一個值得深入研究的問題。
  國內外相關機構針對此問題提出了指導性意見,如在IEEE-CS和ACM聯(lián)合工作組制定的SEEK (Software Engineering Education Knowledge)[1]中,軟件工程本科生獲得學位所需要掌握的相關知識包括:體系架構的視圖與表示、權衡問題、硬件問題、需求的可追蹤性、特定領域的SA和軟件產(chǎn)品線、風格和設計模式。我國教育部門于2006年制定高?!坝嬎銠C科學與技術本科專業(yè)規(guī)范”[2],以IEEE-CS和ACM制定的相關標準為藍本,對2003年以來的相關工作進行了總結和改進。這些指導性文件為SA教學提供了參考框架,但并沒有規(guī)范具體教學內容。下面結合我校計算機學院的教學實踐,對這個問題進行討論。
  1學生知識結構及課程特點分析
  1.1學生知識結構分析
  由于大四階段學生面臨實習、找工作或考研等任務,軟件體系架構課程通常于大學三年級開設。此前學生學過的專業(yè)課程包括高級語言程序設計(C語言)、匯編語言、數(shù)據(jù)結構、計算機組成原理、單片機及其應用、操作系統(tǒng)、軟件工程、計算機網(wǎng)絡、可視化程序設計、面向對象程序設計(C++、Java),同期開始的課程包括數(shù)據(jù)庫、編譯原理、應用服務器開發(fā)、網(wǎng)絡工程、構件技術、UML建模等。盡管已有不少專業(yè)基礎知識,但學生普遍缺乏大型軟件項目的實戰(zhàn)經(jīng)驗,許多學生甚至是第一次接觸SA概念。因此,從自身經(jīng)歷出發(fā),學生難以自發(fā)體會到SA對軟件系統(tǒng)的重要性。這就造成教師要把許多SA概念“推”給學生,盡管不能說是拔苗助長,顯然不及學生主動去“拉”知識的效果好。
  1.2SA課程的特點
  SA不是一門成熟學科,主要表現(xiàn)在:1) 缺乏明確的定義。2) 問題的解決方案不唯一,尋找解決方案沒有固定統(tǒng)一的途徑可遵循。3) 如何維持SA與具體軟件質量屬性之間的關系,沒有明確答案。良好的架構是成功軟件開發(fā)的基礎和必要條件,但不是充分條件,還有許多因素如編碼技術等,都會影響軟件質量。4) SA涉及不僅僅計算機學科內容,還包括商業(yè)、政治、心理、藝術、社會經(jīng)驗等諸多方面因素。5) 缺少成熟、經(jīng)典的教材及教學案例。國內很多高校也是在最近幾年內,才陸續(xù)開設了這門課程,很多地方還待改善,例如就課程名稱來說,用“軟件體系架構” 就比“軟件體系結構”更準確[3],因為英文“結構”一詞應該用structure,而architecture則表達更宏觀的含義,更貼近SA實質內容。
  1.3SA教學策略和教學內容的體系架構
  基于以上特點,我們在學期一開始就給學生布置了軟件開發(fā)任務,讓他們變被動為主動,有目的地接受課堂內容,主動去搜集相關知識。教學中對一些理論性、抽象性較高的內容做了適當取舍和調整,增強實例演示。針對于SA中某些不確定內容,教師提出幾種可能解決途徑,讓學生思考討論其優(yōu)缺點。學生在開發(fā)軟件時,將親身體會SA對軟件開發(fā)的決定性影響。
  2SA教學內容討論
  2.1軟件開發(fā)流程介紹
  軟件開發(fā)流程包括:調研、立項、需求分析、總體設計、詳細設計、編碼、測試、產(chǎn)品化、結項、維護。同時教學中還概要介紹了開發(fā)工具、開發(fā)語言和開發(fā)方法學(瀑布、RUP、極限編程),展示一個軟件開發(fā)實例。上述內容共計4學時。
  盡管前期軟件工程課程中會介紹這方面的部分內容,仍有必要向學生指出SA設計在軟件開發(fā)中所處位置,為后面介紹SA對軟件開發(fā)各階段的影響奠定基礎,并通過實例演示,引起學生的興趣。
  2.2SA概論
  主要是關于SA的宏觀介紹,包括:編程語言的進化歷史、SA發(fā)展歷史、SA各種定義(含IEEE 14784MQYynKzSJup61h6TAiU9D1pCqFg/BaoGJrZbEPlZU=1-2000標準)及其存在問題、哪些因素會影響到SA及SA對其的反作用。共計4學時。
  歷史介紹使學生了解SA學科發(fā)展的來龍去脈;定義、影響因素的介紹使學生意識到SA設計會受商業(yè)、架構師技能、前期產(chǎn)品架構等多因素影響,具有相當大的復雜性和不確定性。這個階段可以開始給學生布置軟件開發(fā)任務,讓他們自己先思考如何完成工作,逐漸從被動接受過渡到主動獲取知識。
  2.3常見SA風格及應用實例
  SA風格包括分層風格、管道—過濾器風格、黑板風格、代理風格、視圖—表示—控制器(MVC)風格、表示—抽象—控制(PAC)風格、微內核風格、反射風格、C/S 和B/S風格、P2P風格、面向對象風格、解釋器風格等,另外對應每一種SA風格都有應用案例。約12學時。
  這部分是SA多年發(fā)展成果的一個總結,也是課程的一個重點。講解時,教師指出這些風格所適用的軟件系統(tǒng)類型,給出每種風格的應用實例,并用UML表示該風格(其中一些可布置為課后作業(yè))。同時提醒學生注意:1)這些風格屬于宏觀級別;2)風格之間不是嚴格獨立的;3)實際系統(tǒng)可能包含多種風格;4)開發(fā)軟件系統(tǒng)時,應當首先考慮這些成熟的風格,再根據(jù)具體情況加以修正和細化。
  2.4SA描述及編檔
  內容包括基于UML的SA描述、SA編檔和“4+1”SA視圖。4~6學時。
  這部分涉及體系結構描述語言(ADLs),但考察后發(fā)現(xiàn),一方面,ADLs較枯燥,很難引起學生的興趣;另一方面,SA本身有著眾多不確定性,尤其是開發(fā)的初期階段,此時精確描述的SA會被修改多次,事實反倒是一些粗線條、不精確、不一致的SA內容真正在引導軟件開發(fā)前進;最后,當前ADLs自身存在很多不足,對實際軟件開發(fā)幾乎沒有影響。因此,本部分重點集中在怎樣用UML描述SA和SA文檔編檔上,對ADLs及用途僅做簡短介紹。從實用角度看,UML已經(jīng)發(fā)展了十多年,因方便與外界交流,被業(yè)界廣泛接受,學有所用。但是,僅用圖形符號來表述SA會帶來一些不確定性,因此還要補充適當符號、術語和原理等的文字說明,并從涉眾的不同視角出發(fā),去關注SA。
  
  2.5質量屬性驅動的SA設計
  內容包括:常見的質量屬性(可用性、可修改性、性能、安全性、易用性、可測試性等)及實現(xiàn)方法;理解屬性之間的權衡;列舉質量屬性應用案例;從質量屬性分析入手,設計SA并進一步求精。約8學時。
  這部分除過讓學生了解實現(xiàn)質量屬性的基本戰(zhàn)術外,還要使其意識到尋找各種屬性之間的平衡,是架構師的重要責任。如何設計SA方法眾多,沒有統(tǒng)一途徑可循,介紹過多的設計方法,反而會讓學生感覺難以適從,因此重點講解基于質量屬性的設計方法。
  2.6SA評估
  內容包括架構權衡分析方法ATAM及案例。4學時。
  評估方法還有許多,如軟件架構分析方法SAAM、成本收益分析方法CBAM等,各有所長。為集中注意力避免盲目學習,除ATAM外,我們對其余評估方法均只做概要介紹。
  2.7SA設計及實現(xiàn)實例
  
  講授一個人工智能軟件的SA設計、評估、實現(xiàn)和編檔。約4學時。
  本軟件在開學第一堂課就已經(jīng)向學生展示,在課程接近結尾時把其SA設計及實現(xiàn)過程講解給學生,前后呼應。好的實例勝過千言萬語,讓學生觀察體驗如何運用所學知識解決具體問題。
  2.8SA前沿講座
  邀請大公司軟件開發(fā)人員作講座,約4~6學時。講座內容包括:面向服務的體系架構SOA及Web Service;多核并行計算→集群→網(wǎng)格計算→物聯(lián)網(wǎng)→云計算;國外SA教學課程;國際知名專家關于SA的最新論文等。
  這部分主要用于開闊學生視野。例如,學生看過微軟、谷歌、IBM等的“云”架構后,體會到盡管應用領域日新月異,SA的一些基本原理和方法仍然有效。專家論文中的觀點和方法對理解SA有很好的啟發(fā)效果,使學生把握到學科前沿動態(tài),了解自己所處位置及努力方向。公司開發(fā)人員的講座是對課堂教學的有益補充,使學生了解實際軟件開發(fā)中問題,有針對性地進行學習。
  2.9SA課程自學內容
  自學內容有設計模式、軟件產(chǎn)品線、特定領域軟件體系結構(J2EE,WWW等)、SA重構等。
  設計模式屬于軟件開發(fā)過程中的詳細設計部分,如果放在SA課程中會使內容過于龐大、流于形式,我們考慮將來開設單獨的課程。自學內容這塊我們要求學生查閱相關參考書,就其感興趣領域撰寫閱讀報告,深度上要求知曉主旨大義,略過細節(jié)。
  2.10SA教材選取
  到目前為止,SA課程沒有集大成的教材,國內外教材各有長處和不足。正因如此,我們決定不固定教材,要求學生遇到相關問題后,就同一問題查閱相應的中外參考資料[3-10]。
  3實驗環(huán)節(jié)
  實驗內容包括軟件可修改性實驗;動態(tài)人機交互界面實驗;管道—過濾器模式軟件的設計及實現(xiàn);MVC風格軟件的設計與實現(xiàn);主要SA風格的(UML)描述;人工智能軟件SA的設計(實現(xiàn))、評估、編檔。約20學時。
  教師在對學生分組時候應注意人員搭配,根據(jù)情況及時調整,避免某些工作有的組進行不下去。學生分組后,按指定內容完成實驗,通過實驗使學生體會如何將理論轉換為實際軟件產(chǎn)品,掌握知識要點。根據(jù)學生特點,我們選取了難度和復雜度適中、包含人機交互的項目。每次實驗后組織課堂討論,交流經(jīng)驗體會。部分實驗內容如圖2~圖4所示。
  圖2中顯示一個可修改軟件質量屬性場景,主要讓學生掌握如何利用軟件工程基本知識,靈活適應需求變化。這些知識包括信息隱藏原則、最小權限原則、基于函數(shù)的過程設計、面向對象設計等,它們不僅是計算機專業(yè)學生應當掌握的基礎知識,而且也貫穿SA設計實現(xiàn)、發(fā)展演化的全部過程。圖3顯示管道—過濾器SA風格有著眾多實際應用,如編譯器、示波器等數(shù)據(jù)流處理系統(tǒng)?;诋斀穸嗪颂幚砥鞯钠占埃覀冏寣W生設計實現(xiàn)一個多線程環(huán)境下的管道—過濾器風格軟件。圖4的MVC實驗目的是讓學生掌握人機交互軟件的SA設計和實現(xiàn)。實驗開始前教師將一些基礎的算法程序交給學生,然后讓他們按照MVC風格將這些程序組織起來,形成一個容易拓展的軟件架構。其他實驗還包括SA的設計、UML描述、評估、文檔制作,等等,內容涵蓋SA教學環(huán)節(jié)的各主要方面,有效配合課堂教學。
  4結語
  SA課程建設涉及內容繁多,今后我們還需在以下方面加強努力:1)教學、實驗案例及教材建設;2)從
  
   SA到軟件實現(xiàn),如何保證質量屬性一致性;3)如何使SA教學適應工業(yè)軟件產(chǎn)品開發(fā)的實戰(zhàn)需求等。SA正向成熟期過渡,課程建設將緊緊圍繞學科發(fā)展方向和社會需求而進行。
  
  參考文獻:
  [1] Bourque

沙雅县| 铜鼓县| 长垣县| 兴文县| 三台县| 盐城市| 阜新| 雅安市| 拜泉县| 静海县| 镇江市| 佛山市| 泾川县| 河津市| 怀宁县| 武隆县| 伊吾县| 二手房| 新晃| 冕宁县| 崇左市| 海口市| 咸丰县| 海安县| 兰溪市| 商洛市| 宾阳县| 灵璧县| 区。| 北碚区| 霍山县| 伽师县| 周至县| 绩溪县| 镇巴县| 嵊泗县| 瑞丽市| 伽师县| 水富县| 万州区| 英德市|