

關鍵詞:UML建模;面向對象分析;軟件工程
中圖法分類號:TP311 文獻標識碼:A
“軟件工程”課程的綜合性很強,其將多門計算機相關課程的知識進行了融合。“軟件工程”課程教學的主要目標是幫助學生理解軟件開發的特點和原理,掌握基本的開發技能,能夠應用軟件開發來解決實際問題,以提升其實踐能力和專業素養。當前,面向對象的方式是主要的軟件開發方式,因此結合市場需求特點和技術發展形勢,在實際教學中也主要使用此方式。
面向對象的軟件開發和面向過程的軟件開發有一個共同特點,即具有一定生命周期,體現在可行性分析、需求分析、設計等各個環節,對于面向對象的軟件工程來說,不同階段之間并沒有非常明確的界線。但是,在軟件開發中,發現問題越早,越能夠以更小的代價及時解決。因此,這就要求前期的設計分析必須嚴謹、到位、計劃明確,以避免后期實現過于倉促和粗糙,進而導致后期需要付出極大的維護和修復成本。在眾多工程技術中,建模是其中普遍使用并且得到實踐檢驗的技術。若要闡述清楚一個系統的組織結構或動態邏輯,則可以嘗試采用不同的角度、模型來劃分系統結構和組織,從而有效推動系統設計開發。
1 UML特點概述
UML的提出是“站在巨人的肩膀上”的,其吸收和提煉了眾多建模語言的特點和優勢,因此其表達能力也是空前的優越,能夠有效表達系統模型,其作為一種輔助工具可有效幫助面向對象分析設計,主要特點如下。
(1) UML在圖形表示和基本概念方面,具有Booch,OMT和OOSE等方法特點,對符號系統進行了統一、規范和簡化,并且對符號系統進行了補充和更新,使其具有更強大的表達能力。項目的具體需求不同,可以選擇不同的圖形符號,以滿足個性化表達需求。(2) UML是獨立存在和使用的,不受編程語言約束,能夠在設計開發中搭建起溝通的中介和橋梁。(3)在進行具體建模時,若想實現最佳應用效果,則應選取簡單有效的UML圖形,并結合具體情況進行合適的搭配和表達。(4)結合實際的應用需求和環境變化,UML也在不斷演變更新,提出了很多新的概念和形式。
UML提出的模型類型多樣,能夠滿足不同情況和需求,從而更好地滿足人們解決實際問題的需求。其能夠建立更加完善、成熟的系統模型,從而更好地幫助不同人群理解問題,對抽象概念有更加準確的了解,使后期的實際推進和維護也更加可行。軟件工程教學也是采用面向對象的軟件工程教學,為了讓學生對抽象的專業概念和冗雜的知識有更準確、清晰的認識,采用UML結合具體實例的方法,進而使教學過程更加具體、可行。
2對象軟件工程教學中UML的應用
開發軟件的第一步是需求分析,由開發人員進行需求調查和解析,力求準確、全面;第二步是在需求分析的基礎上進行產品的設計,將其轉換為成果,并且根據產品特點選擇匹配的語言,實現編碼需求;最后一步,需要進行后續的測試環節,包括單元、集成和系統測試,至此目標系統才算完成。開發階段不同,所使用的開發方法也不同。“軟件工程”課程的特點是關注理論教學和實踐提升,前者主要采用案例教學方法,后者主要利用軟件項目進行驅動。綜上,實際的教學過程主要是以軟件開發為導向和線索,通過實際工程案例的分析,結合UML技術,進行建模實踐,從而推動實現軟件,并以此為依據進行軟件測試。項目講解過程中全程貫穿UML技術,學生通過實際案例深刻理解面向對象思想的引領作用。同時,理論結合實踐,幫助學生理解抽象概念知識,如類、接口等,又使其對軟件工程的開發過程和指導思想有了實際理解。
UML建模技術對于面向對象的軟件開發過程主要的作用體現在以下幾方面:可以根據實際需求進行系統個性化的可視化操作;能夠對系統行為、結構進行描述;系統構造有一定模板;決策能夠更好地進行文檔化操作。這里的具體分析和解釋說明選擇的案例是圖書館管理系統的讀者功能。
2.1需求分析
軟件開發過程中的第一個環節就是對用戶需求進行明確和分析。對于面向對象的軟件開發來說,主要以用例模型來體現。用例模型的構成部分包括參與者、用例、它們的關系,參與者和用例之間的關系為關聯關系,參與者相互之間的關系為泛化關系,用例相互之間的關系有不同類型,包括包含、擴展、泛化等,這里選擇的實際案例是圖書管理系統。
當前的圖書館管理系統,讀者主要的權限是自助借還書,通過實際調查和分析發現,讀者還有很多其他功能需求,包括賬號登錄和操作,對圖書信息的查詢處理,以及超時提交罰款等。若要建立用例模型,首先需要對參與者進行識別,然后是讀者。其次,需要對用例進行確定,也就是讀者的功能需求,包括借還書、賬號登錄操作、書籍信息查詢等。最后需要對用例間關系進行明確,例如登錄系統可能會忘記密碼,需要進行密碼找回,因此找回密碼與登錄之間存在拓展關系:借書時需要對讀者身份進行驗證,因此身份驗證和借書兩個功能間存在包含關系:還書時如果超時,需要進行罰款提交,因此罰款提交和還書之間存在擴展關系等。通過對這些用例關系進行梳理和分析,能夠將讀者用例圖構建起來,如圖1所示。這種具體的實際案例、用例模型的分析,學生能夠對其中的不同角色有更好的理解,并且更加明確這些關系概念,從而對其邏輯關系、知識結構等有更深刻的理解和掌握。
2.2系統分析和設計
系統分析的主要任務是解決“怎么做”的問題,重點是依托概念層的類圖對系統靜態結構進行再現,通過交互圖、狀態圖等來反映系統的變化。描述系統動態行為可以表現對象之間的關系,反映彼此信息溝通,發現可能導致對象狀態變化的事件、行為等,繼而發現類的屬性與行為,形成具有完全意義的類。
UML中交互圖的構成是由適應不同使用場景的順序圖、通信圖、交互概覽圖以及時序圖等構成的,其中,順序圖和通信圖是主要構成要素。順序圖反映消息傳輸的時間順序,以及反映用例的行為順序,通信圖是表示信息收發雙方之間的組織關系。通常來說,順序圖和通信圖能夠實現轉換。
讀者選用自助借書功能時,第一步需要通過驗證讀者證來確認合法身份。驗證成功后,讀者可以根據提示在指定位置放置書籍,系統會對書籍進行自動識別,從而明確借閱是否超期等。若該圖書證還可以借閱書籍,則會在系統里創建該讀者借閱該書的信息。順序圖就可以反映這個過程,包含讀者的行為順序和時間消耗等。若讀者完成身份驗證,則借書記錄方要進行借書合法性查閱和借書操作、更新圖書信息等,這屬于有對應的方法。若要反映交互的空間性,則可以采用通信圖來描述。
在對象的有效時間周期中,如果發生變化或者狀態改變,就需要狀態圖對該段時間內的變化進行描述,通過對引發狀態改變的行為進行分析和歸類,以總結出引發變化的方法。在圖書自動化管理系統中,新書信息寫入系統后才能實現自動借閱,此時書籍會存在可借、借出和超期等狀態,這些狀態可以改變。如果不允許書籍流通,就需要將其信息刪除。描述書籍狀態的改變就是狀態圖。分析導致狀態改變的行為、條件等,就能找到書籍類新增、借出、已還等方法。若完成某個任務需要多個對象進行交互,或者反映某個工作的具體流程,則就需要活動圖進行描述,如圖2所示。
無論是系統分析或是設計階段,類圖建模都是重要的內容,包括簡單的概念層類圖,和較為復雜的能夠為系統開發小組所理解的類。設計階段需要借助類圖、包等進行接口設計,活動圖能夠對其中的復雜方法和主要算法流程進行描述。比如,在圖書館信息系統中,例圖、順序圖、狀態圖等就能反映讀者的基本情況和圖書的借閱信息等。在搭建類圖的流程中,要明確類的屬性和具體操作,對類與類間的多重性等進行具體闡述。初步完成系統模型后,還要立足項目設計需求,對整個設計進行完善和升級,如對設計進行整體統籌,明確各類指標的優先級,實現具體參數的優化;闡述較為實用的增效的技術,包括增加冗余關聯,提升訪問效率,擴大限定關聯,縮小查詢范圍,減少派生屬性等具體操作方面的技巧。
2.3實現階段
面向對象的技術研發在實現層面需要完成的任務有2部分:一是把之前分析設計的結果進行解讀,以便對具體面向對象的程序語言進行理解并書寫,二是完成具體的實效測試。在設計的實現階段,主要從實現層類圖變成具體的程序結構,增加控制類;順序圖、活動圖等可以表述程序的完成流程;根據通信圖中的消息傳輸情況,可以找到對應的操作函數和屬性變量;根據狀態圖反映的變量或者行為發現對應類的操作。
設計實現的各個階段都要依托具體的測試,包括單元測試、集成測試和系統測試等。它們的關系具體表現為:單元測試是根據實現層類圖和類的說明書來測試已經完成的程序,集成測試是依據設計類圖、構件圖、通信圖等,確保程序模塊在系統中的正確位置;系統測試是依據例圖對系統功能順利、正確運行進行測試,以滿足用戶的具體要求。講解測試理論和實現要結合UML系統的分析和設計,從而讓理論更便于理解,以及對UML在面向對象軟件開發中的重要意義進行精準描述,以加深認識。
2.4運行和維護階段
完成全部系統測試后,要對系統進行運行和維護,依據UML配置圖,讓系統軟件和硬件在具體場景中進行運行。在這個過程中,如果發現問題就要及時進行維護和調試,從而發現問題并進行整改。
3結束語
講解面向對象的“軟件工程”課程需要引入多個抽象的概念和理論,UML提供了多角度觀察和描述軟件系統特征的具體策略,能夠被應用到軟件開發的具體場景和不同階段中:UML模型和軟件工程項目實踐相結合,能夠提升教學的直觀性和實用性,讓學生能夠更深入地了解教學內容,也能更好地展示教學內容的系統性,從而有助于落實各項教學任務和教學要求。
作者簡介:
李莉(1980—),碩士,講師,研究方向:軟件工程。