软件工程第八章知识点
软件工程导论课件第8章

5. 数据重构 对数据体系结构差的程序很难进行适应性和 完善性维护,因此,数据体系结构比源代码对程序 的长期生存力有更大影响。 数据重构是一种全范围的再工程活动。由于 数据重构对程序体系结构及程序中的算法有很大影 响,对数据的修改必然会导致程序体系结构或代码 层的改变。
3
2.适应性维护 为适应变化了的环境界面而修改软件的活动, 称为适应性维护。包括: (1)因硬件或支撑软件改变引起的变化; (2)将软件移植到新的机种上运行; (3)因数据环境的变化而做的变更。 这类维护大约占软件维护总工作量的25%。
4
3.完善性维护 为了满足用户要求,就得对软件进行修改和 扩充,我们称这种维护为完善性维护。完善性维护 主要包括: (1)提高处理效率; (2)提高性能。 在整个维护工作中, 完善性维护大约占50% 左右,区居第一位。
3. 逆向工程 软件的逆向工程是,分析程序以便在比源代码 更高的抽象层次上创建出程序的某种描述的过程, 也就是说,逆向工程是一个恢复设计结果的过程。 4. 代码重构 某些老程序的体系结构比较合理,但是,一些 模块的编码方式却是难于理解、测试和维护的。在 这种情况下,可以重构这些模块的代码。 通常,代码重构并不修改程序的体系结构,它 只关注个体模块的设计细节以及在模块中定义的局 部数据结构。如果重构扩展到模块边界以外并涉及 软件体系结构,则重构变成了正向工程。
13
(四)软件维护过程 维护过程的实质是对软件定义和开发过程的修 改和压缩。维护过程的主要任务是:建立维护机构, 填写维护报告和评价,为每个维护要求规定一种规 范化的处理序列,建立对维护活动的登记制度及规 定评价复审的标准。 1.维护组织 机构中有一名维护管理员总负责,每项维护要 求都通过维护管理员转交给相应的系统管理员去评 价。系统管理员对维护任务做出评价之后,由变化 授权人决定应该进行的活动,最后由系统管理员去 执行维护任务。
软件工程辅导课程八事务分析

• 设计程序主要采用结构化的程序设计方 法。
2020/5/19
基本步骤
• 确定模块如何实现 • 编写详细设计说明书 • 制定单元测试计划 • 详细设计评审
2020/5/19
什么是结构程序设计
• 结构程序设计是一种设计程序的技术,它 采用自顶向下逐步求精的设计方法和单入 口单出口的控制结构。
(1)自顶向下逐步求精的方法符合人类解决复 杂问题的普遍规律,因此可以显著提高软 件开发工程的成功率和生产率。
(2)用先全局后局部、先整体后细节、先抽象 后具体的逐步求精过程开发出的程序有清 晰的层次结构,因此容易阅读和理解。
(3)不使用GO TO语句仅使用单入口单出口的控 制结构,使得程序的静态结构和它的动态 执行情况比较一致,易于阅读和理解。
2020/5/19
结构化程序设计
• 概念
– 自顶向下逐步求精的设计方法 – 单入口单出口的控制结构 – 三种基本结构
• 优点
– 符合问题分解,抽象到具体的思路 – 具有清晰的层次结构,便于阅读和理解 – 程序的静态结构与动态执行具有较高的一致性 – 程序的控制结构简单(顺序,循环和分支) – 清晰化与模块化便于代码重用 – 程序的清晰结构便于程序的正确性证明
2020/5/19
事务分析
2020/5/19
事务分析
• 事务分析的设计步骤和变换分析的设计步骤大部 分相同或类似,主要差别仅在由数据流程图到软 件结构的映射方法不同。由事务流映射成的软件 结构包括一个接收分支和一个发送分支。
• 映射出接收分支结构的方法和变换分析映射出输 入结构的方法相似,即从事务中心的边界开始, 把沿着接收流通路的处理逻辑映射成模块。
软件工程考核知识点-第8章-软件维护

