系统架构设计师--常备知识点

一、模型

  1. 三层模型
  • 核心层提供不同区域或者下层的高速连接和最优传送路径---链路层
  • 汇聚层将网络业务连接到接入层,并且实施与安全、流量负载和路由相关的策略---TCP层
  • 接入层为局域网接入广域网或者终端用户访问网络提供接入---IP层

二、协议

  1. 应用层:FTP、TFTP、HTTP、SMTP、DHCP、Telnet、DNS和SNMP
  2. 传输层:TCP和UDP(User Datagram Protocol,用户数据报协议)
  3. 网络层:IP、ICMP、IGMP

TCP在IP协议提供的不可靠数据服务的基础上,采用了重发技术,为应用程序提供了一个可靠的、面向连接的、全双工的数据传输服务。TCP协议一般用于传输数据量比较少,且对可靠性要求高的场合

UDP是一种不可靠的、无连接的协议,可以保证应用程序进程间的通信,与TCP相比,UDP是一种无连接的协议,它的错误检测功能要弱得多

三、IPV6

  1. 地址分类:单播、多播(也称作组播)、泛播(也称作任意播)
  2. 与4比较:更大的地址空间、更小的路由表
  3. 过渡技术:双协议栈技术、隧道技术、NAT-PT技术

四、网络存储技术

  1. DAS:直接附加存储,直接将存储设备连接到服务器上,难以扩展,依赖I/O --->SCSI

  2. NAS:网络附加存储,一个专用的文件服务器

  3. SAN:存储区域网络,通过专用交换机将磁盘阵列与服务器连接起来的高速专用子网

    FC SAN:光纤通道 IP SAN:基于IP网络

    二者都是专用网络

五、综合布线

工作区:终端 配线(水平)子系统:插座(连接了干线子系统和工作区子系统) 干线(垂直)子系统:各楼层的水平子系统之间的互联 建筑群子系统:建筑之间 设备间:电缆、硬件 进线间:筑物外部通信和信息管线的入口部位管理

六、网络系统生命周期

  1. 需求规范、通信规范、逻辑网络设计、物理网络设计、实施阶段
  2. 逻辑网络设计:网络结构设计、物理层技术选择、局域网技术选择与应用、广域网技术选择与应用、地址设计与命名模型、路由选择协议、网络管理、网络安全、逻辑网络设计文档
  3. 物理网络设计:设备选型、结构化布线、机房设计及物理网络设计相关的文档规范(如:软硬件清单、费用清单)
  4. 网络架构数据流图的主要作用是将处理器和设备分配到网络中,需要显示的信息包括服务器及其物理位置;客户端及其物理位置;处理器说明:传输协议
  5. 网络系统生命周期

ARP(Address Resolution Protocol,地址解析协议)是一个位于TCP/IP协议栈中的底层协议,对应于数据链路层,负责将某个IP地址解析成对应的MAC地址

伪造网关ARP报文使得数据包无法发送到网关

SNMP(Simple Network Management Protocol,简单网络管理协议),必须提供防护的威胁有:修改信息、假冒、修改报文流、消息泄露,不必提供:拒绝服务、通信分析

根DNS不能采用递归查询,影响性能

IPV4服务类型加码点,IPV6通信类型加码点

面向服务的架构SOA主要技术和标准

SOA是一种应用程序架构,在这种架构中,所有功能都定义为独立的服务,这些服务带有定义明确的可调用接口,能够以定义好的顺序调用这些服务来形成业务流程

SOA建立在XML等新技术的基础上,通过使用基于XML的语言来描述接口,服务已经转到更动态且更灵活的接口系统中,CORBA中的IDL无法与之相比

  1. UDDI协议:服务注册信息通过UDDI(服务统一描述,发现和集成)框架实现
  2. WSDL协议:服务内容描述通过WSDL(Web服务描述语言)标准实现
  3. SOAP协议:服务提供者、服务使用者和服务注册器之间的远程交互通过SOAP(简单对象访问协议)消息实现
  4. BPEL/BPEIAWS:通过BPEL/BPEIAWS(业务过程执行语言)将分散的、功能单一的web服务组织成一个复杂的有机应用

SOA例子:CORBA

CORBA构件模型中,可移植对象适配器POA的作用是在底层传输平台与接收调用并返回结果的对象实现之间进行协调,伺服对象Servant是最终完成客户请求的服务对象实现

