uml相关
01,uml图,每种图包含什么元素。
08,Uml图有多少种图,分为哪几类
UML定义了5类,9种模型图
- 用例图
- 静态图、包图、对象图
- 行为图:状态图、活动图
- 交互图:顺序图、协作图
- 实现图:构件图、部署图
13,uml图每种图的概念,怎么表示,符号,怎么画。比如说状态图通常是什么样的情况下会发生状态转换,怎样去定义他
19,用uml建立系统分析和设计,需要建立的视图有哪些
24,什么是uml图中4+1视图
用例视图:描述系统应该具备的功能,即被称为参与者的外部用户所能观察到的功能。
逻辑视图:描述用例视图中提出的系统功能的实现。逻辑视图既描述系统的静态结构,也描述系统内部的动态协作关系。
组件视图(实现视图):描述系统的实现模块以及它们之间的依赖关系。
并发视图(进程视图):考虑资源的有效利用、代码的并行执行以及系统环境中异步事件的处理。
配置视图(物理视图):显示系统的物理部署,并描述位于节点实例上的运行组件实例的部署情况。
17,uml 4+1视图,用什么表达用户需求,用什么表达功能模块
用用例视图表达用户需求,用逻辑视图表达功能模块
03,uml视图,关于逻辑,并发视图分别有哪些
逻辑视图下的模型元素包括类、类工具、用例、接口、类图、用例图、协作图、序列图、活动图和状态图等。
并发视图由动态图(状态图、序列图、协作图、活动图)和执行图(构件图、部署图)构成。
27,简单叙述uml的特点。
1.统一的标准(被OMG所认定的建模语言 标准)
2.面向对象(支持面向对象软件开发)
3.可视化建模
4.独立于开发过程(可以应用到任意一种开发过程中去)
5.概念明确、建模表示法简洁、图形结构清晰、容易掌握和使用
13,uml的特点
31,标准的unl语言包含哪几类,几种图形。
10,什么叫uml
Unified Modeling Language 统一建模语言,又称标准建模语言。是用来对软件密集系统进行可视化建模的一种语言。
设计模式相关
02,设计模式原则,两大主题,系统复用,系统扩展。设计模式基本思想。
34,设计模式的原则
单一职责原则 |
类的职责要单一,不能将太多的职责放在一个类中 |
开闭原则 |
软件实体对扩展是开放的,但对修改是关闭的,即在不修改一 个软件实体的基础上去扩展其功能 |
里氏代换原则 |
在软件系统中,一个可以接受基类对象的地方必然可以接受一 个子类对象 |
依赖倒转原则 |
要针对抽象层编程,而不要针对具体类编程 |
接口隔离原则 |
使用多个专门的接口来取代一个统一的接口 |
合成复用原则 |
在系统中应该尽量多使用组合和聚合关联关系,尽量少使用甚 至不使用继承关系 |
迪米特法则 |
一个软件实体对其他实体的引用越少越好,或者说如果两个类 不必彼此直接通信,那么这两个类就不应当发生直接的相互作 用,而是通过引入一个第三者发生间接交互 |
19,面向对象与结构化的区别
结构化分析,是针对数据流建立数据模型,功能模型和行为模型,结构化设计也就是基于数据流的设计方法
面向对象,则是尽可能的模拟人类习惯的思维方式,使开发软件的方法与过程尽可能的接近人类认识世界解决问题的方法与过程,使描述问题的问题空间与实现解法的解空间在结构上尽可能一致。将数据与施加在该数据之上的操作封装成类来模拟现实生活中的“对象”。
uml中各种图相关
25,uml图中的交互图是谁在交互,为什么交互,怎么做交互,
对象间通过消息进行交互
在项目的需求阶段,分析师能通过提供一个更加正式层次的表达,把用例带入下一层次。那种情况下,用例常常被细化为一个或者更多的序列图。组织的技术人员能发现,序列图在记录一个未来系统的行为应该如何表现中,非常有用。在设计阶段,架构师和开发者能使用图,挖掘出系统对象间的交互,这样充实整个系统设计。
1.确定交互的范围
2.确定参与交互的活动者与对象
3.确定活动者、对象的生存周期
4.确定交互中产生的消息
5.细化消息的内容
26,部署图,组件图,他们的作用和运用场景。
部署图
作用:部署图用于描述部署软件组件的硬件组件。
(1)可视化系统的硬件拓扑
(2)描述用于部署软件的硬件组件
(3)描述运行时处理节点
运用场景:
部署图主要有系统工程师使用,这些用于描述物理组件,他们的分布和关联,部署图可以显示为软件组件所在的硬件组件节点。现在的软件应用程序本质上非常复杂,软件应用程序可以是独立的,基于Web的,分布式的,基于大型机的,因此有效设计硬件组件非常重要。
(1)模拟系统的硬件拓扑
(2)模拟嵌入式系统
(3)为客户端/服务器系统建模硬件详细信息
(4)模拟分布式应用程序的硬件详细信息
(5)用于正向和反向工程
组件图
作用:它是UML中的一种特殊图,目的也与目前讨论的所有其他图不同,它没有描述系统的功能,但是它描述了用于实现这些功能的组件。
(1)可视化系统的组件
(2)使用正向和反向工程构造可执行文件
(3)描述组件的组织和关系
应用场景:??????????????????????
05,类图4种关系,各自在什么场合使用
关联、依赖、泛化和实现。
关联关系是一种结构关系,指出了一个事物的对象与另一个事物的对象之间的语义上的连接
依赖关系可以用于类和类之间,也可用于包和包之间,构件和构件之间。依赖关系是普遍存在的关系也是最弱的关系,实体之间大都都含有依赖关系。若有依赖关系也有关联关系就要用关联来表示。
泛化/特化(Generalization / Specialization)是现实世界中一般性实体与特殊性实体之间的关系,一般性实体是特殊性实体的泛化,特殊性实体是一般性实体的特化。
是类元之间的语义关系,在该关系中一个类元描述了另一个类元保证实现的契约
07,什么是顺序图
描述了对象之间传递消息的时间顺序, 用来表示用例中的行为顺序, 是强调消息时间顺序的交互图;
09,uml交互图,顺序图,协作图,怎么画,区别
顺序图
1.确定交互的范围
2.确定参与交互的活动者与对象
3.确定活动者、对象的生存周期
4.确定交互中产生的消息
5.细化消息的内容
协作图???
区别:
– 对象创建撤销侧重点 : 时序图侧重描述对象的创建 和 撤销, 新创建的对象放在对象生命线上对应的时间点, 撤销的对象在结束的地方放一个X 表示该对象不能再继续使用; 协作图中 创建 撤销的概念不存在, 对象时始终存在的, 只能通过消息描述 或 约束 来说明对象的创建和撤销;
– 链接侧重点 : 时序图 中的链 没有表示出来, 可以随意绘制消息, 有些逻辑交互可能不会发生; 协作图 的消息 是映射在链 上的, 消息 和 链 平行放置, 如果想要通过消息 查看 对象之间的关联 使用协作图最好;
– 激活和去激活 :时序图表现有激活 和 去激活, 协作图上没有时间概念的描述, 无法清晰地表示对象的激活 和 去激活;
22,uml图和代码的转换
?????
用例图相关
05,用例图最核心的元素有哪些: 参与者、用例、关系
04,用例图有哪几种关系,比如扩展,它们之间的区别是什么
关联、泛化、包含、扩展
包含(include)、扩展(extend)、泛化(Inheritance) 的区别:
条件性:泛化中的子用例和include中的被包含的用例会无条件发生,而extend中的延伸用例的发生是有条件的;
直接性:泛化中的子用例和extend中的延伸用例为参与者提供直接服务,而include中被包含的用例为参与者提供间接服务。
对extend而言,延伸用例并不包含基础用例的内容,基础用例也不包含延伸用例的内容。
对Inheritance而言,子用例包含基础用例的所有内容及其和其他用例或参与者之间的关系;
21,解释或比较用例图中extend和included的关系
Include,指用例中的包含关系,通常发生在多个用例中,有可以提取出来的公共部分
extend,扩展用例不包含基础用例的内容,基础用例也不包含延伸的内容
08,类和用例的区别
类由属性和操作组成;用例由场景组成,每个场景又由一个步骤序列组成。
面向对象相关
15,面向对象分析和设计的一些基本步骤和原则,界面对话设计的原则
OOA基本步骤:第一步,确定对象和类第二步,确定结构第三步,确定主题第四步,确定属性第五步,确定方法
//简述面向对象分析方法(OOA)的5个基本步骤1)、识别对象,识别对象包括标识潜在的对象和筛选对象两步2)、识别对象的属性3)、识别对象的行为4)、识别对象所属的类5)、定义主题词//
OOD基本步骤:1.根据需求描述提取类2.根据需求的要求,可构建类工厂,使用多态技术,灵活使用各个类。3.根据逻辑要求,提取业务类,主要对各个对象进行数据操作。4.根据人机界面操作(系统提示信息),提取UI类,即测试类,完成用户与程序的交互。5.进行优化设计,梳理运行过程。
面向对象设计原则:单一职责原则
开放-封闭原则
李氏替换原则
依赖倒置原则
接口隔离原则
合成/聚合复用原则
最小知识原则(迪米特法则)
界面对话设计的原则???
20,面向对象技术的层次结构,面向对象设计的整体结构。
OOA模型采用五层次结构,它们分别是:(1)对象-类层划分待开发系统及其环境信息的基本构造单位,标出反映问题域的对象和类,并用符号进行规范的描述,用信息提供者熟悉的术语为对象和类命名。(2)属性层定义对象和某些结构中的数据单元,继承结构中所有类的公共属性可放于通用类中。标识对象类必需的属性并放在合适的继承层次上,属性的特殊限制和实例连接关系也应标识出来。(3)服务层表示对象的服务或行为,即是要定义类上的操作。(4)结构层标识现实世界中对象之间的关系。当一个对象是另一个对象的一部分时,用"整体-部分"关系表示;当一个类属于另一个类时,用类之间继承关系表示。(5)主题层可将相关类或对象划分为一个主题。
OOD模型的总体结构: (1)问题论域部分,在OOA模型的基础上,细化分析结果,设计一组构成底层应用模型的类和对象。(2)人机交互部分:设计用户界面模型,该用户界面模型中的类和对象提供实现人机交互操作的接口函数。用户界面设计包括菜单设计、窗口设计、输入/输出界面设计等等。(3)任务管理部分:建立一些类,用以负责处理操作系统级的并发问题、中断、调度以及其它与特定平台有关的问题。(4)数据管理部分:提供数据管理系统中存储和检索对象的基本结构,包括对永久性数据的访问和管理。数据管理设计包括:—数据存放设计:数据存放设计选择数据存放的方式(文件存放、关系数据库表格存放或面向对象的数据库存放)。—设计相应的操作。为每个需要存储的对象和类增加用于存储管理的属性和操作,在类和对象的定义中加以描述。
18,面向对象技术的三大机制
(1)封装性(encapsulation)所谓封装就是把对象的属性和行为结合成一个独立的单位,使外界不能直接访问或修改这些数据和代码,外界只能通过对象提供的接口函数来改变或获取对象的属性数据,这就实现了消息隐蔽。(2)继承性如果在一个已定义的类上,增加一些特殊属性或操作,可以形成一个新的类,这个类不仅继承了前一个类的全部特征,而且具有新的特性,因此可看作前一个类的特例,是对前一个类的继承。前一个类称为父类,新产生的类叫做子类。通过继承关系可形成一种类层次结构,叫做继承结构。(3)多态性在类层次结构的不同类中,可用相同的函数名实现功能不同的函数。
20,面向对象三大机制
抽象、继承、多态
11,泛化和继承是否完全一样,区别是什么
泛化就是子类抽象出一个父类
继承就是父类具体华一个子类
泛化和继承其实是一个逆过程
10,包的元素,可见性,分为哪些型,构造型等,依赖关系等
元素:类,接口,构件,节点,协作,用例,甚至是其他包或图
可见性可以分成3种:公有访问(public)、保护访问(protected)、私有访问(private)
公有访问:包内的模型元素可以被任何引入此包的其他包的内含元素访问。
保护访问:表示此元素只能被当前包的子包访问。
私有访问:表示此元素只能被当前包内的模型元素访问。
构造型????
包之间的关系:依赖关系和泛化
- 接口,抽象类有什么区别?
up相关
09,统一过程的一些核心工作流和各个阶段的具体工作
核心工作流: 1商业建模2. 需求3. 分析和设计4. 实现5. 测试6. 部署7. 配置和变更管理8. 项目管理9. 环境
阶段:1)初始阶段:编制简要的愿景文档、 业务案例、 确定范围、 粗略评估成本。2)细化阶段:细化愿景文档、 迭代地实现核心构架、 解决高风险的问题、 定义大多数的需求和范围、 进一步评估成本3)构造阶段:迭代地实现系统的其余部分、 准备部署4)提交阶段:beta 测试、部署
12,面向对象分析和设计有哪些相同点和不同点
1)OOA将现实世界中的实体抽象为问题对象,并构造问题域中的系统需求模型;OOD将 问题对象转化为解域中的类并在解域中构造出问题的解。2)OOA侧重于用户需求的分析和对问题域的理解,分析人员关心的是系统结构及对象间的关系;OOD则侧重于系统的实现,设计人员关心的是对象的行为及其实现。3)OOA标识了一组对象,并通过其相互作用来刻划系统,该阶段的工作与程序设计语言 无关;OOD定义了一组类,并设计出系统的实现蓝图,概要设计与程序设计语言无关,但详细 设计则与之有比较密切的联系。( 4)OOA识别的对象是对客观世界实体的抽象,标识对象的准则是:该对象的引入是否有助于对问题域的理解;OOD中构造类的准则是:该类的构造是否可行,是否有效地实现了抽象 数据类型,是否有助于系统的实现和提高软件质量。( 5)两个阶段都没有提及系统对象,但原因不同。在OOA阶段,分析与实现无关,分析所涉 及的范围与解域无关,系统对象自然不用考虑。OOD建立的对象模型本身就是要设计的软件 系统,对系统对象的考虑是隐含的。6)组装结构和分类结构在两个阶段所起的作用不同。在OOA阶段,它们的引入主要是为 了理解问题;而在OOD阶段,它们的引入则主要是针对软件的构造和实现。分类结构通过继 承机制来实现,因而代码得到了有效地复用;组装结构则将一些类组合在一起构成较大的软件构件。7)OOA并没有考虑对象的产生问题,当其对应的实体在现实世界中出现时,它也就在问 题域中产生了。OOA也不考虑对象属性的取值和服务算法的实现。而在OOD阶段这些问题 都必须详细考虑。8)OOD涉及到重载问题;而OOA没有考虑,因为考虑过多的实现细节对理解问题和分 析用户需求没有多大帮助
22,rup的特点
RUP是风险驱动的、基于Use Case技术的、以架构为中心的、迭代的、可配置的软件开发流程。
人机界面相关
16,人机界面设计应该从哪几种方面来评价
(1)用户对人机界面的满意程度;(2)人机界面的标准化程度;(3)人机界面的适应性和协调性;(4)人机界面的应用条件;(5)人机界面的性能价格比。
17,友好的人机界面应该具备至少哪些特征
1操作简单,易学,易掌握
2界面美观,操作舒适
3快速反应,响应合理
4用语通俗,语义一致
others
04,数据库设计,在逻辑设计阶段开始考虑具体的数据库管理系统的特性
07,经典的软件工程思想将软件工程过程分为哪几个阶段?
5个阶段:需求分析\系统分析与设计\系统实现\测试\维护
- 软件架构的定义,设计模式分为3类,每种设计模式。Grasp,gof
软件架构是一个系统的草图,软件架构描述的对象是直接构成系统的抽象组件。
1.创建型模式:2.结构型模式:3.行为型模式:
- 敏捷开发的基本思想,基本原则
1. 快速迭代2. 让测试人员和开发者参与需求讨论3. 编写可测试的需求文档4. 多沟通,尽量减少文档5. 做好产品原型6. 及早考虑测试
16,敏捷开发的特点,某一做法是否符合这种思想
1. 工作在小的团队中
2. 团队是跨功能的-包括测试人员,开发人员,文档开发人员等等
3. 短迭代-利用短迭代方法来交付软件
4. 相较于文档,敏捷开发更注重面对面的交流
5. 敏捷不是一个过程,而是一个软件开发的形式或者方法
6. 敏捷可以与软件过程如CMMI等一起实施
29,中间件的技术
为什么要使用中间件?
具体地说,中间件屏蔽了底层操作系统的复杂性,使程序开发人员面对一个简单而统一的开发环境,减少程序设计的复杂性,将注意力集中在自己的业务上,不必再为程序在不同系统软件上的移植而重复工作,从而大大减少了技术上的负担。中间件带给应用系统的,不只是开发的简便、开发周期的缩短,也减少了系统的维护、运行和管理的工作量,还减少了计算机总体费用的投入。
- 高内聚度及含义
由一个类负责某个功能领域中的相应职责,并与其他类协作完成任务P229
- ooa/d有什么区别
在OOA的过程中,强调的是在问题域内发现和描述对象和概念。
在OOD的过程中,强调的是定义软件对象和这些软件对象如何协作来满足需求。
- 测试有哪几类,区别
按运行状态:动态测试、静态测试;
按执行过程:手工测试、自动化测试;
按内容划分:功能测试、易用性测试、兼容性测试、文档测试等
按用例设计:黑盒测试、白盒测试、灰盒测试;
按开发:单元测试、系统测试、集成测试、验收测试
- 单例模式和适配器模式的基本思想
1、单例模式:也分饿汉式单例模式(创建对象)与懒汉式单例模式(未创建对象)
代码实现:
饿汉式单例模式:
懒汉式单例模式:
2、适配器模式:
接口:
实现接口的类: