软件工程中新功能开发流程

在软件生命周期内,根据市场和客户的需求,会不断的引入新的功能。由于经验、技术、视野、开发流程等方面的差异,不同的软件工程师的开发出的功能质量各不相同;经常出现功能不全、稳定性差、并发低、容错性差等缺点,可谓是一千个程序员能开发出一千个不同质量的功能。笔者结合亲身经历和它山之石总结出下面的功能开发流程,在流程上提高功能质量。

一、 需求分析

一般来说,需求分析是由产品经理来作的。软件工程师(以下称工程师)会拿到产品经理整理的需求文档。其实,工程师在阅读需求文档时,也是在作需求分析,只不过不是客户原始的需求,而是产品经理加工过的。但是从实践来看,工程师最好还是要更多的了解一下原始需求,然后结合产品的需求文档,可以更好的把握需求、更好的设计软件架构和功能。


注:
问: 为啥不由工程师直接和客户谈需求呢?
答: 主要有两点原因

a. 现代社会都是分工合作,追求效率,一个人完成所有环节效率会低、会疲惫

b. 工程师大多不擅长沟通,比较严谨、木讷、逻辑性强,真就是真,假就是假,处理事情不够友好


二. 架构设计

需要确定功能的架构,如有必要,需要与相关人员一起讨论,主要基于以下几点:

1. 是否可以在忆有功能基础上进行扩展

在已有功能基础上扩展开发量会少,是最常用的开发方式。缺点是会造成两个功能耦合度高,一个功能修改错误可能会影响到另一个功能。

2. 是否以独立服务(进程)的形式存在

当前的主流软件(功能)呈现形式倾向于微服务架构,这样可以解耦合、扩展性强。功能间通过通信协议实现调用(http等)。

3. 是否以多线程形式构建

在多线程软件中,新功能可以运行在一个独立的线程中,通过线程间通讯方式为主线程提供服务。优点是不会阻塞主线程

4. 是否以静态(动态)库形式实现

库是给第三方(模块)使用的一种常见形式

5. 是否以函数形式实现

如果是小功能,可以用函数接口的形式提供给其它接口调用

6. 影响范围确定

需要确定功能开发涉及哪些模块(或小组)


本阶段要产生架构方案,最好以邮件形式告知各相关人员并确认


三、概要&详细设计

写概要和详细设计文档,主要包括以下内容:

1. 功能的说明

2. 以流程图、时序图或状态机形式表示功能运行逻辑

3. 定义模块间通讯消息协议和消息格式

4. 数据库相关修改

5. 给出边界条件

6. 估算开发时间

7. 与相关人员开会,确认文档

本阶段产出设计文档,最好以邮件形式告知各相关人员并确认


四. 编码实现

根据确定设计方案和设计文档编码,注意以下关键点:

1. 函数、变量的命名要可读

2. 函数接口要考虑扩展

3. 函数体不能过大

4. 函数内分支不宜过多,三层以内


五、代码审查

1. 是否影响函数接口的扩展性

2. 函数是否太大,是否需要拆分

3. 函数名称和实际功能是否有偏差,是否需要抽象成新的接口

4. 有无动态分配内存,内存使用后是否回收(包括goto和return场景)

5. 是否会影响其它模块

6. 检查是否有死循环(循环条件是否正确)

7. 循环等算法是否有优化的必要

六. 自测试

根据测试用例(测试组提供或自己根据需求文档编写)进行测试;此外,应该对一些非功能性的如异常流程进行测试

七、联调

如有必要,同其它组进行联调,确认功能没有问题


八、代码规范检查

根据代码规范检查生成的patch,修改使其符合制定的代码规范,参考如下:

1. 如空格/table问题
2. 未使用变量等
3. 是否有未初始化变量
4. 是否需要添加必要的注释


九. 代码提交

提交代码时,要注意以下几点:

1. 不要提交多余的文件
2. 不要遗漏新增加文件
3. 写好提交日志信息


KSS:yimi-record-1-year:13243272030_1609_0000007a_xuyongji_12345678909_1_20180819_234045_000730_1605_4625768.mp3 
 

猜你喜欢

转载自blog.csdn.net/szkbsgy/article/details/81949175
今日推荐