《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 通信与网络 > 业界动态 > 基于结构化方法和螺旋模型实施Web工程的探究

基于结构化方法和螺旋模型实施Web工程的探究

2009-08-25
作者:董寒松1,李 铮2,尤 枫3

??? 摘? 要: 介紹了Web工程及其與傳統(tǒng)軟件工程的顯著區(qū)別,討論了一種具體的、切實可行的實施Web工程的方法。該方法借鑒了傳統(tǒng)軟件工程的某些思想,對基于Web的應(yīng)用系統(tǒng)采用結(jié)構(gòu)化的方法進行分析和設(shè)計,在整個開發(fā)過程中應(yīng)用螺旋模型,同時融入Web應(yīng)用的開發(fā)特性,最后給出了一個開發(fā)示例。
??? 關(guān)鍵詞: Web工程? 軟件工程? 結(jié)構(gòu)化方法? 螺旋模型? Web應(yīng)用

?

??? 隨著網(wǎng)絡(luò)技術(shù)和網(wǎng)絡(luò)編程技術(shù)的不斷發(fā)展,基于Web方式、以電子商務(wù)為典型代表的應(yīng)用系統(tǒng)越來越普及。尤其在現(xiàn)代企業(yè)應(yīng)用中,各種信息系統(tǒng)在原來的基礎(chǔ)上,由基于C/S方式向基于B/S方式轉(zhuǎn)換,逐漸過渡為基于Web的MIS、ERP、EIP乃至CIM的企業(yè)業(yè)務(wù)IT系統(tǒng),從而使企業(yè)管理不再局限于企業(yè)內(nèi)部,而是通過Internet擴展到遍布全球的客戶、供應(yīng)商、合作伙伴等各個環(huán)節(jié)。
??? 從近些年來的企業(yè)IT進程可以明顯看到,投入實際使用的Web應(yīng)用系統(tǒng)不僅在數(shù)量上不斷增加,系統(tǒng)規(guī)模和復(fù)雜程度也在不斷提高,使得基于Web的應(yīng)用越來越顯得難以開發(fā)、管理和維護。因此,軟件開發(fā)人員迫切需要一套適用于Web應(yīng)用系統(tǒng)的方法論來對相應(yīng)的開發(fā)、發(fā)布和評估進行指導(dǎo),研究這一方法論就成為目前備受關(guān)注的一個課題。本文將就這一問題展開討論,提出一種結(jié)合傳統(tǒng)軟件開發(fā)方法和模型,同時針對基于Web的特性加以補充完善的新的Web應(yīng)用系統(tǒng)開發(fā)方法,并以一個實際的示例加以驗證說明。
1? Web工程簡介
??? Web工程是用系統(tǒng)的、嚴(yán)密的、可以測量的方法來開發(fā)、實施和維護基于Web的應(yīng)用或基于Web的軟件的工程應(yīng)用[1]。毫無疑問,Web工程包含了程序設(shè)計和軟件開發(fā),這樣就不可避免地會采用某些軟件工程的思想和方法,因此,Web工程和軟件工程是緊密聯(lián)系的。但是,Web應(yīng)用系統(tǒng)又具有基于Web的固有特性,這些特性是傳統(tǒng)應(yīng)用軟件所不具備的。所以基于Web的系統(tǒng)開發(fā)與傳統(tǒng)軟件開發(fā)不同,需要符合適應(yīng)于開發(fā)要求的另一套獨立體系下的規(guī)范。因此,Web工程又是不同于軟件工程的。
??? 要準(zhǔn)確理解Web工程概念,必須弄清楚兩個問題。
??? (1)基于Web的應(yīng)用系統(tǒng)的開發(fā)與傳統(tǒng)軟件開發(fā)有著顯著不同的特征。比較直觀的一些包括:
??? ①由于Web應(yīng)用必定是基于瀏覽器的“瘦客戶”解決方案,客戶端更多的是負責(zé)信息的展示和布局,應(yīng)用邏輯和數(shù)據(jù)都放在服務(wù)器端,所以必須是特定的多層體系結(jié)構(gòu)。
??? ②Web應(yīng)用的開發(fā)需要更多的協(xié)調(diào)工作。原因是:開發(fā)團隊的成員構(gòu)成更加復(fù)雜;由于頁面外觀的滯后性及Web方式下對某些功能實現(xiàn)的局限,使得客戶的需求具有更大的不確定性;大部分基于Web的應(yīng)用系統(tǒng)都必須在相對更短的時間內(nèi)完成等等。
??? ③Web應(yīng)用具有不確定的多樣用戶形式。這里的用戶形式不僅指經(jīng)由Intranet、Internet連接起來的、具有不同技術(shù)和能力的多樣用戶群體,也指在不同的客戶終端上因分辨率、瀏覽器等的不同而造成的情況各異的多樣瀏覽平臺。
??? ④Web應(yīng)用的開發(fā)要求工程、科學(xué)和藝術(shù)在更廣泛的范圍內(nèi)結(jié)合?;赪eb的系統(tǒng)更加關(guān)注用戶的視覺感受。實踐表明,具有美感的頁面設(shè)計是用戶衡量整個Web應(yīng)用系統(tǒng)的一個重要指標(biāo),要比傳統(tǒng)軟件的UI設(shè)計在整個系統(tǒng)中占有更重要的地位。因此,Web應(yīng)用更強調(diào)色彩搭配、運用Flash、Midi等多媒體手段豐富用戶界面。
??? (2)必須認識到基于Web的應(yīng)用系統(tǒng)和Web站點之間的區(qū)別[2]。因為Web工程是用來指導(dǎo)開發(fā)和管理Web應(yīng)用的,而絕非Web站點。Web站點主要為來訪的用戶提供所需的信息和資料,它的信息流基本是單向的,即從站點到用戶;用戶根據(jù)查找信息的需要來瀏覽Web頁面,頁面的訪問順序是不確定的;Web頁面大多是靜態(tài)的HTML文檔,且附有大量豐富的圖片和動畫。而基于Web的應(yīng)用系統(tǒng)則更側(cè)重于完成某項功能,不以提供信息為惟一目標(biāo);由于后臺數(shù)據(jù)庫與動態(tài)頁面相結(jié)合提供了用戶信息的采集能力,從而使得信息流成為雙向的,且頁面訪問順序確定。當(dāng)然,為了達到豐富應(yīng)用系統(tǒng)人機界面和信息量的目的,在某些實際應(yīng)用中,Web站點往往會充當(dāng)Web應(yīng)用的門戶。因此,根據(jù)具體需求,也可以在廣義上將相關(guān)Web站點作為整個應(yīng)用系統(tǒng)的一部分來理解。
2? 利用結(jié)構(gòu)化方法和螺旋模型實施Web工程
2.1 使用結(jié)構(gòu)化分析和設(shè)計方法

