從無到有:軟件項目過程敏捷實踐

項目過程分解

通過一次消息中間件系統(tǒng)的全程參與芍碧,對于軟件項目從無到有的生產(chǎn)過程有了較深入的了解,尤其對于架構(gòu)設(shè)計的決策過程和依據(jù)号俐,有了全面的認(rèn)識泌豆。整個項目過程從無到有依次可以分解為九個過程,下面一一道來吏饿。

1. 背景分析

主要是要分析清楚三個問題:

1. 這個項目的訴求是在什么業(yè)務(wù)現(xiàn)狀下產(chǎn)生的踪危?

2. 最終要解決什么問題?

3. 有什么價值猪落?

為什么要做背景分析呢贞远?

1. 更透徹的分析需求

所有的需求分析過程都要圍繞上述三個問題來,不能偏離笨忌。

2. 更主動的做事蓝仲;

當(dāng)你做一件事情的時候,如果不理解為什么要做官疲,只是單純的做事的時候袱结,其實是缺少主動性的

3. 獲得上級的支持。

有了上級的資源(人力途凫、時間)支持垢夹,項目能夠更加的順利。

2. 需求收集和分析

需求分為兩類:

1. 功能性需求

功能性需求一般是項目組內(nèi)分析得出的該系統(tǒng)需要具備的一些必備特性维费。對于消息中間件系統(tǒng)來說果元,如:發(fā)布消息、拉取消息犀盟、訂閱……

2. 業(yè)務(wù)性需求

業(yè)務(wù)性需求一般是從潛在的系統(tǒng)用戶(周邊項目組)那收集到的一些業(yè)務(wù)特性和使用習(xí)慣而晒,針對這些業(yè)務(wù)特性和使用習(xí)慣,分析我們的系統(tǒng)是否能滿足且蓬。對于消息中間件系統(tǒng)來說欣硼,如:業(yè)務(wù)系統(tǒng)習(xí)慣主動推送消息,不希望拉取消息;業(yè)務(wù)系統(tǒng)熟悉MySQL诈胜,希望底層存儲使用MySQL豹障;業(yè)務(wù)系統(tǒng)現(xiàn)有方案的數(shù)據(jù)格式是JSON,不希望換數(shù)據(jù)格式焦匈。

對于業(yè)務(wù)性的需求血公,我們要有所區(qū)分和取舍,不一定所有的業(yè)務(wù)特性都能夠同時滿足缓熟。

3. 業(yè)界方案研究

基于背景分析和需求收集分析累魔,收集類似的實現(xiàn)或方案。通過對這些實現(xiàn)或方案的研究够滑,了解其關(guān)鍵特性和主要適用場景垦写。最終決定是自研,還是在某個業(yè)界實現(xiàn)上做二次定制開發(fā)彰触。

4. 架構(gòu)設(shè)計

架構(gòu)設(shè)計就是是一系列的系統(tǒng)關(guān)鍵環(huán)節(jié)的技術(shù)決策梯投。如:

通信協(xié)議

通信協(xié)議使用TCP還是HTTP?傳輸格式采用JSON還是XML况毅?

持久化

數(shù)據(jù)存儲使用MySQL分蓖、SQLite還是Redis?數(shù)據(jù)存儲是否需要支持多種持久化方案尔许?

交互方式

客戶端和服務(wù)端采用同步交互還異步交互么鹤?采用消息推送還是消息拉取模式?

日志方案

是否記錄Binlog味廊?Binlog是否實現(xiàn)主從同步蒸甜?

每一個架構(gòu)設(shè)計決策之間是互相影響甚至可能是互斥的關(guān)系,這個時候要有取舍毡们,取舍的標(biāo)準(zhǔn)就是先看對與錯迅皇,后看好與壞。對與錯取決于方案的功能屬性衙熔,好與壞取決于方案的質(zhì)量屬性登颓。

方案的功能屬性是指其基本功能點;而方案的質(zhì)量屬性是指:

1. 性能2. 成本(硬件成本)3. 可擴(kuò)展性/可伸縮性4. 可靠性5. 復(fù)雜性6. 運(yùn)維7. 其他 如:合規(guī)性红氯、安全性……

很多架構(gòu)設(shè)計決策在后續(xù)的項目環(huán)節(jié)要進(jìn)行驗證和實現(xiàn)框咙,經(jīng)過進(jìn)一步的驗證和分析,很可能推翻之前的決策痢甘。

5. 需求管理

分析需求的優(yōu)先級和依賴關(guān)系喇嘱,規(guī)劃版本,確定時間點塞栅。最好使用需求管理工具者铜,便于跟蹤。

6.?功能設(shè)計和開發(fā)

理清楚各個功能之間的邏輯關(guān)系,設(shè)計功能的關(guān)鍵邏輯作烟,編寫代碼實現(xiàn)愉粤,最后自測驗證。

對外提供的API要特別注意其易用性拿撩,對外暴露的越少越好衣厘,否則內(nèi)部變動很容易影響使用方。

7. 功能測試

白盒+黑盒压恒,無需贅言影暴!

8. 性能測試

要特別重視性能測試,通過性能測試能夠發(fā)現(xiàn)很多我們程序的關(guān)鍵Bug探赫。

9. 資料編寫

包括系統(tǒng)設(shè)計的關(guān)鍵決策過程型宙、開發(fā)指南、部署指南期吓、配置說明以及技術(shù)沉淀總結(jié)早歇。

資料編寫的過程也是重新審視整個項目的過程。

改進(jìn)和提升

做得不錯

