过去的两年中经常对产品做一些新增功能,也就会经常思产品的特性是怎么来的,怎么开发的,怎么测试的,怎么维护的,如何做才能避免不必要的需求变更、设计变更、用例变更,如何提高软件工程师的开发效率。

本人供职于小的计算机产品部门,这种并没有像BAT等大型互联网公司有着比较完善的市场、解决方案、产品体验设计等部门。很多时候,开发人员要考虑更多的问题,比如用户需求分析、业务流程的设计、功能需求导入、用户界面设计等等

所以本文只是从一个一线开发人员的角度、一个小公司的角度来探讨适合自己的开发流程或者将方式。

1  市场需求

市场需求,就是市场人员在与客户沟通过程中发现,客户在某件事情遇到什么样的问题,或者存在某种欲望(当然是对种产品),非科班出身的市场人员就会把客户的这种问题或者欲望带回家,告诉开发人员,客户想要什么什么,有时候就是一句话,好的时候是一段话。所谓用例,都没有。

这种就是最原始的需求。

这种原始的需求,都会有人来分析,具体是谁,公司不同,角色不同。

2  功能需求调研

我们了解了客户的要求,即最原始的需求,此时,就要在市场上看看有哪些同类产品,哪些产品是比较经典的或者市场占有率比较高的产品,针对这些产品,了解他们是如何解决客户需求的,进行仔细,了解其优缺点(如果能推测其设计方案就更好了),然后基于对比分析,确定业务流程及我们需要实现的基本功能和扩展功能。

为什么增加业务流程,增加对功能需求合理性的正确度。

输出需求分析文档,需求分析文档要足够详尽,支撑测试用例的撰写;

如果包含GUI/UI管理系统,理应包含GUI/UI Demo(如果有UXE,建议由他们来设计),并且每一项需求细节和GUI/UI Demo都应经过产品经理或子系统OWNer、测试人员的评审通过。

为什么要增加GUI/UI Demo评审,目的是避免后期不必要的扯皮。

 

3  选型和原型开发

有了详细的需求,需要展开方案设计,没有一定完美的方案,但是可以有多种方案,需要对不同的方案进行对比分析,清晰的了解其优缺点,选择一种适合我们自己的方案。

然后对方案中的难点进行原型开发,对其中的风险进行评估,在接下来的方案设计中需要包括这些重难点分析和风险评估。在方案评审时,这部分需要评审人员重点关注。

类似于买保险中的“健康告知”。


4  方案设计

方案已经对比清楚,已知的困难点已经解决,已知的风险已经评估。

概要设计一般还包含:

(1)系统架构:一般来说会有个简单的架构图,并配以文字对架构进行简要说明;

(2)模块简介:架构图中如果有很多模块,需要对各个模块的功能进行简要介绍;

(3)设计与折衷:设计与折衷是总体概要设计中最重要的部分;

(4)潜在风险(可选);

输出总体概要设计的时候,很多方案还是不确定的,需要在设计评审会议上确认。

总体概要设计重点在“方案折衷”,总体概要设计评审完毕之后,此时应该是所有方案都确认了,需要输出各模块的详细设计。

详细设计重点在“详细”:

(1) 总体概要设计结论汇总(可选):达成一致的结论有个简要概述,说明详设是对这些结论的实现;

(2) 交互流程:简要的交互可用文字说明,复杂的交互建议使用流程图,交互图或其他图形进行说明;

(3) 数据库设计:这个是应该放在总设还是详设呢?

(4) 接口形式:有了数据库+接口+流程,别的同学拿到详设文档,基本也能够搞定了;

理论上输出了详细设计之后,无论谁拿到了这个详设文档,都是能够完成该项目的。

摘自百度,个人经验:

(1) 设计与折衷是总设中最重要的内容,总设评审中,主要就是讨论这些折衷的优劣;

(2) 评审过后,不但要邮件周知结论,还要在总设中进行更新,说明最终决定使用了哪种方案,为什么使用这种方案;根据自己的经验,接手别人的模块、项目,拿到代码和文档,设计方案对我来说完全是个谜!

(3) 有时候因为排期或者其他原因,不一定采用了最优的设计方案,此时更应该在总设中记录决策的过程与原因;

(4) 最后,设计折衷是一个很好的自我辩解的机会:因为项目进度,或者历史遗留问题,不得不采取了一个这样的设计。

5  代码开发

针对产品特性,最艰难一步已经完成,此时就是按部就班的代码实现。

此处强烈建议,增加他人review,可保证质量;又可增加特性备份owner(避免责任去职后的工作空白)。

考验软件人员的基本能力——编程开发。

6  测试

根据功能需求,形成测试用例,覆盖全部功能,保证特性功能的质量。

开发人员的测试用例是根据需求分析文档撰写的,所以在需求分析评审结束时,是完全可以支持测试用例的撰写的,测试用例要做到完全覆盖。

7  发布

产品功能开发完毕,测试确保质量合格,特性功能发布。

接下来就是维护,维护功能。

特别注意的一点就是,任何一个特性的开发,一定会经历以上几步,只是在不同的公司,可能由不同的角色或者部门来承担,如果没有按照上述几步来做,就失去了做事的条理性。

作者:Younger Liu,