软件工程考核知识点-第8章-软件维护第8章软件维护软件投入使用后就进入软件维护阶段。
维护阶段是软件生存周期中时间最长的一个阶段,所花费的精力和费用也是最多的一个阶段。
8.1软件维护的内容软件维护内容有四种:校正性维护,适应性维护,完善性维护和预防性维护。
1.校正性维护在软件交付使用后,由于在软件开发过程中产生的错误并没有完全彻底的在测试中发现,因此必然有一部分隐含的错误被带到维护阶段来。
这些隐含的错误在某些特定的使用环境下会暴露出来。
为了识别和纠正错误,修改软件性能上的缺陷,应进行确定和修改错误的过程,这个过程就称为校正性维护。
校正性维护占整个维护工作的20%左右。
2.适应性维护随着计算机的飞速发展,计算机硬件和软件环境也在不断发生变化,数据环境也在不断发生变化。
为了使应用软件适应这种而修改软件的过程称为适应性维护。
这种维护活动占整个维护活动的25%。
3.完善性维护在软件漫长的运行时期中,用户往往会对软件提出新的功能要求与性能要求。
这是因为用户的业务会发生变化,组织机构也会发生变化。
为了适应这些变化,应用软件原来的功能和性能需要扩充和增强,为达到这个目的而进行的维护活动称为完善性维护,占整个维护活动的50%。
4.预防性维护为了提高软件的可维护性和可靠性而对软件进行的修改称为预防性维护。
这是为以后进一步的运行和维护打好基础,占整个维护工作的4%。
8.2 维护的特点8.2.1非结构化维护和结构化维护软件的开发过程对软件的维护过程有较大的影响。
若不采用软件过程的方法开发软件,则软件只有程序而无文档,维护工作非常难,这就是一种非结构化的维护。
若采用软件工程的方法开发软件,则各阶段都有相应的文档,这容易进行维护工作,这是一种结构化的维护。
1.非结构化维护因为只有源程序,而文档很少或没有文档,维护活动只能从阅读、理解、分析源程序开始。
这是软件工程时代以前进行维护的情况。
2.结构化维护用软件工程思想开发的软件具有各阶段的文档,这对于理解和掌握软件功能、性能、系统结构、数据结构、系统接口和设计约束有很大作用。
四年级软件工程下册第八单元总结

四年级软件工程下册第八单元总结1. 单元概述四年级软件工程下册第八单元主要介绍了软件工程的核心概念和方法,旨在帮助学生深入理解软件工程的基本原则,掌握软件开发过程中的关键环节,培养良好的软件工程实践习惯。
本单元涵盖了软件需求分析、软件设计、编码、测试和维护等方面的内容,通过理论讲解、实例分析和实践操作,使学生能够全面掌握软件工程的理论和实践技能。
2. 单元知识点2.1 软件需求分析软件需求分析是软件开发过程中的首要环节,主要任务是理解和收集用户需求,形成需求文档。
本单元介绍了需求分析的基本方法,包括调查法、观察法、访谈法和原型法等,并讲解了需求分析的基本步骤,包括需求收集、需求分析、需求规格化和需求验证等。
2.2 软件设计软件设计是软件开发过程中的关键环节,主要任务是根据需求分析结果,设计软件的总体结构和具体实现方案。
本单元介绍了软件设计的基本方法,包括结构化设计、面向对象设计和敏捷设计等,并讲解了设计的基本步骤,包括问题域分析、功能分析、结构分析和详细设计等。
2.3 编码编码是软件开发过程中的实现环节,主要任务是将设计好的软件方案转化为计算机可以理解的程序代码。
本单元介绍了编码的基本规范和技巧,包括编码风格、命名规则和编程习惯等,并讲解了常见编程错误和调试方法。
2.4 测试测试是软件开发过程中的验证环节,主要任务是检查软件的功能和性能是否满足需求分析中的规定。
本单元介绍了测试的基本方法,包括黑盒测试、白盒测试和灰盒测试等,并讲解了测试的基本步骤,包括测试计划、测试用例设计和测试执行等。
2.5 维护维护是软件开发过程中的持续环节,主要任务是修复软件在使用过程中发现的问题,优化软件性能,延长软件寿命。
本单元介绍了维护的基本方法和策略,包括错误修复、性能优化和功能扩展等,并讲解了维护的基本步骤,包括维护计划、维护实施和维护评估等。
3. 单元实践本单元要求学生通过实践操作,将所学的软件工程理论和方法应用于实际的软件开发过程中。
第8章 面向对象分析-软件工程基础(第3版)-胡思康-清华大学出版社

