【软考】背诵知识点小结之立春

类图定义
类图描述一组类、接口、协作和它们之间的关系
顺序图(又称序列图)定义
顺序图是一种交互图(interactiondiagram),它强调对象之间消息发送
的顺序,同时显示对象之间的交互。
通信图(又称协作图)定义
通信图也是一种交互图,它强调对象之间存在的消息收发关系,而不专门突出这些消息发送的时间顺序。
状态图定义
是对类描述的补充。用于展现此类对象所具有的可能状态,以及某些事
件发生时其状态转移情况
活动图定义
是一种特殊的状态图。活动图描述一个操作中要进行的各项活动的执行
流程。同时,也常被用来描述一个用例的处理流程或者某种交互流程。
构件图定义
构件图描述一个封装的类和它的接口、端口,以及由内嵌的构件和连接
件构成的内部结构。构件图用于表示系统的静态设计实现视图。对于由
小的部件构建大的系统来说,构件图是很重要的。构件图是类图的变体。
部署图定义
部署图描述对运行时的处理节点及在其中生存的构件的配置。部署图给
出了架构的静态部署视图,通常一个节点包含一个或多个部署图。
序列图和协作图区别
1、序列图主要用来更直观的表现各个对象交互的时间顺序,将体现的重点放在以时间为参照,各个对象发送、接收消息,处理消息,返回消息的 时间流程顺序,也称为时序图。
2、协作图是一种类图,强调参与交互的各个对象的结构信息和组织。
3、序列图强调时间顺序,协作图强调空间结构
聚合关系和组合关系的区别
1、都是表达整体和部分的关系
2、聚合关系中整体和部分的关系耦合性不强,部分可以脱离整体生命周期存在不一样的生命周期(比如汽车和他的轮胎可以拆卸)
3、组合关系中部分和整体生命周期是相同的,他们是同生共死关系(比如大雁和它的心脏同生共死)
泛化关系 描述
泛化关系描述了一般事物与该事物中的特殊种类之间的关系,也就是父类与子类之间的关系。
继承关系是泛化关系的反关系,也就是说,子类继承了父类,而父类则是子类的泛化。例如:员工与部门经理。部门经理也是员工的一种。
关联关系 描述
关联提供了不同类的对象之间的结构关系,它在一段时间内将多个类的实例连接在一起。关联体现的是对象实例之间的关系,而不表示两个类之间的关系。其余的关系涉及类元自身的描述,而不是它们的实例。对于关联关系的描述,可以使用关联名称、角色、多重性和导向性来说明。例如:员工与请假记录之间有关联关系。
状态图和活动图的区别
1、状态图用来描述一个特定的对象所有可能的状态,以及由于各种事件的发生而引起的状态之间的转移和变化。
2、活动图将进程或其他计算的结构展示为计算内部一步步的控制流和数据流,主要用来描述系统的动态视图。
3、状态图主要描述行为的结果。
4、活动图主要描述行为的动作。
其次活动图可描述并发行为,而状态图不能。
流程图和活动图的区别
1、流程图描述处理过程。主要控制结构是顺序、分支和循环,各个处理过程之间有严格的顺序和时间关系。
2、活动图描述的是对象活动的顺序关系所遵循的规则,它着重表现的是系统的行为,而非系统的处理过程。
3、流程图不能表示并发活动的情形,活动图能够表示并发活动的情形
4、流程图是面向过程,活动图是面向对象。
UML图中静态图(结构图)有哪些
类图、对象图、构件图、部署图、制品图、包图、组合结构图
UML图中动态图(行为图)有哪些
用例图、顺序图、通信图、状态图、活动图、定时图、交互概览图
实体类的定义
实体类映射需求中的每个实体,保存需要存储在永久存储体中的信息,例如,员工信息、请假申请表
控制类的定义
控制类是用于控制用例工作的类,用于对一个或几个用例所特有的控制行为进行建模。例如,提交请假,审批请假
边界类的定义
边界类用于封装在用例内、外流动的信息或数据流。例如,请假申请页面、请假批准单
设计模式分类-创建型模式
简称:单抽原建厂
单例模式(Singleton)、抽象工厂模式(Abstract Factory)、原型模式(Prototype)、建造者模式(Builder)、工厂方法模式(Factory Method)
设计模式分类-结构型模式
简称:外侨组员戴配饰
外观模式(Facade)、桥接模式(Bridge)、组合模式(Composite)、享元模式(Flyweight)、代理模式(Proxy)、适配器模式(Adapter)、装饰器模式(Decorator)
设计模式分类-行为模式
简称:观摩对策,责令解放,戒忘台
观察者模式(Observer)、模板方法模式(Template Method)、迭代器模式(Iterator)、策略模式(Strategy)、责任链模式(Chain of Responsibility)、命令模式(Command)、解释器模式(Interpreter)、访问者模式(Visitor)、中介者模式(Mediator)、备忘录模式(Memento)、状态模式(State)
哪四个模式既为类的模式,又为对象的模式
工厂方法模式、适配器模式、模板方法模式、解释器模式
工适解模
信息工程方法中的“实体(entity)” 与面向对象方法中的“类(class)”之间有哪些不同之处
答:实体通常指的是现实世界中的一个对象或概念,可以是人、地点、物品或概念等
类来源于面向对象编程(OOP),它是一个蓝图或模板,定义了一组具有相同属性(成员变量)和方法(成员函数)的对象。类是面向对象方法中创建对象的基础
不同点:
1、实体用于数据建模,而类用于面向对象建模。
2、实体只有属性,而类有属性和操作
Essential Use Cases和Real Use Cases的区别
答:Essential Use Cases 可翻译为抽象用例
Real Use Cases可翻译为基础用例
它们区别在于:
1、Essential Use Cases 用于分析阶段,Real Use Cases 用于设计阶段
2、Essential Use Cases 描述用例的本质属性,它与如何实现这个用例无关,独立于实现该用例的软硬件技术。
Real Use Cases 描述的是用例的实现方式,表达了设计和实现该用例时所采用的方法和技术。
基础用例是实实在在在与用户需求有对应关系的用例,是从用户需求获取的渠道得到的,而抽象用例是从基础用例中抽取的用例的公共部分,是为了避免重复工作,优化结构而提出的用例。
缓存分片方法常用的有哈希算法和一致性哈希算法区别
哈希算法是把任意长的输入通过某种哈希算法变换成固定长度的一个哈希值,简言之就是按照某种算法散列得到一个值。由于不同的输入可能会有相同的哈希值,所以不能从哈希值来确定唯一的输入值。
一致性哈希算法是一种特殊的哈希算法,它将整个哈希值空间映射成一个按顺时针方向组织的虚拟圆环,使用哈希算法算出数据哈希值,然后根据哈希值的位置沿圆环顺时针查找,将数据分配到第一个遇到的集群节点进行缓存。一致性哈希能尽可能小地改变已存在的服务请求与处理请求服务器之间的映射关系,解决了简单哈希算法在分布式哈希表中存在的动态
伸缩问题:
一致性哈希算法有两大优点,
1)可扩展性。一致性哈希算法保证了增加或减少服务器时,数据存储的改变最少,相比传统哈希算法大大节省了数据移动的开销。
2)更好地适应数据的快速增长。
布隆过滤器的工作原理和优缺点
布隆过滤器本质上是一种数据结构,比较巧妙的概率型数据结构,特点是高效地插入和查询,告诉你“某个元素一定不存在或者可能存在”。布隆过滤器的原理是当一个元素被加入集合时,通过 K 个散列函数将这个元素映射成一个位数组中的 K 个点,把它们置为 1。检索时,只要看看这些点是不是都是 1 就大概知道集合中有没有它了;如果这些点有任何一个 0,则被检元素一定不在;如果都是 1,则被检元素很可能在。
优点:
占用内存小
增加和查询元素的时间复杂度为:O(K), (K 为哈希函数的个数,一般比较小),与数据量大小无关
哈希函数相互之间没有关系,方便硬件并行运算
布隆过滤器不需要存储元素本身,在某些对保密要求比较严格的场合有很大优势,数据量很大时,布隆过滤器可以表示全集,其他数据结构不能
使用同一组散列函数的布隆过滤器可以进行交、并、差运算
缺点:
有误判率,即存在假阳性(False Position),不能准确判断元素是否在集合中(概率较小)不能获取元素本身一般情况下不能从布隆过滤器中删除元素
如果采用计数方式删除,可能会存在计数回绕问题
数据流图和数据字典在软件分析和设计阶段的作用
在分析阶段,数据流图用于界定系统上下文范围和建立业务流程的加工说明,自顶向下对系统进行功能分解;指明数据在系统内移动变换;描述功能及加工规约。数据字典用于建立业务概念有组织的集合,是模型核心库,有组织的系统相关数据元素列表,使涉众对模型中元素有共同的理解。
数据实时同步和数据异步准实时更新的思路
数据实时同步方案思路,更新数据时在同一事务内依次完成删除缓存,更新数据库,再写入缓存。
数据异步准实时方案思路,更新数据时在同一事务内首先通过消息队列发布待更新数据的消息给缓存更新服务,再更新数据库;缓存更新服务订阅消息队列,待收到更新事件执行缓存更新。如果数据量极大,且性能要求高,较适合采用异步准实时方案较好。
心跳检测和超时探测技术的基本原理及特点
顾名思义,心跳检测技术是节点以固定频率向其他节点发送心跳信息,表示自己存活。如果一段时间之后仍然没有收到来自此节点的心跳,就认定该节点已失效,其资源和服务就会被接管。优点是可以快速反应,缺点是容易产生误判。
超时探测技术是节点主动向被探测节点发出 PING 信号,被探测节点则在收到 PING 信号后回复一个 ECHO 信号,表示自己的健康状态良好,还可以附加一些状态信息。如果在预定的时间之后仍然收不到 ECHO 信号,则判定被探测节点失效。优点是可以获得更详细的探测结果,缺点是判断的周期较长。
数据驱动方法的基本概念
数据驱动方法是一种问题求解方法。从初始的数据或观测值出发,运用启发式规则,寻找和建立内部特征之间的关系,从而发现一些定理或定律。通常也指基于大规模统计数据的自然语言处理方法。由于是分布式环境,需要综合多种故障信息和系统状态,依据智能决策数据库的决策策略判定,如果采用预先定制的解析模型,这个模型可能会非常复杂。因此采用数据驱动方法能通过已有的数据去训练模型,可以达到逐渐精细化,并兼容未来的变化。
传统云计算模型中引入边缘计算模型的优势
传统云计算模型中引入边缘计算模型的优势如下。
(1)速度:如果使用边缘计算,则物联网设备将在边缘数据中心或本地处理数据。因此,数据无需传输回中央服务器,速度优势明显;
(2)安全:边缘计算将在不同的数据中心和设备之间分配数据处理工作。黑客无法通过攻击一台设备来影响整个网络;
(3)可扩展性:通过购买具有足够计算能力的设备来扩展边缘网络。企业无需为其数据需求建立自己的私有或集中式数据中心;
(4)可靠性:所有的边缘数据中心和物联网设备都位于用户附近。因此,网络中断的可能性非常小。
MQTT 协议介绍
MQTT 是一个物联网传输协议,它被设计用于轻量级的发布/订阅式消息传输,旨在为低带宽和不稳定的网络环境中的物联网设备提供可靠的网络服务。MQTT 是专门针对物联网开发的轻量级传输协议。MQTT 协议针对低带宽网络,低计算能力的设备,做了特殊的优化,使得其能适应各种物联网应用场景
管道-过滤器风格 介绍
管道-过滤器风格,是一种软件体系结构风格,它适用于处理连续的数据流。这种风格将系统分解为一系列独立的处理步骤,每个步骤都被封装在一个过滤器中,数据通过管道在这些过滤器之间传递。具备高内聚低耦合、支持软件重用、扩展性好、支持并发等优点,但它有编写复杂、不适合处理交互应用等缺点
优点:
①高内聚,过滤器是执行特定功能的处理服务,具有较强的内聚性;
②低耦合,过滤器之间仅通过管道通信;
③可重用,支持过滤器的重用;
④能简单地实现并发或顺序系统;
⑤可扩展性,容易添加新的过滤器;
⑥灵活性,过滤器功能可重新定义,管道线路可改变。
缺点:
①管道中数据传输需要通用的标准;
②难以支持基于事件的交互格常常用于实现编译器
隐式调用风格 介绍
隐式调用事件驱动架构(Event-Driven Architecture),是一种软件架构模式,其中组件间的交互是基于事件的,而不是直接的调用。基于事件触发思想,具备支持软件重用、改进系统方便等优点,但它有构件放弃了对系统计算的控制、事件传递中的数据交换存在问题、语义依赖于被触发事件的上下文约束等缺点。
解释器风格 介绍
解释器通常包括解释引擎、代码存储区、记录解释引擎当前工作状态的数据结构、记录源代码被解释执行进度的数据结构。它含有一个虚拟机,可以仿真硬件的执行过程和一些关键应用,其缺点是执行效率比较低。
优点:语法由很多类(每个规则对应一个类)表示, 容易改变及扩展;
缺点:如果语法规则数量太多,会增加系统复杂度,性能下降。
仓库风格 介绍
仓库风格是一种数据共享风格,主要有两类,一是传统的数据库,另一是黑板。数据库系统是由输入流中的事件来驱动信息处理,把执行结构存储到中央数据单元。黑板则由中央数据单元的当前状态来驱动系统运行,用来解决状态冲突并处理可能存在的不确定性知识源。黑板常用信号处理,如语音识别、模式识别、机器翻译、句法分析等。
优点:
①便于多客户共享大量数据,不必关心数据的产生、有谁提供、如何提供等;②便于将构件作为知识源添加到系统中来;
③解决问题的多方法性;
④具有可修改性和可维护性;
⑤有可重用的知识源;
⑥支持容错性和健壮性。
缺点:
①对共享数据结构,不同知识源要达成一致;
②需要同步机制、加锁机制来保障数据的完整性和一致性,增大了系统设计的复杂度;
③测试困难;
④缺少对并行机的支持,效率低;
⑤开发成本高。
虚拟机风格
常用于构造解释器和专家系统以规则为中心的虚拟机系统适合于实现专家系统
主程序-子程序架构风格
主程序-子程序架构风格中,所有的计算构件作为子程序协作工作,并由一个主程序顺序地调用这些子程序,构件通过共享存储区交换数据。
对象模型、动态模型和功能模型介绍
对象模型描述系统中对象的静态结构、对象之间的关系、属性和操作,主要用对象图来实现。动态模型描述与时间和操作顺序有关的系统特征,例如,激发事件、事件序列、确定事件先后关系的状态等,主要用状态图来实现。
功能模型描述一个计算如何从输入值得到输出值,它不考虑计算的次序,主要用 DFD来实现。功能模型指发生了什么,动态模型确定什么时候发生,而对象模型确定发生的客体。上述模型均可用于需求分析。
数据定义、数据分布和数据管理介绍
数据定义:数据定义要反映业务模式的本质,确保数据架构为业务需求提供全面、一致、完整的高质量数据。数据定义要划分应用系统边界,明确数据引用关系,定义应用系统间的集成接口。定义数据模型主要包括:数据概念模型、数据逻辑模型、数据物理模型和数据标准。
数据分布:数据分布是数据系统分布的基础。包含数据业务、数据分析和数据存储。数据业务是分析数据在业务各环节的创建、引用、修改或删除的关系。数据分析是在单一应用系统中的分析数据结构与应用系统各功能间的引用关系,分析数据在多个系统间的引用关系。数据存储包含分析数据集中存储和数据分布存储两种模式,要根据需求选择数据分布策略。
数据管理:数据管理是要制定贯穿数据生命周期的各项管理制度,包括:数据模型与数据标准管理,数据分布管理,数据质量管理和数据安全管理等制度。确定数据管理组织或岗位。
常见的反规范技术
常见的反规范技术有增加冗余列、增加派生列、重新组表和分割表。
(1)增加冗余列:增加冗余列是指在多个表中具有相同的列,它常用来在查询时避免连接操作。
(2)增加派生列:指增加的列可以通过表中其他数据计算生成。它的作用是在查询时减少计算量,从而加快查询速度。
(3)重新组表:指如果许多用户需要查看两个表连接出来的结果数据,则把这两个表重新组成一个表来减少连接而提高性能。
(4)表分割有水平分割、垂直分割两种。
水平分割表,按记录进行分割,把数据放到多个独立的表中,主要用于表数据规模很大、表中数据相对独立或数据需要存放到多个介质上时使用。
垂直分割表,对表进行分割,将主键与部分列放到一个表中,主键与其它列放到另一个表中,在查询时减少 I/0 次数。
解决数据不一致性问题的三种常见方法
解决数据不一致性问题的三种常见方法,有批处理维护、应用逻辑和触发器
(1)批处理维护:通过定期运行一批处理作业或存储过程对数据库进行修改,适用于对实时性要求不高的情况。
(2)应用逻辑:在同一事务中对所有涉及的表进行增、删、改操作。同一逻辑必须在所有的应用中使用和维护,容易遗漏,特别是在需求变化时,不易于维护。
(3)触发器:对数据的任何修改立即触发对数据库某些列的相应修改。触发器实时性好,也易于维护。
Redis 和 MySQL 数据实时同步方案
①引用 Mysql 的事务,因为事务有一致性保证,事务提交成功后再更新缓存
②在缓存里面引用一些访问控制位,数据库数据变化后,同步变更对应的访问控制位,然后从缓存查询时,率先判断该访问控制位,有变化就从数据库查,无变化直接从缓存返回数据
③三是通过数据库中间件产品保证缓存和数据库数据实时同步
基于家庭网关的传统智能家居管理系统和基于云平台的智能家居管理系统在网关管理、数据处理和系统性能等方面的特点
在网关管理方面,基于云平台的智能家居管理系统可以将分散的智能家居网关数据集中起来,实现对智能家居网关的远程高效管理。
在数据处理方面,云端服务器对智能家居网数据进行备份存储,当家庭网关由于故障等原因导致数据丢失时,可以通过云端管理系统对网关数据进行恢复,从而提高数据的容灾性。在系统性能方面,基于云服务平台的智能家居管理系统将数据信息存储在云端,减少了数据请求时间,提高了通信效率
TCP和UDP的描述
TCP 在 IP 协议提供的不可靠数据服务的基础上,采用了重发技术,为应用程序提供了一个可靠的、面向连接的、全双工的数据传输服务。TCP 协议一般用于传输数据量比较少,且对可靠性要求高的场合。
UDP 是一种不可靠的、无连接的协议,可以保证应用程序进程间的通信,与 TCP 相比,UDP 是一种无连接的协议,它的错误检测功能要弱得多。
防止SQL注入的手段有哪些
SOL 注入攻击,就是通过把 SOL 命令插入到 Web 表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的 SQL 命令。
可以通过以下方式抵御 SQL 注入攻击∶
1、使用 PreparedStatement
2、使用存储过程
3、验证输入/过滤输入
4、专业的安全产品
逻辑数据模型设计过程包含哪些任务
逻辑模型设计也称为逻辑结构设计,其任务是将概念模型转化为某个特定的 DBMS 上的逻辑模型。设计逻辑结构时,首先为概念模型选定一个合适的逻辑模型(例如,关系模型、网状模型或层次模型),然后将其转化为由特定 DBMS 支持的逻辑模型,最后对逻辑模型进行优化。逻辑设计的目的是将概念设计阶段设计好的 E-R 图转换为与选用的具体机器上的DBMS 所支持的数据模型相符合的逻辑结构。
超类实体 描述
某个实体类型中所有实体同时也是另一个实体类型中的实体,此时称前一实体为子类实体,后一实体为超类实体。
派生列的定义
实体的某个属性可以从其他属性或其他数据推导出来,那么这个属性就是派生属性
从描述语言、非功能性需求描述、需求和架构的一致性等三个方面,说明软件需求到架构的映射存在哪些难点
存在的难点有:
① 描述语言方面,需求由于更加贴近用户,其所用的描述语言可能会不够正规和标准,可能存在语义含糊不清、甚至歧义等情况;而软件架构所用的描述语言需要正规和标准,不允许存在含糊、歧义等情况。
② 非功能性需求描述方面,需求阶段可能不太关注,或者描述的比较笼统;而架构阶段,则需要明确量化。
③ 需求和架构的一致性方面,需求与架构无法做到完全的一致和一一映射,例如某个需求在架构上是需要通过多种技术来实现,简言之,架构提供的能力是大于需求的。
说明在可移植性上,应用程序的紧耦合和封装问题的主要表现分别是什么
紧耦合主要表现为,一个模块高度依赖于另一个模块,当修改前者时,必须同时需要修改后者。解决方案为:为了提高系统的修改性和可移植性,应避免紧耦合,而应采用松耦合方式。
封装主要表现为:把业务逻辑封装在本模块中,不允许外部模块直接访问本模块的内部信息。解决方案为:模块设计尽量采用封装,外部模块只能通过该模块提供的接口予以调用。
常见的redis数据类型以及使用场景
redis 支持丰富的数据类型如下,其中,前 5 种常见,后 4 种为新版本增加。
string:最基本的数据类型,二进制安全的字符串,可以包含任何数据(图片
或序列化对象),最大 512M。应用场景:缓存、计数器、共享用户 session、分布式锁、分布式系统的全局序列号等;
list:按照添加顺序保持顺序的字符串列表,应用场景:栈、队列、阻塞队列、最新列表等;
set:无序的字符串集合,不存在重复的元素,应用场景:用户标签、好友/关
注/粉丝/感兴趣的人集合、随机展示、黑/白名单、抽奖小程序等;
sorted set:已排序的字符串集合,不允许重复,应用场景:标签、共同好友/
喜好、统计网站的独立 IP、统计点赞/取消点赞、排行榜;
hash:key-value 对的一种集合,特别适合用于存储对象,应用场景:存储对
象、电商购物车等;
bitmap:更细化的一种操作,以 bit 为单位;
hyperloglog:基于概率的数据结构。 为 V2.8.9 新增;
geo:地理位置信息储存起来, 并对这些信息进行操作,为#V3.2 新增;
stream:流,相当于消息队列的 topic,为 V5.0
redis RDB 与 AOF 相比较
RDB 与 AOF 相比较,具备下述特点:
(1)磁盘更新频率:RDB 更新频率比 AOF 低。
(2)数据安全:AOF 可以保证数据不丢失,比 RDB 更安全。
(3)数据一致性:RDB 间隔一段时间存储,可能发生数据丢失和不一致;AOF 通过 append模式写文件,即使发生服务器宕机,也可通过 redis-check-aof 工具解决数据一致性问题。
(4)重启性能: RDB 比 AOF 更高。
(5)数据文件大小:RDB 文件比 AOF 小
redis内存策略失效的场景,可使用哪三种内存淘汰机制
有两种场景:
①不管定期删除还是惰性删除,都是一种不完全精确的删除策略,始终还是会存在已经过期的 key 无法被删除的场景;
②内存被挤满了;
redis 内存淘汰机制:
volatile-lru,针对设置了过期时间的 key,使用 lru(Least Recently Used,最近很少使用)算法进行淘汰。
allkeys-lru,针对所有 key 使用 lru 算法进行淘汰。
volatile-lfu,针对设置了过期时间的 key,使用 lfu(Least Frequently Used,最不经常使用)算法进行淘汰。
allkeys-lfu,针对所有 key 使用 lfu 算法进行淘汰。
volatile-random,从所有设置了过期时间的 key 中使用随机淘汰的方式进行淘
汰。
allkeys-random,针对所有的 key 使用随机淘汰机制进行淘汰。
volatile-ttl,针对设置了过期时间的 key,越早过期的越先被淘汰。
noeviction,不会淘汰任何数据,当使用的内存空间超过 maxmemory 值时,再有写请求来时返回错误
采用统一的标准的数据访问机制优点
标准的数据访问机制提供了不同标准间的数据访问机制,它屏蔽了不同通信协议之间的差异,为上层应用程序提供统一的访问接口,可以容易地实现应用程序对不同总线协议设备的互操作,使得从低层的开发中脱离出来。它独立于平台,确保来自多个厂商的设备之间信息的无缝传输,具有语言无关性、代码重用性、易于集成性等优点。当硬件升级或修改时只需改动硬件接口部分即可,不会影响上层应用程序
需求属性有哪些
在文档中考虑和明确如下属性:创建需求的时间、需求的版本号、创建需求的作者、负责认可该软件需求的人员、需求状态、需求的原因和根据、需求涉及的子系统、需求涉及的产品版本号、使用的验证方法或者接受的测试标准、产品的优先级或者重要程度、需求的稳定性
构件和原子构件区别
构件是一组通常需要同时部署的原子构件。 构件和原子构件之间的区别在于,大多数原子构件永远都不会被单独部署,尽管它们可以被单独部署。相反,大多数原子构件都属于一个构件家族,一次部署往往涉及整个家族。
一个原子构件是一个模块和一组资源。
原子构件是部署、版本控制和替换的基本单位。原子构件通常成组地部署,但是它也能够被单独部署。一个模块是不带单独资源的原子构件(在这个严格定义下,Java 包不是模块——在 Java 中部署的原子单元是类文件。一个单独的包被编译成多个单独的类文件——每个公共类都有一个)。
模块是一组类和可能的非面向对象的结构体,比如过程或者函数。
在面向对象设计的原则
单一职责原则:设计目的单一的类。
开放-封闭原则:对扩展开放,对修改封闭。
里氏(Liskov)替换原则:子类可以替换父类。
依赖倒置原则:要依赖于抽象,而不是具体实现;针对接口编程,不要针对实现编程。
接口隔离原则:使用多个专门的接口比使用单一的总接口要好。
组合重用原则:要尽量使用组合,而不是继承关系达到重用目的。
迪米特(Demeter)原则(最少知识法则):一个对象应当对其他对象有尽可能少的了解。
分层架构最常见的四层架构
表现层:用户界面、负责视觉和用户互动
业务层:实现业务逻辑
持久层:提供数据,SQL语句就放在这一层
数据库:保存数据
事件驱动架构由哪四部分组成
事件队列:接收事件的入口
分发器:将不通的事件分发到不同的业务逻辑单元
事件通道:分发器与处理器之间的联系渠道
事件处理器:实现业务逻辑,处理完成后会发出事件,触发下一步操作
云架构虚拟中间件由哪四部分组成
消息中间件:管理用户请求和会话控制,当一个请求进来以后,它决定分配给哪一个处理单元。
数据中间件:将数据复制到每一个处理单元,即数据同步
处理中间件:如果一个请求涉及不同类型的处理单元,该中间件负责协调处理单元
部署中间件:负责处理单元的启动和关闭,监控负载和响应时间,当负载增加,重新启动处理单元,负载减少,就关闭处理单元
软件架构的模型分为4种
结构模型、框架模型、动态模型和过程模型
拒绝服务攻击的防御方法有
1、加强对数据包的特征识别
2、设置防火墙监视本地主机端口的使用情况
3、对通信数据量进行统计也可获得有关攻击系统的位置和数量信息
4、尽可能的修正已经发现的问题和系统漏洞
根据数据流图的含义,请说明数据流图和系统流程图之间有哪些方面的区别。
数据流图(Data Flow Diagram,DFD)和系统流程图(System Flowchart)都是用来表示系统内部操作和数据流动的图形工具,但它们在目的、表达方式和使用场景上存在一些区别:
目的不同:
数据流图:主要用来表示数据在系统中的流动路径,强调的是数据的输入、处理和输出。它更关注数据的流动和数据如何被处理,而不是处理的详细步骤。
系统流程图:用来表示系统中的操作顺序,包括处理步骤、决策点和可能的分支。它更侧重于系统的控制流程和逻辑顺序。
表达方式不同:
数据流图:使用特定的符号来表示数据流(箭头)、处理过程(圆角矩形)、数据存储(双线矩形)和外部实体(方形)。它通常有层次结构,从顶层的上下文图开始,逐步细化到更低层次的图。
系统流程图:使用流程图符号,如矩形表示处理步骤,菱形表示决策点,箭头表示流程方向。它通常是一个线性或分支结构,显示了操作的顺序和可能的路径。
使用场景不同:
数据流图:适用于需求分析阶段,帮助分析师理解系统的数据需求和数据如何在整个系统中流动。它也可以用来设计数据库和信息系统的架构。
系统流程图:适用于系统设计和编程阶段,帮助开发者理解系统的逻辑流程和控制结构。它常用于描述算法、工作流程和业务流程。
细节程度不同:
数据流图:通常不包含具体的数据元素和处理细节,而是以更抽象的方式表示数据的流动和处理。
系统流程图:可以包含具体的操作步骤、条件判断和处理逻辑,因此通常包含更多的细节。
参与者视角不同:
数据流图:更多地从数据的角度出发,关注数据的来源、去向和如何被处理。
系统流程图:更多地从操作的角度出发,关注操作的执行顺序和条件。
维护和更新:
数据流图:在系统需求变更时,可能需要对数据流图进行较大的调整,因为数据的流动和处理方式可能发生变化。
系统流程图:在系统逻辑或控制流程变更时,可能需要对流程图进行更新,以反映新的操作顺序和决策点。
总的来说,数据流图和系统流程图都是描述系统的重要工具,但它们关注的重点不同,因此在实际应用中需要根据具体情况选择合适的图形表示方法。
CPS 的定义
信息物理系统作为计算进程和物理进程的统一体,是集成计算、通信与控制于一体的下一代智能系统,通过人机交互接口实现和物理进程的交互,使用网络化空间以远程的、可靠的、实时的、安全的、协作的方式操控一个物理实体。
感知层主要是由传感器、控制器和采集器等设备组成,主要是通过传感器获取环境的信息数据,定时发送给服务器,并接收服务器处理结果数据后进行相应的控制器变化;网络层是连接信息世界和物理世界的桥梁,主要实现数据传输,为系统提供实时的网络服务,保证网络分组的实时可靠;控制层根据感知层的认知结果,根据物理设备传回来的数据进行相应的分析,将分析结果通过客户端以可视化的界面呈现给客户。
CPS 系统会存在哪三类安全威胁,并对每类安全威胁至少举出两个例子说明
1、感知层威胁
信息窃听:通过搭线或电磁泄漏造成数据隐私泄露;
感知破坏:未经授权对感知层信息篡改、增删或破坏。
2、网络层威胁
拒绝服务:发送大量请求迫使服务器停止接受新请求;
选择性转发:恶意节点接收数据后有选择性的转发,破坏数据完整性。
3、控制层威胁
非授权访问:未经授权情况下不合理进入系统执行恶意操作;
恶意代码:注入对系统造成不良影响的恶意代码,对系统造成破坏
BMTS 的消息通信网络主要特征
能适配不同的传输介质,以及适配不同的协议,屏蔽不同协议之间的差异,简化通信过程降低系统复杂度。
事件触发消息:以事件作为触发方式,事件发生便触发相应消息。
速率约束消息:传输速率固定的消息。
时间触发消息:以时间作为触发方式,到达时间点便触发相应消息。
具有时间触发消息能力的网络总线:航空电子全双工交换式以太网(AFDX),时间触发以太网(TTE)。
请给出 Redis 分布式存储的 2 种常见方案和 Redis 集群切片的几种常见方式。
Redis 分布式存储的 2 种常见方案:主从方案、Cluster 方案。
Redis 集群切片的几种常见方式:
1、客户端分片:在客户端通过 key 的 hash 值对应到不同服务器。
2、对数据根据 key 散列到不同的 slot 上,不同 slot 对应不同的服务器。
Redis 与原有关系数据库的数据同步方案
同步方案:读取数据时,先读取 Redis 中的数据,如果 Redis 没有,则从原数据库中读取,并同步更新 Redis 中的数据。写回时,写入到原数据库中,并同步更新到 Redis 中。
针对银行信息系统的数据交互安全性需求,列举 3 种可实现信息系统安全保障的措施。
1、釆用挑战/应答的认证机制,防止重放攻击。
2、釆用加密技术保证信息在网络传输过程的安全。
3、釆用数字签名技术保证信息传输过程的完整性和不可否认。
函数依赖推理规则
函数依赖推理规则。
函数依赖的公理系统(即 Armstrong 公理系统)为:设关系模式 R(U,F),其中 U 为属
性集,F 是 U 上的一组函数依赖,那么有如下推理规则:
A1 自反律:若 Y ∈ U,则 X→Y 为 F 所蕴涵。
A2 增广律:若 X→Y 为 F 所蕴涵,且 Z U,则 XZ→YZ 为 F 所蕴涵。
A3 传递律:若 X→Y,Y→Z 为 F 所蕴涵,则 X→Z 为 F 所蕴涵。
根据上述三条推理规则又可推出下述三条推理规则:
A4 合并规则:若 X→Y,X→Z,则 X→YZ 为 F 所蕴涵。
A5 伪传递率:若 X→Y,WY→Z,则 XW→Z 为 F 所蕴涵。
A6 分解规则:若 X→Y,Z Y,则 X→Z 为 F 所蕴涵。
基于构件的软件开发中,已有的构件分类方法可以归纳为三大类
基于构件的软件开发中,已有的构件分类方法可以归纳为三大类∶
(1)关键字分类法
根据领域分析的结果将应用领域的概念按照从抽象到具体的顺序逐次分解为树形或有向无回路图结构。
(2)刻面分类法
利用 Facet(刻面)描述构件执行的功能、被操作的数据、构件应用的语境或任意其他特征。
(3)超文本方法
基于全文检索技术,使得检索者在阅读文档过程中可以按照人类的联想思维方式任意跳转到包含相关概念或构件的文档。
软件性能测试类型包括负载测试、强度测试和容量测试
软件性能测试类型包括负载测试、强度测试和容量测试等。其中:
(1)负载测试用于测试超负荷环境中程序是否能够承担;
(2)强度测试是在系统资源特别低的情况下考查软件系统极限运行情况;
(3)容量测试可用于测试系统同时处理的在线最大用户数量。
Builder 模式(建造者模式)和桥接模式(Bridge模式)区别
Builder 模式关注于如何逐步构建一个复杂的对象,它允许系统分步骤创建复杂对象,而不需要知道内部构建细节。
桥接模式关注于如何将抽象和实现解耦,使得抽象和实现可以独立地变化和扩展。简而言之,Builder 模式用于创建复杂对象的构建过程,而桥接模式用于将抽象与实现分离,以便它们可以独立变化。
RUP(Rational Unified Process)软件开发生命周期的 9 个核心工作流
RUP(Rational Unified Process)软件开发生命周期是一个二维的软件开发模型,RUP 的 9 个核心工作流有:
● 业务建模∶理解待开发系统所在的机构及其商业运作,确保所有参与人员对待开发系统所在的机构有共同的认识,评估待开发系统对所在机构的影响。
● 需求∶定义系统功能及用户界面,使客户知道系统的功能,使开发人员理解系统的需求,为项目预算及计划提供基础。
● 分析与设计:把需求分析的结果转化为分析与设计模型。
● 实现∶把设计模型转换为实现结果,对开发的代码做单元测试,将不同实现人员开发的模块集成为可执行系统。
● 测试∶检查各子系统的交互与集成,验证所有需求是否均被正确实现,对发现的软件质量上的缺陷进行归档,对软件质量提出改进建议。
● 部署∶打包、分发、安装软件,升级旧系统;培训用户及销售人员,并提供技术支持。
● 配置与变更管理:跟踪并维护系统开发过程中产生的所有制品的完整性和一致性。
● 项目管理∶为软件开发项目提供计划、人员分配、执行、监控等方面的指导,为风险管理提供框架。
● 环境∶为软件开发机构提供软件开发环境,即提供过程管理和工具的支持。
CMMI介绍
CMMI 评估分为五个等级,自低向高分别为一、二、三、四、五级,分别对应初始级、管理级、定义级、定量管理级和优化级。
初始级(Initial):软件过程是无序的,有时甚至是混乱的,对过程几乎没有定义,成功取决于个人努力。管理是反应式的。
管理级(Managed):建立了基本的项目管理过程来跟踪费用、进度和功能特性。制定了必要的过程纪律,能重复早先类似应用项目取得的成功经验。
定义级(Defined):已将软件管理和工程两方面的过程文档化、标准化,并综合成该组织的标准软件过程。所有项目均使用经批准、剪裁的标准软件过程来开发和维护软件,软件产品的生产在整个软件过程是可见的。
定量管理级(Q-Managed):分析对软件过程和产品质量的详细度量数据,对软件过程和产品都有定量的理解与控制。管理有一个作出结论的客观依据,管理能够在定量的范围内预测性能。
优化级(Optimizing):过程的量化反馈和先进的新思想、新技术促使过程持续不断改进。
在 CMMI 的已定义级中,开发过程,包括技术工作和管理工作,均已实现标准化、文档化。建立了完善的培训制度和专家评审制度,全部技术活动和管理活动均可控制,对项目进行中的过程、岗位和职责均有共同的理解。
需求管理的主要活动
需求管理包括变更控制、版本控制、需求跟踪、需求状态跟踪。
UML 图分类
UML 图分为结构图和行为图。
●结构图分为类图、轮廓图、组件图、组合结构图、对象图、部署图、包图。
●行为图又分活动图、用例图、状态机图和交互图。
●交互图又分为序列图、时序图、通讯图、交互概览图。
1995 年 Kruchten 提出了著名的“4+1”视图,用来描述软件系统的架构
“4+1”视图中的“4”,指的是:逻辑视图、开发视图、进程视图、物理视图,“1”
指的是场景视图。
场景视图又称为用例视图,显示外部参与者观察到的系统功能。
逻辑视图从系统的静态结构和动态行为角度显示系统内部如何实现系统的功能。
开发视图又称为实现视图,显示的是源代码以及实际执行代码的组织结构。
处理视图又称为进程视图,显示程序执行时并发的状态。
物理视图展示软件到硬件的映射。
类可以分为三种类型
类封装了信息和行为,是面向对象的重要组成部分。在面向对象设计中,类可以分为三种类型:实体类、边界类和控制类。
①实体类映射需求中的每个实体,实体类保存需要存储在永久存储体中的信息。实体类是对用户来说最有意义的类,通常采用业务领域术语命名,一般来说是一个名词,在用例模型向领域模型转化中,一个参与者一般对应于实体类。
②控制类是用于控制用例工作的类,一般是由动宾结构的短语(“动词+名词”或“名词+动词”)转化来的名词。控制类用于对一个或几个用例所特有的控制行为进行建模,控制对象通常控制其他对象,因此它们的行为具有协调性。
③边界类用于封装在用例内、外流动的信息或数据流。边界类是一种用于对系统外部环境与其内部运作之间的交互进行建模的类。边界对象将系统与其外部环境的变更隔离开,使这些变更不会对系统其他部分造成影响。
装饰器模式和外观模式区别
访问者模式(Visitor Pattern)和观察者模式(Observer Pattern)都是设计模式中的行为型模式,但它们在目的、结构和应用场景上有所不同。下面是这两种模式的主要区别:
目的:
访问者模式:主要用于在不修改类结构的情况下,对对象结构中的元素进行操作。它允许在运行时将新的操作加入到对象结构中。
观察者模式:主要用于实现对象间的一对多依赖关系,当一个对象状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。
结构:
访问者模式:包含访问者(Visitor)、具体元素(ConcreteElement)、对象结构(ObjectStructure)和元素(Element)等角色。访问者定义了对每种元素的访问操作,元素角色声明了接受访问者的方法。
观察者模式:包含主题(Subject)、观察者(Observer)、具体主题(ConcreteSubject)和具体观察者(ConcreteObserver)等角色。主题维护观察者列表,当状态改变时通知所有观察者。
应用场景:
访问者模式:适用于需要对一个对象结构中的对象进行多种操作,而这些操作难以在不修改对象结构的情况下实现。
观察者模式:适用于需要建立一个对象之间的发布/订阅关系,使得当一个对象改变状态时,所有依赖于它的对象都会得到通知。
操作方式:
访问者模式:操作是在访问者中定义的,访问者可以对元素进行操作,而不需要修改元素的类。
观察者模式:操作是由观察者自身定义的,当主题状态改变时,观察者会根据需要执行相应的操作。
灵活性:
访问者模式:提供了很好的灵活性,可以在不修改元素类的情况下添加新的操作。
观察者模式:提供了在运行时动态添加或删除观察者的能力,从而动态地改变对象之间的依赖关系。
性能:
访问者模式:由于需要遍历对象结构,可能会有一定的性能开销。
观察者模式:如果观察者数量很多,每次状态改变都需要通知所有观察者,也可能带来性能问题。
MVC 架构中包含哪三种元素,它们的作用分别是什么
MVC 架构包含:视图、控制器、模型
视图(View):视图是用户看到并与之交互的界面。视图向用户显示相关的数据,并能接收用户的输入数据,但是它并不进行任何实际的业务处理。
控制器(Controller):控制器接受用户的输入并调用模型和视图去完成用户的需求。该部分是用户界面与 Model 的接口。一方面它解释来自于视图的输入,将其解释成为系统能够理解的对象,同时它也识别用户动作,并将其解释为对模型特定方法的调用;另一方面,它处理来自于模型的事件和模型逻辑执行的结果,调用适当的视图为用户提供反馈。
模型(Model):模型是应用程序的主体部分。模型表示业务数据和业务逻辑。一个模型能为多个视图提供数据。
EJB 构件中的 Bean(构件)分为哪三种类型
EJB 中的 Bean 分三种类型:Session Bean(会话 Bean)、Entity Bean(实体 Bean) 和Message-Driven Bean(消息驱动 Bean)。
Session Bean 的职责是:维护一个短暂的会话。
Entity Bean 的职责是:维护一行持久稳固的数据。
Message-Driven Bean 的职责是:异步接受消息。
数据库程序在线访问方式和 ORM 方式的优缺点
数据库程序在线访问方式优点:
1、性能比 ORM 好
2、可以处理复杂查询语句
数据库程序在线访问方式缺点:
1、要求程序员懂 SQL 语句
2、修改与维护相对困难
ORM 优点:
1、使用 ORM 可以大大降低学习和开发成本。
2、程序员不用再写 SQL 来进行数据库操作。
3、减少程序的代码量。
4、降低由于 SQL 代码质量差而带来的影响。
ORM 缺点:
1、不太容易处理复杂查询语句。
2、性能较直接用 SQL 差。
新体系架构中增加数据访问层的原因
由于涉及到多种异构数据库平台,数据访问复杂性增加,不宜与业务逻辑混合在一起(题目中粗体标出)。数据管理变复杂之后,需要使用的代码量增加,分单独层次有利于让逻辑更清晰。业务逻辑应以相同的方式应对异构的数据库,此时需要单独的数据访问层屏蔽差异性。
数据库主从复制机制
1、提升性能
交易平台要求高并发,主从复制方式一主多从,不同的用户请求可以从不同的从数据库读取数据,提高并发度。
2、可扩展性更优
如果采用单台数据库服务器,则访问量持续增加时,数据库瓶颈暴露,且无法迅速解决问题。而主从结构可以快速增加从服务器数量,以满足需求。
3、提升可用性
一主多从,一台从服务器出现故障不影响整个系统正常工作。
4、相当于负载均衡
一主多从分担任务,相当于负载均衡。
5、提升数据安全性
系统中的数据冗余存放多份,不会因为某台机器硬件故障而导致数据丢失。
类之间的关系有哪几种类型
类之间的关系包括:关联、聚合、组合、依赖、泛化、实现(可写可不写,因为实现是接口与类之间的关系,而接口是一种特殊的类)
说明什么是实时系统,实时系统有哪些主要特性
实时系统是指向系统发出一指令后,在一个极短的时间内,系统回复结果。
实时系统的特性:
(1)时间约束性(及时性)
(2)可预测性
(3)高可靠性
(4)与外部环境的交互作用性
(5)多任务类型
(6)约束的复杂性
(7)具有短暂超载的特点
说明错误、缺陷、故障和失效的定义
软件错误:软件错误是指在软件生存期内的不希望或不可接受的人为错误,其结果是导致软件缺陷的产生。
软件缺陷:软件缺陷是存在于软件(文档、数据、程序)之中的那些不希望或不可接受的偏差。
软件故障:软件故障是指软件运行过程中出现的一种不希望或不可接受的内部状态。
软件失效:软件失效是指软件运行时产生 的一种不希望或不可接受的外部行为结果。
给出系统架构风险、敏感点和权衡点的定义
系统架构风险:架构设计中潜在的、存在问题的架构决策所带来的隐患。
系统架构敏感点:为了实现某种特定的质量属性,一个或多个构件所具有的特性。
系统架构权衡点:影响多个质量属性的特征,是多个质量属性的敏感点。
说明系统可靠性的定义及包含的 4 个子特性,并简要指出提高系统可靠
性一般采用哪些技术

