UML建模练习题

UML

UML建模

1. UML的三个主要的特性

  • UML是一种语言 ,一种表示方法 ,本身不包含任何方法论的部分
  • UML是用来建模的 ,不用用于编程而是用于建模的
  • UML是统一的标准

2. UML是一种方法论吗?

  • UML不是方法论它仅仅是一种描述模型的标准语言,虽然渗透了许多方法论的基础概念,但是却没有在标准中给出完整的方法指南。

4. 应用UML的三种方式

  • UML作为草图:用于探索问题或解决方案空间的复杂部分
  • UML作为蓝图:对已有代码做反向工程导出详细的设计图(前向工程)
  • UML作为编程语言: 用UML完成软件系统的规范,代码可自动生成

4. 应用UML时可以从三个视角描述

  • 概念透视图:用图来描述现实世界或关注领域中的事物
  • 规格说明透视图:用图描述 软件抽象或具有规格说明和接口的构件,但不特定于某种语言的实现
  • 实现透视图:用图描述特定技术实现软件

5. 构造型的作用是什么?

  • 构造型用来定义一些特定于某个领域或某个系统的构造块
  • 用来扩展建模元素,增加建模元素的定义

6. 敏捷开发的定义

  • 敏捷开发是一种以人为核心、迭代、循序渐进的开发方法。在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都是经过测试,具备集成可运行的特征,换而言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,分别完成,在此过程中软件一直处于可使用状态

7. 解释主动类的概念,并说明它建模的意义

  • 主动类的实例称为主动对象,
  • 一个主动对象拥有一个控制线程并且能够发起控制活动;它不在别的线程、堆栈或状态机内运行,具有独立的控制期。从某种意义上说,它就是一个线程。

8. 什么是UP,UP的科目有那些,UP项目将其工作和迭代组织为四个阶段

  • UP(Unified Process)是OO系统的流行和有效的迭代软件开发过程,一种标准的分析和设计方法,保证在软件开发过程中所有必须的任务被理解和完成
  • 科目:业务建模、需求、设计、分析、环境
  • 阶段:
  1. 初始:获取项目的基础,生命期目标

初始阶段不是需求阶段,而是可行性阶段,做足够的调查以决策:继续或停止.陈述项目的生命周期目标,考虑所有涉众(stakeholder)的需求,范围和边界,接受准则,建立小部分需求.大致的愿景,业务案列(business case),模糊的估计.

  1. 细化:进行软件架构,生命期架构

通过分析决定风险,项目的稳定愿景,稳定的架构和资源的花费.
精化的愿景,迭代实现核心架构,解决高风险,辨识重要的需求和范围,更实际的估计.

  1. 构造:构造软件,初始运作功能

构造阶段是制造过程。它强调管理资源和优化花费,计划和质量。此阶段被分为几个迭代.迭代实现剩余的低风险和容易的元素,并且准备部署

  1. 移交:把软件部署到用户环境,发布产品

移交阶段是把产品交到用户手中,主要包括市场,包装,安装,配置,用户社区支持,改正错误, etc.
beta测试,部署.

9. 用例和使用场景之间是什么关系 ?与协作又是什么关系?

  • 用例是由一组用例实例组成的,
  • 用例实例也就是常说的场景,
  • 而协作是用例的实现。

10. 敏捷UP方法在组织需求时主要的关键制品有那几个?

  1. 用例模型:一组使用系统的典型场景。主要用于功能需求。
  2. 补充性规格说明:基本上是用例之外的所有内容。主要用于所有非功能需求,也用来记录没有表示为用例的功能特性。
  3. 词汇表:以最简单的形式定义重要的术语。
  4. 设想:概括了高阶需求和项目的业务案例,是简短的执行概要文档。
  5. 业务规则:通常描述了凌驾于某一软件项目的需求或政策。

11. 候选用例选择的判断准则

  • 老板测试:业务价值可量化
  • EBP测试:基本业务过程测试
  • 规模测试:用例通常由多个步骤组成,避免因其规模较小获得错误提示

12. 什么是领域模型?如何创建领域模型,如何找到概念类

  • 领域模型:是对领域内的概念类或现实中的对象的可视化的表示
  • 创建领域模型:
    1. 寻找概念类
    2. 将其绘制为UML类图中的类
    3. 添加关联和属性
  • 找概念类:
    1. 重用和修改现有的模型。
    2. 使用分类列表。
    3. 确定名词短语。

13. UML中有哪几种图

  • 类图:描述一组类之间的关系。用于对应用领域中的概念以及与系统实现有关的内部概念建模;
  • 对象图:描述一组对象之间的关系。它是对象类图的一个实例,表示在某一时刻系统对象的状态、对象之间关系的状态以及对象行为静态方面的状态;
  • 用例图:描述一组用例参与者及其它们之间的关系,是外部用户所能观察到的系统功能的模型图。用于需求建模;
  • 顺序图:描述一个交互,表示了对象之间传送消息的时间顺序;
  • 通信图:描述一个交互,强调对象与对象之间的消息传递;
  • 状态机图:描述一个对象所处的状态及其变化,是一个类对象所可能经历的所有历程的模型图;
  • 活动图:描述执行算法的工作流程中涉及的活动,是对人类组织的现实世界中的工作流程建模;
  • 构件图:描述一组构件及其关系,用于为系统的构件建模型;
  • 部署图:描述一组节点及其关系,允许评估分配结果和资源分配。节点是一组运行期间的系统资源,如计算机、数据库、设备或存储器。

