nonus 的个人资料人世本苦,其苦何鉅-無我詩文舖照片日志列表更多 工具 帮助

Lu nonus

刻刻似我,刻刻非我
此共享空间没有音乐列表。

人世本苦,其苦何鉅-無我詩文舖

5月14日

一個SD部門成員對前景的憂心

  對於SD部門的前景,開發能力是SD部門唯一能立於公司IT營運的核心能力;系統化則是本質。但整個SD部門想要維繫這個能力,不是只有組織與流程就足夠了。以程式設計到開發過程的角度來看,一個開發專案的運作組織與流程形成的架構僅止於運作的表面條件而已;但整個開發架構是要具有可驅動性,仍需要平台與溝通的語言來維繫整個資訊的流通,最重要是要有操作的行為(Operation;與Method是有區分的),屬於物件開發最重要的兩種本質之一。一般公司,除了組織看起來是正常的,流程就沒有精神做Base。什麼精神,就是行為,在軟體工程的術語而言:『就是方法論』。ITIL不是開發流程,是營運流程。所以在微軟的ESF模型中,開發流程(MSF)與營運流程(MOF;即MS版的ITIL)是分開來的。
  MSF不算是方法論,它僅能列為一種基於開發歷程上的開發架構。PMP是一種專案管理的方法論,也與開發專案相去甚遠。一個方法論必須能夠擁有它的溝通語言,驅動流程。國語文字是溝通語言,卻無法轉化為開發語言,所以,更遑論是開發方法表達的本質。圖形也是語言,它也不能直接轉化為開發語言。那什麼才是適合開發的溝通語言,個人想法是同時結合文字與圖像的語言,在方法的驅動下,才能成為自需求/設計到開發程式碼,一脈相承的溝通語言;而溝通的過程中,流程自然而然的就會被驅動。
  而文件,是溝通之後留下的具有回溯性的垃圾。
3月18日

對於ITIL Notify設置的想法

  Sample

對於,ITILNotify的設置,有幾點想法提供考量;

            第一、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