第8章 面向对象分析
第 5 页5
面向对象分析概述
面向对象分析的3类模型
OOA模型由3类独立模型构成:功能模型、静态模型和动态模型。 ➢功能模型描述软件系统的用户交互和功能。 ➢静态模型描述软件系统中类与对象以及它们间的关系,也因也称 为对象模型。 ➢动态模型描述系统的控制结构,也称为交互模型。
第8章 面向对象分析
第 6 页6
面向对象分析概述
类
静态模型的5个层次 类-对象层
对象
Coad和Yourdon 提出,对于大型、复杂 性软件系统,需要建立 分析问题域的静态模型。 该模型由5个层次组成: 类-对象层、结构层、 属性层、服务层和主题 层。
结构层 属性层 服务层 主题层
泛化关系
关联关系
属性
对象连接
服务
消息连接
⑶ 用例描述:用文字信息详细描述用例的内容,它是对用 例的有益补充。
第8章 面向对象分析
第 8 页8
建立静态模型
➢用例模型分别从参与者和系统的角度描述用户需求, 依据用例模型导出静态模型。静态模型是面向对象建 模中最基本、最重要、最耗时的技术活动。 ➢静态建模的任务是构建问题域的概念模型,把问题 域中的实体转变为信息域的类与对象以及它们间的关 系,因此也被称为对象模型或领域模型。 ➢静态模型通过建立类图及关系来反映领域概念,而 面向对象设计也建立类图,但各阶段对类的抽象程度 不同。
第8章 面向对象分析
第 12 页12
建立动态模型
建立状态图
状态图描述的就是对象状态的转换过程。通过对对象状态 的分析,能够了解对象在系统流程中的变换,从而发现潜在的事 件和条件。
建立状态图的一般过程如下: ⑴ 了解系统的主要功能和性能,确定和它们有关的主要对象。 ⑵ 列出一个对象的生存期内的所有可能的状态。 ⑶ 确定对象状态改变时的触发条件或事件。 ⑷ 在一个对象中,选定一组与描述状态相关的行为属性和促使 改变状态的方法。 ⑸ 结合触发条件、事件、行为属性值改变的先后顺序,建立软 件系统的状态图。
软件工程吴迪第八章课后答案

软件工程吴迪第八章课后答案HEN system office room 【HEN16H-HENS2AHENS8Q8-HENH1688】软件工程课后答案《软件工程》作业及答案1-1什么是软件危机?它有哪些典型表现?为什么会出现软件危机?答:软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
概括地说,软件危机包含下述两方面的问题:如何开发软件,以满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件。
软件危机典型表现:对软件开发成本和进度的估计常常很不准确。
用户对“已完成的”软件系统不满意的现象经常发生。
软件产品的质量往往靠不住。
软件常常是不可维护的。
软件通常没有适当的文档资料。
软件成本在计算机系统总成本中所占的比例逐年上升。
软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。
产生软件危机的原因:一方面与软件本身的特点有关,另一方面也和软件开发与维护的方法不正确有关。
软件不同于硬件,它是计算机系统中的逻辑部件而不是物理部件。
管理和控制软件开发过程相当困难。
软件是规模庞大,而且程序复杂性将随着程序规模的增加而呈指数上升。
目前相当多的软件专业人员对软件开发和维护还有不省糊涂观念,在实践过程中或多或少地采用了错误的方法和技术,这是使软件问题发展成软件危机的主要原因。
1-2假设你是一家软件公司的总工程师,当你把图给手下的软件工程师们观看,告诉他们及早发现并改正错误的重要性时,有人不同意你的观点,认为要求在错误进入软件之前就清除它们是不现实的,并举例说:“如果一个故障是编码错误造成的,那么,一个人怎么能在设计阶段清除它呢?”你怎么反驳他?1-3什么是软件工程?它有哪些本质特性?怎样用软件工程消除软件危机?答:软件工程是指导计算机软件开发和维护的一门工程学科。
采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它。
《软件工程(第二版)》 第八章

