需求塑模、模擬與驗證 需求塑模的概念,在軟體工程領域裡是一個屢被提起的重要精神之一。但是要真的做到類似「樂高」 Lego 積木,可以輕易建立出具像且可以操作的模型,則一直是個頗具挑戰的課題。
雛型的迷思
對很多軟體開發人員而言,最直接的做法,可能就是發展「雛型」 prototype 系統。雛型系統的最大好處之一,就在於它可以被操作模擬。同時雛形系統也可以讓需求提出的「使用者」,早早體驗未來軟體成品的樣子。這一點事實上極為重要,因為除了極有系統經驗的使用者外,一般而言,使用者提出需求時,大部分無法真正想像未來的軟體系統「 長相 」。所謂長相是指這個軟體的操作介面、操做方式、操做流程與其後的運作邏輯等。因此雛型系統可以讓使用者更聚焦於其需求的對應軟體系統,這樣子也可以協助使用者早日發現不符合需求的地方而早日修改設計,而這正是需求塑模的主要目的之一。
那麼是否利用發展雛型系統,就可以作為需求的塑模與模擬呢?答案是不行。原因有二:第一個原因是雛型系統的發展成本與耗費時程皆不低;第二個原因則是雛型系統不可能涵蓋所有的需求,一來時程上不可能做到,二來即使所有需求完全被放進雛型裡,那系統即已完成,就不再是雛型了。但是需求根本還未確認前,花大功夫所做出來的系統根本不可能符合需求。因此發展雛型系統無法完全類比於樂高積木,不能真正作為需求塑模用。
而更危險的是,雛型系統理當只是作為驗證用,目的達成後應該重新發展正式的軟體。但是由於發展雛型系統已經花費大量的成本與時間,大部分的軟體開發團隊可能都會捨不得丟棄雛型系統。此時,軟體的發展會變成是演化式的做法-隨著需求的增加,逐步修正原來的雛型系統直至滿足需求為止。 雛型做法做得不好時,會變成是挖牆補洞,最後整個軟體系統會是個「拼裝車」 。
那麼,需求塑模與模擬驗證究竟要如何做呢?在往下介紹前,我們先來看看軟體技術的一些新趨勢。其中OMG (Object Management Group)組織提出的UML (Unified Modeling Language)規範了標準的模型符號(Model Notations)來作為系統開發人員對系統的描述。以UML來塑模系統,除了因為有共同的溝通符號能減少溝通時的誤會外,也能以系統模型的資訊來驗證設計是否符合系統需求;另外對於後續的系統維護,或是讓專案新進人員了解現有系統的設計,都有相當大的幫助。
然而UML文件究竟仍離樂高積木式的塑模精神頗遠,UML扮演的腳色更接近產品的最後正式設計文件。OMG在2001年又提出MDA (Model Driven Architecture)的軟體發展概念。在MDA的架構中,包含三種重要的模型層次,分別是:CIM Computational Independent Model 、PIM (Platform Independent Model)、以及PSM (Platform Specific Model)。這三個模型層次,從其英文名稱可以理解其各自含意。而其基本精神在於先不考慮任何資訊技術,根據需求建構CIM級的需求模型。至於PIM級與PSM級的模型,則可以彼此間根據MDA制定之標準以及模型間所定義的轉換規則自動轉換。最終目標則是PSM到軟體程式碼的自動生成。
MDA最棒的地方在於 軟體的發展,一切是根據模型來驅動:模型改變,就像龍頭一動龍尾跟著動一樣,整個最終的軟體也跟著自動生成 。因此從MDA的精神來看,我們更需要一個樂高積木式的塑模方式,協助先建立CIM的需求模型以便作為確認規劃的先鋒。
用電影手法開發軟體
說了那麼多,一個樂高積木式的軟體需求塑模,到底該長成什麼樣子呢?假如將軟體看成是一座城堡,那麼軟體需求對於使用者而言,可以協助其確認需求作為未來的資訊規劃參考的內容是什麼。同時,不要忘了,這座城堡模型也是未來真正成品分析設計的主要依據,那麼對於未來設計開發團隊而言,哪些內容又是非需要不可的呢。
原則上,前文剛剛提到的「系統長相」是塑模所需的最基本內容。要幫助需求提出的使用者與開發團隊去認識未來的軟體,需求模型必須具備清楚的描述、結構、以及可被模擬操作的特性。電影拍攝手法或許可以作為軟體塑模的借鏡:需求首先被當成是所欲拍攝的電影內容一樣看待。透過對劇本、分鏡場景、角色、以及內容整合等的設計與描述,再加上如同電影一樣可以被播放模擬的概念,軟體分鏡可以協助使用者在不需寫作任何程式下,快速建造類似樂高積木的需求與整合模型。我稱之為「 軟體分鏡 」的需求塑模技術;在此初步塑造的需求與整合模型下,使用者可以一再反覆修改模型直至驗證需求成功為止。
有了驗證後的需求模型,除了可以作為資訊需求規劃的依據外,事實上,一個夠詳細的模型,也可作為後續軟體開發的關鍵參考。而且,我們也發現,有了一個經過驗證的需求模型,對於未來實際開發出來的軟體品質也頗有助益,我們下個單元再來討論這個議題。
專欄作者:周忠信
出版時間:2004/11/11
出 處:CNET
資料來源:http://taiwan.cnet.com/enterprise/column/0,2000062893,20093941,00.htm