php是最好的语言

软考高级-系统架构设计师相关 案例题知识总结

*选择题多刷题就好


*案例题主要掌握软件工程、软件架构和数据库三大主题相关题目 基本就能通过了

*案例题是一道必选题,然后剩下4选2

*把历年题目多做几次通过问题不大


一、软件工程题目


1、2015年下半年系统架构设计师考试下午真题


状态图和活动图的区别


状态图:主要用于描述一个对象在其生存期间的动态行为,表现一个对象所经历的状态序列,引起状态转移的事件(event),以及因状态转移而伴随的动作(action)。


活动图:可以用于描述系统的工作流程和并发行为。活动图其实可看作状态图的特殊形式,活动图中一个活动结束后将立即进入下一个活动(在状态图中状态的转移可能需要事件的触发)。


两者最大的区别是:状态图侧重于描述行为的结果,而活动图侧重描述行为的动作。其次活动图可描述并发行为,而状态图不能。



er图:提供了表示实体类型、属性和联系的方法,用来描述现实世界的概念模型



2、2019年下半年系统架构设计师考试下午真题 



 数据流图和系统流程图的区别

(1)数据流图中的处理过程可并行;系统流程图在某个时间点只能处于一个处理过程。

(2)数据流图展现系统的数据流:系统流程图展现系统的控制流。

(3)数据流图展现全局的处理过程,过程之间遵循不同的计时标准;系统流程图中处理过程遵循一致的计时标准。


3、2014


4、2016


5、2018


6、2012


7、2009








其他:


一、时序图(顺序图)主要侧重于对象间消息传递在时间上的先后关系, 而协作图(通信图)表达对象间的交互过程及对象间的关联关系。



二、活动图和流程图的区别


(1)活动图描述的是对象活动的顺序关系所遵循的规则,它着重表现系统的行为,而非过程;流程图着重描述处理过程

(2)流程图一般都限于顺序进程;活动图可以支持并发进程

(3)活动图面向对象;流程图面向过程


三、实体类、控制类、边界类

  实体类:映射需求中的每个实体,保存需要存储在永久存储体中的信息,如:用户、商品等

  控制类:用于控制用列工作的类,如:结算、备货

  边界类:用于封装在用例内、外流动的信息或者数据流,如:浏览器、购物车  



四、创建型、结构型、行为型

 创建型:用于创建对象,为设计类实例🌹新对象提供指南

 结构型:用户处理类或对象的组合,对类如何设计可以形成更大的结构提供指南

 行为型:用户描述类或者对象的交互以及职责的分配,对类之间的交互以及分配责任的方式提供指南




二、软件架构题目

2009 2014 2015 2017 2018 2019 2020

质量属性和属性的策略


2010

软件架构风格


2011

质量属性

架构风险、敏感点和权衡点



2012 有点难

软件架构风格


2016











其他:

1、软件架构的定义:软件架构为软件系统提供了一个结构 、 行为和属性的高级抽象,由构成系统的元素的描述 、 这些元素的相互作用 、 指导元素集成的模式及这些模式的约束组成。


2、逻辑视图:主要支持系统的功能需求,即系统提供给最终用户的服务 描述对象模型和对象之间的关系;

开发视图:主要侧重于软件模块的组织和管理;

进程视图:侧重于系统的运行特性,主要关注一些非功能性的需求,例如系统的性能和可用性。

物理视图:主要考虑如何把软件映射到硬件上,它通常要考虑到解决系统拓扑结构 、 系统安装 、 通信等问题。

场景:可以看作是那些重要系统活动的抽象,它使四个视图有机地联系起来,从某种意义上说,场景是最重要的需求抽象。


3、质量属性分为6种:可用性 、 可修改性 、 性能 、 安全性 、 可测试性 、 易用性

(1)性能是指系统的响应能力,即要经过多长时间才能对某个事件做出响应,或者在某段时间内系统所能处理事件的个数。

(2)可用性是系统能够正常运行的时间比例

(3)易用性是衡量用户使用一个软件产品完成指定任务的难易程度。。

(4)可修改性是指能够快速地以较高的性能价格比对系统进行变更的能力。

(5)可测试性是指软件发现故障并隔离、定位其故障的能力特性,以及在一定的时间和成本前提下,进行测试设计、测试执行的能力。

(6)安全性是指能给合法用户提供正常服务的同时,抵御不合法用户的能力

  其他:

   文化需求(Cultural Requirements):使用本系统的不同用户群体对系统提出的特有要求。

   操作性需求(Operational Requirements):指系统完成任务所需的操作环境要求及如何满足系统将来可能的需求变更的要求。


