葉鵬 倪友聰
摘要:軟件設(shè)計是本科階段軟件工程課程教學(xué)的重難點內(nèi)容,目前在教學(xué)實踐中,因缺乏軟件設(shè)計相關(guān)教學(xué)資源的支持,學(xué)生難以在有限教學(xué)課時內(nèi)理解抽象的理論并將其運用到軟件設(shè)計實踐中。文章提出一種軟件框架AF4JAVA,在此基礎(chǔ)上定義軟件設(shè)計實踐教學(xué)過程,形成一種軟件設(shè)計實踐教學(xué)方法。
關(guān)鍵詞:軟件工程;軟件設(shè)計;軟件框架;實踐教學(xué)
0、引言
軟件設(shè)計是軟件需求分析與實現(xiàn)之間的溝通橋梁,是軟件質(zhì)量形成的重要階段,在軟件開發(fā)中具有重要作用。因此,在本科階段軟件工程課程教學(xué)中,軟件設(shè)計被作為重點內(nèi)容進(jìn)行講授。然而,軟件設(shè)計既需要理解模塊化、信息隱蔽和功能獨立等抽象概念,又要把握高內(nèi)聚、低耦合等設(shè)計原則,同時還要了解已有的軟件體系結(jié)構(gòu)風(fēng)格、設(shè)計模式和軟件框架等與工程實踐密切相關(guān)的設(shè)計知識。因而,軟件設(shè)計一直被認(rèn)為是軟件工程課程教學(xué)難點中的難點。由于缺乏與軟件設(shè)計相關(guān)的教學(xué)資源,學(xué)生往往難以在有限教學(xué)課時內(nèi)理解這些抽象的概念、原則和方法并將其應(yīng)用于實踐,影響了軟件工程課程的教學(xué)效果。
近幾年在軟件工程教學(xué)研究工作中,國內(nèi)外高校主要通過引入CDIOm思想改進(jìn)傳統(tǒng)的軟件工程課程教學(xué),特別強(qiáng)調(diào)以項目驅(qū)動的方式培養(yǎng)和提高學(xué)生的軟件開發(fā)的實踐能力。這些研究都針對軟件工程教學(xué)改革進(jìn)行了有益的探索,但仍然缺乏有效的教學(xué)資源來幫助學(xué)生理解抽象的軟件設(shè)計理論知識,并切實培養(yǎng)和提高他們軟件設(shè)計的實踐能力。
1、軟件框架AF4JAVA簡介
軟件框架AF4JAVA是重要的教學(xué)資源,它幫助學(xué)生理解抽象的軟件設(shè)計理論知識,同時也為他們運用這些知識進(jìn)行軟件設(shè)計實踐起到指導(dǎo)作用。通過對Struts、Spring和Hibernate等JAVA開源框架進(jìn)行集成、封裝和抽象,構(gòu)建出AF4JAVA框架。AF4JAVA該框架中設(shè)計并實現(xiàn)了一組實現(xiàn)數(shù)據(jù)訪問、抽象的領(lǐng)域?qū)嶓w對象等功能軟件構(gòu)件,對學(xué)生隱蔽了使用JAVA開源框架的繁瑣細(xì)節(jié)。AF4JAVA框架本身不僅可以幫助學(xué)生更好地理解軟件體系結(jié)構(gòu)風(fēng)格、設(shè)計模型和軟件框架等知識,而且還能使學(xué)生利用它提供的可重用構(gòu)件,高效地進(jìn)行JAVA Web應(yīng)用軟件的設(shè)計。
AF4JAVA框架被分為用戶界面層(UIlayer),領(lǐng)域?qū)樱―omain layer)和數(shù)據(jù)訪問層(Data Access layer)三層,如圖1所示。用戶界面層用于實現(xiàn)圖形用戶接口GUI,提供用戶與應(yīng)用程序之間的交互。領(lǐng)域?qū)臃庋b了業(yè)務(wù)邏輯和業(yè)務(wù)實體,并向uI層提供業(yè)務(wù)功能接口。數(shù)據(jù)訪問層則封裝了對數(shù)據(jù)庫的訪問功能,為領(lǐng)域?qū)犹峁?shù)據(jù)訪問接口。
2.1 數(shù)據(jù)訪問層
數(shù)據(jù)訪問層由IDataContext、DataConteXt、Configure和Mappingfile 4個構(gòu)件組成。圖2所示為軟件框架AF4JAVA中數(shù)據(jù)訪問層的示意圖。其中IDataContext接口定義了對象的增刪改查、事務(wù)管理等操作。DataContext類通過使用Hibernate框架中的構(gòu)件,實現(xiàn)IDataContext接口。Configure中包含數(shù)據(jù)庫連接的配置文件。Mappingfile是用于定義對象一關(guān)系映射的文件。DataContext的實例根據(jù)數(shù)據(jù)庫連接配置和對象一關(guān)系映射關(guān)系,完成對數(shù)據(jù)庫的訪問操作。
2.2 領(lǐng)域?qū)?/p>
領(lǐng)域?qū)又杏蠭Service、Service和Entity 3個構(gòu)件,如圖3所示。其中IService中定義了一組接口ISubsystem_1,ISubsytem 2,……,ISubsystem_N,用于封裝子系統(tǒng)功能,并為用戶界面層提供業(yè)務(wù)服務(wù)。Service中包含了一組業(yè)務(wù)類Subsystem 1,Subsystem 2,……,Subsystem_N,用于描述IService中定義的子系統(tǒng)功能接口,這些業(yè)務(wù)類可以通過訪問層中的IDataContext接口數(shù)據(jù)實現(xiàn)對數(shù)據(jù)的訪問。Entity中定義了實體對象及其之間的關(guān)系。Entity又由Entityobject、ErrInf0和業(yè)務(wù)實體類構(gòu)成,如圖4所示。其中EntiyObject抽象類聲明了用于數(shù)據(jù)校驗的抽象方法valid,Errlnfo類封裝了錯誤字段和錯誤信息,BusinessEntity 1,BusinessEntity 2,……,BusinessEntity N是一組業(yè)務(wù)實體類,用于封裝業(yè)務(wù)服務(wù)過程中需要處理的數(shù)據(jù),通過繼承EntityOb~iect類實現(xiàn)數(shù)據(jù)校驗的抽象方法。
2.3 用戶界面層
UI層包括View、ViewModel和ViewController構(gòu)件,如圖5所示。其中View構(gòu)件用于定義一組JSP頁面WebPage 1,WebPage2,……,WebPage N。ViewModel為渲染JSP頁面提供數(shù)據(jù)或者保存從JSP頁面獲取的數(shù)據(jù)。ViewControUer中定義了一組JSP頁面請求處理的動作Action 1,Action 2,……,Action N等。這些動作通過調(diào)用領(lǐng)域?qū)又械臉I(yè)務(wù)服務(wù)接口完成具體的業(yè)務(wù)處理過程。
3、基于AF4JAVA框架的軟件設(shè)計實踐教學(xué)過程
基于AF4JAVA框架開展軟件工程實踐教學(xué)的總體目標(biāo)是:首先通過對AF4JAVA框架的講解,使學(xué)生能理解抽象的軟件設(shè)計理論知識,了解如何使用該框架進(jìn)行設(shè)計工作。然后讓學(xué)生通過模擬真實開發(fā)場景,在AF4JAVA框架和與之相關(guān)的軟件設(shè)計相關(guān)文檔模板等教學(xué)資源的支持下,完成對給定的實踐項目的軟件設(shè)計方案,以達(dá)到培養(yǎng)和提高學(xué)生軟件設(shè)計的實踐能力。
基于AF4JAVA框架的軟件工程實踐教學(xué)過程可分為初始階段、計劃階段、實施階段和評審階段4個階段。
1)初始階段。
該階段主要讓學(xué)生學(xué)習(xí)AF4JAVA框架,并明確軟件設(shè)計相關(guān)文檔的書寫要求。首先,教師在課堂教學(xué)中通過“用戶在線注冊”的簡單例子剖析基于AF4JAVA框架的軟件設(shè)計過程,使學(xué)生了解該框架的特點、內(nèi)容和用法。然后,將學(xué)生分成人數(shù)為4~5人的小組,并在組內(nèi)討論構(gòu)建AF4JAVA框架中使用的軟件體系結(jié)構(gòu)風(fēng)格、設(shè)計模式,以及遵循的設(shè)計原則等軟件設(shè)計理論知識。進(jìn)一步,講解基于AF4JAVA框架的UML設(shè)計模型、設(shè)計計劃書和設(shè)計規(guī)則約說明書等軟件設(shè)計相關(guān)文檔模板。最后,選定一個規(guī)模合適的實踐項目,給出其需求規(guī)格說明書,并要求學(xué)生分組討論該項目需求。endprint
2)計劃階段。
該階段主要是各個小組按照基于AF4JAVA框架的項目設(shè)計的工作計劃書模板,制訂實踐項目的設(shè)計計劃書。制訂計劃書過程主要步驟為:①按照項目需求規(guī)格說明書,將待開發(fā)軟件系統(tǒng)劃分成若干子系統(tǒng),確定這些子系統(tǒng)中用例的優(yōu)先級,并進(jìn)行排序。②將每個子系統(tǒng)的設(shè)計任務(wù)進(jìn)行分割,并將這些分割后的任務(wù)分配給小組成員,設(shè)定完成期限,估算完成每個子系統(tǒng)設(shè)計任務(wù)需要迭代的次數(shù),據(jù)此估算完成每個子系統(tǒng)設(shè)計需要的時間。③制訂小組討論會的計劃,要求在每次迭代完成時進(jìn)行必要的組內(nèi)評審和回顧,保證設(shè)計的質(zhì)量。
3)實施階段。
該階段中項目小組按照項目設(shè)計計劃書開展工作,建議采用迭代增量式的軟件設(shè)計過程,如圖6所示。下面對該過程中的每個步驟進(jìn)行介紹。
步驟1(靜態(tài)結(jié)構(gòu)的設(shè)計):按照計劃書中任務(wù)分割和分配情況,利用基于AF4JAVA框架的UML設(shè)計模型中預(yù)定義的類和接口,小組成員使用UML類圖說明某一子系統(tǒng)的用戶界面層、領(lǐng)域?qū)釉O(shè)計和數(shù)據(jù)層中包含的類,以及3個層次間的接口設(shè)計。
步驟2(動態(tài)行為的設(shè)計):小組成員使用UML活動圖、順序圖說明該子系統(tǒng)各層次內(nèi)部、層次之間的交互以及外部與子系統(tǒng)之間的交互。
步驟3(設(shè)計規(guī)約的書寫):根據(jù)步驟l和步驟2得到的設(shè)計模型,按照AF4JAVA框架的設(shè)計規(guī)約說明書模板,書寫該待建子系統(tǒng)的設(shè)計規(guī)約說明。
步驟4(組內(nèi)評審):小組成員通過討論會評審該次迭代的設(shè)計結(jié)果。評審的結(jié)果決定小組是否調(diào)整后續(xù)的迭代過程。同時在討論會上也要回顧此次迭代過程中好的和不好的做法,幫助提高后續(xù)設(shè)計工作的效率。
重復(fù)步驟1~步驟4,直至完成整個項目的設(shè)計方案。
4)評審階段。
最后,以項目答辯的形式,各組匯報自己的設(shè)計工作完成情況。答辯時,必須提交項目設(shè)計的工作計劃書、設(shè)計說明文檔和答辯演示文稿。根據(jù)各組完成設(shè)計工作的表現(xiàn),教師進(jìn)行講評和最后總結(jié)。
4、結(jié)語
軟件框架AF4JAVA為學(xué)生提供了一種直觀的、有效的軟件設(shè)計的教學(xué)資源。實踐證明,基于AF4JAVA框架的軟件設(shè)計實踐教學(xué)過程,幫助了學(xué)生理解軟件設(shè)計的抽象概念,同時也使學(xué)生能更好地進(jìn)行軟件設(shè)計實踐,進(jìn)而改善軟件工程實踐教學(xué)的效果。下一步,我們將繼續(xù)完善該框架的內(nèi)容,優(yōu)化基于該框架的軟件設(shè)計實踐教學(xué)過程。endprint