目錄
????????????
Web項目解決方案框架
....
1
1
????
解決方案框架
...
2
2
????
用例文檔
...
2
3
????
設計數據庫
...
2
4
????
業務邏輯
...
3
5
????
設計
UI
3
5.1
????
UI文檔描述
...
3
5.2
????
確定界面布局(
layerout)和風格(style)
...
4
5.3
????
頁面復用技術
...
4
6
????
設計頁面處理組件
...
4
7
????
設計操作流
...
4
?
?
收集基本用例:基本用例即系統功能。每個功能都是獨立的或基本獨立。這里的獨立是指某個功能一旦實現并運作起來,那么就與系統的其它功能耦合系數很低,一般的講,只有入的關系而無出的關系,那么該功能就可以算是個獨立的功能,否則,就是一個功能的子功能而非獨立功能,不算基本用例。
每個功能都是一個用例,包含細節和邏輯流程。
一般的講,大型系統采用
UML UserCase
表達客戶需求。
UML
建模
除了
UML
圖,還需要文檔描述,文檔描述建議以下格式:
???????????
前置條件:開始使用這個用例之前,必須滿足的條件。非必需
???????????
主事件流:用例的正常流程。必需
???????????
其它事件流:用例的非正常流,如:錯誤流
???????????
后置條件:用例執行結果“必須”為真的條件,也稱為“附加條件”,非必需
?
舉例:“安全登入”就是一個用例。
?
??????????
前置條件:無
??????????
主事件流:用戶輸入正確的用戶名和密碼,安全登入到
Web
應用中。向用戶返回歡迎頁,包括可操作的菜單,提示登陸成功。
??????????
其它事件流
1
:未輸入用戶名或密碼,顯示出錯信息:用戶名或密碼不可為空
??????????
其它事件流
2
:用戶名和密碼不匹配,顯示出錯信息:用戶名或口令錯誤
??????????
后置條件:該用例不是必須為真,無
?
數據庫設計的最終目標是完整的回答:“數據從何處來,保存在什么地方”。
在這一步,應該給出數據庫表的
UML
描述和
XML
文檔示例。
UML
描述的文檔說明格式建議如下(舉例說明):
?
/*
設計說明
設計人:
Sun Duction
時間:
2004-12-22
目標數據庫:
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>
?
業務邏輯是獨立于系統實現的。采用
JAVA
,還是采用
.NET
,那時實現的體系結構問題。業務邏輯描述系統中各個數據實體之間的關系。
MVC
框架下:
Model
實現業務邏輯。
在
JAVA
中,它們是:
JavaBean
,
EJB
,實用工具類,輔助類。
在
.NET
中,它們是:自定義數據對象,結構,工具類,輔助類。
一般的,在業務層都采用了
DAO
模式,實現的方式有多種。
JAVA
中,比較流行的解決方案是
Hibernate
,
JDO
。
.NET
下,一般采用
Data Access Application Block
。
?
關于如何根據需求為系統建模,是個專題,這里就不詳細描述。
UI
由需求分析而定,但必須獨立于業務邏輯的實現,即:
UI
不在意界面上顯示的數據從何而來(但必須有一種實現的方式)。設計
UI
時,最終要完成以下任務:確定界面的總體布局和風格、文檔描述各個
UI
元素、各個子
UI
元素(可復用元素)之間的關聯圖。
?
UI
由用例而來,包括用戶界面的功能描述,與用戶交互的信息,
UI
切換關系幾個要素。
舉例:
界面
|
字段
|
字段類型
|
說明
|
歡迎界面
index
|
無
|
無
|
顯示歡迎信息,提供登陸入口
|
登入
logon
|
username,password
|
String
|
字段可編輯
|
添加記錄界面
insert.
|
Name,phone,address
|
String
|
可編輯
|
主菜單界面
mainMenu
|
無
|
無
|
提供所有操作菜單
|
添加數據確認
confirm
|
無
|
無
|
向用戶顯示添加成功或失敗信息。
|
?
由美工確定符合該項目的總體頁面布局和配色方案,給出基礎
CSS
文件。
如果采用
.NET
技術,那么建議采用模版頁+自定義控件的方式,動態載入生成
HTML
頁面。
如果采用
JSP
技術,那么,可以使用
Tiles
框架。
其實,兩個體系的解決方案在內部實現上,幾乎是相同的,只不過
JAVA
領域成熟的開源框架多的多而已。
這一步應該確定頁面關聯,即每個功能頁面與其它片斷頁面的關系。這是為了達到頁面級別的最大程度復用而做的。這是值得的,因為這一步做的好,會大大縮短開發,測試的時間。
對于
JSP
項目,建議將申明標簽庫的語句方在一個文件中,如
taglibs.jsp
,其它文件引用它,并對特定應用使用定制標簽。
?
對于
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
層,即:它不執行業務邏輯驗證。比如,口令不匹配這個邏輯所代表的代碼決不可以放在該方法中。
?
在需求階段確定了事件的流,為了實現這個流控制,需要在各個頁面之間切換。對于
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
|
?
該表如果使用圖的方式給出,將更加完美。