之前我在微軟上海的sqlserver工作的時候就感受到了他們十分嚴謹的氣氛,一般來說,我們做一個軟件之前都會planning和investigation,大概占用1/3的時間,研究得差不多了,然后才...
有哪些軟件相關的公司,開發流程比較規范?
我們精選了一下網友答案:
···································^^····································
之前我在微軟上海的sqlserver工作的時候就感受到了他們十分嚴謹的氣氛,一般來說,我們做一個軟件之前都會planning和investigation,大概占用1/3的時間,研究得差不多了,然后才開始干正事。然后就會開始用agile里面scrum的那套方法,而且在【每次】代碼checkin之前,都要有兩個人review通過了才行,review沒過就按照comment改,如果強行checkin的話系統會群發郵件。
至于daily build要到開發了差不多一半的時候,功能基本都寫完了才會開始,這個是給test用的,不是給dev用的。
至于test,會跟dev一樣,從項目的planning階段就開始參與我們的設計,并且他們會思考如何對我們即將要完成的東西做自動化測試。測試時全程參與的,而不像某些著名公司一樣,快寫完的時候才開始。
到了項目的后期,feature基本做完了,幾乎都在修bug的時候,會進入一個feature freezing的階段。這個時候PM如果要提新的需求,就會queue進一個叫做design changing request的表里,每個星期全組都要開會討論,到底是現在做呢,還是下個release才做。
我們的項目組有上千個人,所以把所有代碼merge在一起也是一件很艱難的事情。因此每個feature team都要定期從main branch上面下載代碼來做本地merge,提前發現問題。當輪到我們最終把自己的feature提交到main branch的時候,大概會有兩個星期的時間,這個時間我們可以自由操作main branch,別人不能動(只能下載)。但要求是要把整個sqlserver的所有自動化測試用例都通過才行。否則的話,過了這個時間窗,沒做完就干掉,排隊等下次。如果最終checkin了進去,但是別人發現你break test了,就會把你的代碼reverse掉,你仍然要排隊等下次。
我們的delivery是按照【你寫的代碼進了main branch】來算的,如果千辛萬苦怎么寫都過不了test進不了branch,那根白做了沒有任何區別。
你要是想體驗一下的話可以過來試試(逃
+++你是想了解管理流程,還是技術流程呢?
如果是技術流程的話,Qt Project還不錯。qt-project.org/
缺陷跟蹤器(bug tracker)在
bugreports.qt-project.org/代碼評審網站(gerrit)在
codereview.qt-project.org/CI結果在
testresults.qt-project.org/ci/項目所有代碼在
github.com/qtproject/相關信息:
qt-project.org/contributeQt Project的CI現在覆蓋Windows, Linux, OS X, Android, iOS等,全部自動集成,規模應該是夠大了,我不知道還有其它項目能做成這個樣子。CI代碼也是開放的,基于Jenkins。+++我們這10來個人,我們這開發流程用了好幾年了。
這段時間在重新用Python搭建公司里面的這套,我們的開發是用Git,周邊寫一些腳本來自動化。
1 nightly build和測試,包括regression(debug/release), coverage testing, valgrind testing。如果發現問題腳本發郵件給相關人員。
2 merge server,這是我以前沒見過的,我們做了一個小的服務端,開發人員每次merge代碼都是通過腳本提交一個branch,這個merge server做的工作就是做代碼merge,編譯,跑regression, 如果沒問題就代碼改動就進入master。否則就報告出來,這個merge被block。避免很多手工活。
3 CI, ci跑的是一個更大的測試集,可以監測到每次merge 引起的cpu/memory 的變化,如果有問題需要review。
4 Rails寫的內部網站展示所有上面的測試和merge的情況。+++看見@vczh 講了微軟的開發流程,我也講講我們這邊吧。我在上海ibm的編譯器組,我們團隊包括了加拿大的主體部分,美國的C++ Runtime部分,北京的一小部分z/OS,上海的AIX/Linux C/C++編譯器前端,C/C++/Fortran編譯器后端部分。由于我們團隊跨國跨地區,所以我們需要一個非常嚴謹的開發流程來保證。我們本身采取的是Agile開發模式,具體來說就是Scrum那一套。由于我們是編譯器項目,類似@vczh的sqlserver,我們也會有Plan與Investigation,當然這些是VP級別的大佬來操作的,而這些事情都是比較宏偉的,以C++為例,我們會有C++11的支持計劃,我們會首先實現C++11的哪些特性呢,接下來會實現哪些呢,這些特性與編譯器實現難度有關系,更重要的是與我們的Clients需求有關系(由于我們編譯器的Clients基本上都是大企業用戶,那么我們不可能不理)。那么VP制定好計劃后,從具體事情來說,我們會有Task,一個Task又會有若干個Story。從時間來說我們就會有若干個sprint,那么在后面提交代碼這是非常必要的,你需要指定你的代碼針對的是哪一個Plan與Sprint。而由于編譯器是一個高度復雜的項目,在提交代碼前,一定會首先跑核心用例測試,而這個核心用例測試是一個Failure都不能出現。如果出現了Failure,對不起,請修改代碼。隨后,如果你的代碼難度很大的,改動了編譯器核心的代碼(比如我上次修改了我們C++的Parser產生式),那么這時候在提交代碼的時候,你需要勾選上你的Team Leader,再勾選上兩個加拿大本部的資深Developer,等他們都Review通過后,你的代碼才會被系統Check In進去,否則你的代碼無法Check In進代碼倉庫。如果這些都完畢后,隨后我們會有Regression測試,如果你的Regression測試都過了后,你才算系統通過,否則你需要解決Regression。隨后過了一周,我們會開Code Review大會,你需要講解你這樣改代碼的理由。然后會檢測你的代碼風格是否符合IBM Compiler的代碼開發標準,以及你的代碼是否還有潛在的風險(如我以前解的一個Defect什么都過了,但是在Code Review發現會有z/OS以后潛在的風險,即使現在沒有出現,也需要修改代碼來避免)。而我們會有BPI人員定期進行Merge Code,建立Branch,拉代碼入PTF Line,Freeze Code等,以及發布前會有Release Manager等來進行全程控制等,而Tester來說也會全程參與整個開發周期,跑測試用例,報給相應的developer,自動化測試等。而我所說的只是我們團隊開發流程的冰山一角,總的來說,如@vczh所說,如果你想體驗正規開發流程,可以去他們那里的團隊,而我們IBM這邊也是相當正規規范的。 :-)+++
這個得介紹下我帶的團隊:
我并不太喜歡規范這個詞, 開發流程應該符合那個組織、那個公司的規范呢? 我選擇更好更高效更合適的開發流程。
用圖來簡介下我指導的馬拉馬拉技術團隊:
基于WIKI的信息積累、分享: