第11章《软件工程》

合集下载

软件工程 判断题

软件工程 判断题

判断题:第1章概述1. 由于今天个人计算机不断发展壮大,人们不再采用软件团队的开发方式。

(×)2. 由于软件是产品,因此可以应用其他工程制品所用的技术进行生产。

(×)3. 购买大多数计算机系统所需的硬件比软件更昂贵。

(×)4. 大多数软件产品在其生命周期中不需要增强功能。

(×)精品文档,你值得期待5. 大多数软件系统是不容易变化的,除非它们在设计时考虑了变化。

(√)6. 一般来说,软件只有在其行为与设计者的目标一致的情况下才能成功。

(×)第4章需求工程1. 在需求分析过程中,分析员要从用户那里解决的最重要的问题是明确软件做什么。

(√)2. 软件需求规格说明书在软件开发中具有重要的作用,它是软件可行性分析的依据。

(×)第5章面向对象基础1. 模型是对现实的简化,建模是为了更好地理解所开发的系统。

(√)2. UML语言支持面向对象的主要概念,并与具体的开发过程相关。

(×)第6章面向对象分析1. 面向对象分析的核心在于建立一个描述软件系统的模型。

(×)第7章软件体系结构设计1. 系统体系结构的最佳表示形式是一个可执行的软件原型。

(×)2. 软件体系结构描述是不同项目相关人员之间进行沟通的使能器。

(√)3. 良好的分层体系结构有利于系统的扩展与维护。

(√)4. 消除两个包之间出现的循环依赖在技术上是不可行的。

(×)5. 设计模式是从大量成功实践中总结出来且被广泛公认的实践和知识。

(√)第8章面向对象设计1. 面向对象设计是在分析模型的基础上,运用面向对象技术生成软件实现环境下的设计模型。

(√)2. 系统设计的主要任务是细化分析模型,最终形成系统的设计模型。

(×)3. 关系数据库可以完全支持面向对象的概念,面向对象设计中的类可以直接对应到关系数据库中的表。

(×)4. 用户界面设计对于一个系统的成功是至关重要的,一个设计得很差的用户界面可能导致用户拒绝使用该系统。

软件工程第十一章面向对象设计

软件工程第十一章面向对象设计

THANKS
感谢观看
01
抽象类是一种不能被实例化的 类,它只能被其他类继承。
02
抽象类可以包含抽象方法和具 体方法。抽象方法是没有具体 实现的方法,需要在继承抽象 类的子类中实现。
03
通过继承抽象类,子类可以继 承抽象类的属性和方法,并且 可以重写或实现抽象类中的方 法。
接口与抽象类的选择
在设计软件时,选择使用接口还是抽象类取决于具体需求和设计目标。
关系
关系描述了对象之间的交互和联系。 常见的关系包括关联、聚合和继承。
继承与多态的设计
继承
继承是一种实现代码重用的方式,子类可以继承父类的属性和方法,并可以扩展或覆盖它们。通过继承,可以建 立类之间的层次结构,使得代码更加清晰和易于维护。
多态
多态是指一个接口可以有多种实现方式,或者一个对象可以有多种形态。多态可以提高代码的灵活性和可扩展性, 使得程序更加易于维护和修改。
02
类与对象的设计
类的定义与属性
类的定义
类是对象的抽象,它描述了一组具有相同属性和行为的对象。类定义了对象的结构、行为和关系。
属性
属性是类中用于描述对象状态的变量。每个对象都有其自己的属性值,这些属性值决定了对象的状态 。
对象的行为与关系
行为
行为是类中定义的方法,用于描述对 象可以执行的操作。方法定义了对象 的行为和功能。
高层模块不应该依赖于低层模块,它们都应 该依赖于抽象。
面向对象设计的优势
提高代码可重用性
通过类和继承实现代码重用,减少重 复代码。
提高代码可维护性
面向对象设计使得代码结构更加清晰, 易于理解和维护。
提高开发效率
通过快速原型开发,快速构建软件系 统。

软件工程

软件工程

1-1 什么是软件危机?它有哪些典型表现?为什么会出现软件危机?1-2 假设你是一家软件公司的总工程师,当你把图1.1给手下的软件工程师们观看,告诉他们及早发现并改正错误的重要性时,有人不同意你的观点,认为要求在错误进入软件之前就清除它们是不现实的,并举例说:“如果一个故障是编码错误造成的,那么,一个人怎么能在设计阶段清除它呢?”你怎么反驳他?1-3 什么是软件工程?它有哪些本质特性?怎样用软件工程消除软件危机?1-4 简述结构化范型和面向对象范型的要点,并分析它们的优缺点。

1-6 什么是软件过程?它与软件工程方法学有何关系?1-7 什么是软件生命周期模型?试比较瀑布模型、快速原型模型、增量模型和螺旋模型的优缺点,说明每种模型的适用范围。

2-1 在软件开发的早期阶段为什么要进行可行性研究?应该从哪些方面研究目标系统的可行性?2-2 为方便储户,某银行拟开发计算机储蓄系统。

储户填写的存款单或取款单由业务员键入系统,如果是存款,系统记录存款人姓名、住址、存款类型、存款日期、利率等信息,并印出存款单给储户;如果是取款,系统计算利息并印出利息清单给储户。

请写出问题定义并分析此系统的可行性。

2-3 为方便旅客,某航空公司拟开发一个机票预订系统。

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

请写出问题定义并分析此系统的可行性。

