分享

现实中的软件开发流程

 icecity1306 2014-09-11

为了避免系统设计的频繁变更的问题,软件开发流程被我们聪明的项目经理改了改,将"系统设计"改成了"系统整体设计",把"软件编码"变成了"局部设计与编码"。

这样,当局部设计发生改变的时候,不会影响整体的系统设计,只需要针对局部进行针对性的调整即可,如图 2 6所示。

 

1. 项目研发小组与测试小组

  • 软件研发小组与管理

软件开发管理是项目管理的重点,可对成本、人员、进度、质量、风险等进行分析和管理。我们在软件开发管理过程中实施严格管理标准。对于本项目的应用开发来说,建议成立在整体项目领导小组领导下的应用系统开发执行管理小组,依照项目管理相关制度进行监督管理以及重要决策。

软件研发小组负责软件实施过程中的需求分析、架构设计、数据库设计、视觉UI设计等工作,完成软件整体的代码开发,具体由需求分析师、架构设计师、开发工程师、数据库工程师、UI工程师组成。由组长全面负责和协调软件开发过程中的各项工作。

我们严格遵循著名软件工程专家B.W.Boehm总结的软件开发7条基本原则:

1)用分阶段的生命周期计划严格管理;

2)坚持进行阶段评审;

3)实行严格的产品控制;

4)采用现代程序设计技术;

5)结果应能够清楚地审查;

6)开发小组的人员应该少而精;

7)承认不断改进软件工程实践地必要性。

根据项目实际情况,重点将软件配置管理、软件质量管理、软件风险管理及开发人员管理四方面内容导入软件开发的整个阶段,从而对整个开发过程进行有效全面的全过程控制。

在开发过程中,我们严格做好版本控制,对版本进行唯一标识,由两个或多个独立工作的人员同时对一给定软件项进行更新,标识并跟踪所有的措施和更改。在软件质量上,我们控制所有过程的质量,持续改进,定期评价质量体系,对软件的正确性、健壮性、效率、完整性、可用性、可理解性、可维修性、可测试性、可移植性、可再用性等诸多因素进行考量。

对于软件的评审,我们会设定评审目标和评审基准,定期召开评审会议,形成决策和记录报告。

  • 软件测试小组与管理

软件测试是软件质量保证的一个重要环节。本项目将按招标要求和项目领导小组的要求,成立测试小组,并提交测试小组人员名单给用户方,提供正式更新版本前按测试流程进行严密测试,版本测试后刻录在光盘上并打印提交测试报告给用户,在用户测试环境通过后双方签字确认。

按照开发阶段,我们把测试划分为单元测试(又称模块测试)、集成测试(又称组装测试)、系统测试、确认测试和验收测试。每个阶段的测试都包含测试计划、测试过程和测试结果。 制订测试计划时,我们将确定测试范围、方法和需要的资源等。在测试过程中,我们详细描述与每个测试方案有关的测试步骤和数据,包括测试数据及预期的结果。最后,我们会把每次测试运行的结果归入文档,如果运行出错,则应产生问题报告,并且必须经过调试解决所发现的问题。

关于软件测试方法,我们建议开发文档和源程序使用走查的方法。单元测试采用白盒测试。集成测试采用近似灰盒测试的方法,系统测试、确认测试和验收测试使用黑盒测试的方法。根据我们公司的具体情况,我们黑盒功能测试大部分是手工测试,web系统的测试部分采用WinRunner录制脚本测试。性能(负载压力测试)测试采用LoadRunner。此外,根据系统的要求及测试目标,会在模块(单元)测试部分,性能测试部分、数据库测试等阶段自己开发一些测试程序来辅助测试。测试管理工具是公司自行开发的TestManager,用于管理测试需求、计划、用例、用例执行、问题、测试结果分析、文档、以及统计项目测试情况、辅助生成测试报告等。

测试用例的编写,包括用例编号、用例标题描述、软件名称、需求点编号、输入说明、输出说明、环境要求、特殊说明、执行优先级、版本、编写人、编写时间、审核人、审核时间等。

在测试操作工作和相关文档工作完成后,会对测试工作进行复查和评审。由测试项目负责人完成软件的测试报告文档,对测试的相关数据进行分类统计和分析,并组织和开发小组的交流会,就测试过程、问题解决情况、软件评价等进行沟通。然后测试报告由质保部组织评审,并送主管经理审批。最终系统的验收测试,需要供需双方按照项目任务书或合同、根据约定的验收依据文档对整个系统进行测试与评审,然后完成验收测试报告,并将其作为系统验收的参考。

软件系统的测试结果以《测试报告》的形式体现,主要包括项目概况;测试计划/方案及测试过程(包括人员分工及日程安排、方案、工具、环境、阶段、版本等等);测试用例及执行情况;测试问题记录及问题统计;软件能力评价;软件存在的缺陷和限制;建议和意见。