可靠性(Reliability)是指产品在规定的条件下和规定的时间内完成规定功能的能力。
子特性:成熟性,容错性,易恢复性,可靠性的依从性。
提高可靠性的技术:
(1) N 版本程序设计
(2) 恢复块方法
(3) 防卫式程序设计
(4) 双机热备或集群系统
(5) 冗余设计
说明什么是数据持久层,使用数据持久层能够为项目开发带来哪些好处
数据持久层是一组软件服务,将应用程序与该程序所使用的数据源分离,为整个项目提供一个统一、安全、并发的数据持久机制。
好处:
1、程序代码重用性强,即使更换数据库,只需要更改配置文件,不必重写程序代码。
2、业务逻辑代码可读性强,在代码中不会有大量的 SQL 语言,提高程序的可读性。
3、持久化技术可以自动优化,以减少对数据库的访问量,提高程序运行效率。
4、简化开发工作,让开发人员更关注于业务逻辑的开发。
5、通过对象/关系映射向业务逻辑提供面向对象的数据访问。
数据持久层Hibernate和MyBatis框架
1、项目组应选 Hibernate 框架
2、选择该技术的原因是:
(1)从移植的角度来看使用 Hibernate 更容易移植到其它数据库平台。
Hibernate 与具体数据库的关联只需在 XML 文件中配置即可,所有的 HQL 语句与具体使用的数据库无关,移植性很好。MyBatis 项目中所有的 SQL 语句都是依赖所用的数据库的,所以不同数据库类型的支持不好。
(2)使用 Hibernate 能降低或者消除 SQL 语句开发工作量,Hibernate 提供了方法完成持久层操作,程序员不需要对 SQL 的熟练掌握,便可完成任务。
(3)Hibernate 提供了对象状态管理的功能,使开发者不再需要理会底层数据库系统的细节,而 MyBatis 在这一块没有文档说明,用户需要对对象自己进行详细的管理
说明数据流图(Data Flow Diagram)的基本元素及其作用
数据流:数据流是数据在系统内传播的路径,因此由一组成分固定的数据组成。
外部实体:代表系统之外的实体,可以是人、物或其他软件系统。
加工(处理):加工是对数据进行处理的单元,它接收一定的数据输入,对其进行处理,并产生输出。
数据存储:表示信息的静态存储,可以是文件、文件的一部分、数据库的元素等。
说明获取构件的方法有哪几种?开发构件通常采用哪几种策略?并列举出两种主流构件标准
获取构件的方法包括:
(1)从现有构件中获得符合要求的构件,直接使用或作适应性(flexibility)修改,得到可重用的构件;
(2)通过遗留工程(legacy engineering),将具有潜在重用价值的构件提取出来,得到可重用的构件;
(3)从市场上购买现成的商业构件,即 COTS(Commercial Off-The-Shell)构件;
(4)开发新的符合要求的构件。
开发构件的策略:
分区:指的是将问题情景的空间分割成几乎可以独立研究的部分;
抽象:是对给定实践内执行指定计算的软/硬件单元的一种抽象;
分割:是将结构引入构件的行为,支持对行为性质进行时序推理。
主流构件标准包括:三个主要流派为 OMG 的 COBRA(分布计算技术)、Microsoft 的COM/DCOM/COM+和 Sun 的 EJB/J2EE。
基于 DNS 的负载均衡机制和基于反向代理的负载均衡机制的基本原理
基于 DNS 的负载均衡是在 DNS 服务器中为同一个主机名配置多个 IP 地址,在应答DNS 查询时,DNS 服务器对每个查询将以 DNS 文件中主机记录的 IP 地址按顺序返回不同的解析结果,将客户端的访问引导到不同的节点上去,使得不同的客户端访问不同的节点,从而达到负载均衡的目的。
反向代理负载均衡。反向代理负载均衡是将来自 Internet 上的连接请求以反向代理的方式动态地转发给内部网络上的多个节点进行处理,从而达到负载均衡的目的。
请结合已知信息从缓存架构、缓存有效性及缓存数据类型等方面分析使用 Memcached代替数据库查询缓存的原因
Memcached 相比数据库查询缓存:
缓存架构:数据库缓存只是将查询结果进行缓存,适用面很窄,而 Memcached 是将数据库中的表进行缓存,对于在这些表之上的操作均可适用。
缓存有效性:Memcached 缓存时效较长,只要未更新,就属于有效状态,而数据查询缓存时效较短(具体时效与配置有关),所以在此方面 Memcached 有优势。
缓存数据类型:Memcached 缓存数据为表级,而数据库查询缓存为元组级。
对 ESB 的定义进行描述
ESB 是传统中间件技术与 XML、Web 服务等技术结合的产物,主要支持异构系统集成。
ESB 基于内容的路由和过滤,具备复杂数据的传输能力,并可以提供一系列的标准接口。
ESB 的主要功能:
(1)服务位置透明性;
(2)传输协议转换;
(3)消息格式转换;
(4)消息路由;
(5)消息增强;
(6)安全性;
(7)监控与管理
项目计划中应包括哪些内容
(1)项目背景
(2)项目经理、项目经理的主管领导、客户方联系人、客户方的主管领导,项目领导小组(项目管理团队)和项目实施小组人员
(3)项目的总体技术解决方案
(4)所选择的项目管理过程及执行水平
(5)对这些过程的工具、技术和输入输出的描述
(6)选择的项目的生命周期和相关的项目阶段
(7)项目最终目标和阶段性目标
(8)进度计划
(9)项目预算
(10)变更流程和变更控制委员会
(11)对于内容、范围和时间的关键管理评审,以便于确定悬留问题和未决决策
公钥体系的机制
(1)基于口令的认证方式实现简单,但由于口令复杂度及管理方面的原因,易受到认证攻击;而在基于公钥体系的认证方式中,由于其密钥机制的复杂性,同时在认证过程中私钥不在网络上传输,因此可以有效防止认证攻击,与基于口令的认证方式相比更为安全。
(2)按照需求描述,在完成用户身份鉴别后,需依据用户身份进一步对业务数据进行安全保护,且受保护数据中包含用户私有的终端机数据文件,在基于口令的认证方式中,用户口令为用户和认证服务器共享,没有用户独有的直接秘密信息,而在基于公钥的认证方式中,可基于用户私钥对私有数据进行加密保护,实现更加简便。
(3)基于公钥体系的认证方式协议和计算更加复杂,因此其计算复杂度要高于基于口令的认证方式,但业务环境的总用户数据在 100 人以内,用户规模不大,运行环境又为局域网环境,因此基于公钥体系的认证方式可以满足平台效率要求。
数据库管理系统提供的基本数据加密方式主要包括加解密 API 和透明加密两种
目前数据库管理系统提供的基本数据加密支持主要有以下两种:
(1)加解密 API:数据库管理系统提供可在 SQL 语句中调用的加解密 API,应用可以利用这些 API 构建自己的基础架构,对数据进行加密保护。
(2)透明加密:安全管理员为数据库敏感字段选择加密方式及密钥强度,应用访问受保护数据时只需使用口令打开或关闭密钥表,对数据的加密和解密由数据库管理系统自动完成。
加解密 API 方式的灵活性强,但构建和管理复杂;而透明加密方式管理简单,应用程序负担轻,但灵活性较差。用户要求尽可能减少安全管理与应用程序的负担,因此应选择透明加密方式。
NoSQL 数据库有哪些特点
NoSQL 数据库支持高并发数据访问,性能较高。
NoSQL 数据库的数据存储结构松散,能够灵活支持多种类型的数据格式。
NoSQL 数据库能够支持海量数据的存储,且易于横向扩展。
NoSQL 数据库基于分布式数据存储,不存在单点故障和性能瓶颈,系统
可用性高。
NoSQL 数据库时可能存在的问题有:
(1)NoSQL 数据库的现有产品不够成熟,大多数产品处于初创期。
(2)NoSQL 数据库并未形成一定的标准,产品种类繁多,缺乏官方支持。
(3)NoSQL 数据库不提供对 SQL 的支持,学习和应用迁移成本较高。
(4)NoSQL 数据库支持的特性不够丰富,现有产品提供的功能比较有限。
设计模式按照其应用模式可以分为三类:创建型、结构型和行为型,说
明三者的作用。

