1. 程式人生 > >大型軟體開發中的流程與規範

大型軟體開發中的流程與規範

對於長生命週期的大型軟體,流程和規範十分必要。IT行業作為一個快節奏的行業,不光技術革新快,人員的更替也是很快的,沒有嚴格的規範和流程,幾個大版本迭代下來,可能產品的程式碼就維護不下去了。

估計很多大廠的小夥伴面對自己日常開發維護的的code base會產生這樣一種錯覺,這麼龐大複雜,邏輯繞來繞去,時不時會有些巨型函式,還有些看的讓人崩潰的if esle分支,各種自造的輪子,歷史遺留天書程式碼,但是就是這麼神奇,軟體跑的好好的,功能效能都沒有任何問題。這個時候不得不感慨軟體工程的魅力,下面就談談軟體開發中我個人認為的比較有用的流程和規範。

合理的特性規劃

大型軟體是有自己特定的版本節奏的。每個版本能夠承載的feature是有限的,這個也要根據feature的技術複雜度來評估。不顧客觀規律的大躍進是要不得的,Windows Vista就是被過於牛逼的特性所拖累的典型案例。沒有合理評估匆忙開發的特性往往會成為產品後面的技術債務,bug爆發的源泉,長期都穩定不了。

規範的文件寫作和方案評審

規範的文件協作和方案評審大型軟體開發中的重要一環。方案是否準確嚴謹,是否繞彎子了,這個經過團隊評審才會發現,一個人的思維往往會有侷限性,經過大家的評審,早日把方案級的錯誤給排除,後面開發才會更順利。此外,文件還有一個重要的作用就是給後面來的小夥伴看的,把團隊人員變更對產品開發的影響降到最低。

統一的程式碼風格與嚴格的code review

程式碼風格一定要統一。比如:大家大括號都不換行,你非得換;大家都用駝峰命名,你偏用下劃線;程式碼庫裡有現成久經生產環境考驗的雜湊庫容器庫,你偏偏自己造輪子…那你肯定會被狠狠的懟。新人程式碼裡花式秀騷操作的無一例外都過不了code review的,不遵守規範的程式碼還想check in,模組的owner不發飆就不錯了。忽然想起 Linus 面對pull request裡的騷操作所發的飈:

大型軟體作為公司重資產,是要長期演進和維護的,每個人都來騷一把,那麼只能是吃棗藥丸~

清晰的分支管理策略

分支管理是一門藝術。master分支,feture分支,release分支,bug-fix分支,test分支都是有其不同的功能的。Linux Kernel核心的分支管理絕對是分支管理的典範。軟體開發中專案管理很重要的一環就是code base的分支管理,圍繞不同的分支型別,會有不同的配套構建測試系統,這些都是保證開發活動有序進行的基礎。

每日的持續整合與驗證

持續整合(Continuous integration)對於大型軟體非常非常重要。因為需要整合的元件提多了,涉及的部門和開發團隊多了,bug也會相應變多,這個時候保證bug在第一時間發現就非常關鍵了,今天這個元件一個bug,明天那個元件一個bug,不及時解決,一起在後期爆發,絕對夠喝一壺的。

定期效能測試歸檔

效能作為一個關鍵指標,是需要長期監控的。週期測試並且存檔perf資料。第一時間發現效能惡化引入的版本節點,修復的代價是最小。如果沒有這些記錄,往往後面優化都沒有針對點。還是那個道理:問題發現的越早,越容易解決。

相關推薦

大型軟體開發流程規範

對於長生命週期的大型軟體,流程和規範十分必要。IT行業作為一個快節奏的行業,不光技術革新快,人員的更替也是很快的,沒有嚴格的規範和流程,幾個大版本迭代下來,可能產品的程式碼就維護不下去了。 估計很多大廠的小夥伴面對自己日常開發維護的的code base會產生這

軟體開發,做產品做專案有什麼區別?

對於個體程式設計師對於產品與專案的選擇性問題       在IT行業,產品和專案一直是程式設計師們討論的熱話題。下面是我看到的一篇文章,我覺得寫的比較不錯。和大家來共享一下。       我始終不能避免的是程式設計師的最終歸宿,人都有老的一天,也有很多人在討

軟體開發的理想現實(十一)——夠用就好