這本書的內容,是我一直很想了解 VSTS 的新增功能,如果沒錢買書的話,可參考:
這邊已經有翻譯過的線上手冊,軟體附贈的 MSDN for Visual Studio 只有英文版,我記得前陣子有 MSDN for Visual Studio 2005 的中文更新,我下載並安裝了,居然沒有更新這部份... 好可惜阿。書的內容,已經整合過了,所以看書會比較有結構。
看完這本書後,我想該不會是微軟自己需要,先做給自己用,用的感覺不錯以後,再改成一般化變成套裝軟體吧?台灣很多中小企業不會這麼複雜,能設計到這麼複雜的邏輯,本身也要有相當的經驗,所以滿有這種感覺的,有點像是微軟經驗轉成套裝軟體。
這本書要怎樣說呢,所需要的預先知識並不在這本書內,所以裡面會有很多原則、目的等,會讓剛入門者搞不清楚,我自己是先唸過兩本專案管理、兩本軟體專案管理及經濟部工業局所發布的規範,所以算是知道一點預先知識,但是看起來還是很吃力。
這本書... 這本書... 基本上企業的基層程式設計師應該會很不希望老闆或是主管看到吧?整個專案開發全部納入管理後,有的時候想摸魚可能都不太合適,當然,就企業主、中高階主管、專案經理或是協助專案經理或研發經理管理的人滿適合先看,但不建議立即導入,因為這本寫的還不夠深入。當然,已經導入這類管理模式的單位,所有人員大概都要看。
舉個例子,學校教授做計劃或合作做計劃、或是顧問公司標政府採購案等,都可以適用 VSTS 。
整本書是一整體的,在書的內容是有針對腳色來分,但是不管你是哪一個腳色。都有瞭解的必要,整本沒看完,可能會有霧裡看花的感覺,我自己建議,先看第一章,再翻附錄 B ,再翻第 8 章,知道大概用詞有哪些後,再從頭依照簡介的順序來看。
至於 MSF for Agile Software Development 跟 MSF for CMMI Process Improvement ,我比較建議測試時,直接試用、導入 CMMI ,因為經濟部工業局那邊已經採用 CMMI ,並擬妥國家規格,在國內開發軟體多多少少會跟政府單位有接觸,也許是上游,也許是上上游,所以採用政府要求的格式,將來比較不會有轉換適應的問題。
測試專案部份,我是覺得 Developer 也要用,過去我都是在類別內包含一些測試方法,所以我看完這本後,應該會改用測試專案來玩看看。
我自己今年接個案子,也有這些要求,所以猛畫 UML 圖,如果可以,我也想導入,但是裡面有一些問題,先前我用 VS2005 畫圖,畫完後,不知道該怎樣用向量檔方式轉到 Word 上,畢竟要出報告,最後還是回頭用 Visio 畫,當然先前沒看過這本,所以很多細節不清楚。
整體功能要架個測試站來玩看看,可是流程的導入,對於企業行政是很大的干擾,好像不太能無痛導入,在很趕的專案最好先不要碰。我目前只是看完書,還沒測試過,所以有些疑慮要考慮。
  1. 幾乎各企業來說,不管是專案經理 (這本書居然不是用專案經理,而是用專案領導者之類的用詞) 、各各腳色,多半都參與多個專案,所以面臨的是混合專案的問題。有些系統部分,可能是企業核心,有些可能是數個專案共用,有些可能是專案系統內共用,裡面並沒有看到混合的問題。
  2. 裡面是以新專案為例,就算企業打算在新專案才開始導入,但是有很多會跟既存專案牽扯在一起,就是前面的問題1 ,混合到其他專案的問題,這邊並沒有明確的介紹與說明。
  3. 專案管理的觀念與精神幾乎都整合到 Microsoft Project 內,VSTS 也支援直接使用 Project 當成瀏覽器,軟體專案管理是在專案管理內加上軟體專有的架構、開發、驗證過程,但是很多專案管理的行政部分,在 VSTS 內並不支援,比如說專案人力分配與管理、時薪計算、PERT 圖、甘梯圖等,這部分應該納入整合,甚至包含專案結束後的檢討、歸檔,供新增專案規劃參考時程、成本使用。
  4. 專案執行過程中,需要定期備份、出報告,比如說把目前最新版本整個燒成光碟交給業主,作為階段性驗收與撥款,似乎只能備份資料庫。另外針對文書支援似乎完全不考慮,可是專案人員也是要打報告,打各種規劃書,而測試結果雖然會出成 HTML Report ,可是拷貝到 Word 後,又要重調樣式、表格,似乎對於行政支援的部分不太足夠。
  5. 在本書裡面,代號要交由系統決定,但是在寫初稿時,通常會一直改,這時自動編號就會重傷,因為無法向業主解釋跳號的問題,而定稿後,比如說測試規劃書送出後,再變更時,則應以新的編號給定,這部份好像不是這樣規劃的。
  6. 帳號採用的是 Windows 帳號,有時候很麻煩。有時後專案在投標時,可能提供了人力配置圖跟表給委辦單位,之後企業內部作人力調整時,可能這個人力因為不適任,調去支援其他專案,而為了避免文書行政往來,通常不會爆給委辦單位,這時可能會將該人力分配給多個其他人等,若是有自定帳號系統時,可以由各部份接替人員來登入,或是專案可能有代理人制度,由代理人來處理,所以會覺得一定要對應真實系統時,有時有綁手綁腳的問題。甚至有的時候可能是人頭人力,利用某個高階主管名氣來接案,實際上專案由另外一個主管主持,這個高階主管只是顧問層級。
  7. 部分用詞可能有點混淆,比如說簽入,從整本書的說明來說,應該是指包含修改過的程式碼上傳,可是一般來說,簽入通常會以為類似登入的行為。
  8. 模組的分類不清。基本上整個管理是以物件類別為基礎,可是我滿偏好模組構成的函式庫,大概學界過去都慣用這類吧,在這本無法窺知模組到底該怎樣配合,都是以物件為單位。
  9. 似乎沒有包含原始碼的移交與部署?裡面有二進位檔的佈署考量,不過有些專案契約會要移交原始碼,依照著作權法及專利法來說,非專案內開發的既有功能屬於原公司所有,不需要交接,所以這部份就牽扯到部份二進位碼與部分原始碼的移交,通常契約並不會規範到原始碼要包含使用說明或註解,所以交給委辦單位的原始碼可能想把註解拿掉,來作為下個維護案的技術門檻,這類考量似乎都沒有。
  10. 在國內,通常管理階層只出一張嘴,所以專案經理要負責的開新專案、架構可能都是由下面的秘書或助理或菜鳥工程師代為執行,然後在定時會議上拿出來討論、修改,這部份可能要考慮加入簡報的支援能力,最主要的就是圖與報表的展示與彙整,此外,畫上去的元件可能要能轉屬性,比如說原先定義的位階比較高,要降階到某個子系統內,可能從系統元件降為類別等。
我自己很想導入啦。因為今年寫了一堆報告,我也想藉由這個機會學習與導入更制式化的流程,建立維護、開發、設計的基準。
我有空後,應該會去抓些範例來測試與變更,希望能盡快熟悉這套軟體,不過我覺得這套比 Project + Visio 還複雜... 目前只能各部份先行行政作業...