创建型模式主要用于创建对象,为设计类实例化新对象提供指南。
结构型模式主要用于处理类或对象的组合,对类如何设计以形成更大的结构提供指南。
行为型模式主要用于描述类或对象的交互以及职责的分配,对类之间交互以及分配责任的方式提供指南。
解释什么是软件架构风格
软件架构风格是指描述特定软件系统组织方式的惯用模式。组织方式描述了系统的组成构件和这些构件的组织方式,惯用模式则反映众多系统共有的结构和语义。
说明什么是数据库建模中的反规范化技术,指出采用反规范化技术
能获得哪些益处,可能带来哪些问题,

规范化设计后,数据库设计者希望牺牲部分规范化来提高性能,这种从规范化设计的回退方法称为反规范化技术。
采用反规范化技术的益处:降低连接操作的需求、降低外码和索引的数目,还可能减少表的数目,能够提高查询效率。
可能带来的问题:数据的重复存储,浪费了磁盘空间;可能出现数据的完整性问题,为了保障数据的一致性,增加了数据维护的复杂性,会降低修改速度。
解释什么是REST,并指出在 REST 中将哪三种关注点进行分离
REST 从资源的角度来定义整个网络系统结构,分布在各处的资源由统一资源标识符(URI)确定,客户端应用程序通过 URI 获取资源的表现,并通过获得资源表现使得其状态发生改变。
REST 中将资源、资源的表现和获取资源的动作三者进行分离
分别针对采用对称加密策略与公钥加密策略,说明如何利用加密技
术为在网络中传输的数据提供机密性与完整性保障

