03_软件研发流程

                        [TOC]

软件产品中的过程文件

一个软件产品,从立项到研发、测试,到上线交付给用户使用,这个过程会产生各种各样的文档

客户原始需求
通常客户会跟产品经理进行对接, 告知产品经理自己的需求,产品经理会将这些需求以文档的形式整理出来

需求规格(SRS)
对所开发软件的功能、性能、用户界面及运行环境等作出详细的说明。它是在用户与开发人员双方对软件需求取得共同理解并达成协议的条件下编写的,也是实施开发工作的基础。该说明书应给出数据逻辑和数据采集的各项要求,为生成和维护系统数据文件做好准备。

项目计划
为软件项目实施方案制订出具体计划,应该包括各部分工作的负责人员、开发的进度、开发经费的预算、所需的硬件及软件资源等。

概要设计
该说明书是概要实际阶段的工作成果,它应说明功能分配、模块划分、程序的总体结构、输入输出以及接口设计、运行设计、数据结构设计和出错处理设计等,为详细设计提供基础。

详细设计
着重描述每一模块是怎样实现的,包括实现算法、逻辑流程等。

代码清单
开发人员会在SVN上提交自己的所有代码清单。

测试计划
为做好集成测试和验收测试,需为如何组织测试制订实施计划。计划应包括测试的内容、进度、条件、人员、测试用例的选取原则、测试结果允许的偏差范围等。

测试用例
测试人员为进行软件测试,输出的测试用例

测试报告
测试工作完成以后,应提交测试计划执行情况的说明,对测试结果加以分析,并提出测试的结论意见。

缺陷跟踪单
指出软件问题的登记情况,如日期、发现人、状态、问题所属模块等,为软件修改提供准备文档。

软件项目成员

项目经理:驱动整个项目的运转,负责制定计划,安排人力,管理进度,协调团队,进行重大决策。
产品经理(需求开发人员)(BA):负责与客户沟通需求,编写软件测试需求说明书,绘制项目原型图。
架构师 / 系统工程师(SE):技术专家,经验丰富,负责整个系统的体系架构的设计以及关键模块的设计。
程序员 / 开发人员:设计、编写软件,并修复软件中的缺陷。
测试工程师:负责找出软件产品存在的问题并报告。
UI设计工程师:负责项目图片的设计,或者项目页面的排版布局。
配置管理员:负责管理程序员写的代码和资料工程师写的文档资料,并组合成一个软件包
QA(很多小公司不设置该职位):质量监管人员

项目开发模型

敏捷开发的核心是迭代开发(iterative development)。敏捷一定是采用迭代开发的方式。

那么什么是"迭代开发"呢?迭代的英文是 iterative,直译为"重复",迭代开发其实就是"重复开发"。

对于大型软件项目,传统的开发方式是采用一个大周期(比如一年)进行开发,整个过程就是一次"大开发";迭代开发的方式则不一样,它将开发过程拆分成多个小周期,即一次"大开发"变成多次"小开发",每次小开发都是同样的流程,所以看上去就好像重复在做同样的步骤。

举例来说,SpaceX 公司想造一个大推力火箭,将人类送到火星。但是,它不是一开始就造大火箭,而是先造一个最简陋的小火箭 Falcon 1。结果,第一次发射就爆炸了,直到第四次发射,才成功进入轨道。然后,开发了中型火箭 Falcon 9,九年中发射了70次。最后,才开发 Falcon 重型火箭。如果 SpaceX 不采用迭代开发,它可能直到现在还无法上天。
迭代开发将一个大任务,分解成多次连续的开发,本质就是逐步改进。 开发者先快速发布一个有效但不完美的最简版本,然后不断迭代。每一次迭代都包含规划、设计、编码、测试、评估五个步骤,不断改进产品,添加新功能。通过频繁的发布,以及跟踪对前一次迭代的反馈,最终接近较完善的产品形态。

posted @ 2020-08-06 13:39  简小虫  阅读(217)  评论(0编辑  收藏  举报