2-4 目前住院病人主要由护士护理,这样做不仅需要大量护士,而且由于不能随时观察危重病人的病情变化,还会延误抢救时机。

某医院打算开发一个以计算机为中心的患者监护系统,请写出问题定义,并且分析开发这个系统的可行性。

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

《软件工程》教案

《软件工程》教案

《软件工程》教案课程简介本课程旨在介绍软件工程的基本概念、原理和方法,培养学生的软件工程思维和实践能力。

通过理论讲解和实践操作,帮助学生了解软件开发的整体过程,掌握软件工程的基本技术和工具。

课程目标- 熟悉软件工程的基本概念和主要原理- 掌握软件项目管理和开发的基本流程- 能够运用软件工程方法和工具进行软件开发和维护- 培养学生的团队合作和沟通能力教学内容1. 软件工程概述- 软件工程的定义和发展历程- 软件工程的重要性和作用2. 软件过程模型- 瀑布模型- 增量模型- 螺旋模型- 敏捷开发模型3. 软件需求分析与规格说明- 需求获取和分析- 需求规格说明的方法和技巧4. 软件设计与架构- 模块化设计原则- 面向对象设计方法- 软件架构的设计和评估5. 软件测试与质量保证- 静态测试和动态测试- 软件质量标准和评估- 软件缺陷管理和修复6. 软件项目管理- 项目计划和进度管理- 需求管理和变更控制- 软件配置管理和版本控制7. 软件开发工具与环境- 集成开发环境(IDE)的使用- 版本控制工具(如Git)的使用- 自动化构建工具(如Maven)的使用教学方法本课程采用理论与实践相结合的教学方法。

通过课堂讲解、案例分析和项目实践等形式,激发学生的研究兴趣和动手能力。

教学评估1. 平时成绩占比:60%- 课堂参与和讨论- 作业完成情况2. 期末考试占比:40%参考教材- 《软件工程导论》(第7版),作者:Ian Sommerville- 《软件工程与项目实践》(第2版),作者:高博- 《软件工程基础》(第3版),作者:王晓敏以上为《软件工程》教案的简要内容介绍,具体的教学安排和教学材料请以教师课堂讲解为准。

《软件工程》教学课件 第11章 软件项目管理

《软件工程》教学课件 第11章 软件项目管理
式为组织型、半独立型或嵌入型。
下 表 是 根 据 63 个 项 目 的 数 据 统 计 结 果 , 按 照 基 本 的 COCOMO模型估算的工作量和进度。
总体类型 组织型
半独立型 嵌入型
工作量 MM=10.4(KLOG)1.05 MM=3.0(KLOG)1.12 MM=3.6(KLOG)1.20
进度 TDEV=10.5(MM)0.38 TDEV=10.5(MM)0.35 TDEV=10.5(MM)0.32
i1
其中:ai — 估计的最小行数 bi — 估计的最大行数 mi — 最可能的行数
将估算的源代码行数,乘以根据经验推算的每行源代 码所需成本,即为该软件的成本。
IBM 估算模型
1977年由Waiston 和 Felix 总结了IBM联合系统 分部(FSD)负责的60个项目的数据,利用最小二 乘法拟合,得到如下估算公式:
PERT(Program evaluation & review technique)计 划评审技术或CPM(Critical path method)关键路径法, 都是采用网络图来描述项目的进度安排。如图描述了开发 模块A、B、C的任务网络图。各边上所标注的数字为该任 务所持续的时间,数字结点为任务的起点和终点。
70
任务
月份 1 2 3 4 5 6 7 8 9 10 11 12
60
需求分析 ▲ ▲ ▲
50
总体设计
▲ ▲▲
40
详细设计
▲▲
30
编码 软件测试
▲ ▲▲
20
10
▲▲▲
0 一月
二月
三月
四月
五月
六月
进度表
2.甘特图(Gantt Chart)

软件工程课本讲解面向对象的OMT方法

软件工程课本讲解面向对象的OMT方法
装成模块。 最终得到:对象设计文档 = 细化旳对象模型 + 细
化旳动态模型 + 细化旳功能模型。
16
第11章 面向对象的OMT方法
对象模型化技术OMT 对象模型化技术把分析时搜集旳信息构造在三类
模型中,即对象模型、功能模型和动态模型。
这个模型化旳过程是一种迭代过程。
17
第11章 面向对象的OMT方法
图11.4 三元关联 29
第11章 面向对象的OMT方法
角色为关联旳端点,阐明类在关联中旳作用和角 色。不同类旳关联角色可有可无,同类旳关联角色不 能省。角色旳表达如图11.5所示。
教师
讲授
课程
主讲
内容
图11.5 关联旳角色旳表达
30
第11章 面向对象的OMT方法
2) 受限关联
受限关联由两个类及一种限定词构成,限定词是 一种特定旳属性,用来有效地降低关联旳重数,限定 词在关联旳终端对象集中阐明。
技术之上旳,OMT措施旳基础是开发系统旳3个模型,再 细化这3种模型,并优化以构成设计。对象模型由系统中 旳对象及其关系构成,动态模型描述系统中对象对事件旳响应及对 象间旳相互作用,功能模型则拟定对象值上旳多种变换及变换上旳
约束。
6
第11章 面向对象的OMT方法
11.1.2 系统分析
分析旳目旳是拟定一种系统“干什么”旳模型,该模型经过 使用对象、关联、动态控制流和功能变换等来描述。分析过程是 一种不断获取需求及不断与顾客磋商旳过程。
8
第11章 面向对象的OMT方法
3. 构造动态模型
构造动态模型旳环节如下: (1) 准备经典交互序列旳脚本。 (2) 拟定对象间旳事件并为各脚本安排事件跟踪。 (3) 准备系统旳事件流图。 (4) 开发具有主要动态行为旳各个类旳状态图。 (5) 检验状态图中共享事件旳一致性和完整性。 最终得到:动态模型 = 状态图 + 全局事件流图。

