在《軟體工程——快速掌握結構化開發方法》一文中,我們講述了如何用結構化開發方法開發乙個簡單的專案案例,並重點討論了在結構化分析和結構化設計階段使用事件、資料流圖模型、資料字典、er模型、結構圖模型完成專案的分析與設計的整個過程。
在結構化開發方法中,利用資料流圖模型對系統進行層層分解,將乙個大的系統分解為多個程式模組,資料流圖中需要儲存的資訊通過er圖建立資料模型,其功能模型和資料模型是分離的,也就是說在結構化開發方法中,程式和資料是分離的。另外,程式的結構要遵循每個程式模組只有乙個入口和乙個出口,在程式模組內部只能採用順序、選擇、重複三種基本的控制結構。
物件導向開發方法把系統看作是一起工作來完成某項任務的相互作用的事務集合,事務也稱為物件。物件導向開發方法主要有物件導向分析、物件導向設計、物件導向程式設計三個階段,分別對應軟體開發生命週期的系統分析、系統設計、系統實施三個階段。物件導向分析識別出系統中的所有物件以及物件之間的關係,在物件導向分析中主要使用的圖形模型有用例圖和類圖;物件導向設計對已識別的物件進行細化,並定義出其全部屬性和方法,在物件導向設計中主要使用的圖形模型是類圖、順序圖;物件導向程式設計使用具體的語言或環境來實現這些物件。
物件導向開發方法與結構化開發方法完全不同,在物件導向方法中,既沒有程式和過程,也沒有資料實體和檔案,系統只是由物件組成。也可以這麼說,物件導向開發方法中的物件是結構化開發方法中的實體、資料和程式模組的組合體,它具有屬性和行為,同時可以對系統發出的訊息進行響應。
物件導向方法採用的模型主要是uml建模語言,uml從系統的不同角度出發,定義了用例圖、類圖、物件圖、狀態圖、活**、順序圖、協作圖、構件圖、部署圖等九種圖。這些圖形模型從不同的側面對系統進行描述。在實際分析和設計中,這九種圖形模型不一定全部用到,常用的圖形模型有用例圖、類圖、順序圖、部署圖。
有了需求事件列表,就可以歸納和抽象出系統相關角色了。需要注意的是,角色不是指具體的人和事務,而是表示人或事物在系統中所扮演的角色。例如圖書管理系統有管理員和借書者兩個角色,小張既可以是管理員角色,也可以是借書者角色。從事件列表中歸納和抽象出來的角色就是系統中要識別的物件。
識別出角色後,就可以建立角色用例圖了,角色用例圖從系統的角度描述了角色(物件)的行為及角色間的關係。類似資料流圖要配備資料字典一樣,角色用例圖也要配備用例規約,用例規約描述了用例圖中每個用例的用例名稱、參與角色、與其它用例間的關係、前置條件、後置條件、操作流程、輸入與輸出資料項等內容。下圖是表2角色的系統用例圖。
角色用例圖確定後,還需要對每個用例配置用例規約,用例規約內容組成沒有強制要求,以能夠為物件導向設計提供充分的參考依據為原則。下面給出角色資料庫【訪問資訊】用例的用例規約。
至此,分析階段的用例和類圖的建模已經完成,後續還需要根據用例和類圖模型建立介面模型。例如,user類有登入、註冊、新增名片的行為,就需要為user類提供執行這些行為的介面模型。有很多影象繪製工具支援介面模型的建模,如常用的photoshop等工具。
分析階段完成後,就可以進入物件導向的設計階段了。物件導向分析主要關心系統的功能和業務,無需關心與計算機實現相關的內容。到了物件導向設計階段,就要充分考慮系統體系結構、執行環境、程式語言等與計算機實現相關的內容。例如bs架構或cs架構的設計思路和方案就完全不同,在bs架構中,不同的設計框架其設計方案也不完全相同。
在bs架構中,比較流行的設計框架是mvc框架,它將業務邏輯、資料、介面顯示分離的方法來組織程式,業務邏輯放到乙個部件或模組中。這樣做的好處是,當修改使用者介面時,不需要重新編寫業務邏輯。mvc框架是模型(model)、檢視(view)、控制器(controller)的縮寫,model可以理解為實體物件,只有屬性沒有行為,實體物件的所有行為都放置在控制器中;view可以理解為使用者介面,如jsp、aspx頁面等;controller是控制器,負責處理與實體物件相關的業務邏輯,並從檢視接收和回傳資料到檢視。
在uml建模語言中,也提供了一種劃分類的方式,分為邊界類、實體類和控制類。邊界類主要用於描述使用者與系統之間的互動物件,例如jsp、aspx頁面等,邊界類與mvc中的檢視對應;實體類主要用於描述具體的實體物件,通常對映到資料庫表或檔案中,實體類與mvc中的模型對應;控制類主要用於描述系統中業務邏輯,例如分析階段中類的行為,在設計階段可以放置到控制類中實現,控制類與mvc中的控制器對應。設計類圖如下圖所示。
在上面的設計類圖中,usercontroll類和cardcontroll類是mvc框架的控制器類,login.jsp、register.jsp、card.jsp前端頁面是mvc框架的檢視,user是mvc框架的實體類。
給出設計類圖後,還需要給出控制器類每個業務處理方法的順序圖,以明確業務邏輯處理過程。下面給出usercontroll類register()業務處理方法的順序圖。
上圖給出了使用者註冊業務邏輯處理過程,整個過程從使用者進入註冊頁面開始,涉及到register.jsp頁面、usercontroll物件、user物件和database物件。
在物件導向設計階段,除了給出設計類圖、順序圖等設計模型外,還需要給出資料庫設計、介面設計、軟體部署等設計模型,這裡就不再一一給出了。
物件導向的程式設計實現是在物件導向設計的基礎上,將設計階段的設計模型對映為計算機程式設計結構。對映工具可以是**自動化生成工具,**自動化生成工具可以根據設計類圖自動生成類**。但大部分編碼還需要人工來實現,如mvc框架中jsp頁面的實現、控制器類的業務邏輯處理**、服務類的實現**等。
在物件導向程式設計過程中,物件導向的封裝、繼承、多型、抽象等特徵已經在設計階段完成,因此在程式設計階段無需考慮物件的封裝、繼承、多型、抽象等特徵的實現。
1、物件導向開發方法與結構化開發方法完全不同,在物件導向方法中,既沒有程式和過程,也沒有資料實體和檔案,系統只是由物件組成。也可以這麼說,物件導向開發方法中的物件是結構化開發方法中的實體、資料和程式模組的組合體,它具有屬性和行為,同時可以對系統發出的訊息進行響應。
2、物件導向開發方法分為物件導向分析、物件導向設計和物件導向程式設計實現三個階段。其中最重要的是物件導向分析和物件導向設計兩個階段。物件導向開發方法主要的分析和設計模型是uml建模語言,物件導向分析一般用到uml建模語言的用例圖、類圖等模型,物件導向設計一般用到uml建模語言的實現類圖、順序圖、部署圖等模型。
物件導向的軟體工程
物件導向的軟體工程是當前最流行的軟體工程方法,但是,想要從根本上搞懂理解物件導向的工程方法很是不容易,所以,暫時不要執著於深究物件導向的原理,或者從頭到腳的去觀察他。選擇從工程中去學習物件導向的方法,從實踐中去獲取對物件導向工程方法的理解。uml是物件導向工程方法相關的設計工具,學習使用uml工具是...
軟體工程 物件導向技術
物件導向的思想已經設計到軟體開發的各個方面,一切事物皆物件,所以物件是無處不在的,通過物件導向的方式,將現實生活的事物抽象成物件,有利於對複雜的系統進行分析,設計與程式設計。能有效提高程式設計的效率。定義 物件導向 物件 類 繼承 通訊 如果乙個軟體系統使用這斯個概念設計和實現的,則是物件導向的,物...
軟體工程 軟體工程需求分析 物件導向分析
物件導向分析概述 建立用例模型 建立物件模型 更新中 建立動態模型 更新中 建立資料模型 更新中 更新日誌 最近更新 問題域與系統責任 物件導向分析 ooa 強調運用物件導向方法,對問題域和系統責任進行分析和理解,找出描述問題和系統責任所需要的物件,定義物件的屬性 操作以及物件之間的關係,建立乙個符...