1. 簡短的項目晨會讨勤,卻能夠很清晰的反映項目組成員的工作進(jìn)度和遇到的難題,及早暴露問題晨另。2. 每周一個沖刺版本潭千,這樣小版本迭代能夠快速試錯,也保證了開發(fā)和測試的同步進(jìn)行借尿,提升了效率刨晴。3. 需求依賴分析和優(yōu)先級分類,能夠保證我們開發(fā)出來的版本總是一個可用的版本路翻。4. 每個沖刺版本的代碼Review和評審會議效果非常好狈癞,不但能夠讓其他項目組成員熟悉代碼,關(guān)鍵時刻快速補(bǔ)位茂契;而且能夠避免由于對架構(gòu)設(shè)計的理解不一致蝶桶,導(dǎo)致功能邏輯問題。5. 發(fā)布版本的FMEA評估效果也非常好掉冶,能夠發(fā)現(xiàn)很多異常場景下的邏輯漏洞真竖,對于提升版本質(zhì)量很有幫助。

后續(xù)改進(jìn)

1. 對于每次項目會議厌小,最好都有專人負(fù)責(zé)會議記錄恢共,避免一些關(guān)鍵決策過程遺失。2. 項目組最好都是用統(tǒng)一的代碼模板璧亚,這樣看代碼效率能提升不少讨韭。3. 對于廢棄的代碼,堅決刪除,避免保留和注釋透硝,這樣能保證代碼的清晰吉嚣。4. 在項目設(shè)計和開發(fā)之前,就要做好框架的知識儲備蹬铺,否則很容易因為不熟悉開發(fā)框架而延遲開發(fā)進(jìn)度尝哆。本次項目就因為對于Netty沒有提前熟悉,導(dǎo)致SDK第一個沖刺版本延遲甜攀。5. 在設(shè)計和開發(fā)過程中秋泄,對于一些關(guān)鍵決策最好和項目組其他成員討論評審一下,否則很容易返工规阀。6. 自測聯(lián)調(diào)時恒序,不能只關(guān)注是否調(diào)用成功,還需要檢查數(shù)據(jù)有效性和業(yè)務(wù)邏輯性谁撼,否則會浪費(fèi)測試人員時間歧胁,導(dǎo)致重新打包。7. 性能測試要做好測試計劃厉碟,提前熟悉測試工具喊巍,避免做很多無用測試。8. 項目管理工具UAPD最好能夠提供需求任務(wù)列表箍鼓,能夠讓開發(fā)人員一眼看到自己負(fù)責(zé)的任務(wù)和完成時間崭参。9. 對外API在設(shè)計接口時,最好先和業(yè)務(wù)使用方進(jìn)行溝通款咖,盡量滿足其使用場景何暮;如果實在無法滿足某個場景,可以采用高層接口和底層接口相結(jié)合的方式铐殃,即:高層接口更加便利海洼,但是只滿足部分場景;底層接口能夠支持更加靈活的定制富腊,使用起來相對麻煩一點坏逢。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市蟹肘,隨后出現(xiàn)的幾起案子词疼,更是在濱河造成了極大的恐慌,老刑警劉巖帘腹,帶你破解...
    沈念sama閱讀 218,640評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件贰盗,死亡現(xiàn)場離奇詭異,居然都是意外死亡阳欲,警方通過查閱死者的電腦和手機(jī)舵盈,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,254評論 3 395
  • 文/潘曉璐 我一進(jìn)店門陋率,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人秽晚,你說我怎么就攤上這事瓦糟。” “怎么了赴蝇?”我有些...
    開封第一講書人閱讀 165,011評論 0 355
  • 文/不壞的土叔 我叫張陵菩浙,是天一觀的道長。 經(jīng)常有香客問我句伶,道長劲蜻,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,755評論 1 294
  • 正文 為了忘掉前任考余,我火速辦了婚禮先嬉,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘楚堤。我一直安慰自己疫蔓,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,774評論 6 392
  • 文/花漫 我一把揭開白布身冬。 她就那樣靜靜地躺著衅胀,像睡著了一般。 火紅的嫁衣襯著肌膚如雪吏恭。 梳的紋絲不亂的頭發(fā)上拗小,一...
    開封第一講書人閱讀 51,610評論 1 305
  • 那天,我揣著相機(jī)與錄音樱哼,去河邊找鬼。 笑死剿配,一個胖子當(dāng)著我的面吹牛搅幅,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播呼胚,決...
    沈念sama閱讀 40,352評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼茄唐,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了蝇更?” 一聲冷哼從身側(cè)響起沪编,我...
    開封第一講書人閱讀 39,257評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎年扩,沒想到半個月后蚁廓,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,717評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡厨幻,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,894評論 3 336
  • 正文 我和宋清朗相戀三年相嵌,在試婚紗的時候發(fā)現(xiàn)自己被綠了腿时。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,021評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡饭宾,死狀恐怖批糟,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情看铆,我是刑警寧澤徽鼎,帶...
    沈念sama閱讀 35,735評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站弹惦,受9級特大地震影響否淤,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜肤频,卻給世界環(huán)境...
    茶點故事閱讀 41,354評論 3 330
  • 文/蒙蒙 一叹括、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧宵荒,春花似錦汁雷、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,936評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至暑刃,卻和暖如春厢漩,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背岩臣。 一陣腳步聲響...
    開封第一講書人閱讀 33,054評論 1 270
  • 我被黑心中介騙來泰國打工溜嗜, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人架谎。 一個月前我還...
    沈念sama閱讀 48,224評論 3 371
  • 正文 我出身青樓炸宵,卻偏偏與公主長得像,于是被迫代替她去往敵國和親谷扣。 傳聞我的和親對象是個殘疾皇子土全,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,974評論 2 355

推薦閱讀更多精彩內(nèi)容