看『寫給C++程式設計師的UML實務手冊』

 

UML4C  數年來,一直無法搞清楚UML的那13張圖,到底要怎麼使用,才能適度表達分析或設計階段的意念;甚而,將物件導向觀念結合,單位系統開發流程中,使開發流程更為順暢。

  而今,在Hsdc一次課程因緣中,結識了本書作者─邱郁惠老師,她以十餘年對於OOADUML至最近MDA的開發技術的專案經驗,推出了『寫給SAUML/MDA實務手冊』的課程,對於她結合實務的寫作方式,讓我真是驚豔萬分。因為,為了研究UMLOOAD的開發流程的開發,買了數十本的書,並且四處上課學習物件導向開發觀念,卻始終不得其門而入的我,真是醍糊灌頂,受益無窮。

  當郁惠老師再出『寫給C++程式設計師的UML實務手冊』這本工具書,僅以14個章節藉以進一步闡述MDAPSM轉換設計到實作的方法技術,簡明而約要的陳述。不禁讓我觀想起前田約翰曾提出「盡可能減少,隱藏多餘的一切,同時避免失去固有的價值感」的簡單原則,藉以分散或隱藏來掩飾設計產品的擁擠程度,那種等值的藝術價值。

  在零散而有限的時間中,好不容易斷斷續續的以兩個月時間拜讀完UML4C++,有一些以前一直無法組織起來的觀念,似乎就有了一些形狀,或許是無名且不可言諭。想著,想著,又回過頭去翻閱了其它UML的書目,包含了XP與軟體工程、VSTS等相關書目。似乎無意中,就將這些零散的知識,串起了一個開發,由SAPG應有階段與作為的初始架構。

  心中真是無限的欣喜與讚嘆。

  「部分之總和不等於整體,因此整體不能分割,而整體是由部分所決定。反之,各部份也由整體所決定。」這是出自完形心理學的一項理論。

  不約而同的,在本書中仍承襲MDA4SA的主題──

  第一章到第四章,仍以一個基金系統作為貫穿全書工作流的整體主題前要方法的陳述。第五章開始,到第八章,則是以系統的部份,配以靜態類別圖與動態循序圖,實作出系統類別的屬性與操作,逐步地描繪出系統整體的部分功能。疊代反覆的動作在第九章又回過頭藉由使用者案例繁簡形式的描述,再與第二階段的類別和循序物件間產生出來的程式碼相互照映;提供了一個由部分需求設計到開發,看出這個基金系統的整體目標。

  最後,再加上狀態圖與活動圖,來強化出系統核心要件內的關鍵狀態與系統整體的營運流程。

  本書的架構,以UML作為設計工具,由第一章到第四章提供了整體到部分的設計觀點;從第五章起的章節,則反道而行,以部分觀點的設計與實作,延展出了對於整個基金系統開發的流程線視圖。

  一個簡單的方法,僅僅使用四套圖表,就可以完成一個功能複雜的系統嗎?

  答案,似乎是肯定的。

  或許,不應該如此簡略的答覆。

  就軟體工程的觀點而言,MDA應再結合專案觀點與測試、部署的觀點,才能成就一個完整的開發流程;才能確保一個完整系統的服務品質需求吧。

1月1日

談論主題 專案管理>開發流程>軟體設計思維與觀點>利用UML class diagram 表達CMMI content

關於 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 內的陳述來具體實現。

[More:]

從主流開發流程找 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

圖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

圖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. 調整與修正手段→循環與漸進→往目標前進!

談論主題 敏捷的軟體開發流程

作者:林耀珍

2003 年 11 月

速度是企業競爭致勝的關鍵因素,軟體專案的最大挑戰在於一方面要應付變動中的需求,一方面要在緊縮的時程內完成專案,所以軟體團隊除了在技術上必須日益精進,更需要運用有效的開發流程,以確保團隊能夠發揮綜效。這正是 Agile Process (敏捷的軟體開發流程) 於近年來興起的主要原因,本文將介紹數種廣為接受的軟體開發流程,及其在運用上的建議。

Agile Process - 敏捷的開發流程

幾乎所有的軟體專案都會在起始階段面臨選擇開發流程的困難,一種是完備的開發流程,另一種是簡易輕便的流程。雖然我們了解採用完備的開發流程可以提高軟體的品質,但是因為欠缺人力、工具與時間,我們常會被迫採用簡化的流程,但事與願違,大部分的情況我們仍然難以在預算內及時完成專案。

