《软件工程》第8章_程序编码
- 格式:pptx
- 大小:654.65 KB
- 文档页数:75


软件工程考核知识点-第8章-软件维护
第8章 软件维护
软件投入使用后就进入软件维护阶段。维护阶段是软件生存周期中时间最长的一个阶段,所花费的精力和费用也是最多的一个阶段。
8.1软件维护的内容
软件维护内容有四种:校正性维护,适应性维护,完善性维护和预防性维护。
1.校正性维护
在软件交付使用后,由于在软件开发过程中产生的错误并没有完全彻底的在测试中发现,因此必然有一部分隐含的错误被带到维护阶段来。这些隐含的错误在某些特定的使用环境下会暴露出来。为了识别和纠正错误,修改软件性能上的缺陷,应进行确定和修改错误的过程,这个过程就称为校正性维护。校正性维护占整个维护工作的20%左右。
2.适应性维护
随着计算机的飞速发展,计算机硬件和软件环境也在不断发生变化,数据环境也在不断发生变化。为了使应用软件适应这种而修改软件的过程称为适应性维护。这种维护活动占整个维护活动的25%。
3.完善性维护
在软件漫长的运行时期中,用户往往会对软件提出新的功能要求与性能要求。这是因为用户的业务会发生变化,组织机构也会发生变化。为了适应这些变化,应用软件原来的功能和性能需要扩充和增强,为达到这个目的而进行的维护活动称为完善性维护,占整个维护活动的50%。
4.预防性维护
为了提高软件的可维护性和可靠性而对软件进行的修改称为预防性维护。这是为以后进一步的运行和维护打好基础,占整个维护工作的4%。
8.2 维护的特点
8.2.1非结构化维护和结构化维护
软件的开发过程对软件的维护过程有较大的影响。若不采用软件过程的方法开发软件,则软件只有程序而无文档,维护工作非常难,这就是一种非结构化的维护。若采用软件工程的方法开发软件,则各阶段都有相应的文档,这容易进行维护工作,这是一种结构化的维护。
1.非结构化维护
因为只有源程序,而文档很少或没有文档,维护活动只能从阅读、理解、分析源程序开始。这是软件工程时代以前进行维护的情况。
第8章 维护
周四上午2#211的34节,下午在1#202的78节
在软件产品被开发出来并交付用户使用之后,就进入了软件的运行维护阶段。
这个阶段是软件生命周期的最后一个阶段。
大型软件的维护成本高达开发成本的4倍左右。
8.1软件维护的定义
在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件的过程。
四项活动:改正性维护,适应性维护,完善性维护(一半以上),预防性维护。
8.2软件维护的特点
8.2.1结构化维护与非结构化维护差别巨大
1. 非结构化维护
2. 结构化维护
8.2.2维护的代价高昂
维护工作量的一个模型:
M=P+K*exp(c-d)
M是维护用的总工作量,P是生产性工作量,K是经验系数,c是复杂程度(非结构化设计和缺少文档都会增加软件的复杂程度),d是维护人员对软件的熟悉程度。
8.2.3维护的问题很多
1. 理解别人写的程序通常非常困难;
2. 没有文档或文档资料显著不足;
3. 不能指望开发人员详细说明软件;
4. 设计时未考虑将来的修改;
5. 维护不是一项吸引人的工作。 软件工程
2
8.3软件维护过程
1. 维护组织
未必建立正式的维护组织,但是非正式的委托责任是绝对必要的。
在维护活动开始之前就明确维护责任是十分必要的,可以大大减少维护过程中可能出现的混乱。
2. 维护报告
即软件修改报告。
3. 维护的事件流
4. 保存维护记录
5. 评价维护活动
8.4软件的可维护性
定义:维护人员理解、改正、改动或改进这个软件的难易程度。
8.4.1决定软件可维护性的因素
1. 可理解性
定义:外来读者理解软件的结构、功能、接口和内部处理过程的难易程度。
2. 可测试性
可以用程序复杂度来度量它的可测试性。
3. 可修改性
耦合、内聚、信息隐藏、局部化、控制域与作用域的关系等,都影响软件的可修改性。
4. 可移植性
定义:把程序从一种计算环境(硬件配置和操作系统)转移到另一种计算环境的难易程度。
本章习题
(1) 复习题
1.简述软件的特点
答:
软件相对硬件而言有许多不同特点。了解这些特别之处能够帮助我们全面、正确地理解计算机软件。
(1)软件是一种逻辑实体,而不是具体的物理实体,具有很强的抽象性。我们只能把它记录在介质上,或在系统上运行,但却无法直接通过我们的眼睛看到软件的形态。
(2)软件是一个逻辑上复杂而规模上庞大的系统,涉及技术、管理等多方面的问题。如果将代码比作零件,则一个软件是由成百上千万个零件组成的复合体,而且其结构远较机械装置复杂。应该说软件的复杂程度高于同等规模的硬件产品。
(3)软件是智力产品,其价值体现在解决问题的知识和能力,而并不体现在软件载体本身。软件的生产方式与硬件明显不同,设计方法和制造阶段不同;软件的生成成本主要在研发设计上,而大量复制几乎没有成本。
(4)在软件的运行和使用期间,没有硬件的磨损、老化问题。但软件维护比硬件维护要复杂得多,软件的故障主是由于对软件的改变和使用环境的变化引起的。
(5)软件的开发和运行对硬件有较强依赖关系。在软件开发有可移植性的问题,现在通常把软件的可移植性作为衡量软件质量的重要因素之一。
(6)软件工作涉及许多社会因素。软件与人的关系密切,涉及到语言、文化等多方面,甚至关系到的道德领域。
{P175}
2.什么是软件危机?主要有哪些表现?其产生的原因是什么?
答:
软件危机是软件开发领域,特别是在大型软件开发和维护过程中遇到的一系列严重问题的统称。
软件危机主要表现为费用高、开发过程不易控制、工作量估计困难、软件质量低、软件项目失败率高、无法判断大型系统能否正常工作以及软件维护任务重等现象。
产生软件危机的主要原因,一方面是软件本身所固有的抽象性、复杂性等特性;另一方面是人们当时对软件和软件开发过程的不正确认识。
{P175}
3.简述什么是软件工程
答:
软件工程是应用计算机科学、数学及管理科学等原理开发软件的工程。它借鉴系统工程的原则、方法,以提高质量,降低成本为目的。软件工程是从管理和技术两方面研究如何更好地开发和维护计算机软件的一门学科。采用工程化方法和途径来开发与维护软件。
1 软件工程的内容与方法习题
1. 说明软件工程研究的内容。
2. 请读者详细解释软件的定义和程序的定义。
3. 怎样理解软件工程的支持过程?
4. 敏捷文化现象是什么意思?
5. 系统集成是什么含义?怎样看待市场上的计算机网络集成商?
6. 怎样理解元数据?
2 软件生存周期及开发模型习题
1. 为什么要选择软件开发模型?软件开发模型与软件生存周期有什么关系?
2. 简述瀑布模型、增量模型、迭代模型、原型模型的优缺点。
3.请调查一下,你周围的软件公司采用哪几种软件开发模型进行软件开发。
周围的软件公司采用的软件开发模型有瀑布模型、增量模型、迭代模型、原型模型。其中瀑布模型和原型模型是这些软件公司最常用的,其次是增量模型,最后是迭代模型。
4.软件开发模型对你今后的工作,到底具有什么指导意义?
5.“图书馆信息系统”的开发选用什么模型合适?
3 软件立项与合同习题
1.为什么说立项是一切项目的源头,也是软件项目的源头?
2.立项的具体表现形式是什么?
3.立项书的编制者为什么主要是软件公司的市场销售人员,而不是开发人员?
4.为什么将项目的市场前景、功能、性能、接口、风险作为立项建议书的主要内容?
5.什么叫风险分析?技能风险和技术风险有何区别?
6.合同、任务书、立项建议书三者有何异同?有何关系?
4 软件需求习题
1.为什么需求分析特别重要?
2.需求分析的目的是什么?需求分析的难点在哪里?
3.为什么说需求分析是面向流程的?
4.需求分析的基本思路是什么?
5.业界存在哪三种需求分析方法?您认为哪一种更好?
6.需求管理过程的目标和内容是什么?
7.怎么理解“不符合项”?为什么要对它进行跟踪管理?
5 软件策划习题解答习题
1.简述软件策划的步骤?
2. 软件策划要实现的具体目标是什么?
3.所谓定义软件过程是什么含义?
4.所谓软件估计是什么含义? 5.简述软件工作产品成本费用的估计方法。