软件工程2(面向对象软件工程)复习

软件工程2(面向对象软件工程)复习

01ConceptsofOO

1. 什么是UML?UML的特点?UML是越复杂越好吗?
  • Unified Modeling Language,是面向对象软件工程使用的统一建模语言,是一种图形化了的语言,主要用图形方式表示,是一种开放的标准。
  • 特点:统一标准、面向对象、可视化、表达能力强。
  • 不是。
2. 什么是建模?建模的四个基本原则?面向对象四个基本原则?
  • 建模的目标:帮助你把一个系统可视化成你想要的样子、允许你指定系统的结构或行为、提供一个模板来指导你构建一个系统、记录下你所做的决定。
  • 建模的四个基本原则:1. 明确要建模的类型,问题的起因,以及解决方案是如何一步步形成的。2. 任何一个模型可能有多种不同的表达程度,程度越深则越详细。3. 最好的模型是和真实对象联系起来的。4.没有任何一个模型是可以完全完备的,每一个很好的系统都是由一系列独立的子模块联接起来的。
  • 面向对象四个基本原则:抽象化、封装形式、模块化、层次结构
    UML可视化建模
3. 什么是用例图?
  • 描述系统提供的功能以及和外部元素的关联,捕获需求内容,用于需求分析。从系统的外部用户的观点看系统应具有的功能,用例图主要用于对系统,子系统或类的行为进行建模,它只说明系统实现什么功能,而不必说明如何实现。
    用例图的模型元素
    用例图实例
4. 什么是对象?
  • 对象是现实世界中个体或事物的抽象表示,是其属性和相关操作的封装。
  • 对象的操作是指该对象可以展现的外部服务。
5. 什么是类?类的六种关系(肯定考)
  • 类是对共享相同属性,操作,关系和语义的对象集的描述。
  • 类的六种关系:
    • 泛化(Generalization):UML将继承描述为泛化关系,子类继承超类的所有特性(属性、操作、关系),并具有独自的特性。
    • 实现(Realization):即接口实现。表示类是接口所有特征和行为的实现。
    • 关联(Association):一种结构关系,指定一个事物的对象连接到另一事物的对象
    • 聚合(Aggregation):是一种特殊的关联形式,它对聚集(整体)及其各部分之间的整体关系进行建模,菱形指向总体。(成员变量)某一个类成为另一类的一部分时,使用聚集。
    • 组合(Composition):是整体与部分的关系,但部分不能离开整体而单独存在。如公司和部门是整体和部分的关系,没有公司就不存在部门。
    • 依赖(Dependency):两个模型元素之间的关系,其中一个模型的变化可能会导致其他变化。
      类的六种关系
6. 什么是导航?
  • 可以使用关联从关联的类导航到目标类。
7. 什么是角色?什么多重性?0…1*(必考)
  • 角色:表示一个类对于对方类来说,自己扮演的角色或所处的位置
  • 多重性:表示相关联的类之间,对象数目的相应关系
    角色和多重性
    多重性
    角色和多重性例子
  • 对于每一个教授对象,有许多courseoffering,所以是0…*
  • 对于每一个courseoffering,有一个或零个教授参与,所以是0…1
8. 什么是依赖?依赖的三种类型?
9. 什么是多态?
  • 在一个接口背后隐藏多种不同实现的能力。
10. 什么是接口?接口的两种类型?
  • 接口声明一系列连贯的公共特征和义务,是提供者与服务使用者之间的合同。只具有操作的功能,不具有属性关联,操作的实现。
  • Provided interface(供给接口):指由实现类所供给的接口
  • Required interface(需求接口):先设计出使用者以及所需要的接口
    接口
11. 什么是包?什么是包图?什么是包图的依赖?包和子系统之间的区别?
  • 包是基于模型元素的含义或作用将模型元素分组的一种机制。
  • 包图是表示顶层架构的机制。
  • 如果两个包中存在具有依赖关系的两个类,则称这两个包之间具有依赖关系。
  • 包和子系统的区别:子系统是指有单独说明和实现部分的包。它表示具有对系统其他部分存在接口的连贯模型单元。
    包

02 BestPractices

