软件工程与实践11-2
软件工程第十一章面向对象设计

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

【还可以把适配接口再进一步细分为转换接口和扩充接口。转换接口, 是为了克服与表示方法、数据结构或硬件特点相关的操作给重用带来 的困难而设计的,这类接口是每个类构件在重用时都必须重新定义的 服务的集合。当使用C++语言编程时,应该在根类(或适当的基类)中, 把属于转换接口的服务定义为纯虚函数。如果某个服务有多种可能的 实现算法,则应该把它当作扩充接口。扩充接口与转换接口不同,并 不需要强迫用户在派生类中重新定义它们,相反,如果在派生类中没 有给出扩充接口的新算法,则将继承父类中的算法。当用C++语言实现 时,在基类中把这类服务定义为普通的虚函数。】
4. 弱耦合 耦合:指一个软件结构内不同模块之间互连的紧 密程度。 在面向对象方法中,对象是最基本的模块,因此, 耦合主要指不同对象之间相互关联的紧密程度。 弱耦合是优秀设计的一个重要标准。
5
对象之间的耦合分为两大类: (1) 交互耦合: 对象之间的耦合通过消息连接来实现。 使交互耦合尽可能松散,应遵守下述准则: 尽量降低消息连接的复杂程度。 应该尽量减少消息中包含的参数个数,降低参数的复 杂程度。 减少对象发送(或接收)的消息数。 (2) 继承耦合 与交互耦合相反,应该提高继承耦合程度。 通过继承关系结合起来的基类和派生类,构成系统中 粒度更大的模块。设计时应该使特殊类尽量多继承并 使用其一般化类的属性和服务,从而更紧密地耦合到 其一般化类。
13
2. 软件成分的重用级别 (1) 代码重用 源代码剪贴:最原始的重用形式。 复制或修改原有代码时可能出错,存在严重的配臵 管理问题,人们几乎无法跟踪原始代码块多次修改 重用的过程。 源代码包含:许多程序设计语言都提供包含库中 源代码的机制。配臵管理问题有所缓解,修改了库 中源代码之后,所有包含它的程序自然都必须重新 编译。 继承:利用继承机制重用类库中的类时,无须修 改已有的代码,就可以扩充或具体化在库中找出的 类,基本上不存在配臵管理问题。
《软件工程》课后习题答案

1、可行性研究的目的是用最小的代价,在尽可能短的时间内,确定该项目是否能够开发。
2、程序设计时代的生产方式是个体手工,程序系统时代的生产方式是作坊式小团体,软件工程时代的生产方式是工程化。
3、喷泉模型是一种以需求分析为动力,以对象为驱动的模型。
4、需求分析阶段,分析人员要确定对问题的综合需求,其中最主要的是功能需求。
5、可行性研究需要从以下三个方面分析研究每种解决方法的可行性:技术可行性、经济可行性、社会可行性。
6、可行性研究的目的不是去开发一个软件项目,而是研究这个软件项目是否值得开发,其中的问题能否解决。
7、判定树较判定表直观易读,判定表进行逻辑验证较严格,能把所有的可能性全部都考虑到。
可将两种工具结合起来,先用判定表做底稿,在此基础上产生判定树。
8、软件工具的发展特点是软件工具有单一工具向多个工具集成化方向发展。
重视用户界面的设计,不断的采用新理论和新技术。
软件工具的商品化推动了软件产业的发展,而软件产业的发展,又增加了对软件工具的需求,促进了软件工具的商品化进程。
9、环境集成主要有数据集成、界面集成、控制集成、平台集成、过程集成。
10、可行性研究实质上是进行一项简化、压缩了的需求分析、设计过程。
11、结构化方法有结构化分析、结构化设计、结构化程序设计构成,它是一种面向数据流的开发方法。
12、投资回收期就是累计的经济效益等于最初的项目投资所需的时间。
13、详细描述处理过程常用三种描述工具:图形、表格和语言。
14、数据流图中,每个加工至少有一个输入流和一个输出流。
15、结构化设计以数据流为基础映射成软件结构。
16、当数据流图中某个加工的一组动作存在着多个条件复杂组合的判断时,使用判定表或判定树较好。
17、由于运用原型的目的和方式不同,在使用原型时也采取不同的策略,有抛弃策略和附加策略。
18、有两类维护技术:在开发阶段是用来减少错误、提高软件可维护性面向维护的技术,在维护阶段用来提高维护的效率和质量的维护支援技术。
软件工程试题与答案-(11)

