软件工程第8章维护—总结

  • 格式:docx
  • 大小:39.17 KB
  • 文档页数:26

软件工程第8章维护—总结

第一篇:软件工程第8章维护—总结

第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.理解别人写的程序通常非常困难; 没有文档或文档资料显著不足; 不能指望开发人员详细说明软件; 设计时未考虑将来的修改; 维护不是一项吸引人的工作。

8.3软件维护过程

1.维护组织

未必建立正式的维护组织,但是非正式的委托责任是绝对必要的。

在维护活动开始之前就明确维护责任是十分必要的,可以大大减少维护过程中可能出现的混乱。

2.维护报告

即软件修改报告。

3.维护的事件流

4.保存维护记录

5.评价维护活动

8.4软件的可维护性

定义:维护人员理解、改正、改动或改进这个软件的难易程度。

8.4.1决定软件可维护性的因素

1.可理解性

定义:外来读者理解软件的结构、功能、接口和内部处理过程的难易程度。

2.可测试性

可以用程序复杂度来度量它的可测试性。

3.可修改性

耦合、内聚、信息隐藏、局部化、控制域与作用域的关系等,都影响软件的可修改性。

4.可移植性

定义:把程序从一种计算环境(硬件配置和操作系统)转移到另一种计算环境的难易程度。

5.可重用性

定义:同一事物不做修改或稍加改动就在不同环境中多次重复使用。

大量使用可重用的软件构件开发软件,可以提高软件的可维护性。

8.4.2文档

软件系统的文档可以分为以下2类:

1.用户文档:功能描述,安装文档,使用手册,参考手册,操作员指南等。

2.系统文档:系统设计、实现、测试等文档。

习题8 1.软件的可维护性与哪些因素有关?在软件开发过程中应该采取哪些措施来提高软件产品的可维护性?

2.假设自己的任务是对一个已有的软件做重大修改,而且只允许从下述文档中选取两份:(a)程序的规格说明;(b)程序的详细设计结果(自然语言描述加上某种设计工具表示);(c)源程序清单(其中有适当数量的注解)。

应选取哪两份文档?为什么这样选取?打算怎样完成交给自己的任务?

3.分析预测在下列系统交付使用以后,用户可能提出哪些改进或扩充功能的要求。如果由自己来开发这些系统,在设计和实现时将采取哪些措施,以方便将来的修改?

(1)储蓄系统

为方便储户,某银行拟开发计算机储蓄系统。储户填写的存款单或取款单由业务员输入系统,如果是存款,系统记录存款人姓名、住址、存款类型、存款日期、利率等信息,并印出存款单给储户;如果是取款,系统计算利息并印出利息清单给储户。

(2)机票预订系统

为方便旅客,某航空公司拟开发一个机票预订系统。旅行社把预订机票的旅客信息(姓名、性别、工作单位、身份证号码、旅行时间、旅行目的地等)输入进该系统,系统为旅客安排航班,印出取票通知和账单,旅客在飞机起飞的前一天凭取票通知和账单交款取票,系统校对无误即印出机票给旅客。

(3)患者监护系统

目前住院病人主要由护士护理,这样做不仅需要大量护士,而且由于不能随时观察危重病人的病情变化,还可能会延误抢救时机。某医院打算开发一个以计算机为中心的患者监护系统。

医院对患者监护系统的基本要求是随时接收每个病人的生理信号(脉搏、体温、血压、心电图等),定时记录病人情况以形成患者日志,当某个病人的生理信号超出医生规定的安全范围时向值班护士发出警告信息,此外,护士在需要时还可以要求系统印出某个指定病人的病情报告。

第二篇:软件工程总结

第一章软件与软件工程的概念

软件的概念:软件是计算机系统中与硬件相互依存的另一部分,软件包括程序,数据,及其相关文档的完整集合。程序是按事先设计的功能和性能要求执行的指令序列。数据是使程序能够正确地处理信息的数据结构。文档是与程序开发,维护和使用有关的图文资料。

程序的最小单位是函数及子程序,程序与数据是分离的,在面向对象程序设计时代,程序的最小单位是类,在类中封装了相关的数据及指令代码。

软件的特性,判断正误:1.软件是无形的、不可见的逻辑实体,因此,软件是无法描述的。(错)

2、软件的开发特性是指软件需要大量手工劳动,难以自动化生产。(对)

3、有缺陷的软件就是废品。(错)

4、软件的生产指的是软件的复制。(错)

5、由于软件的开发充满人的个性特点,因此管理并不决定软件开发的成败(错)。

6、软件的开发环境往往就是软件的运行环境,或者与其兼容。(对)

7、合格的软件产品不需要维护,软件需要维护说明其质量不合格。(错)

8、软件可以不断改进,因此软件不需要废弃。(错)

软件的分类:1,系统软件:能与计算机硬件紧密配合在一起,使计算机系统各个部件,相关的软件和数据协调,高效的工作的软件。2,应用软件,是在系统软件的支持下,在特定区域内开发,为特定目的服务的一类软件。3,支撑软件,也叫工具软件,是协助用户开发软件的工具性软件。4,可复用软件,最初实现的典型的可复用软件是各种标准函数库,通常是由计算机厂商提供的系统软件的一部分。

