项目开发基本流程

一项软件开发、测试的任务如同一次航行,第一个步骤是需求分析,就象确定航行的目标,包括先要到哪里,然后去哪里,怎样才算完成航行,需要那些准备,会遇到那些风险?这是最重要的一步;第二个步骤是软件、测试设计,就象确定航行的方案,包括航行的路线、用什么船,遇到紧急情况该如何处理?这是航行的前期准备;第三个步骤是编码、测试的执行,就象船要启航了,万事俱备,这时要做的就是船长、大副、水手们的协同工作,保证航行的安全、定期完成,而航行的质量如何,这时候都可以感觉出来,如果前期准备的充分,这时候就可以有备而无患;最后一步是总结、维护,对于航行来说,这次航行算是成功完成了,但是航行中肯定遇到了不少问题,也得到了好的经验,如什么引擎可以提供速度和舒适度,什么舱最容易出问题,下次要注意,就需要总结归纳,下次的航行就不会遇到这样的问题。

   每一个步骤又可以分为几个子步骤,对于需求分析,不是说根据客户的需求文档就可以直接产生目标需求文档的,首先要把原始的需求转化为规则的需求(产品测试规格),因为对开发和测试来说,客户的需求能够理解,但通常不能准确的描述。对于规则化后的需求,还是一团糟呢,这时候需要分解这些需求(通过测试特性建模工程方法),把一个系统分解为不同的特性就清晰多了(产品特性)。分解后的需求,也还是原始的需求,只是有个最粗略的描述,对于开发、测试还是无法依据,所以第三个子步骤是需求的细化(通过测试类型分析工程方法、关联图分析工程方法、),把每个需求细化成需求规格(特性测试规格)。需求分析时段还有出开发计划、测试计划。
   对于软件设计阶段来说,软件设计主要是通过某种设计方法和设计模式将软件模型化、结构化、对象化,对开发来说,主要包括总体设计和详细设计,总体设计确定了软件架构和设计模式,详细设计确定了每个对象的功能实体和算法;对测试来说,测试设计包括测试项的设计和用例的设计,测试项的设计是通过某些测试设计方法(如等价类划分、边界值分析、功能图分析等),把测试规格转化为测试项,测试项即用例的主题。用例设计是根据测试项,设计测试环境、配置、步骤、预期目标、级别、测试手段等,用于后续测试。
   在编码、测试执行阶段,编码主要是实现函数、对象的功能、接口,编码完成后还要进行模块测试、白盒集成测试等,然后交付到测试部门,测试执行主要是黑盒测试,就是执行用例,完成测试过程。在测试中发现缺陷,要进行缺陷分析,缺陷解决后进行回归测试。(缺陷跟踪和管理)
   在总结、维护阶段,主要是对前面步骤中出现的问题、经验教训进行归纳总结,对软件中出现的问题进行维护、回归测试,发布新的版本。(开发报告、测试报告、软件测试度量报告)