CORBA构件模型中,对象适配器的主要作用是在底层传输平台与接收调用并返回结果的对象实现之间进行协调,目前采用的对象适配器规范是POA(可移植对象适配器),它替代了传统的BOA(基本对象适配链)

Servant(伺服对象)是最终完成客户请求的服务对象实现,伺服对象管理器(伺服对象激活器和伺服对象定位器)用来提供CORBA服务器的对象查找服务,活动对象映射表用来保存已注册的CORBA对象标识和伺服对象之间的映射关系

对象管理组织(OMG)基于CORBA基础设施定义了4种构件标准,实体(Entity)构件需要长期持久化并主要用于事务性行为,由容器管理其持久化,加工(Process)构件同样需要容器管理其持久化,但没有客户端可访问的主键,会话(Session)构件不需要容器管理其持久化,其状态信息必须由构件自己管理。服务(Service)构件是无状态的

ESB

请对ESB的定义进行描述

企业服务总线(Enterprise Service Bus,ESB)是传统中间件技术与XML、Web服务等技术结合的产物,主要支持异构系统集成。ESB基于内容的路由和过滤,具备复杂数据的传输能力,并可以提供一系列的标准接口

ESB是目前企业级应用集成常用的基础架构。请列举出ESB的4个主要功能,并从集成系统的部署方式、待集成系统之间的耦合程度、集成系统的可扩展性三个方面说明为何采用ESB作为集成框架的基础架构

主要功能包括:

  1. 应用程序的位置透明性(即服务位置透明性)
  2. 传输协议转换
  3. 消息格式转换
  4. 消息路由
  5. 消息增强
  6. 安全支持
  7. 监控和管理

采用ESB作为集成框架,能够实现灵活的部署结构,包括CS结构、P2P结构等。采用ESB作为集成框架,待集成系统只需要和总线进行联系,彼此之间不需要互相通信,这样就大大降低了系统的耦合程度

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

请指出在实现工具之间数据格式的灵活转换时,通常采用的设计模式是什么,并对实现过程进行简要描述

在实现工具之间数据格式的灵活转换时,通常采用适配器设计模式。即应首先定义一个统一的数据转换接口类,然后针对【不同的数据格式转换需求】定义对应的实际转换类,实际转换类需要继承数据转换接口类,并实现接口转换类定义的接口

构件组装过程

在构件组装过程中需要检测并解决架构失配问题,其中构件失配主要包括由于系统对构件基础设施、控制模型和数据模型的假设存在冲突引起的适配。连接子失配包括由于系统对构件交互协议、构件连接时数据格式的假设存在冲突引起的失配

"4+1"视图:

  1. 逻辑视图(Logical View),设计的对象模型(使用面向对象的设计方法时),用来描述设计的对象模型和对象对象之间的关系
  2. 过程视图(Process View),捕捉设计的并发和同步特征,描述设计的并发和同步特征
  3. 物理视图(Physical View),描述了软件到硬件的映射,反映了分布式特征
  4. 开发视图(Development View),描述了在开发环境中软件的静态组织结构,软件模块组织与管理
  5. 架构的描述,即所做的各种决定,可以围绕着这四个视图来组织,然后由一些用例(Use Cases)或场景(Scenarios)来说明,从而形成了第五个视图

当采用面向对象的设计方法描述对象模型时,通常采用类图表达类的内部属性和行为,以及类集合之间的交互管理,采用状态图定义对象的内部行为

在该模型中,最终用户侧重于逻辑视图,系统工程师侧重于部署视图

实现属性的架构策略

可用性:主动冗余、心跳、Ping/Echo 性能:资源调度、优先级队列、队列调度 安全性:追踪审计、限制访问 可修改性:接口-实现分离、信息隐藏

特定领域体系结构的基础知识DSSA

DSSA是一个特定应用领域中为一组应用提供组织结构参考的软件体系结构,参与DSSA的人员可以划分为四种角色,包括领域专家(提供需求规约和知识)、领域设计人员、领域实现人员和领域分析师。其基本活动包括领域分析、领域设计和领域实现。

领域分析者:控制整个领域分析过程,进行知识获取,将获取的知识组织到领域模型中 领域设计者:根据领域模型和现有系统开发出DSSA、并对DSSA的准确性和一致性进行验证

DSSA通常是一个具有三个层次的系统模型,包括领域开发环境、领域特定应用开发环境和应用执行环境,其中应用工程师主要在领域特定应用开发环境中工作

