二、针对一的回答以及附属的个人理解
一、RUP部分
01、重点补充:
补充性规格说明中的万金油部分:
A、 目标
本文档描述了xxxx系统的需求,列举了用例模型中不能描述的需求,它与用例模型 共同描述了xxx系统的完备需求集
B、 适用范围
只能定义xxx系统的非功能性需求
C、 参考
无
D、 功能:多个终端操作,比如银行系统的手机app端、微信小程序以及电
脑端(这里与用例模型中的功能有差别)
E、 可用性:兼容的系统为windows10\windows7
F、 可靠性:系统应保证全天候不停机的工作,不能司机
G、 性能:该系统应能在任意时间同时支持xxx个用户同时访问,该系统终端响应延迟时间不能超过1s
H、 保障性
无
I、 安全性:保证用户信息不能对外泄露
001、分析机制万金油:
A、永久性机制:粒度(文件的大小)、持续时间、检索机制(数据库文件数字索引、文字索引等)
B、安全性机制:比如每天修改密码的次数限制
C、性能机制:并发数目、响应时间
D、异常处理:异常的优先级特征
1、 封装概念的理解
封装指的是向调用者隐藏了实现,也叫信息隐蔽,把对象的全部属性和全部服务结合在一起,形成一个不可分割的独立单位,尽可能的隐蔽对象的内部细节。封装具有一个接口用来实现这个对象的类的外部访问。封装的目的是使对象的使用者和设计者分开,使用者不必知道行为的实际内部行为,只需用设计者提供的消息来访问该对象。举例:司机没有必要为了开车了解以汽油作为燃料的内燃机引擎的工作原理。
2、 需求是什么(帮助理解 不要求背诵)
① 是什么?
提供一种与客户在系统功能方面进行沟通并达成共识的方式
使开发者能够更准确的理解系统的需求
确定系统的边界
提供了对迭代过程中技术内容进行计划的基础
为系统开发的成本估计提供一个基础
定出系统与用户之间交互的接口
② 产出?
目前理解的是需求模型,需求模型中包括词汇表和补充说明,这两个属于需求模型中的需求文档。
需求模型包括了用例模型(包括了系统的所有用例)、词汇表(针对整个系统)、补充说明(针对整个系统)
3、 需求模型的表示方法,重点是用例的描述
需求模型是对需求结果的描述,也是对目标系统是什么样子的理解,即:用当前的理解模拟表示目标系统。
需求模型通常通过三个部分进行刻画,分别是用例模型、术语表以及补充规格说明。
A、 用例模型描述了系统将要做什么事情,强调了功能性需求,用例模型中主要包括两个主要的概念,分别是参与者和用例。此后,在定义一个用例的时候需要遵循以下的规格说明:a、用例名称 b、简要描述 c、事件流 d、关系 e、动态图 f、用例图 g、特殊需求 h、前置条件 i、后置条件 j、其他图。
B、 术语表为所有模型定义了通用的术语,并且包括对所需系统的文本描述
C、 补充规格说明:包括不与特定的用例相关的需求,是对用例模型的重要补充,例如非功能性需求。
4、 术语表-理解为主
词汇表中定义并解释了问题中的专有名词,比如 词汇表定义了选课系统中的核心概念(词汇:课程 解释:学校提供的课程;词汇:开设课程 解释:一个学期中学校开设的课程等等)
5、 补充说明-理解为主
包括了系统的功能、可用性、稳定性、性能、可维护性以及设计约束。
6、 架构(软件体系结构)概念的理解
① 架构给出了一组关于目标系统构造过程中具有重要影响的决策,属于高层设计
② 这类决策涉及确认需求、技术选型、制定技术规格说明、系统分解等方面。
③ 分解方案包括:选择组成系统的结构化元素以及他们之间的交互协议或规则;用这些元素的合作刻画的行为,并试图讲这些行为和结构元素组合成较大的软件元素,指导进行这种组合的体系架构风格
④ 能够从多个不同视角体现目标系统的构成,可供包括客户、用户以及各类开发人员在内的目标系统的利益相关者之间进行交流
⑤ 架构包括一组约束设计和构造的设计决策、规则或模式。选择或给定范围,明确设计的方向
⑥ 架构是对系统的一组初始约束,这些约束是最重要的。他们构成了软件设计的重要决策,架构为设计提供了框架,可视为战略设计
⑦ 去除了不必要的创造性,因为设计的目的是为了匹配架构框架,离代码越近,创造性就越被限制(因为架构限制了设计,设计限制了编码),创造性可以被用于改进质量和性能等地方
⑧ 类比办公楼、住宅
7、 架构的表示方法或表示形式 (正确!)
软件架构模型推荐的表示方法是“4+1”视图表示。
4+1视图指的是:
① 逻辑视图:描述如何实现系统内部的功能
② 过程视图:描述系统的并发性,并处理这些线程之间的通信和同步
③ 实现视图:描述系统代码构建组织和实现模块之间的依赖关系
④ 部署视图:描述系统的物理位置
⑤ 用例视图:描述系统的功能、需求,找出用例、执行者
----------------------------------------------------------------------------
注意:构架和架构都是Architecture,也就是他们的意思是一样的
----------------------------------------------------------------------------
8、 架构机制概念的理解
① 架构机制是关于通用标准、策略和实践的战略决策,是针对标准化的主题的实现。每个开发人员应该以同样的方式使用这些概念,并且复用相同的机制来执行操作
② 每个架构机制代表一个经常遇到的问题以及对应的通用解决方案。对比设计模式:架构机制代表的是大的基本问题的解决方案。
③ 根据抽象度的不同分为三大类,分析机制、设计机制以及实现机制
A. 分析机制,指的是捕获一种与实现无关的解决方案的关键方面。它的作用是用于在分析过程中向设计人员提供复杂行为的简短表示,从而减少分析的复杂性并提高分析的一致性。
B. 设计机制,指的是如何对现有的设计元素进行整合,从而更新设计模型。
C. 实现机制,指的是实现软件系统。
9、 架构分析过程中使用分析机制的原因---不作重点,便于理解
① 在架构分析时,使用分析机制可以在不考虑实现的情况下用简短的方式描述或表达领域无关的部分,减少分析的复杂性,提高分析的一致性
② 分析机制可以简单的理解为 非功能性需求所对应的软件技术问题。
补充:记住几个万能的分析机制,永久性分析机制(常见特征---容量(数量)、持续时间、检索频率(比如 5分钟之内只允许查找3次)、检索机制(比如数字索引或者符号索引)、粒度(存储数据的单位的大小,比如不能超过3MB)) ;并发机制(特征:并发数量(同一时间允许的最大访问量)) ; 安全性(特征:账户修改次数(每天不超过3次))
10、 分析机制的描述方法(表示形式):分析机制由名字和特征来描述。
补充:分析机制的说明分为四个步骤:
① 将所有分析机制收集在一张列表上
② 画一张类和分析机制图(该类不是分析类)
③ 确定分析机制的特性
④ 使用协作建模(协作建模会得到协作图,根据协作图和确定的分析机制说明分析
类的限定的分析机制
)
11、 用例实现的基本含义
① 描述如何在设计模型内部使用协作对象来实现一个特定的用例,用例实现将用例模型中的用例和设计模型中的类和关系连接到一起,用例实现制订了为了实现每个用例必须构建哪些类
② 在UML中,用例实现用版型化的协作表示。协作的表示符号是一个包含协作名字的椭圆。椭圆代表的协作与对应用例之间 用 实现关系表示。
③ 设计模型中的用例实现能够追溯到用例模型中的一个用例。从用例实现到其所实现的用例,用一个实现关系进行连接。
补充理解:(设计模型通过分析和设计得到,分析过程中的用例实现从大的方面看就是设计模型中的一部分,因此用例实现得到的内容是包含在设计模型中的)
12、 用例分析的基本过程
D、 补充用例说明
E、 通过从用例中查找类,将用例行为分配给类,从而对每一个用例实现。
F、 对每一个得到的分析类,说明职责、属性和关联,限定分析机制
G、 统一分析类
H、 检查点
13、 设计元素的主要形式
设计元素的主要形式分为 设计类 和 子系统。
14、 注意RUP课件每一部分最后的问题
二、组件部分其他主要概念
1、 接口
接口是有序排列的一组函数指针,可以简单理解为一组函数,每一个接口相当于该组件对外的一个窗口(或者对外提供的一种服务/承诺)
2、 中间件
中间件需要具备以下四种条件(是一种软件)
A、 中间件介于操作系统之上,应用软件之下,负责网络通信
B、 具有统一的规范的接口
C、 能够完成一种或几种与领域无关功能的功能。
D、 与编程语言无关
举例:CORBA中的ORB就是一个中间件,它是连接对象、应用程序、 CORBA服务、 CORBA工具集的核心,把各元素分离,是 CORBA实现分布式软件集成,即插即用功能的核心。EJB容器也是一个中间件,它根据组件部署描述,插入所需要的服务,加载EJB组件并管理其运行,可创建Home类,实现EJB提供者定义的home接口,并生成home桩,供客户端与home对话。中间件独立于操作系统和软硬件平台及软件,与具体的编程语言无关。
3、 什么是架构模式?
架构模式表示了对软件系统的一个基础结构组织大纲。它提供了一个预定义的子系统,详细说明了他们的职责,并且包括了他们之间关系的规则和指南。
----------------------------------------------------------------------------
注意:架构和框架是不一样的,在课程中没有详细介绍框架
----------------------------------------------------------------------------
4、 设计框架和设计模式
A、 设计模式:可以简单的理解为一个对偶,一个设计模式是针对一类经常遇到的、领域无关的、典型的设计问题,给出相对好的解决方法,这样的方法是经过许多实践所验证的,并具有比较好的设计理念,每个设计模式都有其使用的场合,属于过程复用。
B、 设计框架:属于表现形式方面,通常是由领域相关的一组类以及这组类之间的关系构成,往往包括抽象类,也可能包括一些接口以及对这些接口的实现或部分实现,属于包括代码复用在内的结果复用。
核心:
设计框架:领域相关、属于包括代码复用在内的结果复用
设计模式:领域无关,属于过程复用。
三、EJB部分
1、 构造EJB组件(Bean组件)的一般过程
(
1) 编写提供业务方法的类,Bean类及其相关接口
2) 编写两个接口:home接口和组件业务接口(远程接口)
3) 编写XML部署描述文件,名字为ejb-jar.xml,告诉服务器如何管理
4) 将Bean接口和部署描述文件放在一个ejb-jar文件中,该文件可能包含多个Bean但描述文件只有一个。
5) 用服务器开发商提供的工具将Bean部署到服务器上)
2、 (EJB)部署文件的主要内容
EJB部署文件是EJB的说明文件,EJB容器按照部署文件管理EJB,它是标准的XML文件,其中包括:
1) 告诉容器自己是什么(什么是组件业务接口、什么是home接口、什么是Bean类),能做什么,如何管理
2)
向EJB申请所需要的服务,以及以何种形式提供服务
3) 定义环境变量和运行时参数
3、 EJB容器能够生成哪些类?能自动产生那些种类的对象?
EJB容器能够自动生成的类有:
1) EJBObject类:实现组件业务接口
2) EJBObject桩类:实现组件业务接口,并知道如何与EJBObject类的对象联系
3) Home类:实现Home接口
4) Home桩类:实现Home接口,并知道如何与Home对象联系。
5) Context类:上下文对象完成若干领域无关工作
自动生成上述的类后,EJB容器会自动产生上述类的对象。
4、 EJB容器能够自动生成类的基本原理(应该EJB容器的含义和作用?)
1) EJB容器根据接口自动生成EJBObject类,实现方法由EJB容器提供商决定,规范只规定容器生成这个对象及其相应的桩。
2) EJB容器还能自动创建Home类,实现EJB提供者定义的Home接口,并产生Home桩类,供客户端和Home对话
5、 什么是EJB容器回调函数?其作用是什么(有哪些)?
Bean类中的组件种类接口中的函数就是回调函数。他的作用是精准控制EJB中Bean类对象的生命周期。比如应用程序使用会话Bean时,对某些特定实例,可能需要精确控制对象的创建和销毁等,会话Bean在创建时可能需要执行一些数据库初始化操作,销毁时关闭一些数据库连接,通过回调函数,程序就能精确控制Bean生命周期的每个阶段,而EJB容器将在生命阶段的适当阶段对其进行调用。
四、CORBA部分
1、 Stub、Skeleton概念你的理解
A. stub全称是客户桩,客户桩stub有IDL编译器在客户端生成,它是客户端的代理,负责与客户端进行交互,获取客户端的用户请求,并将请求放入对象请求代理ORB中。
B. Skeleton是服务器框架,服务器框架Skeleton由IDL编译器在服务器端生成,是服务器的代理,负责接收对象请求代理ORB中的远端用户请求,并将该请求映射到服务器中的实现,得到返回结果后,将结果返回ORB中,ORB再将结果返回给客户桩stub最后客户桩stub将结果返回客户端
( 下面的说法没错 但是不易于背诵
1) 客户桩Stub是编译时确定的接口,位于客户对象的本地,接收客户的请求,对客户而言相当于远程对象,客户桩向ORB提交请求,提供了桩类型激发所需的定义和其他与CORBA提供商有关的信息,客户桩激发请求使用一套例程,不同的ORB有不同的客户桩,每种语言映射都提供客户桩编程接口。
2) 服务器框架Skeleton,分为动态和静态,针对执行对象代表了远程客户,可以在本地调用执行对象服务并与ORB通信,框架把ORB的调用映射到所需的特定实现上,提供BOA与各个操作方法的连接。
获得方法:使用IDL描述文件,通过IDL编译器产生。)
2、 代理模式
首先,CORBA使用的是远程代理。
代理模式的定义是: 为其他对象提供一个代理以控制对这个对象的访问
其次,基本的代理模式及其主要的几种体现形式属于”静态代理”,即设计时,代理角色需要知道是哪个类或哪类目标对象的代理。并且代理角色和目标对象共同实现同一个接口。它的缺点是a、接口发生变化的时候,代理角色及其目标类均需要发生变化;b、在一些应用背景下,同一个目标对象的代理角色可能会有很多。
以下是代理模式主要的几种体现形式:
1) 远程代理
为位于不同进程空间的远程目标对象提供进程内的代表对象。
2) 虚拟代理
目标对象占用资源较大,代理负责目标对象的管理,包括资源占用、释放的时机。
3) Copy-on-write代理
虚拟代理的一种,copy的目的是为了paste,仅copy而不paste就没必要占用剪切板后缓存资源。
4) 保护代理(访问控制代理)
对类的基本访问控制机制的扩展,用另一个类(代理类)完成。
5) 其他代理
本质上是分离,把一个类的核心工作与附加工作分离开,附加工作由代理完成,代理负责一个类的核心工作进行修饰或补充。
最后,一些解释型程序设计语言,基于其动态性质及机制,支持“动态代理”,并提供
一些细节略有不同的框架支持手段。例如:JDK。
3、 IDL编译器的作用
IDL编译器可以生成编程语言相关的文件,利用接口的IDL描述生成。
1) 客户桩文件stub:把某个对象类型的IDL操作定义映射到例程
2) 头文件head:桩文件和框架文件都用头文件来定义结构和常量。
3) 服务器框架文件Skeleton:服务器应用程序用Skeleton把客户机操作映射到服务器实现的方法上。通常是源代码形式。
4、 IDL编译器能够自动产生输出结果的基本原理(产生stub和Skeleton)
由于IDL中包含了数据类型、操作对象以及一些请求的参数和返回值的定义,因此在通过编译器时,再客户端就生成了stub文件,包含着客户的请求相关信息,同时在服务器端生成了skeleton服务器框架文件,stub和skeleton之间进行通信。Skeleton是一个抽象类,在skeleton接收到了对应的stub的请求后,它会创建一个子类,程序员就是在这个子类中完成的具体实现方法。
5、 构造CORBA组件的一般过程(使用IDL构建CORBA)
1) 服务器向ORB部署,将自己的信息注册
2) 客户端经IDL编译器生成stub桩
3) Stub桩在ORB的名字管理器上找到服务器的位置
4) 服务器经IDL编译器生成Skeleton代表服务器与客户端交互
5) Stub代理客户端,Skeleton代表服务器在ORB上进行交互,客户端的请求经由stub交给Skeleton,Skeleton在服务器上得到结果后再交给stub桩,再有stub交给客户端。
五、
COM部分
1、 规范主要内容:结构方面如何规范的(COM规范的主要内容)
可理解为编程约束或建议,一个程序的整体结构应该是什么样子的约束或建议
COM组件由接口部分和实现部分组成。
1) 接口部分:有若干接口,每个接口必须继承Iunknown接口,每个组件有一个标识符ID并且每一个组件中的接口都有一个自己唯一的ID,相当于当前组件对外的某一个方面的承诺,一个接口包含一组函数,这些函数共同代表当前组件具有的某一个方面的能力,从程序的角度,一个接口相当于一个数组,每个元素是一个指向函数的指针,这种形式类似于C++实现约束时所采用的虚函数表的结构。此外,接口部分要满足接口不变性的要求,每个接口一旦发布就不允许在改变。
2) 实现部分:需要实现接口部分的每一个接口里面的每一个函数。不约束如何实现,即怎么实现都可以,实现部分相当于private。
综上,COM组件中的实现部分没有进行约束,所以整个规范只针对接口部分。
2、 IUnknown接口(包括三个函数)的目的作用
1)QueryInterface:对组件的接口进行查询,可以查询接口是否存在,并进一步获得该接口。组件接口使用的原则是“先确认,后使用”,组件使用前必须确认具有所需的服务。利用QueryInterface函数可以支持组件的动态连接。
2)AddRef和Release:通过计数器完成引用计数的功能,通过引用计数可以知道组件是否有客户。当组件的所有引用计数为0时,表示已经没有客户,可以移除该组件
3、 构造COM组件的一般过程(利用动态链接库)
1) 定义各业务接口,每个接口都能继承Iunknown接口
2) 为每个组件和接口分配一个唯一的标识符
3) 实现各业务接口的功能
4) 定义类厂接口并分配唯一的标识符(此接口继承自IClassFactory接口)
5) 实现类厂接口以实现动态生成组件
6) 编写DLL,在DLL函数中有注册组件到注册表的函数,取消注册的函数,与类厂相连的函数。
4、 工厂方法及工厂接口(类厂接口)的作用
{工厂方法是设计模式的一种,属于创建型模式,他的作用是定义一个用于创建对象的接口,让子类决定哪一个类实例化,工厂方法使一个类的实例化延迟到其子类(子类指的是该类的工厂类,该工厂类是工厂方法定义的子类)。}工厂接口(类厂接口)的作用是创建组件的标准接口,客户可以通过类厂组件创建其他组件。工厂方法中工厂(类厂)的唯一作用就是创建组件。
5、 动态连接的含义,COM如何支持动态连接?
A、 动态链接指的是组件能够动态的被调用和释放,即能够在应用程序的运行过程中动态使用,不是在发布应用程序的时候就把组件和应用放在一起,而是分离的,只有程序运行的时候,组件和程序才会有机的结合在一起。
B、 COM组件利用QueryInterface函数支持动态连接,它的含义是客户程序C查询组件S的某个接口Ix的根本意图是试图获得一个支持Ix接口的实现体而不是简单地查看有没有。此外,COM通过使用动态链接库来支持组件的动态调用和释放,动态链接库能够在客户调用组件的某个接口时,将
组件载入内存,并返回接口供客户使用,在组件的每一个接口都没有客户使用时,可以将组件从内存中卸载。
6、 COM如何支持兼容?
COM支持兼容来源于接口规范中的接口不变性,COM组件一旦公布了某个接口,该接口将永远不能改变,包括函数在接口中的顺序。Com组件升级不改变接口,只增加新的接口,以此来保证兼容性。
上述内容未经过排版,完整版可以从我上传的资源部分下载
三、对课件内容中EJB\CORBA\COM组件的整合
电子版我也上传至我的资源了