軟體原型 (Software Prototyping) 軟體快速發展以驗證其需求(validate requirements)
主題 軟體行程中的原型 (prototyping in the software process ) 原型技術 (prototyping techniques) 使用者介面原型 (user interface prototyping)
原型 (Prototyping) 快速發展(development)的方法 可以被視為降低需求風險的活動
引出需求(requirements elicitation) 幫助理解系統需求 引出需求(requirements elicitation) 藉由執行(experiment)原型系統以查看系統如何支援他們的工作 驗證需求(requirements validation) 揭示需求的錯誤和疏漏(omission)
原型的優點 可以暴露(expose)軟體使用者及開發者間的誤會(misunderstanding) 遺漏的服務(missing services)可能被偵測到(detected),錯亂(confusing)的服務可能被發掘(identified) 在行程的較早階段(early in the process)就有可執行的系統(working system)使用
原型可視為用以推導系統規格(deriving system specification)的基礎 系統能支援使用者訓練(user training)及系統測試(system testing)
軟體行程中的原型
原型化步驟 丟棄式原型(throw-away prototyping) 演化式原型(evolutionary prototyping)
Approaches to Prototyping (原型化步驟)
丟棄式原型 目標 驗證(validate)或推導(derive)系統需求之後即丟棄(discarded) 用以降低需求風險(requirements risk) 開始處理不清楚的需求(poor understood)
丟棄式原型不應被視為是最終系統(final system),因為 某些系統特性(system characteristics)可能被遺漏(left out) 沒有長期維護的規格(no specification for long-term maintenance) 不佳的結構(poorly structured)及不易維護(difficult to maintain) 難以將原型調整(tune the prototype)到能符合非功能性需求
原型難免缺乏文件記錄 (inevitably undocumented) 系統結構在發展期間會因改變(changes)而受影響(degraded through changes made) 一般的組織內質化標準(normal organisational quality standards)可能無法適用
丟棄式原型 (Throw-Away Prototyping)
演化式原型 (Evolutionary Prototyping) 目標 先產生初始的原型系統(initial prototype),並經過許多階段的修訂(refined)以至得到最終系統 從最易被理解的那些需求開始
特性 適用於那些無法被預先發展的系統 Ex. AI系統和使用者界面系統 需藉助允許迅速系統迭代(system iterations)開發的技術
驗證是不可能的(verification is impossible) 驗證意味著顯示系統的適當性(adequacy of the system) 規格(specification)、設計(design)和實施(implementation)是糾結(intertwined)在一塊的 發展過程是陸續以遞增(increments)方式交付給使用者
加速系統交付(accelerated delivery of the system) 優點 加速系統交付(accelerated delivery of the system) 迅速的交付(delivery)和建置(deployment) 使用者參與系統開發(user engagement with the system) 較可能滿足使用者需求
演化式原型 (Evolutionary Prototyping)
以原型當作規格 (Prototypes as Specifications) 部份需求(e.g. safety-critical functions)可能無法用原型來表示 非功能性需求在系統原型中無法測試(cannot be adequately tested)
遞增式開發 (Incremental Development) 在整體架構建立後開發及交付增量(increments) 傾向以結合原型方法的優點與一種更易管理的行程(more manageable process)及更好的系統架構進行
遞增式開發 (Incremental Development)
2. 快速原型技術 (Rapid Prototyping Techniques) 用於迅速發展的技術 動態高階語言(dynamic high-level language ) 資料庫程式設計 (database programming) 元件及應用組合(component and application assembly) 視覺化程式設計(visual programming)是繼承大多數原型開發系統的方法
動態高階語言 (Dynamic High-Level Language) 包括功能強大之資料管理工具(powerful data management facilities)的語言 需要在執行時能提供大量支援的系統(large run-time support system) 提供極佳的UI (User Interface)發展工具(facilities)的語言 具有一個整合式的支援環境(integrated support environment),其工具(facilities)可用於原型系統的語言
原型語言 (Prototyping Languages)
原型語言的選擇 應用領域的問題是什麼(application domain of the problem)? 需與使用者進行怎樣的互動(user interaction)? 該語言需要怎樣的支援環境(support environment)? 系統的不同部分可由不同語言開發 (different parts of the system may be programmed in different languages)
資料庫程式語言 (Database Programming Languages) 用於開發商業系統之領域相關特定語言(domain specific language)需建立在資料庫管理系統(database management system)之上 通常包含資料庫查詢語言(database query language),螢幕產生程式(screen generator),報表產生程式(report generator)及試算表(spreadsheet) 可與CASE toolset整合 語言(Language)+環境(environment)被稱為第四代語言(4GL)
資料庫程式設計 (Database Programming)
元件及應用組合 (Component and Application Assembly) 原型可由下列項目迅速被建立 再利用元件(a set of reusable components) 接合這些元件的機制(mechanism to‘glue’these components) 合成機制(composition mechanism)需包含 控制工具(control facilities) 元件溝通機制(component communication mechanism)
再利用的原型開發 (Prototyping with Reuse) 應用層開發(application level development) 整個應用系統是與原型結合起來,以便能共享共通的功能(functionality) 例如,若需要文字處理(text preparation),則需要標準的文書處理器(word processor)
元件層開發(component level development) 個別元件(individual component)都整合在一個可實作系統的標準架構(standard framework) 架構(framework)可能是 腳本語言(a scripting language)
一種整合架構,如CORBA (Common Object Request Broker Architecture,通用物件請求代理架構) CORBA標準由物件管理組織(OMG)設立並進行控制 CORBA定義了一系列API,通訊協議,和物件/服務資訊模型用於使得異質應用程式能夠互相操作,這些應用程式用不同的程式語言編寫,執行在不同的平台上 CORBA因此為定義明確的物件提供了平臺和位置的透明性,這些物件是分散式計算平臺的基礎
組合再利用元件 (Reusable Component Composition)
複合文件 (Compound Documents) 附有主動式元素(a document with active elements)(如試算表)的文件允許使用者做計算(computation) 每個被啟動的元素(active element)都有一個相關的應用程式(associated application),當該元素被選取時,其應用程式會被喚起(invoked) 該文件可被視為是不同應用程式的整合器(integrator)
在複合文件中應用程式的連結 (Application Linking in Compound Documents)
一個原型系統由包括文字元素(text elements),表格(tables)和聲音檔(sound files)的複合文件組成 關連性應用(associated applications) 處理文字元素的文書處理器(word processor for text elements) 處理表格的試算表(spreadsheet for tables) 播放聲音檔的音效播放器(audio player for sound files)
視覺化程式設計 (Visual Programming) 腳本語言(scripting languages)如Visual Basic支援視覺化程式設計 原型是藉著從標準項目(standard items)所建立的使用者界面(user interface)及與這些項目相關的元件(associating components with these items)所開發出來 需要大型元件庫(large library of components)來支援這類發展
再使用的視覺化程式設計 (Visual Programming with Reuse)
上圖表示元件及相關的顯示元素(the components associated with some of the display elements)
3. 使用者介面原型 (User Interface Prototyping) 無法有效(effective)地預先指定(pre-specify)使用者界面的外觀和感覺(look and feel)(原型(prototype)是必要的) 使用者界面產生器可用來”畫”(draw)使用者界面及模擬界面元件的功能(simulate its functionality with components associated with interface entities) Web界面可用網站編輯器(web site editor)以產生其原型
參考資料 Ian Sommerville, Software Engineering, 7th ed., Addison-Wesley,2004.