IEEE给出的定义:软件工程是开发,运行,维护和修复软件的系统方法。软件的定义:计算机程序,方法,规则,相关的文档资料一集在计算机上运行时所必需的数据。

软件危机的典型表现

1、成本太高,预算不准

2、超过预计时间

3、软件质量标准不明确

4、生产率低

5、缺乏文档资料,难以维护。原因:1,缺乏软件开发的经验和有关软件开发数据的积累,使得开发工作的计划很难制定。2.软件人员与用户的交流存在障碍,除了知识背景的差异,缺少合适的交流方法及需求描述工具。3,软件开发过程不规范,缺少方法和规范的指导。4,随着软件规模的增大,其复杂性往往会呈指数级升高。5,缺少有效的软件评测手段,提交用户的软件质量差。

软件危机发生的主要原因有:

1、遇到了无法解决的高难度技术问题(不是)

2、无法招聘到足够的编程高手(不是)

3、软件人员与用户互相不理解(是)

4、计划和管理不科学、落实不力(是)

5、软件质量标准不明确(是)

软件的质量特性包括(选择)问题1:

1、功能性

2、可靠性

3、使用性

4、经济性(不包括)

软件的质量特性包括(选择)问题2:

1、效率

2、可维护性

3、可移植性

4、经济性(不包括)

软件工程的目标是运用先进的软件开发技术和管理方法来提高软件的质量和生产率,也就是要以较短的周期,较低的成本生产出高质量的软件产品,并最终实现软件的工业化生产。软件生存期:软件的孕育,诞生,成长,成熟,衰亡的生存过程。软件生存期由软件定义,软件开发和运行维护三个时期组成,每个时期又可划分为若干个阶段。

2、软件定义时期的任务主要任务是解决“做什么”的问题,确定工程的总目标和可行性;实现工程目标的策略及系统功能;估计需要的资源和成本;制订工程进度表。通常又分为3个阶段:问题定义,可行性研究,需求分析。

3、软件开发时期的任务和包含阶段主要任务是解决“如何做”的问题,设计和实现定义的软件。由概要设计、详细设计、编码和测试4个阶段组成。

4、软件运行维护时期的主要任务是使软件持久地满足用户的需要,通常有4类维护活动:改正性维护;适应性维护;完善性维护;预防性维护。开发过程中的典型文档:软件需求规格说明书。项目计划。软件测试计划。软件设计说明书。用户手册。软件工程各个阶段的基本任务

1、问题定义与可行性研究:解决什么问题?能否解决问题?是否值得做?”

2、需求分析:做什么

3、软件设计:如何实现

4、程序编码和单元测试:实现设计

5、集成和系统测试:组装连接测试、功能验证测试

6、软件运行和维护:修改 第二章软件工程方法与工具

软件工具:是指能支持软件生存周期中某一阶段(如系统定义,需求分析,设计,编码,测试,维护等)的需要而使用的软件工具。

需求分析工具

1、结构化图形工具箱。通过数据流程图DFD进行功能分析。包括DFD图形工具,实体-关系图(E-R)图形工具,Jackson图形工具,Warnier图形工具,Visio综合工具,2、面向对象工具,Rational

Rose,PowerDesigner,Visio 设计工具(1)概要设计工具:设计目标软件的体系结构、控制结构和数据结构。软件的体系结构通常用模块结构图来描述。模块的数据结构通常用实体-关系图来描述。Visio。Rational Rose 详细设计工具。设计模块的算法和内部实现细节。详细设计描述方法有输入-处理-输出(IPO)图。问题分析图(PAD)。盒图(NS图)。流程图(FC)。程序设计语言(PDL)。结构化语言。判定表。判定树

第三章软件需求获取与结构化分析方法 需求获取的主要任务是与用户沟通,了解系统或产品的目标是什么,客户或用户想要实现什么,系统和产品如何满足业务的要求,最终系统或产品如何用于日常工作。获取并理解用户的需求是软件工程师所面对的最困难的任务之一。

需求分析的困难体现:系统的目标或范围问题;需求不准确性问题;需求的易变问题

需求获取的任务:发现和分析问题,并分析问题的原因,结果关系。与用户进行各种方式的交流,并使用调查研究方法收集信息。按照三个成分即数据,过程和接口观察问题的不同侧面。将获取的需求文档化,形式有用例,决策表,决策树等。需求获取的原则:深入浅出,以流程为主线。

获取具体的需求的途径1,与用户交流。2,现有产品或竞争产品的描述文档。3,系统需求规格说明。4,当前系统的问题报告和改进要求。5,市场调查和用户问卷调查。6,观察用户如何工作。

关于需求获取问题的认识辨析:

1、没有与用户交流就不可能获取系统需求。(不能获取准确、全面的系统需求)

2、没有经过与用户交流而获取的需求都是不真实的需求。(一些需求从用户以外的途径获取)

3、系统开发必须独立完成,参考类似系统及技术文档属于抄袭行为,应予避免。(系统开发包含研究行为,应了解对手产品,取长补短)

4、系统开发包含改进当前系统的缺陷和不足。(对)

5、需求调查时,用户所说的需求未必是真实、准确的需求,因此需求分析需要依赖用户,但是不能过分迷信用户。(对,需求描述是