策略:

 性能:可以采用的架构设计策略有增加计算资源、改善资源需求(减少计算复杂度等)、资源管理(并发、数据复制等)和资源调度(先进先出队列、优先级队列等)

 安全:可以采用的架构设计策略有抵御攻击(授权、认证和限制访问等)、攻击检测(入侵检测等)、从攻击中恢复(部分可用性策略)和信息审计等

 可用性:可以采用的架构设计策略有Ping/Echo、心跳、异常和主动冗余等

 可修改性:可以采用的架构设计策略有软件模块泛化、限制模块之间通信、使用中介和延迟绑定等

 可测试性:可以采用记录/回放、将接口与实现分离、优化访问线路/接口、内部监控

 易用性:可以采用支持用户的主动操作、将用户接口和其余部分分离开


4、软件架构风格:软件架构风格是描述特定软件系统组织方式的惯用模式。组织方式描述了系统的组成构件和这些构件的组织方式,惯用模式则反映众多系统共有的结构和语义。


5、(1)数据流风格:批处理序列;管道/过滤器。  数据驱动    数据与处理紧耦合,以接口适配方式进行扩展

(2)调用/返回风格(显式调用):主程序/子程序;面向对象风格;层次结构。

(3)独立构件风格:进程通信;事件系统(隐式调用)。

(4)虚拟机风格:解释器;基于规则的系统。 

(5)仓库风格:数据库系统;超文本系统;黑板系统。 文件或者模型驱动  以数据为中心 比如ide编译器


  批处理序列:每一步处理都是独立的,并且每一步是顺序执行的。只有当前一步处理完,后一步处理才能开始。数据传送在步与步之间作为一个整体

  管道/过滤器:每个构件都有一组输入和输出,构件读输入的数据流,经过内部处理,然后产生输出数据流


  主程序/子程序:所有的计算构件作为子程序协作工作,并由一个主程序顺序地调用这些子程序,构件通过共享存储区交换数据。

  面向对象风格:这种风格建立在数据抽象和面向对象的基础上,数据的表示方法和它们的相应操作封装在一个抽象数据类型或对象中

  层次结构风格:层次系统组织成一个层次结构,每一层为上层服务,并作为下层客户。


  进程通信:这种风格的特点是构件通常是命名过程,消息传递的方式可以是点到点 、 异步和同步方式及远过程调用等 。

  事件驱动(隐式调用):事件驱动风格基于事件的隐式调用风格的思想是构件不直接调用一个过程,而是触发或广播一个或多个事件。  


  解释器:具有解释器风格的软件中含有一个虚拟机,可以仿真硬件的执行过程和一些关键应用。  自定义场景

  规则为中心:基于规则的系统包括规则集、规则解释器、规则/数据选择器及工作内存。

  黑板系统:适合于解决复杂的非结构化的问题,能在求解过程中综合运用多种不同知识源,使得问题的表达 、 组织和求解变得比较容易。人工智能、语音识别等


  数据库系统:构件主要有两大类,一个是中央共享数据源,保存当前系统的数据状态;另一个是多个独立处理元素,处理元素对数据元素进行操作。

  超文本系统:超文本系统的典型代表,就是早期的静态网页。

  黑板风格:


6、批处理序列风格与管道过滤器风格比较:


共同点:把任务分成一系列固定顺序的计算单元(组件)。组件间只通过数据传递交互。

区别:批处理是全部的 、 高潜伏性的,输入时可随机存取,无合作性 、 无交互性。而管道过滤器是递增的,数据结果延迟小,输入时处理局部化,有反馈 、 可交互。批处理强调数据传送在步与步之间作为一个整体,而管理过滤器无此要求。


7、微服务和SOA的区别

https://blog.csdn.net/deniro_li/article/details/107281741?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163401795816780255291793%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=163401795816780255291793&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_v2~rank_v29-1-107281741.pc_v2_rank_blog_default&utm_term=%EF%BC%8846%EF%BC%89&spm=1018.2226.3001.4450


8、

架构风险:是指架构设计中潜在的、存在问题的架构决策所带来的隐患

敏感点:指为了实现某种特定的质量属性,一个或多个构件所具有的特性。

权衡点:影响多个质量属性的特性,是多个质量属性的敏感点。



9、胖瘦客户端的区别


10、具体软件架构风格的 比较















三、数据库

2011

数据库 规范化和反规范化


2010

分布式数据库 和 集中式数据库


2012

nosql


2015

关系型数据库 和 内存数据库的各方面比较


2017



2018


2019


2020












1、三范式 概念


2、反规范化:规范化设计后,数据库设计者希望牺牲部分规范化来提高性能,这种从规范化设计的回退方法称为反规范化技术。


采用反规范化技术的益处:降低连接操作的需求、降低外码和索引的数目,还可能减少表的数目,能够提高查询效率。

可能带来的问题:数据的重复存储,浪费了磁盘空间;可能出现数据的完整性问题,为了保障数据的一致性,增加了数据维护的复杂性,会降低修改速度。


反规范化措施:

(1)增加冗余列:在多个表中保留相同的列,通过增加数据冗余减少或避免查询时的连接操作。

(2)增加派生列:在表中增加可以由本表或其他表中数据计算生成的列,减少查询时的连接操作并避免计算或使用集合函数。