12. 什么叫最佳实践?什么叫迭代式开发(四个阶段)?什么叫RUP(过程的一种)?四个过程?什么叫软件工程过程?
  • 最佳实践:解决软件开发过程中问题症状的方法。
  • 迭代式开发:整个开发工作被组织为一系列短小的、固定长度的小项目,称为一系列的迭代,开发项目可以在需求被完整地确定之前启动,在一次迭代中完成部分功能。再通过用户的反馈来细化需求,并开始新一轮的迭代。每次迭代产生一个可运行的产品。
  • 迭代式开发四个阶段:需求、分析与设计、实现、测试(?)
    迭代开发
  • RUP:是软件工程的过程。它提供了在开发组织中分派任务和责任的纪律化方法。它的目标是在可预见的日程和预算前提下,确保满足最终用户需求的高质量产品。
  • RUP四个过程:先启阶段(定义整个项目的范围)、精化阶段(制定项目计划、描述功能、建立体系架构框架)、构建阶段(构建软件产品)、移交阶段(将产品移交到最终用户手中)
  • 软件工程过程:为获得软件产品,在软件工具的支持下由软件工程师完成的一系列工程活动。
13. 什么叫4+1视图?4和1分别是什么?
  • 从五个不同视角描述软件工程体系结构,每个视图只关系系统的一个侧面,五个视图结合起来,才能反应系统的全部内容。
  • 4是指逻辑视图(设计对象模型)、过程视图(捕捉设计的并发和同步特征)、物理视图(表述软件到硬件的映射,反映了分布式特性)、配置试图(描述了在开发环境中软件的静态组织结构),1是指场景视图。

03 Requirements

14. 需求的目的(必考)?需求的分析过程?
  • 需求目的:
    • 1、与客户和其他涉众建立和维护关于系统应该做什么的协议
    • 2、让系统开发人员 更好的理解系统需求
    • 3、划定系统界限
    • 4、为计划迭代的技术内容提供基础
    • 5、为系统开发的成本和实践估算提供依据
    • 6、定义系统的用户接口
  • 需求分析过程:
    • 1、初步需求分析
    • 2、利用用例及用例图表示需求(从业务需求被描述出发获取执行者和场景;对场景进行汇总、分类、抽象,形成用例;确定执行者与用例、用例与用例之间的关系,生成用例图)
    • 3、利用包图及类图表示目标软件系统的总体框架结构(根据领域知识、业务需求和工作经验,设计目标软件系统的顶层架构;从业务需求描述中提取“关键概念”,形成领域概念模型;从概念模型和用例出发,研究系统中主要的类之间的关系,生成类图。)
15. 什么叫系统行为?谁来负责表示系统行为?
  • 系统行为:系统的行为与反应,是一个系统的外在可见和可测试的活动。
  • 用例用来表示系统行为。
16. 用用例来解决需求分析的优势是什么(三个)?
  • communication with the end users and domain experts(与终极用户和领域专家交流)
  • Identification of system users and what the system do(识别系统用户和系统应该做什么)
  • Verification that all requirements have been captured(确认所有需求都被捕获)
17. 用例(Use case)描述内容?架构?用例的事件流(Flow of Events)?
  • 用例是系统执行的一系列操作,这些操作会向特定的参与者(与系统交互的任何东西)产生一个可观察的值结果。
  • 用例模型是根据用例描述系统功能需求的模型;是系统预期功能(用例)及其环境(参与者)的模型。
  • 对用例的完整描述包括用例名称、参与执行者、前置条件、一个主事件流、0到多个辅事件流、后置条件。
    用例描述
  • 事件流:主事件流表示正常情况下执行者与系统之间的信息交互及动作序列,辅事件流则表示特殊情况或异常情况下的信息交互及动作序列。
  • 事件流的格式
    • 基本流(主事件流):用数字编号标明步骤的先后顺序,概括每一步的主要内容。
    • 备选流(辅事件流):起点:该备选流从事件流的哪一步开始;条件:什么条件会触发该备选流;动作:系统在该备选流下会采取什么动作;恢复:该备选流结束后,用例如何继续执行。
      事件流
18. 场景(Scenario)?场景的体系结构?(场景名、前置条件、后置条件、步骤)
  • 场景 从单个执行者的角度观察目标软件系统的功能和外部行为。这种功能通过系统与用户之间的交互表征。场景是用户与系统进行交互的一组具体的动作。场景是用例的实例,而用例是某类场景的共同抽象。
  • 对场景的完整描述包含场景名称、执行者实例、前置条件、事件流和后置条件。
    场景描述
19. 什么叫字典(Glossary)(术语表)?
  • 引用软1当中数据字典的定义:由数据条目组成,描述、组织和管理数据流图的数据流、加工、数据源及外部实体。
  • 每个术语要有清楚简明的定义。每个术语要包含在用例说明的某处。在参与者和用例的简要说明中,术语的使用必须一致。
    字典
20. 什么叫普通用例规约?
  • (不确定对不对)测试用例应当遵守的规则即用例规约。
    用例规约
