周瑛+牛瀏
摘要:RUP與UML結(jié)合是目前最有效的面向?qū)ο蟮慕<夹g(shù)。然而,RUP非常龐大,使用時還得做裁剪。通過對RUP進(jìn)行裁剪,可以得到很多不同的軟件開發(fā)過程?;赗UP和UML,該文提出了一種能有效快速建模開發(fā)軟件的方法,并通過對一個課程管理系統(tǒng)的建模,給出該方法的應(yīng)用細(xì)節(jié)。實(shí)踐表明,在軟件的開發(fā)過程中,這種基于用例驅(qū)動,以類圖為核心的軟件開發(fā)過程,比RUP更簡單實(shí)用,能清晰快速地構(gòu)建軟件系統(tǒng)的模型。
關(guān)鍵詞:軟件開發(fā);面向?qū)ο蠼#籖UP;UML;課程管理系統(tǒng)
中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2014)11-2556-06
Abstract: RUP combined with UML is the most effective object oriented modeling technology. However, RUP is very large and complex, and must be cuted before using. Cutting of RUP can get a lot of different software development process. Based on RUP and UML, this paper presents an effective method for rapid modeling and developing software, and reveals the details of this method in application, by modeling on a course management system. Practice shows that, in the development of the software, this based on use case driven, class diagram centered software development process, is more simple and practical than RUP, and can quickly build software system model.
Key words: software development; Object—Oriented modeling; RUP; UML; course management system
統(tǒng)一建模語言[1](Unified Modeling Language, UML)是一種定義良好、易于表達(dá)、功能強(qiáng)大且普遍適用于軟件開發(fā)的建模語言。但是UML本身并沒有告訴人們怎樣使用它,為了有效地使用UML,需要有一種方法應(yīng)用于它。Rational的統(tǒng)一過程[2](Rational Unified Process,RUP),是由發(fā)明UML的3位方法學(xué)家提出的,與其他軟件開發(fā)過程相比,使用RUP可以更好地進(jìn)行UML建模[3]。然而,RUP是一個通用的過程模板,由于它非常龐大所以對具體的開發(fā)機(jī)構(gòu)和項(xiàng)目,用RUP時還要做裁剪,也就是要對RUP進(jìn)行配置。RUP就像一個元過程,通過對RUP進(jìn)行裁剪和改進(jìn)可以得到很多不同的開發(fā)過程[4-8]。
本文基于RUP中的需求分析、系統(tǒng)分析、系統(tǒng)設(shè)計(jì)、系統(tǒng)實(shí)施、系統(tǒng)測試五個工作流;選取UML中的用例圖、類圖、活動圖、狀態(tài)圖、順序圖、組件圖、部署圖等7種圖作為各個工作流的產(chǎn)品,圍繞RUP以用例為驅(qū)動、以構(gòu)架為中心、增量迭代的三個特點(diǎn),結(jié)合結(jié)構(gòu)化方法的思路,構(gòu)建了一種快速建模開發(fā)軟件的方法。軟件開發(fā)的演進(jìn)過程如圖1所示。
該方法重視用戶需求,以用例圖和GUI原型雙重工具來保證用戶需求分析的準(zhǔn)確性,分析模型類圖到設(shè)計(jì)模型類圖的轉(zhuǎn)換體現(xiàn)了增量迭代,以類圖為核心來設(shè)計(jì)數(shù)據(jù)庫,自動生成代碼框架,可以提高軟件開發(fā)效率,避免模型之間轉(zhuǎn)換的誤差。
1 需求分析
需求分析的主要任務(wù)是以用例圖作為工具,輔以GUI原型來描述用戶的需求。
操作步驟為:首先,從業(yè)務(wù)描述中提取術(shù)語表,根據(jù)業(yè)務(wù)描述和術(shù)語表設(shè)計(jì)出用例圖,并且給出詳細(xì)的用例描述,然后,給出系統(tǒng)的GUI原型,最后讓用戶確認(rèn),客戶不滿意,進(jìn)行修改,可迭代多次,以挖掘用戶潛在的需求,直到客戶滿意。
1.1 繪制用例圖
用例圖是軟件設(shè)計(jì)的依據(jù),包括用例、參與者、關(guān)系與系統(tǒng)四個部分。要注意的是用例是一個完整的功能,而不是某個功能的一個執(zhí)行步驟;參與者是系統(tǒng)的使用者或跟系統(tǒng)有數(shù)據(jù)來往的人、設(shè)備、其他系統(tǒng)等;關(guān)系包含有關(guān)聯(lián)關(guān)系、泛化關(guān)系、包含關(guān)系和擴(kuò)展關(guān)系。一個完整的用例模型不僅包含用例圖,還應(yīng)該有用例描述。
1.2 構(gòu)建GUI原型
構(gòu)造GUI原型的目的是讓用戶提前預(yù)覽一下系統(tǒng)開發(fā)出來以后大概是什么樣子,挖掘出潛在的需要。
以課程管理系統(tǒng)為例,其業(yè)務(wù)描述為:
目前,高校教師課程管理基本還處于教師上課,上完課布置作業(yè),學(xué)生交作業(yè),教師批改作業(yè),統(tǒng)計(jì)成績,期末還得統(tǒng)計(jì)全班學(xué)生一學(xué)期作業(yè)的成績,而且有些教師還不只教一門課一個班,管理十分麻煩。希望能開發(fā)一個系統(tǒng)來幫助管理課程,系統(tǒng)具有登錄和找回密碼功能,教師登錄以后能對課程信息和用戶信息進(jìn)行增、刪、查、改等管理操作,可以布置作業(yè),批改作業(yè),自動生成成績單;學(xué)生可以查看課程信息,下載課件,提交作業(yè),查看成績單等操作。
首先,根據(jù)以上業(yè)務(wù)描述然后,根據(jù)用例圖和業(yè)務(wù)描述構(gòu)建一個系統(tǒng)GUI原型,教師登錄后顯示主窗口,通過主窗口中能實(shí)現(xiàn)用戶管理,課程信息管理,批改作業(yè)等功能;學(xué)生登錄后顯示主窗口,能實(shí)現(xiàn)查看課程信息,下載課件,提交作業(yè),查看成績等功能。
最后,讓用戶測試GUI,如果不滿意,給出反饋意見,根據(jù)反饋意見對用例圖和GUI原型進(jìn)行修改,再交給客戶測試,如此反復(fù)直到客戶滿意。endprint
2 系統(tǒng)分析
系統(tǒng)分析主要任務(wù)是構(gòu)建分析模型類圖,為主要對象和業(yè)務(wù)繪制狀態(tài)圖和活動圖。在構(gòu)建類圖時發(fā)現(xiàn)用例圖,或者潛在的需求,可進(jìn)行迭代,修改完善用例圖。
2.1 繪制分析模型類圖
類圖是系統(tǒng)模型中最重要的圖形,是軟件設(shè)計(jì)的核心,它是UML中唯一能產(chǎn)生程序代碼的圖形。類圖包括類和關(guān)系兩個部分。類由類名、屬性和操作組成;關(guān)系分為關(guān)聯(lián)關(guān)系、泛化關(guān)系、依賴關(guān)系、實(shí)現(xiàn)關(guān)系、組合關(guān)系和聚合關(guān)系。
分析模型類圖中的類和編程中的類不一樣,不包含控制類和界面類,而且和系統(tǒng)實(shí)際編碼中的類可能也對應(yīng)不上。它只是表達(dá)業(yè)務(wù)領(lǐng)域中的一個靜態(tài)結(jié)構(gòu),包括業(yè)務(wù)實(shí)體、各個業(yè)務(wù)實(shí)體所具有的業(yè)務(wù)屬性及業(yè)務(wù)操作、業(yè)務(wù)實(shí)體之間具有的關(guān)系。
分析模型類圖的設(shè)計(jì)可用動詞名詞法,將業(yè)務(wù)描述或者用例圖中的所有名詞找出來,再進(jìn)行篩選,抽象成類或類的屬性;將所有的動詞找出來,篩選出來,設(shè)計(jì)成類的操作??梢允褂妙悺?zé)任—協(xié)作者(class—responsibility—collaborator,CRC)卡片法,分析檢查類圖設(shè)計(jì)的合理性。2.2 繪制狀態(tài)圖、活動圖
2.2.1 狀態(tài)圖
狀態(tài)圖是描述一個實(shí)體基于事件反應(yīng)的動態(tài)行為,顯示了該實(shí)體如何根據(jù)當(dāng)前所處的狀態(tài)對不同的事件做出反應(yīng)的,由表示狀態(tài)的節(jié)點(diǎn)和表示狀態(tài)之間轉(zhuǎn)換的帶箭頭的直線組成。
對于狀態(tài)較多,轉(zhuǎn)換比較頻繁的系統(tǒng)對象,給出狀態(tài)圖。2.2.2 活動圖
活動圖主要用于描述闡明了業(yè)務(wù)用例實(shí)現(xiàn)的工作流程,又稱面向?qū)ο箢I(lǐng)域中的流程圖,但與流程圖又有區(qū)別。活動圖能夠表示并發(fā)活動的情形,而流程圖做不到。流程圖著重描述處理過程,各個處理之間有嚴(yán)格的順序和時間關(guān)系;活動圖有泳道,描述的則是對象活動的順序關(guān)系所遵循的規(guī)則,著重表現(xiàn)的是系統(tǒng)的行為。
在用例圖基礎(chǔ)上,進(jìn)一步細(xì)化用例描述,以分析模型類圖中類的對象為泳道,繪制出主要的活動圖。
3.1 繪制設(shè)計(jì)模型類圖
設(shè)計(jì)模型類圖一般包括三個類:實(shí)體類、控制類、界面類,具體如下:
1) 實(shí)體類即系統(tǒng)需求中的實(shí)體,一般需要保存在數(shù)據(jù)庫表或文件中,包括存儲、傳遞數(shù)據(jù)的類和操作數(shù)據(jù)的類,主要來源于需求說明中的名詞。
2) 控制類用于體現(xiàn)應(yīng)用程序的執(zhí)行邏輯,提供相應(yīng)的業(yè)務(wù)操作,將控制類抽象出來可以降低界面和數(shù)據(jù)庫之間的耦合度,一般是由動賓結(jié)構(gòu)的短語轉(zhuǎn)化來的名詞命名。
3) 邊界類用于對外部用戶與系統(tǒng)之間的交互對象進(jìn)行抽象,主要包括界面類,如對話框、窗口、菜單等。
可把分析模型類圖中的類映射成設(shè)計(jì)模型類圖中的實(shí)體類,把增、刪、查、改等公共操作封裝成控制類,根據(jù)用戶確認(rèn)的GUI型設(shè)計(jì)界面類。分析模型類圖到設(shè)計(jì)模型類圖的轉(zhuǎn)換體現(xiàn)了增量迭代。順序圖是對系統(tǒng)的動態(tài)建模,是對設(shè)計(jì)模型類圖的補(bǔ)充,它描述了對象的方法的調(diào)用情況,順序圖和類圖的聯(lián)系最為緊密,在順序圖中添加一個消息,就應(yīng)該在消息所指向的對象類圖中的類添加一個方法。
3.2.2 組件圖
組件圖是用來反映代碼的物理結(jié)構(gòu),提供當(dāng)前模型的物理視圖,對系統(tǒng)的靜態(tài)實(shí)現(xiàn)視圖建模。組件圖顯示一個系統(tǒng)物理設(shè)計(jì)時,組件所映射的類和對象的配置。根據(jù)用例圖和設(shè)計(jì)模型類圖,畫出系統(tǒng)的組件圖。課程管理系統(tǒng)組件圖如圖12。
3.2.3 部署圖
部署圖描述運(yùn)行軟件的系統(tǒng)中硬件和軟件的物理結(jié)構(gòu)。部署圖中節(jié)點(diǎn)是在運(yùn)行時代表計(jì)算資源的的物理元素,關(guān)聯(lián)關(guān)系表示各節(jié)點(diǎn)之間通信路徑一般使用反應(yīng)連接類型的構(gòu)造型命名。
4 系統(tǒng)實(shí)施
系統(tǒng)實(shí)施主要任務(wù)是設(shè)計(jì)并實(shí)現(xiàn)數(shù)據(jù)庫,并且選擇編程語言進(jìn)行編碼,將模型轉(zhuǎn)換成可運(yùn)行的系統(tǒng)。
4.1 數(shù)據(jù)庫的實(shí)現(xiàn)
分析模型類圖與數(shù)據(jù)庫設(shè)計(jì)中的E-R圖是緊密相關(guān)的,類圖中的類就是E-R圖中的實(shí)體,類與類之間的關(guān)系與E-R圖中的關(guān)聯(lián)是相對應(yīng)的,所以,在面向?qū)ο箝_發(fā)方法中,一般可以直接將分析模型類圖映射成數(shù)據(jù)庫中的表。將類與類關(guān)系映射成表與表之間的關(guān)系[3]。由于依賴關(guān)系強(qiáng)調(diào)的是類操作間的使用關(guān)系,類圖到表結(jié)構(gòu)的映射中并不涉及這種關(guān)系,只要考慮泛化關(guān)系、關(guān)聯(lián)關(guān)系到表的映射規(guī)范。這樣可以迅速構(gòu)建數(shù)據(jù)庫,具體方法如下[3]:
1)泛化關(guān)系只將子類映射為表,表中包含子類自身的屬性和繼承自父類的屬性,并添加一個ID號作為主鍵。
2)關(guān)聯(lián)關(guān)系的映射分為三種情況:一對多的關(guān)系,一方的主鍵加入多方成為外鍵;一對一的關(guān)系一方的主鍵加入另一方成為外鍵;多對多的關(guān)系映射:產(chǎn)生第三張表,將兩個多方的主鍵加入其中成為外鍵,兩個外鍵的組合成為主鍵。
4.2 ROSE正向工程的應(yīng)用
軟件系統(tǒng)的各種UML模型只是模型,并非可執(zhí)行的系統(tǒng),為了快速開發(fā)軟件,可以使用一些UML建模工具,如Rational Rose等,根據(jù)UML模型自動生成軟件系統(tǒng)的主要框架代碼,然后,再由系統(tǒng)開發(fā)人員補(bǔ)充必要的系統(tǒng)細(xì)節(jié)代碼。
5 系統(tǒng)測試
系統(tǒng)實(shí)施完畢后,對可運(yùn)行系統(tǒng)進(jìn)行單元測試、α測試和β測試,然后將系統(tǒng)部署到實(shí)際工作環(huán)境中去,進(jìn)行系統(tǒng)驗(yàn)收測試,最后正式交給用戶使用。由于需求分析階段讓用戶對GUI原型作了反復(fù)測試,確認(rèn)了需求,只要系統(tǒng)β測試沒問題,應(yīng)該是能很好地滿足用戶需求的。
6 結(jié)束語
本文展示了軟件開發(fā)過程及UML之間的關(guān)系,圍繞RUP以用例為驅(qū)動、以構(gòu)架為中心、增量迭代的三個特點(diǎn),結(jié)合結(jié)構(gòu)化方法的思路,提出了一種利用UML快速建模開發(fā)軟件的方法,并且給出了課程管理系統(tǒng)這一實(shí)例,以展示該方法的應(yīng)用細(xì)節(jié)。該方法重視需求分析,以類圖為核心生成代碼,設(shè)計(jì)數(shù)據(jù)庫,比RUP更簡單實(shí)用,比結(jié)構(gòu)化方法更快捷,思路更接近人的自然思維。希望本文對快速開發(fā)軟件項(xiàng)目具有一定的理論和現(xiàn)實(shí)意義。
參考文獻(xiàn):
[1] Unified Modeling Language Specification 2.0[S].OMG,2005,7.
[2] 克魯奇特.Rational統(tǒng)一過程引論(中譯本)[M]. 2版.北京:機(jī)械工業(yè)出版社,2002.
[3] 牛麗平,郭新志,宋強(qiáng),等.UML面向?qū)ο笤O(shè)計(jì)與分析[M].北京:清華大學(xué)出版社,2010.
[4] 常曉,王鳳霞,張景,等.基于RUP的UML建模方法研究[J].計(jì)算機(jī)工程與應(yīng)用,2004,40(21):126-130.
[5] 蘇士勇,寧云才,李學(xué)慶.改進(jìn)的基于RUP的軟件分析設(shè)計(jì)方法[J].計(jì)算機(jī)工程與設(shè)計(jì),2009(11): 2610-2614.
[6] 王璐,王永貴,曲海成.RUP可視化建模的研究與應(yīng)用[J].計(jì)算機(jī)工程與科學(xué),2009,31(3):101-103.
[7] 張獻(xiàn)忠,崔玲.基于RUP的可視化建模研究與應(yīng)用[J].電腦知識與技術(shù),2013,9(2):793-795.
[8] 王萍,和海蓮.基于RUP的UML建模技術(shù)的研究及應(yīng)用[J].信息與電腦,2013(4):38-39.endprint