要回答這個問題,先讓我們來看看什么是流程。
什么是流程?
流程是任何可重復的一組動作。流程通常由團隊來決定,以確保事情會以某種方式完成。流程有很多其他名稱:規(guī)則、指導方針、形式、程序或限制規(guī)定。
軟件開發(fā)流程,就是軟件開發(fā)過程中重復的一組動作,是軟件開發(fā)應遵循的一套規(guī)則、程序或規(guī)定。
好的流程可以提高項目完工的機會,而且效益要大于成本。
好的軟件開發(fā)流程可以讓軟件開發(fā)的收益大于所付出的成本。
那么什么才是好的軟件開發(fā)流程?
下面列出了一些好的流程的特征,當你要建立或改進軟件開發(fā)流程時,可以將其作為指導原則來使用。
1. 好的流程可以加速事情的進展
換句話說就是,好的流程辦事會更加有效率。效率是衡量流程好壞的一個顯著的特征。比如要完成一次軟件變更,有的實施GJB5000A組織的流程通常是接收變更請求-變更影響分析-變更申請-產品庫出庫-受控庫入庫-受控庫出庫-開發(fā)庫入庫-開發(fā)庫獲取-實施更改-更改驗證-開發(fā)庫入庫-開發(fā)庫出庫-受控庫入庫-受控庫出庫-產品庫入庫-產品庫出庫-交付使用。這樣的流程還有什么效率可言,這還能是一個好的流程嗎?軟件變更流程的重要目的是控制變更和控制軟件版本,只要不失去這個核心,省去幾個環(huán)節(jié)又有什么關系?而且如果要進一步提高流程的效率,你還可以引入自動化構建工具,使你的流程更加完美。
2. 好的流程可以防止問題
制定流程的最重要的一個動機就是防止某種愚蠢的事情發(fā)生(或再次發(fā)生)。這一點對于編寫體系的人來說尤其要注意。我們編寫GJB5000A體系的時候,不僅僅是把現有的軟件開發(fā)活動用文字記錄下來,更重要的是要考慮我們制定的規(guī)程、指南能夠幫助我們解決什么樣的問題。如果編寫體系的人沒有這些思考,那么寫出來的體系也不會有人執(zhí)行,執(zhí)行起來也沒什么作用。
3. 好的流程可以讓重要行動可見和可測量
制定流程的目的是能夠控制項目的進程,讓項目按照我們期望的路線前進。而要達到這一目的,就要使項目狀態(tài)一目了然、清清楚楚。這就需要流程的設計能夠幫助項目策劃參數方便地測量和監(jiān)控。
4. 好的流程應當包括修改或刪除此流程的流程
流程必須有內置的機制,可以決定何時需要更新或者停止。
沒有那種亙古長存、一成不變的流程。流程必須適應它所處的內外部環(huán)境。流程要持續(xù)改進,而且它也會迎來終止的那一天。
5. 好的流程應當受到影響的人會贊同
流程對于使用它的人來說,是一種束縛。所以,如果沒有足夠的好處,流程的增加和變動沒人會歡迎。好的流程必須對那些使用它的人有幫助,贏得他們的支持。所以制定一個流程應當多聽取受影響的人的意見,或者直接讓受影響的人參與制定。
6. 好的流程一定是收益大于成本的
一個流程的制定要考慮它一旦執(zhí)行,需要付出多少成本以及帶來多少收益。你需要在試點過程中對其進行測算,如果成本高于收益,你必須要進行流程的優(yōu)化,否則,你的流程很難推行下去。
這正是:
好的流程收益高,使用的人都說好
解決問題有效率,項目狀態(tài)測得到