??? Web工程的實施不適合使用面向?qū)ο蟮能浖_發(fā)方法進行系統(tǒng)分析和設(shè)計。正如前文所提到的,一個Web應(yīng)用系統(tǒng)的開發(fā)會遇到許多不可避免的不確定因素,這就很難從客戶真實系統(tǒng)中導(dǎo)出對象體系。如果強行按照面向?qū)ο蟮姆椒▽ο到y(tǒng)進行分析設(shè)計,勢必要考慮更多內(nèi)容,而與實際需求不一致時便會導(dǎo)致過度設(shè)計甚至重新設(shè)計[3],并且,一旦在實施中發(fā)現(xiàn)不合理設(shè)計,修正的代價就可能極大。同時,由于占有相當(dāng)比重Web頁面開發(fā)的Web應(yīng)用包含大量基于文件的Web資源,缺乏抽象概念,缺乏繼承和組裝這樣的重用機制,這使得面向?qū)ο蟮拈_發(fā)方法顯得力不從心。
??? 另一方面,Web應(yīng)用強調(diào)結(jié)構(gòu)清晰簡潔、符合用戶思維的功能導(dǎo)航,這與具有“自頂向下、逐步求精”分解方法的結(jié)構(gòu)化分析設(shè)計思想相吻合。作為軟件工程中技術(shù)最為成熟、應(yīng)用最廣且非常有效的一種軟件開發(fā)方法,結(jié)構(gòu)化方法的理論概念和實踐方法已廣為人知,并取得廣泛的成功。因而使用結(jié)構(gòu)化的方法分析和設(shè)計Web應(yīng)用系統(tǒng),可以更多地借鑒傳統(tǒng)軟件系統(tǒng)的成功開發(fā)經(jīng)驗,這更利于構(gòu)成復(fù)雜的開發(fā)團隊中成員之間的溝通,可以更方便地實現(xiàn)下文中將要提到的螺旋模型,從而成功實施Web工程。
??? 結(jié)構(gòu)化方法是將一個復(fù)雜的大型系統(tǒng)自頂向下地分解成一個個簡單的系統(tǒng),用系統(tǒng)工程的思想和工程化的模式對系統(tǒng)進行功能分解和結(jié)構(gòu)設(shè)計,從內(nèi)部功能上模擬客觀世界[4]。結(jié)構(gòu)化方法包括結(jié)構(gòu)化分析(SA)方法、結(jié)構(gòu)化設(shè)計(SD)方法、結(jié)構(gòu)化編程(SP)方法。根據(jù)分析方法的不同,又可分為面向數(shù)據(jù)流的和面向數(shù)據(jù)結(jié)構(gòu)的兩大類,包括Jackson方法、Warnier方法等多種軟件開發(fā)方法。本文所探討的是開發(fā)步驟明確、適用范圍更廣的面向數(shù)據(jù)流的結(jié)構(gòu)化軟件開發(fā)方法。
??? 面向數(shù)據(jù)流的結(jié)構(gòu)化軟件開發(fā)方法使用由簡單易讀的圖形符號構(gòu)成的數(shù)據(jù)流圖表達,根據(jù)系統(tǒng)內(nèi)部的數(shù)據(jù)傳遞和變換關(guān)系,自頂向下逐層分解,描繪出滿足功能要求的系統(tǒng)邏輯模型。設(shè)計階段依據(jù)模塊獨立性準(zhǔn)則、軟件結(jié)構(gòu)準(zhǔn)則(軟件結(jié)構(gòu)包括變換型和事務(wù)型兩種典型類型),將數(shù)據(jù)流圖轉(zhuǎn)換為應(yīng)用系統(tǒng)的體系結(jié)構(gòu),進而建立系統(tǒng)的物理模型,實現(xiàn)系統(tǒng)的概要設(shè)計。
??? 這種結(jié)構(gòu)化方法采用先全局后局部、先整體后細節(jié)、先抽象后具體逐步求精的設(shè)計開發(fā)過程,使得整個系統(tǒng)具有清晰的層次結(jié)構(gòu),符合人類解決復(fù)雜問題的普遍規(guī)律,而且所需要的時間相對較少,可以顯著提高開發(fā)效率。
??? 當(dāng)然,使用結(jié)構(gòu)化方法絕非是要全部摒棄面向?qū)ο蟮乃枷牒头椒?。事實上,這里一直強調(diào)的是使用結(jié)構(gòu)化方法中的結(jié)構(gòu)化分析和結(jié)構(gòu)化設(shè)計,而在編碼實現(xiàn)階段,完全可以借助面向?qū)ο蟮目梢暬幊坦ぞ?如.NET),根據(jù)實際需要準(zhǔn)確地抽取底層級別的對象并設(shè)計基類,從而利用繼承、重載等機制高質(zhì)量地重用代碼,簡化結(jié)構(gòu),降低維護難度。這一點在應(yīng)用螺旋模型的系統(tǒng)開發(fā)過程中,不斷循環(huán)調(diào)整結(jié)構(gòu)、優(yōu)化代碼以實現(xiàn)收斂逼近最優(yōu)結(jié)果時顯得尤為重要。
2.2 應(yīng)用螺旋模型
??? 長期以來,隨著大量傳統(tǒng)軟件系統(tǒng)的開發(fā)實踐和經(jīng)驗積累,多種軟件工程方法被總結(jié)出來,專家和工程人員也已經(jīng)從不同的角度、用不同的方法對它們進行了模型化,從而將相關(guān)方法從實踐上升到理論。而基于Web的應(yīng)用系統(tǒng),同樣作為一種軟件系統(tǒng),也可以借鑒應(yīng)用這些模型,從中吸取有益的經(jīng)驗,以便更有效、更便捷地實施Web工程。螺旋模型正是這樣一種同時適用于Web工程的軟件開發(fā)模式。
??? 由于軟件不同于一般的工業(yè)產(chǎn)品,軟件開發(fā)人員和用戶在專業(yè)知識和應(yīng)用領(lǐng)域理解上不可避免地存在差距,用戶在開發(fā)早期很難清楚地提供系統(tǒng)的完整需求,開發(fā)人員也很難在系統(tǒng)開發(fā)的需求分析階段完全正確地領(lǐng)會和定義用戶所提出的各項需求。提出開發(fā)要求的用戶通常只能大概描述軟件的目標(biāo)和功能,開發(fā)者根據(jù)自己對用戶需求的理解做出的軟件往往與用戶心目中的要求相去甚遠。抑或是只有當(dāng)軟件成品擺放在用戶面前時,用戶才能更加確認需求,進而激發(fā)新的需求甚至更改需求。這樣的問題在更加注重感官感受的Web工程中出現(xiàn)的可能性更大。這就很容易造成需要付出高昂代價的后期需求變動,甚至導(dǎo)致項目失敗。
??? 應(yīng)用螺旋模型這一基于原型化開發(fā)的進化模型則可以很有效地解決這種問題。顧名思義,這種開發(fā)模型是自內(nèi)向外以螺旋狀的形式進化發(fā)展,每一個周期都要經(jīng)過計劃、分析、設(shè)計實現(xiàn)、用戶反饋等環(huán)節(jié),每一次循環(huán)的結(jié)果都生成一個增強的軟件版本[5],如圖1所示。

