第1、2章面向对象与UML
1.简述统一建模语言(UML)
统一建模语言(UML)是一种绘制软件蓝图的标准语言。可以用UML对密集型软件系统的制品进行可视化详述和文档化。UML是一种定义良好、易于表达、功能强大且普遍适用的可视化建模语言(1分)。它融入了软件工程领域的新思想、新方法和新技术。它的作用域不限于支持面向对象的分析与设计(1分),还支持从需求分析开始的软件开发的全过程(1分)。UML的作用是用图的形式从静态和动态方面来全面描述将要开发的系统(2分)。
2. 简述面向对象分析方法(OOA)的5个基本步骤
1)、识别对象,识别对象包括标识潜在的对象和筛选对象两步(1分)
2)、识别对象的属性(1分)
3)、识别对象的行为(1分)
4)、识别对象所属的类(1分)
5)、定义主题词(1分)
3、什么是高内聚度?
高内聚度是对一个类中的各个职责之间相关程度和集中程度的度量。一个具有高度相关职责的类并且这个类所能完成的工作量不是特别巨大,那么它就具有高内聚度。包括两个含义:一、不要给一个类分派太多的职责,在履行职责时尽量将部分职责分派给有能力完成的其它类去完成。二、不相关的职责不要分派给同一个类。
4、什么是对象间的可见性?
答:可见性(Visibility)指的是一个对象能够“看到” 或者引用另一个对象的能力。
5、领域建模的步骤有哪些?
答案:
列出候选的概念类;
画出领域模型图;
加入概念类间的关联;
加入概念类的属性。
6、什么是软件生命周期?
软件生命周期(SDLC,Systems Development Life Cycle)是软件的产生直到报废或停止使用的生命周期,周期内包括问题定义、可行性分析、总体描述、系统设计、编码、调试和测试、验收与运行、维护升级到废弃等阶段。这种按时间分程的思想方法是软件工程中的一种思想原则,即按部就班、逐步推进,每个阶段都要有定义、工作、审查、形成文档以供交流或备查,以提高软件的质量。
7、什么是软件开发生命期?
软件开发生命期是指软件产品从考虑其概念开始,到该产品交付使用为止的整个时期。
一般包括概念阶段,需求阶段,设计阶段,实现阶段,测试阶段,安装阶段及交付阶段。这
些阶段可以有重复,执行时也可以有迭代。
8、UML语言定义了五种类型不同的图,把它们有机的结合起来可以描述系统的所有视图,请列举出这些图的名称,简要描述它们的作用,并指出每类图各包括哪些图?
用例图(Use case diagram) 从用户角度描述系统功能,并指出各功能的操作者。
静态图(Static diagram),表示系统的静态结构。包括类图、对象图、包图。
行为图(Behavior diagram),描述系统的动态模型和组成对象间的活动交互关系。包括状态图、活动图。
交互图(Interactive diagram),描述对象间的交互关系。包括顺序图、协作图。
实现图( Implementation diagram ),用于描述系统的物理实现。包括构件图、部件图。
9、请分点叙述UML的特点。
(1) 统一标准。UML统一了Booch、OMT和OOSE等方法中的基本概念,已成为OMG的正式标准,提供了标准的面向对象的模型元素的定义和表示。
(2) 面向对象。UML吸取了面向对象技术领域中其他流派的长处。UML符号表示考虑了各种方法的图形表示,删掉了大量易引起混乱的、多余的和极少使用的符号,也添加了一些新符号。
(3) 可视化、表示能力强。系统的逻辑模型或实现模型都能用UML模型清晰的表示,可用于复杂软件系统的建模。
(4) 独立于过程。UML是系统建模语言,独立于开发过程。
(5) 易掌握、易用。由于UML的概念明确,建模表示法简洁明了,图形结构清晰,易于掌握使用。
10、简述UML的9种图。
答案:
(1)用例图:用例图展现了一组用例、参与者以及它们间的关系。可以用用例图描述系统的静态使用情况。在对系统行为组织和建模方面,用例图的是相当重要的。
(2)类图:类图显示了一组类、接口、协作以及它们之间的关系。
(3)对象图:对象图展示了一组对象及它们间的关系。用对象图说明类图中所反应的事物实例的数据结构和静态快照。对象图表达了系统的静态设计视图或静态过程视图,除了现实和原型方面的因素外,它与类图作用是相同的。
(4)交互图:交互图展现了按一定的目的进行的一种交互,它由在一个上下文中的一组对象及它们间交互的信息组成。交互图也可用于描述一个用例的行为。顺序图和协作图都是交互图,顺序图和协作图可以相互转换。
顺序图:展现了一组对象和由这组对象收发的消息,用于按时间顺序对控制流建模。
协作图:展现了一组对象,这组对象间的连接以及这组对象收发的消息。它强调收发消息的对象的结构组织,按组织结构对控制流建模。
(5)状态图:展示了一个特定对象的所有可能状态以及由于各种事件的发生而引起的状态间的转移。一个状态图描述了一个状态机,用状态图说明系统的动态视图。它对于接口、类或协作的行为建模尤为重要,可用它描述对象的生命周期。
(6)活动图:活动图是一种特殊的状态图,描述需要做的活动、执行这些活动的顺序以及工作流(完成工作所需要的步骤)。它对于系统的功能建模特别重要,强调对象间的控制流程。
高层活动图用于表示需要完成的一些任务,即用于分析用例,理解涉及多个用例的工作流、
多线程及并行,显示相互联系的行为整体,还可用于对企业过程建模,对系统的功能建模。低层活动图用于表示类的方法。
(7)构件图(组件图):构件图展现了一组构件之间的组织和依赖,用于对源代码、可执行的发布、物理数据库和可调整的系统建模。
(8)部署图:部署图展现了对运行时处理节点以及其中构件的配署。它描述系统硬件的物理拓扑结构(包括网络布局和构件在网络上的位置),以及在此结构上执行的软件(即运行时软构件在节点中的分布情况)。用部署图说明系统结构的静态部署视图,即说明分布、交付和安装的物理系统。
11、UML语言的组成结构:构造元素,规则,公共机制。
12、uml是由哪3个部分组成的,并分别说明他们的作用。
构造元素:包括基本元素、关系和图。这3种元素代表了软件系统或业务系统中的某个事物或事物间的关系,具有命名、范围、可见性、完整性和执行等属性。
规则:对软件系统或业务系统中某些事物的约束或规定。
公共机制:包括详述、修饰、通用划分以及扩展机制,它是指适用用于软件系统或业务系统中每个事物的方法或规则。
13、说明模型,视图,图和模型元素之间的区别。
模型是对一个对象或物体的简化表示;
视图能反应系统某些侧面和特征的多个图的集合;
图只能反映系统中某个侧面和特征;
模型元素就是用来构成模型的基本符号。
14、UML 通过图形化的表示机制从多个侧面对系统的分析和设计模型进行刻画。其中()包括交互图(interactive diagram)、状态图(statechart diagram )与活动图(activity diagram),它们从不同的侧面刻画系统的动态行为。
A.用例视图 B.结构视图 C.行为视图 D.构件视图答案. C
15、名词解释
(1)对象:对象是对客观事物的抽象,用于模型化特定的实体;
(2)类:类是对对象的抽象,是面向对象模型的最基本的模型元素;
(3)属性:描述类的所有对象共同特征的一个数据项;
(4)操作:是对象类的行为特征或动态特征,用于对服务或实体相关的操作建模;
(5)关联:关联关系是一种事物之间的结构关系,它是对具有共同的结构特征、行为特性、关系和语义的链接的描述;
(6)泛化:是现实世界中一般性实体与特殊性实体之间的关系;
(7)聚合:表示事物的部分/整体关系较弱的情况;
(8)依赖:是两个(或两组)模型元素间的语义联系,依赖是指一个模型元素的变化必影响到另一个模型元素;
(9)对象的激活期:表示对象执行一个动作的期间,也即对象激活的时间段;
(10)组合状态:如果一个状态内嵌套了若干个状态,则称该状态为超状态或组合状态;(11)历史状态:代表上次离开组合状态时的最后一个活动子状态;
(12)组件:是系统的物理的可替换的单位,它把系统的实现打包,并提供一组接口的实现。
16、说说UML模型元素的组成。
在UML中,模型元素可以分为结构元素、行为元素、分组元素和注释元素等四大类:
1) 结构元素是UML模型的静态部分,主要用来描述概念或者物理元素,包括类、接口、协作、用例、主动类、构件和结点7种元素;
2) 行为元素是UML模型的动态部分,它包括交互和状态机;
3) 分组元素是 UML 模型的组织部分。最主要的分组元素是包,它是一种用于把模型元素组织成组的元素,结构元素、行为元素和其他的分组元素都可以放进包内;
4) 注释元素是 UML 模型的解释部分,它们用来描述和标注模型的任何元素。通常可以用注释修饰带有约束或者解释的图。
17、请简要阐述在软件开发过程中使用UML的必要性以及好处。
软件开发是一个很复杂的工程,而采用统一的建模语言来对软件进行描述能够使客户、涉众、开发人员对软件能够有更好的共识,也能够有效地降低复杂性。
18、请指出UML的三个主要的特性?
1) UML是一种可视化语言;
2) UML用于建模;
3) UML是一种统一的标准。
19、UML是一种方法论吗?并简要说明理由。
UML并不是OOA/D,也不是方法论,它只是图形表示法,是一种描述模型的标准语言,虽然渗透了许多方法论的基础概念,但是却没有在标准中给出完整的方法指南。
20、应用UML的三种方式是什么?
1) UML作为草图,用于探讨问题或解决方案空间的复杂部分;
2) UML作为蓝图,系统分析员利用UML建立能够和客户、程序员以及任何参与程序开发的人员理解的多视角系统蓝图;
3) UML作为编程语言,用UML完成软件系统可执行规格说明。
21、构造型的作用是什么?
构造型用来定义一些特定于某个领域或某个系统的构造块。用来扩展建模元素,增加建模元素的语义。构造型表示对现有建模概念的精化,并且定义在UML的简档之中。简档是一组相关构造型、标记和约束的集合,其目的是使用UML专用于特定领域或平台。UML预定义了大量构造型,同时允许用户自行定义构造型,因此,在UML中构造型提供了扩展机制。
22、应用UML的三种透视图是什么?
1) 概念透视图,用图来描述现实世界或关注领域中的事物;
2) 规格说明(软件)透视图,用图来描述软件抽象物或具有规格说明和接口的构建,但并不约定特定的实现;
3) 实现(软件)透视图,用图来描述特定技术(如Java)中的软件实现。
23、解释设计模式的概念。回答策略模式;观察者模式;适配器模式需解决的问题和方案。富有经验的面向对象专家(或其它软件开发人员)设计的作为通用原则和惯用法的解决方
案,用于指导软件设计。如果将它们按问题和解决方案描述的结构形式编篡,然后起一个名字。这就是设计模式。
模式名:策略模式(Strategy)
问题:如何设计一种方案可以适应算法或规则的频繁变更?
解决方案:定义一系列的算法,把他们一个个封装起来,并且使他们可以互相替换,具体的说就是为每个算法/策略分别定义一个具有公共接口的类。
模式名:观察者模式(Composite)
问题:如何维护对象之间的一致性?
解决方案:当一个对象的状态发生变化时,所有依赖于它的对象都得到通知并被自动更新。模式名:适配器模式(Adapter)
问题:如何解决不兼容的接口的问题,或者说如何提供一个稳定的接口给具有不同接口的相似组件?
解决方案:通过一个中间的适配器对象使一个组件的原有接口转变成另一个接口。
24、面向对象程序的基本特征。
基本特征:抽象、封装、继承、多态。
抽象:抽象是对现实世界信息的简化。能够通过抽象将需要的事物进行简化、将事物特征进行概括、将抽象模型组织为层次结构、使软件重用得到保证。
封装:封装就是把对象的状态和行为绑到一起的机制,使对象形成一个独立的整体,并且尽可能地隐藏对象的内部细节。封装有两个含义:一是把对象的全部状态和行为结合在一起,形成一个不可分割的整体对象的私有属性只能够由对象的两个行为来修改和读取。二是尽可能隐蔽对象的内部细节,与外界的联系只能够通过外部接口来实现。
继承:继承是指特殊类的对象拥有其一般类的属性和行为。继承意味着“自动地拥有”,即在特殊类中不必重新对已经在一般类中定义过的属性和行为进行定义,而是特殊类自动地、隐含地拥有其一般类的属性和行为。
多态:多态是指两个或多个属于不同类的对象,对于同一个消息或方法调用所做出不同响应的能力。
25、UML中模型元素的主要关系。
UML中主要包含4种关系,分别是依赖、关联、泛化和实现。
依赖关系指的是两个事物之间的一种语义关系,当其中一个事物(独立事物)发生变化就会影响另外一个事物(依赖事物)的语义;
关联关系是一种事物之间的结构关系;
泛化关系是事物之间的一种特殊/一般关系,特殊元素(子元素)的对象,也就是我们在面向对象中常常提起的继承。
实现关系:实现关系也是UML元素之间的一种语义关系,它描述了一组操作的规约和一组对操作的具体实现之间的语义关系。
26、请指出三种以上现实生活中的常用模型,并说明它们分别在各自的领域中发挥了什么样的作用。
1)电路图:电子产品设计、生产、维修。
2)园区沙盘:直观、立体化地展示园区的景观、布局。
3)地图:导航、指路等。
27、请说明蓝图和草图的区别,并简单描述其适用的场景。
蓝图一般是指采用CASE工具绘制的、正式的、规范的UML模型;而草图则通常是指手工绘制的、规范度较低的在纸张的UML模型。
对于局部的、重要性不高的、共享范围较小的UML模型,直接将草图扫描到电脑存档即可;对于全局的、重要性高的、高度共享的,在草图的基础上用CASE工具绘制成为正式的蓝图,并将其纳入统一的模型管理中。
28、说明UML适用的建模领域,以及其作用和主要的参与人员。
业务建模;用来加强对业务领域的了解,以领域专家为主,需求分析人员是主力,系统分析
员、架构师可参与。
需求模型;用来加强需求了解,便于技术决策,以需求分析人员为主,系统分析员是主力,
领域专家提供指导,架构师和资深开发人员参与。
设计模型;包括高层设计模型和详细设计模型。高层设计模型以架构师为主,系统分析员从需求方面提供支持,资深开发人员从技术实现方面提供支持。详细设计模型则以资深开发人
员为主,架构师提供指导。
实现模型;用于描述系统构建与部署;人员包括架构师、资深开发人员(设计人员);以资
深开发人员(设计人员)为主,架构师提供总体指导。
数据库模型:用于描述系统数据存储结构;人员包括架构师、数据库开发人员、资深开发人员(设计人员);以数据库开发人员为主,架构师提供指导,资深开发人员(设计人员)予以配合。
30、请列举出三个以上UML中的事物构造块,并说明适合用来表示“系统向用户提供的功能”的构造块是什么。
结构事物、行为事物、分组事物、注释事物。
适合用来表示“系统向用户提供的功能”的构造块是用例。
31、如果你想对一个类的意义进行描述,那么应该采用()?请简要说明原因。
A. 标记值
B. 规格描述
C. 注释
D.构造型
C
标记值是用来为事物添加新特性的;规格描述用来对构造块的语法和语义进行文字叙述,使得可视化视图和文字视图的分离;构造型是用来增加新事物的。
而对于类的意义进行简单描述,最合适的显然还是注释。
32、可以包含其它事物构造块的构造块是什么?它属于什么类型的事物构造块?
可以包含其它事物构造块的构造块是包,它属于分组事物构造块。
33、在UML中定义了哪几种可见性规则?其中package的含义是什么?
定义了public、private、protected、package,package是指只有声明在同一个包中的元素才能够看到该元素。
34、规格描述是一种事物构造块吗?如果不是,它是什么?它的作用是什么?
规格描述不是事物构造块,它是UML的公共机制,用来对构造块的语法和语义进行文字叙述,使得可视化视图和文字视图的分离。
35、标记值的作用是什么?它的表示法和约束的表示法有什么异同?在UML模型中如何区分它们?
标记值是用来为事物添加新特性的。约束的表示法和标记值法类似,都是使用花括号括起来的串来表示,不过它是不能够放在元素中的,而是放在相关的元素附近。
36、构造型的作用是什么?如果我们采用一个自定义的图标来表示它,那么可能遇到的主要问题是什么?
构造型用来定义一些特定于某个领域或某个系统的构造块。用自定义的图标有两个问题:一是容易产生歧义,二是建模工具难以支持。
37、约束有两种表示法,它们分别是什么?
约束的内容可以以自由形式的文本来表示,也可以使用UML的OCL(对象约束语言)来精确定义。
38、请绘制出类、用例和协作的图形符号。
39、在“4+1”视图中,这个1表示的是什么,它有什么作用。
这个1是用例视图。它是最基本的需求分析模型,是可被最终用户看到的系统行为的用例组成。常用的模型包括用例图、交互图、状态图、活动图等。
"4+1"视图模型,从5个不同的视角包括包括逻辑试图、进程视图、物理视图、开发视图、场景视图来描述软件体系结构。
40、试写出模块化的完整定义和模块化的实现原则。
答:
(A)模块化的完整定义包括:
(1)模块可分解性;(2)模块可结合性;(3)模块可理解性;(4)模块连贯性;(5)
模块保护性。
(B)模块化的实现原则包括:
(1)语言化的模块单元;(2)少量接口;(3)小的接口耦合性;(4)显式的接口;(5)信息的隐藏化。
41、面向对象方法有哪些主要特点?
答:
(1)使人们更好地认识客观世界。(2)能很好地适应需求变化。(3)容易实现软件复用。(4)系统易于维护和修改。
42、OOA主要遵循哪些原则?
答:
(1)构造和分解相结合的原则。(2)抽象化和具体化相结合的原则。(3)封装的原则。(4)相关的原则。(5)行为约束的原则。
43、简要介绍一下OOD体系结构的各个部分及其内容。
答:
(1)设计问题论域部分:设计构造为底层应用建立模型的类和对象,细化面向对象分析结果。
(2)设计人机交互部分:设计有关接口视图的类和对象,设计用户界面。
(3)设计任务管理部分:确定系统资源的分配,设计用于系统中类行为控制的对象或类。(4)设计数据管理部分:确定持久对象的存储,将对象转换成数据库记录或表格。
44、作为一个优良的OOD,应该具备哪些基本条件?
答:
(1)类和类的继承必须具有高度凝集性。
(2)类与类之间的耦合应该很松散,子类与父类除外。
(3)某个类的数据实现细节对于别的类来说应该是隐藏的。
(4)设计应该具有最优的可重用性。
(5)尽量使类、对象和方法的定义具有简单性。
(6)对所设计的类和类族,应注意保持其协议或接口的稳定性。
(7)类的层次结构设计规模要适度,不应太深或太浅。
(8)系统整体规模要最小化。
45、UML有哪些目标?
(1)易用,表达能力强,能进行可视化建模。
(2)与具体的实现无关。
(3)与具体的过程无关。
(4)简单且可扩展,具有扩展和专有化机制,无需对核心概念进行修改。
(5)为面向对象的设计与开发中涌现出的高级概念提供支持,强调重用。
(6)与最好的软件工程实践经验集成。
(7)可升级,具有广阔的适用性和可用性。
(8)有利于面向对象工具的市场增长。
46、UML中视图和图的关系。
UML的视图都是由一个或多个图组成的,图就是系统架构在某个侧面的表示,所有的图一起组成了系统的完整视图。
47、UML2.0提供了多少种图,分别是?
14种。包图;组合结构图;交互概览图;定时图;交互图;类图;对象图;部署图;组件图;活动图;顺序图;通信图(协作图);状态机图;用例图;
48、“论述”:请谈一谈对 OOD 中“一个中心”:开闭原则(OCP),“两个基本点”:高内聚,低耦合,“四项基本原则”: Liskov 替换原则(LSP),依赖倒置原则(DIP),接口分离原则(ISP),单一职责原则(SRP)的理解。
开闭原则(OCP):OO 中最重要的设计原则,指一个模块在扩展性方面应该是开放的,而在更改性方面应该是封闭的。
内聚是一个模块内各个元素彼此结合的紧密程度,高内聚就是一个模块内各个元素彼此结合的紧密程度高。所谓高内聚是指一个软件模块是由相关性很强的代码组成,只负责一项任务,也就是常说的单一责任原则。
耦合是一个软件结构内不同模块之间互连程度的度量。对于低耦合,粗浅的理解是:一个完整的系统,模块与模块之间,尽可能的使其独立存在。
Liskov 替换原则:子类可以替换父类出现在父类能出现的任何地方。软件实体如果使用的是一个基类,那么一定适用于其子类,而且它根本不能察觉出基类对象和子类对象的区别。依赖倒置原则:依赖关系应该是尽量依赖接口(或抽象)类,而不是依赖于具体类。即针对接口编程,不要针对实现编程。
接口分离原则:一个类对另外一个类的依赖是建立在最小的接口上。设计时采用多个与特定客户类(Client)有关的接口比采用一个通用接口更好。
单一职责原则:就一个类而言,应该有且仅有一个引起它变化的原因。
49、事物构造块包括什么?
(1)结构事物:UML中的名词,模型中的静态部分,描述概念或物理元素。
(2)行为事物:UML中的动词,模型中的动态部分,是跨越时间和空间的行为。
(3)分组事物:UML中的容器,用来组织模型,使模型更加结构化。
(4)注释事物:UML中的解释部分,用来描述模型。
50、面向对象分析与设计方法与面向功能(结构化)分析与设计方法的区别是什么?
结构化分析是针对数据流建立数据模型,功能模型,结构化设计也就是基于数据流的设计方法。
面向对象则是模拟人类习惯的思维方式,使开发软件的方法与过程尽可能的接近人类认识世界解决问题的方法与过程,使描述问题的问题空间与实现解法的解空间在结构上尽可能一致,将数据与施加在该数据之上的操作封装成类来模拟现实生活中的“对象”。
优点:与人习惯的思维方法一致;稳定性好;可重用性好;可维护性好。
51、请简要说明建模的意义和建模的原则。
建模能够帮助我们按照实际情况或按我们需要的样式对系统进行可视化;提供一种详细说明系统的结构或行为的方法;给出一个指导系统构造的模板;对我们所做出的决策进行文档化。
在建模时应遵循以下原则:选择要创建什么模型对如何动手解决问题和如何形成解决方案有着意义深远的影响;每一种模型可以在不同的精度级别上表示;最好的模型是与现实相联系的;单个模型是不充分的。对每个重要的系统最好用一组几乎独立的模型去处理。
第3章RationalRose概述
1、Rational Rose可以建立的视图以及这些视图的作用。
使用Rational Rose建立的Rose模型中分别包括4种视图,分别是用例视图、逻辑视图、构件视图和部署视图;
用例视图关注的是系统功能的高层抽象,适合于对系统进行分析和获取需求,而不关注于系统的具体实现方法;
逻辑视图关注系统如何实现用例中所描述的功能,主要是对系统功能性需求提供支持,即在为用户提供服务方面系统所应该提供的功能;
构件视图用来描述系统中的各个实现模块以及它们之间的依赖关系;
部署视图显示的是系统的实际部署情况,它是为了便于理解系统如何在一组处理节点上的物理分布。在系统中只包含有一个部署视图。
2、Rational Rose的特点:
(1)为大型软件工程提供了可塑性和柔韧性极强的解决方案。(2)支持多种语言。(3)为团队开发提供强有力的支持。(4)支持模型的Internet的发布。
(5)具有生成使用简单且定制灵活的文档的功能。(6)支持关系型数据库的建模。第4章RUP统一过程
1. RUP统一过程中的四个阶段?
1) 初始阶段(1分)
2) 细化阶段(1分)
3) 构造阶段(1分)
4) 提交阶段(1分)
2、统一过程中有哪四个阶段,各阶段需要完成的主要工作有哪些?
1)初始阶段:编制简要的愿景文档、业务案例、确定范围、粗略评估成本。
2)细化阶段:细化愿景文档、迭代地实现核心构架、解决高风险的问题、定义大多数的需求和范围、进一步评估成本。
3)构造阶段:迭代地实现系统的其余部分、准备部署。
4)提交阶段:beta测试、部署。
3、统一过程中的核心工作流有哪些?各有何作用?
答:RUP中有9个核心工作流,分为6个核心过程工作流(Core Process Workflows)和3个核心支持工作流(Core Supporting Workflows)。
6个核心过程工作流:商业建模;需求;分析和设计;实现;测试;部署。
3个核心支持工作流:配置和变更管理;项目管理;环境。
商业建模(Business Modeling)工作流描述了如何为新的目标组织开发一个构想,并基于这个构想在商业用例模型和商业对象模型中定义组织的过程,角色和责任。
需求(Requirement)工作流的目标是描述系统应该做什么,并使开发人员和用户就这一描述达成共识。为了达到该目标,要对需要的功能和约束进行提取、组织、文档化;最重要的是理解系统所解决问题的定义和范围。
分析和设计(Analysis & Design)工作流将需求转化成未来系统的设计,为系统开发一个健壮的结构并调整设计使其与实现环境相匹配,优化其性能。分析设计的结果是一个设计模型和一个可选的分析模型。设计模型是源代码的抽象,由设计类和一些描述组成。
实现(Implementation)工作流的目的包括以层次化的子系统形式定义代码的组织结构;以组件的形式(源文件、二进制文件、可执行文件)实现类和对象;将开发出的组件作为单元进行测试以及集成由单个开发者(或小组)所产生的结果,使其成为可执行的系统。
测试(Test)工作流要验证对象间的交互作用,验证软件中所有组件的正确集成,检验所有的需求已被正确的实现,识别并确认缺陷在软件部署之前被提出并处理。
部署(Deployment)工作流的目的是成功的生成版本并将软件分发给最终用户。部署工作流描述了那些与确保软件产品对最终用户具有可用性相关的活动,包括:软件打包、生成软件本身以外的产品、安装软件、为用户提供帮助。
配置和变更管理工作流描绘了如何在多个成员组成的项目中控制大量的产物。配置和变更管理工作流提供了准则来管理演化系统中的多个变体,跟踪软件创建过程中的版本。
软件项目管理(Project Management)平衡各种可能产生冲突的目标,管理风险,克服各种约束并成功交付使用户满意的产品。
环境(Environment)工作流的目的是向软件开发组织提供软件开发环境,包括过程和工具。
4、什么是增量开发?
答:增量开发包括两层意思:
1)对复杂的用例分多次迭代,一部分一部分地实现。
2)将所有用例按其优先级分别安排在不同的迭代中实现。
5、RUP的核心思想有哪些?
答:短时间的迭代式开发;
开发过程中不断进行调整;
在早期的迭代中解决高风险和高价值的主要问题;
不断与用户衔接,及时得到反馈意见;
早期注意构造核心的体系结构;
早期进入实现和测试,不断进行质量检验;
使用用例(use case);
可视化建模(用UML);
仔细地管理需求;
控制变更。
6、说说敏捷UP方法从需求到设计的整个过程,要求说出主要步骤和产出工件?
需求阶段:主要实践包括需求讨论会、设想包装练习、计点投票表决等。产出的制品有用例模型、设想、补充性规格材料、词汇表等。
设计阶段:主要实践包括敏捷建模、测试驱动开发等。产出的制品有设计模型、软件架构文档、数据模型等。
7、逻辑架构是什么?
逻辑架构是软件类的宏观组织结构,它将软件类组织为包(或命名空间)、子系统和层等。之所以称其为逻辑架构,是因为并未决定如何在不同的操作系统进程或网络中物理的计算机上对这些元素进行部署(后一种决定是部署架构的一部分)。
8、什么是敏捷开发?
敏捷开发是一种以人为核心、迭代、循序渐进的开发方法。在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。
敏捷开发方法通常应用时间定量的迭代和进化式开发、使用自适应计划、提倡增量交付并包含其他提倡敏捷性(快速和灵活的响应变更)的价值和实践
9、MVC有哪些优点?
答:
(1)各施其职,互不干涉。
(2)有利于开发中的分工。
(3)有利于组件的重用。
10、什么是RUP,与UML什么关系?
RUP描述了如何有效地利用商业的、可靠的方法开发和部署软件,是一种开发过程,特别适用于大型软件团队开发大型项目。
UML是一种语言,用来描述软件生产过程中要产生的文档,而RUP则是指导如何产生这些文档以及这些文档要讲述什么的方法。
11、“论述”基于 UML 的软件开发的一般过程。
答:UML 是按 OO 思想进行系统建模时使用的一组表示法,它并不对采用何种 OO 分析、设计以及开发过程模型构成限制。基于 UML 的软件开发通常是以体系结构为中心,用例驱动的迭代和增量式开发,并结合职责分配模式进行具体设计。开发过程可以包括计划和细化、迭代的构造和实施 3 大阶段。在经过一个初步的计划和细化阶段后,进入若干迭代构造开发周期,每个周期都包含分析、设计、构造和测试步骤。
(1)计划和细化:通过各种传统的需求获取手段(调查、访谈、原型等)得出系统目标、系统功能和系统属性,撰写系统规格说明。基于参与者和外部事件(动宾词组)构建用例,以增进对领域过程和功能需求的理解《做什么》。按照风险、业务主线及对体系结构的影响程度(系统属性)划分用例的优先级,并据此决定用例的时间调度。对高优先用例采用扩展格式细化。同时建立概念模型草案、系统体系结构草案。
(2)分析阶段:根据当前周期的用例描述,采用概念目录列表、非正式分析或事务模
式,识别出相关概念,建立初始概念模型,根据通用关联列表和信息存储的需要,为概念模型添加关联和属性。将用例分解为系统事件,并对应系统操作,建立系统顺序图;分析系统操作被调用后系统状态(概念)的变化,为系统操作建立契约,进一步理解系统行为《做的效果》。
(3)设计阶段:设计一个合理的体系结构,建立真实用例。针对每个系统操作,使用操作契约和契约的后置条件以及用例描述文档作为起点,按照职责分配模式或 BCE 模式为对象(来自概念模型)分配职责,通过协作图体现对象间的交互《怎么做》。同时参照概念模型和协作图中的消息,建立设计类图,并根据可见性要求设计关联。
(4)构造和测试阶段:从设计类图创建类的定义(属性和方法原型),根据协作图创建方法实现。用 OOPL 实现设计制品到代码的映射,对系统进行相关的测试。
进入下一个迭代周期,在制品同步以后,识别更多的需求,选取所需开发的用例,更新用例图,扩展概念模型,并运用泛化、包和聚合等技术概括日益增多新概念,拓展系统顺序图和系统操作契约;运用更多的职责分配模式进行设计(并根据需要设计与外部系统、其他子系统、持久化设施的交互机制);进一步构造并测试。
第5章用例图
1. 简述用例模型的组成元素以及建模步骤
组成元素有:参与者,用例,通信关联,用例规约(每个0.5)
建立用例模型步骤:
1) 根据系统边界确定参与者(1分)
2) 根据每个参与者确定与之相关联的用例(1分)
3) 对每个用例写出用例规约文档,调整用例模型(优化参与者与参与者之间的关系,用例与用例之间的关系)(1分)
2.什么是用例图?用例图有什么作用?
定义:由参与者(Actor)、用例(Use Case)以及它们之间的关系构成的用于描述系统功能的图称为用例图。(2分)
作用:用例图是从软件需求分析到最终实现的第一步,它显示了系统的用户和用户希望提供的功能,有利于用户和软件开发人员之间的沟通(1分)。用例图可视化的表达了系统的需求,具有直观、规范等优点,克服了纯文字性说明的不足(1分)。用例方法是完全从外部来定义系统的,它把需求和设计完全分离开来(1分),使用户不用关心系统内部是如何完成各种功能的。
3、设计一个饮料自动售货机系统,其主要功能是向顾客出售饮料,同时供应商需要向其中放置饮料,收银员需要向其中放置零钱和收回营业收入。画出该系统的用例图。
4、网络的普及带给了人们更多的学习途径,随之而来的管理远程网络教学的“远程网络教学系统”诞生了。
“远程网络教学系统”的功能需求如下:
学生登录网站后,可以浏览课件、查找课件、下载课件、观看教学视频。
教师登录网站后,可以上传课件、上传教学视频、发布教学心得、查看教学心得、修改教学心得。
系统管理员负责对网站页面的维护、审核不合法课件和不合法教学信息、批准用户注册。1)学生需要登录“远程网络教学系统”后才能正常使用该系统的所有功能。如果忘记密码,可与通过“找回密码”功能恢复密码。请画出学生参与者的用例图。
2)教师如果忘记密码,可以通过“找回密码”功能找回密码。请画出教师参与者的用例图。
5、阐述用例对于系统开发人员来说的价值。
是用来从用户的观察角度收集系统需求的一项技术,便于分析员与客户和用户交流,使系统更符合用户的需求。
6、什么是Use Case间的扩展关联关系?请举例说明。
答:扩展关联的基本含义与泛化关联类似,但是对于扩展Use Case有更多的规则限制,即基本的Use Case必须声明若干个“扩展点”,而扩展Use Case只能在这些扩展点上增加新的行为。
7、什么是Use Case间的包含关联关系?请举例说明。
答:是指一个基本Use Case的行为包含了另一个Use Case的行为。
8、用例和使用场景之间是什么关系?与协作又是什么关系?
用例就是一组相关的成功和失败场景集合,用来描述参与者如何使用系统来实现其目标。用例实例也就是常说的“使用场景”,而协作是用例的实现。
9、在用例图中参与者是什么,它属于系统范围之内吗?
参与者不是特指人,是指系统以外的、在使用系统或与系统交互中所扮演的角色。因此参与者可以是人,可以是事物,也可以是时间或其他系统等等。它不属于系统范围之内。
10、用例之间的主要关系。
用例之间的关系有包含、扩展和泛化等3种;
包含关系:是指用例可以简单地包含其他用例具有的行为,并把它所包含的用例行为自身行为的一部分;
扩展关系:在一定条件下,把新的行为加入到已有的用例中,获得的新用例叫做扩展用例,原有的用例叫做基础用例,从扩展用例到基础用例的关系就是扩展关系;
泛化关系:用例的泛化指的是一个父用例可以被特化形成多个子用例,而父用例和子用例之间的关系就是泛化关系。
11、请列举出两种以上现代需求分析技术,并简要地说明它们的特点。
用例:描绘一个系统外在可见的需求情况,是代表系统中各个项目相关人员(风险承担
人,Stakeholder)之间就系统的行为所达成的契约。
用户故事:由客户参与编写,说明他们需要系统为他们做什么,一般用客户的术语编写,其长度约为三句话左右。
12、为了满足物业中介行业的信息化要求,甲公司基于详尽的需求调研与分析,准备研发一套符合市场需要的、实用的信息管理系统。主要将实现客户资料信息管理、客户委托(出租、出售、租赁、购买)信息管理、业务线索生成与管理、房源状态自动更新、权限管理、到期用户管理、房源组合查询等功能。通过多次的与潜在客户的交流与沟通,完成了最初的用例模型的开发,图是一个用例模型的局部:
(1)该模型不符合“用例建模”的思想,存在明显的错误。说明错误所在,并说明应该如何修改。
1)主要错误:用例的分解太细,并没有遵从每个用例为用户传递一个有价值的结果的原则。在原设计中“打开房源信息页面”、“录入房源信息”、“确认提交信息”都只是一个操作步骤,因此不适合作为用例。
2)修改方法:将“打开房源信息页面”、“录入房源信息”、“确认提交信息”合并为“新增房源信息”。
(2)在上图中构造型“《include》”表示的是什么意思,它与“《extend》”之间的区别是什么?
在用例模型中,构造型“《include》”是用来表示包含关系。它通常用来表示被包含用例是被多包含用例使用的一个可复用模块,而《extend》且通常用来表示对用例的扩展。
13、需求分析的目的是什么?需求分析中的典型活动有哪些?
答:
需求分析的目的是获取需求,得到描述系统所需的用例、业务流程或清晰的正文。
需求分析中的典型活动有:(1)获取领域知识。(2)定义系统功能。(3)寻找合适的类。(4)建立类的静态模型。(5)描述对象的动态行为。(6)验证。(7)给出基本的用户界面原型。
14、用例建模的主要目标有哪些?
答:
(1)将需求规约变为可视化模型,并得到客户确认。
(2)给出清晰、一致的关于系统“做什么”的描述,确定系统的功能要求。
(3)提供从功能需求到系统分析、设计、实现各阶段的度量标准。
(4)为最终系统测试提供给制,据此验证系统是否达到功能要求。
(5)为项目目标进度管理和风险管理提供依据。
15、用例建模的步骤包括哪些工作?
答:
(1)确定系统的范围、边界、用例、执行者。
(2)描述用例。
(3)用例分类、确定用例之间的关联。
(4)建立用例图。
(5)定义用例图的层次结构。
(6)审核用例模型。
16、用例与用例图的区别。
用例可以是一组连续的操作,也可以是一个特定功能的模块。它是一个叙述型的文档,来描述参与者使用系统完成的事件。
用例图描述的是系统的参与者与系统用例之间的关系。
17、用例图说明了什么?它出现在Unified Process的哪个阶段?
用例图说明了系统参与者与系统用例之间的关系,主要在需求分析阶段使用。
18、用例图的4个主要组成部分。
用例、参与者、系统、关系。
19、参与者表示什么?
参与者是系统外的一个实体,它代表了与系统交互的用户、设备或另一个系统。
20、用例表示什么?
用例可以是一组连续的操作,也可以是一个特定功能的模块,用来描述参与者使用系统完成的事件,是系统期望系统具备的功能,它定义了系统的行为特征。
21、解释和比较用例图中的<
包含关系:指一个用例可以简单地包含其他用例具有的行为,并把它所包含的用例行为作为自身行为的一部分。
扩展用例:它是一种依赖关系,它指定了一个用例可以增强另一个用例的功能,是把新的行为插入到已有用例中的方法。基用例即使没有扩展用例也是完整的,这点与包含关系有所不同。
第6章类图
1、找出下面场景中的概念类。
(1).顾客带着购买的商品或服务来到POS收款台;
(2).收款员启动一次销售;
(3).收款员输入商品标识;
(4).系统记录商品,并且显示该商品说明,价格,并计算总金额。按一组计价规则计算单
价。
答案:顾客、POS收款台、收款员、销售、商品标识、商品、商品说明。
2、请判断以下类图中的类关系是否合适,并说明理由。
参考答案:
(1)飞机有机翼、机身、驾驶舱;应改为“组合”。
(2)商场里的电器。1台电器可以是1台洗衣机;1台电器可以是1台电视机;1台电器可以是1台空调;应该为“泛化”。
(3)公司的员工很多,包括程序员、分析员、项目经理……;应改为“泛化”。
3、画出能正确表示下面叙述的类图(括号内为类名)。
“一个雇员(Employee)最多由一个经理(Manager)管理,某些经理管理多个雇员,某些经理不管理任何雇员”。
4、简要叙述“聚集”关系和“组合”关系的相同点和不同点。
答:相同点:整体-部分关系。
不同点:局部对象的生命周期是否由整体对象来管理。
5、找出并说明下面类图中的错误。
答:(1)计算机与其部件之间不是继承关系,应是聚集关系;
(2)人与用户、维修人员之间不是聚集关系,应是继承关系;
(3)维修人员与计算机之间不是聚集关系,应是维修人员依赖计算机或单向关联。
6、下面类图中,接口Service中定义了三个方法。其中ClientA只使用methodA方法,ClientB 只使用methodB方法,ClientC只使用methodC方法。根据接口分离原则重新设计该类图。
7、.已知三个类A.B和C,其中类A由类B的一个类和类C的1个或多个类构成. 请画出能够正确表示类A,B和C之间关系的UML类图。
8、简述如何在实际工作中发现类。
答:在与客户的交谈中,要注意客户用来描述业务实体的名词术语。这些名词可作为领域模型中的类。
还要注意你听到的动词,因为这些动词可能会构成这些类中的操作。
当得到一组类的核心列表后,应当向客户询问在业务过程中每个类的作用。他们的回答将告诉你这些类的职责。
9、简述怎样发现类之间的继承关系。
作为候选的类有可能和它的父类、子类在谈话中同时被发现。系统分析员意识到某个类的属性和操作也许能被运用到其他多个类当中去。
另一种可能的情况是系统分析员注意到两个或者多个类可能具有相同的属性和操作。
10、图书管理系统功能性需求说明如下:
图书管理系统能够为一定数量的借阅者提供服务。每个借阅者能够拥有唯一标识其存在的编号。图书馆向每一个借阅者发放图书证,其中包含每一个借阅者的编号和个人信息。提供的服务包括:提供查询图书信息、查询个人信息服务和预定图书服务等。
当借阅者需要借阅图书、归还书籍时需要通过图书管理员进行,即借阅者不直接与系统交互,而是通过图书管理员充当借阅者的代理和系统交互。
系统管理员主要负责系统的管理维护工作,包括对图书、数目、借阅者的添加、删除和修改。并且能够查询借阅者、图书和图书管理员的信息。
可以通过图书的名称或图书的ISBN/ISSN号对图书进行查找。
回答下面问题:
1) 该系统中有哪些参与者?
借阅者图书管理员系统管理员
2) 确定该系统中的类,找出类之间的关系并画出类图。
用户类、用户角色类、图书类、预定类、借阅类、书目类
3) 画出语境“借阅者预定图书”的时序图。
11、请简要说明类图在应用领域中的作用,并说明在对系统建模时主要用到哪3种模型,以及3种模型的区别。
作用:用来描述业务或软件系统的组成结构和关系。
三种模型有动态模型、对象模型、功能模型。
动态模型是描述与时间和操作顺序有关的系统特征;
对象模型是描述系统中对象的静态结构,对象之间的关系,对象的属性和对象的操作;
功能模型描述与值的变换有关的系统特征。
12、Uml关系包括关联、聚合、泛化、实现、依赖等5种类型,请指出下面关系的类型,并采用UML符号表示这些关系。
(1)在学校中,一个学生可以选修多门课程,一门课程可以由多个学生选修,那么学生和课程之间是什么关系?关联
(2)类A的一个操作调用类B的一个操作,而且这两个类之间不存在其他关系,那么类A