特定领域软件架构(Domain Specific Software Architecture,DSSA)以一个特定问题领域为对象,形成由领域参考模型、参考需求、参考架构等组成的开发基础架构,其目标是支持一个特定领域中多个应用的生成。DSSA的基本活动包括领域分析、领域设计和领域实现

领域分析,主要目的是获得领域模型,领域模型描述领域中系统之间共同的需求,即领域需求 领域设计,主要目标是获得特定领域软件架构DSSA, DSSA描述领域模型中表示需求的解决方案 领域实现,主要目标是依据领域模型和DSSA开发和组织可重用信息,并对基础软件架构进行实现

架构描述语言

架构描述语言(Architecture Description Language,ADL)是一种为明确说明软件系统的概念架构和对这些概念架构建模提供功能的语言,ADL主要包括以下组成部分:组件、组件接口、连接件和架构配置

软件架构设计

软件架构设计包括提出架构模型、产生架构设计和进行设计评审等活动,是一个迭代的过程。架构设计主要关注软件组件的结构、属性和交互作用,并通过多种视图全面描述特定系统的架构

软件架构评估方法-基于场景的架构方法SAAM:

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

架构权衡分析方法ATAM:ATAM是在基于场景的架构方法(SAAM)基础之上发展起来的,主要包括场景和需求收集、架构视图和场景实现、属性模型构造和分析、属性模型折中等4个阶段。ATAM方法要求在系统开发之前,首先对这些质量属性进行评价和折中。该框架主要关注系统的需求说明,针对性能、架构描述、安全性和可修改性,在系统开发之前进行分析、评价与折中。ATAM可以分为4个主要的活动阶段,包括需求收集、架构风格描述、属性模型构造和分析、架构决策与折中,整个评估过程强调以属性作为架构评估的核心概念,ATAM不是一种精确的评估工具,该方法表现的主要形式是评审会议

数据库

解决数据不一致性问题的三种常见方法:

批处理维护、应用逻辑和触发器

数据架构

集中式数据架构通过向上扩展(Scale Up)提升系统的可扩展性。具体的实现方式包括硬件扩容(增加CPU数ft、内存容量、磁盘数量)和硬件升级(更换为高端主机或高速磁盘等)

分布式数据架构通过向外扩展(Scale Out)提升系统的可扩展性。具体的实现方式包括数据复制、数据垂直切分或/和水平切分、缓存和全文搜索

//////////////////////////////////////////////

案例:某软件公司与开发一个基于Web2.0的大型社交网络系统。就该系统的数据架构而言,李工决定采用公司熟悉的数据架构,使用通用的商用关系型数据库。系统内部数据采用中央集中方式存储。

用户响应时间慢的原因

大型社交网络系统要根据用户个性化信息来实时生成动态页面和提供动态信息,所以基本上无法使用动态页面静态化技术,因此数据库并发负载非常高,往往要达到每秒上万次读写请求。关系数据库应付上万次SQL查询还勉强可以,但是应付上次SQL写数据请求,硬盘I/O就已经无法承受了。特别是涉及到多表连接操作,会导致响应变慢

采用NoSQL的优势: NoSQL数据库支持高并发数据访问,性能较高

随着系统功能的扩充,原有数据格式发生变化,又出现新的数据格式,维护困难

大型社交网络系统随着用户的使用,会不断地增加新的功能,导致原有数据格式发生变化,甚至出现新的数据格式。但关系数据库中采用元组方式组织数据,难以使用新型数据格式,难以维护

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

数据容量很快超过系统原有的设计上限,数据库扩容困难

对于大型社交网络系统,往往会在很短时间内产生海量数据。关系数据库多采用中央数据存储,使得数据容量受限于前期设计的上限,很难实现数据容量的横向扩展

采用NoSQL的优势: NoSQL数据库能支持海量数据的存储,且易于横向扩展

软件系统不断出现宕机,整个系统可用性较差

关系型数据库采用中央数据存储,容易成为系统的性能瓶颈,单点故障很容易导致系统崩溃,负载过高往往导致系统出现宕机现象

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

该系统采用NoSQL数据库时可能存在的问题有:

  1. NoSQL数据库的现有产品不够成熟,大多数产品处于初创期
  2. NoSQL数据库并未形成一定的标准,产品种类繁多,缺乏官方支持
  3. NoSQL数据库不提供对SQL的支持,学习和应用迁移成本较高
  4. NoSQL数据库支持的特性不够丰富,现有产品提供的功能比较有限

//////////////////////////////////////////////

简要叙述常见的反规范化技术有哪些

规范化设计后,数据库设计者希望牺牲部分规范化来提高性能,这种从规范化设计的回退方法叫做反规范化技术。反规范化设计允许保留或新增一些冗余数据,从而减少数据查询中表连接的数目或简化计算过程,提高数据访问效率

采用反规范化技术的益处:能够减少数据库查询时SQL连接的数目,从而减少磁盘I/O数据量,提高查询效率

可能带来的问题:数据的重复存储,浪费了磁盘空间;为了保障数据的一致性,增加了数据维护的复杂性

如何应用反规范化技术来满足部分管理需求

常见的反规范化技术包括:

  1. 增加冗余列:在多个表中保留相同的列,通过增加数据冗余减少或避免查询时的连接操作;
  2. 增加派生列:在表中增加可以由本表或其他表中数据计算生成的列,减少查询时的连接操作并避免计算或使用集合函数;
  3. 表水平分割:根据一列或多列数据的值,把数据放到多个独立的表中,主要用于表数据规模很大、表中数据相对独立或数据需要存放到多个介质上时使用
  4. 表垂直分割:对表进行分割,将主键与部分列放到一个表中,主键与其他列放到另一个表中,在查询时减少I/O次数

数据流图

说明数据流图(Data Flow Diagram)的基本元素及其作用

  1. External Agent(实体/外部代理):定义位于项目范围之外,但与正在被研发的系统有交互关系的人、部门、外部系统或组织
  2. Process(加工/处理):在输入数据流或条件上执行,或者对输入数据流或条件做出响应的工作
  3. Data Store(数据存储):静止的数据,表示系统中需要保存的数据
  4. Data Flow(数据流):运动中的数据,表示到一个过程的数据输入,或者来自一个过程的数据输出

数据流图中的错误包括两类:第一类是逻辑错误,加工节点输入输出不平衡,包括黑洞、灰洞和无输入三种类型;第二类是语法错误,比如数据存储不完整、在数据存储与外部代理之间或者各自之间没有经过加工直接发生数据流等。

CRUD(Create/Read/Update/Delete)矩阵用于检查系统建模过程中数据模型和过程模型的一致性,分别表示了加工对于数据的新增、读取、修改和删除四种操作

AOP(Aspect Oriented Programming)面向切面编程

AOP是一种编程范式,它通过将应用程序的主要业务逻辑与横切关注点(如日志记录、安全性、性能等)分离来提高代码的模块化性、可重用性和可维护性

假设把应用程序想成一个立体结构的话,OOP的利刃是纵向切入系统,把系统划分为很多个模块(如:用户模块,文章模块等等),而AOP的利刃是横向切入系统,提取各个模块可能都要重复操作的部分(如:权限检查,日志记录等等)。由此可见,AOP是OOP的一个有效补充。

在面向对象编程中, 类,对象, 封装,继承,多态 等概念是描述面向对象思想主要术语,与此类似,在面向方面编程中,同样存在着一些基本概念

  • 联结点(JointPoint)
  • 切入点(Pointcut)
  • 通知(Advice)
  • 方面(Aspect)
  • 织入(Weaving)
  • 目标(Target)
  • 引入(Introduction)

AOP的概念和原理

AOP是一种基于切面(Aspect)的编程技术,它将应用程序的主要业务逻辑与横切关注点分离。切面是横跨多个对象的功能,例如日志记录、性能统计、事务管理等。利用AOP,可以将这些关注点模块化,并通过声明式编程的方式插入到应用程序的主要业务逻辑中,从而实现代码的重用和可维护性的提高

AOP的核心原理是动态代理,在运行时,AOP框架会动态生成代理对象,并将切面织入到代理对象中。当客户端调用代理对象的方法时,代理对象会拦截该方法的调用,并执行与该方法相关的切面代码,最后再将控制权交给原始对象。通过这种方式,AOP实现了业务逻辑的分离和切面的模块化

AOP的应用

AOP的应用领域非常广泛,特别是在企业级应用程序开发中。下面是AOP的几个常见应用场景

  1. 日志记录:将日志记录作为一个切面,可以在应用程序的任何地方记录日志,从而方便开发人员进行调试和故障排除
  2. 安全性:将安全性作为一个切面,可以在应用程序的任何地方实施安全性控制,从而保护应用程序的机密信息和敏感操作
  3. 性能:将性能作为一个切面,可以在应用程序的任何地方监控和优化性能,从而提高应用程序的响应速度和吞吐量
  4. 事务管理:将事务管理作为一个切面,可以在应用程序的任何地方实现事务控制,从而保证数据的一致性和可靠性

