This page looks plain and unstyled because you're using a non-standard compliant browser. To see it in its best form, please visit upgrade to a browser that supports web standards. It's free and painless.

Kenming's 軟體設計思維 會員登入 會員註冊

關於 CMMI

  • 與其說 CMMI 是流程框架(Process Framework),倒不如說 CMMI 是目標框架(Objective Framework)。
  • CMMI 是以 “流程區域(Process Area)” 為主要完成目標。無論是以 “Continuous” 或 “Staged” 的途徑(approach),均以 “Process Area” 為單位,來檢驗 “軟體能力” 的成熟度。
  • Ex. “需求管理(Requirement Management)” 為一個 “Process Area”,是 CMMI level 2 必須完成的主要目標。(level 2 需完成 7 個主要的 “Process Area”;level 3 需完成 14 個”)。
  • 每一個 “流程區域” 會細分為多個子目標。若該子目標只對應單一的流程區域,稱為 “特定目標(Specific goal)”;若子目標會涵跨多個流程區域,則稱為 “一般目標(Generic goal)”。
  • 每一個特定目標/一般目標會列出一到多個 “期望(expected)” 的特定實務(specific-practice, sp)/一般實務(generic-practice, gp)。實務為一段陳述(statement),表達了完成子目標時的作法。
  • 實務並非為絕對、唯一達成子目標的唯一作法,它是 CMMI 建議、期望的作法,但仍可就現實狀況來找出 “自己” 的的實務作法,重點是,能達成(achieve)子目標(GG/SG)的規範與要求。
  • 既然實務僅為敘述性的陳述,可以把它視為是 “抽象(abstract)” 的 “How-to”,要能找出符合實務的作法,可以從主流軟體開發流程,如 RUP/Agile/XP 等,找出實踐的具體手段。

CMMI 的 Model Content 為:Process Area, GG/SG, GP/SP。其中,Process Area 與 GG/SG 為達成軟體能力成熟度的必要元件(required component);GP/SP 則為 "期望(expected)" 的元件,屬建議性,並非絕對需要。若以 UML 類別圖表達 CMMI Content 之間的關連,如下圖1 表示。

利用UML 類別圖表達 CMMI Content 之間的關連

圖1、範例-利用 RUP/XP 方法論實現 Requirement Development -> SG3

CMMI Content 類別圖說明:

  • CMMI Level (2~5) 包含(aggregate) 多個“流程區域(Process Area)”。
  • 每一個流程區域會包含多個子目標(Goal),子目標依性質區分為“一般目標(Generic Goal, GG)”與“特定目標(Specific Goal, SG)”。
  • 將 GG/SG 設計為“Interface”的意涵在於,任一個具體(concrete)的實務(practice)類別,只要符合該子目標的介面規範即可,也就是說,CMMI 不規定“how-to”,只要能確實達成(achieve)子目標的規範即可。
  • GP/SP 可視為是“抽象(abstract)”的“how-to”陳述(statement),因此,具體實務類別也可以依循 GP/SP 內的陳述來具體實現。

從主流開發流程找 How-to

  • CMMI 只規範達成目標的標準,但並沒有規定該如何(how)達成目標。
  • “如何”達成目標,需要找出具體的方法與解決方案,”How-to”的參考來源可以從 RUP/Agile/XP 方法論內的實務經驗與工作流程(Workflow)、樣版(Template)、實務案例等(當然,也可以由團隊內部自行找出最佳的實務經驗(Best Practices) )。
  • 具體的 “How-to” 會對應(mapping) 至 CMMI 內的 GG/SG (goal),也可以是 GP/SP (practice)。

範例一、Requirement Development -> SG3

Process Area: Requirement Development (需求開發)
Purpose:

The purpose of Requirements Development is to produce and analyze customer, product, and product-component requirements.
SG3: Analyze and Validate Requirements
The requirements are analyzed and validated, and a definition of required functionality is developed.

範例-利用 RUP/XP 方法論實現 Requirement Development - SG3" src="http://www.kenming.idv.tw/mybase/soft_imgs/cmmi_content_example-1.jpg" />

圖2、範例-利用 RUP/XP 方法論實現 Requirement Development -> SG3