21. 活动图?什么叫泳道?
  • 活动图:
    • 用例模型中的活动图用于捕获用例中的活动。
    • 它本质上是一个流程图,显示了从一个活动或操作到另一个活动或操作的控制流。
    • 注:图中的翻译不一定正确。
      活动图
    • 用例的事件流或者操作均可表示为一系列的活动,每个活动在活动图中被表示为一个结点(圆角方框)。
    • 结点之间的有向边(箭头)表示顺序执行的活动。
    • 在结点间的连接边上可以附加条件表达式([ ]中的内容),表示在有向连接边的源结点执行完成后,如果条件成立,则开始执行有向连接边的目标结点所表示的活动;如果条件不成立,则目标结点的活动不执行。
    • 菱形(菱形)在活动图中表示条件判断,条件表达式一般出现在以菱形为源结点的有向边上。
    • 活动图可以表示过程的并发。活动图的同步条(水平或者垂直粗线)可以将一条有向连接边分叉为多个并发执行的分支进程,或将多个有向连接边上的进程同步合并为一个进程。
    • 个人理解:[ ]中的内容为IF,圆角方框中的内容为DO。
  • 泳道:
    • 为了描述活动的责任对象,活动图引进了“泳道”的概念。泳道是由垂直长线分割出来的矩形区域,在泳道上方的对象负责该矩形区域内的所有活动。
      泳道1
      泳道2

04 UCAnalysis

22. 用例分析的主要三个步骤?(分析类,交互图、精化分析类类图)
  • 三个步骤:
    (1) 提取边界类、实体类和控制类;
    (2) 构造交互图;
    (3) 根据交互图精化类图。
  • 提取分析类:边界类、实体类和控制类。
    分析类
  • 构造交互图:时序图和通信图(协作图)
    • 标识边界类、实体类和控制类之后,接下来的任务是,将分析模型中的用例描述转化成 UML交互图,以交互图作为用例的精确实现方案。
    • 在设计复杂用例的实施方案时,应考虑为控制类设置一些独立的辅助类,让控制类将一 些任务委托给辅助类完成。
      交互图
  • 根据交互图精化类图(以下内容理解)
    • 可以利用交互图精化分析模型中的类图,将交互图中出现的新类添加到原有类图中,并且对相关的类进行精化,定义其属性和操作。
    • 为了简化设计模型,也为了提高重用程度,设计人员应该尽量使用已有的操作来响应新消息,并尽量使用已存在的连接路径作为消息传递的通道。如果两个类之间存在明确、自然的聚合或组合关系,则可以在类图中直接用相应的UML图元符号表示类间的聚合和组成关系,这两个关系均可提供消息传递通道。
    • 接下来讨论如何根据交互图确立类的属性。类的操作完成消息 响应责任的能力,来源于两方面的知识,一是类本身具有的信息,即类的属性,二是类能够找到的其他类,通过其他类协助其完成消息响应。在综合考虑这两个因素之后,类的操 作应该明确哪些子任务可通过消息传递路径委托给其他类完 成,哪些子任务必须由自身完成。根据后一种子任务的需要, 结合领域和业务知识即可推导出类应具有的属性。
      精化类图
23. 什么是用例实现(类图和那两种交互式实现)?用例实现的价值?时序和通讯:四种类型的消息?使用时序图或者通讯图(交互图)的优势是什么?注意画图时的布局。职责和消息是什么意思,有什么联系?
  • 用例实现是:基于协作对象,如何在设计模型中实现某个用例。更确切的说是实现某个用例中的某个场景。
  • 用例实现的价值:对所识别类的实例之间的协作进行建模
  • 通信图:通信图用于描述相互合作的对象间的交互关系和链接关系。强调交互对象间的静态链接关系。
    通信图
    通信图布局
  • 时序图:强调消息交互的时间序。
    时序图
    时序图布局
  • 交互图优势:在表达了对象到对象控制流的同时,充分展示了从活动到活动的控制流。
  • 四种类型的消息:1. 简单消息(Simple Message):以一种简单、抽象的函数表示对象之间的信息传递,不考虑通信过程的内部细节。简单消息在UML顺序图中用普通的有向箭头表示。2. 同步消息(Synchronous Message) 消息源发出消息后必须等待消息处理过程完毕并返回处理结果后,消息源才 可继续执行后续操作。前面所述的自调用消息应该是同步的。3. 异步消息(Asynchronous Message) :消息源发出消息后不必等待消息处理过程的返回,即可继续执行自己的后续操作。异步消息主要用于描述实时 系统中的并发行为。异步消息在UML顺序图中用一种特别的单向箭头表示。4. 返回消息(Return message) 表示前面发送的消息的处理过程完结之后的返回结果。返回消息应该是同步的。
    职责和消息的意思及联系:消息就是向对象发出的服务请求。事件流中的事件应直接对应于交互图中的消息,而事件间的先后关系体现为交互图中的时序,对消息的响应则构成消息接收者的职责。类图中的职责是操作。