AOP的实际应用案例

  1. 日志记录:在一个电商网站中,通过AOP实现了对用户登录、购物车操作、订单提交等关键操作的日志记录。通过这种方式,可以方便地跟踪和分析用户的操作行为
  2. 安全性:在一个财务系统中,通过AOP实现了对敏感操作的安全性控制,例如只有经过授权的用户才能访问财务数据,不能将数据外传等。
  3. 性能:在一个电商网站中,通过AOP实现了对数据库访问的性能监控和优化,例如使用缓存、优化SQL语句等
  4. 事务管理:在一个订单管理系统中,通过AOP实现了对订单状态的事务控制,例如在订单提交成功后,将订单状态从"待付款"改为"已付款",并更新库存等。

总之,AOP是一种非常有用的编程技术,它可以提高代码的模块性、可重用性和可维护性,同时也能够简化开发人员的工作和提高应用程序的质量。在实际项目中,我们可以根据具体的需求选择合适的AOP框架和切面类型,从而实现业务逻辑的分离和切面的模块化

系统可靠性

在系统可靠性中,可靠度和失效率是两个非常关键的指标,请分别解释其含义

可靠度就是系统在规定的条件下、规定的时间内不发生失效的概率

失效率又称风险函数,也可以称为条件失效强度,是指运行至此刻系统未出现失效的情况下,单位时间系统出现失效的概率。

解释动态冗余和N版本程序设计技术

动态冗余又称为主动冗余,它是通过故障检测、故障定位及故障恢复等手段达到容错目的。其主要方式是多重模块待机储备,当系统检测到某工作模块出现错误时,就用一个备用的模块来替代它并重新运行。各备用模块在其待机时,可与主模块一样工作,也可以不工作。前者叫热备份系统(双重系统),后者叫冷备份系统(双工系统、双份系统)。

N版本程序设计是一种静态的故障屏蔽技术,其设计思想是用N个具有相同功能的程序同时执行一项计算,结果通过多数表决来选择。其中N个版本的程序必须由不同的人独立设计,使用不同的方法、设计语言、开发环境和工具来实现。目的是减少N个版本的程序在表决点上相关错误的概率

请给出检错技术的优缺点,并说明检错技术常见的实现方式和处理方式

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

检错技术常见的实现方式:最直接的一种实现方式是判断返回结果,如果返回结果超出正常范围,则进行异常处理;计算运行时间也是一种常用技术,如果某个模块或函数运行时间超过预期时间,可以判断出现故障;还有置状态标志位等多种方法,自检的实现方式需要根据实际情况来选用

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

架构评估

在架构评估过程中,需要正确识别系统的架构风险、敏感点和权衡点,并进行合理的架构决策

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

敏感点是指为了实现某种特定的质量属性,一个或多个系统组件所具有的特性

权衡点是指影响多个指定质量属性,并对多个质量属性来说都是敏感点的系统属性。

web架构

表现层状态转换(REST)是面向资源架构的核心思想,请解释什么是REST,并指出在REST中将哪三种关注点进行分离

REST从资源的角度来定义整个网络系统结构,分布在各处的资源由统一资源标识符(URI)确定,客户端应用程序通过URI获取资源的表现,并通过获得资源表现使得其状态发生改变

REST中将资源、资源的表现和获取资源的动作三者进行分离

XML

说明设计方案采用XML作为GUI描述语言的机制

从设计模式的角度来说,整个XML表现层解析的机制是一种策略模式。在调用显示GUI时,不是直接调用特定的表现技术API,而是装载GUI对应的XML配置文件,然后根据特定的表现技术的解析器解析XML,得到GUI视图实例对象。这样,对于GUI开发人员来说,GUI视图只需要维护一套XML文件即可。

什么是MVC架构风格

MVC架构风格最初是Smalltalk-80中用来构建用户界面时采用的架构设计风格。其中M代表模型(Model),V代表视图(View),C代表控制器(Controller)。在该风格中,模型表示待展示的对象,视图表示模型的展示,控制器负责把用户的动作转成针对模型的操作。模型通过更新视图的数据来反映自身的变化

