软件开发及文档培训(仅供内部使用)深圳市华为技术有限公司版权所有侵权必究1 软件开发过程介绍华为公司的软件开发过程基本上由以下几个开发过程组成: •系统需求分析过程•系统设计过程•软件需求分析过程•软件概要设计过程•软件详细设计过程•软件编码和单元测试过程•软件集成与集成测试过程•系统集成和系统集成测试过程•系统验收测试过程•软件维护过程图一. 软件开发相关的过程示意图:各软件开发过程中应该输出的文档如下2. 软件开发过程详细要求2.1系统需求分析开发者应该根据以下要求参与系统需求分析。
注:如果一个系统分成多个版本开发,可能直到最后一个版本需求才能完全定义。
开发者的计划中应该定义在每个版本中确定的需求子集,每个版本中实现的需求子集。
某个版本的需求分析应该理解为定义那个版本的系统需求。
2.1.1 分析用户的输入开发者应该通过分析用户的输入来理解用户的需求。
这个输入的形式可能是需求报告单、调查、问题/修改报告,原型的反馈,访谈或其他用户或反馈。
2.1.2 操作概念开发者应该参与定义和记录系统的操作概念。
结果应该包括在《操作概念描述(OCD)》文档模板中的所有条目。
2.1.3 系统需求开发者应该参与定义和记录系统应该满足的需求以及验证每个需求已经被满足的方法。
结果应在包括《系统/子系统规格说明书(SSS)》中的所有可能的条目。
根据实际情况,有关系统接口的需求可以在SSS中规定或者在《接口需求规格说明书(IRSs)》中规定。
注:如果一个系统由子系统组成,系统需求分析)中的活动应该同系统设计中的活动叠代进行。
定义系统的需求,设计系统并定义它的子系统,定义这些子系统的需求,设计子系统并定义他们的部件,如此下去。
2.2系统的设计开发者应该按照下列要求参与系统的设计。
注:如果系统分成多个版本开发,系统的设计可能要等到最后一个版本才完成。
开发者的计划中应该定义每个版本中所要完成的设计。
一个特定版本的设计应理解为那个版本中应完成的设计内容。
2.2.1 系统范围的设计决定(System-wide design decisions)开发者应该参与定义和记录系统范围的设计决定(这就是,有关系统运行设计和其它影响到系统部件选择、设计的决定)。
结果应该包括《系统/子系统设计说明书(SSDD)》模板中有关系统范围设计决定的所有内容。
根据实际情况,有关接口的设计可以包括在SSDD中或者《接口设计说明书》中,有关数据库的设计可以包括在SSDD或者《数据库设计说明书(DBDDs)》中。
注:除非在需求中有明确的规定,设计一般由开发者负责。
开发要满足所有的需求并通过系统集成测试来证明需求得到了满足。
2.1.2系统结构设计(System architectural design)开发者应该参与定义和记录系统的结构设计(定义系统的部件,它们的接口,以及它们之间的运行概念)以及系统部件同系统需求之间的跟踪关系。
结果应该包括《系统/子系统设计说明书(SSDD)》中有关结构设计及跟踪性的部分的所有条目。
根据需要,有关接口的设计可以包括在SSDDs或《接口设计说明书》中。
2.3 软件需求分析(Software requirements analysis)开发者应该定义和记录每个CSCI应该满足的软件需求,验证每个需求是否完成的方法,以及CSCI需求同系统需求之间的跟踪关系。
结果应该包括《软件需求规格说明书(SRS)》中所有的条目。
根据需要,CSCIs接口的需求可以包括在SRS中或《接口需求规格说明书(IRSs)》中。
注:如果一个CSCI分成多个版本开发,需求可能要到最后一个版本才能完全定义。
开发者的计划中应该说明每个版本中每个CSCI需求的子集。
2.4 软件设计开发者应该根据以下要求进行软件的设计。
注意:如果一个CSCI分成多个版本开发,可能需要等到最后一个版本才能完全设计完毕。
每个版本的软件设计应该理解为为了实现这个版本的需求而进行的设计。
2.4.1 CSCI范围的设计决定(CSCI-wide design decision).开发者应该定义和记录CSCI范围的设计决定(这就是,有关CSCI的运行设计和其它影响到构成CSCI的软件单元选择和设计的设计决定)。
结果应该包括《软件设计说明书(SDD)》中有关CSCI范围设计决定的所有项目。
根据需要,有关接口的设计内容可以包括在SDD中,也可以安排在《接口设计说明书》中。
有关数据库的设计可以安排在《数据库设计说明书》中。
2.4.2 CSCI结构设计(CSCI architectural design)。
开发者应该定义和记录每个CSCI的结构设计(定义构成CSCI的软件单元,它们的接口,它们之间的运行概念)以及软件单元CSCI需求的跟踪关系。
结果应该包括《软件设计说明书》中有关结构设计及跟踪性的所有项目.根据实际需要,有关接口的设计内容可以包括在《接口设计说明书》中。
注意:如果软件单元又有其它软件单元组成,则CSCI的结构可以根据需要组成多个层次。
例如。
一个CSCI可以被分成三个软件单元,上述每个软件单元又可以分成其他的软件单元,如此下去。
2.4.2 CSCI的详细设计(CSCI detailed design)开发者应该开发和记录每个软件单元的设计描述。
结果应该包括《软件设计说明书》模板的所有项目。
根据需要,接口的内容可以在《接口设计说明书》中,有关数据库访问和操作的软件单元可以安排在《数据库设计说明书》中。
2.5 软件编码与单元测试开发者应根据以下要求进行软件单元实现和测试。
注意:“软件”的含义即包括计算机程序也包括计算机数据库。
“实现"的含义为将软件实现转换为计算机程序和计算机数据库。
如果一个CSCI的开发分成多个版本,软件实现、和单元测试可能要到最后一个版本才能完成。
每个版本的软件实现和单元测试指在那个版本中需要实现的软件单元或部分软件单元。
2.5.1 软件实现开发者应该开发和记录CSCI设计中的每个软件单元。
这些活动应该包括,编码、数据定义、构造数据库,给数据库或其他数据文件赋值以及其他实现设计所需要的活动。
注意:设计中的软件单元不一定与实现它们的代码和数据实体有一一对应的关系。
2.5.2 单元测试准备开发者应该建立测试用例(按照输入、预期输出和评价标准)、测试过程和测试数据来测试每个软件单元。
测试用例应该覆盖单元详细设计的所有方面。
开发者应该将这些信息记录在相应的软件开发文件中。
2.5.3 进行单元测试开发者应该测试每个软件单元对应的软件。
这些测试应该按照单元测试用例和测试过程进行。
2.5.4 修正和回归测试开发者应该根据单元测试的结果进行所需的修正并进行回归测试,更新相关的软件开发文件。
2.5.5 分析和记录单元测试的结果开发者应该分析单元测试的结果并将测试和分析结果记录在相应的软件开发文件中。
2.6 单元集成和测试开发者应该根据以下要求进行单元集成和测试。
注意1:单元集成和测试指将两个或多个软件单元集成起来,通过测试保证它们在一起工作正常,继续这个过程直到每个CSCI中的软件单元都集成和测试过。
因为一个软件单元可能由其它单元组成,一些集成测试在单元测试过程中就可以完成,这里不要求重复这些测试活动。
如果一个CSCI分成多个版本开发,CSCI的单元集成和测试可能要等到最后一个版本才能完成。
2.6.1 单元集成和测试的准备开发者应该建立单元集成和测试的测试用例、测试过程和测试数据(按照输入、预期结果和评价标准)。
测试用例应该覆盖CSCI范围和CSCI结构设计的所有方面。
开发者应该将这些信息记录在相应的软件开发文件中。
2.6.2 进行单元集成和测试开发者应该进行单元集成和测试,测试应该按照单元集成测试用例和过程进行。
2.6.3 修正和回归测试开发者应该根据单元集成和测试的结果修正软件并进行回归测试,更新软件开发文件及其他所需的软件产品。
2.6.4 分析、记录单元集成和测试的结果开发者应该分析单元集成和测试的结果并记录在相应的软件开发文件中。
2.7 CSCI/HWCI的集成和测试开发者应该根据以下要求参加CSCI/HWCI(软件配置项/硬件配置项)的集成和测试活动。
注意1:CSCI/HWCI集成和测试的含义是将CSCI和与之有接口的HWCI、CSCI结合,通过测试来验证它们在一起工作是否正常。
连续进行这个过程,直到系统中所有CSCI和HWCI都已经集成并进行测试过。
这个集成测试的最后阶段是开发者内部的系统测试。
注意2:如果一个系统CSCI分成多个版本开发,CSCI/HWCI集成和测试可能要到最后一个版本才完成。
某个版本的CSCI/HWCI的含义为此版本中的CSCI和此版本中HWCI进行测试以保证这个版本的系统需求得到了实现。
2.7.1 准备CSCI/HWCI的集成和测试开发者应该参与开发和记录CSCI/HWCI集成和测试的测试用例(根据输入、预期输出和评价标准)、测试过程。
测试用例应该覆盖系统范围设计和系统结构设计的所有方面。
开发者应该将软件相关信息记录在软件开发文件中。
2.7.2 进行CSCI/HWCI集成和测试开发者应该参加CSCI/HWCI的集成和测试。
测试应该按照CSCI/HWCI集成测试用例和测试过程进行。
2.7.3 修正和重新测试根据CSCI/HWCI集成和测试的结果,开发者应该做所需要的修正,参加所有需要的重新测试,更新相应的软件开发文件和其他软件产品。
2.7.4 分析和记录CSCI/HWCI集成和测试的结果开发者应该参加分析CSCI/HWCI集成测试的结果。
软件相关的分析和测试结果应该记录在相应的软件开发文件中。
2.8 系统测试开发者应该根据以下要求参加系统测试。
注意1:系统测试用来给用户演示系统需求已经得到满足。
它覆盖《系统/子系统规格说明书(SSS)》中的系统需求和相关的接口需求。
这个测试和集成测试的最后阶段在开发者内部进行的系统测试不同。
注意2:如果系统分成多个版本开发,完整的系统测试可能在最后一个版本才遇到。
每个版本的质量测试应该理解为为了验证此版本的需求已经得到满足而进行的测试。
2.8.1 系统测试中的独立性负责系统测试的人不应该是进行详细设计或软件实现的人。
这并不排除负责详细设计或实现的人对这个过程作出贡献,例如:提供需要了解系统内部实现的测试用例。
2.8.2 在目标计算机上的测试开发者的系统测试应该包括在目标计算机(或其它用户同意的系统)上的测试。
2.8.3 系统测试的准备开发者应该参加参加开发和记录测试的准备、测试用例、测试过程以及测试用例和系统需求之间的跟踪性。
对于软件系统,结果应该包括《软件测试说明书(STD)》中的所有项目。
开发者应该参加准备系统测试需要的测试数据以及通知用户测试的时间和地点。