第11章 软件项目管理-软件工程基础(第3版)-胡思康-清华大学出版社

第11章  软件项目管理-软件工程基础(第3版)-胡思康-清华大学出版社

第 4 页4
软件项目管理概述
软件项目管理目标
软件项目管理成功的目标包括以下几方面: ⑴ 如期完成项目 ⑵ 项目成本控制在计划之内 ⑶ 妥善处理用户的需求变动 ⑷ 保证项目质量⑸ 保持对项目进度的跟踪与控制
第11章 软件项目管理
第 5 页5
软件项目规模度量
任何软件项目都需要定量描述才能制定软件开发成本。只有把软件项目 中设计的各项因素,如软件开发时间、人员数量、开发环境的软件工具和硬 件系统、资金等资源的指标尽可能量化,才能准确估算软件产品的规模、复 杂度、工作总量。没有定量的项目将难以展开软件管理和实施过程。
❖系统的内部处理复杂吗
❖代码设计可重用吗
❖ 设计中包括转换和安 装吗
❖ 系统的设计支持不同 组织的多次安装吗
❖ 系统的实际有利于用 户的修改和使用吗
第 10 页10
软件项目规模度量
面向功能的度量
一旦计算出功能点,就可仿照LOC的方式度量软件的生产率、质量和 其它属性:
生产率 = FP/E 质量 = ER/FP 成本 = S/FP 文档 = ER/FP
第11章 软件项目管理
第 2 页2
软件项目管理概述
软件项目管理的特点
⑷ 软件产品虽然分通用软件和领域软件,但其都是“定制”的定向系统 ,目前仍无法摆脱手工开发模式。“没有完全一样的软件项目”,这不仅对 项目实施过程难以控制,而且还需要根据具体应用领域、环境等制定特殊管 理过程和内容。
⑸ 源于应用领域的复杂性和软件开发技术的复杂性,软件自身是一个复 杂系统。因而软件管理要对复杂软件系统过程做到未雨绸缪,对软件开发内 容抽丝剥茧般的细致。 ⑹ 软件项目管理需要综合各方面,特别是社会因素、精神因素、认知要素、 技术问题、领域问题、用户沟通等各项复杂内容。

计算机科学与技术专业课课件_软件工程SE_Chapter11

计算机科学与技术专业课课件_软件工程SE_Chapter11
2013-8-31 上海大学计算机学院 4
面向对象设计的准则
◆强内聚
(1) 服务内聚
一个服务应该完成一个且仅完成一个功能。
(2) 类内聚
类的属性和服务应该全都是完成该类对象的任务所必需的, 其中不包含无用的属性或服务。如果某个类有多个用途,通 常应该把它分解成多个专用的类。
(3) 一般-特殊内聚
一般-特殊结构应该是对相应的领域知识的正确抽取。 一般说来,紧密的继承耦合与高度的一般-特殊内聚是一致的。
◆信息隐藏
●信息隐藏通过对象的封装性实现:类结构分离了接口 与实现,从而支持了信息隐藏。对于类的用户来说, 属性的表示方法和操作的实现算法都应该是隐藏的。
2013-8-31
上海大学计算机学院
3
面向对象设计的准则
◆弱耦合
(1) 交互耦合 对象之间的耦合通过消息连接来实现,则这种耦合就 是交互耦合。尽量降低消息连接的复杂程度。应该尽 量减少消息中包含的参数个数,降低参数的复杂程度。 减少对象发送(或接收)的消息数。 (2) 继承耦合 继承是一般化类与特殊类之间耦合的一种形式。从本 质上看,通过继承关系结合起来的基类和派生类,构 成了系统中粒度更大的模块。因此,它们彼此之间应 该结合得越紧密越好。 设计应该使特殊类尽量多继承并使用其一般化类的属 性和服务。
实例重用、继承重用和多态重用。
◆可重用软构件应具备的特点
(1) 模块独立性强。具有单一、完整的功能,且经过 反复测试被确认是正确的。 (2) 具有高度可塑性。提供为适应特定需求而扩充或 修改已有构件的机制。 (3) 接口清晰、简明、可靠。
2013-8-31
上海大学计算机学院
9
类构件
◆类构件的重用方式
2013-8-31 上海大学计算机学院 12

软件工程 第4版 第11章 软件工程管理

软件工程 第4版 第11章 软件工程管理