MVC模式对该个人银行系统的作用

  1. 允许多种界面的扩展,视图的变更与增加,与模型无关
  2. 易于维护,控制器和视图随着模型的扩展而扩展,只要保持公共接口,控制器和视图的旧版本可以继续使用
  3. 可支持功能强大的用户界面

设计模式

设计模式按照其应用模式可以分为三类:创建型、结构型和行为型,请说明三者的作用

创建型模式主要用于创建对象,为设计类实例化新对象提供指南

结构型模式主要用于处理类或对象的组合,对类如何设计以形成更大的结构提供指南

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

策略模式

在具有公共接口的独立类中定义每个计算。可以利用该模式创建各种促销类,它们从同一个超类继承。每个类都有相同名称的标准接口方法,用于根据订单编号计算将要折扣的金额总数。计算每个促销的内部代码对促销类来说完全不同

适配器模式

增加一个类作为适配器,转换类的接口到客户端类期望的另一个接口。实现一个适配器类,这个类为系统的其他部分提供了一个不变的方法供调用,为了集成不同商品供应商提供的税率计算类,编写一个适配器类的子类,包含调用购买类所需的代码。该子类将系统的调用映射到某个供应商的税率计算类。如果要更换供应商,那么只需要写一个新的适配器子类,其他保持不变

项目管理

说明王工拟编制的项目计划中应包括哪些内容

王工在接到任务后开始项目计划的编制工作,编制的计划应包括:

  1. 项目总计划(包括范围定义、工作范围定义、活动定义、资源需求、资源计划、活动排序、费用估算、进度计划及费用计划)
  2. 项目辅助计划(质量计划、沟通计划、人力资源计划、风险计划、采购计划)

信息安全

比较口令认证和公钥认证

  1. 基于口令的认证方式实现简单,但由于口令复杂度及管理方面的原因,易受到认证攻击;而在基于公钥体系的认证方式中,由于其密钥机制的复杂性,同时在认证过程中私钥不在网络上传输,因此可以有效防止认证攻击,与基于口令的认证方式相比更为安全
  2. 按照需求描述,在完成用户身份鉴别后,需依据用户身份进一步对业务数据进行安全保护,且受保护数据中包含用户私有的终端机数据文件,在基于口令的认证方式中,用户口令为用户和认证服务器共享,没有用户独有的直接秘密信息,而在基于公钥的认证方式中,可基于用户私钥对私有数据进行加密保护,实现更加简便
  3. 基于公钥体系的认证方式协议和计算更加复杂,因此其计算复杂度要高于基于口令的认证方式,但业务环境的总用户数在100人以内,用户规模不大,运行环境又为局域网环境,因此基于公钥体系的认证方式可满足平台效率要求

文件可能达到数百兆规模,因采用何种加密方式

应采用流加密方式。文件数据量较大,使用流加密方式可以获得更高的加解密效率

数据加密与解密过程如下:

其加密过程为:首先生成一个对称密钥,使用用户公钥加密这个对称密钥后存储在文件头,然后用生成的对称密钥加密文件数据存储

其解密过程为:用户首先使用自己的私钥解密被加密的对称密钥,再用该对称密钥解密出数据原文

目前数据库管理系统提供的基本数据加密支持主要有以下两种

  1. 加解密API:数据库管理系统提供可在SQL语句中调用的加解密API,应用可以利用这些API构建自己的基础架构,对数据进行加密保护
  2. 透明加密:安全管理员为数据库敏感字段选择加密方式及密钥强度,应用访问受保护数据时只需使用口令打开或关闭密钥表,对数据的加密和解密由数据库管理系统自动完成

加解密API方式的灵活性强,但构建和管理复杂;而透明加密方式管理简单,应用程序负担轻,但灵活性较差。用户要求尽可能减少安全管理与应用程序的负担,因此应选择透明加密方式

构件

获取构件的方法有哪几种?开发构件通常采用哪几种策略?并列举出两种主流构件标准

基于构件的软件开发中,可以通过不同的途径来获取构件,主要包括以下四种方法:

  1. 从现有构件中获得符合要求的构件,直接使用或做适应性修改,得到可复用的构件
  2. 通过遗留工程(Legacy Engineering),将具有潜在复用价值的软件提取出来,得到可复用的构件
  3. 从市场上购买现成的商业构件,BPCOTS(Commercial Off-The-Shell)构件;
  4. 开发新的符合要求的构件

