《论软件工程开发和维护中的重要性.doc》由会员分享,可在线阅读,更多相关《论软件工程开发和维护中的重要性.doc(10页珍藏版)》请在金锄头文库上搜索。
1、 计算机软件技术基础论文论文题目:论软件工程开发和维护中的重要性班 级:信息学院硕研2011级八班学 号: S姓 名: 胡 国 辉信息学院2011年 12 月摘 要软件工程是软件领域为解决已经出现的“软件危机”问题而发展起来的新的领域。软件工程是指导计算机软件开发和维护的工程科学。随着软件工程的日臻完善,使软件的开发有了一套完整的科学方法,从而提高了软件系统的可靠性、可理解性和可维护性,提高了软件生产率,降低了开发成本。软件工程强调使用生存周期方法学和各种结构分析及结构设计技术。软件生存周期每个阶段的工作都和软件可维护性有密切关系。在软件生存周期的每个阶段都采用科学的管理技术和良好的技术方法,
2、而且在每个阶段结束前都从技术和管理两个方面进行严格的审查,合格之后才开始下一阶段的工作,这就使软件开发工程的全过程以一种有条不紊的方式进行,保证了软件的质量,特别是提高了软件的可维护性。 本文先介绍软件工程的形成与与产生,再介绍软件工程控制的重要作用,然后通过下结合软件维护工作的实践探讨一下软件生存周期的各个阶段对软件可维护性的影响,从而指出了软件工程开发和维护中的重要性,特别强调了维护的重要作用。关键词:软件工程,开发,维护软件工程开发和维护中的重要性一、软件工程的形成与产生软件工程的出现不是一个偶然的现象,而是软件领域为解决已经出现的“软件危机”问题而发展起来的新的领域。早期的软件开发没有
3、系统的方法可以遵循,基本是一个个体化的过程。但随着软件的数量不断增长,需求日趋繁多,开发成本急剧提高,维护难度也越来越大,而失败的软件开发项目却屡见不鲜,导致大量的财产流失。“软件危机”就这样被提出来了:1968年北大西洋公约组织的计算机科学家在联邦德国召开的国际学术会议上第一次提出了“软件危机”(software crisis)这个名词。概括地说,软件危机包含两方面问题:(1)如何开发软件,以满足不断增长,日趋复杂的需求; (2)如何维护数量不断增长的软件产品。具体地说,软件危机主要有以下表现:(1)对软件开发成本和进度估计不准,成本超出预算、进度严重超期的项目时有所见; (2)开发的软件系
4、统无法满足用户的要求;(3)质量不可靠,Bug一大堆,Patch一个接一个;(4)可读性差,不利于修改扩充;(5)软件的维护跟不上硬件环境和用户需求的变化,可维护程度非常低,产品退化速度快;(6)软件开发需要投入大量、高强度的脑力劳动,成本非常高;(7)软件开发生产率的提高赶不上硬件的发展和应用需求的增长。为了探寻摆脱“软件危机”的对策,北约的科技委员会提出了“软件工程”的概念,并在之后的几十年中不断完善和提高,以下是“软件工程”的定义:软件工程是一门研究如何用系统化、规范化、数量化等工程原则和方法去进行软件的开发和维护的学科。软件工程包括两方面内容:软件开发技术和软件项目管理。软件开发技术包
5、括软件开发方法学、软件工具和软件工程环境。二、软件工程的三段论如上所说软件工程是客服软件危机而提出的一种概念,并在实践中不断的探索它的原理,技术和方法,在此过程中,人们研究和借鉴了工程学的某些原理和方法,并形成了软件工程学。软件工程活动是“生产一个最终满足需求且达到工程目标的软件产品所需要的步骤”。这些活动主要包括开发类活动,管理类活动和过程类活动,在这里将它定义为“软件工程的三段论”或者“软件工程的三线索”。一段论是“软件项目管理论”,二段论是“软件项目过程论”,三段论是“软件过程的改进论”。这三段可以用一个三角形表示,他们类似于相互支撑的三角形的三个边。我们知道三角形是最稳定的,要保持三角
6、形的稳定性,三角形的三个边必不可少,而且要保持一定的相互关系。其中开发过程是软件人员生产软件的过程,例如需求分析,设计,编码,测试等,相当于生产线上的生产过程。管理过程是项目管理者规划软件开发,控制软件开发的过程,相当于生产线上的管理过程,管理过程是伴随开发过程进行的过程。过程改进,也就是维护,相当于对软件开发和管理过程的“工艺流程”进行管理和改进,如果没有好的生产不出好的产品,它包括对开发过程和管理过程的定义和改进。为了保证软件管理,软件开发过程的有效性,应该保证这些过程的高质量和过程的持续性改进和维护。二、软件工程控制的重要性软件工程的七条基本原理:1、 用分阶段的生命周期计划严格管理有人
7、经统计发现,在不成功的软件项目中有一半左右是由于计划不周造成的,可见把建立完善的计划作为第一条基本原理是吸取了前人的教训而提出来的。在软件开发与维护的漫长的生命周期中,需要完成许多性质各异的工作。这条基本原理意味着,应该把软件生命周期划分成若干个阶段,并相应地制定出切实可行的计划,然后严格按照计划对软件的开发与维护工作进行管理。Boehm认为,在软件的整个生命周期中应该制定并严格执行六类计划,它们是项目概要计划,里程碑计划,项目控制计划,产品控制计划,验证计划,运行维护计划。不同层次的管理人员都必须严格按照计划各尽其职地管理软件开发与维护工作,绝不能受客户或上级人员的影响而擅自背离预定计划。2
8、、 坚持进行阶段评审当时已经认识到,软件的质量保证工作不能等到编码阶段结束之后再进行。这样说至少有两个理由:第一,大部分错误是在编码之前造成的,例如,根据Boehm等人的统计,设计错误占软件错误的63%,编码仅占37%;第二,错误发现与改正得越晚,所需付出的代价也越高。因此,在每个阶段都进行严格的评审,以便尽早发现在软件开发过程中所犯的错误,是一条必须遵循的重要原则。3、 实行严格的产品控制在软件开发过程中不应随意改变需求,因为改变一项需求往往需要付出较高的代价,但是,在软件开发过程中改变需求又是难免的,由于外部环境的变化,相应地改变用户需求是一种客观需要,显然不能硬性禁止客户提出改变需求的要
9、求,而只能依靠科学的产品控制技术来顺应这种要求。也就是说,当改变需求时,为了保持软件各个配置成分的一致性,必须实行严格的产品控制,其中主要是实行基准配置管理。所谓基准配置又称基线配置,它们是经过阶段评审后的软件配置成分(各个阶段产生的文档或程序代码)。基准配置管理也称为变动控制:一切有关修改软件的建议,特别是涉及到对基准配置的修改建议,都必须按照严格的规程进行评审,获得批准以后才能实施修改。绝对不能谁想修改软件(包括尚在开发过程中的软件),就随意进行修改。4、 采用现代程序设计技术从提出软件工程的概念开始,人们一直把主要精力用于研究各种新的程序设计技术。60年代末提出的结构程序设计技术,已经成
10、为绝大多数人公认的先进的程序设计技术。以后又进一步发展出各种结构分析(SA)与结构设计(SD)技术。实践表明,采用先进的技术既可提高软件开发的效率,又可提高软件维护的效率。5、 结果应能清楚地审查软件产品不同于一般的物理产品,它是看不峥摸不着的逻辑产品。软件开发人员(或开发小组)的工作进展情况可见性差,难以准确度量,从而使得软件产品的开发过程比一般产品的开发过程更难于评价和管理。为了提高软件开发过程的可见性,更好地进行管理,应该根据软件开发项目的总目标及完成期限,规定开发组织的责任和产品标准,从而使得所得到的结果能够清楚地审查。6、 开发小组的人员应该少而精这条基本原理的含义是,软件开发小组的
11、组成人员的素质应该好,而人数则不宜过多。开发小组人员的素质和数量是影响软件产品质量和开发效率的重要因素。素质高的人员的开发效率比素质低的人员的开发效率可能高几倍至几十倍,而且素质高的人员所开发的软件中的错误明显少于素质低的人员所开发的软件中的错误。此外,随着开发小组人员数目的增加,因为交流情况讨论问题而造成的通信开销也急剧增加。当开发小组人员数为N时,可能的通信路径有N(N?/FONT1)/2条,可见随着人数N的增大,通信开销将急剧增加。因此,组成少而精的开发小组是软件工程的一条基本原理。7、 承认不断改进软件工程实践的必要性遵循上述六条基本原理,就能够按照当代软件工程基本原理实现软件的工程化
12、生产,但是,仅有上述六条原理并不能保证软件开发与维护的过程能赶上时代前进的步伐,能跟上技术的不断进步。因此,Boehm提出应把承认不断改进软件工程实践的必要性作为软件工程的第七条基本原理。按照这条原理,不仅要积极主动地采纳新的软件技术,而且要注意不断总结经验,例如,收集进度和资源耗费数据,收集出错类型和问题报告数据等等。这些数据不仅可以用来评价新的软件技术的效果,而且可以用来指明必须着重开发的软件工具和应该优先研究的技术。四、可维护性软件工程强调使用生存周期方法学和各种结构分析及结构设计技术。软件生存周期每个阶段的工作都和软件可维护性有密切关系。在软件生存周期的每个阶段都采用科学的管理技术和良
13、好的技术方法,而且在每个阶段结束前都从技术和管理两个方面进行严格的审查,合格之后才开始下一阶段的工作,这就使软件开发工程的全过程以一种有条不紊的方式进行,保证了软件的质量,特别是提高了软件的可维护性。下面结合软件维护工作的实践探讨一下软件生存周期的各个阶段对软件可维护性的影响。1、问题定义阶段问题定义阶段的关键任务,是确切地定义用户要求解决的问题,也就是确定问题的性质、工程的目标和规模。在软件定义阶段就使开发人员、用户及使用单位的管理人员对问题的性质、工程的目标和规模取得完全一致的看法,这对确保开发工程的成功是至关重要的,同时也有利于使用中的维护。如果对问题定义不准确,最终开发出来的系统就不适
14、用,就会给维护带来困难,甚至使系统失去价值。在软件开发的第一步,清楚简洁地提出问题,使软件开发人员与应用部门都有个清晰、正确的认识,对后续的开发和应用工作有重要的指导作用。同时,由于有些业务的处理方法本身不够成熟、稳定,需要解决的问题也不可能考虑得很全面、完善,又没有一套完整的手工处理系统可供参考,这就要求系统易于补充、完善和增加新的功能,也就是说要具备较好的可维护性。2、可行性研究阶段可行性研究就是要看对所定义的问题是否有行得通的解决办法,其目的不是解决问题,而是确定问题是否值得去解。要通过大量的调查研究和客观分析,判断原定的系统目标和规模是否现实,系统完成后所能带来的效益是否大到值得投资开
15、发这个系统的程度,并对推荐的系统方案进行仔细的成本效益分析,因此,可行性研究实质上是要进行一次压缩了的系统分析和设计的过程,也就是在较高层次上以较抽象的方式进行系统分析和设计的过程,这个过程必然会对未来系统的可维护性产生影响。首先,推荐的系统方案应具备较好的可维护性;其次,使用的技术应该是成熟的并足以实现这个系统的功能,同时还要求这些技术有较强的维护手段;第三,要具备良好的人机界面,用户较容易掌握系统的操作方法,既方便用户,也有利于系统维护人员与用户之间的交流、协作。总之,在系统的可行性研究阶段就要考虑系统的可维护性,提供良好的维护环境。3、需求分析阶段需求分析是软件工程的一个重要阶段,这个阶段的任务是准确地确定目标系统必须做什么,也就是要确定目标系统必须具备哪些功能。同时,需要确定系统的运行环境,并且预测系统发展的前景。需求分析阶段要求提出完整准确的系统逻辑模型,它是以后设计和实现目标系统的基础,因此必须准确完整地体现用户的要求。系统逻辑模型必须经过用户确认之后才能进