本章内容
11.1 软件工程管理概述 11.2 软件开发成本估算 11.3 软件工程人员组织 11.4 软件配置管理 11.5 软件质量保证 11.6 软件开发风险管理 11.7 软件工程标准与软件工程文档
这种估算方法的优点是,由于各个任务单元的成本 可交给该任务的开发人员去估计,因此估计结果比较准 确。缺点在于,由于具体工作人员往往只注意到自己职 责范围内的工作,而对涉及全局的成本。
11.2.3 COCOMO2 模型
COCOMO2 模型分为如下3 个模型,在估算软件开发工作量时,对软件细节问题考虑的详 尽程度逐渐增加。
OPTION
软件开发人员一般分为项目负责人、系统分析员、高级程序员、程序员、初级程序员、资 料员和其他辅助人员。
项目负责人需要对项目的需求和团队人员有全面的了解
系统分析员需要有概括能力、分析能力和社交活动能力
程序员需要有熟练的编程能力等 资料员和其他辅助人员负责及时登记软件工程每个阶段的文档等资料
11.3 软件工程人员组织
11.1 软件工程管理概述
02 软件工程管理的重要性
OPTION
基于软件本身的复杂性,软件工 程将软件开发划分为若干个阶段,每 个阶段完成不同的任务、采取不同的 方法。
如果软件开发管理不善,造成的 后果会很严重。因此软件工程管理非 常重要。
11.1 软件工程管理概述
03 软件工程管理的内容
OPTION
02 组织机构
OPTION
软件开发团队不能只是一个简单的集合,要求具有良好的组织机构,要具有合理的人员分 工和有效的通信,共同高效率地完成任务。
按项目划分的模式
按职能划分的模式
矩阵型模式
11.3 软件工程人员组织

软件工程导论(第11章)

软件工程导论(第11章)

3. 信息隐蔽
在面向对象方法中,信息隐蔽通过对象的封
装性实现:类结构分离了类的接口与类的实
现,从而支持了信息隐蔽。
4. 弱耦合
弱的耦合可以提高软件模块的独立性,避免 某一部分模块发生变化对其它模块有较大的影 响。
一般来说,对象间的耦合有两大类:
A.交互耦合:对象间的耦合通过信息连接来
实现。应使交互耦合尽量松散。
2. 一般—特殊结构的深度应适当
中等规模的系统中,类等级层次数应保持 为7±2。不是必要情况,不应该随意创建派生类;
3. 设计简单的类:设计小而简单的类,便于
开发和管理;
1)避免包含过多的属性; 2)有明确的定义; 3)尽量简化对象之间的合作关系; 4)不要提供太多服务。
4. 使用简单的协议:设计简单的类接口,发送 的消息中参数要少。 5. 使用简单的服务:编写实现每一个服务时, 避免复杂的语句和结构; 6. 把设计变动减至最小。
2.
两个方向的关联都用属性实现,这种方法能 实现快速访问。
3.
用独立的关联对象实现双向关联。关联对象 不属于相互关联的任何一个类,它是独立的 关联类的实例 。
40
41
4、关联对象的实现
关联对象的实现方法取决于关联的阶数:

一对一关联:
• 关联对象可以与参与关联的任一个对象合并。

一对多关联:
• 关联对象可以与“多”端对象合并。
11.9 设计类中的服务 11.9.1 确定类中应有的服务 11.9.2 设计实现服务的方法
1. 设计实现服务的算法
1)算法复杂度;
2)容易理解、容易实现;
3)容易修改;
2. 选择数据结构 3. 定义内部类和内部操作

《软件工程》课件第11章 面向对象的OMT方法

《软件工程》课件第11章 面向对象的OMT方法
分析的目的是确定一个系统“干什么”的模型,该模 型通过使用对象、关联、动态控制流和功能变换等来描述。 分析过程是一个不断获取需求及不断与用户磋商的过程。
1. 问题陈述 问题陈述为记下或获取对问题的初步描述。
第11章 面向对象的OMT方法
2. 构造对象模型 构造对象模型的步骤如下: (1) 确定对象类。 (2) 编制类、属性及关联描述的数据词典。 (3) 在类之间加入关联。 (4) 给对象和链加属性。 (5) 使用继承构造和简化对象类。 (6) 将类组合成模块,这种组合在紧耦合和相关 功能上进行。 最后得到:对象模型=对象模型图+数据词典。
第11章 面向对象的OMT方法
两个类之间的关联称为二元关联,三个类之间的 关联称为三元关联。关联的表示是在类之间画一连线。 图11.3表示了二元关联,图11.4表示一种三元关联, 说明程序员使用计算机语言来开发项目。
第11章 面向对象的OMT方法 图11.3 二元关联
第11章 面向对象的OMT方法 图11.4 三元关联
第11章 面向对象的OMT方法
操作的表示如图11.2底部区域所示,操作名后可跟 参数表,用括号括起来,每个参数之间用逗号分开,参 数名后可跟类型,用冒号与参数名分开,参数表后面用 冒号来分隔结果类型,结果类型不能省略。
2. 关联和链 关联和链是建立对象及类之间关系的一种手段。 1) 关联和链的含义 链表示对象间的物理与概念的联结,如张三为通 达公司工作。关联表示类之间的一种关系,就是一些可 能的链的集合。 正如对象与类的关系一样,对象是类的实例,类是 对象的抽象。而链是关联的实例,关联是链的抽象。
第11章 面向对象的OMT方法
3. 构造动态模型 构造动态模型的步骤如下: (1) 准备典型交互序列的脚本。 (2) 确定对象间的事件并为各脚本安排事件跟踪。 (3) 准备系统的事件流图。 (4) 开发具有重要动态行为的各个类的状态图。 (5) 检查状态图中共享事件的一致性和完整性。 最后得到:动态模型 = 状态图 + 全局事件流图。

软件工程导论复习重点总结--很全(第六版)

软件工程导论复习重点总结--很全(第六版)

第1章第2章第11章软件工程学概述1.1 软件危机1.1.1 软件危机的介绍软件危机(软件萧条、软件困扰):是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。

软件危机包含下述两方面的问题:如何开发软件,满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件。

