原文地址:http://www.etc.edu.cn/articledigest38/web.htm
Web應用開發方法研究
鹿旭東 萬建成
山東大學計算機科學與技術學院 濟南 250061
【摘要】目前,Web系統開發缺乏嚴格和系統的方法,大多數應用開發和管理實踐在很大程度上依賴于開發人員個人的知識和經驗,造成的后果是所開發的Web系統大多是低質量的產品。而傳統的軟件工程方法不能適應Web設計的要求,為此人們研究提出了眾多的Web開發方法。這些研究旨在提供全面支持Web應用開發生命周期的模型和方法,但由于這些方法本身存在的局限性及其它方面的原因,還沒有得到廣泛的應用。論文首先討論了成熟的Web開發方法應該具有什么樣的特性和功能,然后分析了現有Web開發方法各自的特點,最后總結了這些方法所存在的問題和今后的研究重點。
【關鍵詞】Web開發方法;Web工程;Web應用
1 引言
隨著Intemet和Intranet、Extranet的快速增長,Web已經對商業、工業、銀行、財政、教育、政府、娛樂及我們的工作和生活產生了深遠的影響,許多傳統的信息和數據庫系統正在被移植到互聯網上。
但Web系統開發缺乏嚴格和系統的方法,很少有人注意開發方法、度量和評估技術、系統質量和項目管理,當前的大多數Web應用開發和管理實踐在很大程度上依賴于開發人員個人的知識和經驗,造成的后果是所開發的Web系統大多是低質量的產品。而隨著基于Web的系統變得越來越復雜和重要,一個項目的失敗將可能導致很多問題,當這種情況發生時,人們對Web和Internet的信心可能會無法挽救地產生動搖,從而引起Web危機。
澳大利亞的YogeshDeshpande和SteveHansen最早(1998年)提出了Web工程的概念,他們認為Web工程是用系統的、嚴密的、可以測量的方法來開發、實施和維護基于Web的應用或基于Web的軟件的工程應用。
基于Web的應用系統開發方法倍受關注,主要體現在Web應用系統的開發和傳統軟件開發的顯著區別上,傳統軟件工程方法和技術應用到基于Web的系統開發中,顯得力不從心問。在開發復雜的基于Web的系統中,為了避免Web危機的發生,達到更大的成功,迫切需要一個嚴格的步驟和新方法、新工具來開發、發布和評估基于Web的系統。
由于在Web應用的開始階段,只是將Web作為信息中介和信息發布的平臺(簡單的網站),因此,所提供的工具只是集中于網頁的創建和編輯,如微軟的FrontPage等。它們都限于被動的超文本表示、網頁布局和部分的導航模型,缺乏系統的、結構化的方法以及抽象、重用的支持。隨著Web應用的規模和復雜度日益增加,Web已經成為各種應用的主要平臺。和傳統的Web站點相比,Web應用程序不但支持導航和瀏覽,而且操作還會影響內容和導航狀態。這使得Web應用的開發變得更加復雜。目前Web應用的工程化方法已經成為Web應用開發研究的熱點,這些研究旨在提供能全面支持Web應用開發生命周期的模型和方法。
成熟的Web開發方法應該具有什么樣的特性和功能?現有的方法是否已經具備這些特性?還有哪些差距?本文將對這些問題展開討論。
2 開發方法應具備的特性
Web開發方法的目標是系統化Web應用的開發全過程,提高開發效率和開發質量。為達到此目標,我們認為,一個成熟的Web開發方法應該具備以下的主要特征或功能:
易于掌握:開發方法的一個目的是為了減輕開發人員的工作量,所以應該具有易于掌握的特點,但這不應以犧牲表達能力為代價,即Web開發方法應該能對Web程序的各個方面進行全面詳細的描述。為平衡表達能力和掌握難度,可采用的方法是封裝細節,對那些具有共性的細節進行抽象,以模式的方式提供選擇,這樣開發方法為開發者提供的是高層次的設計概念和方法,掩藏了細節,在不犧牲表達能力的基礎上降低了掌握難度,但必要時設計者仍然可以對細節進行設計以滿足特殊的情況。另外,設計方法應充分考慮用戶已有的設計經驗和技術。
對復雜系統建模的能力:Web應用的范圍涵蓋從簡單的靜態站點到動態交互的Web應用。近年來,Web應用發展迅速,特別地,當大量傳統信息和數據庫系統被移植到Web環境下,一種新型的Web應用程序出現了,這些程序利用Web平臺支持和執行商業過程以及工作流,例如出租和預訂服務,虛擬拍賣、在線保險等闖。成熟的Web開發方法應該能適用這種需求,這就需要有對商業過程、工作流進行建模的能力,并和Web系統設計的其他部分有機結合。
表現層建模的能力:傳統的設計方法一般不很重視界面設計,而和傳統的軟件系統相比,Web系統表現設計有自己的特點:(1)系統的很多高級功能體現在表現層,這需要提高界面的設計質量;(2)界面中包含著大量的多媒體信息;(3)Web設計方法一般不僅給設計人員使用,而且需要給美工、編輯等使用,他們更關心系統的表現設計。所以Web開發方法需要能針對這些特點對表現層建模。
系統定制的支持:Web系統成功與否主要依賴于用戶的滿意程度。成功的Web系統應該具有豐富的功能,易于使用的界面和定義良好的導航結構。而為了達到更高的用戶滿意度,一個主要的技術是通過個性化定制把合適的內容在合適的時間分發給合適的人。開發方法需要提供系統定制能力,這主要通過對用戶的定義和描述來完成,其中包括對用戶分組以及用戶之間聯系的處理。
模型集成和連通的能力:能夠在較高的抽象層次上表達系統和資源是怎樣集成的。一方面,在很多組織中,新開發的Web系統需要和以前存在的業務系統密切關聯。這些業務系統可能在不同的平臺和實現語言下開發。開發方法應該能支持和這些遺產系統無縫連接。另一方面,組件的集成大部分依賴于接口描述,開發方法應提供精確的和無二義的對組件接口建模和文檔化的能力;最后,Web系統需要和大量的資源和信息服務等相聯接,這些可能不局限于組織內部,開發方法應提供表達和存取機制。
自動生成能力:能否提供自動生成能力以及能力的大小是Web開發方法成熟度的一個重要衡量標準,理想的開發方法應能提供從模型描述到運行、配置代碼的自動生成。
工具和文檔支持:理想的工具應能支持在用戶參與下,完成從需求確定到實現維護的整個開發過程。豐富的文檔支持是設計者能否掌握開發方法的重要方面??梢哉f,工具和文檔的支持能力是開發方法能否得到廣泛應用的關鍵。
3 Web開發方法研究現狀
認識到Web開發的重要性,近年來,一些系統化開發Web應用的方法應運而生,這些方法來源于不同領域的研究,來源于數據庫研究領域的有RMM、Araneus等,來源于多媒體研究領域的有HDM、WebML等,來源于面向對象研究領域的有OOHDM、UWE、00-H等,圖1表示的是幾種典型Web應用開發方法的演變過程。
Web應用開發方法的共同點在于一般將Web系統模型分為領域模型、導航模型和展示模型,經過概念建模、邏輯建模、物理建模和實現四個過程完成Web系統開發p)。其中領域、導航、展示模型分別描述系統的一個不同側面,可以看成是Web模型的不同視圖。
領域模型描述Web應用中領域對象及其關系,是導航模型的基礎;展示模型描述Web頁面展示形式,是導航對象和導航行為的最終體現;而導航模型是Web模型區別于傳統系統模型的重要部分,描述了Web應用的導航特性,并起著銜接領域模型和展示模型的作用。
本文第二部分列出了Web開發方法應該具備的主要特征和功能,下面我們將從這幾個方面考察幾個典型的Web開發方法已經具備了哪些特性以及還存在哪些差距。
(1)HDM1ite
HDM(Hypermedia Design Method)是眾多Web設計方法的先驅者,HDM lite是HDM的進一步發展。特別應用于Web信息系統。主要是定義結構、導航和表現。分別用HyperBase、Access、表現方案形式化。
HyperBase方案是一個擴展的E-R實體關系圖。由實體、部件(實體子結構)、有類型的屬性、實體和部件間的語義鏈接、數級約束等構成。Access方案描述HyperBase方案的進入方式。包括traversals(描述從源到目標的直接導航)、Collections(描述集合,可以嵌套定義,共分為8種子類型),另外還定義了導航模式(1ndex,GuidedTour,IndexedGuidedTour,ShowAll)。
HDMlite的表現模型是一系列樣式單的集合,使用類SGML的語法來表示。多個表現方案可以被映射到一個結構導航方案但沒有提供設計結構。表現方案的基本單元是PaSe。一個樣式單表針對一種特殊類型的頁面,從邏輯上看可分為兩層:布局層,每個頁面建模為一個Grid,Grid中的每個單元包含表示元素;元素層:有兩種類型的元素,內置的和用戶定義的,所謂內置元素是前面所涉及概念的表示抽象,用戶定義的則為圖形設計者設計的banners,applets等。
HDMlite的主要特點是為了自動生成的目的對HDM做了適當擴充,完成從概念方案到邏輯表示乃至到物理表示的模型轉換。這些轉換被Autoweb系統工具支持,自動產生程序數據方案、導航方案和表現方案。這些邏輯方案進一步被用來自動產生頁面。但此自動生成主要是針對靜態只讀信息頁面。
(2)WebML
WebML(WebModelingLanguage)是W313(Web-basedIntelligentlnformationlnfrastructure)項目所定義的Web模型描述語言,是HDMlite的進一步演化,是在概念層次上描述復雜Web應用的符號體系,也被稱為“針對Web的UML"。它提供了圖形化高度抽象的Web應用描述方法,并包括完整的設計過程和支撐工具。另外,WebML還支持XML語法,以便于利用代碼生成工具來自動產生代碼。
在WebML開發設計過程中,對Web應用的描述分為以下模型:結構模型,通過實體和實體之間的關系來描述內容層,為描述導出和計算信息,結構模型還定義了一個簡單的查詢語言侈媒體模型,描述Web應用的多媒體特性,又分為組成模型和導航模型兩個子模型,組成模型描述頁面是由哪些數據單元組成的,導航模型描述頁面和組織單元是怎樣導航的;展示模型,使用抽象的XML語言來定義頁面的布局和圖形表現;定制模型,主要是對用戶和用戶組進行建模,對應Web應用的定制化需求。
WebML的導航模型是在組成模型的基礎上定義鏈接,體現導航的鏈接有上下文無關和上下文相關兩種類型。所謂上下文相關指的是鏈接的單元存在語義上的關系。在實際的應用中,導航鏈接經常以導航鏈的形式出現,WebML還分析總結了多步索引、篩選索引、索引向導、環等Web導航模式來體現這些特征。
此外,后期的WebML版本可以采用擴展數據和多媒體模型的方式來定義輕型的Web工作流。
(3)RMM
RMM(RelationshipManagementMethodology)是一種用于設計、構建和維護Intranet及IntemetWeb系統的方法。它的根本目標是降低動態數據庫驅動的Web站點的維護成本。它提倡系統進行形象化表示,以便展開設計上的討論。它是一個迭代式過程,包括Web頁可視元素的分解,及這些元素與數據庫實體的關聯關系。RMM是一種用于動態Web站點創建和維護的方案。
RMM受ER模型和HDM的影響。模型分為三層:內容層、多媒體層和表示層。在RMM中內容層是單獨建模的,而表示層是結合多媒體層定義的。提出了RMDM(RelationshipMan—agementDataModel)模型進行形式定義。
在RMM中,領域模型由實體構成,每個實體有多個屬性,而m—slice設計元素是對實體屬性的分組。在RMDM中,導航是通過6種進入結構支持的,分為實體內和實體向導航兩種。
RMM方法設計過程主要分為E-R設計:領域模型設計,采用E-R圖;Slice設計:Web應用設計中特有的一步,決定信息怎樣呈現給用戶,以及怎樣進入,主要是對實體屬性進行分組;導航設計:設計導航路徑。利用進入結構和結構組來組織。一般導航到實體的主要"Slice”,但也可以由設計者指定;轉換規則設計:利用一系列轉換規則把RMDM圖中的元素轉換為目標平臺上的對象,已經有一些工具從RMDM轉換為HTML;用戶界面設計:界面布局設計;運行行為設計:鏈接途徑、歷史、導航機制實現;構建和測試:傳統的軟件工程步驟,特別測試所有導航路徑。
(4)Araneus(ADM)
Araneus是從數據庫研究領域發展而來的。Araneus中的內容層采用ER模型對領域對象進行建模,多媒體層把多媒體的設計分成概念設計和邏輯設計兩個階段,分別用NavigationConceptualModel(NCM,從RMM方法中發展而來)和AraneusDataModel(ADM)形式化。ADM允許基于頁面類型和鏈接描述站點,而且一旦ADM方案建立后,一種特殊的語言Penelope就可以從數據庫結構映射到超文本結構,并自動生成HTML頁面。
Araneus中導航設計主要在概念設計階段完成,NCM中定義了三種節點類型和兩種鏈接類型來描述Web導航,描述包括哪些領域對象將作為導航對象出現在導航中,導航對象之間的導航路徑以及如何從源節點進入感興趣信息。NCM模型完成后就可以建立ADM模型,ADM是用來建立頁面抽象描述的。
ADM的基礎特性是Page-Scheme符號。Page-Scheme是頁面抽象描述,實例是一個具有標識(URL)和一組屬性的頁面。屬性有簡單或復雜類型,如文本、圖片、聯接、列表等,提供兩種結構:異構聯合(提供靈活性)和表單(主要針對動態頁面)。
Araneus方法更強調內容層和多媒體層的設計。著重于數據庫中的數據怎樣在頁面中呈現,而且以自動生成頁面為目標。明確區分數據庫設計和多媒體設計,明確區分邏輯設計和概念設計是Araneus方法的一個特色。
為解決商業過程建模問題,Araneus2提供了一個機制使得構成商業過程的活動可以組織到一起。
(5)OOHDM
OOHDM(Obiect-orientedHypermediaDesignMethod)是Rossi等人在1998年提出的Web應用程序開發方法。OOHDM的形式模型基礎前期是OMT,后期是UML,但都作了自己的擴充。如屬性可以有多重類型等。
OOHDM把導航設計作為重要的一個階段分離出來并建立相應的模型。導航模型又分為導航類模型(Navigationalclassmodel)和導航上下文模型(Navigationalcontextmodel)。導航類模型是領域模型在導航設計中映射的視圖,是通過面向對象定義語言對領域對象屬性進行組合或剪切,以及進行屬性和關系篩選而建立的,模型元素為節點和鏈接,描述了導航對象及導航對象之間的導航關系。導航上下文模型中利用六種上下文元素描述導航空間結構,上下文是可以嵌套定義的。導航上下文模型中還有進入結構(向導、簡單索引、動態索引等)來描述進入上下文和導航對象的結構。
OOHDM主要采用類圖來描述靜態頁面的導航結構,至于導航的復雜行為語義,可以通過使用一個面向對象的狀態轉移模型NavigationCharts來描述。
OOHDM用AbstractDataView(ADV)來描述導航對象和其他界面對象如菜單條、按鈕等的結構布局。界面復雜行為方面則采用ADVCharts來描述。
OOHDM后期的發展允許在原有模型上定義商業過程,即把商業過程作為基本的設計元素,而不再把商業過程看作是概念和導航設計的副產品。
OOHDM-Web是一個采用OOHDM描述的設計工具,但主要針對的是只讀的Web站點。軟件自動生成由HTML代碼和OOHDM-Web函數庫調用相結合的頁面,所以它產生的頁面必須在OOHDM-Web環境下運行。
(6)UME
UME(Nora Koch et a1,1999)基于OOHDM但采用UML作為統一的模型技術。如有需要,可以采用UML的擴展機制stereotypcs和constraints。
UME導航設計的基礎是領域模型,輸出是導航模型。導航模型的建立被分為兩個過程,首先建立導航類模型然后是導航結構模型。導航類模型是在領域模型上定義一個視圖,用來表示在Web應用程序中哪些對象能夠被訪問以及對象之間的直接導航關系,一般用類圖來表示,模型元素是導航類和直接導航關聯,是從領域模型中的類以及關聯映射過來的。導航結構模型定義導航對象是怎樣被訪問的。它基于導航類模型,加入了一些模型元素來描述導航結構,這些元素包括菜單,索引,向導,查詢,外部節點和導航上下文。
UME將商業過程建立為單獨的模型,分析階段采用UseCase圖,進一步的細節描述采用活動圖,并定義和已經存在的領域,導航和/或表現模型之間的關系。由于UME采用UML作為統一的模型符號,模型之間的映射關系相對明確,但在UME中主要從設計方法角度提出了映射原則,缺乏模型映射關系描述機制,還無法做到真正的全自動生成。UME和其他方法的區別在于和其他模型引入自己的符號不同,它采用的是標準的UML和擴展。這樣可以利用現有的工具,模型的集成和連通能力得到了加強。
(7)00-H
OO-H(objectoriented-hypermedia)是一種面向對象的用來構建復雜Web應用程序的工程方法,所采用的形式模型是擴展的UML。基于XML,和其他方法的主要區別在于能應對復雜功能需求。主要著重Web界面和已有業務模型間的集成。提供了調用服務的機制。
在領域模型基礎上,OO-H增加了導航視圖和展示視圖,用來捕捉Web應用的靜態和動態特性。其中導航模型是通過為每一類用戶建立不同的NAD(NavigationAccessDiagram)來實現的。每個NAD對應著相關用戶導航需求的信息、服務和導航路徑。當NAD構造后就可以根據映射規則生成默認的用戶界面。
NAD的構建基于四種類型的模型元素:導航類、導航目標、導航鏈接和匯集。導航類是導航對象的描述,根據用戶的存取權限和導航需求對領域類屬性和方法加以擴展而得到;導航目標是一個模型元素的集合,用來描述用戶的某項導航需求,在導航目標中一般要定義人口點;導航鏈接定義了導航關系;匯集是在導航類或導航目標上定義的層次結構。
在OO-H中,設計過程是在領域模型基礎上建立導航類視圖,進一步用導航目標匯集組織導航空間,而不同類型的導航鏈接則定義了導航關系,這些建模元素的采用可以定義復雜的靜態頁面導航結構,而對動態頁面和導航的行為則沒有描述。在導航模式的支持方面,OO-H提供了豐富的模式分類,其中導航模式分為靜態模式和動態模式,動態模式中又分為流控制模式和跳轉模式等,可以采用不同粒度的模式來簡化設計和加強重用。在00-H方法中還定義了導航視圖和展示視圖之間的映射規則,可以最終產生用戶界面代碼,但生成的頁面是簡單的靜態頁面,實用程度仍然不夠。
至于商業過程的處理OO-H采用和UME類似的思想:由于采用了面向對象的建模思想,也體現出一定的模型集成能力。
(8)其它方法
Web開發方法還有很多,限于篇幅我們不再詳細比較,下面介紹一些它們的主要特色。
Conallencq對UML使用標準的擴展機制進行了擴展。進行擴展是為了讓Web特有的構件能與系統模型的其余部分集成,向Web應用程序的設計人員、實施人員以及構架設計師展示適當的抽象和明細級別。但Conallen主要提供建模符號,缺乏設計過程的描述。
W2000是一個Web應用程序的框架,基于已經存在的兩個技術:UML——標準的面向對象系統的建模語言以及HDM。UML和HDM的集成使模型的集成成為可能,但W2000在表現層設計方面比較缺乏。
WSDM是以用戶為中心的方法,著眼于系統的定制。它試圖解決信息過時,鏈接丟失以及允許不同用戶瀏覽不同信息等可用性問題。其主要思想是先分組用戶,根據不同用戶特征建立"觀察”,然后才開始概念設計。
OOWS是一個模型驅動的Web應用建立方法。強調Web應用從需求獲取到模型建立,經過模型轉換到最終實現的開發全過程。OntoWebbei091是一個基于本體的方法,著眼于集成異構數據源建立數據豐富的Web門戶。整個設計采用基于XML的元方案表示,使用了RDF和DAML+OIL。
4 結論
以上介紹了幾種典型的Web開發方法,可以看到雖然它們各具特點,但都還不能完全滿足我們所提出的Web開發方法應具有的特性(具體比較見表1)。
這也使得這些方法缺乏工程應用,經統計”只有大約3%的Web開發工程運用了研究所提出的方法,甚至只有5%左右的工程人員知道這些方法的存在。造成這種狀況的原因是多方面的,一方面這些方法的提出是在一些學術雜志或會議上,工程人員缺乏對它們的關注,另一方面工程人員的技術慣性也阻礙了他們采用新的技術。但更主要的還是這些Web開發方法本身存在著不完備性和缺陷造成的。具體來說,現有的Web開發方法主要存在以下問題:
方法比較復雜,難于掌握。Web開發方法研究人員基于各自的研究領域所提出的方法一般自成體系,不熟悉其研究領域的人員在掌握上存在一定的難度。近期,更多的方法基于面向對象理論,采用UML作為描述手段,而這也是工程實現人員熟悉的技術,掌握難度有所降低,但大多數方法還是存在濫用UML擴展機制的傾向,設計粒度太細,仍然比較復雜。
不能對復雜功能建模。大多數開發方法針對的主要是只讀站點,靜態視圖,缺乏對復雜功能特別是動態Web應用及商業過程的支持。主要原因是對那些從多媒體背景得到的方法主要著眼于信息的組織,表示和導航。功能特別是核心商業過程往往被忽略;對那些從面向對象建模發展起來的方法,對Web系統特殊的功能缺少合適的描述,通常把Web系統模型看作是和傳統軟件系統一樣的,或者在實現層次上定義一些擴展。
界面設計大多比較簡略。雖然Web開發方法大多都提供表現層建模,但大多都比較簡略,沒有表現層設計細節。這里主要的原因是沒有在概念和邏輯建模概念中捕捉表現層凹,而只是就表現層界面元素進行抽象設計,而且界面元素之間的結構和操作關系過于簡單,無法滿足用戶的復雜細致的需求。
模式支持和利用不夠。Web模式是在總結Web應用基礎上提煉出來的可重復使用的設計模式。支持模式的開發方法可以把模式作為建模元素,簡化設計、加強重用,給代碼生成提供強有力的支持,而且也為系統的定制提供更好的支持。Web模式有導航層模式和表現層模式等?,F有Web設計方法雖然也總結了一些Web模式,但仍顯不夠,更主要的是沒有把總結出的模式有機地結合到開發過程中。
模型之間缺少清楚和靈活的映射。大多數方法是一個分層的方法,把設計分為一些獨立的過程:首先進行領域映射,體現Web應用的結構、內容和工作流等;然后是關系分析,包括領域關系和導航關系;最后是表現層設計。設計結果是分別建立各層模型?,F有方法普遍缺少層間的連接,模型之間缺少清楚和靈活的映射。這不但使得Web應用的自動生成無法真正達到,而且還影響了模型集成和連通的能力。
缺少工具支持。雖然有的開發方法提供了一些集成或輔助工具,但由于目前的方法主要是針對設計和實現階段,其他開發過程中重要的階段象需求工程和維護等都還沒有考慮,而且也缺少完善的開發過程支持,工具還不能給設計人員全面的支持,特別是方法普遍缺少文檔和用戶說明,嚴重影響了Web開發方法的實用程度。
總之,現有的方法更多的是從規范化設計的角度,而沒有從工程化應用的角度出發。認識到這一點,下一步我們的工作主要是圍繞開發方法的工程化方面展開。
本博客為學習交流用,凡未注明引用的均為本人作品,轉載請注明出處,如有版權問題請及時通知。由于博客時間倉促,錯誤之處敬請諒解,有任何意見可給我留言,愿共同學習進步。