14. 敏捷UP方法从需求到设计的整个过程,有哪几个模型,主要步骤和产出工件

  • 需求阶段:主要实践包括需求讨论会、设想包装练习、计点投票表决等。产出的制品有用例模型、设想、补充性规格材料、词汇表等。
  • 设计阶段:主要实践包括敏捷建模、测试驱动开发等。产出的制品有设计模型、软件架构文档、数据模型等。

15. 描述(description)类起什么作用

  • 描述类包含描述其他事物的信息。在以下情况需要增加描述类
    1. 需要有关商品或服务的描述,独立于任何商品或服务的现有实例。
    2. 删除其所描述事物的实例(如Item)后,导致信息丢失,而这些信息是需要维护的,但是被错误地与其所删除的事物关联起来。
    3. 减少冗余或重复信息。

16. 建立类模型描述,三角形,五边形,N边行,有向图,无向图,

17. 中文版教材P173,P179多态的图

  • 对于多态的每个具体对象制作单独的图。

18. 中文版教材P355状态机图

  • 状态机图基本上就是一个状态机中元素的投影,这也就意味着状态机图包括状态机的所有特征。
  • 状态机图显示了一个对象如何根据当前状态对不同事件做出反应的动态行为。
  • 状态机图主要由状态和转换两种元素组成

19. 软件开发过程中使用UML的必要性以及好处

  • 软件开发是一个很复杂的工程,而采用统一的建模语言来对软件进行描述能够使客户、涉众、开发人员对软件能够有更好的共识,也能够有效地降低复杂性

20. UML定义了方法和属性的那几种可见性?

  • 属性可见性——B是A的属性。
  • 参数可见性——B是A中方法的参数。
  • 局部可见性——B是A中方法的局部对象(不是参数)。
  • 全局可见性——B具有某种方式的全局可见性。

21. 类图和对象图的关系

  1. 依赖关系(Dependence):假设A类的变化引起了B类的变化,则说名B类依赖于A类。依赖关系有如下三种情况:1、A类是B类的一个成员变量;2、A类是B类方法当中的一个参数;3、A类向B类发送消息,从而影响B类发生变化;
  2. 泛化关系(Generalization):UML对象图和类图的泛化关系A是B和C的父类,B,C具有公共类(父类)A,说明A是B,C的一般化(概括,也称泛化)在UML当中,对泛化关系有三个要求:1、子类与父类应该完全一致,父类所具有的属性、操作,子类应该都有;2、子类中除了与父类一致的信息以外,还包括额外的信息;3、可以使用父类的实例的地方,也可以使用子类的实例;
  3. 关联关系(Association):类之间的联系,如篮球队员与球队之间的关联(下图所示)。其中,关联两边的"employee"和“employer”标示了两者之间的关系,而数字表示两者的关系的限制,是关联两者之间的多重性。通常有“”(表示所有,不限),“1”(表示有且仅有一个),“0…”(表示0个或者多个),“0,1”(表示0个或者一个),“n…m”(表示n到m个都可以),“m…”(表示至少m个)。
  4. 聚合关系(Aggregation):UML对象图和类图的聚合关系表示的是整体和部分的关系,整体与部分可以分开
  5. 组合关系(Composition):UML对象图和类图的组合关系也是整体与部分的关系,但是整体与部分不可以分开
  6. 实现关系(Implementation):是用来规定接口和实线接口的类或者构建结构的关系,接口是操作的集合,而这些操作就用于规定类或者构建的一种服务。

22. 对象模型的静态和动态两种模型的作用,敏捷建模对产生这两种图形的实践方法是如何建议的,UML静态和动态模型各包含那几种图?

  • 动态模型有助于设计逻辑、代码行为或方法体,倾向于创建更为优异、困难和重要的图形。
  • 静态模型有助于设计包、类名、属性和方法特征标记的定义。
  • 静态和动态建模之间具有关系,敏捷建模对此的实践是并行创建模型:花费较短的时间创建交互图(动态),然后转到对应的类图(静态),交替进行。

23. 如何发现用例

  1. 选择系统边界。
  2. 确定主要参与者——通过使用系统的服务实现其目标的那些人或事物。
  3. 确定每个主要参与者的目标。
  4. 定义满足用户目标的用例,根据其目标对应用例命名

24. 画一张顺序(sequence)图描述顾客购买商品(教材上POS机例子)

25. UP迭代计划是由哪些因素驱动的?

  • 风险(risk-driven)驱动
  • 客户驱动(client-driven)