软件危机的典型表现:(1)对软件开发成本和进度的估计常常很不准确;(2)用户对“已完成的”软件系统不满意的现象经常发生;(3)软件产品的质量往往靠不住;(4)软件常常是不可维护的;(5)软件通常没有适当的文档资料;(6)软件成本在计算机系统总成本中所占的比例逐年上升;(7)软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。

1.1.2 产生软件危机的原因(1)与软件本身的特点有关(2)与软件开发与维护的方法不正确有关1.1.3 消除软件危机的途径对计算机软件有正确的认识。

认识到软件开发是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目。

应该推广使用在实践中总结出来的开发软件的成功技术和方法,并继续研究探索。

应该开发和使用更好的软件工具。

总之,为了解决软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。

1.21.2.1 软件工程的介绍软件工程:是指导计算机软件开发和维护的一门工程学科。

采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。

(期中考)软件工程的本质特性:软件工程关注于大型程序的构造软件工程的中心课题是控制复杂性软件经常变化开发软件的效率非常重要和谐地合作是开发软件的关键软件必须有效地支持它的用户在软件工程领域中是由具有一种文化背景的人替具有另一种文化背景的人创造产品1.2.2 软件工程的基本原理用分阶段的生命周期计划严格管理坚持进行阶段评审实行严格的产品控制采用现代程序设计技术结果应能清楚地审查开发小组的人员应该少而精承认不断改进软件工程实践的必要性1.2.3 软件工程方法学软件工程包括技术和管理两方面的内容。

软件工程第11章(3-01)

软件工程第11章(3-01)

2.编码的目的

编码的目的是使用选定的程序设计语言,把模块的过程性 描述翻译为用该语言书写的源程序。 编码产生的源程序应该正确可靠、简明清晰,而且具有较 高的效率。前两点要求是一致的,因为源代码越是清楚简 明,就越便于验证源代码和模块规格说明的一致性,也就 越容易对它进行测试和维护。
1.代码和程序遵守标准 与规范的重要性
1.2.2 编码语言的基本成分


1.数据成分 数据成分指明该语言能接受的数 据,用来描述程序中所涉及的数 据。如各种类型的变量、数组、 指针、记录等。作为程序操作的 对象,具有名称、类型和作用域 等特征。使用前要对数据的这些 特征加以说明。数据名称由用户 通过标识符命名,类型说明数据 须占用多少存储单元和存放形式, 作用域说明数据可被使用的范围。 以某语言为例,其数据构造方式 可分为基本类型和构造类型
1.2.2 编码语言的基本成分

3.控制成分 控制成分指明该语言允许的控制结构,人们可以利用这 些控制成分来构造程序中的控制逻辑。基本的控制成分 包括顺序控制结构、条件选择结构和循环结构
1.2.2 编码语言的基本成分
4.转输成分 传输成分指明该语言允许的数据传输方式,
在程序中可用它进行数据传输。 例如,Turbo C语言标准库提供了两个控 制台格式化输入、输出函数printf()和 scanf(),这两个函数可以在标准输入/输 出设备上以各种不同的格式读/写数据。 printf()函数用来向标准输出设备写数据, scanf()函数用来从标准输入设备上读数据。
1.1.4 编码途径
程序编码的一般途径有以下几种。 1.自顶向下的开发 2.自底向上的开发
3.自底向上和自顶向下相结合的开发

软件工程 第11章 软件重用

软件工程  第11章 软件重用

软件工程第11章软件重用在软件工程的领域中,软件重用是一项具有重要意义和价值的理念与实践。

它就像是在建筑领域中重复使用标准化的建筑材料和设计模块,能够极大地提高软件开发的效率、质量和可维护性。

软件重用,简单来说,就是在新的软件开发项目中,重复使用已有的软件元素,这些元素可以是代码、设计、文档,甚至是测试用例等。

想象一下,如果每次盖房子都要从烧制砖头开始,那得多麻烦和低效。

同样的道理,在软件开发中,如果每次都要从头开始编写所有的代码,那不仅费时费力,还容易出错。

那么,软件重用到底有哪些好处呢?首先,它能显著提高开发效率。

当我们可以直接使用已经经过验证和优化的软件组件时,就不必再花费大量时间去重新开发类似的功能,从而大大缩短了开发周期。

其次,软件重用有助于提高软件的质量。

因为被重用的软件元素通常已经在之前的项目中经过了充分的测试和验证,其稳定性和可靠性相对较高。

再者,它能够降低开发成本。

减少了重复的开发工作,也就降低了人力、时间和资源的投入。

最后,软件重用还能增强软件的可维护性。

由于重用的部分具有一致性和标准化的特点,维护起来会更加容易。

然而,要实现软件重用,并不是一件简单的事情。

它需要我们在软件开发的整个过程中,建立起一套有效的管理和技术体系。

在需求分析阶段,我们就需要考虑是否有可以重用的软件组件能够满足当前项目的需求。

这就要求开发人员对已有的软件资源有充分的了解和掌握。

同时,还需要对新的需求进行准确的分析和评估,以确定哪些部分可以通过重用现有组件来实现,哪些部分需要进行新的开发。

在设计阶段,我们要设计出具有良好可重用性的软件架构。

这意味着架构应该具有清晰的层次结构、简洁的接口和高度的模块化。

这样的架构能够方便地将不同的软件组件组合在一起,同时也便于对单个组件进行替换和升级。

在编码阶段,开发人员需要遵循一定的规范和标准,以确保编写的代码具有良好的可读性、可维护性和可重用性。

代码的注释、命名规则、代码结构等方面都需要精心设计,以便其他开发人员能够轻松理解和使用。