(3)重新组表:如果许多用户需要查看两个表连接出来的结果数据,则把这两个表重新组成一个表来减少连接而提高性能。

(4)水平分割表:根据一列或多列数据的值,把数据放到多个独立的表中,主要用于表数据规模很大、表中数据相对独立或数据需要存放到多个介质上时使用。

(5)垂直分割表:对表进行分割,将主键与部分列放到一个表中,主键与其他列放到另一个表中,在查询时减少I/O次数。


3、脏读(dirty read):A 事务读取了 B 事务尚未提交的更改数据

不可重复读:指的是事务在不同的时间点,读取到的数据不同。

幻象读:一般发生在计算统计数据的事务中 。 A 事务读取了 B 事务提交的新增数据,这时 A 事务将出现幻象读的问题 。

丢失更新:A事务撤销时,把已经提交的B事务的更新数据覆盖了


4、封锁协议


(1)一级封锁协议:事务 T 在修改数据 R 之前必须先对其加 X 锁,直到事务结束才释放。因为对数据修改加了排他性锁,所以可防止丢失修改,并保证事务 T 是可恢复的。但还是会发生不可重复读与脏读现象。


(2)二级封锁协议:二级封锁协议是在一级封锁协议的基础上,再加上事务 T 在读取数据 R 之前先对其加 S 锁,读完后即释放 S 锁。二级封锁协议不但可防止丢失修改,还因为加了共享读锁,因此可防止脏读现象,但仍然会发生不可重复读。


(3)三级封锁协议:三级封锁协议是在一级封锁协议的基础上,再加上事务 T 在读取数据 R 之前先对其加 S 锁,直到事务结束才释放。三级封锁协议可防止丢失修改 、 防止脏读与防止数据重复读。



5、nosql优点易扩展、大数据量,高性能、灵活的数据模型、高可用


NoSQL数据库支持高并发数据访问,性能较高。

NoSQL数据库的数据存储结构松散,能够灵活支持多种类型的数据格式。

NoSQL数据库能够支持海量数据的存储,且易于横向扩展。

NoSQL数据库基于分布式数据存储,不存在单点故障和性能瓶颈,系统可用性高。



NoSQL缺点,例如,并未形成一定标准,各种产品层出不穷,内部混乱,各种项目还需时间来检验,缺乏相关专家技术的支持等。




6、

数据库程序在线访问方式优点:

1、性能比ORM好

2、可以处理复杂查询语句

数据库程序在线访问方式缺点:

1、要求程序员懂SQL语句

2、修改与维护相对困难


ORM优点(即Object-Relationl Mapping,它的作用是在关系型数据库和对象之间作一个映射,这样,我们在具体的操作数据库的时候,就不需要再去和复杂的SQL语句打交道,只要像平时操作对象一样操作它就可以了):

1、使用ORM可以大大降低学习和开发成本。

2、程序员不用再写SQL来进行数据库操作。

3、减少程序的代码量。

4、降低由于SQL代码质量差而带来的影响。

ORM缺点:

1、不太容易处理复杂查询语句。

2、性能较直接用SQL差。




7、

Redis分布式存储的常见方案:

1、主从模式(Master/Slave)

2、哨兵模式(Sentinel)

3、集群模式(Cluster)


Redis集群切片的常见方式:

1、客户端分片,即在客户端就通过key的hash值对应到不同的服务器。

2、中间件实现分片。在应用软件和Redis中间,例如:Twemproxy、Codis等,由中间件实现服务到后台Redis节点的路由分派。

3、客户端服务端协作分片。RedisCluster模式,客户端可采用一致性哈希,服务端提供错误节点的重定向服务slot上。不同的slot对应到不同服务器。



redis:过期间的删除策略


其实有三种不同的删除策略:


1):立即删除。在设置键的过期时间时,创建一个回调事件,当过期时间达到时,由时间处理器自动执行键的删除操作。


立即删除能保证内存中数据的最大新鲜度,因为它保证过期键值会在过期后马上被删除,其所占用的内存也会随之释放。但是立即删除对cpu是最不友好的。因为删除操作会占用cpu的时间,如果刚好碰上了cpu很忙的时候,比如正在做交集或排序等计算的时候,就会给cpu造成额外的压力。

而且目前redis事件处理器对时间事件的处理方式--无序链表,查找一个key的时间复杂度为O(n),所以并不适合用来处理大量的时间事件。

(2):惰性删除。键过期了就过期了,不管。每次从dict字典中按key取值时,先检查此key是否已经过期,如果过期了就删除它,并返回nil,如果没过期,就返回键值。


惰性删除是指,某个键值过期后,此键值不会马上被删除,而是等到下次被使用的时候,才会被检查到过期,此时才能得到删除。所以惰性删除的缺点很明显:浪费内存。dict字典和expires字典都要保存这个键值的信息。


举个例子,对于一些按时间点来更新的数据,比如log日志,过期后在很长的一段时间内可能都得不到访问,这样在这段时间内就要拜拜浪费这么多内存来存log。这对于性能非常依赖于内存大小的redis来说,是比较致命的。