26. 建模的目的是什么?

  • 建模的主要目的是理解和沟通,而非文档

27. 用例的actor有哪些类型

  1. 主要参与者:调用系统来满足自己的目标
  2. 次要参与者:为系统提供服务
  3. 后台参与者:对用例的行为感兴趣

28. 什么是系统顺序图,和顺序图有什么区别?

  • 系统顺序图是阐述与所讨论的系统相关的输入和输出时间而快速、简单创建的制品
  • 系统顺序图是操作契约和(最重要的)对象设计的输入
  • 系统顺序图展示了直接与系统交互的外部参与者、系统(作为黑盒)以及参与者发起的系统事件
  • UML没有定义所谓的“系统顺序图”,只定义了“顺序图”,“系统”这一限定词强调将系统的应用视为黑盒

29. 扩展本质用例是什么,如何产生

  • 它是什么:一份分析文档详细描述了高层用例中识别的功能元素.
  • 他不是什么:扩展本质用例不是画图,不包括stickfigures,表示系统的方框,或其它图标,尽管与一个图形关联.
  • 如何产生:
    • Step 1:命名用例(系统功能,e.g.“输入时间表信息”)
    • Step 2:找出相关的参与者.
    • Step 3:以客户理解的语言描述用例的意图(intent).
    • Step 4:找出与此用例有关的假设和限制,和此用例将扩展或包含的用例.
    • Step5:规定理想路径(如果你喜欢用两列)标记为“参与者动作”和“系统响应”,给每一步编号。这构成了用例的基本路径.
    • Step 6:识别用户错误,建立替代路径处理错误.

30. 一个软件系统中有那些类型的事件?

软件系统基本对三件事响应:

  • 来自参与者的外部事件
  • 时钟事件
  • 缺陷或异常

31. 中文版教材P110,P111,P122有关图形的说明和解释

32. 从操作契约描述的角度看,领域模型有那几种状态变化

包括:

  • 创建实例
  • 形成或消除关联
  • 改变属性

33. 什么是模型

  • 在开发一个软件期间所产生的中间描述或文档 ,模型是正在构建的系统某方面的表示(representation)

34. 什么是Descoping

  • 从迭代中移去任务或需求,并将其分配到将来的某个迭代中处理,而不是推迟完成时间。

35. 什么是关联,关联的角色,什么是依赖,什么是泛化,聚合和组合

  • 关联是类(更精确地说,是这些类的实例)之间的关系,表示有意义和值得关注的连接。在UML中,关联被定义为“两个或多个类元之间的语义联系,涉及这些类元实例之间的连接”。它使一个类的可见属性和方法被另一个类使用。
  • 关联是一种结构关系,规定一个对象和另一个对象联接。
  • 依赖是一种使用关系,说明一个事物的规格说明改变会对使用它的事物产生影响。
  • 泛化是一般性的事物(超类或者父类)和更特殊事物(子类)之间的关系。
  • 聚合用来表明一个类是实际上拥有但可能共享另一个类的对象 。(整体/部分关系)(has-a关系)
  • 组合是聚合的一种,并且是更严格的整体/部分关系: 部分的实例在某一时刻只属于唯一的组合实例。
    部分永远属于某一组合,并且组合负责建立,删除部分.(如果组合被删除,部分必须被删除,或依附于另一个组合)

36. 什么是交互

  • 交互是特定语境中共同完成一定任务的 一组对象之间交换的信息集合,一个对象群体的行为或单个操作的行为都可以用一个交互来描述。

37. 软件开发方法学定义,包括什么内容。

  • 多年以来,已经试验了许多不同的开发软件策略,一些特别成功的或者广泛适用的策略已经形成并作为方法学发表
  • 方法学对软件开发在至少两个重要方面提出了指导:
    1. 方法学定义了能够有助于开发一个系统的若干模型
    2. 方法学定义了一组规范表示法来描写建议的模型,形成文档
    3. 方法学还定义了软件开发中包含的各种不同的活动,并指定了执行这些活动应当有的次序

38. 面向对象分析,面向对象设计主要做什么工作。

  • 面向对象分析过程中,强调的是在问题领域内发现和描述对象(或概念)。 面向对象设计过程中,强调的是定义软件对象以及它们如何协作以实现需求。

39. 什么是逻辑架构,模型视图分离原理。

逻辑架构:按照概念组织(conceptualorganization)描述系统,层,包,类,接口和子系统.该原理规定:
模型(领域)对象不应该由视图(展现)对象的直接指示.领域类应该封装和应用逻辑有关的信息和行为.PPT5(第46页开始)

40. 什么是职责驱动设计,最重要的OOA/D技能是什么。

  • 职责驱动设计即如何给相互协作的对象分配职责,主要关注的是职责、角色以及协作。
  • OA/D中最关键、最基本的能力是熟练的为软件组件分配职责。因为分配职责是必须要执行的一项活动,并且它对软件组件的健壮性、可维护性和可重用性具有重要影响。

应用题重点掌握领域模型的建立,顺序图的画法。

  • 3
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值