nonus 的个人资料人世本苦,其苦何鉅-無我詩文舖照片日志列表更多 ![]() | 帮助 |
|
人世本苦,其苦何鉅-無我詩文舖5月14日 一個SD部門成員對前景的憂心 對於SD部門的前景,開發能力是SD部門唯一能立於公司IT營運的核心能力;系統化則是本質。但整個SD部門想要維繫這個能力,不是只有組織與流程就足夠了。以程式設計到開發過程的角度來看,一個開發專案的運作組織與流程形成的架構僅止於運作的表面條件而已;但整個開發架構是要具有可驅動性,仍需要平台與溝通的語言來維繫整個資訊的流通,最重要是要有操作的行為(Operation;與Method是有區分的),屬於物件開發最重要的兩種本質之一。一般公司,除了組織看起來是正常的,流程就沒有精神做Base。什麼精神,就是行為,在軟體工程的術語而言:『就是方法論』。ITIL不是開發流程,是營運流程。所以在微軟的ESF模型中,開發流程(MSF)與營運流程(MOF;即MS版的ITIL)是分開來的。
MSF不算是方法論,它僅能列為一種基於開發歷程上的開發架構。PMP是一種專案管理的方法論,也與開發專案相去甚遠。一個方法論必須能夠擁有它的溝通語言,驅動流程。國語文字是溝通語言,卻無法轉化為開發語言,所以,更遑論是開發方法表達的本質。圖形也是語言,它也不能直接轉化為開發語言。那什麼才是適合開發的溝通語言,個人想法是同時結合文字與圖像的語言,在方法的驅動下,才能成為自需求/設計到開發程式碼,一脈相承的溝通語言;而溝通的過程中,流程自然而然的就會被驅動。
而文件,是溝通之後留下的具有回溯性的垃圾。 3月18日 對於ITIL Notify設置的想法
對於,ITIL的Notify的設置,有幾點想法提供考量; 第一、ITIL的變更流程管理,是以角色形式定義在管理功能之中,而非是與組織的職位相呼應。若需要與組織職務相呼應,請考慮BPM,而非Remedy。 第二、變更流程的簽核是以授權完成變更流程擁有權的遞轉,而非依賴非作業內容所需的所謂『關卡』,非以角色為考量的宜撤除。但撤除並非代表無法執行責權,此責權應由CM決定CAB時將之選入,如此才能回歸ITIL基本的管理精神。 第三、延續第二點的觀點,不以『關卡』觀點來看授權。而CM動態在選擇CAB時,可考量將需求的MOT納入參與決議之列。而CM在決定CAB時,應以變更的品質為考量人選,而每個被選入的CAB成員,則以各自專具的專業觀點的品質提昇為變更決定是否授權或是提出建議,每個成員對於所參與的變更所下的決定,均是變更是否成功的重大關鍵。所以,不應以組織的職務來混雜Remedy的管理服務。必竟,多數的變更,並不是每個MOT Leader需要關注的事物。豈可因少數的變更,在簡明的流程中再加油添醋。 1月27日 談論主題 [心得]使用 Microsoft Visual Studio 2005 Team System
引述 [心得]使用 Microsoft Visual Studio 2005 Team System 看『寫給C++程式設計師的UML實務手冊』
而今,在Hsdc一次課程因緣中,結識了本書作者─邱郁惠老師,她以十餘年對於OOAD、UML至最近MDA的開發技術的專案經驗,推出了『寫給SA的UML/MDA實務手冊』的課程,對於她結合實務的寫作方式,讓我真是驚豔萬分。因為,為了研究UML與OOAD的開發流程的開發,買了數十本的書,並且四處上課學習物件導向開發觀念,卻始終不得其門而入的我,真是醍糊灌頂,受益無窮。 當郁惠老師再出『寫給C++程式設計師的UML實務手冊』這本工具書,僅以14個章節藉以進一步闡述MDA中PSM轉換設計到實作的方法技術,簡明而約要的陳述。不禁讓我觀想起前田約翰曾提出「盡可能減少,隱藏多餘的一切,同時避免失去固有的價值感」的簡單原則,藉以分散或隱藏來掩飾設計產品的擁擠程度,那種等值的藝術價值。 在零散而有限的時間中,好不容易斷斷續續的以兩個月時間拜讀完UML4C++,有一些以前一直無法組織起來的觀念,似乎就有了一些形狀,或許是無名且不可言諭。想著,想著,又回過頭去翻閱了其它UML的書目,包含了XP與軟體工程、VSTS等相關書目。似乎無意中,就將這些零散的知識,串起了一個開發,由SA至PG應有階段與作為的初始架構。 心中真是無限的欣喜與讚嘆。 「部分之總和不等於整體,因此整體不能分割,而整體是由部分所決定。反之,各部份也由整體所決定。」這是出自完形心理學的一項理論。 不約而同的,在本書中仍承襲MDA4SA的主題── 第一章到第四章,仍以一個基金系統作為貫穿全書工作流的整體主題前要方法的陳述。第五章開始,到第八章,則是以系統的部份,配以靜態類別圖與動態循序圖,實作出系統類別的屬性與操作,逐步地描繪出系統整體的部分功能。疊代反覆的動作在第九章又回過頭藉由使用者案例繁簡形式的描述,再與第二階段的類別和循序物件間產生出來的程式碼相互照映;提供了一個由部分需求設計到開發,看出這個基金系統的整體目標。 最後,再加上狀態圖與活動圖,來強化出系統核心要件內的關鍵狀態與系統整體的營運流程。 本書的架構,以UML作為設計工具,由第一章到第四章提供了整體到部分的設計觀點;從第五章起的章節,則反道而行,以部分觀點的設計與實作,延展出了對於整個基金系統開發的流程線視圖。 一個簡單的方法,僅僅使用四套圖表,就可以完成一個功能複雜的系統嗎? 答案,似乎是肯定的。 或許,不應該如此簡略的答覆。 就軟體工程的觀點而言,MDA應再結合專案觀點與測試、部署的觀點,才能成就一個完整的開發流程;才能確保一個完整系統的服務品質需求吧。 1月1日 談論主題 專案管理>開發流程>軟體設計思維與觀點>利用UML class diagram 表達CMMI content引述自矇矇的秘密基地
關於 CMMI
CMMI 的 Model Content 為:Process Area, GG/SG, GP/SP。其中,Process Area 與 GG/SG 為達成軟體能力成熟度的必要元件(required component);GP/SP 則為 "期望(expected)" 的元件,屬建議性,並非絕對需要。若以 UML 類別圖表達 CMMI Content 之間的關連,如下圖1 表示。
圖1、範例-利用 RUP/XP 方法論實現 Requirement Development -> SG3
CMMI Content 類別圖說明:
從主流開發流程找 How-to
範例一、Requirement Development -> SG3
圖2、範例-利用 RUP/XP 方法論實現 Requirement Development -> SG3 RUP 透過需求工作流程(Requirements Workflows) 內的幾個活動(activity),來達成主要對 CMMI “需求開發” 流程區域內對 SG-3 的實現:
XP 是透過 “使用者陳述 (User story)” 來達成主要對 CMMI “需求開發” 流程區域內對 SG-3 的實現:
範例二、Risk Management -> SG1 -> SP 1.3-1
圖3、範例-利用 RUP/Agile 方法論實現 Risk Management -> SG1 -> SP1.3-1 RUP 透過專案管理工作流程(Project Management Workflows) 內的風險管理的部分,來達成主要對 CMMI “風險管理” 流程區域內對 SG 1-> SP 1.3-1 的實現:
Agile 並沒有建立與風險管理相關的計畫,而是透過頻繁溝通、大量取得回饋,儘早釐出風險,並透過實務來克服與解決風險。
結語:CMMI 綱要
目標設定規劃與行動的精要:
談論主題 敏捷的軟體開發流程作者:林耀珍 2003 年 11 月 速度是企業競爭致勝的關鍵因素,軟體專案的最大挑戰在於一方面要應付變動中的需求,一方面要在緊縮的時程內完成專案,所以軟體團隊除了在技術上必須日益精進,更需要運用有效的開發流程,以確保團隊能夠發揮綜效。這正是 Agile Process (敏捷的軟體開發流程) 於近年來興起的主要原因,本文將介紹數種廣為接受的軟體開發流程,及其在運用上的建議。 Agile Process - 敏捷的開發流程幾乎所有的軟體專案都會在起始階段面臨選擇開發流程的困難,一種是完備的開發流程,另一種是簡易輕便的流程。雖然我們了解採用完備的開發流程可以提高軟體的品質,但是因為欠缺人力、工具與時間,我們常會被迫採用簡化的流程,但事與願違,大部分的情況我們仍然難以在預算內及時完成專案。 Agile Process (敏捷的開發流程) 是一種軟體開發流程的泛稱,Agile Process 具有下列幾項共通的特性:
RUP 開發流程 - Rational Unify ProcessRUP 為 IBM Rational 公司經過多年的研發與經驗所提出的軟體開發流程,其內容含蓋 Business modeling, Requirement Modeling, Logical Design, Implementation, Testing, Deployment 等軟體開發生命週期的直接工作,與 Project Management, Change & Configuration Management,Environment support 等支援性工作。RUP 的內容非常豐富,不同的專案需要不同調整,IBM Rational 提供 RUP workbench 工具,方便調整 RUP,並公佈於 Web,方便專案成員遵循統一的流程規範進行工作。 RUP 的主要精神為:1. 專案進行採用 Iterative 程序分階段漸進地完成專案功能;2. 廣泛使用 Visual Modeling 於商業需求分析、系統分析與系統設計;3. 強調架構設計;4. 對每項工作所需要的技術、工具、做法、範本、檢查項目均有詳細的定義,架構完備且具有可調整的彈性。 因為 RUP 的流程規範與相關技術較複雜,所以導入時必須注意幾個因素:1. 主管的支持以確保足夠的資源投入;2. 分階段導入;3. 適當的訓練與密切的顧問咨詢;4. 使用 Modeling 技術時需要考量 Coding 的實作環境;5. 良好團隊的管理,以溝通、耐心與堅持解決變革的人性阻力。 XP 開發流程 - eXtreme ProgrammingXP 亦稱為終極流程,是最輕量級的開發流程,其最主要的精神是『在客戶有系統需求時,給予及時滿意的可執行程式』,所以最適合需求快速變動的專案。XP 經過 6 年的實作與修改,已演化為精緻的開發流程,但仍不失其精簡的特性,它強調客戶所要的是 workable 的執行碼,所以把與撰寫程式無關的工作降至最低,並要求客戶與開發人員最好以 side-by-side 的方式一起工作。 XP 開發流程的基本步驟為:1. 開發人員隨時可以和客戶進行有效溝通,撰寫 user stories 以確認需求。2. 簡易快速的系統設計,撰寫獨立的驗證程式以解決特殊困難的問題,找出演算法即可丟棄驗證程式。3. 規劃多次小型階段的專案計劃,以最快速度完成每一階段的程式交付客戶,客戶負責 Acceptance tests;4. Coding 前必須完成 Unit Test 與 Acceptance tests 程序,所有模組整合前都須經過 Unit Tests;5. 開發人員必須快速回應 Bug 與需求變更;6. 要求二人一組使用一台電腦設計程式,當一人 coding 時,另一人負責思考與設計;7. 程式必須符合程式規範,並常做程式的重整 (Refactoring)。 XP 屬於較精簡的流程,於導入應注意幾件事情:1. 最好有顧問給予協助;2. 持續的 Review;3. 可適當調整流程,但不可失去其基本精神。 SCRUM 開發流程SCRUM 開發流程是 Agile Process 的一種,以英式橄欖球爭球隊形 (Scrum) 為名,基本假設是『開發軟體就像開發新產品,無法一開始就能定義 Final Product 的規程,過程中需要研發、創意、嘗試錯誤,所以沒有一種固定的流程可以保證專案成功』。Scrum 將軟體開發團隊比擬成橄欖球隊,有明確的最高目標,熟悉開發流程中所需具備的最佳典範與技術,具有高度自主權,緊密地溝通合作,以高度彈性解決各種挑戰,碓保每天、每個階段都朝向目標有明確的推進,因此 SCRUM 非常適用於產品開發專案。 SCRUM 開發流程通常以 30 天為一個階段,由客戶提供新產品的需求規格開始,開發團隊與客戶於每一個階段開始時挑選該完成的規格部份,開發團隊必須盡力於 30 天後交付成果,團隊每天用 15 分鐘開會檢視每個成員的進度與計畫,了解所遭遇的困難並設法排除。 SCRUM 與傳統開發流程及專案管理差異較大,於導入時最好有顧問協助。 總結Agile Process 的精神已經成為共識,但是沒有一種固定的流程可以重複使用在不同的專案上。而且不管是 RUP、XP、SCRUM、或其他的開發流程都允許相當大的彈性,我們必須按專案性質的不同,調整或混合出適合的開發流程,並允許團隊於進行中做必要的彈性修改,方能達成目標。 參考資料RUP:www.rational.comXP:www.extremeprogramming.org SCRUM:www.controlchaos.com AGILE:www.agilealliance.org UML之我觀
|
|
||||||||||||
|
|