軟體專案生命週期與如何推動重構

2021-06-18 03:33:24 字數 2148 閱讀 5437

軟體專案生命週期

任何事物都是有生命週期的。

專案發展過程也一樣。

一般來說,乙個應用系統,如果業務一直在發展,系統本身也應該在發展。

最開始的時候,大師出場,帶著小弟,精心設計乙個系統,嘔心瀝血,**乾淨,模組清晰,文件齊全,效能很高。

一切都是看起來很好的樣子。

業務在發展,系統本身也一直在修改,新增新功能,改進舊功能,

而且,發展過程中,老系統的很多bug被發現,也新增了很多**, 就是乙個個的補丁,

就算初始的系統,很nb,很華麗,隨著時間的推移,補丁的增多,

特別是it軟體開發高達30%+的人員流動率,老的人走了,新的人加入進來。

系統慢慢的開始老化,變爛, 慢慢的系統變成bad smell了。

這時候,問題出現了。

1、系統經手的人,修改的次數很多,**量比較龐大,

2、有很多**可能是無用的,但是沒人掌握全部**,

3、很多修改,沒有有效的注釋和文件,說也說不清楚了,牽一髮而動全身,

4、系統經常反覆出bug,效能下降,花費在日常維護性上的工作量非常大,

5、新的人員加入團隊,學習週期較長,接手維護很困難。

整體說來,系統本身已經out of control, 變成乙個巨大的無人能控制的怪獸。

一般說來,軟體研發管理做得差的公司,乙個10萬+行**的專案,一直維護,2-3年就會這樣了。

好點的公司,5年也差不多了。

網際網路的專案,因為業務變化快,迭代週期更快。

從軟體生命週期上來看,這個系統進入老年期了。

如何推動重構

剛才說了軟體的生命週期,

再說說為什麼領導層不願意重構:還是成本問題。

這個工作量,至少不低於原系統開發的一半週期。

領導們一般只關心眼前短期利益。長期利益和潛在利益,他們看不到。

可是呢,領導不會同意重構。

重構,對他們來說,就是把現在的東西,又實現了一遍。。。

在領導看來,表面收益是0,成本卻很大。

所以,直接的重構,領導不會同意。

除非是比較強勢的領導,比較有前瞻性、比較有進取心,要做好最大的領導。

既然知道了領導為毛不同意重構,其實也就基本有了突破口。

1、把重構的好處,特別是長期的好處,整理清楚,列出來。

比如,**裡,現在有多少坑,效能有多低,維護有多困難,修改乙個地方,牽扯多少地方,有多少地方沒有人搞清楚,**大概有多少冗餘量,現在經常出bug率是多少。

如果改造,我們能**量減少到多少,能培養幾個對整個系統都能掌握的人,效能能提高多少,維護成本能減少多少,

新增新功能、新成員加入團隊上手時間,能降低多少。

這些重構的優點,都擺出來拿出資料。讓領導去判斷。

如果確實需要重構,有足夠的好處,領導基本會同意。

特別是如果現在舊系統出過幾次事故之類的,更好說服領導了。

這個是直接命中目標,就能推動這個事情。

2、如果領導還不同意,還可以曲線救國。我們可以名義上不重構啊。

我們的系統,一直在發展,改進現有功能和加新功能。我們可以在每次加新功能的時候,把新功能搞清楚,

抽出來,做到乙個新的系統裡。相當於在一家舊飛機旁邊一點點的造一架新飛機。

然後,只要處理的足夠好,這個增量迭代的方式,即重構了舊系統,也做了新功能,影響最小。效果非常好。

很多整合舊系統類的專案,都建議這麼做。

一般情況下,做一部分的時候,新做的這些模組的優勢就展現出來了。

後續的工作,領導就會比較支援了。

反正你也沒怎麼耽誤他的事兒。

我在x寶的時候,

先後用過這兩種方式。

第乙個系統,40萬行**,重構後只有10+萬行。

第二個系統,我負責主體核心部分的遷移,灰度發布後,交給別人了。

第乙個專案結果:

1、40w-10+w,效能提高了差不多乙個數量級。

2、培養了5個對整個系統都能控制的人。

3、模組非常清晰,各種跟蹤統計監控管理工具,也順便做了進去。

4、新人上手以前需要2周,現在2天就夠了。

5、各種**規範,設計文件,也都補齊了。

起碼可以再撐個5年了。

當然這個專案,很大乙個原因還是我們領導,當時很有魄力。

雖然他不太懂技術,但還是放手讓我們去做。

這兩個專案做完不久,參與專案的主要人員都level up了。

軟體專案的生命週期

專案計畫 需求分析 設計 概要設計和詳細設計 編碼測試 發布 維護專案計畫階段 走訪客戶,進行交流溝通,獲得客戶原始需求。對客戶的需求和市場等進行調研,分析,編寫可行性分析報告。通過不斷的與客戶溝通,找客戶不同環節的使用者進行交流來獲取需求。召開評審會議,報告可行性分析,報告使用者原始需求,報告專案...

軟體生命週期

軟體生命週期 三個過程 定義,開發,維護 九個階段 可行性研究 需求分析,概要設計 詳細設計 編碼與單元測試 整合測試 驗收測試,執行與維護 退役。可行性研究 系統分析人員在使用者的配合下對使用者的要求和現有的環境及條件進行深入調查寫出調研報告,從技術可行性,經濟可行性,法律可行性,操作可行性等方面...

軟體生命週期

同任何事物一樣,乙個軟體產品或軟體系統也要經歷孕育 誕生 成長 成熟 衰亡等階段,一般稱為軟體生存週期 軟體生命週期 把整個軟體生存週期劃分為若干階段,使得每個階段有明確的任務,使規模大,結構複雜和管理複雜的軟體開發變的容易控制和管理。通常,軟體生存週期包括可行性分析與開發項計畫 需求分析 設計 概...