第11章 面向数据的设计方法
软件工程-张海藩 编著 复习提纲1-6章

第一章软件工程学概述第一节软件危机1.为了消除软件危机,20世纪60年代后期形成了新学科:计算机软件工程学。
2.软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
(这些问题不是不能运行的软件才仅仅具有的,几乎所有的软件都不同程度存在这些问题。
)3.软件危机包含两个方面的问题:1.如何开发软件,以满足对软件日益增长的需求。
2.如何维护数量不断膨胀的已有软件。
4.产生软件危机的原因(page4—图1.1)1.一方面与软件本身的特点有关2.另一方面也和软件开发与维护的方法不正确有关。
5.软件不同于一般程序,它的一个显著特点是:“规模庞大”。
6.软件开发流程:1. 问题定义:(确定要求解决的问题是什么)2. 可行性研究:(决定该问题是否存在一个可行的解决办法)3. 需求分析:(深入具体的了解用户需求)进入开发时期:对软件设计概要设计详细设计编写程序(全部工作量10%—20%)测试交付使用7.软件产品的配置:包括:程序、文档、数据8.软件危机的一些典型表现:1.对软件开发成本和进度的估计常常不准确2.用户对“已完成的”软件系统不满意的现象经常发生3.软件产品的质量往往靠不住4.软件常常是不可维护的5.软件通常没有适当的文档资料。
6.软件成本在计算机系统总成本中所占的比例逐年上升。
7.软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。
第二节软件工程1.软件工程定义软件工程是:把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;2. 软件工程方法学包含3个要素:方法、工具和过程。
3. 软件工程方法学: 1. 传统方法学2. 面向对象方法学4. 面向对象方法学的4个特点:(1)把对象(object)作为融合了数据及在数据上的操作行为的统一的软件构件。
(2)把所有的对象都划分成类(class)。
(3)按照父类(基类)与子类(派生类)的关系,把若干个相关类组成一个层次结构的系统(也成为类的等级)。
第11章 Windows 编程初步-面向对象程序设计(C++语言)(第二版)-程磊-清华大学出版社