?


??? 從圖中可以看到,這種模型不是等一個開發(fā)階段的工作完成以后才開始下一個階段的工作,而是把傳統(tǒng)的分階段的軟件開發(fā)方法融入到每一次螺旋循環(huán)當(dāng)中,生成用于驗證預(yù)定用戶需求和可能的設(shè)計方案的中間系統(tǒng)原型,并通過用戶對原型的意見反饋探索和揭示新的需求。一旦獲得新的信息,就對原型進行調(diào)整,除了進一步求精外,還追加實現(xiàn)某些新的、已明確的用戶需求,從而進入新一輪的螺旋循環(huán),逐步逼近最優(yōu)結(jié)果。需要注意的是,這種循環(huán)分析設(shè)計活動不僅針對整個應(yīng)用系統(tǒng)的開發(fā),而且可以同時在不同的模塊開發(fā)中并行進行。
??? 應(yīng)用螺旋模型的開發(fā)方法通過與用戶共同對系統(tǒng)原型的反復(fù)交互改進,在逐步的精確和完善過程中最終完成對系統(tǒng)的開發(fā)。其優(yōu)越性在于不要求應(yīng)用系統(tǒng)的需求定義必須在系統(tǒng)設(shè)計與實現(xiàn)之前完成,而是把這種定義貫穿在整個開發(fā)過程中,通過不斷交互修改逐步完成對需求的精確定義。這一點也符合了人類“實踐-認識-再實踐-再認識”的一般認識規(guī)律。需要強調(diào)的一點是,雖然螺旋模型認為需求分析是個動態(tài)的定義過程,但對初始的需求分析仍然需要非常重視。只有做好了初始的需求分析,才能構(gòu)造好初始的原型,也才能以此為基礎(chǔ)啟發(fā)各方人員對需求進行動態(tài)的、更精確定義,為開發(fā)成功打好基礎(chǔ)。
??? 應(yīng)用螺旋模型這種用戶驅(qū)動的開發(fā)模式,滿足了Web工程對以用戶為中心的開發(fā)要求,使用戶最大程度地參與到軟件的開發(fā)過程中并起主導(dǎo)作用,可以在中間系統(tǒng)原型的基礎(chǔ)上進一步清楚地闡述自己的微觀需求,這樣也使開發(fā)者可以真正了解用戶的需求,并能對用戶的動態(tài)需求做出及時有效的處理,使開發(fā)出來的系統(tǒng)更易于被用戶接受,有利于縮短開發(fā)周期,降低開發(fā)風(fēng)險。
??? 考慮到Web工程更強調(diào)系統(tǒng)工程性和設(shè)計藝術(shù)性的結(jié)合與平衡,在進行系統(tǒng)開發(fā)時,除了橫向上應(yīng)用螺旋模型并行開發(fā)各功能模塊之外,還應(yīng)該在縱向上并行開發(fā)網(wǎng)頁設(shè)計和功能實現(xiàn)的工作。
??? 網(wǎng)頁設(shè)計和功能實現(xiàn)的并行開發(fā)必須應(yīng)用在每一個功能模塊的每一次原型構(gòu)建中,這是因為在反饋原型或驗收項目的初期,用戶會更加強調(diào)可用功能的表示。實踐證明,盡早地在功能實現(xiàn)基礎(chǔ)上結(jié)合藝術(shù)設(shè)計的成分并調(diào)以恰當(dāng)比例,能夠增加用戶對整個系統(tǒng)開發(fā)的信心,往往為爭取到用戶的合作達到事半功倍的效果。同時,網(wǎng)頁設(shè)計師也可以更早地從用戶那里得到更多更明確的關(guān)于網(wǎng)頁結(jié)構(gòu)、色彩搭配的反饋意見,從而為藝術(shù)設(shè)計這一很難限定工期的工作爭取到更多有效時間。
3? 一個實施Web工程的實例
??? 這里將以一個簡化了的、筆者實際參與的B/S結(jié)構(gòu)車輛銷售管理系統(tǒng)開發(fā)流程為例,簡要說明并驗證本文所提出的Web工程實施方法。
3.1 第一層螺旋開發(fā)
??? 由于某些客觀局限性,用戶并沒有豐富的管理系統(tǒng)軟件使用經(jīng)驗,對于未來將要使用的車輛銷售管理系統(tǒng)的輪廓十分模糊,只強調(diào)最終報表的生成與使用。在開發(fā)人員的幫助下,用戶的需求被較明晰地整理為圖2所示的結(jié)構(gòu)化的功能模塊。
??? 經(jīng)過多次討論,用戶對現(xiàn)有功能模塊的劃分最為認可,認為符合其業(yè)務(wù)內(nèi)容及管理,進而明確了每一個功能模塊的業(yè)務(wù)規(guī)則和詳細內(nèi)容。
??? 在確定了需求并完成后臺數(shù)據(jù)庫結(jié)構(gòu)設(shè)計之后,就可以對整個系統(tǒng)按照螺旋模型進行開發(fā)??紤]到客戶、車輛、銷售、維修四個信息管理模塊中有一些在功能實現(xiàn)上的相似,首先對車輛信息管理模塊及其相關(guān)報表生成進行代表性的開發(fā),包括從設(shè)計到編碼到測試再到與網(wǎng)頁設(shè)計的整合,最終完成了整個系統(tǒng)的第一個原型。
??? 在數(shù)據(jù)庫中填充一些起輔助作用的測試數(shù)據(jù),第一個可以運行的系統(tǒng)原型就交付用戶驗收測試。由于第一層螺旋開發(fā)的原型只涉及有限功能模塊,而對相關(guān)具體業(yè)務(wù)規(guī)則的初始需求分析又較為充分,所以用戶對該部分功能的實現(xiàn)和生成的報表也較為滿意,僅僅對車輛信息的顯示和更新操作頁面提出了一些異議,包括頁面結(jié)構(gòu)和用戶操作上的一些問題。最終修正為如圖3所示的分頁顯示列表,使得所有信息錄入后,操作集中在同一個頁面內(nèi)完成。至此,隨著根據(jù)用戶的反饋意見對第一個原型的確定,第一層螺旋開發(fā)也就告一段落了。

