1、操作系统为用户提供了两类接口:操作一级的接口和程序控制一级的接口。其中操作一级的接口包括控制命令、菜单命令、窗口等;程序控制一级的接口包括系统调用。
2、3、4、PV操作
5、6、7、关系模式和E-R图的概念和性质。
8、
9、CISC(Complex Instruction Set Computer,复杂指令集计算机)——基本思想是进一步增强原有指令的功能,用更为复杂的新指令取代原先由子程序完成的功能,实现软件功能的硬件化,导致机器的指令系统越来越庞大而复杂。CISC计算机一般所含的指令数目至少300条以上,有的甚至超过500条。
RISC(Reduced Instruction Set Computer,精简指令集计算机)——基本思想是通过减少指令总数和简化指令功能,降低硬件设计的复杂度,使指令能单周期执行,并通过优化编译,提高指令的执行速度,采用硬线控制逻辑,优化编译程序。
10、高速缓存Cache用来存放当前最活跃的程序和数据,作为主存局部域的副本,其特点是:容量一般在几KB到几MB之间;速度一般比主存快5到10倍,由快速半导体存储器构成;其内容是主存局部域的副本,对程序员来说是透明的。
替换算法的目标是使Cache获得最高的命中率。常用的算法有随机替换算法、先进先出算法、近期最少使用算法和优化替换算法。
Cache的性能是计算机系统性能的重要方面。命中率是Cache的一个重要指标,但不是最主要的指标。Cache设计的目标是在成本允许的条件下达到较高的命中率,使存储系统具有最短的平均访问时间。
Cache的命中率与Cache容量的关系是:Cache容量越大,则命中率越高,随着Cache容量的增加,其命中率逐渐接近100%。但是增加Cache容量意味着增加Cache的成本和增加Cache的命中时间。
11、虚拟存储器是一个容量非常大的存储器的逻辑模型,不是任何实际的物理存储器。它借助于磁盘等辅助存储器来扩大主存容量,使之为更大或更多的程序所使用。虚拟存储器管理方式分为页式虚拟存储器、段式虚拟存储器和段页式虚拟存储器。
虚拟存储器是由硬件和操作系统自动实现存储信息调度和管理的。它的工作过程包括6个步骤:
①中央处理器访问主存的逻辑地址分解成组号a和组内地址b,并对组号a进行地址变换,即将逻辑组号a作为索引,查地址变换表,以确定该组信息是否存放在主存内。
②如该组号已存在主存内,则转而执行④;如果该组号不在主存内,则检查主存中是否有空闲区,如果没有,便将某个暂时不用的组调出送往辅存,以便将需要访问的信息调入主存。
③从辅存读出所要的组,并送到主存空闲区,然后将那个空闲的物理组号a和逻辑组号a登记在地址变换表中。
④从地址变换表读出与逻辑组号a对应的物理组号a。
⑤从物理组号a和组内字节地址b得到物理地址。
⑥根据物理地址从主存中存取必要的信息。
页式调度是将逻辑和物理地址空间都分为固定大小的页。主存按页顺序编号,而每个独立编址的程序空间有自己的页号顺序,通过调度,辅存中程序的各页可以离散装入主存中不同的页面位置,并根据页表一一对应检索。
12、总线是一组能为多个部件分时共享的信息传送线,用来连接多个部件并为之提供信息交换通路。所谓共享,指连接到总线上的所有部件都可通过它传递信息;分时性指某一时刻只允许一个部件将数据发送到总线上。因此,共享是通过分时实现的。
13、核心层交换机一般都是三层或三层以上的交换机,采用机箱式的外观,具有很多冗余的部件。在进行网络规划设计时,核心层的设备通常要占大部分投资,因为核心层是网络的高速主干,需要转发非常庞大的流量,对于冗余的能力、可靠性和传输速度方面要求较高。
核心层交换机还需要支持链路聚合功能,以确保为分布层交换机发送到核心层交换机的流量提供足够的带宽。核心层交换机还应支持聚合万兆链接。这样可以让对应的分布层交换机尽可能高效的向核心层传送流量。Qos是核心层交换机提供的重要服务之一。
策略路由是一种比基于目标网络进行路由更加灵活的数据包路由转发机制。应用了策略路由,路由器将通过路由图决定如何对需要路由的数据包进行处理,路由图决定了一个数据包的下一跳转发路由器。
14、结构化布线系统分为六个子系统:工作区子系统、水平子系统、干线(垂直)子系统、设备间子系统、管理子系统和建筑群子系统。
干线(垂直)子系统是由设备间(如计算机房、程控交换机房等)提供建筑中最重要的铜线或光纤线主干线路构成,是整个建筑的信息交通枢纽。一般它提供位于不同楼层的设备间和布线框间的多条连接路径,也可以连接单层楼的大片区域。
15、一个网络系统从构思开始,到最后被淘汰的过程称为网络生命周期。一般来说,网络生命周期应该包括系统的构思和计划、分析和设计、以及运行和维护的全过程。网络系统的生命周期是一个循环迭代的过程,每次迭代的动力都来自于网络应用需求的变更。每一个迭代周期都是网络重构的过程。常见的迭代周期可以分为以下五个阶段:需求规范、通信规范、逻辑网络设计、物理网络设计、实施阶段。
逻辑网络设计是指根据用户需要确定网络建设的方案,包括拓扑结构规划、地址分配、网络技术和服务器的选择等。物理网络设计的任务是选择符合逻辑性能要求的传输介质、设备、部件和场所等,并将他们搭建成一个可以正常运行的网络。
16、负载均衡一般由服务端安装的附加软件来实现,通过采用负载均衡技术,系统的吞吐量会得到增加。负载均衡可以在不同地理位置、不同网络结构的服务器集群之间进行,采用负载均衡技术,用户可以仅通过IP地址或域名访问相应的服务器。
17、
18、19、关键要判断在进行集成时,需要数据库中的单表还是多表进行数据整合。如果是单表即可完成整合,则可以将该表包装为记录,采用主动记录的方式进行集成;如果需要多张表进行数据整合,则需要采用数据映射的方式完成数据集成与处理。
20、21、针对题干描述,该企业进行系统集成时,“业务系统的运行平台和开发语言差异较大,而且系统所使用的通信协议和数据格式各不相同”。在这种情况下,需要采用总线技术对传输协议和数据格式进行转换与适配。当需要集成并灵活定义系统功能之间的协作关系时,应该采用基于工作流的功能关系定义方式。
22、软件产品配置是指一个软件产品在生存周期各个阶段所产生的各种形式和各种版本的文档、计算机程序、部件以及数据的集合。该集合的每一个元素称为该产品配置中的一个配置项。配置项主要有一下两大类。
属于产品组成部分的工作成果,如需求文档、设计文档、源代码和测试用例等。
属于项目管理和机构支撑过程域产生的文档,如工作计划、项目质量报告、项目跟踪报告等。这些文档虽然不是产品的组成部分,但是值得保存。
23、软件质量是指反映软件系统或软件产品满足规定或隐含需求的能力的特征和特性全体。软件质量管理是指对软件开发过程进行独立的检查活动,由质量保证、质量规划和质量控制三个主要活动构成。软件质量保证是指为保证软件系统或软件产品满足用户要求的质量而进行的有计划、有组织的活动,其目的是生产高质量的软件。软件评审是软件质量保证的主要活动之一。
24、需求跟踪包括编制每个需求与系统元素之间的联系文档,这些元素包括别的需求、体系结构、其他设计部件、源代码模块、测试、帮助文件和文档等。跟踪能力信息使变更影响分析十分便利,有利于确认和评估实现某个建议的需求变更所必须的工作。
利用需求跟踪能力链可以跟踪一个需求使用的全过程,也就是从初始需求到实现的前后生存期。跟踪能力是优秀需求规格说明书的一个特征,为了实现跟踪能力,必须统一地标识出每一个需求,以便能明确的进行查阅。
客户需求向前追溯到软件需求。这样就能区分出开发过程中或者开发结束后,由于客户需求变更受到影响的软件需求,这也可以确保软件需求规格说明包括了所有客户需求。
从软件需求回溯相应的客户需求。这也就是确认每个软件需求的源头。如果使用实例的形式来描述客户需求,那么客户需求与软件需求之间的跟踪情况就是使用实例和功能性需求。
从软件需求向前追溯到下一级工作产品。由于开发过程中系统需求转变为软件需求、设计、编码等,所以通过定义单个需求和特定产品元素之间的(联系)链,可以从需求向前追溯到下一级工作产品。这种联系链告诉我们每个需求对应的产品部件,从而确保产品部件满足每个需求。
从产品部件回溯到软件需求。说明了每个部件存在的原因。如果不能把设计元素、代码段或测试回溯到一个需求,可能存在“画蛇添足”的程序。然而,如果这些孤立的元素表明了一个正当的功能,则说明需求规格说明书漏掉了一项需求。
25、需求定义的过程也就是形成需求说明书的过程,通常有两种需求定义的方法:严格定义方法和原型方法。
严格定义方法也称为预先定义,需求要严格建立在以下基本假设之上:
①所有需求都能够被预先定义。这意味着在没有实际系统运行经验的情况下,全部的系统需求均可通过逻辑推断得到。但这种假设在许多场合是不能成立的。
②开发人员与用户之间能够准确而清晰地交流。
③采用图形(或文字)可以充分体现最终系统。在使用严格定义需求的开发过程中,开发人员与用户之间交流与沟通的主要工具是定义报告,包括文字、图形、逻辑规则和数据字典等技术工具。
原型化的需求定义过程是一个开发人员与用户通力合作的反复过程。从一个能满足用户基本需求的原型系统开始,允许在开发过程中提出更好的要求,根据用户的要求不断地对系统进行完善,它实质上是一种迭代的循环型的开发方式。采用原型方法是需注意以下几个问题:
①并非所有的需求都能在系统开发前被准确地说明。
②项目干系人之间通常都存在交流上的困难。
③需要实际的、可供用户参与的系统模型。
④有合适的系统开发环境。
⑤反复是完全需要和值得提倡的。需求一旦确定,就应该遵从严格定义的方法。
26、软件需求工程是包括创建和维护软件需求文档所必须的一切活动的过程,可以分为需求开发和需求管理两大工作。需求开发包括需求获取、需求分析、编写需求规格说明书(需求定义)和需求验证4个阶段。在需求开发阶段需要确定软件所期望的用户类型,获取各种用户类型的需求,了解实际的用户任务和目标,以及这些任务所支持的业务需求。
需求管理是一个对系统需求变更、了解和控制的过程,通常包括定义需求基线、处理需求变更和需求跟踪方面的工作。需求管理强调:控制对需求基线的变动;保持项目计划与需求的一致;控制单个需求和需求文档的版本情况;管理需求和联系链,或者管理单个需求和其他项目可交付产品之间的依赖关系;跟踪基线中的需求状态。
需求开发与需求管理是相辅相成的,需求开发是主线、目标;需求管理是支持、保障。
27、28、RUP(Rational Unified Process,统一软件开发过程)
RUP软件开发生命周期是一个二维的软件开发模型,其中有9个核心工作流,分别为:业务建模、需求、分析与设计、实现、测试部署、配置与变更管理、项目管理以及环境。
RUP把软件开发生存周期划分为多个循环,每个循环生成产品的一个新的版本,每个循环依次由4个连续的阶段组成,每个阶段完成确定的任务。这4个阶段分别为:
初始阶段:定义最终产品视图和业务模型,并确定系统范围。
细化阶段:设计及确定系统的体系结构,指定工作计划及资源要求。
构造阶段:构造产品并继续演进需求、体系结构、计划,直至产品提交。
移交阶段:把产品提交给用户使用。
每个阶段都有一个或多个连续的迭代组成。迭代并不是重复的做相同的事,而是针对不同用例的细化和实现。每一个迭代都是一个完整的开发过程,它需要项目经理根据当前迭代所处的阶段以及上次迭代的结果,适当地对工作流中的行为进行裁剪。在每个阶段结束前有一个里程碑评估该阶段的工作。如果未能通过该里程碑的评估,则决策者应该做出决定,是取消该项目还是继续该阶段的工作。
与其他软件开发过程相比,RUP具有自己的特点,即RUP是用例驱动的、以体系结构为中心的、迭代和增量的软件开发过程。
29、30、类封装了信息和行为,是面向对象的重要组成部分。设计类是面向对象设计过程中最重要的组成部分,也是最复杂和最耗时的部分。在面向对象设计过程中,类可以分为三种类型:实体类、边界类和控制类。
实体类映射需求中的每个实体。实体类保存需要存储在永久存储体中的信息。实体类对用户来说是最有意义的类,通常采用业务领域术语命名,一般来说是一个名词,在用例模型向领域模型的转化中,参与者一般对应于实体类。
控制类是用于控制用例工作的类,一般由动宾结构的短语(“动词+名词”或“名词+动词”)转化而来的名词。控制类用于对一个或几个用例所特有的控制行为进行建模,控制对象(控制类的实例)通常控制其他对象,因此它们的行为具有协调性。
边界类用于封装在用例内、外流动的信息或数据流。边界类是一种用于对系统外部环境与其内部运作之间的交互进行建模的类,用于实现目标软件系统与外部系统或外部设备之间的信息交流和互操作。
31、常用的面向对象设计原则包括开闭原则、里氏替换原则、依赖倒置原则、组合/聚合复用原则、接口隔离原则和最少知识原则等。这些设计原则首先都是面向复用的原则,遵循这些设计原则可以有效地提高系统的复用性,同时提高系统的可维护性。
最少知识原则(也称为迪米特法则)是面向对象设计原则之一,指一个软件实体应当尽可能少地与其他实体发生相互作用。这样,当一个实体被修改时,就会尽可能少地影响其他的实体。
最少知识原则主要用于控制信息的过载。在将最少知识原则运用到系统设计中时,要注意以下几点:
①在类的划分上,应当尽量创建松耦合的类,类之间的耦合度越低,就越有利于复用。一个处在松耦合中的类一旦被修改,不会对关联的类造成太大波动。
②在类的结构设计上,每个类都应当尽量降低其属性和方法的访问权限。
③在类的设计上,只要有可能,一个类型应当设计成不变类。
④在对其他类的引用上,一个对象对其他对象的引用应当降到最低。
32、结构化方法也称为生命周期法,是一种传统的信息系统开发方法,由结构化分析、结构化设计和结构化程序设计三部分组成,其精髓是自顶向下、逐步求精和模块化设计。
结构化方法的主要特点是:开发目标清晰化、开发工作阶段化、开发文档规范化和设计方法结构化。结构化方法特别适合于数据处理领域的问题,但是不适应于规模较大、比较复杂的系统开发。结构化方法的缺点是开发周期长、难以适应需求的变化、很少考虑数据结构。
面向对象方法是目前比较主流的开发方法。面向对象方法是系统的描述及信息模型的表示与客观实体相对应,符合人们的思维习惯,有利于系统开发过程中用户与开发人员的交流和沟通,缩短开发周期,提高系统开发的正确性和效率。可以把结构化方法和面向对象方法结合起来进行系统开发。首先使用结构化方法进行自顶向下的整体划分,然后再自底向上地采用面向对象方法开发系统。
敏捷方法是从20世纪90年代开始逐渐引起广泛关注的一种新型软件开发方法,以应对快速变化的需求。敏捷方法是一种以人为核心、迭代、循序渐进的开发方法。敏捷方法强调,让客户满意和软件尽早增量发布;小而高度自主的项目团队;非正式的方法;最小化软件工程工作产品以及整体精简开发。与传统方法相比,以它的灵活性来适应需求的变化。
面向服务的方法以粗粒度、松散耦合和基于标准的服务为基础,增强了系统的灵活性、可复用性和可演化性。
33、34、组合(Composite)模式又称为整体-部分(Part-whole)模式,属于对象的结构模式。在组合模式中,通过组合多个对象形成树形结构以表示整体-部分的结构层次。组合模式对单个对象(即叶子对象)和组合对象(即容器对象)的使用具有一致性。Composite模式的结构如下:
类Component为组合中的对象声明接口,在适当的情况下,实现所有类共有接口的缺省行为,声明一个接口用于访问和管理Component的子部件;
类Left在组合中表示叶结点对象,叶结点没有子结点,并在组合中定义图元对象的行为;
类Composite定义有子部件的那些部件的行为,存储子部件,并在Component接口中实现与子部件有关的操作;
类Client通过Component接口操纵组合部件的对象。
35、36、企业战略数据模型可分为数据库模型和数据仓库模型,数据库模型用来描述日常事务处理中的数据及其关系了数据仓库模型则描述企业高层决策者所需信息及其关系。在企业信息化过程中,数据库模型是基础,一个好的数据库模型应该客观地反映企业生产经营的内在联系。
37、企业信息化建设的核心和本质是企业运用信息技术,进行知识的挖掘,对业务流程进行管理。企业信息化的实施,可以沿着两个方向进行,自上而下方法必须与企业的制度创新、组织创新和管理创新相结合;自下而上方法必须以作为企业主体的业务人员的直接收益和使用水平逐步提高为基础。
38、企业业务流程重构是利用信息和网络技术,对企业的组织结构和工作方法进行“彻底的、根本性的”重新设计,以适应当今市场发展和信息社会的需求。核心业务应用方法是围绕核心业务应用计算机和网络技术,这是很多企业信息化成功的秘诀和有效途径。在业务数量浩繁并且流程错综复杂的大型企业里,建设覆盖整个企业的信息系统往往很难成功,各个部门的局部开发和应用又有很大的弊端,会造成系统严重分隔,形成许多“信息孤岛”,造成大量的无效或低效投资。常见的资源管理方法有ERP(企业资源规划)和SCM(供应链管理)。人力资本与人力资源的主要区别是人力资本理论把一部分企业的优秀员工看作是一种投资,能够取得投资收益。
39、外部设计处于软件设计的开始阶段,主要是按系统需求说明来确定此系统的软件结构和对应于系统需求说明,设计出各个功能部分的功能和接口。内部设计处于软件工程中的概要设计阶段,按照外部设计中确立的系统软件结构,来细化此系统各个功能部件以及各个部件接口的设计,并且详细给出各个功能部件详细的数据输入、输出设计。内部设计细化外部设计中的各种功能。
40、原型是软件系统的初始版本,用来演示概念并尝试设计选择,通常用来发现更多的问题和可能的解决方案。快速迭代式的原型开发能够有效控制成本,根据原型与最终产品之间的关系,原型开发分为三类:抛弃式原型开发利用原型验证和澄清系统的需求描述,重新构造系统;演化式原型开发逐步改进和细化原型,将原型进化至产生出目标系统;增量式原型开发在建立软件总体设计的基础上,采用增量开发方法,使原型称为最终系统。
41、静态分析通过解析程序文本,从而识别出程序语句的各个部分,审查可能的缺陷和异常之处,静态分析包括五个阶段:控制流分析阶段找出并突出显示那些带有多重出口或入口的循环以及不可达到的代码段;数据使用分析阶段突出程序中变量的使用情况;接口分析阶段检查子程序和过程声明以及它们使用的一致性;信息流分析阶段找出输入变量和输出变量之间的依赖关系;路径分析阶段找出程序中所有可能的路径并画出此路径中执行的语句。
42、确认测试主要用于验证软件的功能、性能和其他特性是否与用户需求一致。根据用户参与程度,通常包括以下4种类型。
①内部确认测试。内部确认测试主要由软件开发组织内部按照软件需求规格说明书进行测试。
②α测试和β测试。对于通用产品型的软件开发而言,α测试是指由用户在开发环境下进行测试,通过α测试以后的产品通常称为α版;β测试是指由用户在实际使用环境下进行测试,通过β测试的产品通常称为β版。一般在通过β测试后,才能把产品发布或交付给用户。
③验收测试。验收测试是指针对软件需求规格说明书,在交付前以用户为主进行的测试。其测试对象为完整的、集成的计算机系统。验收测试的目的是,在真实的用户工作环境下,检验软件系统是否满足开发技术合同或软件需求规格说明书。验收测试的结论是用户确定是否接收该软件的主要依据。
系统测试的目的是在真实系统工作环境下,验证完整的软件配置项能否和系统正确连接,并满足系统/子系统设计文档和软件开发合同规定的要求。系统测试的主要内容包括功能测试、健壮性测试、性能测试、用户界面测试、安全性测试、安装与反安装测试等。其中性能测试包括负载测试、压力测试、可靠性测试和并发测试。
43、在系统交付以后,改变系统的任何工作,都可以被称为维护。在系统运行过程中,软件需要维护的原因是多样的,根据维护的原因不同,可以将软件维护分为以下4种:
①正确性(改正性)维护。改正在系统开发阶段已发生而系统测试阶段尚未发现的错误。
②适应性维护。在使用过程中,外部环境(新的硬、软件配置)、数据环境(数据库、数据格式、数据输入/输出方式、数据存储介质)可能发生变化。为使软件适应这种变化,而去修改软件的过程就称为适应性维护。
③完善性维护。在软件的使用过程中,用户往往会对软件提出新的功能与性能要求。维护满足这些要求,需要修改或再开发软件,以扩充软件功能、增强软件性能、改进加工效率、提高软件的可维护性。这种情况下进行的维护活动称为完善性维护。
④预防性维护。这是指为了适应未来的软硬件环境的变化,应主动增加预防性的新的功能,以使应用系统适应各类变化而不被淘汰。
44、45、架构风格描述了一类软件架构的特征,它独立于实际问题,强调软件系统中通用的组织结构选择。垃圾回收机制是Java语言管理内存资源时常用的一种设计模式。
46、47、48、“4+1”视图,用来描述软件系统的架构。在“4+1”视图中,逻辑视图用来描述设计的对象模型和对象之间的关系;开发视图描述了软件模块的组织与管理;过程视图描述设计的并发和同步特征。
49、基于架构的软件设计(ABSD)以架构风格和质量属性为中心,强调由商业、质量和功能需求的组合驱动软件架构设计。ABSD方法有三个基础:功能分解、选择架构风格实现质量及商业需求和软件模板的使用。
50、黑板架构风格
51、解释器架构风格
52、数据共享架构风格
53、中介者模式
54、命令模式
55、责任链模式
56、57、
58、59、60、架构设计策略和质量属性的理解。软件质量属性通常需要采用特定的设计策略实现,并且设计策略会对其他的质量属性产生影响。心跳机制策略能提高该系统的可用性,优先级队列策略能够提高该系统的性能,限制访问策略能够提高该系统的安全性。
61、架构权衡分析法(ATAM)是一种常用的软件架构评估方法,该方法强调对软件的质量属性进行分析、分类和优先级排序等工作,在此基础上构件质量属性效用树,并对风险点、非风险点、敏感点和权衡点进行识别和分析。
62、63、一个质量属性会同时影响另外两个质量属性,描述的是一个敏感点;由于某种问题会影响系统的某种质量属性,这是一个系统的风险点。
64、SNMP(Simple Network Management Protocol,简单网络管理协议)
SNMPv3把对网络协议的安全威胁分为主要的和次要的两类。标准规定安全模块必须提供防护的两种主要威胁是:
①修改信息(Modification of Information):就是某些未经授权的实体改变了进来的SNMP报文,企图实施未经授权的管理操作,或者提供虚假的管理对象。
②假冒(Masquerade):即未经授权的用户冒充授权用户的标识,企图实施管理操作。
SNMPv3标准还规定安全模块必须对两种次要威胁提供防护:
①修改报文流(Message Stream Modification):由于SNMP协议通常是基于无连接的传输服务,重新排序报文流、延迟或重放报文的威胁都可能出现。这种威胁的危害性在于通过报文流的修改可能实施非法的管理操作。
②消息泄露(Disclosure):SNMP引擎之间交换的信息可能被偷听,对这种威胁的防护应采取局部的策略。
有两种威胁是安全体系结构不必防护的,因为它们不是很重要,或者这种防护没有多大作用:
①拒绝服务(Denial of Service):因为在很多情况下拒绝服务和网络失效是无法区别的,所以可以由网络管理协议来处理,安全子系统不必采取措施。
②通信分析(Traffic Analysis):即由第三者分析管理实体之间的通信规律,从而获取需要的信息。由于通常都是由少数管理站来管理整个网络的,所以管理系统的通信模式是可预见的,防护通信分析就没有多大作用了。
65、PGP(Pretty Good Privacy)已经成为使用最广泛的电子邮件加密软件。
一、质量属性:
1、性能:系统的响应能力,即要经过多长时间才能对某个事件作出响应或者在某段时间内系统所能处理事件的个数。架构设计策略:增加计算资源、改善资源需求(减少计算复杂度等)、资源管理(并发、数据复制等)和资源调度(先进先出队列、优先级队列等)
2、可用性:系统能够正常运行的时间比例。架构设计策略:Ping/Echo、心跳、异常和信息主动冗余等。
3、可靠性:软件系统在应用或错误面前,在意外或错误使用的情况下维持软件系统功能性的能力。架构设计策略:运行时注册,主动冗余 可靠性的计算、检错技术和容错技术
4、健壮性:处理环境中,系统能够承受压力或变更的能力。
5、安全性:系统向合法用户提供服务的同时能够阻止非授权用户使用的企图或拒绝服务的能力。架构设计策略:抵御攻击(授权、认证和限制访问等)、攻击检测(入侵检测等)、从攻击中恢复(部分可用性策略)和信息审计等。
6、可修改性:能快速的以较高的性能价格比对系统进行变更。架构设计策略:软件模块泛化、限制模块之间通信、使用中介、信息隐藏、延迟绑定等。
7、可变性:体系结构经扩充或变更成为新体系结构的能力。
8、易用性:用户使用一个软件产品完成指定任务的难易程度。
9、可测试性:软件发现故障并隔离、定位其故障的能力特性,以及在一定时间或成本前提下,进行测试设计、测试执行的能力。架构设计策略:记录-回放
10、功能性:系统所能完成所期望工作的能力。
11、互操作性:系统与外界或系统与系统之间的相互作用的能力。
二、“4+1”视图
对逻辑架构进行描述,最早由 Philippe Kruchten 提出,他在1995年的《IEEE Software》上发表了题为《The 4+1 View Model of Architecture》的论文,引起了业界的极大关注,并最终被 RUP 采纳,现在已经成为架构设计的结构标准。
逻辑视图(Logical View),设计的对象模型(使用面向对象的设计方法时)。
过程视图(Process View),捕捉设计的并发和同步特征。
物理视图(Physical View),描述了软件到硬件的映射,反映了分布式特性。
开发视图(Development View),描述了在开发环境中软件的静态组织结构。
架构的描述,即所做的各种决定,可以围绕着这四个视图来组织,然后由一些用例 (use cases)或场景(scenarios)来说明,从而形成了第五个视图。
三、经典软件体系结构风格
1、虚拟机风格:java虚拟机
2、事件驱动风格:图形用户界面
3、管道-过滤器风格:数据内容的逐步分解与分阶段处理。适合服务器服务端处理软件的要求。
4、隐式调用风格:回调机制,集成调试器,根据外部事件进行响应的场景。
5、解释器风格:强调用户定义系统中对象的关系和行为这一特性,需要在软件架构层面提供一种运行时的系统行为定义与改变的能力。
6、过程控制风格:实时获取外界信息,与用户自定义信息进行比较并作出动作。
7、黑板风格:正确结果不止一个,求解过程比较复杂,需要通过专家只是和反馈逐步得到正确的结果。比如人工智能等。
8、数据共享风格:关注编译过程和程序的中间表示,围绕程序的各种形态进行转化与处理,针对程序的各种形态建立数据库,通过中心数据库进行转换与处理。
四、架构模式、惯用法、设计模式
1、架构模式:设计软件中的高层决策,反映了开发软件系统过程中所做的基本设计决策;
2、设计模式:主要关注软件系统的设计,与具体的实现语言无关;
3、惯用法:实现时通过某种特定的程序设计语言来描述构建于构建之间的关系,例如C++语言中的引用-计数
五、设计模式
1、装饰模式:能够动态的对一个对象进行功能上的扩展,也可以对其子类进行功能上的扩展。
2、观察者模式:对于某个具体固定结构的活动节点需要多种处理能力,且处理能力可扩展,也就说要求在不改变原来类结构(活动节点)的基础上增加新功能。
3、工厂模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类
4、责任链模式:很多对象由每一个对象对其下家的引用而连接起来形成一条链,请求在这个链上传递,直到链上的某个对象决定处理此请求。
5、中介者模式:用一个中介者对象封装一系列的对象交互。
6、代理模式:提高系统效率,避免同时创建对象。
7、命令模式:将请求、动作封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。
8、组合模式:(整体-部分模式)通过多个对象形成属性结构以表示整体-部分的结构层次。对单个对象(叶子对象)和组合对象(容器对象)的使用具有一致性。
六、权衡点和敏感点
敏感点是一个或多个构件(或之间的关系)的特性
权衡点是影响多个质量属性的特性,是多个质量属性的敏感点。
其实绝大多数考虑都是基于权衡点来考虑的,在某个权衡点上考虑时,某些构件对于某一点比较敏感。可见敏感点是从构件角度来考虑,权衡点是从构件交互的角度来考虑。
七、架构权衡分析法:ATAM(Architecture Tradeoff Analysis Method)
评价软件架构的一种综合全面的方法。这种方法不仅可以揭示出构架满足特定质量目标的情况,而且(因为它认识到了构架决策会影响多个质量属性)可以使我们更清楚地认识到质量目标之间的联系——即如何权衡诸多质量目标。
1、ATAM参与人员
评估小组、项目决策者、构架涉众
2、ATAM的结果
ATAM评估将产生至少如下结果:一个简洁的构架表述;表述清楚的业务目标;用场景集合捕获的质量需求;构架决策到质量需求的映射;所确定的敏感点和权衡点集合;有风险决策和无风险决策;风险主题的集合。
3、ATAM的目标
分析多个质量属性间的关系,属性间可能存在冲突,需要权衡取舍。按照质量属性需求,评价体系结构设计。
4、ATAM的阶段
关系和准备:参与人员为评估小组负责人和主要的项目决策者,根据要求进行,大概需要几周的时间。
评估:参与人员为评估小组和项目决策者,一般需要1周,还有2~3周的中断时间。包括以下步骤:ATAM方法的表述;商业动机的表述;构架的表述;对构架方法进行分类;生成质量属性效用树;分析构架方法。
评估(继续):参与人员为评估小组、项目决策者以及涉众,一般需要2天。包括以下步骤:集体讨论并确定场景的优先级;分析构架方法;结果的表述;
后续工作:参与人员为评估小组和评估客户,一般需要一周。
八、DSSA(Domain Specific Software Architecture)特定领域软件架构
特定领域软件架构师在一个特定应用领域为一组应用提供组织结构参考的标准软件架构。实施DSSA的过程包括一系列基本活动,其中领域设计活动的主要目的是获得DSSA,该活动参与人员中,领域专家的主要任务是提供关于领域中系统的需求规约和实现的知识。
DSSA与软件体系结构风格是从不同角度出发研究问题的两种结果,前者从问题域出发,后者从解决域出发。
DSSA只对某个领域进行专家知识的提取、存储、组织,但可以同时使用多种软件体系结构风格;而在某个软件体系结构风格中进行专家知识组织时,可以将提取的公共结构和设计方法扩展到多个应用领域。
DSSA通常选用一个或多个适合所研究的领域的体系结构风格,并设计一个该领域专用的体系结构分析设计工具。但该方法提取的专家知识只能应用于一个较小的范围--所在领域。一个领域的
DSSA及其工具在另一个领域中是不适应的,或不可以重用的。
体系结构风格避免设计到特定的应用领域或背景,所提取的知识比DSSA提取的知识应用范围要广。但在一个特定领域中,正是由于体系结构风格对领域知识、领域背景的忽略,使其在一个具体领域的开发中的作用并不比DSSA要大。
DSSA与体系结构风格是互为补充的两种技术。
九、常见算法
1、对称算法:DES(Data Encryption Standard,数据加密标准)、IDEA(International Data Encryption Algorithm国际数据加密算法)
2、不对称算法:RSA、ECC
3、散列函数(摘要算法):MD5(Message Digest 5)
4、数字签名:RSA、ElGamal、Fiat-Shamir、DSS/DSA、椭圆曲线
5、数字水印:空域算法、变换域算法、压缩域算法、NEC算法、生理模型算法等
6、安全协议:Ipsec(跨越网络边界的通信)、Secure Socket Layer:SL协议(计算机之间的整个会话进行加密)、RGP(Pretty Good Privacy 电子邮件在Internet上的通信安全)
十、数据备份
1. 完全备份,所需时间最长,但恢复时间最短,操作最方便可靠。
2. 差异备份,备份上一次的完全备份后发生变化的所有文件。备份时间较长,占用空间较多,恢复时间
较短。
3. 增量备份,上一次备份后,所有发生变化的文件。备份时间较短,占用空间较少,恢复时间较长。
4. 按需备份。有很好的选择性。
十一、测试方法
1、恢复测试:检测系统的容错能力。
2、安全性测试:检测系统的安全机制。
3、强度测试:系统在异常情况下的承受能力的测试,是检测系统在极限状态下运行,性能下降的幅度是都在允许的范围内。
4、性能测试:检测系统是否满足系统设计方案说明书对性能的要求。
5、可靠性测试:平均失效间隔时间(mean time between failures)是否超过了规定的时限、因故障而停机时间MTTR(mean time to repairs)在一年中不应超过多少时间。
6、安装测试:检测在安装过程中是否有误、是否容易操作。
7、确认测试:α测试(开发阶段)和β测试(实际使用阶段)
十二、ABSD(Architecture Based Sofaware Development)基于软件架构的设计
强调由商业、质量和功能需求的组合驱动软件架构设计。强调采用视角和试图来描述软件架构,采用用例和质量属性场景来描述需求。
十三、RUP软件开发
RUP软件开发生命周期是一个二维的软件开发模型,其中有9个核心工作流,分别是:业务建模、需求、分析与设计、实现、测试部署、配置与变更管理、项目管理以及环境。
RUP把软件开发生存周期划分为多个循环,每个循环生成产品的一个新的版本,每个循环依次由4个连续的阶段组成,每个阶段完成确定的任务。这4个阶段分别为:
1、初始阶段:定义最终产品试图和业务结构,并确定系统范围;
2、细化阶段:设计及确定系统的体系结构,制定工作计划及资源要求;
3、构造阶段:构造产品并继续演进需求、体系结构、计划直至产品提交;
4、移交阶段:把产品提交各用户使用。
十四、数据流图和流程图
数据流图作为一种图形化工具,用来说明业务处理过程、系统边界内所包含的功能和系统中的数据流。
流程图以图形化的方式展示应用程序从数据输入开始到获得输出为止的逻辑过程,描述处理过程的控制流。
两者的区别:
1、数据流图中的处理过程可并行;流程图在某个时间点只能处于一个处理过程。
2、数据流图展示系统的数据流;流程图展示系统的控制流;
3、数据流图展现全局的处理过程,过程之间遵循不同是计时标准;流程图中处理过程遵循一直的计时标准;
4、数据流图适用于系统分析中的逻辑建模阶段;流程图适用于系统设计中的物理建模阶段。
高质量数据流图设计时考虑的三个原则:
1、复杂性最小化原则。DFD分层结构就是把信息划分为小的且相对独立的一大批子集例子,这样就可以单独考察每一个DFD。如果要了解某个过程更加详细的信息,可以跳转到该过程的下一层;如果要知道一个DFD如何与其他DFD相关联,可以跳转到上一层的DFD记性考查。
2、接口最小化原则。接口最小化是复杂性最小化的一种具体规则,在设计模型时,应使得模型中各个元素之间的接口数或连接数最小化。
3、数据流一致性原则。一个过程和它的过程分解在数据流内容中是否有差别?是否存在有数据流出但没有相应的数据流入的加工?是否存在有数据流入但没有相应的数据流出的加工?
十五、可靠性
可靠度:系统在规定的条件下、规定的时间内不发生失效的概率。
失效率:(风险函数)运行至此刻系统未出现失效的情况下,单位时间系统出现失效的概率。
可靠度计算方式:
1)、串联:R1*R2*R3….
2)、并联:1-(1-R1)*(1-R2)*(1-R3)…
1、容错技术
动态冗余:通过故障检测、故障定位及故障恢复等手段达到容错的目的。主要方式:多重模块待机储备,当系统检测到某工作模块出现错误时,就用一个备用的模块来代替它并重新运行。个备用模块在其待机时,可与主模块一样工作,也可以不工作。
N版本程序设计:用N个具有相同工呢过的程序同时执行一项计算,结果通过多数表决来选择。其中N个版本必须由不同的人独立设计,使用不同的方法、设计语言、开发环境和工具来实现,目的是减少N个版本的程序在表决点上相关错误的概率。
前者叫冷备份系统,后者叫热备份系统。
2、检错技术:代价一般不低于容错技术和冗余技术,但有一个明显的缺点,就是不能自动解决故障,出现故障后如果不进行人工干预,将最终导致软件系统不能正常运行。
1)、实现方式:判断返回结果,若超出正常范围,则进行一场处理;计算运行是I教案,若某模块或函数运行时间超出预期时间,可判断出现故障;设置状态标注位等多种方法。
2)、处理方式:“查出故障-停止软件运行-报警”方式;不停止或部分停止软件系统运行的处理方式。
十六、REST架构风格(REpresentational State Transfer,表述性状态转移)
Rest从资源的角度来定义整个网络系统结构,分布在各处的资源由统一资源标识符(URI)确定,客户端应用程序通过URI获取资源的表现,并通过获得资源表现使得其状态发生改变。REST中将资源、资源的表现、获取资源的动作三者进行分离。
十七、UML (统一建模语言)
通过统一的表示法,使不同知识背景的领域专家、系统分析、开发人员、用户可以方便地交流。
UML 通过图形化的表示机制从多个侧面对系统的分析和设计模型进行刻画。
10 种视图,四类:
1、用例图
2、静态图,包括类图、对象图、包图。
类图的边表示类之间的联系,包括继承、关联、依赖、聚合等。
对象图描述在某种状态下或某一时间段,系统中活跃的对象及其关系。
包由子包、类组成。
3、行为图,包括交互图、状态图、活动图,他们从不同的侧面刻画系统的动态行为。
交互图分为顺序图、合作图。顺序图强调对象之间消息发送的时序。合作图更强调对象间的动态协作关系。
状态图描述对象的动态行为。
活动图描述操作序列,这些操作序列可以并发、同步,包含控制流、信息流。
4、实现图,包括构件图、部署图。描述组成和分布情况。
部署图节点表示实际的计算机和设备,边表示节点之间的物理连接,也可以显示连接的类型及节点之间的依赖性。