软件质量控制方法研究
2012-01-09周智海史静涛
宋 坤,周智海,史静涛
(国家海洋技术中心,天津 300112)
软件质量控制方法研究
宋 坤,周智海,史静涛
(国家海洋技术中心,天津 300112)
在现代社会中,软件应用于多个方面,几乎所有海洋环境监测系统集成项目都要涉及到应用软件的开发。而将系统化的、严格约束的、可量化的方法应用于软件的开发、运行和维护,即将工程化应用于软件,是确保工程项目顺利完成的基础。基于对软件工程相关技术、管理方法的分析,结合以往项目开发中的经验,针对“南海海洋动力环境数据集成与应用技术系统”的开发,使用了可行的开发过程管理方法及工具,实现了对系统开发过程的管理及软件质量控制。
软件工程;软件质量;过程管理;版本控制;全程软件测试
软件工程是研究和应用如何以系统性的、规范化的、可定量的过程化方法去开发和维护软件,以及如何把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来。
软件项目开发是针对用户方的要求,通过调研进行需求分析,设计程序编码并进行测试和文档编写,最后实施安装及客户培训。在项目通过验收后,仍要继续为客户提供技术支持、服务调查等,这样不但有利于针对客户反映的问题对软件产品进行改进,也是为下次合作奠定基础。
目前国内大部分的软件项目开发团队,开发人员较少,大多数情况下是一名开发人员从始至终负责一个项目,还要同时负责多个用户的维护工作。这种情况下,几个项目交叉共享研发团队是较为可行的方式。对于项目研发团队来说,要在完成几个项目的开发同时,确保每个项目的质量,就更需要对软件工程的深入理解,并采用合适的工具和方法加以应用。
本文依据对软件工程相关技术、管理方法的分析,以及在项目开发中的经验,结合“南海海洋动力环境数据集成与应用技术导流”的开发,介绍了对系统开发过程的管理,及软件质量控制方法。
1 需求分析与设计
软件需求包括三个不同的层次——业务需求、用户需求和功能需求,也包括非功能需求。业务需求说明了提供给用户的新系统的最初利益,反映了用户对系统高层次的目标要求;用户需求描述了用户使用系统必须要完成的任务;功能需求定义了开发人员必须实现的软件功能,使得用户能完成他们的任务,从而满足了业务需求。
在项目研发合同签订后,首先要开展的工作就是调研、进行需求分析,并以此为依据开展设计、研发等工作。但在设计、研发的过程中用户总是会提出新的要求、甚至在程序开发完后,用户发现系统与自己需求不符,提出修改要求。如何在规定的时间内开发出满足各种需求的软件,就需要进行需求管理。
在该项目的研发中使用的需求管理工具主要是Excel,用于将需求分类,以Excel表格的形式展现,对其进行量化。需求管理表格主要包括以下内容:项目名称、需求提出人、提出日期、需求关闭时间、功能模块名、需求描述、需求分类(需求、Bug)。
针对bug的管理,如果单纯使用Excel,无法实现错误报错截屏的图像显示,很容易造成需求描述不清晰。于是根据项目的需求,选择了EasyBug作为bug管理工具,它是基于WEB的在线管理,无需配置,具有强大的截图功能且以图片的形式直接存在;由项目管理者确定bug的优先级别、将任务分配给相应的开发人员;而且对所有任务完成的起止时间、问题根源、解决方法等相关信息予以详细的记录,并能提供各类统计报表。EasyBug下的bug管理统计报表页面如图1所示。
软件设计其定义就是把许多事物和问题抽象起来,并且抽象它们不同的层次和角度。在项目开发中也就是要在需求分析的基础上完成系统总体功能、数据流程、组成结构、数据结构、运行方式、界面等方面的设计。在该项目的开发中,我们发现UML、数据库设计等专业工具,使用起来并不直观又很难解决根本问题。于是在系统应用软件设计方面使用WORD进行详细描述流程、组成结构等,使用脑图软件展现逻辑结构,使用PPT来实现界面设计,Excel用于勾画报表功能。
图1 Easy Bug下的Bug管理统计报表正面
2 软件开发过程管理
所谓软件开发过程进行管理就是将方法、工具、相关人员结合在一起,在限定的资源条件下,研发出满足质量要求的、符合合同规定的应用系统。在此过程中主要涉及到了研发进度管理和版本控制。
由于该项目涉及的专业领域非常多,各子系统研发中存在着较强的依赖关系,所以研发进度管理就显得尤其重要。如何实现对各项任务进行优先等级划分、人员分配、时间安排,对完成情况进行统计,并能很好的结合需求管理及设计文档等,我们在项目管理中选择了思维导图,即脑图软件。脑图是一门新兴的脑科学,它的诞生代替了一大堆繁复的文字,使各项事件之间的关联一目了然。而脑图软件是一个打开大脑潜能的强有力的图解工具,使我们的思维可视化,形象化。
图2 MindManager项目进度管理界面
脑图软件MindManager是一个创造、管理和交流思想的通用标准,能有序地组织我们的思维、资源和项目进程,能很好提高项目组的工作效率和成员之间的协作性。它作为一个组织资源和管理项目的方法,可从脑图的核心分枝派生出各种关联的想法和信息。图2是一个使用MindManager进行项目进度管理的界面。描述了一个利用MindManager进行管理的实例,它可以清晰的划分各研究任务,展现各子任务之间的逻辑关系,标注其优先等级、完成情况、时间安排,能同时显示甘特图,连接相关Excel表,并可以输出为PDF、Word、Powerpoint、HTML和图片格式文件。
在该项目的开发过程管理中涉及的另一重要方面就是版本控制,其目的主要是对软件开发进程中文件或目录的发展过程提供有效的追踪手段,保证在需要时可回到旧的版本,避免文件的丢失、修改的丢失和相互覆盖。跟踪记录整个软件的开发过程,包括软件本身和相关文档,以便对不同阶段的软件及相关文档进行表示并进行差别分析,对软件代码进行可撤消的修改,便于汇总不同开发人员所做的修改,辅助协调和管理软件开发团队。没有进行版本控制或者版本控制本身缺乏正确的流程管理,在软件开发过程中将会引入很多问题,如软件代码的一致性、软件内容的冗余、软件过程的事物性、软件开发过程中的并发性、软件源代码的安全性,以及软件的整合等问题。
该项目研发过程中我们没有简单的在开发目录中标注日期,或者在程序中和文档中简单的加上版本号V1.0,来取代真正意义上的版本控制。真正意义上的版本控制是要在空间上,需要建立服务器数据库用于存储开发过程中的软件代码和文档,尽管开发人员可以在自己的本地留有备份,但最终唯一有效的只有服务器端的程序代码;在时间上,需要全程跟踪并自动记录开发过程中的每个更改细节,和不同时期的不同版本。这就要使用版本控制工具来减轻开发人员的负担,节省时间,同时降低人为错误。
由于该系统的研发是基于Windows系统下的,所以选择支持Windows环境的SVN作为版本控制工具。简单地说,可以把SVN当成备份服务器,它可以记录每次上传到这个服务器的档案内容,并且自动的赋予每次的变更一个版本。首先将需要备份的代码和档案add到Repository上面(用来存放上传档案的地方)。当有任何修改时,将修改后的代码和文档commit到Repository上,即提交修改给SVNserver。针对每次的commit,SVNserver都会赋予他一个新的版本。同时,也会把每次上传的时间记录下来。SVN可以让不同的开发者存取同样的代码或档案,并且利用SVN Server作为其同步的机制。可以直接选择取得最新的版本,或取得任何一个之前的版本从Repository下载。SVN具有版本分支及合并等功能,其存放档案或代码采用是差异备份的方式,即只备份有不同的地方,节省了硬盘空间。
3 软件测试
软件测试是伴随着软件的产生而产生的,有了软件生产和运行就必然有软件测试。软件测试不能等同于“调试”,“调试”的目的是纠正软件中已经知道的故障。软件测试就好比制造工厂的质量检验工作,是对软件产品和阶段性工作成果进行质量检验,力求发现其中的各种缺陷,并督促修正缺陷,从而控制和保证软件产品的质量。所以,软件测试是提高软件产品质量的重要手段之一。对测试的投入极少,或测试介入得太晚,等形成代码、系统已经基本完成时才进行测试,都会直接影响到项目的进展、软件的质量。
软件测试其实是为项目开发服务的,需要在整个项目开发团队中强调测试服务的概念,虽然软件测试的目的是为了发现软件中存在的错误,但是,其根本目的是为了提高软件质量,降低软件项目的风险。
由于软件分析、设计与开发各阶段是互相衔接的,前一阶段工作中发生的问题如未及时解决,很自然要影响到下一阶段。所以软件测试并不仅仅是程序测试,它应该贯穿于整个项目开发的全过程。因此在该项目的整个研发过程中我们采取了全程软件测试,各阶段有不同的测试对象,形成了不同开发阶段的不同类型的测试。从项目启动、需求评审开始,其中需求分析、概要设计、详细设计以及程序编码等各阶段所得到的文档,以及源程序,都作为“软件测试”的对象。对于需求分析、系统设计等过程形成的需求规格说明、概要设计规格说明、详细设计规格说明等文档,都聘请了专家对其进行了评审、完善。对于源代码都有专门的测试人员编写了测试用例,开展了单元测试、集成测试、功能测试性能测试等。测试的及早介入才能有效地保障软件的质量及项目的顺利完成。
4 结束语
在“南海海洋动力环境数据集成与应用技术系统”项目的开发中,整个应用系统的开发被分成了若干个子任务,由相应的研发小组分别进行开发,然后再进行集成联调。而每一个研发小组都仅由3~5人组成,在研发期间还要同时兼顾原有项目的维护、新项目的启动等。在这种时间紧、任务重、人员有限的情况下,我们采用了合理的项目管理方法、选择了合适的管理工具,确保在有限的时间内研发出高质量、稳定的应用系统,并为今后项目的开发提供了可借鉴的管理方法。
[1]孙涌,田茵,等.现代软件工程[M].北京:北京希望电子出版社,2002.
[2]Basoglu N,Daim T,Kerimoglu O.Organizational adoption of enterprise resource planning systems:A conceptual framework[J].The Journal of High TechnologyManagement Research,2007,18(1):73-97.
[3] 杨芙清.软件工程技术发展思索[J].软件学报,2005,16(1):1-7.
[4]Ron Patton.Software Testing(Second Edition)[M].北京:机械工业出版社,2006.
[5]范勇.全面软件过程管理模型及应用[J].计算机工程与设计,2006,10:1764-1766.
Study on Software Quality Control Method
SONG Kun,ZHOU Zhi-hai,SHI Jing-tao
(National Ocean Technology Center,Tianjin 300112,China)
In modern society,the software is used in many aspects.The development of application software is involved in almost all of the marine environment monitoring system projects.While applying the software engineering,which uses the systematic,strict constraints and quantifiable methods,operation and maintenance,is the base of ensuring the successful completion of the projects.Based on the analysis of the software engineering technology and management methods,a feasible development process management method and the tools were used to realize the system development process management and software quality control in the development of"South China Sea marine dynamic environment data integration and application technology system".
software engineering; software quality; process management; revision control; full software testing
TP311.5
B
1003-2029(2012)01-0119-04
2011-09-30
国家高技术研究发展计划(863)资助项目(2008AA09A404)
宋坤(1980-),女,硕士,工程师,研究方向为海洋环境监测系统集成。Email:kunsong@126.com