软件的质量高低取决于其是否符合包括功能性、可靠性、易用性、效率、可维护性、可移植性等在内的六个方面的要求。而要达到这六个方面质量要求,就必须对软件开发过程中各个环节进行全过程的项目管理,从需求分析、设计、编码、测试到上线验收进行控制。根据软件工程的生命周期,软件项目可分为项目立项、启动、需求分析、系统设计、系统开发、系统测试、系统上线、项目验收和上线后评估等9个阶段进行。加强软件项目管理,就是以软件工程的各个环节为管理主线,将动态项目管理贯穿其中,通过对软件开发的项目范围、项目进度、项目质量、项目沟通、人力资源、项目成本六大核心要素的集成管理,实现软件开发管理效能的最大化,从而大大提高软件的开发质量。
准确把握软件需求
软件开发项目的提出,应由迫切的业务需求来驱动。很多不成功的软件项目,往往是由信息技术部门提出,按照技术人员的思路主导开发,并理所当然地被认为能够在业务部门取得良好的应用效果。这样的项目由于得不到业务部门的理解和支持,脱离业务需求,多数面临失败或半途而废的命运。因此软件项目业务需求的迫切性、技术实现的成熟性、经济效益的可行性等方面的因素,都是考虑的要素,将对项目的成败产生直接影响。
正确的做法应该是,由软件的需求单位根据自身业务需要,向信息技术管理部门提出软件项目的立项建议,对立项的目的、业务需求范围、技术经济指标、开发周期要求等方面做简要概述,再由信息技术管理部门组织业务专家和信息技术专家组成联合专家组,进行项目立项的可行性论证。通过专家组论证审核后,项目提出单位需要进行开题设计,进一步明确软件开发范围、技术路线、进度安排、经费预算、研究人员组成、合作队伍,并以此为基础编制完成开题设计书。信息技术管理部门组织专家组对开题设计进行论证,只有业务需求合理、技术路线可行、开发队伍落实的项目,才能通过专家组审核,进入项目启动阶段。
软件开发过程的监督和管理
软件开发项目具有建设范围难界定、技术含量高、人员流动快、协作性强、开发成功率低等特点。目前国内对软件项目的监理制度尚不规范,对软件开发仍然缺乏有效控制。因此由企业的信息技术管理部门设立软件监督岗位,加强对软件项目的开发过程管理,就显得非常必要。
软件监督的主要职责是在项目的进行过程中,协调业务需求部门和软件开发方的关系,监控软件开发任务的执行情况,给开发人员和管理层提供反映软件过程质量的信息和数据,提高项目透明度,从而保证项目按照计划实施,实现预期目标。软件监督应具备以下三方面的基本素质:
● 具有较强的工作责任感和良好的沟通能力;
● 熟悉业务管理流程,掌握软件开发流程、开发规范以及相关标准;
● 具有软件开发项目的建设和管理经验,掌握项目管理知识;
软件监督的工作任务主要有:
● 确保软件按照业务需求方确认的范围进行开发。
● 保证软件开发进度符合双方确认的计划指标。
● 保证软件开发过程中存在的不符合要求的问题能够及时得到沟通和处理,必要时需要将问题反映给管理层。
● 确保项目组中软件开发人员队伍相对稳定。
● 保证软件开发过程和开发出来的软件符合相应标准和规范。
● 收集软件开发过程中的成功经验,为企业提供软件开发过程的有效控制方法和规范。
1.监督管理的范围
《需求分析说明书》是对软件开发范围的书面表达依据。由于《需求分析说明书》往往是采用软件设计的术语编写,因此常常令计算机背景知识较少的业务需求方难以理解,也就很难发现需求报告中与实际需求不符之处,更难提出建设性的意见。
软件监督要对软件开发范围进行管理,首先要确定双方都能认可的《需求分析说明书》。如要求软件开发方对《需求分析说明书》做出进一步更详细的解释,编制业务模型,以便用户方准确地理解《需求分析说明书》的内容,能及早地发现需求与实际的偏差。这也是对需求分析工作的总结与确认。
在项目需求分析阶段,双方必须全面地、尽可能细致地讨论项目的应用背景、功能要求、性能要求、操作界面要求、与其他软件的接口要求,以及对项目进行评估的各种评价标准。
《需求分析说明书》完成后,软件监督应组织项目组与业务需求方共同讨论,听取业务需求方的意见和建议,并进行相应的修改完善。各方确认《需求分析说明书》内容后,需在说明书上签字确认。
在软件开发过程中,双方应严格按照签字确认的《需求分析说明书》中规定的业务范围进行开发。有些需求可能在项目初期很难确定,在开发过程中需要不断地加以修正,项目软件监督要及时与用户充分沟通,建立可以直接联系的渠道,共同进行需求确认,保证项目范围可控。
2.进度管理
为确保项目按时、按量、保质完成,必须控制任务和跟踪里程碑。按照软件项目的开发规律,将软件开发过程分为几个重要阶段,对这几个阶段的关键事件设立里程碑进行跟踪管理。项目进度管理可以通过以下方式完成:
● 制定项目里程碑管理运行表(里程碑管理表的主要内容见表1)。
● 定期举行项目状态会议,由软件开发方报告进度和问题,用户方提出意见。
● 比较各项任务的实际开始日期与计划开始日期是否吻合。
● 确定正式的项目里程碑是否在预期完成。
从软件项目实施的过程来看,很少有一个项目是完全按照实施计划来进行的,因为再好的计划也不能完全预见所有的问题,并事先制订出对策。计划可以调整,但是调整必须合理,并得到业务需求方和管理层的批准。当有问题发生时,其直接的表现就是实施结果偏离了原来的计划和目标,在这种情况下,软件监督就要及时发现这种偏离,并分析这种原因,如果是因为原来的计划和目标制订的不合理,或者发生了预料之外的情况而又无法克服,这样就必须调整计划和目标。
3.沟通管理
信息系统本身就是沟通的产物。软件开发过程实际上就是将手工作业转化成计算机程序的过程。软件开发的原料和产品就是信息,中间过程传递的也是信息,而信息的产生、收集、传播、保存正是沟通管理的内容。可见沟通不仅仅是软件项目管理的必要手段,更重要的,沟通是软件生产的手段和生产过程中必不可少的工序。
软件开发的柔性标准需要沟通来弥补。软件开发不像加工螺钉、螺母,有具体的标准和检验方法。软件的标准柔性很大,比如在用户的心里好用是软件成功的标准,而这个标准在软件开发前很难确切地、完整地表达出来。因此,开发过程项目组和用户的沟通互动是解决这一现实问题的惟一办法。
软件监督要有效地安排开发方软件人员与需求方使用人员的交流,保证有畅通的交流渠道。制定完善的项目汇报制度,明确沟通时间、频率和渠道。按照项目汇报制度定期组织项目组向业务需求方和管理层汇报,包括项目进度计划、已完成工作、与计划的比较、存在的问题、措施和建议以及下一步工作计划等。
4.软件版本管理
目前的软件开发是团队开发的时代,软件开发技术更新迅速,开发人员流动频繁,因此对软件版本的管理就显得尤其重要。在软件开发的过程中,在多人共同开发一个软件时,会出现多人同时修改软件的情况,这是不可避免的,由于部分功能模块版本可能要进行不断地升级完善,而老的软件版本又没有即使更新,随着时间的推移,开发人员对自己机器上的不同版本间的差异就会模糊不清。另外由于软件开发工期的压力,开发人员只将注意力集中在设计和编码上,未将文档纳入到版本控制中。为了解决这些问题,软件监督就要注意跟踪记录整个软件的开发过程,包括软件本身及其相关文档,重视代码的一致性。这一工作可以通过应用软件版本管理的工具软件实现,如Microsoft公司的Visual SourceSafe等对源代码和整个项目进行管理,从而建立正常的软件版本管理机制,
把握正确的验收方法
软件项目验收是对软件项目成果的检验和确认,也是对软件项目范围的再确认。软件验收应是一个过程的概念,包括验收前的系统测试、数据移植、系统上线和正式验收四个阶段。
1.系统测试
系统测试是对系统进行全面的测试,应在测试环境中进行,以确保系统的功能和技术设计满足企业的业务需求,并能正常运行。系统测试阶段应包括以下主要流程和工作内容:
(1)制订测试计划,包括编制测试用例,建立测试环境。
(2)测试。在测试环境中,项目组根据需要,对系统依次进行单元测试、集成测试、压力测试和用户接受测试,记录测试结果并由相关测试人签字确认,编制相应的测试报告。对于未通过测试的内容,项目组应查找失败的原因,并修改相应程序或设置,重新进行测试。除了进行充分的系统功能测试,测试应包含与内部控制相关的测试内容,如系统认证和授权、交易完整性及数据真实、完整性的有关功能。
(3)提交测试报告、用户确认签字。项目组撰写测试报告,将测试报告提交给各相关用户,用户应在测试报告上签字确认。
2.数据移植
新系统上线时如需要将原始数据移植到新系统,则应完成以下主要工作内容:
(1)制订数据移植/转换计划。除了要定义数据收集的格式、范围、进度外,还要考虑系统接口的影响,并建立了数据移植完整性和准确性测试方法以及意外事件处理程序。
(2)数据收集。如果项目实施涉及到数据收集,应由数据收集小组根据数据收集格式,对数据进行收集,数据收集小组在收集数据时应培训业务部门的数据提供人员,以确保数据提供人员了解和掌握对数据收集的各项规定和要求。
(3)数据移植前的测试。在测试环境中对数据移植方法进行测试,书面记录测试结果,解决测试中发现的问题,进行问题记录并归档。
(4)数据导入并核查结果。
项目组成员将数据导入系统,并在导入后按照事先制定的数据移植完整性和准确性测试方法对系统中的数据做进一步的核查,确保导入数据的质量。如有意外,按照事先制定的意外事件处理程序处理,并留下记录。数据移植完成之后,用户应对数据移植结果签字确认。
(5) 数据移植后要进行适当时间的试运行,确认数据移植的真实性和完整性。试运行时间视具体系统的规模、影响程度而定。对影响较大的系统,至少应试运行三个完整的月结周期。
3.系统上线
系统上线阶段应包括以下的主要流程和工作内容:
(1) 上线前准备工作。在上线前,软件开发方应制定系统上线计划,包括上线检查清单、上线支持人员、退回机制等,并提交《上线申请表》。系统上线计划和《上线申请表》应经过信息技术部门和业务部门管理层的正式批准,并通知各相关部门。
(2)系统上线。所有的上线准备工作做好之后,由软件监督人员确认上线系统版本正确性后,与用户确认系统上线时间,下达上线指令。系统上线操作人员将最后版本的系统程序移植到生产环境。
4.正式验收
正式验收前,软件开发方应向信息技术管理部门提交软件开发过程中各阶段性文档,包括需求分析说明书、概要设计说明书、详细设计说明书、数据库设计说明书、源程序代码、可供安装使用的系统安装程序、系统管理员手册、用户使用手册、测试计划、测试报告、用户报告、数据移植计划及报告、系统上线计划及报告、用户意见书、验收申请等。
信息技术管理部门接到验收申请后,组织专家对项目进行初审。初审通过后,组织管理层领导、业务管理人员和信息技术专家成立项目验收委员会,负责对软件项目进行正式验收。
软件监督应根据软件开发方在整个软件开发过程中的表现,向验收委员会提出全面的软件监督报告,并根据开题设计书、软件开发合同以及《需求分析说明书》,制定验收标准,提交验收委员会。信息技术管理部门组织由验收委员会、软件监督、软件开发方参加的项目验收会,软件开发方以项目汇报、现场应用演示等方式汇报项目完成情况,验收委员会根据验收标准对项目进行评审,形成最终验收意见。
链接:软件质量的六个考核要素
1. 功能性: 满足用户的要求,在预定环境下能够完成预期的功能。
2. 易用性: 用户容易理解和使用功能,操作方便,符合用户业务习惯。
3. 可靠性: 软件按照设计要求,在规定时间和条件下不出故障,具有异常捕获功能并提供异常处理与恢复功能。
4. 效率: 降低系统资源的开销,响应时间快,提高用户工作效率。
5. 可维护性: 遵从统一的标准和规范,编码具有良好的可读性。为满足用户新的要求,或当环境发生了变化,或运行中发现了新的错误时,能够对一个已投入运行的软件进行相应诊断和修改。
6. 可移植性: 一个软件(或软件的部分功能模块)能再次用于其他相关联的应用。