RUP 透過需求工作流程(Requirements Workflows) 內的幾個活動(activity),來達成主要對 CMMI “需求開發” 流程區域內對 SG-3 的實現:

  • 分析問題,找出關係人(stakeholder),找出系統邊界與限制,瞭解關係人的需要(Need)。
  • 定義系統範圍,利用使用案例模型(Use-case Model)描述系統的需求,以達成與客戶對系統功能性的共識;捕捉其它重要的需求,例如非功能性需求與設計限制等。
  • 撰寫測試案例(以 Use Case 為單位),由客戶提供測試腳本與數據,以作為在實作(Implementation)工作流程的自動化測試的契約。
  • 實現(Realize)使用案例,將需求工作轉移至 分析/設計 的工作流程。

XP 是透過 “使用者陳述 (User story)” 來達成主要對 CMMI “需求開發” 流程區域內對 SG-3 的實現:

  • 將需求寫成陳述(statement),並且寫在卡片(4x6 索引卡)上。
  • 客戶有權要求每個需求功能最細小的環節;程式設計師有權知道需求到底是什麼。
  • 每一個敘述必須都是可以測試的(testable),也就是可以寫成功能測試程式碼,來驗證敘述是否可以運作。
  • 若一個功能敘述無法在一至兩個星期內完成,代表敘述可能太大了,必須對其分割為多個敘述。切成適當的大小,以便於評估其難易度,並做為未來量化時,估算的計量單位(功能點, functional point)。

範例二、Risk Management -> SG1 -> SP 1.3-1

Process Area: Risk Management (風險管理)
Purpose:
The purpose of Risk Management is to identify potential problems before they occur, so that risk-handling activities may be planned and invoked as needed across the life of the product or project to mitigate adverse impacts on achieving objectives.
Specific Goal-1: Prepare for Risk Management
Specifice Practice:
 
SP 1.1-1 Determine Risk Sources and Categories
 
SP 1.2-1 Define Risk Parameters
 
SP 1.3-1 Establish a Risk Management Strategy

範例-利用 RUP/Agile 方法論實現 Risk Management - SG1 -> SP 1.3-1" src="http://www.kenming.idv.tw/mybase/soft_imgs/cmmi_content_example-2.jpg" />

圖3、範例-利用 RUP/Agile 方法論實現 Risk Management -> SG1 -> SP1.3-1

RUP 透過專案管理工作流程(Project Management Workflows) 內的風險管理的部分,來達成主要對 CMMI “風險管理” 流程區域內對 SG 1-> SP 1.3-1 的實現:

  • 採用循環與漸進(I&I, iterative and incremental)的開發方式,及早降低風險。
  • 列出風險清單,並制訂風險高低指標(risk magnitude indicator) 辨識與描述風險的高低程度。
  • 利用架構 POC (proof of concepts),來找出會影響架構的風險因子,包括系統整合、人員技術與技能等問題。
  • 建立測試工作流程,及早獲得系統品質的相關回饋(feedback),並找出在分析設計與實作階段的隔閡(gap)。

Agile 並沒有建立與風險管理相關的計畫,而是透過頻繁溝通、大量取得回饋,儘早釐出風險,並透過實務來克服與解決風險。

  • 採用循環與漸進(I&I, iterative and incremental)的開發方式,及早降低風險。
  • 客戶與開發人員在專案進行期間一起工作,以降低溝通的風險。
  • 採測試先行與接受度測試,以降低需求變更的風險。
  • 早一點作整合,經常做整合測試,以降低系統整合的風險。
  • 經常釋出(release)可用的版本,週期可是數週到數個月(最好三個月內),較短時間間隔為佳。

結語:CMMI 綱要

  • CMMI 非高度儀式且為重型的開發製程,它是指導軟體開發的綱要,CMMI 也沒有給具體的實務手段,它是制訂了目標與方向,來引領軟體開發往 “對的方向” 走。
  • 找出達成 CMMI 所制訂的手段,可以透過主流的軟體開發流程,包括 RUP/Agile/XP 等,並依據專案的規模與性質,來對開發流程與產出(Artifacts),作適當的裁適(Tailor)。
  • 可以利用倒推式的目標設定與規劃(Backward Planning)的方式,來找出如何達成目標的手段。所以,若 CMMI 為目標(Goal),那麼,RUP/Agile/XP 就是可以達成目標的手段(How-to),兩者是互補,而非衝突。
  • 回到最本質的一面,“人” 才是影響軟體開發最關鍵的因子,我們更需要知道的是,在團隊開發人員的角色裡,應該具備的素養與修練是什麼,而要學習的技能與技術,又是那些,然後,才來找出適合軟體開發人員的 "利器(Tool)"。專案管理者,切莫本末倒置,先從工具與製程著手,而忘掉根本。

