刘红
(上海微波设备研究所 上海市 200000)
近年来,我国软件行业飞速发展,再加上我们正处在“互联网+”的信息化时代中,因此软件的质量控制变得尤为重要。软件开发过程中的质量控制如果能够做到位,那么在后期软件使用的过程中,软件的使用寿命会相应增长,软件维护成本也会降低。据统计,连世界一流的软件开发公司——“微软”,其软件开发的成功率也不足30%。而软件开发的成功与否,除了要有必要的方法、工具和技术措施外,严格的质量控制和严密的管理必不可少。
世界上任何事物都具有两面性。企业中,软件办公所带来的好处无需多言,但随着软件的可选择性越来越多,软件的使用寿命和质量受到了越来越多的关注。因此,对软件开发者的要求也越来越高。如何提高软件的竞争力,是很多企业和软件开发者密切关注的问题。然而,现在很多软件开发商没有一套完整的软件开发管理模式,在软件开发中职责划分不清晰,后期维护制度不完善等等,致使用户在使用过程中,会面临无休止的后期服务,为了改善目前的这种现状,务必要加强软件开发过程中的质量控制。
一个完整的软件产品包括:前期调研相关的文档资料、数据、程序和代码以及后期维护的标准。其中文档编写在整个软件开发和后期维护中占了很大比重,但很多软件开发人员都把重点放到了程序调试上,从而使质量控制受到影响。
根据软件开发过程中的任务侧重和先后顺序,可以分为以下几个阶段:客户需求分析、性能确定、总体设计和详细设计、集成、代码编写、测试、修改bug,定版和上线等。阶段划分的目的是可以很清楚的定义每个阶段负责人,相应负责人应确保按时提交任务,后续开发中出现问题时也便于明确各个角色的责权范围,各阶段都是一个质量控制点,软件开发的过程贯穿着这些质量控制点,从而形成软件开发质量控制体系。
逐步提高软件质量是软件开发的主要目标之一。“反映软件产品满足规定需求和潜在需求能力的特征和特征的总和。”这是国际化标准组织ISO 对软件质量的最新定义。质量控制贯穿于软件设计项目的全过程,而不仅仅是控制软件的最终结果。随着软件的规模和作用的不断增加,人们对软件质量的要求也就不仅仅体现在软件的功能和作用上了,而是更强调软件整体的评价,比如:软件的功能性,易用性,可靠性,是否高效,可维护性和可移植性。而在软件开发过程中,其中软件的可维护性是指在软件使用过程中,能够根据业务的发展对正在使用的软件进行简单的修改来满足要求,而不用对程序进行大刀阔斧的改造,这就要求在软件的开发过程中,遵循统一的标准和规范。软件的可移植性是指该软件的部分程序不止仅能适用于目前的软件,其他软件也可以借鉴和开发。就目前的软件开发市场来看,软件的可维护性和可移植性往往是容易被忽略的。
图1:计算机软件的应用
图2:软件技术分层
目前软件开发中普遍存在的问题有很多,其一就是不能明确分析软件的需求。很显然,如果不能明确客户的需求,那么从一开始就偏离了软件开发的方向,达不到最终想要的效果。而明确软件需求需要软件开发者和客户之间有良好有效的沟通和交流,这对软件开发者的交际能力有很高的要求。不仅如此,在软件开发的过程中也要不断跟客户交流,及时按照客户的意愿调整开发方向。
第二个普遍问题就是软件开发管理不规范,出现问题后不容易修复。软件开发往往是一个团队共同完成的,各司其职。这样固然节省时间,但会造成一个问题,就是一旦程序出现问题,每个人只对自己负责的那部分有充分的了解,而且也只有软件开发者可以对产生的问题进行解决。
软件开发中遇到的第三个问题就是开发者疏忽质量控制。由于软件开发是团队之间的协作,出现问题往往不止是一个人的责任,再加上公司绩效很大程度上都是按照项目进度结算的,如此一来,就会导致软件开发者没有按照需求去控制软件质量,而一味追求效率和收益。
另一个重要问题是企业缺乏高素质的管理人员。就目前我国软件开发的现状来看,企业普遍缺乏成熟的软件开发管理体系,这也是导致开发者疏忽质量控制的重要原因,因为没有管理者系统把控软件质量问题。部分有研发管理人员的企业,其素质和能力也不足以支撑起软件的质量监控和管理机制。
软件质量的核心还是软件技术问题。我们知道,计算机分为硬件和软件,其中软件技术就是计算机为了达到使用者的目标,按设定的编程,构建完善的逻辑结构,编写程序,从而提高人们的工作效率。也就是说,软件的意义在于用逻辑编写成代码,从而形成一套完整的程序,来减轻人本身多的工作量,满足人们的计划和需求。而软件质量是衡量一个软件是否优秀的重要指标。在软件开发时,也需要关注软件的功能需求和功能正确性。
在实际应用中,软件系统分布于项目的各个方面,随着项目的开发,企业业务的不断扩大,软件之间的交互也变得越来越复杂,再加上我国目前软件发展情况,区域不平衡问题会一直持续下去,这给从软件技术层面提高软件质量带来了很大的问题。软件技术的发展方向是创新化和智能化,要获得用户的认可,关键问题在于如何研发一个具备客户需求,质量过硬,使用时间长并且市场普及率高的软件。除了提高软件质量之外,重视客户体验也是软件开发的另一重要研究方向,这方面此处不再过多赘述。
除此之外,开发软件应用范围小也是目前软件开发中容易遇到的问题。每个团队开发的软件都具备自身特有的特性,开发的软件能否适用于其他系统,也就是上文提到的软件是否具有可移植性,就变成了很能影响企业效率的事情。每一个需求都要做一套完整的软件开发,这种不必要的重复性工作,无疑对企业会造成人力和财力的浪费。
最后,软件测试的随意性也是导致软件质量问题的一大原因。为了后期软件的正常使用,软件测试在软件质量控制中也是非常重要的一环。而许多企业目前面临的问题是,测试人员不够专业,或者测试人员本身对软件的熟悉程度也不够,对软件测试工具使用次数少,软件的很多潜在问题无法在测试中暴露出来,并且,市场目前还没有建立完善的测试管理制度,最终导致测试结果不准确。
根据上文提到的,目前企业中存在的影响软件质量的几个问题,提出了以下几个方面的软件开发质量控制的措施:
在与客户积极的进行需求分析时做好评审工作,能够做到组织专门的人员和机构来进行评审,评审主要包括内部评审和外部评审,其中,所谓的内部评审就是对企业内部的负责人进行管理和培训,内部评审工作的好坏直接影响到后续项目进行的效率问题,评审过程要严格书面记录审核要点,必要时按照相关需要对审核的程序进行安排。外部评审指的是请外面的专家或者业界有影响力的同行对整个软件技术的质量进行审核。评审后定义各部门工作的质量标准,把内部的所有规定都尽可能的变成文字记录下来,以便人们按照规定去工作。管理人员分配好各部门的职责和任务,让每一位负责人对自己要完成的工作有把握,根据项目自身的特点,从产生质量问题的风险程度提前采取相应的预防措施,并在软件开发的过程中提前采取预防措施,减少错误率。同时与客户的沟通不能间断,以便随时根据客户的要求修改开发方案。
在软件开发过程中,需要一位高素质的管理人员来统筹项目工作,把握项目走向,总揽大局。管理人员的责任是从始至终的。比如,需求分析阶段要制定和设计文档模版规范;软件开发阶段要确定要执行的编码规范和每人要负责的任务;还要保证程序编写过程中开发平台的正常运行和统一;软件测试过程还要建立质量审计制度等。
软件测试一般包括这几个阶段:单元测试、集成测试、确认测试和系统测试。为了保证测试效果,应该对测试过程制定一个统一的规范。软件测试是软件开发的最后一道关口,为了避免软件上线后造成不必要的错误,在测试过程中,一旦发现问题,应立即与测试领导者联系,让软件开发人员对错误进行及时改正。
如何提高软件技术也是非常重要的一个方面。最早研究软件技术的国家是美国,虽然软件技术在我国起步比较晚,但近些年在技术人员的不懈努力下也有了突飞猛进的发展。目前,我国软件市场上出现了很多优秀的软件开发的方法和相应的工具。比如近两年非常火的,在国内的软件领域也已经很成熟的快速原型法和瀑布模型。众所周知,软件技术的更新换代速度非常快,各种各样新的技术不断涌现,在软件开发中,一些很新潮的编程思想和编程逻辑也越来越广泛的被应用进去。举例来说,软件技术一个新的研究方向就是面向对象的软件工程方式和面向用户的软件开发技术。这个方法最初是由国外传进来的,一开始并不适用我国的软件技术发展,而在后续不断修改后慢慢已经适应了我国的编程环境,从而变得越来越主流。软件技术分层如图2所示。
实践证明,良好的软件开发质量控制是有利于降低开发和维护成本,是确保软件达到预期效果的最基本保证。想要提高软件的质量,质量问题应该贯穿始终,企业应该着重建立完善的质量控制体系,调查软件开发中,造成软件不合格的原因,做出相关分析,以防止此类问题再发生;保证软件生命期各个阶段的软件质量,重视对软件各个开发阶段的评审,制定相关措施对质量控制中的相关不良规定进行纠正。对质量控制体系的整体过程、质量记录和服务报告等情况都要充分的考虑,对可能会产生不合格品的风险程度提前预防。加强软件测试,不能等到开发后期才去解决质量问题。企业各方也应协同合作,为提高软件质量共同努力。