软件工程 第8章--面向对象设计
软件工程 第八章 面向对象的设计方法
第八章面向对象的设计方法本章采用基于UML的面向对象设计方法的将分析模型转换为设计模型。
如第五章所述,面向对象的分析模型主要由顶层架构图、用例与用例图、领域概念模型构成;设计模型则包含以包图表示的软件体系结构图、以交互图表示的用例实现图、完整精确的类图、针对复杂对象的状态图和用以描述流程化处理过程的活动图等。
为完成这一转换过程,设计人员必须处理以下任务:(1)针对分析模型中的用例,设计实现方案。
实现方案用UML交互图表示。
(2)设计技术支撑设施。
在大型软件项目中,往往需要一些技术支撑设施来帮助业务需求层面的类或子系统完成其功能。
这些设施本身并非业务需求的一部分,但却为多种业务需求的实现提供公共服务。
例如,数据的持久存储服务、安全控制服务和远程访问服务等。
在面向对象设计中,需要研究这些技术支撑设施的实现方式以及它们与业务需求层面的类及子系统之间的关系。
(3)设计用户界面。
(4)针对分析模型中的领域概念模型以及第(2)、(3)两个步骤引进的新类,完整、精确地确定每个类的属性和操作,并完整地标示类之间的关系。
此外,为了实现软件重用和强内聚、松耦合等软件设计原则,还可以对前面形成的类图进行各种微调,最终形成足以构成面向对象程序设计的基础和依据的详尽类图。
面向对象的软件设计过程如图8-1-1所示。
图8-1-1 面向对象的软件设计过程第一节设计用例实现方案UML 的交互图(顺序图、协作图)适于用例实现方案的表示。
因此,本节首先介绍交互图的语言机制,然后探讨用例实现方案的设计方法。
该设计方法包含如下3个步骤:(1)提取边界类、实体类和控制类;(2)构造交互图;(3)根据交互图精华类图。
一、顺序图顺序图用来描述对象之间动态的交互关系,着重表现对象间消息传递的时间顺序。
在顺序图中,参与交互的对象位于顶端的水平轴上,垂直轴表示时间,时间推移的方向是自上而下的。
顺序图中的对象一般以“对象名:类名”的方式标识,但也可以仅采用缩写形式“对象名”或者“:类名”。
软件工程 第三部分 软件设计与建模--面向对象设计
(2) 块状组织 把系统垂直地分解成若干个相对独立的、弱耦 合的子系统/块,每块提供一种类型的服务。
采用层次与块状的混合结构
3. 设计(分布式)系统的拓扑结构 由子系统组成完整的系统时,典型的拓扑结构 有管道形、树形、星形等。设计者应该采用与问题 结构相适应的、尽可能简单的拓扑结构,以减少子 系统之间的交互数量。
3. 设计简单的类 小而简单的类便于开发和管理(高内聚)。为使 类保持简单,应该注意以下几点。 (1) 避免包含过多的属性:完成的功能可能太多了。 (2) 有明确的定义:任务应该简单。 (3) 简化对象之间的合作关系。如果需要多个对象 协同配合才能做好一件事,则破坏了类的简明性和 清晰性。 (4) 不要提供太多服务。典型地,一个类提供的公 共服务不超过7个。
层次图、结 构图、流程 图、N-S图、 PAD图、判 定表、判定 树等
面向对象设计方法比结构化设计方法更具有优势, 9/71 使用范围更广。
内容摘要
• • • • • 面向对象设计方法概述 面向对象设计原则 面向对象设计的启发规则 系统设计 对象设计
10/237
面向对象设计原则
• 强调模块化、抽象化、信息隐蔽、高内聚低耦合、复用性等 设计准则。
4/71
什么是面向对象设计(OOD)?
(二)现今(90年代后)的OOD • 面向对象的设计(OOD)就是在OOA模型的基础上运 用面向对象方法进行系统设计,目标是产生一个符合具 体实现条件的OOD模型。
OOD的特点: • 1、以面向对象的分析为基础,一般不依赖结构化分析。 • 2、与相应的OOA方法共同构成一种OOA&D方法体系。 OOA和OOD采用一致的概念和原则,但属于软件生命 周期的不同阶段,有不同的目标及策略。 • 3、较全面地体现面向对象方法的概念与原则。 • 4、大多数方法独立于编程语言,通过OOA&D所得到 的系统模型可以由不同的编程语言实现。
《软件工程导论》课后习题答案
作业及解答(第3章)
• 数据结构的描述 符 号
= +
含 义
x = a+b
举
例
被定义为 与 或
[...,...] 或 [...|...] { ... }或 m{...}n (...) “...” ..
23:59:38
x = [a , b],x = [a | b] 重复 x = {a}, x = 3{a}8 可选 x = (a) 基本数据元素 x = “a” 连结符 x = 1..9
P1 记录存款信息
P2 打印存单 F5存款信息 F3存单 E1 储户 F4利息
F5存款信息 D1存款信息 F7密码 F2取款单
F5存款信息 P3 核算密码
F4利息 F4利息 F6取款信息 P6 设置利率 P4 计算利息
P5 打印利息清单 F8储蓄利率
E2 业务员
23:59:38
F8储蓄利率
F8储蓄利率
23:59:38
重庆工学院计算机科学与工程学院 李梁(liliang@) 李梁
作业及解答( 作业及解答(第3章)
23:59:38
重庆工学院计算机科学与工程学院 李梁(liliang@) 李梁
作业及解答( 作业及解答(第3章)
• 3-6 复印机的工作过程大致如下:未接到复印 命令时处于闲置状态,一旦接到复印命令则进 入复印状态,完成一个复印命令规定的工作后 又回到闲置状态,等待下一个复印命令;如果 执行复印命令时发现没纸,则进入缺纸状态, 发出警告,等待装纸,装满纸后进入闲置状态, 准备接收复印命令;如果复印时发生卡纸故障, 则进入卡纸状态,发出警告等待维修人员来排 除故障,故障排除后回到闲置状态。 • 请用状态转换图描绘复印机的行为。
(完整版)软件工程 判断题
判断题:第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。
用户界面设计对于一个系统的成功是至关重要的,一个设计得很差的用户界面可能导致用户拒绝使用该系统。
软件工程面向对象
面向对象软件工程面向对象方法学的提出•结构化软件工程方法学•面向过程、以算法为核心、把数据和过程作为相对独立的部分•对早期只重视编程、不重视用户需求和开发过程,只重视代码、不重视文档来说,是一个巨大的进步•给软件产业带来了巨大的进步,部分缓解了软件危机•在许多中小型软件项目中获得了很大的成功•但是,它存在着明显的缺点•当把这种方法学应用于大型软件产品的开发时,似乎很少取得成功面向对象方法学概述•面向对象方法学的出发点和原则•尽可能模仿人类习惯的思维方式,使软件开发的方法与过程尽可能接近人类认识世界、解决问题的方法与过程•面向对象方法的特点•与人类习惯的思维方法一致:按照人们习惯的思维方式建立模型,模拟客观世界•稳定性好:实体是相对稳定的,以对象为中心构建的软件系统必然是相对稳定的•可重用性好:对象类提供了比较理想的模块化机制和可重用机制•易于开发大型软件:把大型产品看作一系列本质上相互独立的小产品来处理•可维护性好:容易理解、容易修改、易于测试四个要点:对象+类+继承+通信•面向对象软件是由对象组成•软件中的任何元素都是对象•对象是把静态属性的数据和动态属性的操作封装在一起而形成的统一体•复杂对象由简单对象组成•把所有对象都划分成若干类•每个类都定义了一组数据和方法(即施加于对象的操作);•按照子类与父类的关系,把若干个对象类组成一个层次结构的系统(即继承);•对象彼此之间仅能通过传递消息相互联系(对象的私有信息都被封装在对象类中)。
Coad和Yourdon给出了一个定义:面向对象=对象+类+继承+通信基本概念(1)•类(Class)•是对具有相同属性和行为的一(多)个对象的描述•是一个支持继承的抽象数据类型•实例(Instance)•就是由某个特定的类所描述的一个具体的对象•消息(Message)•是要求某个对象执行类中所定义的某个操作的规格说明•其组成为:接收消息的对象、消息名和变元•方法(Method)•就是对象所能执行的操作(类中定义的服务)•属性(Attribute)•就是类中所定义的数据,是对客观世界实体所具有的性质的抽象基本概念(2)•封装•是把数据和实现操作的代码集中起来放在对象内部,不能从外部进行访问和修改。
天津大学软件工程课程教学大纲
2. Course Description This course presents an introduction to the basic concepts of software, objects of
software engineering, traditional procedure-oriented soft development methods and object-oriented soft development methods, so students can master the method to develop high quality software. By learning the software develop process and process management techniques, students can understand how to conduct software metrics and management, how to take quality assurance activities, so the students can plan and manage software development activities effectively.
《软件工程——理论与实践(第三版)》,Pfleeger.S.L,Atlee.J.M.著,高等教 育出版社,2006 年 9 月。
制定人: 审核人: 批准人: 批准日期:
年月日
TU Syllabus for Software Engineering
Code:
2160288
Semester Hours: 56
Chapter 2 Software Process Software Process Model Component-Based Development Process RUP CMM
软件工程概论_8_面向对象需求分析
• 一.面向对象分析模型的组成结构 • 二.面向对象分析模型描述工具 • 三.面向对象分析的基本过程
• 四. 面向对象分析方法
• 五. 小结
一.面向对象分析模型的组成结构
数据模型
属性、操作、协作者
功能模型
类/对象 模型
对象关系模型
使用实例
对象-行为模型
行为模型
二.面向对象分析模型描述工具
1. 用例图
2.面向对象建模 (1)建模与模型 建模是将问题域的解空间定义成一种模型,以帮助系统分析 人员更好地理解问题。 模型是为了理解问题而对问题所做出的一种抽象,而且是对 问题的一种无歧义的描述。模型由一组图示符号和组织这些 符号的规则组成。利用它们来定义和描述问题域中的术语和 概念。 建模的目的主要是为了减少复杂性。 (2)面向对象模型
2) 面向对象分析的五个层次 面向对象分析由五个主要活动组成,即确定类-&-对象、识别 结构、识别主题、定义属性和定义服务(方法)。对于一个复杂 问题的面向对象的模型可用五个层次表示:类-&-对象层、结 构层,主题层、属性层和服务层,见图3.3.8。
主题层 subject level 类-&-对象层object 结构层 structure 属性层 attribute 服务层 serves
•使用具有确切含义的名词。
• 尽量使用能表示类的含义的日常用语作名字,不要使用空洞的或含 义模糊的词作名字。例如,“库房”比“房屋”或“存物场所”更确切。
•必要时用名词短语作名字。
• 为使名字的含义更准确,必要时用形容词加名词或其他形式的名词 短语作名字。例如,“最小的领土单元”、“储藏室”、“公司员工”等 都是比较恰当的名字。
签定保险单 销售统计
客户
软件工程课件PPT模板
演讲人
202x-11-11
part one
01 默
认
章
a
第1章软 件工程概
述
d
第1章软 件工程概
述
默认章
b
第1章软 件工程概
述
e
第2章软 件需求工
程
c
第2章软 件需求工
程
f
第1章软 件工程概
述
a
第1章软 件工程概
述
d
第Байду номын сангаас章软 件设计基
础
默认章
b
第2章软 件需求工
程
e
第4章结 构化设计
方法
c
第2章软 件需求工
程
f
第5章软 件实现
默认章
0 1
第6章软件测 试
0 4
第7章uml建 模语言
0 2
第6章软件测 试
0 5
第7章uml建 模语言
0 3
第6章软件测 试
0 6
第8章面向对 象分析
默认章
0 1
第9章面向对 象设计
0 4
第10章软件维 护
0 2
第9章面向对 象设计
0 5
第10章软件维 护
0 3
第10章软件维 护
0 6
第11章软件项 目管理
默认章
第11章软件项目管理 第1章软件工程概述 期末演练测试卷 2019-2020学年第二学期期末考 试软件工程试卷
感谢聆听
第8章 面向对象分析-软件工程基础(第3版)-胡思康-清华大学出版社
第8章 面向对象分析
第 5 页5
面向对象分析概述
面向对象分析的3类模型
OOA模型由3类独立模型构成:功能模型、静态模型和动态模型。 ➢功能模型描述软件系统的用户交互和功能。 ➢静态模型描述软件系统中类与对象以及它们间的关系,也因也称 为对象模型。 ➢动态模型描述系统的控制结构,也称为交互模型。
第8章 面向对象分析
第 6 页6
面向对象分析概述
类
静态模型的5个层次 类-对象层
对象
Coad和Yourdon 提出,对于大型、复杂 性软件系统,需要建立 分析问题域的静态模型。 该模型由5个层次组成: 类-对象层、结构层、 属性层、服务层和主题 层。
结构层 属性层 服务层 主题层
泛化关系
关联关系
属性
对象连接
服务
消息连接
⑶ 用例描述:用文字信息详细描述用例的内容,它是对用 例的有益补充。
第8章 面向对象分析
第 8 页8
建立静态模型
➢用例模型分别从参与者和系统的角度描述用户需求, 依据用例模型导出静态模型。静态模型是面向对象建 模中最基本、最重要、最耗时的技术活动。 ➢静态建模的任务是构建问题域的概念模型,把问题 域中的实体转变为信息域的类与对象以及它们间的关 系,因此也被称为对象模型或领域模型。 ➢静态模型通过建立类图及关系来反映领域概念,而 面向对象设计也建立类图,但各阶段对类的抽象程度 不同。
第8章 面向对象分析
第 12 页12
建立动态模型
建立状态图
状态图描述的就是对象状态的转换过程。通过对对象状态 的分析,能够了解对象在系统流程中的变换,从而发现潜在的事 件和条件。
建立状态图的一般过程如下: ⑴ 了解系统的主要功能和性能,确定和它们有关的主要对象。 ⑵ 列出一个对象的生存期内的所有可能的状态。 ⑶ 确定对象状态改变时的触发条件或事件。 ⑷ 在一个对象中,选定一组与描述状态相关的行为属性和促使 改变状态的方法。 ⑸ 结合触发条件、事件、行为属性值改变的先后顺序,建立软 件系统的状态图。
面向对象程序设计概述
1.什么是结构化程序设计方法?这种方法有哪些优点和缺点?【解答】结构化程序设计方法是指20世纪60年代开始出现的高级语言程序设计方法,由于采用了数据结构化、语句结构化、数据抽象和过程抽象等概念,使程序设计在符合客观事物与逻辑的基础上更进了一步。
结构化程序设计的思路是:自顶向下、逐步求精。
程序结构由具有一定功能的若干独立的基本模块(单元)组成,各模块之间形成一个树状结构,模块之间的关系比较简单,其功能相对独立,模块化通过子程序的方式实现。
结构化程序设计方法使高级语言程序设计开始变得普及,并促进了计算机技术的深入应用。
虽然结构化程序设计方法采用了功能抽象、模块分解与组合,以及自顶向下、逐步求精的方法,能有效地将各种复杂的任务分解为一系列相对容易实现的子任务,有利于软件开发和维护;但与面向对象程序设计方法相比,结构化程序设计存在的主要问题是,程序的数据和对数据的操作相互分离,若数据结构改变,程序的大部分甚至所有相关的处理过程都要进行修改。
因此,对于开发大型程序具有一定的难度,软件的可重用性差,维护工作量大,不完全符合人类认识世界的客观规律。
2.面向对象程序设计有哪些重要特点?【解答】软件设计的目的是为了解决日常生活中存在的各种实际问题,面向对象程序设计与以往各种程序设计方法的根本区别是程序设计的思维方法的不同。
它主要具有如下重要特点:(1)面向对象程序设计实现了较直接地描述客观世界中存在的事物(即对象)及事物之间的相互关系,它所强调的基本原则是直接面对客观事物本身进行抽象,并在此基础上进行软件开发,将人类的思维方式与表达方式直接应用在软件设计中。
(2)面向对象的程序设计将客观事物看作具有属性和行为的对象,通过对客观事物进行抽象来寻找同一类对象的共同属性(静态特征)和行为(动态特征),并在此基础上形成类。
(3)面向对象的程序设计将数据和对数据的操作封装在一起,提高了数据的安全性和隐蔽性。
第1章面向对象程序设计概述3(4)面向对象的程序设计通过类的继承与派生机制以及多态性特性,提高了软件代码的可重用性,因而大大缩减了软件开发的相关费用及软件开发周期,并有效地提高了软件产品的质量。
软件工程课程目录
第一章软件工程概述介绍软件工程概念的提出以及发展历程,并分析软件开发的本质。
软件工程概论课程介绍第二章软件过程介绍如何定义一个项目的过程,主要涉及三方面的知识:(1)要了解软件开发通常需要做哪些工作,即软件生存周期过程;(2)要了解定义过程的基准框架,即软件生存周期模型;(3)是要了解一般性的过程规划技术。
软件过程(1)-20100913软件过程(2)-20100916软件过程(3)-20100916第三章软件需求与软件需求规约介绍软件需求的定义、需求的分类、常用的需求发现技术,以及需求规约。
软件需求-20100923第四章结构化分析介绍结构化需求分析、需求验证及实例研究。
结构化分析方法-0927第五章结构化设计结构化设计:总体设计的目标及其表示、总体设计方法、设计评价准则与启发式规则、设计优化、详细设计、软件设计规格说明书、实例研究。
结构构化设计方法-总体设计0930结构化设计-详细设计和软件设计规约1011第六章面向对象方法-UML面向对象方法发展以及UML(Unified Modeling Language)的提出、表达客观事物的术语、表达关系的术语、组织信息的通用机制--包、模型表示工具。
面向对象介绍面向对象方法UML(1)面向对象方法UML(2)面向对象方法UML(3)第七章面向对象分析、设计和编程技术介绍面向对象分析、设计和编程技术。
面向对象分析模型规约面向对象设计(1)面向对象设计(2)面向对象编程第八章面向对象方法-RUPRUP(Unified Software Development Process)的作用和特点、核心工作流。
RUP-1-1207RUP-2-1210RUP-3-1214第九章软件测试软件测试目标与软件测试过程模型、软件测试技术、软件测试步骤、静态分析技术-程序正确性证明。
软件测试(1)软件测试(2)软件测试-扩展报告第十章软件工程管理软件工程管理活动;软件规模、成本和进度估算;能力成熟度模型CMM;ISO9000标准。
软件工程教程 作者 吴迪 电子科技大学出版社
第一篇软件工程引论第1章软件工程概述1.1 软件1.2 软件危机1.3 软件工程1.4软件生存周期1.5软件开发模型1.6 软件工程技术的发展1.7本章小结习题第二篇传统软件工程第2章软件问题定义及可行性分析2.1 软件问题定义2.2 可行性研究的任务2.3 可行性研究的步骤2.4 系统流程图2.5 数据流图2.6 数据字典2.7 成本效益分析2.8本章小结习题第3章需求分析3.1 需求分析的任务和原则3.2 需求分析的步骤3.3 结构化需求分析方法3.4 需求分析的图形工具3.5 需求管理3.6 本章小结习题第4章总体设计4.1 总体设计的目标和任务4.2 总体设计的过程4.3 总体设计的原理4.4 软件结构设计准则4.5 描绘软件结构的图形工具4.6 面向数据流的软件结构设计方法4.7本章小结习题第5章详细设计5.1 详细设计的目标和任务5.2 详细设计的原则5.3 用户界面设计5.4 详细设计工具5.5 面向数据结构的设计方法5.6 程序复杂程度度量5.7本章小结习题第6章软件编码与软件测试6.1 程序设计语言6.2 程序设计风格6.3 软件测试定义6.4 软件测试方法6.5 软件测试过程6.6 测试用例定义6.7 黑盒测试用例设计6.8 白盒测试用例设计6.9 软件测试原则和策略6.10 软件调试6.11 本章小结习题第7章软件维护7.1 软件维护概述7.2软件维护类型7.3 软件维护过程7.4 软件可维护性7.5 软件重用和再工程7.6 本章小结习题第三篇面向对象软件工程第8章面向对象技术与UML8.1 面向对象技术概述8.2 UML概述8.3 UML图8.4本章小结习题第9章面向对象分析9.1 面向对象分析概述9.2 面向对象分析过程9.3 面向对象分析原则9.4 建立对象模型9.5 建立动态模型9.6 建立功能模型9.7 本章小结习题第10章面向对象设计10.1 面向对象设计概述10.2 面向对象设计过程与准则10.3 面向对象设计启发规则10.4 系统设计10.5 对象设计10.6本章小结习题第11章面向对象编码与测试11.1 面向对象设计语言11.2 面向对象设计风格11.3 面向对象测试策略11.4 面向对象测试用例设计11.5本章小结习题第四篇软件管理与项目实例第12章软件项目管理12.1 软件项目管理概述12.2 软件项目估算12.3 进度管理12.4 风险管理12.5 团队管理12.6 质量管理12.7 软件配置管理12.8 本章小结习题第13章软件工程标准与文档13.1 软件工程标准13.2 软件文档与编写要求13.3 软件文档撰写规范指南13.4本章小结习题第14章项目实例14.1 XXX系统实例(传统软件工程项目实例)14.2 XXX系统实例(面向对象软件工程项目实例)14.3本章小结习题参考文献。
实用软件工程( 第2版)7、8章
完整、正确的脚本为建立动态模型奠定了必要的基础。但是,用自 然语言书写的脚本往往不够简明,而且有时在阅读时会有二义性。为了 有助于建立动态模型,通常在画状态图之前先画出事件跟踪图。UML顺 序图(也称为事件跟踪图)中, 一条竖线代表应用领域中的一个类,每 个事件用一条水平的箭头线表示,箭头方向从事件的发送对象指向接受 对象,时间从上向下递增。
7.1 面向对象分析方法
明确了对象、类和类之间的层次关系之后,需要进一步 识别出对象之间的动态交互行为,即系统响应外部事件或操 作的工作过程。一般采用顺序图将用例和分析的对象联系在 一起,描述用例的行为是如何在对象之间分布的。也可以采 用协作图、状态图或活动图。
最后,需要将需求分析的结果用多种模型图表示出来, 并对其进行评审。由于分析的过程是一个循序渐进的过程, 合理的分析模型需要多次迭代才能得到。
7.1 面向对象分析方法
边界类示意图 控制类示意图 实体类示意图
目标系统的类可以划分为边界类、控制类和实体类。
➢ 边界类代表了系统及其操参与者的边界,描述参与者与 系统之间的交互。它更加关注系统的职责,而不是实现 职责的具体细节。通常,界面控制类、系统和设备接口 类都属于边界类。
➢ 控制类代表了系统的逻辑控制,描述一个用例所具有的 事件流的控制行为,实现对用例行为的封装。通常,可 以为每个用例定义一个控制类。
主机联接有问题,则执行异常事件流e。
a1. 提示用户输入无效密码,请求再次输入;
(5)ATM提供以下选项:存钱、取钱、查询。
a2.如果三次输入无效密码,系统自动关闭,退出客户银行卡。
(6)用户选择取钱选项。
(7)ATM提示输入所取金额。
子事件流b:
软件工程 面向对象的技术
1. Coda方法的OOA
类与对象层 属性层 服务层
类的边界 实例的边界 实例连接
属性 消息连接
服务
结构层
主题层
泛化与特化结构 主题
整体与部分结构
图4.10 分析过程的五个层次
在Coda方法中, 构 造 和 评 审 OOA 概 念模型的顺序由五 个层次组成:类与 对象、属性、服务、 结构和主题
这五个层次表 示分析的不同侧面。
继承是使用现存的定义作为基础,建立新定义的 技术。是父类和子类之间共享数据结构和方法的机制, 这是类之间的一种关系。
继承性分:
单重继承:一个子类只有一个父类。即子类只继承 一个父类的数据结构和方法。
多重继承:一个子类可有多个父类。继承多个父类 的数据结构和方法。
基类
现存类定义 父类(基类)
继承
图 4.3 继承性
良好的接口,子系统内的类相互协作。标识问题本身 的并发性,为子系统分配处理器。
系统内部
保险单 填写界面
保险单
客户
数据库界面 (abstract)
Oracle 界面 Sybasec界面
子系统的分解是关键,可以有分层和分块:
分层:将软件系统组织为层次结构,每层是一个子系 统。分层结构又分为封闭式和开放式。
类具有属性,用数据结构来描述类的属性, 类具有操作,它是对象的行为的抽象,操作实现 的过程称为方法(method) ,方法有方法名,方法体 和参数。
由于对象是类的实例,在进行分析和设计时, 通常把注意力集中在类上,而不是具体的对象上。
对象和类的描述
类和对象一般采用“名字”、“属性”和“运算”来描 述。
基本概念: 问题域(problem domain) — 被开发系统的应用领域。 系统责任(system responsibilities) — 所开发的系统应 具备的职能。
软件工程简答题答案第五版
软件工程简答题答案第五版软件工程简答题第一章绪论1.什么是软件危机?软件危机有什么表现?软件危机产生的原因是什么?答:所谓软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
主要是指如何开发软件,怎样满足对软件日益增长的需求,如何维护数量不断膨胀的先有软件。
表现:(1)对于软件开发的成本和进度的估计很不准确。
(2)开发的软件产品不能完全满足用户要求,用户对已完成的软件系统不满意的现象常常发生。
(3)开发的软件可靠性差。
(4)软件通常没有适当的文档资料。
(5)软件的可维护性差。
(6)软件开发生产率提高的速度,远远跟不上计算机应用普及深入的趋势。
原因:软件开发中遇到的问题因找不到解决的办法,使问题积累起来,形成了尖锐的矛盾,导致了软件危机。
2.简述软件的发展过程。
答:软件生产的发展划分为三个年代:(1)程序设计时代:这一时期,软件的生产主要是个体手工劳动的生产方式。
(2)程序系统时代:由于计算机的应用领域不断扩大,软件的需求也不断增长,软件由于处理的问题域扩大而使程序变得复杂,设计者不得不由个体手工劳动组成小集团合作,形成作坊式生产方式小集团合作生产的程序系统时代。
(3)软件工程时代:软件工程时代的生产方式是采用工程的概念、原理、技术和方法,使用数据库、开发工具、开发环境、网络、分布式、面向对象技术来开发软件。
3.什么叫软件工程?软件工程是如何克服软件危机的?答:软件工程是将系统的、规范的、可度量的工程化方法应用于软件开发、运行和维护的全过程及上述方法的研究。
为了克服软件危机,人们从其他产业的工程化生产得到启示,采用工程的概念、原理、技术和方法来开发和维护软件。
4.软件工程的目标是什么?软件工程有哪些原则?答:软件工程的目标是:在给定成本、进度的前提下,开发出具有可修改性、有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性并满足用户需求的软件产品。
原则如下:抽象、模块化、信息隐藏、局部化、完整性、一致性和可验证性。
java面向对象的课程设计
java面向对象的课程设计一、课程目标知识目标:1. 理解面向对象编程的基本概念,掌握类与对象的关系,能够描述封装、继承、多态等核心概念。
2. 学会使用Java语言编写类和对象,理解构造方法、成员变量和成员方法的定义与使用。
3. 掌握Java中的访问控制符,理解不同访问级别的意义和应用场景。
技能目标:1. 能够运用面向对象思想分析和设计简单程序,独立编写并调试Java类和对象。
2. 通过实际操作,掌握如何利用继承实现代码的复用,通过多态实现方法的动态绑定。
3. 学会使用Java标准库中的类和接口,培养查阅文档和解决问题的能力。
情感态度价值观目标:1. 培养学生对编程的兴趣,激发学习积极性,树立正确的计算机科学观念。
2. 培养学生的团队协作能力,学会与他人共同分析问题、解决问题,培养良好的沟通与协作意识。
3. 引导学生认识到面向对象编程在软件开发中的重要性,培养学生对软件工程的敬畏之心。
本课程针对高年级学生,在学生已具备基础编程知识的基础上,进一步深化对面向对象编程的理解和应用。
课程注重理论与实践相结合,通过案例教学、小组讨论等形式,帮助学生掌握Java面向对象编程的核心知识,提高编程实践能力,培养学生具备初步的软件开发素养。
教学要求强调学生的主动参与和动手实践,注重培养学生的自主学习和问题解决能力。
二、教学内容1. 面向对象的基本概念:类、对象、封装、继承、多态。
2. Java类的定义与使用:构造方法、成员变量、成员方法、访问控制符。
3. Java继承与多态:继承的概念与实现、方法重写、多态性、向上转型与向下转型。
4. Java标准库中的常用类:Object类、String类、包装类、Math类等。
5. 接口与抽象类:接口的定义与实现、抽象类的概念与使用。
教学安排:第一周:面向对象的基本概念,类的定义与使用。
第二周:成员变量、成员方法、构造方法,访问控制符。
第三周:继承与多态,方法重写,向上转型与向下转型。
《软件工程案例教程》李军国主编习题答案
《软件⼯程案例教程》李军国主编习题答案第1章习题答案⼀、判断题⼆、填空题三、简答题1.软件的特点:①软件具有抽象性。
②软件与硬件的⽣产⽅式不同。
③软件与硬件的维护⽅式不同。
④软件具有复杂的逻辑性。
⑤软件的成本较⾼。
⑥软件的使⽤和社会因素有关。
2.软件危机产⽣的原因:①⽤户需求不明确。
②缺乏正确的理论指导。
③软件开发规模越来越⼤。
④软件开发复杂度越来越⾼。
3.软件危机的主要表现:①软件开发进度难以预测。
②软件开发成本难以控制。
③⽤户对产品功能难以满⾜。
④软件产品质量⽆法保证。
⑤软件产品难以维护。
⑥软件缺少适当的⽂档资料。
4.软件⼯程学的基本原则有哪些:①抽象。
②信息隐蔽。
③模块化。
④局部化。
⑤确定性。
⑥⼀致性。
⑦完备性。
⑧可验证性。
5 什么是软件的⽣命周期?答案:软件与任何⼀个事物⼀样,有它的孕育、诞⽣、成长、成熟、衰亡的⽣存过程。
这就是软件的⽣存周期。
6 软件⼯程过程有哪⼏个基本过程活动?试说明之。
答案:软件⼯程过程的基本过程活动有4步:①软件规格说明(需求定义)。
规定软件的功能及其运⾏的限制;②软件设计与开发(设计开发)。
产⽣满⾜规格说明的软件;③软件确认(测试)。
确认软件能够完成客户提出的要求;④软件演进(维护)。
为满⾜客户的变更要求,软件必须在使⽤的过程中演进。
四、综合题1.详细说明软件⽣命周期分哪⼏个阶段?答案:软件⽣命周期主要分为6个阶段:软件项⽬计划、软件需求分析和定义、软件设计、程序编码、软件测试,以及运⾏维护。
(1)软件项⽬计划:在这⼀步要确定软件⼯作范围,进⾏软件风险分析,预计软件开发所需要的资源,建⽴成本与进度的估算。
根据有关成本与进度的限制分析项⽬的可⾏性。
(2)软件需求分析和定义:在这⼀步详细定义分配给软件的系统元素。
可以⽤以下两种⽅式中的⼀种对需求进⾏分析和定义。
⼀种是正式的信息域分析,可⽤于建⽴信息流和信息结构的模型,然后逐渐扩充这些模型成为软件的规格说明。
另⼀种是软件原型化⽅法,即建⽴软件原型,并由⽤户进⾏评价,从⽽确定软件需求。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
§3. 软件重用
⑵ 重用率(Reusability)与生产率(Productivity) 记:Lt = Total length of code ( # of lines)
Ln = Length of new code Lr = Length of reused code Et 、En、 Er are the corresponding efforts ( # of m-d)
服务设计 消息设计 类及对象设计 子系统设计
3
§1. OOD准则
§1. OOD准则:优秀软件设计的一个重要特点是 容易维护 回顾:SD准则包括
Modularization Information hiding Abstraction Module independence
对于 OOD有类似的准则: 1、Module = Object
上层组合法:完整程序的组合
16
§3. 软件重用
② 软件生成技术: 按照形式化的软件功能描述和一定的生成机 理,由生成器系统(generator system)自动生成目标程序。 重用的是generator 的代码规则
③ OO重用技术:Class component的重用
⑷ 类构件(Class componnt): ①可重用的软构件应具备的特点: 独立、可塑、接口清晰(文档详尽)
9
§2. 启发规则
3、设计简单的class(定义不超过一页纸或两屏)。 应注意: ① 避免过多attributes; ② 能用简单的语句描述一个class的任务; ③ objects之间合作关系要简单; ④避免过多methods( 7个)。
问题:设计出大量的classes,使结构复杂度增加。 解决:划分主题,提高可理解性。 4、使用简单的protocol,减少message 中传递的
§1. OOD准则
例:C++ 中的“模板”(template)
template < class T, int n >
class array_n {
private : T items [n] ; }; main ( ) // 定义了T类型的向量元素共n个
{ ……
array_n < complex, 1000 > w ; //w是有1000个元素的复向量 ……
第八章 面向对象设计
(Object-Oriented Design) § 1 面向对象设计的准则 § 2 启发规则 § 3 软件重用 § 4 系统分解: 设计问题域子系统;设计人机交互子系统; 设计任务管理子系统;设计数据管理子系统 § 5 设计类中的服务 § 6 设计关联 § 7 设计优化 § 8 小结
18
§3. 软件重用
注意:有些操作可能会妨碍class component的重用,如
与表示方法有关的操作 与数据结构、大小有关的操作 与外部设备有关的操作
实现算法在将来可能会改进\改变的核心操作
解决方法:将这些操作分离出来,作为适配接口 (adaptive interface),使class中其它操 作通过调用AI而实现。在不同应用环 境下,用户只须重新定义AI操作就可 以重用class。 19
parameters
5、使用简单的method(CASE 可考虑用 inheritance替代)。
6、把设计变动减至最小。
10
理想的设计变动情况
11
§3. 软件重用 (Software Reuse)
1、概念: 知识重用(例如软件工程知识的重用)
方法和标准重用(例如OO方法和国家规定
的软件开发规范的重用)
② 设计重用 —— 当移植系统时 ③ 分析重用 —— 当需求未变,而系统结构改变 时(例如将HDIS改为OO实现) 2、重用效果的衡量: ⑴ 额外代价: 创建可重用成分的专门投资 多花2 ~ 4倍时间测试以保证质量 构件库的建立与维护需要投资 以上投资将分摊到重用这些构件的新系统成 本中。重用次数越多,分摊成本越少。
种算法实现,若无新算法则继承老算法。
20
§3. 软件重用
模式的定义
• 模式是在特定上下文中遇到的一般性问 题的可重用解决方案的概要。 • 建筑师Christopher Alexander:“由三 个部分组成的规则,表达了在一个特定 上下文、一个问题和一个解决方案之间 的关系” • 模式是将设计知识文档化并且把这种知 识传递给学习设计的人的一种方法。
继承耦合(inheritance coupling): 要求 Parent class IS_A child class as high as possible
7
§1. OOD准则
5、Cohesion: 服务内聚(service cohesion):一个服务只完成一个功能。
类内聚(class cohesion):一个类只有一个用途,否则分
17
②重用方式: 实例重用(instance reuse \ black-box reuse): 创建class的不同instances,通过messages完成 不同的任务。是最基本的重用方式。 用几个简单的objects创建出更复杂的class, 是实例重用的另一种形式
§3. 软件重用
继承重用(inheritance reuse): 是一种安全地裁剪已有的class component的方式。 多态重用(polymorphism reuse): Parent class与child class有相同的对外接口,使 消息连接的复杂度降低。
软件成分的重用
知识 工程
重用软件成分有三个级别: ① 代码重用: • 源码剪贴 —— 无法溯源,无配臵管理 • Include —— 修改后所有包含了此段代码的程 想象一下,stdio.h 被改动之后…… 序都须重新编译。
• Inheritance —— 无须改动原有代码
12
§3. 软件重用
}
6
§1. OOD准则
3、Information hiding = Encapsulation of object 4、Coupling: 交互耦合(interactive coupling):通过传递message发生 要求 降低参数个数和参数复杂性 减少objects发送 \ 接收message的个数 as loose as possible
§3. 软件重用
Adaptive Interface还可进一步细分为
转换接口(transition interface):重用时必须重定 义与表示方法、数据结构、硬件等有关的操作
(例如C++中class 里的 pure virtual function)
扩充接口(expansion interface):一个操作可由多
4
§1. OOD准则
2、Abstraction:抽出事物的本质特性, 暂不考虑 其细节,使设计从具体实现方法中超脱。
Procedure abstraction: 在SD中已讨论 Data abstraction: Class即是一种抽象数据类型。外界无须 知道实现方法就可按照类协议(class description protocol)* 使用class中定义的数据。 Parameter abstraction: 将数据类型作为参数处理。 *
⑶重用技术:指利用可重用的构件开发软件的技 术,及开发可重用软件的技术。 ① 软件组合技术:
底层部件库法(Bottom-up compositional reuse) : 从可重用的代码部件库(reuse repository)中选用 部件,组合成软件。
15
例:
§3. 软件重用
Lucent Technologies initiated a companywide program to reuse software components (McClure 1997). As a consequence, the Workstation Software Development Department formed a Reuse Council to devise a strategy for selecting candidate components for its reuse repository. The Council was comprised of seven people, representing all groups in the department. The Council created an inventory of components and formed a matrix with the features of all past and planned projects. Then, each feature was rated in terms of whether it had been implemented and was still needed, had been implemented but was no longer needed, or had not been implemented but was still needed. Those features that were needed and were common to more than one project were targeted for reuse. In fact, some were redesigned to make them more reusable. The Council met every week for 2 hours to make component selections, inspect design documentation for those components already in the repository, and to monitor the levels of reuse in the department’s projects.