软件工程第11章面向对象设计

软件工程第11章面向对象设计

2. 重用已有的类
重用已有类(代码重用)实现分析模型;若没有可以重用类而需要创建新 类时,则在设计这些新类时需要考虑其可重用性。
对于已有的可重用类,典型重用方法和过程如下: 1)选择可能被重用的已有类,标出类中对本问题无用的属性和服务,选 择那些能使无用的属性和服务最少的类; 2)从被重用的已有类派生出问题域类(继承重用类而产生问题域类); 3)标出从已有类继承来的属性和服务,而无须在分析类内定义;
6. 可重用
软件重用是提高软件开发生产率和目标系统质量的重要途径。 重用有两方面的含义: 一是尽量使用已有的类(类库或已建立的类), 二是如果确实需要创建新类,则在设计这些新类的协议时,应该考虑将 来的可重复使用性。
11.2
启发规则
与结构设计规则类似,通过OOD实践也总结了一些设计规则: 1. 设计结果应该清晰易懂 设计结果清晰、易读、易懂,是提高软件可维护性和可重用性的重要 措施。保证设计结果清晰易懂的主要因素为:用词一致;使用已有的 协议;避免模糊的定义等。
1)层次组织:这种组织方案把软件系统组织成一个层次系统,每层是一 个子系统。上层和下层自系统形成C/S结构 层次结构的两种模式:封闭式和开放式:封闭式,每层子系统仅仅使用其 直接下层提供的服务;开放式,任一层次可以向下跨层次调用。 2)块状组织:把软件系统垂直地分解成若干个相对独立的、松耦合的子 系统,一个子系统相当于一块,每块提供一种类型的服务。
第11章
11.1 11.2 11.3 11.4 11.5 11.6 11.7 11.8 11.9 11.10 11.11
面向对象设计
面向对象设计的准则 启发规则 软件重用 系统分解 设计问题域子系统 设计人机交互子系统 设计任务管理子系统 设计数据管理子系统 设计类中的服务 设计关联 设计优化

软件工程(习题及参考答案)

软件工程(习题及参考答案)

第1章概述(习题与参考答案)[判定题]1. 由于今天个人运算机不断进展壮大,人们再也不采纳软件团队的开发方式。

(×)2. 由于软件是产品,因此能够应用其他工程制品所用的技术进行生产。

(×)3. 购买大多数运算机系统所需的硬件比软件更昂贵。

(×)4. 大多数软件产品在其生命周期中不需要增强功能。

(×)5. 大多数软件系统是不容易转变的,除非它们在设计时考虑了转变。

(√)6. 一样来讲,软件只有在其行为与设计者的目标一致的情形下才能成功。

(×)[选择题]1. ()因素促使运算机系统愈来愈复杂。

(D)A. 运算机内存和存储容量上的庞大增加B. 外部输入/输出选项的加倍多样性C. 运算机体系结构方面的深刻转变D. 以上所有选项2. 下面的()再也不是现代软件工程师关注的问题。

(A)A. 什么缘故运算机硬件的本钱这么高?B. 什么缘故软件需要很长时刻才能完成?C. 什么缘故开发一个软件的本钱这么高?D. 什么缘故不能在产品发布前去除软件错误?3. 软件会慢慢退化而可不能磨损,其缘故在于()。

(C)A. 软件通常暴露在恶劣的环境下B. 软件错误通常发生在利用以后C. 不断的变更使组件接口之间引发错误D. 软件备件很难订购4. 大多数软件仍然是定制开发的,其缘故在于()。

(C)A. 软件组件重用是十分普遍的B. 可重用的组件太昂贵而无法利用C. 软件在不利用其他组件的情形下很容易构造出来D. 商业组件在很多应用领域中能够取得5. 下面的()说法是正确的。

(C)A. 软件危机在20世纪70年代末期全面暴发B. 当前先进的软件工程方式已经解决了软件危机的问题C. 软件危机是指在运算机软件的开发和保护进程中碰到的一系列严峻问题D. 软件危机是指在软件产品中存在一系列的质量问题6. 软件工程的大体目标是()。

(B)A. 排除软件固有的复杂性B. 开发高质量的软件C. 尽力发挥开发人员的制造性潜能D. 更好地保护正在利用的软件产品7. ()是将系统化的、标准的、可定量的方式应用于软件的开发、运行和保护的进程,它包括方式、工具和进程三个要素。

张海藩《软件工程导论》(第6版)(课后习题 第11章 面向对象设计)【圣才出品】