开发构件通常采取三种策略:

  1. 分区(partitioning):指的是将问题情景的空间分割成几乎可以独立研究的部分
  2. 抽象(abstraction):是对在给定实践内执行指定计算的软/硬件单元的一种抽象
  3. 分割(segmentation):是将结构引入构件的行为,支持对行为性质进行时序推理

当前主流构件标准有

  1. CORBA:由OMG(对象管理集团)制定
  2. COM/DCOM:由Microsoft制定
  3. EJB:由SUN的Java企业Bean制定

构件是系统中的一个封装了设计与实现,而只披露接口的可更换的部分

构件是解决软件复用的基础,复用的形式可分为垂直式复用和水平式复用。而垂直式复用的主要关键点在于领域分析,具有领域特征和相似性,受到广泛关注----垂直式复用是与领域特性相关的,而水平式复用是一种公用的服务,不与某个特殊领域相关

构件组装通常采用基于功能的组装技术、基于数据的组装技术和面向对象的组装技术等三种技术

质量属性

可修改性:支持用户通过配置界面依据自己的喜好修改界面风格,包括颜色、布局、代码高亮方式等,配置完成后无需重启环境

可测试性:集成开发环境具有模块化结构,支持以模块为单位进行调试、测试与发布

易用性:经过调研,手机应用开发人员更倾向于使用windows系统,因此集成开发环境的界面需要与windows平台上的主流开发工具的界面风格保持一致

部分需求如下: (a)用户界面支持用户的个性化定制 (b)系统需要支持当前主流的标准和服务,特别是通信协议和平台接口 (c)用户操作的响应时间应不大于3秒,竞拍板块不大于1秒 (d)系统具有故障诊断和快速恢复能力 (e)用户密码需要加密传输 (f)系统需要支持不低于2G的数据缓存 (g)用户操作停滞时间超过一定时限需要重新登录验证 (h)系统支持用户选择汉语、英语或法语三种语言之一进行操作

操作性需求:a、b

性能需求:c、d、f

安全性需求:e、g

文化需求:h

(a)无论胖还是瘦,要做到用户界面的个性化应该都没有问题,而且难说哪种更强。毕竟瘦的只是把业务逻辑从客户端放到了服务器上。 (b)胖和瘦无明显差异。 (c)胖客户端,在客户端的运算能力强一些。瘦客户端可以在服务端面用集群做支持。 (d)瘦客户端将业务逻辑迁移到应用服务器上,所以有故障只要修复服务器上的内容,而胖客户端要更新所有客户端,工作量大,所以此情况下瘦客户端有优势。 (e)胖客户端的后端是数据库,没有业务逻辑,此时要做加密传输没有基础,但瘦客户端可以做到。 (f)胖客户端做到2G数据缓存很容易,而瘦客户端不现实。 (g)瘦客户端与胖客户端均可做到。 (h)瘦客户端与胖客户端均可做到。

相关推荐
凡人的AI工具箱1 小时前
40分钟学 Go 语言高并发:Pipeline模式(一)
开发语言·后端·缓存·架构·golang
小扳2 小时前
微服务篇-深入了解使用 RestTemplate 远程调用、Nacos 注册中心基本原理与使用、OpenFeign 的基本使用
java·运维·分布式·后端·spring·微服务·架构
丁总学Java3 小时前
在 Mac(ARM 架构)上安装 JDK 8 环境
arm开发·macos·架构
cnsxjean11 小时前
SpringBoot集成Minio实现上传凭证、分片上传、秒传和断点续传
java·前端·spring boot·分布式·后端·中间件·架构
那年星空13 小时前
Flutter 设计模式全面解析:抽象工厂
flutter·设计模式·架构
RememberLey13 小时前
【eNSP】ISIS动态路由协议实验
网络·架构·智能路由器·ensp·动态路由协议·isis·huawei
凡人的AI工具箱16 小时前
40分钟学 Go 语言高并发:【实战】并发安全的配置管理器(功能扩展)
开发语言·后端·安全·架构·golang
wclass-zhengge19 小时前
02微服务系统与设计(D1_走出微服务误区:避免从单体到分布式单体)
分布式·微服务·架构
斯普信专业组21 小时前
深度解析:Nginx模块架构与工作机制的奥秘
运维·nginx·架构
黄俊懿1 天前
【深入理解SpringCloud微服务】Sentinel功能详解
后端·spring·spring cloud·微服务·中间件·架构·sentinel