黑盒测试时完全不考虑程序内部的结构和处理过程, 只按照规格说明书的规定来检查程序是否符合它的功能 要求。黑盒测试是在程序接口进行的测试,又称为功能 测试。
黑盒测试检查的主要方面有: 程序的功能是否正确或完善; 数据的输入能否正确接收,输出是否正确; 是否能保证外部信息(如数据文件)的完整性等。
用黑盒法设计测试用例时,必须用所有可能的输入数 据来检查程序是否都能产生正确的输出。
1.单元测试 又称模块测试。每个程序模块完成一个相对独 立的子功能,所以可以对该模块进行单独的测试。 由于每个模块都有清晰定义的功能,所以通常比较 容易设计相应的测试方案,以检验每个模块的正确 性。 2.集成测试 在单元测试完成后,要考虑将模块集成为系统 的过程中可能出现的问题,例如,模块之间的通信 和协调问题,所以在单元测试结束之后还要进行集 成测试。这个步骤着重测试模块间的接口,子功能 的组合是否达到了预期要求的功能,全程数据结构 是否有问题等。
1、语句覆盖
语句覆盖就是设计足够的调试用例,使得程序中的每个 语句至少执行一次。
左 图 程 序 段 中 共 有 4 条 路 径 : P1 ( ace ) 、 P2 (abd)、P3(abe)、P4(acd)。 P1正好满足语句覆盖的条件。可以设计如下的 输入数据: A=2,B=0,x=4 语句覆盖不能发现判断中的逻辑运算中的错误。 第一个判断中的逻辑运算符“&&”若错写成了“||”, 利用上面的输入数据则检查不出这个错误。
5、条件组合覆盖 条件组合覆盖就是设计足够的测试用例,使得每个判定 中的条件的各种可能组合都至少出现一次。 可能的条件组合: 相应的输入数据: (1)A>1,B=0 A=2,B=0,x=4 (2)A>1,B≠0 满足(1)和(5) (3)A≤1,B=0 A=2,B=1,x=1 (4)A≤1,B≠0 满足(2)和(6) (5)A=2,x>1 A=1,B=0,x=2 (6)A=2,x≤1 满足(3)和(7) (7)A≠2,x>1 A=1,B=1,x=1 (8)A≠2,x≤1 满足(4)和(8) 显然,满足条件组合覆盖的测试数据,也一定满足判定 覆盖、条件覆盖和判定/条件覆盖标准。但是,满足条件组 合覆盖标准的测试数据并不一定覆盖了程序中的每条路径, 例如,利用上述四组测试数据就遗漏了路径P4(acd)。
软 件 工 程(8-n)