(3):定时删除。每隔一段时间,对expires字典进行检查,删除里面的过期键。 可以看到,第二种为被动删除,第一种和第三种为主动删除,且第一种实时性更高。下面对这三种删除策略进行具体分析。


从上面分析来看,立即删除会短时间内占用大量cpu,惰性删除会在一段时间内浪费内存,所以定时删除是一个折中的办法。

定时删除是:每隔一段时间执行一次删除操作,并通过限制删除操作执行的时长和频率,来减少删除操作对cpu的影响。



redis 提供 6种数据淘汰策略:

1、volatile-lru(Least Recently Used):从已设置过期时间的数据集(server.db[i].expires)中挑选最近最少使用的数据淘汰

2、volatile-ttl(Time To Live):从已设置过期时间的数据集(server.db[i].expires)中挑选将要过期的数据淘汰

3、volatile-random:从已设置过期时间的数据集(server.db[i].expires)中任意选择数据淘汰

4、allkeys-lru:当内存不足以容纳新写入数据时,在键空间中,移除最近最少使用的key(这个是最常用的)

5、allkeys-random:从数据集(server.db[i].dict)中任意选择数据淘汰

6、no-eviction:禁止驱逐数据,也就是说当内存不足以容纳新写入数据时,新写入操作会报错。这个应该没人使用吧!




8、

视图

视图(VIEW)也被称作虚表,即虚拟的表,是一组数据的逻辑表示,其本质是对应于一条SELECT语句,结果集被赋予一个名字,即视图名字。

视图本身并不包含任何数据,它只包含映射到基表的一个查询语句,当基表数据发生变化,视图数据也随之变化。




9、


1、集中式数据库和分布式数据库的概念和区别


集中式数据架构中,一个或多个局域网中的客户共享一个单独计算机系统中的单个数据库。系统提供数据处理能力,用户可以在同样的站点上操作,

也可以在地理位置隔开的其他站点上通过远程终端来操作。系统及其数据管理被某个或中心站点集中控制。单个数据库服务器结构的主要优点就是简单、

易维护开发及运行成本低;但由于所有的客户直接请求服务器,容易发生性能瓶颈,如果服务失败,单个服务器不能提供备份和恢复,所有依赖的应用程序都将不能工作。


分布式数据架构中,使用多个计算机系统以及用户能够访问远程系统的数据,数据可以在多个不同的数据库中进行传送,由不同的数据库管理系统软件进行管理,

运行在多种不同的计算机上,支持多种不同的操作系统。这些机器位于(或分布在)不同的地理位置并通过多种通信网络连接在一起。企业数据可以分布在不同的计算机上,

一个应用程序可以操作位于不同地理位置的机器上的数据。多个数据库服务器结构的主要优点就是系统的容错能力和对广域网容量的需求有所降低,可以采用多种策略提升整

个系统的服务质量;由于多个数据库系统分布在不同的网络节点上,位于不同位置的数据之间需要同步和协作,系统结构复杂、运行成本高并且维护困难。

















四、其他


2009 (信息系统安全)

1、信息系统安全:

信息系统面临的安全威胁来自于物理环境、通信链路、网络系统、操作系统、应用系统以及管理等多个方面。

物理安全威胁是指对系统所用设备的威胁,如自然灾害、电源故障、数据库故障和设备被盗等造成数据丢失或信息泄漏。

通信链路安全威胁是指在传输线路上安装窃听装置或对通信链路进行干扰。

网络安全威胁当前主要是指由于因特网的开放性、国际性与无安全管理性,对内部网络形成的严重安全威胁。

操作系统安全威胁指的是操作系统本身的后门或安全缺陷,如“木马”和“陷阱门”等。

应用系统安全威胁是指对于网络服务或用户业务系统安全的威胁,包括应用系统自身漏洞,也受到“木马”的威胁。

管理系统安全威胁指的是人员管理和各种安全管理制度。



(1)、目前主要的认证方式有三类:

(1)用户名和口令认证:主要是通过一个客户端与服务器共知的口令(或与口令相关的数据)进行验证。根据处理形式的不同,分为验证数据的明文传送、利用单向散列函数处理验证数据、利用单向散列函数和随机数处理验证数据。

(2)使用令牌认证:该方式中,进行验证的密钥存储于令牌中,目前的令牌包括安全证书和智能卡等方式。

(3)生物识别认证:主要是根据认证者的图像、指纹、气味和声音等作为认证数据。根据该企业的业务特征,采用令牌认证较为合适。


(2)授权侵犯指的是被授权以某一目的使用某一系统或资源的某个人,将此权限用于其他非授权的目的,也称作“内部攻击”。

(3)抗抵赖服务包括证据的生成、验证和记录,以及在解决纠纷时随即进行的证据恢复和再次验证。


2010  (esb和信息系统可靠性)多看两边

