一、软件研发管理办法
第1章 总则
第1条 目的。
为规范软件研发工作,提高研发质量,降低成本,结合企业的实际情况,特制定本办法,确保持续并且快速地交付高质量的有价值的软件给客户。
首先软件产品研发是一个快速且持续交付的过程;其次研发是面向客户的,交付的软件必须是对客户而言高质量且有价值的,而质量是全生命周期多方位多维度的,其衡量标准除了价值以外,还包括稳定性、安全性、可靠性、可扩展性等。
不同软件产品,其流程管理可以简化,但不能少,明确研发的几个关键流程,即:需求分析,软件设计,代码实现和测试发布。即使采用敏捷开发,但每个迭代阶段都是一个涉及前面所述关键流程的小型“瀑布型”开发。
第2条 管理部门。
软件研发团队所在部门通常是软件研发工作的归口管理部门,负责软件的需求调查、设计、开发、测试、发布等各项工作。
软件管理归口部门需要对软件研发体系、产品规划、开发流程、技术服务负规范、指引、审核责任。
第3条 适用范围
软件研发管理办法适用于软件产品的组织、规划、需求、分析、设计、编程、测试、投产、运维等环节。
该办法对参与公司软件产品工作各环节的公司职员具有约束要求、指导建议的作用。
第4条 研发流程
软件产品研发流程将从产品需求到产品交付的各个阶段中组织职责划分及协作流程。产品开发划分为立项规划、需求分析、概要设计、详细设计(视项目情况省略)、开发实现、验证发布、交付运维等研发流程,采用敏捷开发方式,不断迭代产品版本。
图 1-1软件开发流程示意概述图
第5条 参考文档
- 注:本文参考文档绝大部分可在
- 国家标准目录查询- 全国标准信息公共服务平台 (https://std.samr.gov.cn/gb/gbQuery)
- 搜索文档名称来查阅。
- GB8566-2007计算机软件开发规范
- GB/T 9385-2008 计算机软件需求规格说明规范
- GB/T 32635-2016 网络游戏软件开发流程规范
- GB/T 30264-2013 软件工程 自动化测试能力
- GB/Z 31102-2014 软件工程 软件工程知识体系指南
- GB/T 30971-2014 软件工程 用于互联网的推荐实践 网站工程、网站管理和网站生存周期
- GB/T 32422-2015 软件工程 软件异常分类指南
- GB/T 32421-2015 软件工程 软件评审与审核
- GB/T 20917-2007 软件工程 软件测量过程
- GB/T 36964-2018 软件工程 软件开发成本度量规范
- GB/T 30999-2014 系统和软件工程 生存周期管理 过程描述指南
- GB/T 30847-2014 系统与软件工程 可信计算平台可信性度量
- GB/T 30972-2014 系统与软件工程 软件工程环境服务
- GB/T 32424-2015 系统与软件工程 用户文档的设计者和开发者要求
- GB/T 16680-2015 系统与软件工程 用户文档的管理者要求
- GB/T 32423-2015 系统与软件工程 验证与确认
- GB/T 25000-2016 系统与软件工程 系统与软件质量要求和评价(SquaRE)
- GB/T 38557-2020 系统与软件工程 接口和数据交换
- GB/T 38634-2020 系统与软件工程 软件测试
- GB/T 38639-2020 系统与软件工程 软件组合测试方法
- GB/T 22032-2021 系统与软件工程 系统生存周期过程
- GB/T 39788-2021 系统与软件工程 性能测试方法
- GB/T 41866-2022 系统与软件工程 信息技术项目绩效基准度度量框架
- GB/T 41905-2022 软件与系统工程 软件测试工具能力
- GB/T 41865-2022 软件与系统工程 产品线工程与管理参考模型
- GB/T 29831-2013 系统与软件功能性
- GB/T 29832-2013 系统与软件可靠性
- GB/T 29833-2013 系统与软件可移植性
- GB/T 29834-2013 系统与软件维护性
- GB/T 29835-2013 系统与软件效率
- GB/T 29836-2013 系统与软件易用性
- GB/T 8566-2007《信息技术 软件生存周期过程》。
- GB/T 18491-2010 信息技术 软件测量 功能规模测量
- GB/T 30882-2014 信息技术 应用软件系统技术要求
- GB/T 19668-2018 信息技术服务
- GB/T 38888-2020 数据采集软件的性能及校准方法
- GB/Z 40213-2021 自动化系统与集成 基于信息交换需求建模和软件能力建规的应用集成方法
- GB/T 32854.4-2020 自动化系统与集成 制造系统先进控制与优化软件集成
- GB/T 34980-2017 智能终端软件平台技术要求
第2章 软件产品研发决策管理
产品规划是指产品规划人员通过调查研究,做出有关需求分析、市场导向、竞争对手和产品发展方向的分析报告,制定和维护产品的目标,确保产品满足客户的需要。其具体工作内容包括以下三个方面。
1.软件研发部调研人员通过客户需求分析,获取与产品发展相关的客户意向、市场需求、竞争态势、同类产品等信息,得出该软件产品的市场价值评估。
2.根据调研分析结果,确定产品的主要发展方向;根据客户与公司的需要,确定产品的核心价值、关键属性等。
3.制定产品的长期目标、技术路线、落地计划。
第6条 潜在产品可行性研究及决策程序。
1.软件研发部调研分析人员进行市场调查与分析,提交调研报告:
1)确认软件的市场需求,根据市场需求大致明确软件产品的需求,包括功能、性能、资源需求等方面。
2)撰写调研报告,结合公司战略发展情况、公司经营情况进行综合评估软件产品潜力、市场方向,进行汇报决议,决策是否继续深入。
2.在调查研究的基础上进行可行性研究,提交可行性分析报告:
1)评估产品是否有市场前景,包括目标市场的需求和潜在竞争对手,确定市场可行性;
2)评估所需资源是否可行,包括市场、人员、资金、设备等;
3)评估成本是否适合,包括人力资源、软硬件设备、外包等方面,确定项目的投资和回报;
4)评估技术是否可行,包括开发语言、平台、工具等,确保技术可行性和可用性。
3.软件研发主管领导组织相关人员进行论证,给出论证报告,决定项目取消或继续。
1)汇集市场渠道、售前售后、研发测试等职能人员,论证项目的成本(市场推广、研发资源、研发人力、支持维护等)、收益(直接收益、客户粘性、满足政策等)、风险(市场风险、技术风险、进度风险等)等,给出会议决议
2)输出论证报告,包含但不限于要求,目标,条件、假定和限制,业务可行性(决策主因、现有系统、工作负荷、人员设备、费用支出、局限等),技术可行性(现在技术储备、新技术投入比、人员数质量、计划周期、人员稳定等),经济可行性(支持、收益、投资比、产品周期、回收周期等),社会因素(法律、政策、行业标准、外协要求等)、结论建议。
4.软件研发部根据论证结果制订初步的软件开发计划。
1)软件产品团队组建、职责要求及确认,产品目标、支撑资源、初步周期等确认。
2)拟制软件开发进度计划表,包含但不限于任务阶段、阶段任务分配、阶段资源要求、阶段输出成果、关键节点及里程碑、进度把控措施等
5.根据市场环境、公司软硬件情况预测风险因素。
1)产品的市场窗口周期、政策因素、行业壁垒、技术壁垒等市场风险预测
2)公司的占有市场、潜在市场、公司现有技术、软硬资源情况、项目周期资金、人才配置及稳定等给出风险预测评估。
6.输出项目立项报告书,组织立项评审,输出立项决议。
第7条 迭代产品的规划推进(已有产品)
1.不扩大化的软件产品专项组,对产品的业务分析、设计规划、开发实现、测试评估、发布管理等负责。
2.拟定软件产品的自上而下需求推动、市场导向需求推动响应机制, 进行软件产品增量需求分析及确认。
3.对增量需求拟制需求清单,清单包括但不限于需求来源、需求解读、解决方案、优先级、责任人及开发跟进、计划及完成时间、开发成果、测试确认、版本及发布等,依据清单有计划增量开发管控。
4.有效推进迭代会议,限定每次会议主题、主题干系参与人员、会议时长、会议决议及记录、结果落实跟进等
第3章 软件需求分析
第8条 软件需求分析与制定研发计划流程。
1.深入调查待开发软件产品的市场、客户、用户的状况,了解及剖析产品开发背景、市场竞品、用户习惯等信息。
2.对软件开发需求进行分析,并给出功能模块和详细的功能定义,输出功能清单表、测试用例表(可选)。
3.针对关键功能,做出简单的软件原型,与客户或用户共同研究,直到客户或用户满意为止。
4.对可利用的资源(计算机硬件、软件、人力等)进行估计,制订研发进度计划(可有相应的缓冲时间)。
5.制订详细的软件研发计划。
1)确认每个任务项要有负责人及执行计划。研发过程涉及的人员比较多,可按职能划分比如美工,前端开发,后端开发和测试等,也可以按业务板块划分,比如光伏、储能等,
2)需要负责人来推进和协调任务,任务开始后要根据工作内容和人力资源制定计划,
3)管理人员需要根据计划定期了解进度。
6.制订质量控制计划和测试计划。
1)结合市场要求、行业标准、竞品指标、公司技术储备,设计软件产品的性能指标、安全稳定、软硬件环境等要求,并确定质量管控责任人(通常是测试部门或组),拟制质量要求、质量评估、质量修正等管控计划,输出质量管理计划表或方案书。
2)结合需求报告及测试用例,拟制测试环境、测试方案、测试规划、测试评估等要求,输出测试初步方案。
第9条 软件需求分析要求。
1.必须以运行环境为基础。
2.要求有用户指定人员参加。
3.需求说明书必须明确,并经过用户确认。
第10条 软件需求审批。
1.组织组员撰写及输出软件需求报告书,组织需求评审会议,落实会议决议要求。
2.经评审通过的各项内容形成相应的文档后,须提交软件研发主管部门审核确认。
第4章 概要设计
第11条 概要设计的实施流程。
1.确定目标系统的总体结构。
1)对于大型系统,可按主要的软件需求划分成子系统,然后为每个子系统定义功能模块及各功能模块间的关系,并描述各子系统的接口界面。
2)对于一般系统,可按软件需求直接定义目标系统的功能模块及各功能模块间的关系。
2.功能模块设计
1)给出每个功能模块的内部功能描述,如关键数据、对象模型、逻辑结构等信息。
2)给出每个功能模块的交互逻辑,如数据接口描述,以及外部文件与各功能模块间的关系。
3.设计数据库或数据结构。
1)结合需求报告,给出数据库选型
2)依据需求报告及数据库选型,列出数据表、数据表关系等信息。
4.制订各阶段开发的目标(里程碑)计划。
1)包含但不限于系统框架开发、各功能模块开发、前端UI及交互开发、数据库IO开发、业务测试等计划。
2)确保各个计划的并行关系、依赖关系、里程碑节点的合理可控。
5.输出概要设计及组织评审。
第12条 概要设计要求。
1.在设计目标系统的整体结构时,各功能模块间应满足低耦合度、高复用,而各功能模块内应满足高内聚度。
2.在设计目标系统的总体结构时,选择合理的交互方式,交互方式易用、适配及扩展性好,应降低模块接口的复杂性,以提高目标系统的可靠性。
3.在设计功能模块时,功能模块的作用范围应在其职责控制范围之内,模块内尽量实现内部数据资源共享、逻辑复用,对外封装良好,以API接口、通信接口、IO接口等支持外部交互。必要时给出用例及用例关系图。
4.每一个里程碑计划又可分为详细设计、实现、组装测试、确认测试、发布、交接等阶段。
第13条 概要设计审批。
1.经评审通过的各项内容形成相应的文档后,提交给软件研发经理审核确认。
2.数据库/数据结构设计说明书、概要设计说明书经软件研发经理确认后还须提交给高层主管领导进行审核确认。
第5章 详细设计(系统级、平台级产品)
第14条 详细设计的实施流程。
1.将概要设计产生的构成软件系统的各个功能模块逐步细化,形成若干个程序模块。
1)给出程序模块的逻辑关系、数据结构、关键算法,必要时给出类及类关系。
2)给出UI程序模块的前端交互要求,UI描述或参考图稿。
2.确定各程序模块之间的详细接口信息。
3.撰写拟订单元测试计划,确定代码审核要求及审核责任人。
4.组织详细设计方案评审,落实评审要求。
第15条 详细设计的工作要求。
1.确定程序模块内的类设计要求,按业务要求规划其封装性、外部访问,细化其变量、函数、参数等内容设计。必要时给出类图及类关系图说明文稿。
2.确定程序模块内的数据流或控制流,对每个程序模块必须确定所有输入、输出和处理功能。必要时给出逻辑交互图或交互序列图说明文稿。
3.设计实体关系模型,确定主数据、次数据,并给出数据组织关系,如实体与属性、实体与实体之间的关联关系,必要时给出实体特化和泛化关系图。
4、 设置软件产品设计的数字字段、数据映射关系、数据约束要求等。
第16条 详细设计审批。
1.经评审通过的各项内容形成相应的文档后,提交给软件研发经理审核确认。
2.详细设计说明书经软件研发经理确认后,还须提交给高层主管领导进行审核确认。
第6章 软件实现
第17条 软件实现的实施与要求。
1.对每个程序模块用所选定的程序设计语言进行编码,写出的程序应该结构良好、清晰易读且与设计一致,符合行业、公司编码规范。
2.单元测试,研发人员按单元测试计划对自己编写的程序进行测试,做好测试记录。
3.对编程及单元测试过程进行代码审核、版本管理,主要由高级项目工程师负责。
第18条 软件编码过程管控
1.任务项负责人持续跟踪项目进度,及时发现偏差,并采取措施加以纠正,或反馈高层决策。
2.由于各种原因,可能会出现项目范围、需求等方面的变更,需要及时周知开发人员,进行变更解析,给出变更业务设计方案。
3.编码开发人员与项目团队成员、客户/用户等进行有效的沟通和协调,确保信息的及时传递和理解,并及时反馈风险、协调解决可能出现的各种问题。
4.制定并遵循一套统一的编码规范,保证代码的清晰易读,增加可维护性。编码规范包括但不限于命名规则、注释规则、代码布局等
5.进行代码审查可以确保代码质量,防止代码错误和漏洞。审查者应该对代码进行全面检查,包括代码逻辑、性能、安全性等,做好审查记录。
6.使用版本控制系统(如Git)来管理代码,可以追踪代码的变化,防止代码冲突和版本丢失。
7.尽可能地复用代码,减少重复工作。这可以提高代码的可维护性,降低成本。
8.代码提交前,必须进行单元测试、业务测试,确保代码的正确性和稳定性。部分模块应该进行性能测试和安全测试,验证代码的性能和安全性。
第19条 进度审批。
1.所有代码及功能必须提交软件研发经理审核确认。
2.所有文档必须提交给软件研发经理审核确认。
3.定期提交高层主管领导开发进度报告。
第7章 测试与发布
第20条 测试实施程序。
1.开发组完成单元自测后,由研发负责人填写“测试申请单”连同测试产品清单交与测试人员。
2.相关测试人员根据提交的申请单将源程序、文档等拷贝到测试产品目录中。
3.执行测试计划中要求的所有功能测试、集成测试、压力测试等。
4.测试人员对测试结果进行分析,生成问题列表(Bug List)及评估报告,返给研发负责人。
5.研发人员经过分析、修复并自测完毕,生成Bug修复报告,返给测试人员。
6.测试人员进行反复测试,直至测试通过。
第21条 测试工作要求。
1.结合业务需求、设计文档、测试用例,进行功能覆盖性测试。
2.测试应保证模块间无错误连接,接口交互符合设计要求。
3.应对软件系统或子系统的输入输出能力进行测试,使其达到设计要求。
4.应测试软件系统或子系统正确的能力和经受错误的能力。
5.非功能性测试如性能指标、安全性、可靠性等符合设计或行业要求。
第22条 确认测试实施程序。
1.在模拟的环境中进行强度测试,即在事先规定的一个时期内运行软件的所有功能,以证明该软件无严重错误。
2.执行测试计划中的所有确认测试。
3.使用用户手册,以进一步证实其实用性和有效性,并改正其中的错误。
4.对测试结果进行分析,生成当前Bug列表。
5.反复查找Bug原因,直到修复。
6.对所有文件进行整理。
第23条 确认测试工作要求。
1.全部系统存储量、输入及输出通道,以及进行处理必须预留的余量。
2.将预期结果、测试结果及测试数据全部存档。
3.测试人员将测试清单中缺少的文档列入Bug记录表。
4.对测试中重现与未重现的Bug均要有说明。
第24条 发布过程管理。
1.经测试合格的软件产品由测试人员填写“发布申请表”连同发布文档一起提交给软件研发经理、主管领导进行审核。
2.软件研发经理、主管领导审核发布申请。
3.测试人员将要发布的产品(包括源程序、执行文件及相关文档)放入发布产品目录中并生成安装程序。
第8章 附则补充
第25条 技术支持。
1.针对本软件产品拟定技术支持流程,包括接收问题、分析问题、解决问题和反馈结果等环节。
2.为软件产品建立我司或客户的人员培训机制,提高他们的技术水平和问题解决能力。
3.为该软件产品规范软件安装与配置流程,提供详细的安装和配置指南。
4.编写详细的技术支持文档,收集反馈,记录问题的分析、解决和反馈过程,记录故障处理过程和经验,以便于总结经验和技术交流。
5.确保技术支持过程中的数据安全,防止客户数据泄露或被篡改;制定数据备份与恢复流程,确保在发生问题时能够及时恢复客户的数据,避免数据丢失。
6.客户反馈与跟踪:收集客户的反馈意见,及时改进技术支持工作,并对客户的问题进行跟踪,确保问题得到彻底解决。
7.定期对技术支持工作进行评估,发现存在的问题和不足,提出改进措施,以提高技术支持的质量。
第26条 日常运维(系统级、平台级产品)。
1.制定定期的巡检和监控计划,包括对服务器、网络、应用程序等的状态检查和性能监控,确保系统正常运行,及时发现和解决潜在问题。
2.收集和分析系统日志,包括服务器日志、应用程序日志和错误日志等,以发现异常和故障,为排除问题和优化系统性能提供依据。
3.制定备份和恢复策略,包括定期备份数据和制定应急预案,确保在系统故障或数据丢失时能够及时恢复系统和数据。
4.加强系统安全性,包括设置强密码、定期更新密码、限制访问权限、防范黑客攻击等措施,确保系统数据和应用程序的安全性。
5.定期对系统性能进行评估和优化,包括调整参数、升级硬件、优化数据库等措施,以提高系统性能和响应速度。
6.针对突发故障或紧急情况,制定应急预案和紧急响应计划,确保能够及时、有效地处理紧急事件,减小损失和影响。