选择题1、以下哪个不是详细设计中常用的图形描述工具 A 。
A、数据流图B、程序流图C、盒图(N-S图)D、问题分析图(PAD)2、耦合是对软件结构中各个不同模块之间互相关联程度的度量。
一个模块直接访问另一个模块的内部信息应属于 B 方式。
A、控制耦合B、内容耦合C、数据耦合D、外部耦合3、在七种内聚中属于最强的是功能内聚,最弱的是偶然内聚4、软件工程的原则包括:模块化、抽象与逐步求精、信息隐藏与局部化、模块独立。
模块 D ,则说明模块的独立性越强。
A.耦合越强B、扇入数越高C、扇入数越低D、耦合越弱5、软件设计包括 D 两个阶段。
A、接口设计和结构设计B、数据设计和概要设计C、结构设计和过程设计D、概要设计和详细设计6、现有一个计算类型的程序,它的输入只有一个Y,其范围是—50≤Y≤50。
现从输入的角度考虑设计了一组测试用例:—100,100,0。
设计这组测试用例的方法是 D 173页A、条件覆盖法B、边缘值分析法C、错误推测法 D 、等价划分法7、系统设计分为两个阶段分别为设计方案与选择方案 92页。
8、对于变换型的数据流图,按照软件设计思想,要将一个大型复杂的软件进行分解,要确定数据流图的输入边界,输出边界和变换中心。
9、自顶向下结合的渐增式测试法,在组合模块时有两种组合策略:深度优先策略和宽度优先的策略157页。
10、在用面向对象观点建立起的3种模型中, B 231页基本、最重要、最核心的。
A、动态模型B、对象模型C、功能模型D、状态模型11、在软件结构图的有关术语中,用于表示软件结构中控制的层数的是 C 。
A、扇出B、扇入C、深度D、宽度12、指出PDL是哪种语言过程设计语言128页13、在进行软件测试时,首先应当进行单元测试,然后再进行组装测试,最后再进行有效性测试。
14、结构化设计方法是面向 B 的设计。
A.数据编码 B.数据流 C.数据库 D.数据结构15、软件工程的过程模型中,瀑布模型是经典的传统模型。
软件工程2-11.构件级设计

11.1.3 其他相关观点
二、基本概念的比较
CORBA CORBA的对象模型基本上按OMG所定义的公共对象模型COM(不同于微 软的COM),支持类、封装、继承和多态,是一个功能比较完备的对象模 型。对象或类之间可按客户/服务器方式互相调用。每个对象或类即可以作 为客户,也可以作为服务器,有时还可以兼作客户和服务器。 客户对象和服务器对象只通过消息交互作用。客户对象向服务器对象发出 请求,服务器对象响应客户对象的请求完成一定的操作,并返回操作结果 和必要的信息。它们只通过消息往来,不必了解与请求无关的功能。即使 客户对象或服务对象重新实现,只要接口的语法和语义不变,不影响用户 的使用。 客户和服务器的通信方式一般有两种:常用的是同步方式,即客户提交请 求后,客户要等到服务器放操作执行完毕并返回操作结果或信息后,才继 续运行;另一种方式是异步方式,即客户提交请求后,可继续运行。
1121基本设计原则29依赖正置就是类间的依赖是实实在在的实现类间的依赖也就是面向实现编程这也是正常人的思维方式我要开奔驰车就依赖奔驰车我要使用笔记本电脑就直接依赖某笔记本电脑而编写程序需要的是对现实世界的事物进行抽象抽象的结构就是有了抽象类和接口然后我们根据系统设计的需要产生了抽象间的依赖代替了人们传统思维中的事物间的依赖倒置就是从这里产生的
11.2 设计基于类的构件
构件级设计基于分析模型、体系结构模 型。面向对象方法中构件级设计主要关 注分析类的细化(特定的问题域类)和 基础类的定义和精化。
11.2.1 基本设计原则
四个基本设计原则:
开关原则 Liskov替换原则 依赖倒置原则 接口分离原则
11.2.1 基本设计原则 开关原则
11.2.1 基本设计原则 Liskov替换原则
软件工程大三上学期课程表

星期三
软件工程 曹耀钦 2-16双周
1301
计算机网络 梁兰华 2-16双周 操作系统 曹耀钦 1-15单周
1401 1401
操作系统课程设计
刘亮
T603
第17周
星期四
操作系统
曹耀钦
2101
1-16周
计算机组成原理
郑先锋
2502
1-16周
操作系统课程设计
刘亮
T603
第17周
操作系统课程设计
刘亮
T603
一二节 三四节 五六节
星期一
计算机网络课程设计
8:00--9:40 孙权
T605
第16周
计算机网络课程设计
10:05--11:45 孙权
T605
第16周
计算机组成原理
郑先锋 2502
14:00--15:45 1-16周
星期二
软件工程
曹耀钦
1209
1-15,17周
职场关键能力
杨华琼
4301
2-17周
七八节 16:05--17:45
第17周
计算机网络课程设计
孙权
T714
第16周
星期五
算法分析与设计
张华 1-16周 科技英语
2301
蔡婷
2301
1-16周
操作系统课程设计
刘亮
T603
第17周
计算机网络课程设计
孙权 第16周
T714
操作系统课程设计
刘亮
T603
第17周
计算机网络课程设计
孙权
T714
第16周
星期六
第16周
操作系统课程设计
计算机网络 梁兰华 1-16周
软件工程理论与实践课后习题