1、esb:ESB全称为Enterprise Service Bus,即企业服务总线。它是传统中间件技术与XML、Web服务等技术结合的产物。(ESB本身的模型就是管道和过滤器)

    ESB的主要功能包括:

(1)应用程序的位置透明性

(2)传输协议转换

(3)消息格式转换

(4)消息路由

(5)消息增强

(6)安全支持

(7)监控和管理

2、

采用ESB作为集成框架,能够实现灵活的部署结构,包括CS结构、P2P结构等。

采用ESB作为集成框架,待集成系统只需要和总线进行联系,彼此之间不需要互相通信,这样就大大降低了系统的耦合程度。

采用ESB作为集成框架,在加入新的待集成系统时,只需要采用插件的方式实现传输协议和数据格式的适配即可,系统的可扩展性较强。




3、动态冗余、N版本程序设计


动态冗余又称为主动冗余,它是通过故障检测、故障定位及故障恢复等手段达到容错的目的。其主要方式是多重模块待机储备,当系统检测到某工作模块出现错误时,

就用一个备用的模块来替代它并重新运行。各备用模块在其待机时,可与主模块一样工作,也可以不工作。前者叫热备份系统(双重系统),

后者叫冷备份系统(双工系统、双份系统)。


N版本程序设计是一种静态的故障屏蔽技术,其设计思想是用N个具有相同功能的程序同时执行一项计算,结果通过多数表决来选择。其中N个版本的程序必须由不同的人独立设计,

使用不同的方法、设计语言、开发环境和工具来实现,目的是减少N个版本的程序在表决点上相关错误的概率。 



检错技术实现的代价一般低于容错技术和冗余技术,但有一个明显的缺点,就是不能自动解决故障,出现故障后如果不进行人工干预,将最终导致软件系统不能正常运行。

检错技术常见的实现方式:最直接的一种实现方式是判断返回结果,如果返回结果超出正常范围,则进行异常处理;计算运行时间也是一种常用技术,如果某个模块或函数运行时间超过预期时间,

  可以判断出现故障;还有置状态标志位等多种方法,自检的实现方式需要根据实际情况来选用。

检错技术的处理方式,大多数都采用“查处故障-停止软件运行-报警”的处理方式。但根据故障的不同情况,也有采用不停止或部分停止软件系统运行的情况,这一般由故障是否需要实时处理来决定。




2011 (信息系统安全)


2013(项目管理 信息系统安全)


2014 (web应用架构)


1、负载均衡的集中类型

 HTTP重定向负载均衡: HTTP重定向服务器是一台普通的应用服务器,其唯一个功能就是根据用户的HTTP请求计算出一台真实的服务器地址,并将该服务器地址写入HTTP重定向响应中(重定向响应状态码为302)返回给用户浏览器。用户浏览器在获取到响应之后,根据返回的信息,重新发送一个请求到真实的服务器上


 DNS域名解析负载均衡:基于DNS的负载均衡是在DNS服务器中为同一个主机名配置多个IP 地址,在应答DNS 查询时,DNS 服务器对每个查询将以DNS文件中主机记录的IP地址按顺序返回

  不同的解析结果,将客户端的访问引导到不同的节点上去,使得不同的客户端访问不同的节点,从而达到负载均衡的目的。

 反向代理负载均衡:反向代理负载均衡是将来自Internet上的连接请求以反向代理的方式动态地转发给内部网络上的多个节点进行处理,从而达到负载均衡的目的。

 网络层负载均衡

 数据链路层负载均衡


2、数据库水平拆分和垂直拆分

垂直切分:简单的说就是将数据库中的各个表,依据业务情况将一些表放在一个数据库中,一些表放在另外一个数据库中,

比如商城这些的数据库端按照业务垂直拆分:按照业务订单数据库、用户数据库、商品数据库等进行拆分。



水平拆分:简单来说就是将一张表的数据分别存储到多个数据库中,所以一个库中只保存一部分数据;




2016(敏捷开发)


2017(web应用架构)

msqyl主从复制好处

1、提升性能:

交易平台要求高并发,主从复制方式一主多从,不同的用户请求可以从不同的从数据库读取数据,提高并发度。

2、可扩展性更优

如果采用单台数据库服务器,则访问量持续增加时,数据库瓶颈暴露,且无法迅速解决问题。而主从结构可以快速增加从服务器数量,以满足需求。

3、提升可用性

4、相当于负载均衡

5、提升数据安全性



2018(soa结合esb)









待研究

soa详细了解

soa:SOA是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。


mvc了解 

m:模型是应用程序的主体部分。模型表示业务数据和业务逻辑。

v:视图是用户看到并与之交互的界面。

c:控制器接受用户的输入并调用模型和视图去完成用户的需求。



数据库设计流程:

数据库设计分为概念结构设计、逻辑结构设计物理结构设计:

需求分析:数据流图、数据字典、需求说明书