结构化软件设计
阳王东
回答问题
什么是软件设计?有哪些阶段和任务? 什么是模块化设计?有哪些原理? 什么是软件结构和体系结构?二者有什么区别? 数据流有哪些类型?如何区分?
数据流映射的步骤是什么?
什么是结构化程序设计?有哪些工具? 什么是JSD方法?具体步骤是什么?
重构
重构是一种重新组织的技术,可以简化构件或模块的
设计或编码而无需改变其功能或行为。
重构是一种改进程序内部结构但不改变代码或设计的
外部行为。 “先使它转起来,再使它快起来”。
小结
设计的基本原理和概念包括模块化、抽象、体系结构、
信息隐蔽、模块独立、逐步求精和重构等。
软件体系结构提供了待建系统的整体视图,它描述软
本质,才能准确分析和处理问题,找到合理的解决方 案。
逐步求精
逐步求精,或称逐步细化,是一种自顶向下的设计策
略。
逐步求精是人类采用抽象到具体的过程把一个复杂问
题趋于简单化控制和管理的有效策略。 抽象和精化是互补的概念。
信息隐藏
信息隐蔽原则建议模块应该具有的特征是:每个模块
对其他所有模块都隐蔽自己的设计决策。
口的数据类型和数目。 分类:
非直接耦合 数据耦合 控制耦合 外部耦合
公共耦合
内容耦合
耦合性分类
弱 强
非直接耦 数据耦合 特征耦合 控制耦合 外部耦合 公共耦合 内容耦合 合 弱耦合 中耦合 较强耦合 强耦合
模块化设计的优化
改进软件结构提高模块独立性 在满足模块化要求的前提下尽量减少模块数量,在满
模块独立性由两个定性标准度量: 模块自身的内聚(Cohesion)),也称为块内联系或 模块强度, 模块之间的耦合(Coupling),也称为块间联系。 模块独立性愈高,则块内联系越强,块间联系越弱。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、选择
1、软件维护工作的最主要部分是(A )
A.改正性维护B.适应性维护
C.完善性维护D.预防性维护
2、软件维护工作中大部分的工作是由于(D )而引起的。
A.程序的可靠性 B.适应新的硬件环境
C.适应新的软件环境 D.用户的需求改变
3、在软件生存周期中,时间最长,所花费的精力和费用也最多的阶段是 B 。
A.详细设计 B.维护
C.概要设计 D.测试
4、修改软件以适应外部环境(新的硬件、软件配置)或数据环境(数据库、数据格式、数据输出/输入方式、数据存储介质)发生变化是指?( B )
A.改正性维护B.适应性维护
C.完善性维护D.预防性维护
5、软件的可维护性是评价软件质量的一个重要标准,下面关于提高软件可维护性的措施描述正确的有 A 。
(A)在进行需求分析的同时考虑维护问题
(B)设计时选择时间效率和空间效率尽可能高的算法
(C)提高程序可读性,尽量使用高级语言编程
(D)测试结束时,删除程序中的注解以缩短源程序长度
6、可维护性的特性中,相互矛盾的是 B 。
A.可理解性与可测试性 B.效率性和可修改性
C.可修改性和可理解性
D. 可理解性与可读性
7、各种软件维护的类型中最重要的是 A .
A.完善性维护 B.纠错性维护
C.适应性维护
D.预防性维护
8、软件维护困难的主要原因是 C 。
A.费用低 B.人员少
C.开发方法的缺陷
D.维护难
9、维护阶段的文档是 C 。
A.软件需求说明 B.操作手册
C.软件问题报告
D.测试分析
10、产生软件维护的副作用,是指 C 。
A.开发时的错误 B.隐含的挫样
C.因修改软件而造成的错误
D.运行时误操作
二、填空
1、在软件产品被开发出来并交付用户使用之后,就进入了软件的阶段。
(运行维护)3、软件生命周期的最后一个阶段是软件的阶段,也是持续时间最长、代价最大的一个阶段。
(维护)
2、软件工程的主要目的就是要提高软件的可性,减少软件所需要的工作量,降低软件系统的。
(维护,维护,总成本)
4、是影响软件可维护性的决定因素。
(文档)
5、实质上是软件再工程。
(预防性维护)
6、维护可分为____,____,____,____四类。
(改正性维护;适应性维护;完善性维护;预防性维护)
三、简答
1、决定软件可维护性的因素有哪些?
答:(1)可理解性
(2)可测试性
(3)可修改性
(4)可移植性
(5)可重用性
2、软件维护过程包括哪些方面?
答:(1)维护组织
(2)维护报告
(3)维护事件流
(4)保护维护记录
(5)评价维护活动
3、软件维护的定义和特点?
答:定义:所谓软件维护就是在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件的过程。
特点:(1)结构化维护与非结构化维护差别巨大
(2)维护的代价高昂
(3)维护的问题很多
4、修改性维护与排错是否是一回事?为什么?
答案:修改性维护与排错不是一回事,改正性维护是对软件投入运行后,暴露出的一部分在测试阶段没有发现的错误,对软件进行的修改的过程。
排错是错误发现后,对错误定位,然后修改程序的过程。
前者是一种维护过程,而后者是维护过程中的一个步骤。
5、影响软件可维护性的主要因素有哪些?你认为的途径是什么?
答案:软件系统的维护,必须是软件是可以维护的,要使得软件可以维护,必须保证软件的可维护性。
软件的可维护性是指理解,改正,改动,改进软件的难易程度。
它受三各方面的影响:即软件的可理解性,可测试性,可修改性。
解决软件可维护性还有两个关键的问题:软件系统必须要有完整,详细的文档资料;并且要在系统开发中采用软件模块化,结构化设计,使用合适的程序语言,注意程序风格等。