1、对称加密策略
(1)机密性:发送者利用对称密钥对要发送的数据进行加密,只有拥有正确相同密钥的接收者才能将数据正确解密,从而提供机密性。
(2)完整性:发送者根据要发送的数据生成消息认证码(或消息摘要),利用对称密钥对消息认证码进行加密并附加到数据上发送;接收者使用相同密钥将对方发送的消息认证码解密,并根据接收到的数据重新生成消息认证码,比较两个认证码是否相同以验证数据的完整性。
2、公钥加密策略
(1)机密性:发送者利用接收者的公钥对要发送的数据进行加密,只有拥有对应私钥的接收者才能将数据正确解密,从而提供机密性。
(2)完整性:发送者根据要发送的数据生成消息认证码(或消息摘要),利用自己的私钥对消息认证码进行加密并附加到数据上发送;接收者利用对方的公钥将对方发送的消息认证码解密,并根据接收到的数据重新生成消息认证码,比较两个认证码是否相同以验证数据的完整性。
集中式数据架构和的分布式数据架构的思想
1)集中式数据架构是由一个处理器、与它相关联的数据存储设备以及其他
外围设备组成,它被物理地定义到单个位置。系统提供数据处理能力,用户可以在同样的站点上操作,也可以在地理位置隔开的其他站点上通过远程终端来操作。系统及其数据管理被某个或中心站点集中控制。
2)分布式数据架构使用多个计算机系统上的多个局部数据库系统构成,数
据可以在多个不同的局部数据库中进行传送,由不同的数据库管理系统软件进行管理,运行在多种不同的计算机上,支持多种不同的操作系统。这些机器位于(或分布在)不同的地理位置并通过多种通信网络连接在一起。企业数据可以分布在不同的计算机上,一个应用程序可以操作位于不同地理位置的机器上的数据。
在系统可靠性中,可靠度和失效率是两个非常关键的指标,请分别解释其含义
可靠度就是系统在规定的条件下、规定的时间内不发生失效的概率。
失效率又称风险函数,也可以称为条件失效强度,是指运行至此刻系统未出现失效的情况下,单位时间系统出现失效的概率。
软件质量属性是影响软件架构设计的重要因素。请用 200 字以内的文字列举六种不同的软件质量属性名称,并解释其含义
这些质量属性的具体含义是:
(1)性能是指系统的响应能力,即要经过多长时间才能对某个事件做出响应,或者在某段时间内系统所能处理事件的个数。
(2)可用性是系统能够正常运行的时间比例。
(3)可靠性是指软件系统在应用或错误面前,在意外或错误使用的情况下维持软件系统功能特性的基本能力。
(4)健壮性是指在处理或环境中,系统能够承受压力或变更的能力。
(5)安全性是指系统向合法用户提供服务的同时能够阻止非授权用户使用的企图或拒绝服务的能力。
(6)可修改性是指能够快速地以较高的性能价格比对系统进行变更的能力。
(7)可变性是指体系结构经扩充或变更成为新体系结构的能力。
(8)易用性是衡量用户使用一个软件产品完成指定任务的难易程度。
(9)可测试性是指软件发现故障并隔离、定位其故障的能力特性,以及在一定的时间和成本前提下,进行测试设计、测试执行的能力。
(10)功能性是系统所能完成所期望工作的能力。
(11)互操作性是指系统与外界或系统与系统之间的相互作用能力。
流程图与数据流图的含义及其区别
数据流图作为一种图形化工具,用来说明业务处理过程、系统边界内所包含的功能和系统中的数据流。
流程图以图形化的方式展示应用程序从数据输入开始到获得输出为止的逻辑过程,描述处理过程的控制流。
两者的区别主要包括:
(1)数据流图中的处理过程可并行;流程图在某个时间点只能处于一个处理过程。
(2)数据流图展现系统的数据流;流程图展现系统的控制流。
(3)数据流图展现全局的处理过程,过程之间遵循不同的计时标准;流程图中处理过程遵循一致的计时标准。
(4)数据流图适用于系统分析中的逻辑建模阶段;流程图适用于系统设计中的物理建模阶段。
说明在设计高质量的数据流图时应考虑的三个原则
高质量数据流图设计时应考虑的三个原则:
(1)复杂性最小化原则。DFD 分层结构就是把信息划分为小的且相对独立的一大批子集,这样就可以单独考查每一个 DFD。如果要了解某个过程更加详的信息,可以跳转到该过程的下一层;如果要知道一个 DFD 如何与其他 DFD 相关联,可以跳转到上一层的 DFD进行考查。
(2)接口最小化原则。接口最小化是复杂性最小化的一种具体规则。在设计模式时,应使得模型中各个元素之间的接口数或连接数最小化。
(3)数据流一致性原则。一个过程和它的过程分解在数据流内容中是否有差别?是否存在有数据流出但没有相应的数据流入的加工?是否存在有数据流入但没有相应的数据流出的加工
面向对象和控制环路两种架构风格各自的特点
面向对象架构风格的特征是将数据表示和基本操作封装在对象中。这种模式的构件是对象,对象维护自身表示的完整性,对象之间通过消息机制进行通信,对象交互时需要知道彼此的标识,通过对象之间的协作完成计算过程。
控制环路架构风格是将过程输出的指定属性维护在一个特定的参考值(设定点)。控制环路风格包括过程变量、被控变量、输入变量、操纵变量和设定点等构件,通过收集实际和理想的过程状态信息,并能调整过程变量使得实际状态趋于理想状态。
信息系统面临的安全威胁多种多样,来自多个方面。请指出信息系统面临哪些方面的安全威胁并分别予以简要描述
信息系统面临的安全威胁来自于物理环境、通信链路、网络系统、操作系统、应用系统以及管理等多个方面。
物理安全威胁是指对系统所用设备的威胁,如自然灾害、电源故障、数据库故障和设备被盗等造成数据丢失或信息泄漏。
通信链路安全威胁是指在传输线路上安装窃听装置或对通信链路进行干扰。
网络安全威胁当前主要是指由于因特网的开放性、国际性与无安全管理性,对内部网络形成的严重安全威胁。
操作系统安全威胁指的是操作系统本身的后门或安全缺陷,如“木马”和“陷阱门”等。
应用系统安全威胁是指对于网络服务或用户业务系统安全的威胁,包括应用系统自身漏洞,也受到“木马”的威胁。
管理系统安全威胁指的是人员管理和各种安全管理制度。
认证是安全系统中不可缺少的环节,请简要描述主要的认证方式,并说明该企业应采用哪种认证方式
目前主要的认证方式有三类:
(1)用户名和口令认证:主要是通过一个客户端与服务器共知的口令(或与口令相关的数据)进行验证。根据处理形式的不同,分为验证数据的明文传送、利用单向散列函数处理验证数据、利用单向散列函数和随机数处理验证数据。
(2)使用令牌认证:该方式中,进行验证的密钥存储于令牌中,目前的令牌包括安全证书和智能卡等方式。
(3)生物识别认证:主要是根据认证者的图像、指纹、气味和声音等作为认证数据。根据该企业的业务特征,采用令牌认证较为合适。
堡垒机:多因子认证,本地认证,远程认证
基于软件系统的生命周期,可以将软件系统的质量属性分为开发期
质量属性和运行期质量属性2个部分。请把以上四个质量属性分别归类。

性能、安全性、可用性属于运行期质量属性;
可修改性属于开发期质量属性。
列举质量属性场景的6要素的概念
质量属性场景包括刺激源、刺激、环境、制品、响应、响应度量6个要素。
刺激源:某个生成该刺激的实体(人、计算机、其他任何刺激器)
刺激:指当刺激达到系统时需要考虑的条件
环境:指该刺激在某些条件内发送。
制品:某个制品被激励,可能是整个系统,也可能是系统的一部分;
响应:指在激励到达后所采取的行动;
响应度量:当响应发生时,应当能够以某种方式对其进行度量。

顺序图中的消息类型包括哪些
同步消息、异步消息、返回消息和自关联消息
1、同步消息:消息的发送者把控制传递给消息的接受者,然后停止活动,等待消息的
接受者放弃或者返回控制,用来表示同步的意义。
2、异步消息:消息发送者通过消息把信号传递给消息的接收者,然后继续自己的活动。
不等待接收者返回消息或者控制,异步消息的接收者和发送者是并发工作的。
3、返回消息:返回消息表示从过程调用返回。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值