目標設定規劃與行動的精要

  1. 檢視目標與方向 → 找出手段(how-to) → 瞭解技能與技術/心理素養 → 善用利器
  2. 調整與修正手段→循環與漸進→往目標前進!
本週六(09/23) 所舉辦的「軟體設計鮮思維」如期在「開羅會議中心」舉辦,歡迎尚未報名參加的學員蒞臨參與研討會課程(尚有 10 餘名名額,若不及報名者,亦歡迎現場參加報名)。

只要擔負 NT$150 茶水與場地費,就可聽三場資深講師們的簡報與心得,同時更歡迎帶問題來與軟體設計的同好們一同參與討論。請參考:
http://www.hsdc.com.tw/modules/eguide/event.php?eid=23

煩請已報名或現場報名,確定參加的學員們,請下載簡報檔案,並請列印教材,以方便參考聽講。
所有簡報教材已提供網路下載服務,請至:
http://www.hsdc.com.tw/modules/wfdownloads/index.php

本次研討會的主題為 CMMI,並分為三個場次來個別介紹:

一、透過便宜的 UML 工具 EA(Enterprise Architet 6),即可支援 CMMI level-2/3 的大部分功能,本場次的簡報內容,絕對是讓想導入 CMMI 軟體廠商,有相當大的參考價值。

二、Peek at CMMI,一瞥 CMMI 的樣貌,以及由 Facade 先生從他的角度來看未來軟體工程的世界。

三、CMMI 就是目標框架,其實可以使用成功學中目標設定的「倒推式目標設定」的方法,來找出達成 CMMI 對於主要目標/次要目標 的手段與解決方案,而這些手段,其實可以從主流的軟體開發流程,如 RUP/Agile/XP 等找出,本場簡報示範兩個案例,來說明如何找出達成 CMMI SG/SP(Specific Goal/Specific Practice) 的方法。

研討會時間:09/23(星期六),PM 1:10~5:00。
地址:台北市光復南路65號B2 (光復南路、市民大道交接口)。 TEL: (02) 2747-7808
(搭乘捷運可於捷運板南線/國父紀念館出口,往光復南路方向走路不到 5 分鐘即可到達。)

本次的教材內容:

EA 實現RUP to CMMI level-3 的 解決方案 -- 賴信仁(Ringle Lai)
 o EA 對RUP to CMMI Mapping 的支援
  o EA 對Project Management 的支援
  o EA 對Process Management 的支援
  o EA 對Engineering. 的支援
  o EA 對Support. 的支援
 o 實機展示

Peek at CMMI -- Facade
 o Future Engineer World
 o IT Developer must understand some things
 o peek at cmmi
 o conclusion

從主流開發流程找出對 CMMI level-2/3 實現的手段 -- 王克明(Kenming Wang)
 o CMMI Overview
  o 四大範疇(Category)/Process Area
  o General/Specific Goals and Practices
  o 利用 UML 類別圖 Model CMMI Content 之間的關連
 o 從主流軟體工程找出達成 CMMI 主要目標的手段
  o RUP to CMMI mapping
  o Agile/XP to CMMI mapping
 o 結語:CMMI 綱要 (目標與手段)

-------------------------------------------------------------------------
§研討會與課程諮詢(HSDc. 軟體設計專業顧問團隊):
 諮詢專線:TEL: 02-27227179
 服務信箱:service.hsdc@gmail.com

課程說明