软件工程理论与实践课后习题1、下列要素中,不属于DFD的是()。
[单选题] *A、加工B、数据流C、数据存储D、联系(正确答案)2、当使用DFD对一个工资系统进行建模时,()可以被认定为外部实体。
[单选题] *A、接收工资单的银行(正确答案)B、工资系统源代码程序C、工资单D、工资数据库的维护3、采用瀑布模型进行系统开发的过程中,每个阶段都会产生不同的文档。
以下关于产生这些文档的描述中,正确的是() [单选题] *A、外部设计评审报告在概要设计阶段产生B、集成测试计划在程序设计阶段产生C、系统计划和需求说明在详细设计阶段产生D、在进行编码的同时,独立的设计单位测试计划(正确答案)4、在UML提供的图中,()用于描述系统与外部系统及用户之间的交互。
[单选题] *A、用例图(正确答案)B、类图C、对象图D、部署图5、在UML提供的图中,()用于按时间顺序描述对象间的交互。
[单选题] *A、网络图B、状态图C、协助图D、序列图(正确答案)6、在开发一个系统时,如果用户对系统的目标不是很清楚,难以定义需求,这时最好使用()。
[单选题] *A、原型法(正确答案)B、瀑布模型C、V-模型D、螺旋模型7、应该在()阶段制定系统测试计划。
[单选题] *A、需求分析(正确答案)B、概要设计C、详细设计D、系统测试8、在软件项目管理中可以使用各种图形工具来辅助决策,下面对Gantt图的描述不正确的是()。
[单选题] *A、Gantt图表现各个活动的顺序和它们之间的因果关系(正确答案)B、Gantt图表现哪些活动可以并行进行C、Gantt图表现了各个活动的起始时间D、Gantt图表现了各个活动完成的进度9、以下内容中,()应写入操作手册。
[单选题] *A、描述系统对各种输入数据的处理方法B、说明系统升级时厂商提供的服务C、描述系统处理过程的各个界面(正确答案)D、说明系统各部分之间的接口关系10、耦合度描述了()。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
组装测试和确认测试。
• 系统测试的目标是: • (1)确保系统测试的活动是按计划进行的; • (2)验证软件产品是否与系统需求用例不相符
合或与之矛盾;
• (3)建立完善的系统测试缺陷记录跟踪库; • (4)确保软件系统测试活动及其结果及时通知
相关小组和个人。
几种常见的系统测试方法
• (1)恢复测试 • (2)安全测试 • (3)强度测试 • (4)性能测试 • (5) 容量测试 • (6) 正确性测试 • (7)可靠性测试 • (8)兼容性测试
基于Web的网站测试
• 链接测试 • 表单测试。 • Cookies测试 。 • 设计语言测试 。 • 数据库测试。 • 连接速度测试 • 负载测试 • 导航测试
图形测试, 整体界面测试 。
11.8 验收测试
•
验收测试的目的是确保软件准备就
绪,并且可以让最终用户将其用于执行软
件的既定功能和任务。验收测试是检验软
通过验收,给出测试结果。
再见!!!
软件工程与实践
11.4 确认测试
•
确认测试最简明、最严格的解释是检验所
开发的软件是否能按用户提出的要求运行。若
能达到这一要求,则认为开发的软件是合格的
。因而有的软件开发部门把确认测试称为合格 性测试(Qualification Testing)。
•
确认测试又称为有效性测试。它的任务是
验证软件的功能和性能及其特性是否与客户的
件产品质量的最后一道工序。验收测试通
常更突出客户的作用,同时软件开发人员
也有一定的参与。
• 验收测试应完成的工作内容如下: • (1)要明确验收项目,规定验收测试通过的标准; • (2)确定测试方法; • (3)决定验收测试的组织机构和可利用的资源; • (4)选定测试结果分析方法; • (5)指定验收测试计划并进行评审; • (6)设计验收测试所用的测试用例; • (7)审查验收测试的准备工作;执行验收测试; • (8)分析测试结果;做出验收结论,明确通过验收或不
要求一致。对软件的功能和性能要求在软件需 求规格说明中已经明确规定。
• 确认测试阶段工作如图13-11所示:
11.6 系统测试
•
系统测试是将已经集成好的软件系统
,作为整个计算机系统的一个元素,与计
算机硬件ห้องสมุดไป่ตู้外设、某些支持软件、数据和
人员等其他系统元素结合在一起,在实际
运行环境下,对计算机系统进行一系列的