關於部落格
艾西莫夫說:適切的創造力需要具備五個條件,博學、聰明、直覺、勇氣、運氣。
  • 31871

    累積人氣

  • 0

    今日人氣

    3

    追蹤人氣

專案軟體工程--成功與失敗的因素

RUP有助於專案的控管 RUP的核心精神 ● 使用案例驅動(Use Case Driven) ● 以架構為核心(Architecture Centric) ● 往覆與漸進(Iteration & Incremental) ● 以模組為基礎(Model Based) 有別於瀑布式開發從分析、設計、開發、測試到上線,單一縱向的開發流程,RUP(Rational Unified Process)開發方法論還有第二個面向,橫軸以生命周期的角度,將軟體開發分為初始(Inception)、細化(Elaboration)、建構(Configuration)及交付(Transition)等4個發展階段,因此RUP是二維的開發流程。 剖析縱、橫切面,主要呈現RUP的4個重要的精神:使用案例驅動(Use Case Driven)、以架構為核心(Architecture Centric)、往覆與漸進(Iteration & Incremental)及以模組為基礎(Model Based)。 9個工作流程 縱向的RUP開發流程,羅列軟體專案中應具備的心法(Disciplines),共分為9個工作流程(Workflow),前6項是核心流程,後3項是屬於支持性管理流程: ● 商業建模(Business Modeling):商業建模通常應用在初次接觸的領域專案,利用商業建模中的各種活動與步驟,熟悉領域知識(Domain Knowledge)。對於熟悉的領域,這是可以省略的工作。 ● 需求分析(Requirements):建立需求模組,繪製使用案例圖(Use Case Diagram),是未來分析、設計、實作與測試的基礎,其重要性不容忽視。 ● 分析與設計(Analysis & Design):根據需求分析所繪製的使用案例圖,導出分析模組與設計模組。分析模組用以描述系統的功能與作用,而設計模組中的類別圖(Class Diagram)已經可以據以產生程式框架。 ● 實作(Implementation):根據前一階段產出的類別圖,填入與商業邏輯程式,成為可執行的功能。 ● 測試(Test):測試工作同樣必須基於使用案例,導出測試案例。RUP採用的自動化測試,錄製測試案例,測試案例可分為基本的正常流程及例外狀況,一旦發現系統有其他的錯誤時,再針對錯誤錄製測試案例。 ● 部署(Deployment):包括軟體的封裝、安裝與驗收。 ● 建構與變更管理(Configuration & Change Management):主要是版本控管與變更管理。 ● 專案管理(Project Management):包括專案的計畫、監控、風險評估及人員的管理。 ● 環境配置(Environment):系統的軟、硬體配置,及手冊與教育訓練的規畫。 以上工作流程,在軟體生命周期的不同階段,占有不同程度的比重,例如初始階段以需求分析為主、細化階段則分析與設計的工作居多,建構階段實作的比重吃重,而交付階段偏重建構與變更管理。 軟體生命周期的四階段 從軟體生命周期的角度,共分為初始、細化、建構及交付等4個階段,每個階段又可畫分多個往覆式(Iteration)開發流程,以漸進的方式,在系統基礎架構上逐步構築出完整的功能。 ● 初始階段:藉由訪談探索需求,形成需求模組,畫出使用案例,而後續各階段的設計、開發與測試,都將根基於需求模組的使用案例,認知有誤將導致未來付出很大的修正成本,所以這個階段具有重要的意義。 ● 細化階段:RUP強調以架構為核心,根據初始階段的使用案例,找出足以驗證系統架構的核心需求,再視規模切割成適當的往覆周期完成。在每個往覆中完成的核心功能,均包括分析、設計、實作與測試等完整的開發步驟,提交給使用者可以執行的系統,以確認設計無誤。 ● 建構階段:漸進是RUP的核心精神,在細化階段確認系統的架構與核心功能後,建構階段即根據基本的架構,大量複製前一階段的設計,逐步累進增加系統功能。 ● 交付階段:在前面幾個周期中,經由數次的往覆式流程,已經提交使用者數個可執行的版本,這個階段主要是根據使用者的回饋,進行少量的調整、設定與安裝,因為主要的問題,應該在早期階段已經解決。 除了定義軟體開發應具備的工作流程,RUP更以生命周期的角度,切割成工作4個階段。在每個階段有不同的工作重點,並可切割成多個往覆式流程,以遞增的方式,逐步構建出完整的軟體系統。 4個核心精神 從縱向的開發流程分析,RUP是一連串建構模組的過程,從需求模組導出設計模組、開發模組及測試模組。而所有的設計,均根源於初始階段需求模組的使用案例。由此看出,開發流程的核心精神是「以模組為基礎」及「使用案例驅動」。 而橫向以軟體生命周期的角度來看,RUP為避免瀑布式開發,單向一次性的流程的缺點,在於若驗收時才發現產品不符合期待,將付出慘痛的代價。因此最重要的就是在細化階段,開發核心功能,以驗證系統架構設計的正確性,到了建構階段,便以系統架構作為大量複製的基礎。 而且生命周期的每個階段,都可以切分成多個往覆式流程,每次都設計一點、實作一點、測試一點與交付一點,達到「早期發現,早期修正」的目的,以降低專案的風險,這便是「以架構為核心」、「往覆與漸進」的精神。 精準分工利於管理 RUP的架構非常龐大,縱向的9個工作流程,各自皆有明確應執行的工作項目,每個工作項目又細分各種活動(Activity)與相對的產出(Artifact),再細看每個活動,也都包含詳細的執行步驟。 當每個人只需專注於自身扮演角色所應處理的工作,在轉交給下一個人的時候,也明確定義應輸出/輸入的文件與程式,軟體產業的發展便有可能類似硬體產業,形成軟體工廠加速生產。 雖然「軟體工廠」的想法,現階段看來仍很遙遠,不過精細的分工及明確定義的步驟與產出,確實有助於管理者清楚掌握專案的進度與執行的情況。即使專案延遲或失敗,也會清楚明白是哪一個環節發生問題。
相簿設定
標籤設定
相簿狀態