基于WEB的软件产品质量的维护.docx
《基于WEB的软件产品质量的维护.docx》由会员分享,可在线阅读,更多相关《基于WEB的软件产品质量的维护.docx(19页珍藏版)》请在冰豆网上搜索。
基于WEB的软件产品质量的维护
毕业论文(设计)
基于WEB的软件产品质量的维护
Web-basedSoftwareProductQualityMaintenance
完成日期2012年3月25日
吉林大学珠海学院本科毕业论文(设计)开题报告
基于WEB的软件产品质量的维护
摘要
在科技高速发展的今日,计算机成为人们生活中不可缺少的一部分,而人们利用计算机最经常使用的便是计算机软件与网络。
而软件产品的开发过程,简单来说就分为问题的定义、软件需求分析、软件设计、软件实施、软件测试,之后便是软件维护的工作了,所以说软件维护在整个完整的软件生存期中有着不可或缺的作用,而且一个好的软件产品,在整个软件生存期中,软件维护的周期理应是最长的。
但是,在软件发展刚开始的时候,大多数的软件公司并不注重软件维护,把着重点都放在软件设计与软件实施中,以为只要把软件产品生产出来就万事大吉了,他们都没有想过一个问题,软件开发出来就是提供给用户使用的,软件设计与软件实施准确来说是面向内部的,而软件维护才是真正面向用户的。
而软件发展都现在,国内越来越多的企业开始注重软件的后期维护,软件维护是越来越重要。
本人实习的公司做的产品是基于B/S的web应用程序,而本人在公司实习期间所做的工作也与本文选题相符合,在维护部门下做一个子系统的软件维护工作。
公司维护部门的维护工作包括软件的质量保证,软件的版本控制,以及软件的配置管理。
本人主要的工作是软件质量的维护,简单来说就是增加新功能、修正系统错误以及解决客户对此子系统提出的问题。
虽然主要的工作是软件质量的维护,但既然在维护部门下工作,当然也是需要对子系统的版本进行控制的。
因为公司系统的每个大版本都有不同程度的改动,所以就需要根据客户的版本变更要求来对系统进行相应的修改、配置以及说明。
至于最后一项配置管理,本人就没有太多的涉及。
而本文主要研究的就是基于B/S模式的web应用程序下,关于软件质量的软件维护。
关键词:
软件维护过程;软件质量;软件维护成本;基于网络的(浏览器/服务器);软件可维护性;
Web-basedSoftwareProductQualityMaintenance
Abstract
Intherapiddevelopmentoftechnology,thecomputerhasbecomeanindispensablepartofpeople'slives.Intheuseofcomputers,themostoftenusedisthecomputersoftwareandnetworks.Andsoftwareproductdevelopmentprocess,insimpleterms,isdividedintotheproblemdefinition,softwarerequirementsanalysis,softwaredesign,softwareimplementationandsoftwaretesting.Afterthatistheworkofsoftwaremaintenance,sothatsoftwaremaintenancehasanindispensableroleinthecompletesoftwarelifetime.Andasoneexcellentsoftwareproduct,inthelifetimeoftheentiresoftware,softwaremaintenancecycleissupposedtobethelongest.
However,intheearlystagesofthedevelopmentofcomputertechnology,mostsoftwarecompaniesonlycaresoftwaredesignandsoftwareimplementationinsteadofsoftwaremaintenance.theythinkeverythingisdonewhenthesoftwareproductisfinished.Theyhavenotthoughtaboutaproblem,
thesoftwareisprovidedforuserstouse.Andprecisely,thesoftwaredesignandsoftwareimplementationarefacetointernal.
Butsoftwaremaintenanceisfacetousersdirectly.Withthedevelopmentofsoftwareindustry,
moreandmoredomesticenterprisesbeganattachimportancetothesoftwaremaintenance,softwaremaintenanceisincreasinglyimportant.
TheproductofmyinternshipcompanyiswebapplicationwhichbasedonB/S.Andmyworkismaintenancethesubsysteminmaintenanceteam.Sothisworkisconsistentwiththissubjectduringtheinternships.Inthemaintenanceteam,themaintenanceworkincludessoftwarequalityassurance,softwareversioncontrol,andsoftwareconfigurationmanagement.Andmymainworkissoftwarequalitymaintenance.Insimpleterms,softwarequalitymaintenanceistoaddnewfeatures,fixsystembugsandresolvecustomerissues.Sinceworkinginthemaintenanceteam,Ialsoneedtodosoftwareversioncontrol.Weneedaccordingtocustomer'srequirementstomaketheappropriatechanges,configuration,andinstructionsbecausetherearemanydifferentdegreesofalterationsineachlargeversion.Asfortheconfigurationmanagement,Idonothavemuchinvolved.ThispaperisresearchingaboutthemaintenanceofwebapplicationsbasedonB/S.
Keywords:
softwaremaintenanceprocess;qualityofsoftware;softwaremaintenancecosts;web-based(B/S);softwaremaintainability;
1软件维护的概念与概述………………………1
1.1概述………………………1
1.2软件维护的类型………………………2
1.3基于web的软件的维护介绍与特点………………………2
2软件维护的活动与策略………………………4
2.1软件维护的工作流程………………………4
2.1.1维护组织………………………4
2.1.2维护报告………………………4
2.1.3维护的流程图………………………5
2.1.4维护记录与评价………………………6
2.2软件维护的内容………………………6
2.2.1完善性维护………………………7
2.2.2纠正性维护………………………7
2.2.3适应性维护………………………7
2.2.4日常维护………………………7
2.3软件维护质量的度量………………………8
2.3.1可理解性………………………8
2.3.2可修改性………………………8
2.3.3可靠性………………………9
2.3.4可测试性………………………9
2.3.5可使用性………………………10
2.3.6可移植性………………………10
2.3.7效率………………………11
2.4各类维护的侧重点………………………12
3国内外情况分析与对比………………………13
3.1国内软件质量维护情况简单分析………………………13
3.2国外软件质量维护情况简单分析………………………13
4软件质量维护案例分析………………………15
4.1国外电子政务系统的维护实例………………………15
4.2国内软件维护的维护实例………………………16
4.3案例分析………………………16
5提高软件可维护性与维护效率的方法………………………18
6软件维护的前景………………………23
7结束语………………………24
参考文献………………………25
致谢………………………26
1软件维护的概念与概述
1.1概述
在软件的生存周期中,涵盖了两个重要的阶段,分别是开发期和运营期。
运营期是系统有效发展的阶段,在软件开发的时候,由于花费了许多的人力物力资源,所以,软件人员总是希望能看到,可以尽可能地延长软件的运行周期,使软件的性价比更高。
事实上,软件在运行的时候,是不可能不修改软件的,开发是一项大工程,可以提高生产效率,降低成本,并保证软件的品质,人们总是希望使用现有的软件,对其扩张或移植。
所以,软件人员在软件开发阶段之后,会继续对软件进行修正、扩展以及移植的这种行为,就是软件维护。
软件质量是软件产品中能够满足用户需求的各种特性的总和,这些特性包括:
功能、性能、可靠性、可维护性、可重用性、易用性等。
软件质量,对软件开发人员来说就是优良的代码或设计,对用户来说就是响应快速、功能强大、性能良好的体验,对维护人员来说就是易于升级、修改的程序,对管理者来说就是合理的开发周期以及尽量低的开发成本。
软件质量维护、版本控制、配置管理等在一定程度上也属于软件维护的范围,而本文主要研究的是软件质量的维护。
图1-1软件生存周期组成图
1.2软件维护的类型
软件维护一般分为四种类型的维护:
一是完善性维护:
为了满足用户的新需求而增加的功能的维护活动,完善性维护一般占整个软件维护量的50%左右。
二是纠错性维护:
顾名思义,也就是对软件系统中错误、bug等进行纠正的维护活动,纠错性维护一般占整个软件维护量的20%左右。
三是适应性维护:
为了适应软件运行环境而进行的修改的维护活动,适应性维护可以适应于由于硬件或者支持软件环境进而带来的变化、把软件移植到新机器上等,此类维护一般占整个软件维护量的25%左右。
而最后一种维护是预防性维护:
为提高软件的性能、可靠性、可维护性而进行修改的维护活动,预防性维护一般占整个软件维护量的4%,所以很少会进行预防性维护。
图1-2各类维护比例图
1.3基于web的软件的维护介绍与特点
基于web的软件,也称为B/S模式的应用程序,是通过浏览器与服务器的数据交互来运行的,依赖于网络,依赖于浏览器,不依赖于计算机的硬件环境,这种模式统一了客户端,将系统功能实现的核心部分集中在了服务器上,所以维护的工作只需专注于网络的故障以及软件本身的缺陷,维护的难度相对于C/S模式较小,并且需要及时快速地响应用户的问题以及给出解决方案;传统的C/S体系结构虽然采用的是开放模式,但这只是系统开发一级的开放性,在特定的应用中无论是Client端还是Server端都还需要特定的软件支持。
由于不能提供给用户真实期望的开放环境,C/S结构的软件需要针对不同的操作系统以及不同的环境开发不同的版本,加上软件产品的更新换代十分迅速,已经很难适应百台电脑以上局域网用户同时使用。
而且维护代价高昂,效率低下。
与B/S模式的应用程序的维护不同,C/S程序由于整体性,必须对软件进行整体考察,问题处理难度大以及系统升级难,C/S模式的应用程序的维护会经常性地需要远程维护,这就增加了维护的工作量以及维护的成本。
图1-3B/S体系结构图
图1-4C/S体系结构图
2软件维护的活动与策略
2.1软件维护的工作流程
2.1.1维护组织
图2-1维护组织组成图
在这个维护组织中,有一名维护管理员总负责,每一项维护请求都要通过维护管理员,再指派给维护人员进行维护工作。
2.1.2维护报告
维护组织内部应该制定一个软件维护报告,它应该给出以下信息:
1.满足维护要求表中要求的所需要的工作量;
2.维护请求或问题的性质;
3.维护要求的优先级;
4.修复后的相关事后数据。
2.1.3维护的流程图
图2-2维护的事件流程图
以下是维护的人员流程图:
图2-3维护的人员流程图
2.1.4维护记录与评价
在软件维护的过程中,软件人员往往忽略了软件维护记录。
这样,在软件运行了一段时间之后,如果要对软件的多方面进行评估的时候,因为没有维护记录,评估就无法进行,也就无法评价软件维护人员的效率与贡献。
因此,维护记录也是软件维护中很重要的一环,而维护记录一般会记录下以下数据:
(1)程序标志与标识(10)因程序变动而删除的源语句数
(2)源语句数(11)每个改动花费的人时数
(3)机器指令条数(12)程序修改的日期
(4)使用的程序设计语言(13)软件工程师的名字
(5)程序安装的日期(14)维护要求表的标识
(6)自从安装以来程序运行的次数(15)要进行维护的类型
(7)自从安装以来程序失效的次数(16)维护开始和完成的时间
(8)程序变动的层次和标识(17)用于维护的总人时数
(9)因程序变动而增加的源语句数(18)与完成的维护相联系的纯效益
通过维护记录中的数据,对维护活动进行评价,从而产生维护工作的定量度量。
包括以下内容:
(1)每次程序运行平均失效的次数
(2)用于每一类维护活动的总人时数
(3)平均每个程序、每种语言、每种维护类型所做的程序变动数
(4)维护过程中增加或删除一个源语句平均花费的人时数
(5)维护每种语言平均花费的人时数
(6)一张维护要求表的平均处理时间
(7)不同维护类型所占的百分比
根据对维护工作定量度量的结果,可以利用得到的数据去分析评价维护任务。
2.2软件维护的内容
由第一部分的介绍中,已知软件维护一般分为四类:
完善性维护、纠正性维护、适应性维护和预防性维护,而每类维护针对的方面不同,所以会有不同的维护内容。
2.2.1完善性维护
当软件进入稳定运行期后,客户或用户会有一些新的需求,一旦这些需求被接受,就需要开始完善或增加系统的功能,为了满足这类要求需要进行完善性维护。
例如,完善性维护可以是增加新的处理、改变业务处理的流程、改善用户界面的的终端会话模式,或提高系统的运行速度、提高系统性能,或增加注释、改进可读性等。
在软件刚上线运行的一两年,也就是系统维护阶段的前一两年,纠正性维护的工作量是比较大的。
随着时间的推进与缺陷发现率的降低,系统就开始趋于稳定,纠正性维护的工作量就会降低了许多,而完善性维护与适应性维护的工作量就开始增加起来。
2.2.2纠正性维护
在软件测试阶段,因各种原因的作用下,一部分的错误会没被测试出来或隐藏了起来,所以在软件上线运行期间,用户必然会发现程序错误或者缺陷,并且把他们遇到的问题与错误报告给维护人员,软件维护人员为了识别和纠正这些错误、改正软件性能上的缺陷,就会进行相应的诊断和改正错误。
而纠正性维护需要纠正的错误也包括很多种,如设计缺陷、代码缺陷、逻辑缺陷、数据缺陷、文档缺陷等等。
2.2.3适应性维护
在计算机技术发展十分迅速的今日,各种操作系统的出现与各类硬件设备的更新,都会影响系统运行环境的变化。
所以为了让软件在不同的环境下都能正常地运行,就需要适应性维护。
影响环境变化的有很多因素,其中包括操作系统的变化(单单微软的操作系统就已经有很多种了,如Server2003、Server2008、Server2012等等)、硬件配置的变化(如机型、终端、打印机等等)、数据库的变化(如Oracle、SQLServer、NoSQL类型的数据库等等)、数据格式或文件结构的变化等。
2.2.4日常维护
日常维护相对来说要简单一些,一般来说只要应用文档写的足够详细的话,维护工作都能顺利完成。
例如对文件系统的检查,查看是否有足够空闲的空间;对数据库系统的检查,检查数据库是否正常运行,检查数据库数据是否正常与是否有脏数据;对第三方平台系统的检查,检查第三方平台是否正常运行。
2.3软件维护质量的度量
目前广泛使用的是用如下的七个特性来衡量程序的可维护性与质量。
2.3.1可理解性
可理解性表明人们通过阅读源代码和相关文档,了解程序功能及其如何运行的容易程度。
对于一个程序来说,可理解性应该是最基本的要求。
如果一个程序难以被理解,那么实际上就难以找到一种有效的方法来对它进行维护。
一个具有可理解性的程序应具备以下一些特点:
模块化,代码风格一致性,不使用令人捉摸不定或含糊不清的代码,使用有意义的接口名和类名,结构化,完整性等。
用于可理解性度量的检查如下:
(1)程序是否模式化?
结构是否良好?
(2)每个模块是否有清晰的注释
(3)在整个程序代码中缩进和间隔的距离以及风格是否一致?
(4)程序中的变量和函数过程是否是易于理解且独有的名字?
(5)程序是否体现了设计思想?
(6)是否能通过建立公共模块或子程序来避免多余的代码?
(7)是否所有变量都有用处,没有多余的变量?
(8)程序是否避免了很难理解的、非标准的语言特性?
2.3.2可修改性
可修改性表明程序修改的困难度。
用于可修改性度量的检查如下:
(1)程序是否模块化?
结构是否良好?
(2)程序是否是可理解的?
(3)在表达式中,数组的上下界的界定、输入/输出设备命名符中是否使用了符合代码习惯的文字常数?
(4)是否具有可用于支持程序扩展的附加存储空间?
(5)是否使用了提供常用功能的标准库函数?
(6)程序是否把可能会产生变化的特定业务逻辑功能部分都分离到了单独的模块中?
(7)程序是否提供了不因个别功能变化而产生影响的模块接口?
(8)是否实现了一个模块只执行一个系统功能的规则?
(9)每一个变量在程序中的用途是否单一?
(10)能否以不同的输入/输出方式操作?
2.3.3可靠性
可靠性表明一个程序按照用户的要求和设计目标,在给定的一段时间内正确执行其功能的可能性。
虽然定义是如此,可是在现实世界中,还没有任何一种手段能够保证软件具有百分之百的可靠性或精确地度量一个软件的可靠性。
只能使用以下这些问题来大概估测程序是否可靠。
用于可靠性度量的检查如下:
(1)程序中对可能出现的没有定义的数学运算是否做了控制与检查?
(2)循环的范围和循环终止的参数是否确认与测试过?
(3)下标的范围是否有超标或溢出?
(4)输入的数据是否经过了测试?
(5)对于可能发生溢出的情况是否已经尽量避免以及测试过?
(6)对程序中最复杂的模块以及接口,是否使用了多种测试技术对其进行反复测试?
(7)测试是否包括除了正常测试用例之外的,特殊的或者非正常的测试用例?
(8)是否测试了程序的所有业务逻辑,是否都能得到正确结果?
2.3.4可测试性
可测试性表明论证程序正确性的容易程度。
用于可测试性的度量的检查如下:
(1)程序是否模块化?
结构是否良好?
(2)程序是否能显示已定义,带说明性质的错误信息?
(3)程序是否能显示任意的中间结果?
(4)程序是否具有跟踪以及显示业务逻辑控制流程的能力?
(5)程序是否能清晰不含糊地表示出它的输出数据?
(6)程序是否能及时地要求显示出所有的输入?
2.3.5可使用性
可使用性就是从用户的角度出发,程序方便、实用以及便于使用的程度。
一个具有可使用性的程序,应该是易于使用的、能允许用户出错和改变而不会是系统崩溃的程序。
用于可使用性度量检查如下:
(1)程序是否具有自描述性?
程序是否附有实例性的使用说明?
是否有形成交互模式的帮助功能?
在没有专业人员的指导下,用户是否能迅速地熟悉程序的简单操作?
(2)程序是否能让用户对数据处理有相对合适的控制?
程序是否允许用户查看后台处理?
程序是否能提供合理的、需要提醒用户的错误信息?
程序能否在一旦用户需要系统提供帮助或提示信息的时候,显示出准确的帮助信息?
(3)程序的使用是否符合用户的使用习惯?
程序的操作是否有超出用户预期的结果?
(4)程序是否容易学会使用?
程序是否不需要专业的知识便能够使用?
对输入格式、要求和限制的解释是否是完全的以及清晰不含糊地?
程序是否自带有纠错功能?
(5)程序是否具有容错性?
程序是否能容忍具有典型错误的数据输入,如打字或拼写错误?
程序能否验证输入数据的正确率?
(6)程序是否灵活?
程序是否允许以自由形式输入?
对于用户来说,程序是否提供了不同的输入选择?
程序是否允许用户自定义自己的功能模块和特性模块?
程序是否可以重复使用而无需对输入值做过多的说明?
(7)程序的用户界面是否友好?
程序用户界面的编排是否合理?
界面文本与图片的间距是否合理?
界面用色是否符合用户的使用习惯?
2.3.6可移植性
可移植性表明程序转移到一个新的计算环境的可能性的大小。
或者它表明程序可以容易地、有效地在各种各样的计算环境中运行的容易程度。
一个具有可移植性的程序应该是不过重地依赖于某一具体计算机或操作系统的性能。
用于可移植性的检查如下:
(1)是否使用了高级语言,而不是第一代、第二代语言来设计编写程序?
(2)程序中是否使用了准确的、已定义的、普遍使用的子模块与库功能?
(3)程序在启动之前是否初始化了内存?
(4)程序在启动之前是否检查了当前使用的I/O设备?
(5)程序是否使用了较为成熟的软件技术进行设计?
(6)程序中是否极少使用或根本不使用操作系统的功能?
(7)程序中数值计算的精度是否与机器的字长或存储器的大小限制无关?
2.3.7效率
效率表明一个程序能执行预定功能而不浪费机器资源的程度。
这些机器资源包括内存容量、存储空间容量和执行时间等等。
可用于效率的检查如下:
(1)程序是否具有高度的模块性,即程序在一个功能执行时都只涉及一个局部范围?
(2)是否清除了多余无用的符号、标号以及表达式,以充分发挥编译器的优化作用?
(3)是否把在单独的模块中对特殊的子程序和错误进行处理?
(4)在编译时是否尽可能多地完成了初始化工作?
(5)在一个循环内是否有循环不变的代码?
(6)是否以快速的数学运算代替了较慢的数学运算?