1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > 软件工程中新功能开发流程

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

时间:2022-07-31 15:15:37

相关推荐

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

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

一、 需求分析

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

注:

问: 为啥不由工程师直接和客户谈需求呢?

答: 主要有两点原因

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. 如空格/TAB问题

2. 未使用变量等

3. 是否有未初始化变量

4. 是否需要添加必要的注释

九. 代码提交

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

1. 不要提交多余的文件

2. 不要遗漏新增加的文件

3. 写好提交日志信息

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。