?


3.2 后續(xù)螺旋開發(fā)
??? 基于第一個系統(tǒng)原型,后續(xù)開發(fā)的目的性也就更為明確了。同時,正如前文提到的,由于其余某些模塊與車輛信息管理模塊在功能實現(xiàn)方法上有相似之處,這就為后來的開發(fā)模式和代碼結(jié)構(gòu)都提供了可復(fù)用的樣本。
??? 一個具有代表性的例子就是實現(xiàn)通過條件查詢得到如圖3所示的信息顯示列表頁面的代碼復(fù)用。根據(jù)需求,客戶信息、車輛信息、銷售信息和維修信息都需要有分頁查詢和對某一條具體信息進行更新等操作的功能要求,其頁面結(jié)構(gòu)和操作步驟基本相同。這樣,就可以借助.NET的編碼機制,由圖3所在頁面的后臺代碼為基礎(chǔ),設(shè)計并實現(xiàn)出這樣一個信息查詢頁面的基類。上述四種信息的查詢頁面的后臺代碼均由該頁面基類派生,而又不影響頁面顯示信息的調(diào)整,代碼量大大減少,從而開發(fā)速度和可維護性也就大大提高。
??? 在第一個系統(tǒng)原型的幫助下,所有模塊功能的第二個系統(tǒng)原型得以迅速實現(xiàn)。此時,用戶已經(jīng)可以較為完整地了解整個管理系統(tǒng)了。從宏觀的角度上,用戶對系統(tǒng)需求有了更明確的認識和要求,從最初的只強調(diào)各類銷售報表,轉(zhuǎn)變?yōu)閭?cè)重于整個業(yè)務(wù)的進銷存管理,例如提出將庫存信息從車輛信息中獨立出來,增加并無報表需求的進價信息管理模塊等。
??? 對追加的需求與用戶反復(fù)協(xié)商討論并最終明確之后,在第二個系統(tǒng)原型基礎(chǔ)上改進的風(fēng)險分析表明:由于之前對系統(tǒng)很好地進行了結(jié)構(gòu)化分析,并對數(shù)據(jù)庫進行了滿足第三范式的設(shè)計,使得已有的數(shù)據(jù)庫結(jié)構(gòu)無需做大的改變,僅僅添加一張基本表和若干視圖即可。它不會造成高代價的后期重構(gòu)。所以在新一輪的螺旋開發(fā)中仍然可以滿足用戶的需求,最后順利地在原定計劃期限內(nèi)高質(zhì)量地完成了整個項目,交付用戶使用并獲得認可。
4? 總? 結(jié)
??? 本文針對目前Web工程的研究和發(fā)展現(xiàn)狀,提出了一種切實可行的實施方法。該方法結(jié)合了現(xiàn)有成熟的軟件開發(fā)方法和模型,并融入Web應(yīng)用的開發(fā)特點,能夠在很大程度上減少基于Web的應(yīng)用系統(tǒng)的開發(fā)風(fēng)險,同時開發(fā)效率更高,系統(tǒng)的重用性、可維護性、可靠性也都大大提高。
參考文獻
1?? Deshpande Y,Hansen S.Web Engineering:creating a discipline among disciplines.IEEE Software,2001;(2):82~87
2?? 張駿,王俊峰,張世永.Web應(yīng)用程序的設(shè)計與分析.計算機工程與應(yīng)用,2000;36(3)
3?? Gamma E著,李英軍,馬曉星,蔡敏等譯.設(shè)計模式:可復(fù)用面向?qū)ο筌浖幕A(chǔ).北京:機械工業(yè)出版社,2000
4?? 衛(wèi)宏春.三種主流軟件工程方法的比較.微電子學(xué)與計算機,2002;19(3)
5?? 羅曉沛,侯炳輝.系統(tǒng)分析員教程.北京:清華大學(xué)出版社,2004

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。

相關(guān)內(nèi)容