从无到有:软件项目过程敏捷实践

项目过程分解

通过一次消息中间件系统的全程参与,对于软件项目从无到有的生产过程有了较深入的了解,尤其对于架构设计的决策过程和依据,有了全面的认识。整个项目过程从无到有依次可以分解为九个过程,下面一一道来。

1. 背景分析

主要是要分析清楚三个问题:

1. 这个项目的诉求是在什么业务现状下产生的?

2. 最终要解决什么问题?

3. 有什么价值?

为什么要做背景分析呢?

1. 更透彻的分析需求

所有的需求分析过程都要围绕上述三个问题来,不能偏离。

2. 更主动的做事;

当你做一件事情的时候,如果不理解为什么要做,只是单纯的做事的时候,其实是缺少主动性的

3. 获得上级的支持。

有了上级的资源(人力、时间)支持,项目能够更加的顺利。

2. 需求收集和分析

需求分为两类:

1. 功能性需求

功能性需求一般是项目组内分析得出的该系统需要具备的一些必备特性。对于消息中间件系统来说,如:发布消息、拉取消息、订阅……

2. 业务性需求

业务性需求一般是从潜在的系统用户(周边项目组)那收集到的一些业务特性和使用习惯,针对这些业务特性和使用习惯,分析我们的系统是否能满足。对于消息中间件系统来说,如:业务系统习惯主动推送消息,不希望拉取消息;业务系统熟悉MySQL,希望底层存储使用MySQL;业务系统现有方案的数据格式是JSON,不希望换数据格式。

对于业务性的需求,我们要有所区分和取舍,不一定所有的业务特性都能够同时满足。

3. 业界方案研究

基于背景分析和需求收集分析,收集类似的实现或方案。通过对这些实现或方案的研究,了解其关键特性和主要适用场景。最终决定是自研,还是在某个业界实现上做二次定制开发。

4. 架构设计

架构设计就是是一系列的系统关键环节的技术决策。如:

通信协议

通信协议使用TCP还是HTTP?传输格式采用JSON还是XML?

持久化

数据存储使用MySQL、SQLite还是Redis?数据存储是否需要支持多种持久化方案?

交互方式

客户端和服务端采用同步交互还异步交互?采用消息推送还是消息拉取模式?

日志方案

是否记录Binlog?Binlog是否实现主从同步?

每一个架构设计决策之间是互相影响甚至可能是互斥的关系,这个时候要有取舍,取舍的标准就是先看对与错,后看好与坏。对与错取决于方案的功能属性,好与坏取决于方案的质量属性。

方案的功能属性是指其基本功能点;而方案的质量属性是指:

1. 性能2. 成本(硬件成本)3. 可扩展性/可伸缩性4. 可靠性5. 复杂性6. 运维7. 其他 如:合规性、安全性……

很多架构设计决策在后续的项目环节要进行验证和实现,经过进一步的验证和分析,很可能推翻之前的决策。

5. 需求管理

分析需求的优先级和依赖关系,规划版本,确定时间点。最好使用需求管理工具,便于跟踪。

6. 功能设计和开发

理清楚各个功能之间的逻辑关系,设计功能的关键逻辑,编写代码实现,最后自测验证。

对外提供的API要特别注意其易用性,对外暴露的越少越好,否则内部变动很容易影响使用方。

7. 功能测试

白盒+黑盒,无需赘言!

8. 性能测试

要特别重视性能测试,通过性能测试能够发现很多我们程序的关键Bug。

9. 资料编写

包括系统设计的关键决策过程、开发指南、部署指南、配置说明以及技术沉淀总结。

资料编写的过程也是重新审视整个项目的过程。

改进和提升

做得不错

1. 简短的项目晨会,却能够很清晰的反映项目组成员的工作进度和遇到的难题,及早暴露问题。2. 每周一个冲刺版本,这样小版本迭代能够快速试错,也保证了开发和测试的同步进行,提升了效率。3. 需求依赖分析和优先级分类,能够保证我们开发出来的版本总是一个可用的版本。4. 每个冲刺版本的代码Review和评审会议效果非常好,不但能够让其他项目组成员熟悉代码,关键时刻快速补位;而且能够避免由于对架构设计的理解不一致,导致功能逻辑问题。5. 发布版本的FMEA评估效果也非常好,能够发现很多异常场景下的逻辑漏洞,对于提升版本质量很有帮助。

后续改进

1. 对于每次项目会议,最好都有专人负责会议记录,避免一些关键决策过程遗失。2. 项目组最好都是用统一的代码模板,这样看代码效率能提升不少。3. 对于废弃的代码,坚决删除,避免保留和注释,这样能保证代码的清晰。4. 在项目设计和开发之前,就要做好框架的知识储备,否则很容易因为不熟悉开发框架而延迟开发进度。本次项目就因为对于Netty没有提前熟悉,导致SDK第一个冲刺版本延迟。5. 在设计和开发过程中,对于一些关键决策最好和项目组其他成员讨论评审一下,否则很容易返工。6. 自测联调时,不能只关注是否调用成功,还需要检查数据有效性和业务逻辑性,否则会浪费测试人员时间,导致重新打包。7. 性能测试要做好测试计划,提前熟悉测试工具,避免做很多无用测试。8. 项目管理工具UAPD最好能够提供需求任务列表,能够让开发人员一眼看到自己负责的任务和完成时间。9. 对外API在设计接口时,最好先和业务使用方进行沟通,尽量满足其使用场景;如果实在无法满足某个场景,可以采用高层接口和底层接口相结合的方式,即:高层接口更加便利,但是只满足部分场景;底层接口能够支持更加灵活的定制,使用起来相对麻烦一点。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,084评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,623评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,450评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,322评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,370评论 6 390
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,274评论 1 300
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,126评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,980评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,414评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,599评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,773评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,470评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,080评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,713评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,852评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,865评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,689评论 2 354

推荐阅读更多精彩内容