05 Analysis&Design

24. 分析类图,精化机制总得了解。
  • 分析类图主要描述应用领域中的概念,它们的类可以从这些概念中得出,或者说分析类图中的类是从需求中获取的。
  • 精化机制(?)(可能是22里的精化类图)
25. 分析和设计时什么驱动的?(用例)目的是什么?区别是什么?是自顶向下的还是自底向上的?设计师和架构师的工作区别(知道就行)?
  • 分析和设计是用例驱动的。目的:将需求转换为系统的设计;为系统发展一个健壮的架构;使设计适应实现环境,并根据性能进行设计。
  • 区别:
    • 分析:专注于问题理解;理想化的设计;行为;系统结构;功能需求;一个小模型。
    • 设计:专注于理解解决方案;操作和属性;性能;接近真实代码;对象生命周期;大型模型
  • 既不是自顶向下的也不是自底向上的,定义了一个中间级别。
  • 软件架构师负责并协调技术活动和工件。设计人员必须了解用例建模技术,系统要求和软件设计技术。
    系统架构师和设计人员的区别

06 ArchitecturalAnalysis

26. 什么叫模式?什么叫设计模式?什么叫构造型?
  • 模式:提供上下文中常见问题的通用解决方案
  • 设计模式:设计模式是对通用设计问题的解决方法,描述了通用的设计问题描述了问题的解决方法,讨论应用模式产生的结果
  • 构造型: 根据另一个模型元素定义一个新的模型元素
27. 分析 设计 实现概念?
  • 分析机制:在分析过程中使用分析机制来减少分析的复杂性,并通过为设计人员提供复杂行为的简化表示来提高其一致性。
  • 设计机制:在列表中收集所有分析机制,绘制分析机制的类图,识别分析机制的特征,使用协作进行建模

07 DesignElements

28. 从分析例到设计元素,从设计元素再到package流程?
  • 如果是个简单的类或代表一个单一的逻辑抽象,分析类直接映射到设计元素。如果是更加复杂的类,可以分成多个类或者成为package或者成为子系统(任意组合)。
29. 子系统和包的区别?
  • 子系统:提供行为、完全地封装内容、容易替换
  • 包:不提供行为、不完全封装内容、可能不容易替换
30. 子系统和接口的配对?
  • 子系统实现一个或多个定义其行为的接口,子系统与接口成对出现
    子系统和接口
31. 重用的机制?分为内部重用和外部重用
  • 目的:
    • 根据接口来确定在哪些地方可以重用现有的子系统和/或组件。
  • 步骤:
    • 1.寻找相似的接口
    • 2.修改新的接口,以提高适合度
    • 3.用现有接口替换候选接口
    • 4.将候选子系统映射到现有组件
  • 分为内部重用和外部重用:
    • 正在开发的系统的内部:
      • 跨包和子系统的公认的共性
    • 正在开发的系统之外:
      • 商用组件
      • 来自以前开发的应用程序的组件
      • 反向工程组件

08 DesignMechanisms

09 ClassDesign

32. 设计机制 类图和时序图的归并?
  • 类图的归并:把我要做的事情和一堆第三方的、公有的设计模式给出来的东西归并在一起。
    设计机制

10 UCDesign

33. 用例设计实际上就是用例实现的精化。用例设计的三个步骤是什么?分析类是在问题域当中,设计元素对应的是solution解空间。
  • (但是课件上明明是五个):
    • 1.描述设计对象间的交互
    • 2.用子系统来简化时序图
    • 3.描述一致化相关的行为
    • 4.精华事件流的描述
    • 5.统一类和子系统
34. 对象间的交互,时序。子系统的接口代替子系统进行归并。适当的加入机制
  • 对象间的交互一般通过时序图完成。
  • 通过子系统的接口代替子系统进行归并。适当的加入机制
  • 描述设计对象之间的交互:
    • 1.确定参与用例流的每一个对象
    • 2.在时序图中描绘每一个参与对象
    • 3.加入适用的架构机制
35. 如何去做类的统一、子系统的统一?
  • 设计统一模型要考虑:
    • 1.模型元素名称应该描述它们的功能
    • 2.合并相似的模型元素
    • 3.使用继承来抽象模型元素
    • 4.保持模型元素和事件流的一致性
36. 类图 类的设计

精化体系结构

  • 类设计的步骤:
    • 创建初始设计类
    • 定义操作
    • 定义方法
    • 定义状态
    • 定义属性
    • 定义依赖关系
    • 定义关联
    • 定义内部结构
    • 定义概括
    • 解决用例的碰撞
    • 处理非功能性需求
    • 检查点

11 DatabaseDesign

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值