❖ 第一种方法的特点是可以使应用程序更精炼,运 行效率更高,编写程序时有较大的自由度,但难 度较大;
❖ 第二种方法的特点是采用MFC提供的类库编写程 序,这些类中已经封装了大部分的Windows API 函数,还提供了编写不同程序类型的模版和框架, 所以编写程序比较容易,而且还允许直接调用 Windows API 函数来实现一些特殊的功能。
第三部分 Visual C++环境下Windows程序 开发概述
第11章 Windows 编程初步 第12章 MFC库和应用程序框架 第13章 综合设计实例– 简单绘图程序
第11章 Windows 编程初步
本章要点:
❖简单的Windows程序框架 ❖自定义类和Windows程序框架结合
在编写Windows 应用程序时,常采用两种方法: ❖ 一是使用Windows SDK ( Software development Kit,即
图11.5 向解决方案中添加新项
图11.6 添加main.cpp文件
(6)可以看到在“解决方案管理器”视图中的“源文件” 栏目中被添加了一个main.cpp文件,同时可以看到 Visual Studio开发工具的中间编辑窗口也打开了一个空 白的文件编辑窗口,在这里输入例11.1的源程序,然后保 存,如图11.7所示。
❖ Windows程序一般是一个可视化的窗口程序,通过操作 系统发送的消息来处理用户输入的数据,然后通过在窗口 上绘制或者把数据发给窗口上的组件来显示数据。
❖ 句柄就是一个标识符,用来区别同类对象或者资源的唯一 标志,可以认为它是个无符号整数或者一个指针均可。
计算机网络技术第11章SDN与NFV技术课件

配置策略 监控性能
配
置
管
理
➢ 应用平面 ➢ 配置管理平面
网元
数
据
SDN数据路径
层
CDPI代理
转发引擎/处理功能
模块
网元
SDN数据路径 CDPI代理
转发引擎/处理功能 模块
网元设置
SDN架构的构成
11.1 SDN概述
➢ 结论
– SDN的本质就是软件定义网络,希望应用软件可以参与 对网络的控制管理,满足上层业务需求,通过自动化 业务部署简化网络运维就是SDN的核心诉求。
– SDN并不是一个具体的技术,而是一种网络设 计的理念,SDN的本质就是让用户应用可以通 过软件编程充分控制网络的行为,让网络软件 化,进而敏捷化。
– 一般认为SDN应该具备如下特征:
➢控制面与转发面分离;(核心属性) ➢具备开放的可编程接口;(核心属性) ➢集中化的网络控制; ➢网络业务的自动化应用程序控制。
北向服务接口。Hydrogen版本中全线采用AD-SAL,Helium版本中AD-SAL和MDSAL共存,Lithium版和Beryllium版中已基本使用MD-SAL架构。 ➢ 开放的可扩展北向API(Open Extensible Northbound API):提供可扩展的 应用API,通过REST或者函数调用方式。两者提供的功能要一致。 ➢ 支持多租户、切片(Support for Multitenancy/Slicing):允许网络在逻 辑上(或物理上)划分成不同的切片或租户。控制器的部分功能和模块可以 管理指定切片。控制器根据所管理的分片来呈现不同的控制观测面。 ➢ 一致性聚合(Consistent Clustering):提供细粒度复制的聚合和确保网络 一致性的横向扩展(scale-out)。
第11章面向对象的设计与实现一、填空题(30小题)1、类型一致性原则

第11章面向对象的设计与实现一、填空题(30小题)1、类型一致性原则要求子类S必须满足6个限制条件:( )、( )、( )、( )、( )和( )。
答案:S的状态空间(State-space)必须与T的状态空间一致(但S可以拥有额外空间以延伸T的状态空间)、在S和T的共享空间中,S的状态空间必须等同于或位于T的状态空间之内。
对于T的每一操作(如T.叩),S覆盖或重定义为S.op,则:S.Op必须与T.op名称相同、S.op的形式函数原型的参数必须与T.op的形式函数原型的参数表一一对应、S.op 的前置条件必须等同于或弱于T.op的前置条件、S.op的后置条件必须等同于或强于T.op 的后置条件2、类的实例化是( )。
答案:对象3、对象之间进行通信的构造叫做( )。
答案:消息4、闭合行为原则是指:( )。
答案:在基于类型/子类型层次结构的继承层次结构中,类C的任何对象操作的执行,包括从C的超类继承的所有操作应满足C的类不变式5、类型( )对于创建类库的类层次结构至关重要。
答案:一致性原则6、输出端是指( )。
答案:通过一个给定程序的多行代码来测量引用其他程序的次数7、不同应用中信息共享的这种机制和构造是通过( )来实现的。
答案:类库8、类型一致性设计原则可表述为( )。
答案:如果S为T的真子类型,则S必须与T一致,即类型S的对象可以出现在类型T的对象所需要的任何环境中,并且当该对象的任何获取操作执行时,仍能保持其正确性9、耦合性用来度量( )。
答案:程序之间联系的次数和强度10、没有经过封装的原始代码规定为( )封装。
答案:0级11、一个( )可以具体实现为多个类,每个类又包括自己独特的内部设计。
答案:类型12、受限关联由两个类和一个( )组成。
答案:限定词13、类具有属性,描述类的属性用( )。
答案:数据结构14、一个标准的面向对象系统包含的类通常来自于4个主要领域:( )。
(1)基础领域包含了( )。
VFP专业知识:第11章_表单

第十一章 表 单
2.类 类是对一类相似对象的性质描述,这些对象具有相 同种类的属性以及方法 3.子类与继承 继承是指在基于现有的类创建新类时,新类继承了 现有类里的方法和属性。 此外,可以为新类添加新的方法和属性。 我们把新类称为现有类的子类,而把现有类称为新 类的父类。 一个子类的成员一般包括: (1)从其父类继承的属性和方法。 (2)由子类自己定义的属性和方法。
第十一章 表 单
类 类
抽象
细化
实例化
继承
子类
对象 …… 对象
对象
实例化
例如Visual FoxPro 6.0中CommandButton是命令按钮类, “提交”按钮和“退出”按钮都是CommandButton类的实例。
第十一章 表 单
4、Visual FoxPro基类 Visual FoxPro基类是系统本身内含的,并不存放在 某个类库中。 用户可以基于基类生成所需要的对象,也可以扩展基 类创建自己的子类 VFP的基类见 P132 表5.1
第十一章 表 单
第十一章 表 单
本 章 要 点
面向对象的概念 建立表单 管理表单 运行表单 常用表单控件
第十一章 表 单
一、面向对象的概念
1、对象(Object): 客观世界里的任何实体都可以被看作是对象。 对象可以是具体的物,也可以指某些概念。
1.名字不能更改 2.可以增加新属性
第十一章 表 单
11、常用控件的公共属性 name:控件的名称,它是代码中访问控件的标识(表单或表单 集除外)。 Fontname:字体名。 Fontbold:字体样式为粗体。 Fontsize:字体大小。 Fontitalic:字体样式为斜体。 Forecolor:前景色。 Height:控件的高度 Width:控件的宽度。控件的高度和控件的宽度,也可在设计 时通过鼠标拖曳进行可视化调整。 Visible:控件是否显示。 Enable:控件运行时是否有效。如果为 .T.,则表示控件有效, 否则运行时控件不可使用。
审计学基础最新版精品课件第11章 现代信息审计技术

“我们在保护机密信息和不断审查和加强网络安全方面投入大量资金,仍然致力 于确保我们的网络安全防御在领域内上是最好的。我们将继续评估这个问题,并 根据需要采取更多措施。我们的审查使我们能够确定黑客做了什么,以及什么信 息有风险。数量只是被提及数额中的很小一部分。” 尽管所有主要公司都是黑客攻击的目标,但这一漏洞对德勤来说是一件非常尴尬 的事情,它引发大家进一步正视并思考网络环境下的信息安全风险,以及如何采 取有效现代信息技术来加强审计。
(三)测试数据 (四)快照 (五)跟踪 (六)嵌入式审计模块 (七)程序编码审查 (八)程序代码比较
三、面向数据的计算机辅助审计技术
主要是指利用计算机技术对信息系统中所存储和处理的电子数据进行 的审计,具体来讲主要包括对被审计单位内外部相关的电子数据进行采集、 转换、清理、验证和综合分析,以帮助审计人员快速掌握总体情况,发现 审计线索,收集审计证据,形成审计结论,最终实现审计目标。面向数据 的计算机辅助审计技术的应用,主要包括三个重要的步骤:审计数据采集、 审计数据预处理和审计数据分析。
(二)现代信息审计的特点
将现代信息审计与传统审计相比较,它具有如下一些明显的特点。 1、扩大审计覆盖面,提高审计效率。 2、丰富审计手段,保证审计项目质量。 3、整合审计资源,确保审计时效。
四、现代信息审计的准则
(( 二一 )) 现现 代代 信信 息息 审审 计计 的的 国国 外内 准准 则则
表1 国外相关规范的概况
问题思考:
在信息化环境下,为了应对信息技术对审计的要求和挑战,审计人员应 该应用哪些审计技术?
第一节 现代信息审计技术概述
一、现代信息审计的产生与发展
(一)电子数据处理审计的产生与发展 电子数据处理(Electronic Data Processing)简称EDP审计,它不仅是
软件工程导论(第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. 定义内部类和内部操作
软件工程导论课后习题答案完整版

第一章●软件工程方法学(3个要素):通常把软件生命周期全过程中使用的一整套技术方法的集合称为方法学,也称范型。
三要素:方法、工具和过程。
●软件生命周期模型–瀑布模型:优点:1.可强迫开发员采用规范的方法2.严格地规定了每个阶段必须提交的文件3.要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证。
–缺点:传统的瀑布模型过于理想化,是由文档驱动的。
–快速原型模型:通过快速构建起一个可在计算机上运行的原型系统,让用户试用原型并收集用户反馈意见的方法,获取用户真正的需要。
–增量模型:优点:能在较短时间内向用户提交可完成部分工作的产品;逐步增加产品功能可以使用户有较充实的时间学习和适应新产品,从而减少一个全新的软件可能给客户组织带来的冲击。
–螺旋模型:优点:对可选方案和约束条件的强调有利于已有软件的重用;减少了过多测试;维护只是螺旋模型中另一个周期。
1-1 什么是软件危机? 是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
1-2 什么是软件工程?是指导计算机软件开发和维护的一门工程学科。
1-3 简述结构化范型和面向对象范型的要点,并分析它们的优缺点。
目前使用得最广泛的软件工程方法学(2种):1.传统方法学:也称为生命周期方法学或结构化范型。
优点:把软件生命周期划分成基干个阶段,每个阶段的任务相对独立,而且比较简单,便于不同人员分工协作,从而降低了整个软件开发过程的困难程度。
缺点:当软件规模庞大时,或者对软件的需求是模糊的或会承受时间而变化的时候,开发出的软件往往不成功;而且维护起来仍然很困难。
2.面向对象方法学:优点:降低了软件产品的复杂性;提高了软件的可理解性;简化了软件的开发和维护工作;促进了软件重用。
1-4 软件生命周期划分成哪些阶段●软件生命周期(各阶段)软件生命周期由软件定义、软件开发和运行维护三个时期组成。
1.软件定义时期划分为三个阶段:问题定义、可行性研究和需求分析2.开发时期:总体设计、详细设计、编码和单元测试、综合测试。
软件工程方法与实践知到章节答案智慧树2023年昆明理工大学

软件工程方法与实践知到章节测试答案智慧树2023年最新昆明理工大学第一章测试1.软件产品与物质产品有很大区别,软件产品是一种()产品。
参考答案:逻辑2.软件会逐渐退化而不会磨损,其原因在于()。
参考答案:不断的变更使组件接口之间引起错误3.软件工程要解决的问题是()。
参考答案:以上都是4.软件工程的基本要素包括方法、工具和()。
参考答案:过程5.软件一般包括以下()部分。
参考答案:文档;数据;程序;规程第二章测试1.基于计算机系统的元素包括软件、硬件、人员、数据库、文档和()。
参考答案:规程2.基于计算机的系统本身可以成为一个更大的基于计算机系统中的一个()。
参考答案:元素3.经济可行性分析中的效益包括经济效益和()效益。
参考答案:社会4.在基于计算机系统的元素中,硬件包括()。
参考答案:提供外部世界功能的电子机械设备(如传感器、马达等);提供计算能力的电子设备;支持数据流的互连设备(如网络交换器、电信设备)5.系统工程的任务包括()。
参考答案:可行性分析;识别用户的要求;系统建模和模拟;成本估算及进度安排第三章测试1.在软件生存周期中,()阶段主要任务是“弄清楚要做什么?”。
参考答案:需求分析2.通常将软件生命周期划分为系统工程、需求分析、软件设计、编码实现、软件测试、运行维护等阶段,每个阶段都有各自侧重的任务和目标,以下不属于需求分析阶段的任务是()。
参考答案:弄清楚怎么做,规划系统体系结构3.需求规格说明描述了()。
参考答案:计算机系统的功能、性能及其约束4.常用的需求分析方法包括()。
参考答案:面向对象的分析方法;面向数据结构的分析方法;面向数据流的结构化分析方法5.软件需求规格说明SRS的作用包括()。
参考答案:用于规划和控制系统的开发过程;成为用户、分析人员和设计人员之间进行理解和交流的手段;支持系统测试活动第四章测试1.软件设计是将软件分析模型中通过数据、功能和行为模型所展示的软件需求的信息,传送给设计阶段,产生数据/类设计、体系结构设计、()、部件级设计。
第11章面向数据的设计方法

Shuttle -1
软件工程
wait- body1
Leave(1)
TRANSit- b ody1
Shuttlebody1
Arrive(1)
Wait(1)*
Transit(1)* Station(i)*
11.2.2 扩充功能性过程
Button-0
BD
软件工程
Button-1
Shuttle-0
SV
Shuttle-1
LAMP CMDS
图10-2-2 修改后的SSD LAMPCMDS—Lamp commands
软件工程
SHUTTLE_1 seq LON(1) /* 控制发光板“亮”,说 明交通车正停在站1上 */ read 状态向量 WAIT_BODY1 itr while Wait(1) read 状态向量 WAIT_BODY1 end LOFF(1) /* 交通车即将离站;控 制发光板“暗” */ LEAVE(1) TRANSIT_BODY1 itr while Transit(1) read 状态向量 TRANSIT_BODY1 end
分析技术识别出系统中的实体(包括人、对象、 产生或使用信息的组织)和动作(客观世界中 影响系统实体的那些事件); 2)生成实体结构图:针对每一实体,将影响它 的所有动作按发生的时间顺序用Jackson结构 图(Jackson diagrams)表示出来。为了描述 时间约束,同一动作必须出现在多张结构图中;
LEAVE(i)
TRANSIT_BODY itr while Transit(i) read 状态向量
《Python程序设计(第3版)》PDF高清完整版_Python入门书

《Python程序设计(第3版)》PDF⾼清完整版_Python⼊门书《Python程序设计(第3版)》PDF⾼清完整版
Python⼊门书
内容简介
本书是⾯向⼤学计算机科学专业第⼀门程的教材。
本书以Python语⾔为⼯具,采⽤相当传统的⽅法,强调解决问题、设计和编程是计算机科学的核⼼技能。
全书共13章,包含两个附录。
第1章到第5章介绍计算机与程序、编写简单程序、数字计算、对象和图形、字符串处理等基础知识。
第6章到第8章介绍函数、判断结构、循环结构和布尔值等话题。
第9章到第13章着重介绍⼀些较为⾼级的程序设计⽅法,包括模拟与设计、类、数据集合、⾯向对象设计、算法设计与递归等。
附录部分给出了Python快速参考和术语表。
每⼀章的末尾配有丰富的练习,包括复习问题、讨论和编程联系等多种形式,帮助读者巩固该章的知识和技能。
本书特⾊鲜明、⽰例⽣动有趣、内容易读易学,是美国颇受欢迎的教程,适合Python⼊门程序员阅读,也适合⾼校计算机专业的教师和学⽣参考。
⽬录
内容提要序前⾔第1章 计算机和程序第2章 编写简单程序第3章 数字计算第4章 对象和图形第5章 序列:字符串、列表和⽂件第6章 定义函数第7章 判断结构第8章 循环结构和布尔值第9章 模拟与设计第10章 定义类第11章 数据集合第12章 ⾯向对象设计第13章 算法设计与递归附录A Python快速参考附录B 术语表。
软件工程第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.自底向上和自顶向下相结合的开发
2020年秋冬智慧树知道网课《软件工程导论(东北林业大学)》课后章节测试答案

第一章测试1【多选题】(1分)软件的主要特性是()。
A.无形性B.可独立构成计算机系统C.高成本D.包括程序和文档2【单选题】(1分)包含风险分析的软件工程模型是()。
A.螺旋模型B.增量模型C.瀑布模型D.喷泉模型3【多选题】(1分)下列属于面向对象开发方法的是()。
A.UMLB.OMTC.CoadD.Booch4【多选题】(1分)软件危机的主要表现是()。
A.软件生产率低下B.软件产品的质量低劣C.软件开发人员明显不足D.软件成本太高5【单选题】(1分)从事物的组成部件及每个部件的属性、功能来认识事物。
这种方法被称为()的方法。
A.面向属性B.面向对象C.面向数据D.面向过程6【单选题】(1分)面向数据的设计方法就是根据问题的数据结构定义一组映射,把问题的数据结构转换为问题解的()结构。
A.程序B.物理C.数据D.逻辑7【判断题】(1分)增量模型是非整体开发的模型,软件的开发是用增量开发和增量提交。
()A.错B.对8【判断题】(1分)统一迭代过程在不同阶段,各个核心工作流的工作重心相同。
()A.错B.对9【判断题】(1分)喷泉模型是一种面向对象模型。
()A.错B.对10【判断题】(1分)螺旋模型不适用于大型内部软件开发。
()A.对B.错第二章测试1【单选题】(1分)面向对象的分析方法主要是建立三类模型,即()。
A.对象模型、动态模型、应用模型B.对象模型、动态模型、功能模型C.ER模型、对象模型、功能模型D.系统模型、ER模型、应用模型2【单选题】(1分)SA法的主要描述手段有()。
A.系统流程图和模块图B.功能结构图、加工说明C.DFD图、数据词典、加工说明D.软件结构图、加工说明3【多选题】(1分)画分层DFD图的基本原则有()。
A.数据守恒原则B.数据流封闭的原则C.分解的可靠性原则D.子、父图平衡的原则4【单选题】(1分)数据字典是数据流图中所有元素的定义的集合,一般由以下4类条目组成()。
软件工程第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.下列所述不是软件特点的是(A)A.软件是有形的B.软件不存在磨损和消耗问题C.软件开发成本高D.软件没有明显的制作过程2.软件工程的出现主要是由于(C)A.程序设计方法学的影响B.其他工程学科的影响C.软件危机的出现D.计算机的发展3.以下(C)不是软件危机的表现形式A.开发的软件不满足用户的需要B.开发的软件可维护性差C.开发的软件价格便宜D.开发的软件可靠性差4.软件工程的目的是(C)A.建造大型的软件系统B.开发的软件可维护性差C.软泥吉安质量的保证D.研究软件开发的远离5.下列所述不是软件组成的是(D)A.程序B.数据C.界面D.文档6.下列对“计算机软件”描述正确的是(A)A.是计算机系统的组成部分B.不能作为商品参加交易C.是在计算机硬件设备生产过程中生产出来的D.之存在语计算机系统工作时7.软件工程的方法的产生源于软件危机,下列(D)是产生软件危机的内在原因A.软件的复杂性B.软件维护困难C软件成本太高. D.软件质量难保证8.软件工程方法的提出源于软件危机,其目的应该是最终解决软件的(D)问题A.软件危机B.质量保证C.开发效率D.生产工程化9.软件工程学中除重视软件开发的研究外,另以重要组成内容是软件的(A)和过程改进A.项目管理B.成本核算C.人员培训D.工具开发10.软件工程设计软件开发技术和项目管理等方面内容,下述内容中(D)不属于开发技术的范畴A.软件开发方法B.软件开发工具C.软件工程环境D.软件工程经济二、填空题1.软件工程的目的是成功的建造大型的软件系统,主要内容是开打软件开发技术、软件项目管理和软件质量管理。
2.螺旋式开发模型主要是针对风险比较大的项目而设计的3.由于软件产生的复杂性和高成本,使大型软件产生出了很多问题,即出现软件危机,软件工程正是为了克服它而提出的一种概念及相关方法和技术。
4.增量模型假设需求可以分段,成为一系列增量产品,每一增量可以分别开发。
张海藩《软件工程导论》(第6版)(课后习题 第11章 面向对象设计)【圣才出品】

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 所示:
ly_新标准C++程序设计教材11-20章课后题答案

新标准C++程序设计教材11-20章课后题答案第11章:1.简述结构化程序设计有什么不足,面向对象的程序如何改进这些不足。
答案:结构化程序设计的缺点:(1)用户要求难以在系统分析阶段准确定义,致使系统在交付使用时产生许多问题。
(2)用系统开发每个阶段的成果来进行控制,不适应事物变化的要求。
(3)系统的开发周期长。
面向对象的程序设计如何改进这些不足:面向对象程序设计技术汲取了结构忧程序设计中好的思想,并将这些思想与一些新的、强大的理念相结台,从而蛤程序设计工作提供了一种全新的方法。
通常,在面向对象的程序设计风格中,会将一个问题分解为一些相互关联的子集,每个子集内部都包含了相关的数据和函数。
同时会以某种方式将这些子集分为不同等级,而一个对象就是已定义的某个类型的变量。
2.以下说怯正确的是( )。
A.每个对象内部都有成员函数的实现代码B.一个类的私有成员函数内部不能访问本类的私有成员变量C.类的成员函数之间可以互相调用D.编写一个类时,至少要编写一个成员函数答案:C3.以下对类A的定义正确的是( )。
A.class A{ B.class A{private: int v; int v; A * next;public: void Func() {} void Func() {}} };C.class A{ D. class A{int v; int v;public: public:void Func(); A next;}; void Func() {}A::void Func() { } };答案:B4.假设有以下类A:class A{public:int func(int a) { return a * a; }};以下程序段不正确的是( )。
A.A a; (5);B.A * p = new A; p->func(5);C.A a;A&r =a ; (5);D.A a,b; if(a!=b) (5);答案:D5.以下程序段不正确的是(A)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Shuttle -1
TRANSit- b ody1
软 件 工 程
wait- body1
Leave(1)
Shuttlebody1
Arrive(1)
Wait(1)*
Transit(1)*
Station(i)*
Arrive(i)
wait- body
Leave(i)
NSit body
Wait(i)*
软 件 工 程
11.2.2
扩充功能性过程
BD
Button-1
Button-0
Shuttle-0
SV
Shuttle-1
LAMP CMDS
图10-2-2 修改后的SSD LAMPCMDS—Lamp commands
软 件 工 程
SHUTTLE_1 seq LON(1) /* 控制发光板“亮”,说 明交通车正停在站1上 */ read 状态向量 WAIT_BODY1 itr while Wait(1) read 状态向量 WAIT_BODY1 end LOFF(1) /* 交通车即将离站;控 制发光板“暗” */ LEAVE(1) TRANSIT_BODY1 itr while Transit(1) read 状态向量 TRANSIT_BODY1 end
DS
Button-1
SV
图7-2-4 USS的系统规格说明图
Shuttle-1
软 件 工 程
11.2.1
JSD分析技术回顾
• 将实体结构图与初建系统模型(系统规格说明 图)综合起来,可导出目标软件系统中每个过 程内部细节的结构正文表示,如6.2.3节过程 BUTTON_1和SHUTTLE_1所描述。 • 上述结构正文也可对应地用Jackson结构图表 示。图6-2-5是与模型过程SHUTTLE_1的结构正 文对应的Jackson结构图。
Button-2 Push group*
软 件 工 程
Extra Arrival body
Request push
Extra push body
Arrival
Extra Arrival*
图10-2-3
Extra push*
button-2的结构图
软 件 工 程
11.2.2 扩充功能性过程 • 功能性过程mcontrol既负责检查BUTTON_2的 状态向量“B2V”,确定是否有未满足的请求, 又负责把从SHUTTLE_1处(S1D)获取的信 息(即交通车已到达发出请求的车站)传递给 BUTTON_2(MBD流)。在此定义了一个交 互型功能。 • BUTTON_2的结构正文描述如下:
软 件 工 程
客观世界 外部过程
系统
交互型 功能过程
系统模型
信息型 功能过程
图10-2-1 两类功能性过程与系统模型的关系
软 件 工 程
11.2.2
扩充功能性过程
假设在交通车上有一块发光板,专门显示车到 站的信息,发光板“亮”说明车到站,“暗” 说明车离开。此板或亮或暗受LON(i)、 LOFF(i)两命令的控制。在过程 SHUTTLE_1中可嵌入一个新功能:当交通车 到达站(i)时,发出命令LON(i);离开站 (i)时,发出命令LOFF(i)。交通车在两站 之间往返运行过程中,输出“开关发光板”的 命令数据流,图10-2-2为增加这一功能后的 SSD,结构正文修改为:
软 件 工 程
11.2.2
扩充功能性过程
• 第二个功能是产生关于启动(START)和关闭(STOP) 发动机的命令,以此控制交通车的运行。下达STOP命 令的条件是,传感器显示车已到站,而下达START 命 令的条件是乘客压下按钮招呼交通车并恰好交通车在 某个站上等待。为此引入一个功能性过程mcontrol, 它从SHUTTLE_1和BUTTON_2两过程接收数据,适时地发 出START和STOP两种命令。 • 过程SHUTTLE_1与过程mcontrol之间用数据流“S1D” 连接。因此SHUTTLE_1的结构正文进一步修改为:
软 件 工 程
用JSD方法开发一个软件的步骤:
3)初建系统模型:将实体和动作统一用一个过程模型表示,并 定义该模型中的过程与客观世界中的过程之间的联系。所用 描述工具为系统规格说明图(System Specification Diagram,简称SSD); 4)扩充功能性过程:在过程模型中扩充交互型功能和信息型功 能,分别产生内部输入信息和系统输出信息; 5)系统定时:确定实现必须满足的时间约束; 6)实现:确定系统中所有软硬件成分,形成一个完整设计方案。 • 前三个步骤主要在需求分析阶段完成,后三步是软件设计的 任务。
软 件 工 程
11.1
面向数据设计的概念
• 在许多应用领域中,信息有着清晰的层次结构, 输入数据、存储信息(即数据库)及输出数据 都有各自的组织形式。 • 一般说来,顺序出现的数据可以用顺序控制结 构的程序处理;选择出现的数据用分支控制结 构的程序处理;重复出现的数据用循环控制结 构的程序处理。 • 因此可以根据数据的组织形式确定使用和处理 这些数据的程序的组织形式。
软 件 工 程
11.1
面向数据设计的概念
• 面向数据的设计就是根据数据结构的表示获得 软件表示。 • 本章重点讨论: 1. Jackson系统开发方法 Jackson System Development,简称JSD 2. 基于结构化数据的系统开发方法 Data Structured System Development ,简 称DSSD
软 件 工 程
11.1
面向数据设计的概念
面向数据设计方法一般都包括下列任务: 1.确定数据结构特征; 2.用顺序、选择和重复三种基本形式表示 数据; 3.把数据结构表示映射为软件的控制结构; 4.用与具体方法配套的设计指南进一步精 化控制结构; 5.开发软件的过程性描述。
软 件 工 程
11.1
面向数据设计的概念
软 件 工 程
11.2.1
JSD分析技术回顾
• 我们曾以大学校园内直达交通车系统USS为例进行需求 分析,结果得出“交通车”和“按钮”两实体及其动 作对应的实体结构图如下图所示。
Shuttle Leave(1)
Shuttle* body
Station(i)
Arrive(1)
Button Push*
图6-2-5 对应于结构正文的结构图
Transit(i)*
软 件 工 程
11.2.2
扩充功能性过程
• 这一步骤以初建系统模型为基础,通过数据流 和状态向量两种方式将新定义的功能性过程与 原有的模型过程联系起来。具体考虑两类功能: 1.信息型功能(information function):从模 型过程产生的数据流和状态向量中提取信息并 生成输出信息。嵌入型功能只需在原有模型过 程的结构正文中插入一些操作; 2.交互型功能(interactive function):监视模 型过程的状态向量,在输出结果的同时产生内 部输入信息,反过来影响模型化过程的动作。
软 件 工 程
11.2.2
扩充功能性过程
过程SHUTTLE_1执行“read状态向量”操作和 过程mcontrol对“S1D”的访问都必须有足够 快的频率,否则交通车将不能及时停下来。 为完成USS实例,还需进一步考虑实体BUTTON 模型。过程BUTTON_1是对按钮动作的精确描述 (即每次压下都对应过程push的一次调用), 实际上系统应把第一次压下按钮招呼交通车的 动作与一次运行未开始之前乘客压下按钮招呼 交通车的请求区分开来。用已有实体无法描述 和区分动作之间的时间约束,常常引入额外的 实体——为此设计过程BUTTON_2,结构图如图 10-2-3所示
• JSD和DSSD方法的软件总体结构设计与软件过 程性设计的分界并不明显,都能很快地过渡到 过程性描述。这也是易于理解和易于维护的重 要表现之一。 • JSD和DSSD也是分析与设计一体化的 ,本章侧 重于讨论与设计有关的技术。面向数据的设计 方法,要求信息结构用层次图表示,在软件需 求规格说明中与信息域的描述相对应。
Arrive(i)° Leave(i)°
软 件 工 程
11.2.1
JSD分析技术回顾
初建系统模型后,得到USS的系统规格说明图(图 7-2-4)。其中后缀为“_0”的过程表示客观世界中的过 程(或外部过程),后缀为“_1”的过程表示系统模型 内的过程(或模型过程)。
数据流联系
Button-0
状态向量联系 Shuttle-0
软 件 工 程
11.1
面向数据设计的概念
• JSD方法是Jackson 于1989年对软件设计中广为使 用的Jackson结构程序设计(Jackson Structured Programming,简称JSP)方法的扩展。 • DSSD方法,也称为Warnier-Orr方法,是对Warnier 程序逻辑构造(Logical Construction of Program,简称LCP)方法的扩充,除了设计能力以 外,还加强了分析能力。
• 用JSD方法开发一个软件的步骤: 1)标识实体与动作:用与面向对象方法类似的 分析技术识别出系统中的实体(包括人、对象、 产生或使用信息的组织)和动作(客观世界中 影响系统实体的那些事件); 2)生成实体结构图:针对每一实体,将影响它 的所有动作按发生的时间顺序用Jackson结构 图(Jackson diagrams)表示出来。为了描述 时间约束,同一动作必须出现在多张结构图中;
软 件 工 程
BUTTON_2 seq request:=no /* 臵初值 */ read MBD and B1D /* 检查是否有未满足请求和交 通车是否停在站上 */ BUTTON_BODY itr PUSH_GROUP seq EXTRA_AR_BODY itr while (ARRIVAL) /* 交通车已靠站但尚无请求, 或既无请求交通车也未靠站 */ read MBD and B1D EXTRA_AR_BODY end RQ_PUSH seq /* 首次请求到达,臵请求标志 */ request:=yes read MBD and B1D RQ_PUSH end