本作品采用知识共享署名-非商业性使用-相同方式共享 3.0 未本地化版本许可协议进行许可。

软件特性开发的流程感想相关推荐

  1. 企业软件定制开发的流程,有五点是需要注意的!

    企业软件定制开发的流程,有五点是需要注意的! 2020-05-30 12:32:59 在开发软件层面,挪动应用程序开发设计的渐近旅途不可忽视,由于全部重特大意外惊喜的小故事并沒有一天出現. 以便完成宏 ...

  2. 面试总结-----工程化软件项目开发的流程、步骤

    工程化软件项目开发的流程.步骤 需求分析 (1)相关系统分析员向用户初步了解需求,然后用相关的工具软件列出要开发的系统的大功能模块,每个大功能模块有哪些小功能模块,对于有些需求比较明确相关的界面时,在 ...

  3. 软件项目开发基本流程详解

    软件项目开发流程图是用来详细描述了软件在开发过程中产品调研.设计.开发.测试等各个阶段中各个角色,包含产品经理.研发.测试.用户等需要处理的事情,以及在不同阶段可以达到哪种效果.那么,一款软件从研发到 ...

  4. 软件的开发流程及计算机硬件组成

    标题 软件的开发流程及计算机硬件组成 软件的开发流程 一.需求分析阶段 1.首先由PM产品经理调研市场,提交给产品部门,如有市场需求则通过审核 2.召集项目相关人员UE.RI.RD.QA.开需求讨论会 ...

  5. Leangoo项目管理软件管理 传统硬件产品开发全流程

    本场景描述的是基于阶段式硬件研发流程以及在 Leangoo项目管理软件 中如何实现. 硬件产品开发流程 下图所示的是一个硬件产品开发大体上所需要经历的全部流程: 1)立项 在立项之前首先需要确定产品定 ...

  6. 软件项目开发流程及配置人员

    项目需求汇总分析 架构设计 产品设计 代码编写 项目测试 上线 项目需求汇总分析(调研) 项目经理 在这个阶段,上项目经理应该先要求客户(项目发起人)提供一个项目需求及要求明细的清单. 清楚需求及项目 ...

  7. 小型软件项目开发流程探讨

    一.导言   国内很多项目都是小型项目, 参与人员少(两到五个人), 要快速交付(一两个月) . 要成功完成这种项目, 除了使用成熟且被团队成员熟练使用的技术之外, 有一个良好的开发流程, 也是很必要 ...

  8. 软件开发有哪些规范和标准_深圳APP软件开发的流程是什么?

    深圳APP软件开发的流程是什么?APP软件开发是根据用户需求构建软件系统或设备的软件部分的过程,是一项系统工程,包括需求捕获,需求分析,系统设计,系统实现和系统测试.APP软件通常以某种编程语言实现, ...

  9. 软件项目开发流程以及人员职责

    软件项目开发流程以及人员职责 实行软件工程项目管理: ▲ 项目经理(负责人):项目经理(负责人)对整个项目负完全责任,是指导.控制.管理和规范某个软件和软/硬件系统建设的人,项目经理(负责人)是最终对 ...

最新文章

  1. eclipse/myeclipse 中,如何删除已经下载过的插件(举例:删除scala ide)
  2. Java8新特性之构造器引用、方法引用
  3. Leecode03. 无重复字符的最长子串——Leecode大厂热题100道系列
  4. 如何保证消息队列的高可用?透彻分析源码
  5. C#代码中背后进行的值拷贝
  6. 从另一页面调用html代码_GNE v0.1正式发布:4行代码开发新闻网站通用爬虫
  7. 【java】关于Java NIO的一切
  8. 一套很好的.net控件radcontrols介绍
  9. 一样的打游戏,不一样的酷
  10. matlab mysql数据库增删改查_ef6.0增删改查操作
  11. 一年级下册计算机教学计划,一年级下册教学计划
  12. 【老生谈算法】matlab实现MF-TDMA系统中多用户多业务的无线接入控制和时隙分配算法源码——时隙分配算法
  13. 声网传输层协议 AUT 的总结与展望丨Dev for Dev 专栏
  14. 常吃这9种食物 牙齿坏得快
  15. 自适应阈值(adaptiveThreshold)分割原理及实现
  16. word另存为的快捷键
  17. java笔试题---用*打印漏斗形,信雅达笔试题
  18. 【智力题】大厂最爱问的智力题
  19. 【考研数学】考研数学常用希腊字母表(数学符号及读法大全)
  20. 2017年高教社杯全国大学生数学建模竞赛题目--C题 颜色与物质浓度辨识

热门文章

  1. 阿莫电子为啥越来越差?
  2. 加油站都需要什么手续_开办加油站需要办哪些手续?
  3. 【大学物理·早期量子论和量子力学基础】量子力学中的氢原子问题
  4. 字符转ASII码以及大小写之间的转换
  5. Android攻城狮ViewFlipper
  6. 【word】页码分栏,左侧文字右侧页码
  7. java 实现ps功能_JS实现在线ps功能详解
  8. Kubernetes (K8s) 安装部署过程(七)之部署node节点
  9. Maven 参数详情
  10. linux看磁盘是sas还是sata吗,SAS和SATA硬盘傻傻分不清?看这里