张海藩《软件工程导论》(第6版)(课后习题 第11章 面向对象设计)【圣才出品】
3.为什么说类构件是目前比较理想的可重用软构件?它有哪些重用方式? 答:(1)可重用的软构件应具备的特点: ①模块独立性强。 ②具有高度可塑性。 ③接口清晰、简明、可靠。 (2)类构件的重用方式: ①实例重用。 ②继承重用。 ③多态重用。
4.试用面向对象方法,设计本书第 2 章中给出的订货系统的例子。 答:略。
break; }
int main(){ FILE *fi; int i,inQuote; fi=fopen(“xxx.c”, “r”) if(fi==NULL) return 1; i=inQuote=0;
2/8
圣才电子书 十万种考研考证电子书、题库视频学习平台

b.有明确的定义。为使类的定义明确,分配给每个类的任务应该简单。 c.简化对象之间的合作关系。 d.不要提供太多的服务。 ④使用简单的协议 ⑤使用简单的服务 ⑥把设计变动减至最小 (2)启发规则的必要性 人们使用面向对象方法学开发软件的历史虽然不长,但也积累了一些经验。总结这些经 验得出了几条启发规则,它们往往能帮助软件开发人员提高面向对象设计的质量。

char input[Len_Max+2]; int n=sizeof(input); void CheckKeyWord(){ int i,result; for(i=0;i<n;i++) {
result=strcmp(input,Key[i]); if(result==0){ count[i]++; break; } if(result<0)
3/8
圣才电子书 十万种考研考证电子书、题库视频学习平台

5.试用面向对象方法,设计本书习题 2 第 2 题中描述的储蓄系统。 答:使用面向对象方法设计出的储蓄系统的对象模型如图 11-7 所示:
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

理解
关注
11.1 软件维护的传统方法
1. 软件维护定义:

定义11-1:所谓软件维护,就是在软件产品安
装、实施并交付给用户使用后,在新版本产品升级
之前,这段时间里软件厂商向客户提供的服务工作,
称为该软件产品的软件维护。
软件维护定义
(1)软件的维护总是针对某一种软件产品在软 件生存周期内所进行的活动 (2)当今的软件维护更强调的是服务 。服务成 为用户选购软件的重要依据,即“卖软件就是 卖服务”
性和一致性。
面向对象开发的方法对应面向对象维护的方法,就是利
用对象“继承”的特性,来达到维护应用软件的目的。
第四种方法:站在“五个面向理论”角度,即站在
“面向流程分析、面向数据设计、面向对象实现、
面向功能测试、面向过程管理”的角度上,来划分
软件维护的方法。
也就是说,对需求分析的维护,要采取面向业务流程的方
2
3
4
预防性维护 4%左右
维护在软件生存期所占比例
影响维护工作量的因素
系统的规模 系统的年龄 系统的结构 程序设计语言
文档的质量
软件对运行环境的依赖性 编程语言
技术性 因素
影响 维护 代价 因素 非技术 性因素
编程风格
测试与改错工作
文档的质量 清晰、正确和完备的 文档能降低维护的代价 应用领域的复杂性 开发人员的稳定性
法。
对设计的维护,要采取面向数据的方法。
对实现的维护,要采取面向对象的方法。
对测试的维护,要采取面向功能的方法。
对管理的维护,要采取面向过程管理的方法。
3. 软件维护与软件产品版本升级
若小维护前的版本号为V1.00,则小维护后的版本号为V1.01。
若大的维护前的版本号为V1.01,则大的维护后的版本号为 V1.11。 一般而言,版本号中小圆点的左一位,表示该软件产品的第 几个版本。版本号中小圆点的右一位,表示该版本的大修改
上述两种格式完成后,都要在文档版本更新记录上做维护记
录。
2. 维护管理文档
(1) 用户意见反馈表; (2) 用户意见分类整理表; (3) 维护申请单; (4) 维护文档评审报告; (5) 产品缺陷统计表; (6) 功能扩充统计表; (7) 未答复问题汇总表; (8) 未验证问题汇总表; (9) 已修改问题汇总表; (10)已验证问题汇总表; (11)维护费用统计表。
6.维护的副作用(四个副作用)
序号 维护的方式 副作用的表现
1
2
修改编码
修改数据结构
使编码更加混乱,程序结构更不清晰,可 读性更差,而且有连锁反映
数据结构是系统的骨架,修改数据结构是 对系统伤筋动骨的大手术,在数据冗余 与数据不一致方面,可能顾此失彼
3
4
修改用户数据
修改文档
需要与用户协商,一旦有疏忽,可使系统 发生意外
对非结构化维护不适应,对结构化维护要 严防程序与文档的不配匹
6.维护的副作用(四个副作用)
(1)四个副作用加在一起,很容易出现打补丁的
现象,造成维护一次,就追加一个补丁,最后补丁
越打越多,隐含的问题也会越来越多;
(2)由于考虑不周,或对系统消化不透,可能在
维护中出现连锁反映现象:东边的错误改了,西边
三层含义
一般维护原因:
(3)软件维护的时间是有限度的,一般而言目 前软件产品的免费服务时间为两年左右,两 年以后软件厂商总会推出更新的版本以适应 用户在功能、性能、接口等方面所提出的新 需求,从而软件厂商也会找到新的利润增长 点。
(1)改正程序中的错误和缺陷。 (2)改进设计以适应新的软、硬件环境。 (3)增加新的应用范围。
本章小结
(1) 开发文档、管理文档、维护文档必须齐全,使所有的维
护工作都变为结成化维护工作。这就是提高系统的可维护性。
(2) 在签订合同时,必须将软件的维护工作范围、内容、期 限和费用增加进去,并明确甲乙双方在维护工作中的责任。 (3) 维护人员在缺陷维护(即“程序级维护”)和功能维护 (即“设计级维护”)上虽然不能随意地创新,但是可以分析 维护前系统的缺陷或毛病,收集并整理用户的意见与建议, 从而去策划新版本的蓝图,在新版本的升级上做到有所创新。
的错误又冒出来了。
7.为了减少维护的工作量,防止维护的副作用,人们
在长期的实践中积累了如下的经验:
(1)用CMMI体系来改善软件企业的软件过程管理;
(2)在开发和维护中,尽量使用CASE工具;
(3)维护完成后,一定要进行回归测试。
11.2 软件维护的最新方法
1. 软件维护的最新分类方法
目前,软件企业将软件产品维护活动分为两大类:
第11章 软件维护
要求 了解
具体内容
1) 2) 3) 4) 5) 6) 1) 2) 3) 4) 5) 1) 2) 软件维护的概念 传统软件维护分哪几大类 软件维护活动的一般工作流程 结构化维护和非结构化维护 软件的可维护性 维护的副作用 面向缺陷维护:程序级维护 面向功能维护:设计级维护 UML对软件维护的影响 CMM对软件维护的影响 软件维护文档和维护管理文档 软件维护的最新方法 软件维护与软件产品版本升级的关系
2. 软件维护分类:
序号 维护的种类 1 纠错性维护 17%~20% 适应性维护 18%~25% 完善性维护 50%~60% 维护的内容 产品或项目中存在缺陷或错误,在 测试和验收时未发现,到了使用过程中 逐渐暴露出来,需要改正 这类维护是为了产品或项目适应变 化了的硬件、系统软件的运行环境,如 系统升级 这类维护是为了给软件系统增加一 些新的功能,使产品或项目的功能更加 完善与合理,又不致于对系统进行伤筋 动骨的改造,这类维护占维护活动的大 多数情况 这类维护是为了提高产品或项目的 可靠性和可维性,有利于系统的进一步 改造或升级换代
5. 软件的可维护性
定义11-3:所谓软件的可维护性,就是维护人员理
解、掌握和修改被维护软件的难易程度。
可维护性的软件,它应具备下列四条性质:
(1).可理解性。
(2).可测试性。
(3).可修改性。
(4).可移植性。
软件的可维护性
序号 1 2 3 4 名称 可理解性 可测试性 可修改性 可移植性 可维护性内容 软件模块化、结构化,代码风格化,文档清 晰化 文档规范化,代码注释化,测试回归化 模块间低耦合,高内聚,程序块的单入口和 单出口,数据局部化,公用模块组件化 例如用ODBC、ADO来屏蔽对数据库管理系统 的依赖,用三层结构来简化对客户浏览层的维 护
软件的生命期
商业操作模式变化对软件的影响
软件人员经常流动,当需要对某些程序进行维护时, 可能已找不到原来的开发人员。 人们一般难以读懂他人的程序。 软件维 护困难 的原因
当没有文档或者文档很差时,你不知道如何下手。
很多程序在设计时没有考虑到将来要改动,程序之 间相互交织,触一而牵百。 如果软件发行了多个版本,要追踪软件的演化非常 困难。 维护将会产生不良的副作用,不论是修改代码、数 据或文档,都有可能产生新的错误。
用户能享受简单、方便、全面、及时的维护与升级服务。
常见的杀病毒工具升级办法,就是一种这样的维护。
第三种方法:站在“三种开发方法”的角度上,
来划分软件维护的方法。
面向过程开发的方法对应面向过程维护的方法,就是前
面介绍的结构化维护方法。
面向数据开发的方法对应面向数据维护的方法,就是从
数据库表的结构入手,运用视图技术、事务处理技术、 分布式数据库技术、来维护数据库服务器上数据的完整
的维护。
第二种方法:站在B/S结构的角度上,来划分软件
维护的方法。
客户机/应用服务器/数据库服务器的三层结构,是一
种最有发展潜力的应用软件结构。
客户机上的软件维护,不需到用户现场去,只需在系统
后台服务器上借助网络的运行,使得软件的安装与升级, 变成了一个完全透明的过程,再不用担心光盘的安装或 软盘的损伤。这就是三层结构的优点之一。
(1)面向缺陷维护:程序级维护;
(2)面向功能维护:设计级维护。
面向缺陷维护的条件:该产品能够正常运转,可以满足用户 的功能、性能、接口需求。 面向功能维护的条件:该产品在功能、性能、接口上存在某 些不足,不能满足用户的某些需求 。
2. 软件维护的最新方法
第一种方法:站在C/S结构的角度上,来划分软件维
7 8 9 10 11 12