测试小组负责软件实施过程的各种验收测试工作,对系统的稳定性、可扩展性、安全性、功能性等各个方面对系统进行评测。最终由我方测试验收人员、技术人员以及客户技术人员、业务人员、外聘的验收测试人员共同进行测试计划与实施的检查和验收。

2. 系统测试步骤与上线管理

  • 系统测试与管理

软件测试是软件开发的一个重要环节,同时也是软件质量保证的一个重要环节。所谓测试就是用已知的输入在已知环境中动态地执行系统(或系统的部件)。测试一般包括单元测试、模块测试、集成测试和系统测试。如果测试结果与预期结果不一致,则很可能是发现了系统中的错误,测试过程中将产生下述基本文档:

  • 测试计划:确定测试范围、方法、和需要的资源等。

  • 测试过程:详细描述和每个测试方案有关的测试步骤和数据(包括测试数据及预期的结果)。

  • 测试结果:把每次测试运行的结果归入文档,如果运行出错,则应产生问题报告,并且必须经过调试解决所发现的问题。

本项目将按招标要求和项目领导小组的要求,控制软件版本,项目成立测试小组,并提交测试小组人员名单给与用户,提供正式更新版本前按系统测试流程进行严密测试,版本测试后刻录在光盘上并打印提交测试报告给用户,在用户测试环境通过后双方签字确认。

按照开发阶段划分可分为:单元测试(又称模块测试)、集成测试(又称组装测试)、系统测试、确认测试和验收测试,在各个测试阶段都会充分对性能和功能进行检验。我方会提供性能测试工具,对系统的性能进行模拟环境测试。

  • 单元测试

针对软件设计的最小单位-程序模块进行正确性检验的测试工作。其目的在于检查每个程序单元能否正确实现详细设计说明中的模块功能、性能、接口和设计约束等要求,发现模块内部可能存在的各种错误。

  • 集成测试

在单元测试的基础上,将所有的程序模块进行有序的、递增的测试。集成测试是检验程序单元或部件的接口关系,逐步集成为符合概要设计要求的程序部件或整个系统。

集成的方式一般采用增量式集成,程序一段一段地扩展,测试的范围一步一步地增大,错误易于定位和纠正。主要有:增量式集成方式:自顶向下集成、自底向上集成等。

软件集成的过程是一个持续的过程,会形成很多个临时版本,在不断的集成过程中,功能集成的稳定性是真正的挑战。在每个版本提交时,都需要进行冒烟测试,即对程序的主要功能进行验证。

  • 确认测试

确认测试是通过检验和提供客观证据,证实软件是否满足特定预期用途的需求。确认测试是检测与证实软件是否满足软件需求说明书中规定的要求。

  • 系统测试

系统测试是为验证和确认系统是否达到其原始目标,而对集成的硬件和软件系统进行的测试。系统测试是在真实或模拟系统运行的环境下,检查完整的程序系统能否和系统(包括硬件、外设、网络和系统软件、支持平台等)正确配置、连接,并满足用户需求。

  • 验收测试

按照项目任务书或合同、供需双方约定的验收依据文档进行的对整个系统的测试与评审,由客户用户参与配合,可通过实际数据进行测试检验,决定是否接收或拒收系统。

测试应完成的工作主要包括:

  • 明确验收项目,给定验收测试通过的标准;

  • 确定测试方法;

  • 决定验收测试的组织机构和可利用的资源;

  • 选定测试结果分析方法;

  • 制定验收测试所用测试用例;

  • 审查验收测试准备工作;

  • 执行验收测试;

  • 分析测试结果;

  • 阐明验收测试结论,决定通过验收或是拒绝;

  • 按照测试实施组织划分。

3. 系统上线管理

在系统上线阶段,我公司能够保证程序上线的正确性以及移交手续的完备性,并做出以下承诺:

  • 经测试满足上线运行条件的程序才可上线运行,上线之前先提交上线相关文档,包括:产品功能文档、操作说明、上线相关脚本、上线计划和操作步骤。我公司将在客户相关部门的同意和配合下方可完成上线工作。

  • 程序上线前将完成好上线前的准备工作,严格按照上线操作步骤执行,不会在上线过程中对上线工作随意修改,不会在上线过程中现场修改代码,如发生以上现象按该项开发工作未按时完成处理。

  • 上线工作完成后将形成相关上线报告和观察报告,详细记录上线过程,备案。同时对上线程序进行跟踪观察,并按时提交《软件上线观察报告》。

  • 对于新增业务以及较大修改变动的程序,上线之前将对客户相关人员提供培训,并提供相应培训文档。

  • 上线观察期间,我公司将安排有专人配合维护和程序开发,不会擅自离开岗位。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多