2月21日,專案正式開始第二天。依照昨天設計的框架和介面,我們開始實現這些功能,不過似乎大家的進展都比較慢,特別是XophiiX,似乎他陷入了困境之中。具體是什麼問題呢?請看下面的介面定義:    class CReader    {        // ...    pub

軟體開發的巨集觀微觀

巨集觀,即系統設計與架構;微觀,即演算法精確實現, 兩條路,選一條堅定地走下去,可有所成。夾在中間的則是添磚加瓦的碼農,如果不脫離這個層次,則只能面臨淘汰。 我,似乎適合巨集觀,天賦所致。 框架先這麼定,具體以後再詳述。 C/S架構要點:C要炫,S要海量吞吐量,穩定性

iOS開發地圖定位

視圖 編寫 aps 簡單 -a 第三方 span spa margin   不管是QQ還是微信的移動client都少不了定位功能,之前在微信demo中沒有加入定位功能,今天就寫個定位的小demo來了解一下定位和地圖的東西。地圖和定位看上去是挺高大上一東西。其有使用方法比

09.精益敏捷專案管理——敏捷軟體開發QA角色

00.當從鱷魚嘴裡僥倖逃脫時,你很難機器你的初衷其實只是想排出沼澤中的積水。   01.精益——敏捷軟體開發中質量保證(Quality Assurance,QA)的角色展開,涵蓋了許多關鍵問題   *測試人員的作用是防止缺陷,而不是發現缺陷   *開始做開發週期計劃時如何發揮驗收測試的作用,

利用visio在軟體開發各種圖

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

eclipse常用的快捷鍵,軟體開發工具必備的技能

用eclipse進行開發時,適當的使用一些快捷鍵會提高我們的開發效率。 複製一行程式碼: 1.先選中一行程式碼,按住ctrl+alt+上或下箭頭,複製程式碼到程式碼的上面或下面; 移動複製的程式碼: 2.選中複製的程式碼,鬆開ctrl鍵,即alt+上或下箭頭,移動程式碼到指定的位置。

軟體開發的注意事項(常見問題整理)

一、函式定義原則 1、一個函式/方法只做一件事情,不能將多個事情放在一個函式中處理(單一職責原則 SRP) 函式/方法的最小粒度是功能,函式在設計/定義的時候,不能將多個功能柔進一個函式裡面,這樣函式會變得得膨脹,增加了函式的耦合性,不便於函式管理維護。 例如,有這麼一個業務邏輯:使用者每天來網站閱

[譯]軟體開發個人生產力的差異

原文 https://www.construx.com/10x-software-development/productivity-variations-among-software-developers-and-teams-the-origin-of-10x/ 一些部落格讀者要求更多關於 “10x”名稱由

軟體開發的“浪費”

精益方法定義浪費是指那些沒有為最終產品增加價值的各種活動。比如敏捷中站會,大家一起溝通一下進展。這個的確沒有增加價值,但是浪費並不代表我們能不做這些活動。 浪費分為 事務成本 - 準備工作,做計劃,估算,回顧協調成本- 站會, 溝通會。注意,如果會上討論如何設計程式碼,這

敏捷開發之Scrum掃盲,及敏捷開發XPSCRUM的區別

現在敏捷開發是越來越火了,人人都在談敏捷,人人都在學習Scrum和XP... 為了不落後他人,於是我也開始學習Scrum,今天主要是對我最近閱讀的相關資料,根據自己的理解,用自己的話來講述Scrum中的各個環節,主要目的有兩個,一個是進行知識的總結,另外一個是覺得網上很多學習資料的講述方式讓初學者不太容易

敏捷軟體開發的配置管理

        敏捷軟體開發方法目的是適應需求的快速響應,能夠快速的釋出和快速的交付使用。 在敏捷中的如何實現配置管理,如何通過配置管理來管理敏捷開發過程中的需求、程式碼、版本等,這是應該是一個專向的課題。        敏捷中的配置管理有如下幾個方面需要考慮:     

軟體開發的詳細設計

比如一個積分兌換系統實現使用積分可以兌換話費功能。此時我們會想到使用設計模式中的策略模式,以便支援各種規則的兌換。但是當前第一版的需求只是兌換話費,現在引入策略模式會增加程式碼的複雜性,是不值得的。

軟體開發的瀑布模型

一、問題定義    軟體要解決什麼問題,做什麼。例如:做類似京東的購物網站,做類似優酷的視訊網站    二、可行性分析    可行性分析是決定“做或者不做的”,有如下幾個分析:       1、技術可行性,分析技術層面能不能實現所要求的功能2、經濟可行性,分析這個軟體件是否可以盈利3、法律可行性,分析所要做

軟體開發:個人團隊是永遠的核心

開發團隊效能模型有什麼意義呢?首先,該模型告訴我們,如果真的要在軟體行業找“銀彈”,所找到的“銀彈”應是“什麼模樣”的。其次,從模型中可以看出,時下流行的SCRUM敏捷軟體開發方法論只是流程的一部分,而不是高質高效軟體開發的全部內容。也就是說,團隊即使對SCRUM這一方法論駕輕就熟,離高質高效軟體開發這一目標

軟體開發的9大難題

是什麼讓專案變糟?何時起我們下班回家時開始盤算:“見鬼,我得離開?”下面是我們程式設計師要面對的

敏捷軟體開發的版本規劃

如上圖,開始之前我們假設產品backlog做過第一次梳理,並且總的故事點為127. 0. 在迭代開始之前,需要有一個產品backlog,並且其中頂部的一些故事是相對更詳細的。 1. 產品backlog需要符合INVEST標準(參見我的一篇部落格)。為了達到這個

[收藏]在離岸軟體開發採用敏捷過程並從中獲利

作者:Andrew Filev 摘要:通過以下兩種趨勢可在現代軟體開發中付出更少、獲利更多:敏捷開發和離岸外包。讓我們看一下如何以及何時成功結合這兩種趨勢以增強企業的競爭力。 本頁內容  在後泡沫時代,IT 預算被大量削減,造成預算供不應求,於是經理們不得不尋求更具有成

軟體開發的葵花寶典(轉)

中國人大都喜歡用武俠小說來比較軟體開發,但是在實戰武功中,只有葵花寶典才是最厲害的,也只有掌握了葵花寶典,才能稱為"不敗"。 但什麼才是軟體開發的葵花寶典? 讓我們先從一些現象出發。我們的前提是,軟體開發是一項智力密集型勞動。對於智力密集型勞動,我們觀察到的現象是,個體的表