概念设计也称为概念结构设计,其任务是在需求分析阶段产生的需求说明书的基础上,按照特定的方法将它们抽象为一个不依赖于任何DBMS的数据模型,即概念模型。概念模型的表现形式即ER模型。

逻辑设计也称为逻辑结构设计,其主要任务是将概念设计阶段设计好的E-R图转换为与选用的具体机器上的DBMS所支持的数据模型相符合的逻辑结构(如:关系模式)。

物理设计也称为物理结构设计,其任务是对给定的逻辑模型选取一个最适合应用环境的物理结构,所谓数据库的物理结构,主要是指数据库在物理设备上的存储结构和存取方法。


可以从其它属性得来的属性就叫派生属性。包裹图中的“总计”属性是派生属性。可以从资费、挂号费、保价费、回执费累加计算出来。



当较低层次上实体类型表达了与之联系的较高层次上的实体类型的特殊情况时,就称较高层次上实体类型为超类型,反之为子类型。子类到超类的过程为概化,超类到子类的过程为特化。

①子类与超类之间具有继承特点,即子类包含了超类的所有属性,并且可以比超类拥有更多的属性。

②这种继承性是通过子类实体和超类实体有相同的实体标识符实现的。


j2ee

Java

ejb




面向对象设计7大原则:

1、开闭原则:一个软件实体如类、模块应该对扩展开放,对修改关闭。

2、单一职责原则的意思是:类的职责要单一,不能将太多的职责放在一个类中。

3、里氏替换原则的意思是:在软件系统中,一个可以接受基类对象的地方必然可以接受一个子类对象,即凡是父类能出现的地方,子类都可以进行替代。

4、依懒倒置原则的意思是:高层模块不应该依懒底层模块,它们都应该依懒抽象,抽象不应该依懒于细节,细节应该依懒于抽象。

5、接口隔离原则的意思是:客户端不应该依赖那些它不需要的接口,

6、迪米特法则的意思是:一个软件实体对其他实体的引用越少越好,或者说如果两个类不必彼此直接通信,

7、合成复用原则又称为组合/聚合复用原则(Composition/ Aggregate Reuse Principle, CARP),其定义如下:尽量使用对象组合,而不是继承来达到复用的目的。






8、微服务特点:

技术异构性

独立部署

易于扩展

隔离性好

简化部署

易于开发

松耦合

轻量级的通信机制


9、产品线相关知识:

 SEI将产品线组织分为4个工作小组:

1.市场人员是产品线和产品能力、客户需求之间的沟通桥梁;

2.核心资源组负责架构和其他核心资源的开发

3.应用组负责交付给客户的系统开发;

4.管理者负责开发过程的协调、商务计划等。


软件产品线的建立可分为4种方式。

1.将现有产品演化为产品线,它的主要优点是通过对投资回报周期的分解,以及对现有系统演化的维持,是产品线方法的实施风险降低到最小,但完成产品线核心资源的总周期和总投资都比使用革命方式要大。

2.用软件产品线替代现有产品集,这种方法的目标是开发一个不受现有产品集存在问题的限制的,全新的平台、总周期和总投资较演化方法要少,但是因重要需求的变化导致的初始投资报废的风险加大。

3.全新软件产品线的演化,它的好处是先期投资少,风险较小,第一个产品面世时间早。

4.全新软件产品线的开发,它的优点是一旦产品线核心资源完成后,新产品的开发速度将非常快,总成本也将减少;缺点是对新领域的需求很难做到全面和正确,使得核心资源不能像预期的那样支持新产品的开发。



软件产品线实施成功的一些相关因素,这就需要考虑多个方面的因素,主要可以从以下四个方面考虑。

(1)对该领域的产品开发已具备长期积累的经验。

(2)一个用于构建产品的好的核心资源库。

(3)好的产品线体系结构。

(4)好的管理(软件资源、人员组织、过程)支持。



10、

LVS负载均衡的三种包转发方式:

1、NAT:负载均衡器接收用户的请求,转发给具体服务器,服务器处理完请求返回给均衡器,均衡器再重新返回给用户。

2、DR:负载均衡器接收用户的请求,转发给具体服务器,服务器处理完请求后直接返回给用户,但无需IP Tunneling协议,跨平台性好,大部分系统都可以支持。

3、TUN:负载均衡器接收用户的请求,转发给具体服务器,服务器处理完请求后直接返回给用户,需要系统支持IP Tunneling协议,难以跨平台。


集群系统里session问题:

1、Session Sticky。就是把同一个用户在某一个会话中的请求,都分配到固定的某一台服务器中,这样我们就不需要解决跨服务器的session问题了。

2、Session Replication。就是在集群中复制session,使得每个服务器都保存有全部用户的session数据。

3、Session数据集中存储:就是利用数据库来存储session数据,实现了session和应用服务器的解耦。

4、Cookie Base:就是把session存在cookie中,由浏览器来告诉应用服务器我的session是什么,同样实现了session和应用服务器的解耦。






11、DSSA(特定领域的软件架构开发):https://www.cnblogs.com/ITnoteforlsy/p/10336608.html

