UML 的语义表达。通常,使用模型元素的基本
功能不能够完善的表达所要描述的实际信息, 这些通用机制可以有效地帮助表达, 帮助我们
进行有效的 UML 建模。 UML 提供的这些通用机制,贯穿于整个建模过程的方方面面
=========================================================================
1.Rational统一过程的静态机构,分别使用:
-
角色
-
活动
-
产物
-
工作流
2.Rational统一过程的五种视图结构,分别是:
-
逻辑视图
-
过程视图
-
物理视图
-
开发视图
-
用例视图
3.Rational统一过程为架构通过了一个:设计、开发、和验证的系统性的方法
4.Rational统一过程的开发使用一种二维结构来表达
5.Rational统一过程的动态结构,是通过对迭代式软件开发过程的周期阶段和迭代阶段以及里程碑等描述来进行表示的
6.Rational统一过程的六项最佳实践包括:
-
瀑布式软件开发
-
迭代式软件开发
-
基于构件的架构应用
-
软件质量验证
7.迭代过程的四个连续阶段:
-
初始
-
分析
-
细化
8.对一个以架构为中心的开发组织来说,通常需要对架构的目的、表示、过程方面给予关心
9.有效的需求管理指的是:
-
能够应对复杂的项目需求
-
能够有良好的用户满意度
-
尽可能的减少需求的错误
10.实现Rational统一过程的步骤:
-
评估当前状态
-
建立明确目标
-
执行过程实现
-
评价过程实现
11.迭代过程有几个阶段:
初始阶段、细化阶段、构造阶段和移交阶段。
12.Rational 统一过程以一种能够被大多数项目和开发组织都适用的形式建立起来,其所包含的六项最佳实践指的是什么?
迭代式软件开发、需求管理、基于构件的架构应用、建立可视化的软件模型、软件质量验证和软件变更控制。
13.在 Rational 统一过程的开发流程中,分别使用哪几种最主要的建模元素来进行表达?
在 Rational 统一过程的开发流程中,分别使用角色、活动、产物和工作流四种建模元素来进行表达。
====================================================================
1.由参与者,用例以及它们之间的关系构成的用于描述系统功能的动态视图称为用例
2.用例图的组成要素:参与者、用例、系统边界
3.用例中的主要关系有:
-
包含
-
扩展
-
泛华
4.用例包含的系统服务或功能单元的多少指的是:用例粒度,用例粒度越大,系统功能越多
5.用例图中以实现方框表示系统的范围和边界,在系统边界内描述的是组成部分,在系统边界外描述的是系统外部
6.构成用例图的基本元素;
-
参与者
-
系统边界
-
用例
7.系统边界指的是:系统与系统之间的界限
8.简述识别用例的方法:
从分析系统参与者开始,在这个过程中往往会发现新的参与者,当找到参与者之后,就可以根据参与者来确定系统的用例主要是看各参与者如何使用系统, 需要系统提供什么样的服务。 对于这个被选出的用例模型, 不仅要做到易于理解,还要做到不同的涉众对于它的理解是一致的
9.用例之间的三种关系各在什么场合使用:
我们可以在用例之间抽象出包含、扩展和泛化这三种关系。
多个用例用到同一段的行为,则可以把这段共同的行为单独抽象成为一个用例, 然后让其他用例来包含这一用例。扩展关系往往被用来处理异常或者构建灵活的系统框架。 使用扩展关系可以降低系统的复杂度,有利于系统的扩展, 提高系统的性能。 扩展关系还可以用于处理基础用例中的那些不易描述的问题,使系统显得更加清晰易于理解。当您发现系统中有两个或者多个用例在行为、结构和目的方面存在共性时,就可以使用泛化关系。这时,可以用一个新的(通常也是抽象的)用例来描述这些共有部分,这个新的用例就是父用例。
10.在设计系统时,用例的数量如何确定?
视系统的复杂程度而定,对于比较简单的系统,可以相对用的少些用例图,对于比较复杂的系统, 为表示清楚系统功能必须多创建用例图。 我们应该根据每个系统的具体情况,具体问题具体分析,在尽可能保证整个用例模型的易理解性前提下决定用例的大小和数目
11.在系统设计时为何要使用用例图?
用例图是从软件需求分析到最终实现的第一步,它显示了系统的用户和用户希望提供的功能,有利于用户和软件开发人员之间的沟通。借助于用例图, 系统用户、 系统分析人员、 系统设计人员、 领域专家能够以可视化的方式对问题进行探讨, 减少了大量交流上的障碍,便于对问题达成共识。
12创建用例的步骤:
-
识别参与者
-
创建用例
-
创建用例之间的关系
13.用例图的作用:
用例图是需求分析中的产物,主要作用是描述参与者和用例之间的关系,帮助开发人员可视化的了解系统的功能,助于用例图, 系统用户、 系统分析人员、 系统设计人员、 领域专家能够以可视化的方式对问题进行探讨, 减少了大量交流上的障碍,便于对问题达成共识。
14.主要有两种情况需要用到用例:
-
多个用例用到同一段行为,就可以把这段共同的行为单独抽象为一个用例,然后让其他用例来包含这一用例。
-
当某一个用例的功能过多,事件流过于复杂时也可以把某一个事件流抽象为一个被包含用例,以达到被简化描述的目的
15.扩展的描述:
在一定条件下,把新的行为加入到已有的用例中,获取的新用例就是扩展用例,原有的用例叫做基础用例,从扩展用例到基础用例的关系就是扩展关系
16.扩展关系与包含关系的区别:
-
在扩展关系中,基础用例提供一个或多个插入点,并且扩展用例为这些插入点提供了需要插入的行为,而在包含关系插入点只有一个
-
在扩展关系中,基础用例的执行不一定会涉及扩展用例,扩展用例只有在一定条件下才会被执行,而在包含关系中,基础用例执行完成之后,被包含用例一定会被执行
-
即使没有扩展用例,扩展关系中的基础用例本身也是完整的。但是对于包含关系,基础用例在没有被包含关系的情况下就是不完整存在
17.泛化:指的是一个父用例可以被特化成多个子用例,而父用例和子用例之间就是泛化关系
18.各个关系的图形识别:
-
用例图:p.87
-
包含:p.93
-
扩展:p.94
-
泛化:p.95
====================================================================
1.对象图中的_对象_是类的特定实例,_链_是类之间关系的实例,表示_对象_之间的特定关系
2.类之间的关系有:
-
依赖关系
-
关联关系
-
泛化关系
-
实现关系
3.类元的类型有:
-
类
-
接口
-
数据类型
-
构件
4.类中的方法可见性有:
-
共有型 +
-
私有型 #
-
受保护型 -
5.类通常可以划分为:
-
实体类
-
控制类
-
边界类
6.对象特性的实质是属性
7.接口:
-
接口是一种特殊的类
-
所有接口都是有构造性《interface》的类
-
一个类可以通过实现接口支持接口所指定的行为
8.类方法的声明:
-
方法定义了类所许可的行动
-
从一个类创建的所有对象可以使用同一组属性和方法
-
如果在同一个类中定义了类似的操作,则他们的行为也应该是类似的
9.类图的组成元素:
-
类的名称
-
类的属性
-
类的操作
-
类的职责
-
类的约束
-
类的注释
10.对象图的组成成分:
对象图是由对象和链组成的。对象图中的对象是类的特定实例,链是类之间关系的实例,表示对象之间的特定关系
11.简述使用类图和对象图的原因:
在面向对象分析方法中,类和对象的图形表示法是关键的建模技术之一。它们能够有效的对业务领域和软件系统建立可视化的对象模型, 使用强大的表达能力来表示出面向对象模型的主要概念。 UML 中的类图和对象图显示了系统的静态结构,其中的类、对象是图形元素的基础。
12.类图和对象图的异同:
在类中包含三个部分,分别是类名、类的属性和类的操作。类的名称栏只包含类名。类的属性栏定义了所有属性的特征。 类中列出了操作类中使用了关联连接, 关联中使用名称、角色以及约束等特征定义。类是一类的对象的抽象,类不存在多重性。
对象包含两个部分:对象的名称和对象的属性。对象的名称栏包含 “对象名:类名 ”。对象的属性栏定义了属性的当前值。对象图中不包含操作内容,因为对属于同一个类的对象,其操作是相同的。对象使用链进行连接,链中包含名称、角色。对象可以具有多重性。
13.各个关系图形的识别:
-
1.泛化关系:p.108
-
2.关联关系:p.108
-
3.实现关系:p.108
-
4.依赖关系:p.108
14.类图的目的:在于描述系统的构成方式,而不是系统如何协作运行的
15.接口是一种特殊的类,所有的接口都是有构造型<>的类,接口对应的图形:p.115
16.类之间的关系:
-
依赖关系:A:客户 B:提供者 A------>B
-
泛化关系:指的是在一般的基础上,并对其进行扩展,一般的类:父类 具体的类:子类 子类指向父类
-
关联关系:是一种结构关系,指出一个事物的对象与另一个事物的对象之间在语义上的连接 关联关系有两种重要形式:1.聚集关系(描述的是部分与整体的关系的关联);2.组成关系
-
实现关系
=========================================================================
1.序列图将交互关系表示为一个二维图,其中时间轴是纵轴, 时间沿竖线向下延伸,横向代表了在协作中各独立对象的角色。角色使用生命线表示,当对象存在时,生命线用一条虚线表示
2,消息的组成:
-
发送者
-
接收者
-
角色
3.激活是对象操作的执行,它表示一个对象直接或通过从属性操作完成操作的过程,它对执行的持续时间和执行与其调用者之间的控制关系进行建模
4.生命线是一条垂直的虚线,用来表示序列图中的对象在一段时间内的存在
5.序列图的构成对象:
-
对象
-
生命线
-
激活
-
消息
6.序列图中的消息编号有:
-
无层次编号
-
嵌套编号
7.在序列图中,返回消息的符号是:虚线箭头
8.序列图的用途:
序列图的用途包括:确认和丰富一个使用语境的逻辑表达。细化用例的表达。有效地描述如何分配各个类的职责以及各类具有相应职责的原因。
9.序列图创建的步骤:
确定序列对象,创建对象,创建生命线,创建消息,销毁对象。
10.项目开发中使用序列图的原因及其作用:
序列图显示不同的业务对象如何交互,对于交流当前业务如何进行很有用。除记录组织的当前事件外, 一个业务级的序列图能被当作一个需求文件使用, 为实现一个未来系统传递需求。 在项目的需求阶段, 分析师能通过提供一个更加正式层次的表达, 把用例带入下一层次。 那种情况下, 用例常常被细化为一个或者更多的序列图。 组织的技术人员也能通过序列图在记录一个未来系统的行为应该如何表现。 在设计阶段, 架构师和开发者能使用该图,挖掘出系统对象间的交互,这样充实整个系统设计
类元:
-
类
-
接口
-
数据类型
-
构件
====================================================================
1.在协作图中,类元描述了一个对象,关联角色描述了协作关系中的链,并且通过几何排列表现交互作用中的各个角色
2.交互图是对在一次交互过程中的对象和对象间的链建模,显示对象间进行交互以特定用例或用例中特定部分行为
3.在协作图中链是两个或多个对象之间独立连接,是关联的实例
4.协作图通过各个对象之间的组织交互关系以及对象之间的交互
5.在协作图中,消息使用带有标签的箭头来表示,它附在连接发送者和接收者的链上
6.在协作图中:
1.协作图是一种交互图,强调的是参加交互的对象的组织
2.协作图中有消息流的顺序号
7.组成协作图的元素:
-
对象:对象的角色表示一个或一组对象在完成目标的过程中所应起的那部分作用。
-
消息:通过一系列的消息来描述系统的动态行为。其种类有:同步消息(用于系统中使用多线程的场合)和异步消息(使用有并行的活动如消息队列的场合。)
-
链:链是两个或多个对象之间的独立连接,是关联的实例
8.协作图的作用:
-
显示对象及其交互关系的空间组织结构
-
表现一个类操作的实现
-
通过描绘对象之间的消息传递情况来反映具体语境的逻辑表达
9.序列图和协作图的异同:
协作图和序列图都是交互图,它们既是等价的,又有所区别。顺序图表示了时间消息序列, 但没有表示静态对象关系。 顺序图可以有效的帮助我们观察系统的顺序行为。 协作图用于表示一个协同中的对象之间的关系和消息以及描述一个操作或分类符的实现。 在对系统进行行为建模时, 通常做法是用顺序图按时间顺序对控制流建模, 用协作图按对象组织对控制流建模。
=======================================================================
1.活动图的所有或多数状态都是动作状态或活动状态
2.一个对象流的状态必须与它所表示的参数和结果类型匹配
3.动作状态是原子性的动作或操作执行的状态,它不能被外部事物所中断
4.活动状态可以有内部转换,出口动作,入口动作
5.泳道:为了组织活动的职责组织而在活动图中将活动状态分为不同的组,每一个组表示一个特定的类,人或部门,他们负责完成组内的活动
6.分支将转换路径分为多个部分,每一个部分都有单独的监护条件和不同的结果
7.一个组合活动在表面上看是一个状态,但其本质确实一组原子活动的概括
8.对象流中的对象表示的不仅仅是对象自身,还表示对象作为过程中的一个状态而存在
9.组成活动图的要素:
-
泳道
-
活动状态
-
动作状态
10.活动图的开始状态:黑色实心圆
11.uml中的活动图用来描述过程或操作的工作步骤
12.活动图在软件系统开发中起到的作用:
活动图描述一个操作执行过程中所完成的工作,它对活动图对用例描述尤其有用,它可建模用例的工作流, 显示用例内部和用例之间的路径。 活动图可以说明用例的实例是何执行动作以及如何改变对象状态。 它显示如何执行一组相关的动作, 以及这些动作如何影响它们周围的对象。活动图对理解业务处理过程十分有用。
13.活动图的基本元素:
-
动作状态(原子性的动作或操作执行状态,它不能被外部事物的转换中断,它要么执行要么不执行)
-
活动状态(非原子性,可以分解为其他子活动或者动作状态)
-
组合状态
-
分叉与结合
-
分支与合并
-
泳道(为了对活动的职责进行组织而在活动图中将活动状态分为不同的组)
-
对象流
14.分叉与分支的区别
分叉用来表示将一个控制流分成两个或者多个并发运行的分支,分叉具有一个输入转换,两个或者多个输出转换,每个转换都可以是独立的控制流。分支是转换的一部分,它将转换路径分成多个部分, 每一部分都有单独的监护条件和不同的结果。 当动作流遇到分支时, 会根据监护条件(布尔值)的真假来判定动作的流向。 分支的每个路径的监护条件应该是互斥的,这样可以保证只有一条路径的转换被激发。
15.活动状态和动作状态异同点:
动作状态是原子性的动作或操作的执行状态,它不能被外部事件的转换中断。动作状态的原子性决定了动作状态要么不执行, 要么就完全执行, 不能中断。 动作状态不能有入口动作和出口动作, 也不能有内部转移。 动作状态是一种特殊的活动状态。 可以把动作状态理解为一种原子的活动状态。活动状态是非原子性的, 用来表示一个具有子结构的纯粹计算的执行。 活动状态可以分解成其他子活动或动作状态, 可以被使转换离开状态的事件从外部中断。 活动状态可以有内部转换, 可以有入口动作和出口动作。 活动状态具有至少一个输出完成转换, 当状态中的活动完成时该转换激发。
16.活动图的主要目的是描述动作及对象的改变结果,而状态图则是以状态的概念描述对象,子系统,系统在声明周期中的各种行为
====================================================================
1.包图的组成元素:
-
包
-
子系统
-
依赖关系
2.包的可见性关键字:
-
共有的
-
私有的
-
受保护的
3.包是包图的最重要的概念,里面包括了一组模型元素,图
4.包图是一种维护和描述系统总体结构的模型的重要工具,通过对各个包以及包之间的关系描述,展现出系统的模块与模块之间的依赖关系
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端)
最后
大厂面试问深度,小厂面试问广度,如果有同学想进大厂深造一定要有一个方向精通的惊艳到面试官,还要平时遇到问题后思考一下问题的本质,找方法解决是一个方面,看到问题本质是另一个方面。还有大家一定要有目标,我在很久之前就想着以后一定要去大厂,然后默默努力,每天看一些大佬们的文章,总是觉得只有再学深入一点才有机会,所以才有恒心一直学下去。
一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!
AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算
个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端)
[外链图片转存中…(img-TaPAe6VB-1712191795834)]
最后
大厂面试问深度,小厂面试问广度,如果有同学想进大厂深造一定要有一个方向精通的惊艳到面试官,还要平时遇到问题后思考一下问题的本质,找方法解决是一个方面,看到问题本质是另一个方面。还有大家一定要有目标,我在很久之前就想着以后一定要去大厂,然后默默努力,每天看一些大佬们的文章,总是觉得只有再学深入一点才有机会,所以才有恒心一直学下去。
一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!
AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算