Agile Process (敏捷的開發流程) 是一種軟體開發流程的泛稱,Agile Process 具有下列幾項共通的特性:

  1. 客戶與開發人員形成密切合作的團隊,因為客戶無法於初期定義完整的規格,而開發人員於開發過程中也常常無法知悉外在環境或業務的變動,所以需要兩者密切合作方能開發適用的軟體。
  2. 專案最終的目標是可執行的程式,因此所有的中間產品必須經過審慎評估,確認有助於最終目標,才需要製作中間產品。
  3. 採用 Iterative 與 Incremental 方式分階段進行,密集 review 是否符合需求。
  4. 流程可以簡單,但規劃與執行必須嚴謹。
  5. 強調團隊合作,賦予高度的責任,團隊有自主權得以因應變化做調整。

RUP 開發流程 - Rational Unify Process

RUP 為 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 Programming

XP 亦稱為終極流程,是最輕量級的開發流程,其最主要的精神是『在客戶有系統需求時,給予及時滿意的可執行程式』,所以最適合需求快速變動的專案。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.com
  XP:www.extremeprogramming.org
  SCRUM:www.controlchaos.com
  AGILE:www.agilealliance.org

UML之我觀


 


UML之於我者,僅實用於系統分析也乎

作業過程,形轉浮閰萬有,循物則化而圖之。靜觀世事,實不外乎『物件』與『關係』之範疇,當以『物件』為體,『關係』為用。曾有言之:「UML之本質,不外哲學。」;自身釋之以謂言「型圖為體,哲學為用」。今就自身依循「存在論」之思考模型以示說。

附件而圖之,四物關連而展。反覆審視,要物為二:『此在』(Dasein)與『時間性』(Timelines)。謂『此在』者,係承自『存在』(Sein)。萬物皆存在,循哲學以觀,『此在』與『存在』之悖異,於『時間性』具否?就「物件導向」以視,『存在』係最高物化單位;或表實物狀態之能,或表自身就是存在模糊之概念。

然,物有崩毀,人有老死,事於始終,根於『時間性』之存在;也就是說:當實物具足時間性限制而存在,『此在』也。海德格曾言:「各種科學均為『此在』的存在方式...『此在』本質上就是:存在世界之中」。「存在與時間」內亦述及:「此在的這種存者的存在之意義…由之出發的地平線就是時間。」云云;或霍金於「時間簡史」所言:「時間之於生命之存在,實是關鍵」,或「時間是上帝賜給宇宙最佳的性質」云云。繼宇宙論所延伸,此般「天上掉下來的禮物」,生命得依不同面貌以顯於;生命者,『此在』之謂。

之,『此在』為塑模型圖之實體物件,『存在』乃抽象而化,轉而為位階最高之抽象實體,於間關係乃【繼承】。

至『時間』者,或為過程,或為程序,具時間性之流程,形物接踵而沓至來之假定關係,故以虛線之實體箭頭表之。事有始終,回歸系統層面而言,資料自系統啟動終有結束之時,於資料之導向乃直接關係,故以實線箭頭以表。

然,塑模為圖,倘無哲學為用,則不明物關係終始源之道,若空有哲思,無塑模以圖,亦陷於空談而無所為也。坊間相關書目眾,均有所細表,反令人無所著力之

UML塑模之圖,除利於溝通,更可假其工具之便,達錄載系統源結啟始之序。部份或與正規UML操作稍有差異;然,精魂應已所映。假數之細索,竟數日事家外之功,述而文,僅提供自身之觀點以享。

UML之『關聯』,箭簇方向,或謂「相依」,或曰「繼承」。

形也,箭首見虛、實,箭()身亦見虛與實。虛實者,電腦語言以語之,即01;於數學言,謂二元數術;之於浮現世,則不外主客是也。主、客者,觀點、視野焦點之不同。於影藝作業,係轉場效果所得焦點求同尋異之趣。

相依者,主依於客物;繼承者,則反主繼於客物

系統或流程或資訊觀點流轉一如世事,始於有而終於無,於事者或於人者,因循不同『此在』制於時空之有,無論「客隨主便」或「反客為主」,均意屬不同觀點與存在;譬如「系統」之於「公司」此在之意義。

其間異趣,若太極拳義所言:「太極者,無極而生,動靜之機,陰陽之母也。」何謂陰陽?主者靜觀之陰,客而形動謂之陽,此兩者,同出而異名。

P.S 存在模型之成因,可語而盡,謂「每生命(此在)受著(流程)時空(時間性)的限制,僅得使用一條軌跡(言『去存在』,或「至彼岸」,結束也)」,源化自AI人工智慧』尾場,外星人之語矣。

 
第 1 张,共 13 张
尚未添加列表。