设计维护文档评审 修改源程序 回归测试 修改软件产品版本号 交付用户运行 收集反馈意见,准备新一轮维护,转向流程第1步
5. UML对软件维护的影响
UML把软件生命周期定义为四个主要阶段:初始、细化、构
造、移交。
经过这四个阶段的历程被称为一个开发周期,自动产生一个 周期内的所有文档,从而生成一个软件产品。 首次经历这四个阶段称为该产品的初始开发周期,除非该产 品的生命终止,否则它将重复初始、细化、构造、移交这四 个阶段,从而演化为下一代产品,这就是旧产品的修理维护, 这就是新产品的升级换代,这就是开发周期的演化,这就是
真正维护工作量大的单位,就是CMM1级/CMMI1级的软件组织,
因为它们的管理无序,文档不全,工作不规范。
11.3 软件维护文档
1. 维护文档
维护文档,就是对原来已有的分析文档、设计文档、实现文
档、测试文档、用户指南进行修改,形成新的开发文档。
(1). 格式1:拷贝一份原文档,再直接在原来已有的文档上 面修改后形成新的小版本号文档。 (2). 格式2:将修改的内容单独作为一个附录,放在被修改 文档的最后面,形成一份新的小版本号文档。
UML对软件维护工作的影响。
6. CMM/CMMI对软件维护的影响
当软件组织达到CMM3/CMMI3以上时,由于软件过程的持续改 善,对软件质量的评审和审计活动的加强,软件测量数据库 作用的发挥,关于“程序上有缺陷”和“设计上功能不齐全” 的情况,将会逐渐减少,所以软件的维护工作量也会逐渐减
相关文档
最新文档