DSSA:在一个特定应用领域为一组应用提供组织结构参考的标准软件体系结构

1.一个严格定义的问题域和/或解决域。即要对该系统的问题域和/或解决域进行严格的定义,不能跨越系统边界。

2.具有普遍性,使其可以用于领域中某个特定应用的开发。即设计出来的软件架构部分或全部能够应用于烟草行业的某个子系统。

3.对整个领域的合适程度的抽象。主要考虑抽象出来的模块、组件的粒度是否合适,是否适应于烟草行业的某些部门。

4.具备该领域固定的、典型的在开发过程中可重用的元素。



DSSA的创建过程主要包括定义领域范围、定义领域特定的元素、定义领域特定的设计和实现需求约束、定义领域模型和架构、产生、搜集可重用的产品单元。并且本过程是并发的、递归的、反复的。

1.定义领域范围:本阶段的重点是确定系统中涉及的问题是否属于烟草行业,以及本过程何时结束。主要输出烟草行业中的应用需求要满足一系列用户需求。

2.定义领域特定元素:本阶段的目标是编译领域字典和领域术语的同义词词典。即编译属于烟草行业的词典。

3.定义领域特定的设计和实现需求约束:本阶段的目标是描述解空间中有差别的特性。不仅要识别出约束,并且要记录约束对设计和实现决定造成的后果,还要记录队处理这些问题时产生的所有问题的讨论。

4.定义领域模型和架构:本阶段的目标是产生一般的架构,并说明构成他们的模块或构件的语法和语义。

5.产生、搜集可重用的产品单元:本阶段的目标是为DSSA增加构件使得它可以被用来产生问题域中的新应用。


DSSA基本活动:

领域分析:建立领域模型

领域设计:获取dssa

领域实现:开发和组织可复用信息



参与DSSA的人员可以划分为4种角色:

领域专家:领域专家可能包括该领域中系统的有经验的用户、从事该领域中系统的需求分析、设计、实现以及项目管理的有经验的软件工程师等。提供关于领域中系统的需求规约和实现知识

领域分析师:领域分析人员应由具有知识工程背景的有经验的系统分析员来担任。

领域设计人员:领域设计人员应由有经验的软件设计人员来担任。

领域实现人员:领域实现人员应由有经验的程序设计人员来担任。


DSSA通常是一个具有三个层次的系统模型,包括领域开发环境(领域架构师)、领域特定应用开发环境(应用工程师)和应用执行环境(操作员)。



12、软件容错技术之所以能在出错之后正常运行,是因为冗余机制,容错技术中常见的冗余机制主要分为:结构冗余、信息冗余、时间冗余、附加冗余。



13、从企业应用集成技术的角度来看,系统集成的层面一般可以分为表示集成、数据集成、控制集成和业务流程集成,请用字以内介绍下这几个集成层次的概念。

表示集成这种方法把用户界面作为公共的集成点,集成点在界面上,把原来比较零散的界面集中在一个新的界面上。

数据集成他是白盒集成,需要知道数据库的结构,他的集成点是在中间件这块,这就可以使用很多方式来达到这个目的。

控制集成是在应用逻辑层面上对应用系统进行集成的,那么这个控制集成的集成点是存在于程序代码当中,集成的地方可能只需要使用简单的API就可以访问。

业务流程集成是由一系列的基于标准的统一数据格式的工作流所组成的,涉及到整个企业的业务流程, 他已经超越了软件的范畴,超越了数据和数据库的范畴,所关注的是企业业务层面。


数据互联互通的技术:

1、消息中间件:跨平台的数据交互方式,只要系统提供了该种方式的数据访问接口,则其他系统都可以获取该系统接口提供的数据。比如WebService方式。

2、数据库接口:使用访问不同类型数据库系统的ODBC(开放数据库连接)接口,所有数据不设防,可相互调用。

3、文件接口:通过批量的文件传输,可以使用XML文件、JSON文件等通用格式文件,用导入、导出的方式,实现系统间数据交换。



14、

分布式文件系统是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连。分布式文件系统的设计基于客户机/服务器模式。一个典型的网络可能包括多个供多用户访问的服务器。另外,对等特性允许一些系统扮演客户机和服务器的双重角色。例如,用户可以“发表”一个允许其他客户机访问的目录,一旦被访问,这个目录对客户机来说就像使用本地驱动器一样。常见的解决方案有GFS、HDFS、Lustre 、Ceph 、GridFS 、mogileFS、TFS、FastDFS等。