既然,企業層級的系統開發,已確定在實做層次的程式語言往物件導向的方向來走,例如,Java 與 .NET(C#, VB.NET),所以軟體人員包括程式開發,均需瞭解物件導向的設計觀念才行。但,從 Java 或 .NET 的層次來學習物件導向,並不是一個好方法,因為,軟體人員並不容易瞭解為何要採用物件導向的思維,又,什麼才是實做物件導向的正則,不是隨便設計幾個物件,卻沒有真正釐清物件的本質與應盡的責任,就叫做物件導向的。

本課程僅利用一天,約七個小時的課程時間,從物件本質,到基礎觀念與進階應用等觀念的傳授,包括概念與抽象、物件與類別及其之間的關係等,以及包括封裝、介面與多型的應用。利用三個層次,傳授不同層次的法,但均旨於闡述物件導向思維的本質,從觀念、生活/軟體面的層次、軟體塑模(Modeling)的層次、程式語言的層次。每一個層次,均有其產出,生活/軟體面利用實例來表達;軟體塑模產出類別與物件圖;程式語言同時產出 .NET 與 Java 的程式碼(同時也藉由程式碼範例,瞭解到類別之間的關連、一對多、多對多的關係是如何程式化,又介面與多型的程式碼又是如何表達的...)。

物件導向的思維,從 PM,SA/SD,Programmer ...等,所有軟體人員應該具備的蹲馬步基礎功夫,本課程為了推廣「什麼才是物件導向」,僅以不到 $1000 元的超優惠價格,來傳授與引導「物件導向的本質與實務」。我們的課程,應該是與從 OOP 為出發點所教授的物件導向觀念是大大不相同的。

對了,下午我們也免費備有點心與咖啡,是現煮的研磨咖啡(也有外購小蜜蜂的冰咖啡),好喝香醇。品味咖啡,並同時瞭解與領悟物件導向的觀念與應用,那可是心靈愉悅舒暢的享受。

參考文章:
不要從程式語言學習物件導向



物件導向基礎觀念養成 (星期六) — 第一梯次(10/14)

  課程大綱  我要報名

課程簡述:
  • 從物件本質,到基礎觀念與進階應用等觀念的傳授,並從三個層次的產出—生活與軟體面的實例、UML Model、程式碼(同時附 C#.NET and Java),來解釋物件的基礎觀念與實作面的實務。
課程特色:
  1. 示範與引導學員實際操作與練習。
  2. 上課時即會發送給學員教學光碟,內容提供
    EA 自動安裝與教材內容及範例。
  3. 本課程均保留與提供了學員免費再旁聽乙次同樣課程的權利,以一次低廉的收費,就可以擁有兩次上課的收穫,課程的師資、內容與品質,我們有信心是不會讓學員們失望的。
課程目標:
  1. 瞭解物件導向最重要的幾個關鍵術語,包括概念與抽象、物件與類別及其之間的關係等。以及包括封裝、介面與多型的應用。
  2. 瞭解物件導向關鍵術語在生活面的觀念與應用,以及在軟體面的設計觀,並能具化至 OOP 程式語言的層次。
  3. 讓學員不只是從 OOP 看物件導向,而應該是從生活面來反映至軟體的實作層次,切莫本末倒置。
授課日期
  1. 2006/10/14 (星期六),共一日。
  2. AM 9:20~12:40、PM 1:40~5:00,計約七個小時上課時間。
授課地點:
  1. 開羅會議中心,地址:台北市光復南路65號B2 (光復南路、市民大道交接口)。
  2. 參考交通與地圖
適合學員:
  • 在職軟體開發人員或在學學生。
  • 對於使用 OOP 卻不得其法或不明其理,想瞭解物件導向 "蹲馬步" 的基本功夫。
課程費用:
  1. $999, 含稅。
  2. 本課程為推廣性質,所以無論舊生或新生,均享有超值折扣費用。
師資簡介:
  • 賴信仁(Ringle Lai),王克明(Kenming Wang)
  • 擅長將複雜抽象的概念,以非常淺顯易懂的比喻及說明,讓學員一清二楚,並善於引導學員具備設計應有的反思能力。
使用教材:
  1. 由 HSDc 提供物件導向教材,包括內容、案例、Model 與程式碼等,同時並附有完整教學光碟乙片。
  2. 學員可攜帶相關 物件導向 參考書籍,並對於書中內容有問題者,可以直接提問。
開發工具:
  1. EA 6.1(Trial) UML Tool。
備註:
  1. 教室設備包括白板與投影機,由講師親自說明與操作示範。(學員可攜帶錄音筆)
  2. 學員最好能攜帶 Notebook,可以於課程中實際操作與練習。
  3. 報名滿 10 名即確定開班,同時保留 5 名學員重新選修同一課程(請攜帶原上課講義)。開課前兩日會以電子郵件聯絡與通知學員。
  4. 為確保報名足額人數,煩請先以 ATM 轉帳預約費用($500),並請於報名表備註欄位內,註明您的轉帳帳號末 5 碼與轉帳金額。(若實在不及轉帳者,仍可現場報名,但請在報名表內註明現場繳費)。 ATM 轉帳帳號: 新光銀行 (103) 帳號: 0772-50-100979-9
  5. 下午均免費備有冰、熱(現煮)研磨咖啡(非3合1)與點心,供學員享用。

§. 課程諮詢
聯絡電話:(02) 2722-7179
Email: service.hsdc@gmail.com
http://www.hsdc.com.tw