軟體開發平台
概要設計
目錄
一、需求概述
1.1問題概述
1.2業務分析
1.3其它需求
二、系統分析
2.1運行支撐環境
2.2開發支援
三、平台運行支撐部分
3.1用戶端
3.2應用伺服器
四、平台開發支援部分
4.1業務組件管理
4.2介面組件管理
4.3介面產生器
五、系統應用
5.1許可權管理
5.2通用Data Integration工具
一、需求概述 1.1問題概述
技術能力一直是制約發展的瓶頸,軟體開發是其中一個重要因素。通過新員工引進和平台開發,以及多年開發的經驗積累,軟體開發情況得到好轉,但沒有根本解決問題。主要體現在:
- 軟體開發效率不高,開發週期過長;
- 軟體品質不高,系統維護成本過大;
問題存在的原因,需求分析與軟體設計是一方面;開發中複用率過低,重複工作過多是另一方面。
一個好的平台解決方案將有助於問題的解決,進一步提升開發效率。
1.2業務分析
根據開發過程,建立業務使用案例圖如下:
根據開發過程可以繪製活動圖表如下:
1.3其它需求
公司開發下一步發展,是推進主要產品的"產品化",縮短項目開發和實施周期。
1.3.1系統模型支援
應用系統產品化的途徑,是對系統進行分析,建立系統的業務模型。平台要支援系統建模,提供模型管理和運行支援
1.3.2多層支援
應用系統都是資料應用程式,資料是應用的核心。資料訪問是應用系統不可缺少的部分,也是重複開發最多的部分。平台要實現多層架構,將資料訪問分離出去,形成資料服務,使得對資料訪問不需要編程就能直接從服務得到。
1.3.3可靠性要求
應用系統需要在使用者處能夠長期穩定運行,其可靠性需要得到保證。
1.3.4系統效率
應用系統用於使用者日常工作,速度必須得到保證,不能太過遲緩,影響使用者工作。
二、系統分析
通過對開發需求的分析,我們將開發對平台的需求,分成兩個方面,一是將應用系統通用的部分,如資料訪問、業務管理等部分抽出來,按照一定構架,建立起應用系統啟動並執行完整支撐環境;二是對非通用部分,對其結果進行管理,強調程式的重用和可配置性,形成以組件為中心的開發管理和支援。
2.1運行支撐環境
運行支撐環境是將系統通用部分,以平台服務形式固化,提供應用系統啟動並執行支撐。運行支撐環境分為前端的用戶端和後端的應用伺服器兩部分。
運行支撐環境的使用案例圖如下:
運行支撐環境的活動圖表如下:
2.2開發支援
現在軟體開發使用都是第四代開發工具,功能十分完善。平台對開發的支援,是建立在開發成果的管理上,成果的粒度是組件,包括業務組件和介面組件。通過對開發成果的管理,提高了程式的複用性,並在開發工具上提供了應用系統組裝工具。
系統開發的活動圖表如下:
三、平台運行支撐部分
運行支撐環境是將應用系統的通用部分、公用系統,以平台形式固化,作為應用系統啟動並執行基礎。
運行支撐環境的關鍵是架構,架構是基於多層結構的,分成資料訪問層、業務層和介面層,支援介面、業務和資料的真正分離。
與三層對應,平台分為用戶端、應用伺服器(包括業務層與資料訪問層)。
3.1用戶端
應用系統是有多個表單/頁面組成,具體是哪些?這由使用者權限所決定。每個表單/頁面都是由介面組件組成,這也是由表單設定檔決定的。服務網關提供對應用伺服器的服務。
下面是用戶端的類圖:
下面是用戶端的順序圖:
3.1.1系統控制器
系統控制器是應用系統的容器,負責系統的裝載。應用系統是動態,是由使用者權限決定的。系統控制器的主要功能是使用者認證、系統初始化和介面調用等。
1、使用者認證
使用者認證也是一個介面應用,根據介面設定檔,初始化使用者登陸介面,取得使用者名稱和密碼,通過服務網關嚮應用伺服器發出認證請求,並得到返回的使用者權限。
2、系統初始化
根據得到的系統檔案,進行主介面的初始化,主要是菜單系統的產生等。
3、系統調用
以菜單系統為主,提供系統調用。對選擇調用,提供介面名稱,交表單控制器處理。
3.1.2表單(頁面)控制器
表單(頁面)控制器是表單的容器,負責控制表單內的活動。表單由組件組成,表單(頁面)控制器也可以看作特殊的表單組件,負責其它組件的裝載、相互之間關係管理、以及其它一些操作。表單控制器的主要功能是表單初始化和表單操作管理等。
1、表單初始化
根據控制器調用得到的表單名稱,找到相應的設定檔,按配置裝載組件,並按照配置進行組件的初始化。
2、表單操作管理
表單控制採用MVC模式,Model-View-Controller (MVC)模式基於使用者輸入,將域的建模、顯示和操作分為三個獨立的類[Burbeck92]:
- 模型。模型用於管理應用程式域的行為和資料,並響應為擷取其狀態資訊(通常來自視圖)而發出的請求,還會響應更改狀態的指令(通常來自控制器)。
- 視圖。視圖用於管理資訊的顯示。
- 控制器。控制器用於解釋使用者的滑鼠和鍵盤輸入,以通知模型和/或視圖進行相應的更改。
圖1、描述了這三個對象之間的結構關係
視圖和控制器都依賴於模型。但是,模型既不依賴於視圖,也不依賴於控制器。這是分離的主要優點之一。這樣的分離允許模型在獨立於可視表示功能的情況下建立和測試。
在我們架構中,組件響應使用者操作,並以事件的方式傳遞給表單控制器。表單控制器使用通用的命令解析器,起到控制器的作用。對事件如何處理,也由設定檔決定,它定義了組件間的操作關係,控制器根據配置所定義的當作,實現介面間的操作。
舉例說明:
- 當使用者按下"查詢"按鈕,按鈕(按鈕集合)組件發出按鈕事件,並告訴其名稱"查詢"。
- 表單控制器,根據"查詢"事件名稱,尋找設定檔,得到其要做的工作。
- 從查詢條件輸入組件,得到輸入的查詢條件(通過其屬性);
- 將業務名稱(模型)與條件,通過服務網關傳遞到應用伺服器,進行處理,並取得返回的結果;
- 使用返回的結果更新資料集(視圖);
- 使用資料集(視圖)更新結果顯示組件(如網格)的顯示(使用組件的方法)
3.1.3服務網關
服務網關負責與應用伺服器的操作處理。服務網關的主要功能是建立串連,服務要求映射,傳遞應用服務要求等。
1、建立串連
根據系統設定檔建立與應用服務其的串連;
2、服務要求映射
應用伺服器有自己的介面,用戶端也可以定義自己的服務要求命令。服務網關負責客戶請求命令到應用伺服器介面的映射、轉換。
這樣的好處,更改應用伺服器的介面,只要修改服務網關的對應程式,不會影響到原來的應用程式,將減少用戶端與應用伺服器的耦合度。
3、服務要求
通過遠程調用,嚮應用伺服器傳遞服務要求,並取得結果,發送給要求者。
3.2應用伺服器
應用伺服器是中介軟體的集合,它提供了應用系統運行環境,實現系統的多層架構。平台的應用伺服器暫時只有兩部分組成,一是公用的資料訪問,二是業務層管理。
資料訪問層使用資料持久化設計,支援對象到資料的持久化,以實現業務組件(對象)到資料的自動操作。
業務層管理有完整的業務組件管理架構,支援業務組件的自動調用。
下面是應用伺服器的類圖:
下面是順序圖:
3.2.1業務管理
啟動並執行業務層管理,主要是動態業務組件執行管理,是建立在業務組件庫上(其管理見4.4.1)。業務管理的主要功能是,業務組件調用、執行等。
主要工作及流程如下:
- 接收業務請求;
- 在業務組件庫中找到正確業務組件,載入;
- 執行業務組件;
- 將需要的資料操作傳遞到資料訪問層,並得到返回結果;
- 將執行結果返回給要求者。
3.2.2資料持久化
資料持久化將在ORM基礎上構建。
對象關係映射(ORM)提供了概念性的、易於理解的模型化資料的方法。ORM方法論基於三個核心原則:
簡單:以最基本的形式建模資料。
傳達性:資料庫結構被任何人都能理解的語言文檔化。
精確性:基於資料模型建立正確標準化了的結構。
NHibernate 是一個基於.Net 的針對關係型資料庫的對象持久化類庫。Nhibernate 來源於非常優秀的基於Java的Hibernate 關係型持久化工具。
NHibernate 從資料庫底層來持久化你的.Net 對象到關係型資料庫。NHibernate 為你處理這些,遠勝於你不得不寫SQL去從資料庫存取對象。你的代碼僅僅和對象關聯,NHibernat 自動產生SQL語句,並確保對象提交到正確的表和欄位中去。
使用NHibernate,只要按照NHibernate的規範定義對象,NHibernate將自動完成對象到資料對應,從而完成所需要的資料操作。
NHibernate的功能:
- 資料連線:NHibernate能串連大多數大型資料庫系統,如ORALCE、SYABSE、DB2SQL SERVER等
- 資料操作:能執行各種資料操作;
- 對象到SQL語句:根據對象自動產生SQL語句;
NHibernate的工作流程是:
- 應用系統使用(業務)對象操作,並傳遞對象到NHibernate;
- NHibernate自動將對象操作翻譯成SQL語句;
- NHibernate在串連池中尋找可用的資料連線,沒有則串連到指定資料;
- NHibernate在資料連線上執行SQL語句,並得到結果;將結果返回;
四、平台開發支援部分
應用系統除開基礎的、通用的部分,還有許多與業務相關的千差萬別的應用。雖然應用各有不同,其中也有許多相同的地方,如介面、介面元素或者業務模型。
軟體開發要提高效率,就需要提高程式的複用率。提高程式複用率,關鍵在設計和程式架構,如實現介面與業務的分離,實現業務建模,實現業務的原子化。
另一方面,對已有程式如何有效再利用?也是提高程式複用率的途徑。我們認為來源程式級的複用,牽扯到太多因素,不是很有效;應該在開發成果的一定粒度上進行複用,我們將其定為組件。通過成熟組件的再利用,我們實現了軟體的複用。
在平台的軟體支援上,我們以組件的管理為基礎,以系統的組裝作為終極應用。
組件管理是將應用開發結果以組件形式進行管理,又分為業務組件管理和介面組件管理。
4.1業務組件管理
業務組件包含商務邏輯,如果是按照物件導向方法建立的,組件也可以看作業務模型。這樣,組件管理也就成為業務模型的管理。
在平台中,業務組件(對象)可以以兩種形式存在,一是實體型的業務組件,二是儲存在描述檔案中的。兩者區別是,描述型是簡單的業務對象,相當於只有屬性的業務對象;而實體型可以通過方法實現複雜的商務邏輯。
業務組件管理主要功能是,簡單業務組件產生,業務組件管理。
- 簡單業務對象產生,是編輯業務對象(屬性),產生描述檔案或對象來源程式。當然來源程式還要人工加入到應用系統工程中,並進行必要修改;
- 系統所使用的業務組件可以看作一個庫,業務組件管理,就是對業務組件庫管理,包括增、刪、改,以維護系統可使用的業務組件。
4.2介面組件管理
介面組件是構成介面的元素,好象磚塊之於建築物。在平台中,介面組件都以實體形式出現。介面與介面組件的關係,使用介面設定檔進行描述。
在平台中,介面組件組成介面組件庫。介面組件管理就是對介面組件庫的管理,包括增、刪、改,以維護系統可使用的業務組件。
4.3介面產生器
組件得到有效管理,也有支撐啟動並執行環境,但還不方便使用進行開發。介面產生器就是利用組件,協助進行介面開發的工具。
介面產生器就是一個專用的IDE(整合式開發環境),它以組件應用為中心,通過組件的選擇、運行、組裝、調試,使用組件構成特定的介面。結果以介面設定檔的方式儲存。
介面產生器的主要功能是,組件查看(包括測試)、介面組裝和測試。
1、查看組件
查看組件庫內組件,並可以RUN一下,看看感覺。
2、介面組裝
挑選組件,分別挑選介面組件和業務組件;
組成介面,使用介面組件組裝介面,包括屬性的設定,如位置、大小等;
測試介面,對構成的介面進行運行,對不滿意地方回到前面進行調整;
完成介面,測試完成的介面,將其以介面設定檔方式進行儲存,包括組成的組件、已設定的屬性,要處理的操作(事件)等。
下面是相關的順序圖:
五、系統應用
系統應用是系統提供一些的應用、工具,它們可以看作是特殊的業務,系統本身的業務,也是使用平台的,可以看作是平台應用的示範-DEMO。
基本的系統工具包括許可權管理和通用Data Integration工具等。
5.1許可權管理
許可權管理中存在3個對象:
是它們的類圖:
其中角色是某一類型使用者的集合,也可以看作特殊的使用者。
它們之間存在一些關係:
- 使用者與許可權關係形成使用者權限;
- 角色與許可權關係形成角色的許可權;
- 使用者可以繼承其所屬角色的許可權,並加以修改;
許可權管理就是這些對象-使用者、角色、許可權以及它們關係的管理,包括增加、刪除、修改。
許可權管理另一重要的功能是使用者認證,它是在系統運行時使用。
5.2通用Data Integration工具
通用Data Integration工具是一種通用資料應用,也可看作特殊的業務組件。它能根據已定義的來源物件和目標對象,以及它們之間的關係,自動將來源物件執行個體(資料),轉化成目標對象(執行個體),並進行儲存。
通用Data Integration工具多應用於Data Integration,使用資料庫整合方式,將外部系統Data Integration到應用系統,或者將應用系統資料傳送給所需要的外部系統。