Web項目解決方案框架
目錄 ????????????
5.2
????
確定界面布局(
layerout)和風格(style)
...
4
1????????????????? 解決方案框架
每個功能都是一個用例,包含細節和邏輯流程。
2?????????????????? 用例文檔
一般的講,大型系統采用 UML UserCase 表達客戶需求。 UML 建模
除了 UML 圖,還需要文檔描述,文檔描述建議以下格式:
??????????? 前置條件:開始使用這個用例之前,必須滿足的條件。非必需
??????????? 主事件流:用例的正常流程。必需
??????????? 其它事件流:用例的非正常流,如:錯誤流
??????????? 后置條件:用例執行結果“必須”為真的條件,也稱為“附加條件”,非必需
舉例:“安全登入”就是一個用例。
?????????? 前置條件:無
?????????? 主事件流:用戶輸入正確的用戶名和密碼,安全登入到 Web 應用中。向用戶返回歡迎頁,包括可操作的菜單,提示登陸成功。
?????????? 其它事件流 1 :未輸入用戶名或密碼,顯示出錯信息:用戶名或密碼不可為空
?????????? 其它事件流 2 :用戶名和密碼不匹配,顯示出錯信息:用戶名或口令錯誤
?????????? 后置條件:該用例不是必須為真,無
3?????????????????? 設計數據庫
數據庫設計的最終目標是完整的回答:“數據從何處來,保存在什么地方”。
在這一步,應該給出數據庫表的 UML 描述和 XML 文檔示例。 UML 描述的文檔說明格式建議如下(舉例說明):
/*
設計說明
設計人: Sun Duction
時間:
目標數據庫: Oracle 9i
表名: ADDR_TABLE
*/
字段 |
類型 |
說明 |
ID |
Int(4) |
記錄的 ID ,自動增長 |
NAME |
Char(25) |
姓名 |
PHONE |
Char(10) |
電話 |
ADDRESS |
Char(50) |
地址 |
XML 文檔示例為:
<?xml version="1.0" encoding="UTF-8"?>
<Table TableName="ADDR_TABLE">
?????? <item ID="1" NAME="
小強
" PHONE="02483992100" ADDRESS="
北京市海淀區
9
號
(110000)"/>
?????? <item ID="2" NAME="
王小花
" PHONE="02483992100" ADDRESS="
北京市海淀區
9
號
(110000)"/>
?????? <item ID="3" NAME="Jim Green" PHONE="02483992100" ADDRESS="
北京市海淀區
9
號
(110000)"/>
</Table>
4?????????????????? 業務邏輯
業務邏輯是獨立于系統實現的。采用 JAVA ,還是采用 .NET ,那時實現的體系結構問題。業務邏輯描述系統中各個數據實體之間的關系。
MVC 框架下: Model 實現業務邏輯。
在 JAVA 中,它們是: JavaBean , EJB ,實用工具類,輔助類。
在 .NET 中,它們是:自定義數據對象,結構,工具類,輔助類。
一般的,在業務層都采用了 DAO 模式,實現的方式有多種。 JAVA 中,比較流行的解決方案是 Hibernate , JDO 。
.NET
下,一般采用
Data Access Application Block
。
關于如何根據需求為系統建模,是個專題,這里就不詳細描述。
5?????????????????? 設計 UI
UI 由需求分析而定,但必須獨立于業務邏輯的實現,即: UI 不在意界面上顯示的數據從何而來(但必須有一種實現的方式)。設計 UI 時,最終要完成以下任務:確定界面的總體布局和風格、文檔描述各個 UI 元素、各個子 UI 元素(可復用元素)之間的關聯圖。
5.1??????????????? UI 文檔描述
UI 由用例而來,包括用戶界面的功能描述,與用戶交互的信息, UI 切換關系幾個要素。
舉例:
界面 |
字段 |
字段類型 |
說明 |
歡迎界面 index |
無 |
無 |
顯示歡迎信息,提供登陸入口 |
登入 logon |
username,password |
String |
字段可編輯 |
添加記錄界面 insert. |
Name,phone,address |
String |
可編輯 |
主菜單界面 mainMenu |
無 |
無 |
提供所有操作菜單 |
添加數據確認 confirm |
無 |
無 |
向用戶顯示添加成功或失敗信息。 |
5.2??????????????? 確定界面布局( layerout )和風格( style )
由美工確定符合該項目的總體頁面布局和配色方案,給出基礎 CSS 文件。
5.3??????????????? 頁面復用技術
如果采用 .NET 技術,那么建議采用模版頁+自定義控件的方式,動態載入生成 HTML 頁面。
如果采用 JSP 技術,那么,可以使用 Tiles 框架。
其實,兩個體系的解決方案在內部實現上,幾乎是相同的,只不過 JAVA 領域成熟的開源框架多的多而已。
這一步應該確定頁面關聯,即每個功能頁面與其它片斷頁面的關系。這是為了達到頁面級別的最大程度復用而做的。這是值得的,因為這一步做的好,會大大縮短開發,測試的時間。
對于 JSP 項目,建議將申明標簽庫的語句方在一個文件中,如 taglibs.jsp ,其它文件引用它,并對特定應用使用定制標簽。
6?????????????????? 設計頁面處理組件
對于 Struts 而言,每個頁面對應一個 ActionForm ,對于 ASP.NET 而言,每個頁面關聯一個代碼隱藏類。由于 ASP.NET 技術,微軟的 IDE 給予的大量的自動化支持,且 ASP.NET 運行庫給予了大量的底層支持,天生的支持 MVC 框架。這里就不詳細描述如何實現 ASP.NET 的代碼隱藏類。
ActionForm Bean 用于在視圖組件和控制器組件之間傳遞 HTML Form 數據。通常,每個 HTML Form 對應一個 ActionForm Bean , HTML Form 中的字段和 ActionForm Bean 中的屬性一一對應。
對于 Struts 應用,請采用如下表格:
ActionForm 名 |
屬性 |
Validate 方法 |
LogonForm |
username,password |
二者不可為空 |
InsertForm |
Name,phone,address |
三者不可為空 |
注意,這里要保證 validate 方法不訪問 Model 層,即:它不執行業務邏輯驗證。比如,口令不匹配這個邏輯所代表的代碼決不可以放在該方法中。
7?????????????????? 設計操作流
在需求階段確定了事件的流,為了實現這個流控制,需要在各個頁面之間切換。對于
ASP.NET
,由于代碼隱藏類給予了對頁面和邏輯完全的控制,并提供了類似于面向對象的編程方法,故界面切換直接根據業務的事件流處理即可。
如何在.NET下將控制流在外配置,有什么好的解決方案,希望大家討論啊!
對于
Struts
應用,這是由
Action
和
struts-config.xm
文件聯合完成。所以必須在這一步就確定好
Action
和
Action
之間的映射關系。
Action 負責單個事件的流程控制。那么,一個事件,就必然對應一個 Action 。
Action 映射決定了 Action 與其它 Web 組件之間的關聯。在實際應用中,最好提供下表:
Action |
入口 |
Action Form |
出口 |
LogonAction |
Logon.jsp |
LogonForm |
mainMenu.jsp |
LogoffAction |
mainMenu.jsp |
無 |
Index.jsp |
InsertAction |
Insert.jsp |
InsertForm |
Confirm.jsp |
DisplayAllAction |
mainMenu.jsp |
無 |
Display.jsp |
該表如果使用圖的方式給出,將更加完美。
posted on 2006-04-26 15:03 都市淘沙者 閱讀(633) 評論(0) 編輯 收藏 所屬分類: VSS/SVN/Jira/Hudson/Sonar/TDD/UnitTest