15、 (https://blog.csdn.net/zhou2s_101216/article/details/52966172)

评估人员关注的系统质量属性

1.性能:系统的响应能力

2.可靠性:软件系统在应用或系统错误面前,在意外或错误使用的情况下维持功能特性的基本能力(容错,健壮性)

3.可用性:系统能够正常运行的时间比例

4.安全性:系统在向合法用户提供服务的同时能够组织非授权用户使用的企图或拒绝服务的能力

5.可修改性:能够快速的用高性价比对系统进行变更的能力。

6.可维护性:在错误发生后“修复”软件系统

7.功能性:系统所能完成所期望的工作的能力

8.可变性:体系结构经扩充或变更而成为新体系结构的能力

9.互操作性:经常与其他系统或自身环境互相作用

10.可测试性:软件发现故障并隔离,定位其故障的能力特性


SAAM(软件系统架构分析方法)分析评估体系结构的过程包括五个步骤,即场景开发、体系结构描述、单个场景评估、场景交互和总体评估。

1.形成场景


指的是风险承担者们集中在一起,集体讨论,提出一个个系统需求场景。记录人员把这些场景记录在册,形成文档的过程。


2.描述体系结构


指的是体系结构设计师,对待评估的体系结构进行适当的描述,包括静态属性和动态特征,可以用自然语言也可以用形式化手段,以让参加评估的所有人员都能充分理解。


这一步骤和上一个形成场景的步骤可以合并在一起,重复进行多次。


3.对场景进行分类和确定优先级


系统可分为直接场景和间接场景,直接场景指的是本体系结构可以直接支持的场景,即不需要对体系结构做任何修改即可直接实现。


另外一种间接场景则是需要对现有体系结构做些更改才能支持的场景。


最后用投票的方法,确定间接场景的重要性优先级,以便大家将有限的时间花在最重要的事情上。


4.对间接场景进行单个评估


就是将选出来的重要场景与体系结构描述对应起来。体系结构设计师具体说明体系结构需要做哪些修改变更才能适用间接场景的要求,并估计这些变更的代价。


最后形成一份全部场景的总结性列表。


列表字段包括:场景编号、场景描述、直接/间接、需要做的更改、更改/新增构建数量、更改工作量估计


5.评估场景的相互作用


当两个或多个间接场景需要修改到同一个构建时,这时场景就在这个构件上出现了相互作用,需要特别评估。


出现这种情况,往往是设计方案中功能分配不合理,或者是设计文档未能充分说明体系结构。


6.形成总体评价


最后,评估人员对场景和场景间的相互作用做一个总体的权衡和评价。通过各个场景权重与分值得出一个总体的评价,从多个体系结构,或者一个体系结构的不同设计方案选择出一个最优的方案。





SAAM的主要输入是问题描述、需求说明和架构描述,其分析过程主要包括场景开发、架构描述、单个场景评估、场景交互和总体评估


ATAM(架构权衡分析法)被分为九个步骤 ,分别是

1、描述ATAM方法

2、描述业务动机

3、描述体系结构

4、确定体系结构方法

5、生成质量属性效用树

6、分析体系结构方法

7、讨论和分级场景

8、分析体系结构方法

9、描述评估结果


ATAM过程主要包含场景与需求收集,架构视图与场景实现,属性模型构造分析,折中四个方面



16、遗留系统特点:

系统虽然完成企业中许多重要的业务管理工作,但仍然不能完全满足要求。一般实现业务处理电子化及部分企业管理功能,很少涉及经营决策。

系统在性能上已经落后,采用的技术已经过时。

通常是大型的软件系统,已经融入企业的业务运作和决策管理机制之中,维护工作十分困难。

没有使用现代信息系统建设方法进行管理和开发,现在进本上已经没有文档,很难理解。




在实施新旧系统的转换时,转换的策略通常有三种:直接转换策略、并行转换策略和分段转换策略

1、直接转化策略,直接转换是在原有系统停止运行的某一时刻,新系统立即投入运行,中间没有过度阶段。采用这种方式时,人力和费用最省,适用于系统不太复杂或现有系统完全不能使用的场合。但是这种方式风险高。

2、并行转换策略,并行转换就是新系统和旧系统并行工作一段时间,经过这段时间的试运行后,再用新系统正式替换现有系统。这种方式的好处就是风险很小。在转换期间还可以同时比较新旧两套系统的性能,而且能够让操作人员得到全面的培训。所以对于一些较大的信息系统,或者处理过程比较复杂,数据比较重要的系统。并行转换是一种最常用的转换方式。那么这种转换方式也有缺点,缺点就在于两套系统并行期间。要有两套人马,或者两套处理方式同时并存,在人力和费用消耗比较大,转换的周期比较长,而且难以控制新旧系统当中数据的变化。所以这就要求要做好转换计划,并且要加强管理。

3、分段转换,这是直接转换和并行转换的接合,也就是分期分批、逐步转换。一般比较大的系统可以采用这种方式比较合适,他能够保证软件平稳运行,费用也不太高,就是将大的系统分成多个子系统,每成熟一个子系统就切换一个子系统,主要是分期分批。这种分段转换的策略,它的优点就是成熟一个子系统就转换一个子系统。这种新旧转换,震动比较小,用户比较容易接受。但是由于采取的是渐进的方式,会导致新旧系统的转换周期比较长。








作者:xTao 分类:LNMP 浏览:2311 评论:0