软考系统架构设计师学习笔记
https://wenku.baidu.com/view/9341d496f18583d0496459f8
第一章
1.1.1系统架构师的概念
现代信息系统“架构”三要素:构件、模式、规划;规划是架构的基石,也是这三个贡献中最重要的。架构本质上存在两个层次:概念层,物理层。
1.2.1系统架构师的定义
负责理解、管理并最终确认和评估非功能性系统需求,给出开发规范,搭建系统实现的核心架构,对整个软件架构、关键构建、接口进行总体设计并澄清关键技术细节。
主要着眼于系统的“技术实现”,同时还要考虑系统的“组织协调”。要对所属的开发团队有足够的了解,能够评估该开发团队实现特定的功能需求目标和资源代价。
1.2.2系统架构师技术素质对软件工程标准规范有良好的把握。
1.2.3系统架构师管理素质
系统架构师是一个高效工作团队的创建者,必须尽可能使所有团队成员的想法一致,为一个项目订制清晰的、强制性的、有元件的目标作为整个团队的动力;
必须提供特定的方法和模型作为理想的技术解决方案;必须避免犹豫,必须具备及时解决技术问题的紧迫感和自信心。
1.2.4系统架构师与其他团队角色的协调
系统分析师,需求分析,技术实现
系统架构师,系统设计,基于环境和资源的系统技术实现
项目管理师,资源组织,资源实现
由于职位角度出发产生冲突制约,不可能很好地给出开发规范,搭建系统实现的核心架构,并澄清技术细节,扫清主要难点。
所以把架构师定位在项目管理师与系统分析师之间,为团队规划清晰的目标。对于大型企业或项目,如果一人承担多个角色,往往容易发生顾此失彼的现象。
1.3系统架构师知识结构需要从大量互相冲突的系统方法和工具中区分出哪些是有效的,那些是无效的。
1.4从开发人员到架构师
总结自己的架构模式,深入行业总结规律。
几天的培训不太可能培养出合格的软件架构师,厂商的培训和认证,最终目的是培养自己的市场,培养一批忠诚的用户或产品代言人,而不是为中国培养软件架构师。
第二章
《计算机网络基础知识》
计算机系统由硬件和软件组成,软件通常分为系统软件和应用软件。
系统软件支持应用软件的运行,为用户开发应用软件提供平台,用户可以使用它,但不能随意修改它。
常用的系统软件有操作系统、语言处理程序、连接程序、诊断程序、数据库等。应用软件指计算机用户利用软硬件资源为某一专门的应用目的而开发的软件。
2.1操作系统基础知识操作系统OperatingSystem,是计算机系统的核心系统软件。
2.1.1操作系统的原理、类型、结构
1、操作系统定义
硬件资源包括中央处理器、存储器、输入输出设备。
软件资源是以文件形式保存在存储器上的程序和数据。操作系统既有效组织和管理系统中各种软硬件资源,合理地组织计算机系统的工作流程,又控制程序的执行,为用户使用计算机提供了一个良好的环境和友好的接口。
2、操作系统分类按功能不同分:单用户操作系统、批处理操作系统;分时操作系统、实时操作系统;网络操作系统、分布式操作系统;嵌入式操作系统。
3、操作系统的特征并发性、共享性、虚拟性、不确定性。
4、操作系统的功能进程管理、文件管理、存储管理、设备管理、作业管理。
2.1.2处理机与进程管理
1、进程的定义及其分类进程通常由程序、数据、进程控制块PCB组成。
2、进程的状态转换与控制
就绪、运行、阻塞。
进程控制是通过进程控制原语实现的,进程控制原语主要有:创建原语、撤销原语、挂起原语、激活原语、阻塞原语、唤醒原语。注:原语不可分割,不允许中断。
3、进程互斥与同步以及P/V操作
同步是使在异步环境下的各进程按一定的顺序和速度执行。
互斥要保证临界资源一次只能提供一个进程使用,称为临界资源CR。
PV操作是低级通信原语,在执行期间不可分割,P表示申请一个资源,V表示释放一个资源。
P操作定义:S:=S-1,若S>=0,则执行P操作的进程继续执行,否则若S<0,则置该进程为阻塞状态(因为无可用资源),并将其插入阻塞队列。
V操作定义:S:=S+1,若S>0,则执行V操作的进程继续执行,否则若S<=0,则从阻塞状态唤醒一个进程,并将其插入就绪队列,然后执行V操作的进程继续执行。
4、进程通信与管程
控制信息的交换称为低级通信,数据的交换称为高级通信。
高级通信的类型有共享存储系统、消息传递系统、管道通信。在任一时刻最多只有一个进程能够真正地进入管程,其他的只能等待。
5、进程调度与死锁
产生死锁的四个必要条件:互斥条件、请求保持条件、不可剥夺条件、环路条件。预防策略,破坏死锁的四个必要条件之一。
6、线程
线程是进程中的一个实体,是被系统独立分配和调度的基本单位。
线程只拥有一些运行中必不可少的资源。同一个进程中的多个线程可以并发执行,线程具有:就绪、运行、阻塞,三个基本状态。
2.1.3存储管理
存储器的发展方向是:高速、大容量、小体积。存储管理的主要任务是:如何提高主存的利用率、扩充主存以及对主存信息实现有效保护。
2.1.4设备管理
设备管理的目标是:提高设备的利用率,为用户提供方便统一的界面。磁盘调度算法:先来先服务FCFS、最短寻道时间优先SSTF、扫描算法SCAN。
2.1.5文件管理
随机访问是指对文件中的信息可以按任意次序随机读写文件中的信息。文件控制块FCB,描述和控制文件的数据结构。
2.1.6作业管理常用的作业调度算法有:先来先服务、短作业优先、相应比高优先、优先级调度算法、均衡调度算法。
2.1.7网络操作系统NOS
网络操作系统分为:集中模式、客户机/服务器模式、对等模式。现代操作系统已经把网络功能包含到操作系统的内核中,作为操作系统核心功能的一个组成部分。
2.2.1关系数据库基础
数据库的三要素:数据结构、数据操作、数据约束条件。
特别需要指出的是,E-R模型强调的是语义。
关系数据库设计理论的核心是数据间的函数依赖,衡量的标准是关系规范化的程度及分解的无损连接和保持函数依赖性。
数据依赖包括:函数依赖、非平凡的函数依赖、平凡的函数依赖、完全函数依赖、部分函数依赖、传递依赖、码、主属性、非主属性、外码、值依赖定义、函数依赖的公理系统。
事务是数据库环境中不可分割的逻辑工作单位。
四个特性:原子性、一致性、隔离性、持久性,ACID。
SQL语言中事务定义语句有三条:BEGINTRANSACTION事务开始、COMMIT事务提交、ROLLBAK事务回滚。
并发操作是指:在多用户共享系统中,用户可能同时对同一数据库进行操作。
带来的问题主要有:丢失更新、不可重复读、读脏数据。
并发控制主要技术是封锁:排他锁(简称X锁、写锁)、共享锁(简称S锁、读锁)。
保护数据库的关键技术在于建立冗余数据、即备份数据。方法是:数据转储、建立日志。
2.2.2关系数据库设计
需求分析、概念结构设计、逻辑结构设计、物理结构设计、应用程序设计、运行维护。
E-R方法的数据库概念结构设计可分三步:设计局部E-R模型、设计全局E-R模型、全局E-R模型优化。
2.2.3分布式数据库系统
满足分布性、逻辑相关性、场地透明性、场地自治性的数据库系统被称为完全分布式数据库系统。分布式数据库系统的特点:数据的集中控制性、数据独立性、数据冗余可控性、场地自治性、存取有效性。
4层模式划分为:全局外层、全局概念层、局部概念、局部内层,各层还有相应的层间映射。
2.2.4商业智能
一般认为:数据仓库、连机分析处理、数据挖掘技术是商业智能BI的三大组成部分。
数据仓库的关键特征:面向主题、集成的、非易失的、时变的。
三层结构:数据仓库服务器、OLAP服务器(连机分析处理服务器)、前端工具。
数据仓库的实现步骤:规划、需求研究、问题分析、数据的抽取清洗集成装载、数据仓库设计、数据仓库管理、分析报表查询、数据仓库性能优化、数据仓库部署发布。
切片、切块、下钻、上卷、旋转等多维度分析与跨维度分析。
OLAP系统架构主要分为:基于关系数据库的ROLAP、基于多维数据库的MOLAP、基于混合数据组织的HOLAP。
数据挖掘是在没有明确架设的前提下去挖掘信息、发现知识。
所得的信息应具有先知、有效、实用,三个特征。
主要功能有5类:自动预测趋势和行为、关联分析、聚类、概念描述、偏差检测。
2.3计算机网络基础知识
计算机网络
按通信距离分广域网、局域网、城域网;按信息交换方式分电路交换网、分组交换网、综合交换网;按拓扑结构分星型网、树形网、环形网、总线型网;按传输带宽分基带网、宽带网;
按使用范围分公用网、专用网;按通信传播方式分广播式、点到点式……
OSI/RM:把复杂的问题分解开,保持了层次之间的独立性。物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。
2.3.2计算机网络
1、广域网、局域网、城域网
广域网又称远程网,覆盖范围广,传输速率相对低,以数据通信为主要目的的数据通信网。数据传输可靠性随着传输介质不同而不同、拓扑结构复杂。
有公共交换电话网、各种公用数据网。
局域网是指传输距离有限,传输速度较高,以共享网络资源为目的的网络系统,数据传输可靠误码率低,网络控制一般为分布式,总线拓扑、环形拓扑、星型拓扑、混合型。
城域网是一种较大范围的高速网络。
网络拓扑结构:网络中通信线路和节点的几何排序,反映各节点之间的结构关系,影响着整个网络的设计、功能、可靠性、通信费用等重要方面。
局域网和城域网都是IEEE802标准,决定局域网主要技术有:传输介质、拓扑结构、介质访问控制方法。
决定了传数据的类型、网络响应时间、吞吐率、利用率,以及网络应用。
最重要的是介质控制访问方法。(CSMA/CD)无线局域网具有以下优点:安装便捷、使用灵活、经济解约、易于扩展。IEEE8.2.112、网络互联
网络互联目的是使一个网络的用户能访问其他网络的资源,使不同网络上的用户能够互相通信、交换信息。
网络互联设备的作用是连接不同网络。传输介质是信号传输的媒体,常用的介质分为有限介质和无线介质。局域网中,其基本组成部件为服务器、客户机、网络设备、通信介质、网络软件等。
3、Internet及应用
世界上规模最大、覆盖面最广且最具影响力的计算机互联网络,它将分布在世界各
地的计算机利用开放系统互连协议连接在一起,用来进行数据传输、信息交换、资源共享。
TCP/IP作为Internet的核心协议,已被广泛应用于局域网和广域网中,主要特性为:逻辑编址、路由选择、域名解析、错误检测、流量控制、对应用程序的支持等。
TCP/IP是一个协议族,网际层除了IP协议外,还有ICMP、ARP、RARP等几个重要协议……
Internet的地址主要有两种书写形式:域名格式、IP地址格式。www也成万维网/全球网,是指在Internet上以超文本为基础形成的信息网。采用统一的资源定位器URL和图文声并茂的用户界面。
2.3.3网络管理与网络安全
1、网络管理
网络管理是对计算机网络的配置、运行状态、计费等进行管理。它提供了监控、协调、测试各种网络资源以及网络运行状况的手段,还可以提供安全处理和积分等功能。
OSI网络协议标准中定义了网络管理的5大基本功能:配置管理、性能管理、故障管理、安全管理、计费管理。实际上还应该包括网络规划、网络操作人员管理等。
2、计算机网络安全
计算机网络安全是指计算机、网络系统的硬件、软件、数据收到保护,不因偶然或恶意的原因而遭到破坏、更改、泄漏,确保系统能连续、可靠地运行,使网络服务不中断。
网络安全从本质上讲就是网络上的信息安全。
信息的传输、存储、访问提供安全保护,以防止信息被窃取、篡改、非法操作。
信息安全的基本要素是保密性、完整性、可用性、真实性、可控性。
完整的信息安全保障体系应包括:保护、检测、响应、恢复。信息安全术语:密码学、鉴别、Kerberos鉴别、公钥基础设施、数字签名、访问控制
3、VPN
所谓虚拟专用网,是建立在公用网上,没有专用物理连接,而通过ISP提供的公共网络来实现通信,VPN内部用户可以实现安全通信。
关键技术:隧道技术、加密技术、密钥管理技术、身份认证技术。解决方案:内联网VPN、外连网VPN、远程接入VPN。
2.3.4网络工程网络规划、网络设计阶段、工程组织、实施阶段、维护阶段。
2.3.5存储及负载均衡技术
RAID磁盘阵列,目的是建立数据冗余、增强容错、提高容量、增进性能。
网络存储体系结构大致分为三种:直接式存储DAS、网络连接存储NAS、存储区域存储SAN。
负载均衡LoadBalance从结构上分为:本地负载均衡、全局负载均衡。
一般情况下从传输链路聚合、采用更高层网络交换技术、设置服务器集群策略三个角度实现。
集群Cluster,大多数模式下,集群中所有的计算机拥有一个共同的名称,各节点服务器通过一个内部局域网相互通讯,集群内任一系统上运行的服务都可被所有的网络客户所使用,当一台节点服务器发生故障时,这台服务器上所运行的应用程序将在另一节点服务器上被自动接管,客户也能很快自动地连接到新的应用服务器上。
2.4多媒体技术及其应用
媒体有两种含义:信息的载体、存储信息的实体。
根据ITU-T(原CCITT)建议,媒体有5种:感觉媒体、表示媒体、显示媒体、存储媒体、传输媒体。
InternationalConsultativeCommitteOnTelecommunicationAndTelegraphy,CCITT,国际电报电话咨询委员会。
多媒体技术是指:以数字化为基础,对多种媒体信息进行采集、编码、存储、传输、处理、表现,使之建立有机的逻辑联系,具有良好的交互性的技术。多媒体的特征:多样性、集成性、交互性、实时性。
2.4.2多媒体数据压缩编码技术
JPEG,JointPhotographicExpertsGroup,联合图像专家小组,是一种对静态图像压缩的编码算法。“联合”的含义是:CCITT和ISO联合组成的图像专家小组。
MPEG,MovingPictureExpertsGroup,运动图像专家小组,是作为一个国际标准来研究制订的,具有很好的兼容性。
其次,比其它算法提供更好的压缩比,最高可达200:1。更重要的是对数据损失很小。
不存在专利问题,适合大力推广。数据压缩编码两大类:无损压缩编码法(也称冗余压缩法、熵编码法),有损压缩编码法(也称熵压缩法)。
2.4.4多媒体技术的研究内容
对数据进行有效压缩将是多媒体发展中必须要解决的最关键的技术之一。
数据量大、种类繁多、关系复杂,是多媒体数据的基本特征。
虚拟现实
首先,“逼真”就是要达到三维视觉、听觉、触觉等效果;其次,通过人的感官与这个环境进行交互;最后,为用户提供一个逼真的操作环境。
虚拟现实是一种多技术多科学相互渗透集成的技术。
只能多媒体技术
将具有推理功能的知识库与多媒体数据库结合起来,形成智能多媒体数据库。
发展趋势:把多媒体和通信功能集成到CPU芯片中。
其一,专用设备、家电及宽带通信设备,可以取代这些设备中的CPU及大量Asic和其他新品。其二,与现有的计算机系列兼容,同事具有多媒体和通讯功能。
2.5系统性能
系统性能是一个系统提供给用户的众多性能指标的集合。既包括硬件性能,也包括软件性能;既包括部件性能指标,也包括综合性能指标。系统性能包含性能指标、性能计算、性能设计、性能评估,四个方面内容。
2.5.3系统性能设计
是一系列重复的受控的性能试验,循环的调整过程为收集、分析、配置、测试。
阿姆达尔定律Amdahl:系统中对某一部件采用某种更快的执行方式所获得的系统性能改变程度,取决于这种方式被利用的频率,或所占总执行时间的比例。被改进并增强的部分在总时间中所占的比例,增强比例,永远小于等于1.
2.5.4性能评估
对测试结果做出解释,并形成一分文档的技术。
目的是为了性能的优化提供参考。
用得最多、最频繁的那部分核心程序作为评价计算机性能的标准程序,称为基准测试程序Benchmark。
2011年软考系统架构设计师学习笔记第三章
3.1信息的特征
1、客观性:反映了事物的运动状态和方式,既事实性。
2、普遍性:信息无所不在。
3、无限性:事物及其变化是无限多样的。
4、动态性:随着时间变化而变化。
5、依附性:不能完全脱离物质而独立存在。
6、变换性:可以用不同的载体以不同的方法来负载。
7、传递性:时间上的传递即存储;空间上的传递即转移或扩散。
8、层次性:信息可以分为战略级、管理级、操作级。9、系统性:可以形成与现实世界相对应的信息系统。
3.1.1信息化的定义信息化Informationalization,是以信息资源开发利用为核心,以网络技术、通讯技术等高科技技术为依托的一种新技术扩散的过程。
3.2信息化的内容
1、信息资源的开发利用
2、信息网络的全面覆盖,计算机网络、电信网、电视网等,逐步实现三网合一。
3、信息技术的广泛应用,这是信息化的基础。
4、信息产业的大力发展
5、信息化人才的培养
6、信息化政策和标准规范建设基于web的架构是松散耦合的,优势在于能够在不同的网络及操作系统中运行;以服务器为中心,客户端瘦小、简单,容易在运行时实现自动升级。
3.3信息化的典型应用
电子政务的内容
1、政府与政府G2G
2、政府对企事业G2B
3、政府对居民G2C
4、企业对政府B2G5、居民对政府C2G
3.3.1企业资源规划的结构和功能
物料需求计划MRP,物料单系统BOM,制造资源计划MRPII。
1、ERP的概念
企业的所有资源包括三大流:物流、资金流、信息流。
ERP是建立在信息技术基础上,全面地集成了企业的所有资源信息,并为企业提供决策、计划、控制、经营业绩评估的全方位和系统化的管理平台。ERP是一种管理理论和管理思想,不仅仅是信息系统。
1.生产预测
市场需求是企业生存的基础,ERP中首先需要对市场进行较准确的预测,预测主要用于
计划。
常用的预测方法有:德尔菲方法、移动平移法、指数平滑法、非线性最小二乘曲线拟合法。
2.销售管理(计划)
销售管理从其计划角度来看,属于最高层计划的范畴,是企业最重要的决策层计划之一。
3.经营计划(生产计划大纲)
4.主生产计划
5.物料需求计划
根据主生产计划对最终产品的需求数量和交货期,推导出构成产品的零部件及材料的需求数量和需求时期,再导出自制零部件的制作订单下达日期和采购件的采购订单发送日期。
6.能力需求计划CRP
通过分析比较MRP的需求和企业现有生产力,及早发现能力瓶颈所在。
7.车间作业计划PAC
将零部件的生产计划以订单的形式下达给适当的车间,属于ERP执行层计划。当前主流的车间作业计划模式是JIT模式。
8.采购与库存管理
是ERP的基本模块,从采购订单产生至货物受到的全过程进行组织、实施、控制,库存管理IM对企业物料的进、出、存进行管理。
9.质量与设备管理
全面质量管理TQM,对企业的全过程进行质量管理,而且明确指出执行质量职能是企业全体人员的责任。
设备管理对设备寿命周期内的所有设备物资运动形态和价值运动形态进行综合管理。
10.财务管理
以货币的形式反映和监督企业的日常经济活动,并对数据进行分类、汇总,为企业管理和决策提供必要的信息支持。
11.ERP有关扩展应用模块客户关系管理、分销资源管理、供应链管理、电子商务等。
3、ERP的功能ERP为企业提供的功能是多层面的全方位的。
3.3.2客户关系管理在企业的应用
1、CRM的概念
提供的信息要有利于更好地理解客户;
流程管理要为客户提供高效、适当的体验;
提供那些构件强有力关系、提高客户忠诚度的体验。
CRM的核心思想就是以客户为中心,
从传统的“以产品为中心”的经营理念解放出来,通过富有意义的交流沟通,理解并影响客户行为,最终实现客户保留、客户忠诚、客户创利的目的。
将客户信息转化为积极的客户关系的反复循环过程。
市场竞争,客户资源逐渐减少,市场主动权让给客户,了解市场和客户真实需要的基础上提供令其满意的产品和服务。
客户能根据自己的需求量身定做合适自己需要的产品和服务。
客户信息是客户关系管理的基础。更低成本、更高效率地满足客户的需求,与客户建立起基于学习性关系基础,最大程度提高客户满意度、忠诚度。
3.3.3销售自动化SFA
功能:日历和日程安排、联系和客户管理、佣金管理、商业机会、传递渠道管理、销售管理、建议的生产和管理、定价、区域划分、费用报告等。
产品目录和价格、购买记录、服务记录、存货情况、促销文本资料、信用记录。SFA应用往往集成电子邮件、办公软件等其它各种标准应用。
3.3.4营销自动化MA
集成客户商业智能信息、产品信息、“营销百科全书”等信息资源。
CRM中,客户服务与支持主要是通过呼叫中心和互联网来实现,在满足客户的个
性化要求方面,高速度、准确性、高效率来完成客户服务人员的各种要求。
当把客户服务与支持功能同销售、营销功能比较好地结合起来时,就能为企业提供很多机会。
客户服务与支持的内容应包括:客户关怀;纠纷、订货、订单跟踪;现场服务;问题及解决方法数据库;维修行为安排调度;服务协议合同;服务请求管理等。
商业智能是指利用数据挖掘、知识发现等技术分析和挖掘结构化的、面向特定领域的存储与数据仓库的信息,帮用户认清发展趋势、识别数据模式、获取职能决策支持、得出结论。
智能的范围:客户、产品、服务、竞争者等。收集和分析市场、销售、服务和整个企业的各类信息,对客户进行全方位的了解,从而理顺企业资源与客户需求之间的关系。
CRM尚未有成型的理论出现
对市场的设定、跟踪、分析总结。
呼叫中心支持由合作的硬件厂商参与并提供全套设备,而不仅仅是提供支持呼叫中心的应用软件。
对移动设备的支持。
决策者所掌握的信息完全,能更及时地做出决策。
不管客户由何种渠道与企业联系,与客户的互动都应该是无缝的、统一的、高效的。
需要任命一名来自企业的系统管理员,作为内部系统专家。
经特殊调整的系统必须伴随技术培训。
由于数据转换过程工作量极大,因此要精确预测该过程的时间表几乎是不可能的。
“培训者”必须接受由软件供应商进行的培训,称为新系统专家。
对所有用户的正规培训,用户必须认识到使用新系统的即时和明显好处。
对系统的持续支持要求公司配备至少一名全职的内部系统管理员,可保证技术上自给自足的灵活性,CRM系统的支持是艰巨的工作。
为保证系统带来所希望的益处,在将其推广到所有用户之前一定要加以测试。
间接电子商务,商品是有形货物。直接电子商务,商品是无形的货物或服务,双方越过地理界限直接进行交易。
3.3.5供应链管理
供应链是企业赖以生存的商业循环系统,企业供应链可以耗费企业高达25%的运营成本。
从供应商开始,经由制造商、分销商、零售商,直到最终客户的全要素、全过程的集成化管理模式。
正向推动式运作模式是以生产为中心;逆向拉动式运作模式是以用户为中心;两种不同的运作模式适用于不同市场环境。
2011年软考系统架构设计师学习笔记第四章
4.1软件开发方法
4.1.1软件开发生命周期
传统的软件生命期是指软件产品从形成概念(构思)开始,经过定义、开发、使用、维护、废弃,的全过程。
可以把软件生命期划分为软件定义、软件开发、软件运行与维护,三个阶段。
1、软件定义时期
1.问题定义,目标系统“是什么”,系统的定位以及范围。
2.可行性研究,技术可行性、经济可行性、操作可行性、社会可行性。
3.需求分析,确定软件系统的功能需求、性能需求、运行环境的约束,写出需求规格说明书、软件系统测试大纲、用户手册概要。
充分理解用户的需求,并以书面形式写出规格说明书,这是以后软件设计和验收的依据;用户也许很难一次性说清楚系统应该做什么。
系统分析员、软件开发人员、用户,共同完成,逐步细化、一致化、完全化等。软件需求规格说明SRS,内容可以有系统(或子系统)名称、功能描述、接口、基本数据结构、性能、设计需求、开发标准、验收原则等。
2、软件开发时期
软件开发时期就是软件的设计与实现,概要设计、详细设计、编码、测试等。
概要设计是在软件需求规格说明的基础上,建立系统的总体结构(含子系统的划分)和模块间的关系,定义功能模块及各功能模块之间的关系。
详细设计对概要设计产生的功能模块逐步细化,包括算法与结构、数据分布、数据组织、模块间接口信息、用户界面等,写出详细设计报告。测试可分成单元测试、集成测试、确认测试、系统测试等。通常把编码和测试称为系统的实现。
3、软件运行和维护软件维护就是尽可能地延长软件的寿命,没有维护的价值时,宣告退役,软件的生命结束。
4.1.2软件开发模型
软件生存周期模型又称软件开发模型或软件过程模型,模型的特点是简单化,是软件开发实际过程的抽象与概括。为软件工程管理提供里程碑和进度表,为软件开发过程提供原则和方法。软件过程有各种各样的模型。
1、瀑布型
瀑布型的特点是因果关系紧密相连,前一个阶段工作的结果是后一个阶段工作的输入,前一个阶段的错漏会隐蔽地带到后一个阶段,每一个阶段工作完成后,都要进行审查和确认,它的出现有利于人员的组织管理,有利于软件开发方法和工具的研究。
2、原型模型
根据用户提出的软件系统的定义,快速地开发一个原型,包含目标系统的关键问题和反映目标系统的大致面貌。
三种途径:
利用模拟软件系统的人机界面和人机交互方式。
真正开发一个原型。
找来一个或几个正在运行的类似软件进行比较。
实际工作中,由于各种原因,大多数原型都废弃不用,仅仅把建立原型的过程当作帮助定义软件需要的一种手段。
用户对系统模糊不清,无法准确回答目标系统的需求。
经过对原型若干次修改,应该收敛到目标范围内,否则可能会失败。对大型软件来说,如果没有现成的,就不应该考虑用原型法。
3、螺旋模型
是生命周期模型与原型模型的一个结合,分成多个阶段,每一个阶段都由4部分组成:
1.目标设定,指定对过程和产品的约束,并且制订详细的管理计划。
2.风险分析,制订解决办法。
3.开发和有效性验证,即开发软件产品。
4.评审,确定是否需要进入螺线的下一次回路。
增加一周,软件系统就生成一个新版本,系统应该尽快地收敛到用户允许或可以接受的目标范围内。
该模型支持大型软件开发,适用于面向规格说明、面向过程、面向对象的软件开发方法,也适用于几种开发方法的组合。
4、基于可重用构件的模型把软件工程项目所创建的构件不断地积累和存储在一个构件库中,系统将依赖构件的健壮性。
5、基于面向对象的模型构件重用是非常重要的技术之一。一方面进行构件开发,另一方面进行需求开发,快速建立OOA、OOD原型,由重用构件组装而成,甚至通过组装可重用的子系统而创建更大的系统。
6、基于四代技术的原型
四代语言完全不用变成方式来构造应用系统,而是利用一些生成器。
与通常的软件工程环境或计算机辅助软件工程不同,只侧重于支持应用软件开发过程中的设计阶段和实现阶段,特别是支持界面以及与界面有关的处理过程
4.1.3敏捷方法
1、敏捷方法的特点
敏捷方法是“适应性”而非“预设性”的,重型方法在计划制定完成后拒绝变化,而敏捷方法则欢迎变化。
“面向人的”而非“面向过程的”
传统的软件开发方法的基本思路一般是只要图纸设计得合理并考虑充分,施工队伍可以完全遵照图纸顺利构造。
但是,一些设计错误只能在编码和测试时才能发现。
传统正规开发方法是个体不重要,角色才是重要的,尽量减少人的因素对开发过程的影响,但是敏捷方法正好相反。
管理人员已经脱离实际开发活动相当长的时间了,如此设计出来的开发过程是难以为开发人员所接受的。
只有在第一线的开发人员才能真正掌握和理解开发过程中的技术细节,所以技术方面的决定必须由他们来做出。
敏捷方法特别强调相关人员之间的信息交流。因为项目失败的原因最终都可以追溯到信息没有及时准确地传递到应该接受它的人。
特别提倡直接的面对面交流,交流成本远远低于文档的交流。按照高内聚、松散耦合的原则将项目划分为若干个小组,以增加沟通。
2、敏捷方法的核心思想
1.适应性型,利用变化来发展。
2.以人为本,在无过程控制和过于严格繁琐的过程控制中取得一种平衡,以保证软件的质量。3.迭代增量式的开发过程,发行版本小型化,根据客户需求的优先级和开发风险,制订版本发行计划。
3、敏捷方法的含义及其特征重型方法注重开发文档的完备和充分性;而敏捷方法认为最根本的文档应该是源码。
4、敏捷方法的适用范围
实际上,满足工程设计标准的唯一文档是源代码清单。
敏捷方法比较适合需求变化比较大或者开发前期对需求不是很清晰的项目。敏捷方法对设计者、开发者、客户之间的有效沟通和及时反馈要求比较高,不易在开发团队比较庞大的项目中实施。
5、敏捷方法的主要内容
四个核心价值观:沟通、简单、反馈、勇气。
简单:只要满足当前功能需求,不做假象设计。
勇气:用于抉择,用于实践,用于重构。12条实践规则:简单设计、测试驱动、代码重构、结对编程、继续集成、现场客户、开发版本小型化、系统隐喻、代码集体所有制、规划策略、规范代码、40小时工作机制。
6、主要敏捷方法简介
极限编程
水晶系列方法
开放式源码,任何人发现Bug都可以将补丁发给维护者。
SCRUM
Coad的功用驱动开发方法:短时迭代阶段和可见可用的功能,一个迭代周期一般为两周,编程人员分为类程序员、首席程序员。
ASD方法,猜测、合作、学习。
4.1.4RUP
RUP把软件开发生命周期划分为多个循环(cycle),每个cycle生成产品的一个新版本,每个cycle依次由4个连续阶段(phase)组成:
初始:定义最终产品视图和业务模型,并确定系统范围。
细化:制定工作计划及资源要求。
构造。
移交。
迭代并不是重复地做相同的事,而是针对不同用例细化和实现,每一个迭代都是一个完整的开发过程。
每个阶段结束前有一个里程碑(milestone)评估该阶段的工作。如果未能通过该里程碑的评估,则决策者应该做出决定,是取消该项目还是继续做该阶段的工作。
RUP中的核心概念
角色(Role),who的问题,某个人或一个小组的行为与职责。
活动(Activity),how的问题,是一个有明确目的的独立工作单元。
制品(Artifact),what的问题,是活动生成、创建、修改第一段信息。工作流(Workflow),when的问题,每个工作流产生一些有价值的产品,并显示了角色之间的关系。
RUP的特点
RUP是用例驱动的、以体系结构为中心的、迭代和增量的软件开发过程。
用例驱动:需求分析、设计、实现、测试,都是用例驱动的。
以体系结构为中心:刻画了系统的整体设计,去掉了细节部分,突出了系统的重要特征。
不依赖于具体语言,是软件设计过程的一个层次。
体系结构层次的设计问题包括:总体组织和全局控制、通讯协议、同步、数据存取、给设计元素分配特定功能、设计元素的组织、物理分布、系统的伸缩性、性能等。
一个系统不可能在所有特性上都达到最优,对于一个系统,不同人员所关心的内容也是不一样的,对于不同类型的人员,只需提供这类人员关心的视图即可。
分析和测试人员关心用例图,最终用户关心逻辑视图,程序员关心实现视图,系统工程师关心部署视图。
RUB强调采用迭代和增量的方法来开发软件,每次迭代中,之考虑系统的一部分需求,每次增加一些新的功能实现。
好处:
早期就可以对关键的、影响大的风险进行处理。
可以提出一个软件体系结构来指导开发。
处理不可避免的需求变更。
可以较早地得到一个可运行的系统,鼓舞开发团队的士气,增强项目成功的信心。
更有效工作的开发过程。
没有一个项目会使用RUP中所有的东西,用用RUP时要裁剪,裁剪步骤:
1.确定本项目需要哪些工作流。
2.确定每个工作流要产出哪些制品。
3.确定四个阶段之间(初始阶段、细化阶段、构造阶段、移交阶段)如何演进。
4.确定每个阶段内迭代计划。5.规划工作流内部结构。
4.1.5软件系统工具
按软件过程活动将软件工具分为软件开发工具、软件维护工具、软件管理和软件支持工具。
软件开发工具有:需求分析工具、设计工具、编码与排错工具、测试工具等。
需求分析工具,生成完整的、清晰的、一致的功能规范。功能规范是软件开发者和用户间的契约,也是软件设计者的和实现者的依据。正确、完整表达清晰的、无歧义的。
需求分析工具分为基于自然语言或图形描述的工具,基于形式化需求定义语言的工具。项目管理工具:项目的计划、调度、通信、成本估算、资源分配、质量控制等。
4.2需求管理
需求最终文档经过评审批准后,则定义了需求基线Baseline;构筑了功能需求和非功能需求的一个约定Agreement。约定是需求开发和需求管理之间的桥梁。需求管理是一个对系统需求变更、了解和控制的过程,初始需求导出的同时就启动了需求管理规划。
4.2.1需求管理原则
过程能力成熟度模型CMM,指导软件过程改进,5个成熟级别,6个关键过程域KPA。
一旦需求文档化了,开发组和有关团队需要评审文档。发现问题应与客户或者其他需求源协商解决。软件开发计划是基于已确认的需求。
绝不要承诺任何无法实现的事。
关键处理领域通过版本控制和变更控制来管理需求文档。确保与新的需求保持一致。
4.2.2需求规格说明的版本控制
版本控制是管理需求的一个必要方面,必须统一确定需求文档的每一个版本,当需求发生变更时,及时通知所有涉及人员。
为了尽量减少困惑、冲突、误传,应该仅允许指定的人员来更新需求。清楚地区分草稿和文档定稿版本。
4.2.3需求变更
迟到的需求变更会对已进行的工作产生非常大的影响。
如果每一个建议的需求变更都采用,该项目将可能永远无法完成。
需求文档应该精确描述要交付的产品。
项目负责人在信息充分的条件下做出决策。
变更成本计算应该包括需求文档的修改、系统修改的设计、实现的成本。
变更控制过程并不是给变更设置障碍,相反,它是一个渠道和过滤器,确保采纳最合适的变更,使变更产生的负面影响降到最低,变更过程应该做成文档。
绝不能删除或者修改变更请求的原始文档。
变更控制委员会只要能决定合适的人做正确的事就足够了,在保证权威性的前提下应尽可能精简人员。
对每个变更权衡利弊做出决定。
“利”包括节省资金或额外收入、客户满意度、竞争优势、减少上市时间;
“弊”是指增加开发费用、推迟交付日期、产品质量下降、减少功能、用户不满意。
变更总是有代价的,即使拒绝的变更也因为决策行为而耗费资源。
接受了重要的需求变更时,为了适应变更情况要与管理部门和客户重新协商约定。推迟交货时间、增加人手、推迟实现尚未实现的较低优先级的需求,或质量上进行折中。要是不能获得一些约定的调整,应该把面临的风险写进风险计划中。
4.2.4需求跟踪
需求、体系结构、其他设计部件、源代码模块、测试、帮助文件、文档等。
跟踪能力(联系)链(traceabilitylink)是优秀需求规格说明书的一个特征,确保软件需求规格说明包括所有客户需求。
跟踪能力联系链记录了单个需求之间的父层、互连、依赖的关系。不必拥有所有种类的跟踪能力联系链,要根据具体情况调整。
4.2.5需求变更的代价和风险
只有在知道变更成本后才能做出理智的选择,一个表面上很简单的变更也可能转变成很复杂的局面。影响分析确定对现有系统做出是修改或者抛弃的决定,创建新系统以及评估每个任务的工作量,进行影响分析的能力依赖于跟踪能力、数据的质量、完整性。
4.3开发管理
1、范围
可交付物、架设、约束条件的基础上准备详细的项目范围说明书,是项目成功的关键。
2、时间
进度安排的准确程度可能比成本估计的准确程度更重要。对于成本估计的偏差,可以靠重新定价或大量的销售来弥补成本的增加,
如果进度计划不能得到实施,则会导致市场机会的丧失或用户不满意,而且会使成本增加。工作分解结构WorkBreakdownStructureWBS
4.3.1配置管理文档管理
1、配置管理
配置项ConfigurationItemCI,
属于产品组成部分的工作成果,如需求文档、设计文档、源代码、测试用例等。
属于项目管理和机构支撑过程域产生的文档,如工作计划、项目质量报告、项目跟踪报告等。每个配置项的主要属性有名称、标识符、文件状态、版本、作者、日期等。
2、文档管理
文档是影响软件可维护性的决定因素,使用过程中必然会经受多次修改,所以文档比程序代码更重要。
用户文档:主要描述系统功能和使用方法。
系统文档:描述系统设计、实现、测试等各方面内容。
软件文档应该满足下述要求:
1.如何使用
2.怎样安装和管理
3.需求和设计
4.实现和测试说明用户操作错误时应该怎样恢复和重新启动。
4.3.2软件开发的质量与风险
1、软件质量
IOS9000对项目质量的定义:一组固有特性满足需求的程度。
质量与范围、成本和时间,是项目成功的关键因素,通过范围管理转换隐含需求为项目需求。质量低说明产品或服务存在问题,而低等级的产品或服务不一定存在问题,二者概念不同。
2、软件开发风险
认识不足或者没有足够的力量加以控制。
了解、掌握风险的来源、性质、发生规律,进而施行有效的管理。或然性、不确定性、涉及到某种选择时,才成为有风险,以上三个是风险定义的必要条件,不是充分条件,具有不确定性的事件不一定是风险。
4.3.3结构化分析与设计
结构程序设计较流行的定义为:采用自顶向下逐步求精的设计方法和单入口单出口的控制构件。
自顶向下逐步求精的方法是:先整体后局部,先抽象后具体,一般具有较清晰的层次。
仅使用单入口单出口的控制构件,具有良好的结构特征。
采用结构程序设计,可能会多占用一些时间和空间资源,这也是那些反对从高级语言中排除GOTO语句者的主要依据。实际上,硬件飞速发展,这点耗费,不再是重要的因素。
4.3.4面向对象的分析设计
面向对象的分析模型主要由顶层架构图、用例与用例图、领域概念模型构成;
设计模型包含:
以包图表示的软件体系结构图、
以交互图表示的用例实现图、
完整精确的类图、
针对复杂对象的状态图、描述流程化处理过程的活动图等。
4.4软件的重用
重复使用相同或相似软件元素。
软件元素:需求分析文档、设计过程、设计文档、程序代码、测试用例、领域知识等,通产这些软件元素称为软部件。
不断地进行软部件的积累,并将它们组织成软部件库。
横向重用(horizontalreuse):重用不同应用领域中的软件元素。
标准函数库是一种典型的、原始的横向重用机制。
纵向重用广受瞩目,并称为软件重用技术的真正希望所在,关键点是域分析,根据应用领域的特征以及相似性预测软部件的可重用性。
库的组织结构直接影响软部件的检索效率。由于软部件大都经过严格的质量认证,并在实际运行环境中得到检验,因此重用软部件有助于改善软件质量。
4.5逆向工程与重构工程
逆向工程就是分析已有的程序,寻找比源代码更高级的抽象表现形式。
相关概念:
重构Restructuring,在同一抽象级别上转换系统描述形式;
设计恢复designrecovery,
重构工程re-engineering,也称修复和改造工程。
1、恢复信息的级别
逆向工程导出的信息,4个抽象层次
1.实现级
2.结构级
3.功能级
4.领域级
2、恢复信息的方法,4类:
1.用户指导下搜索与变换
2.变换式方法
3.基于领域知识的
4.铅板恢复法
2011年软考系统架构设计师学习笔记第五章
软件架构设计
SoftwareArchitecture简称SA
5.1.1软件架构设计与生命周期
1、需求分析阶段需求和SA设计面临的是不同的对象:一个是问题空间;另一个是解空间。保持二者的可跟踪性和转换。
2、设计阶段
1.传统的设计概念只包括构件,随着研究的深入,构件间的互联机制逐渐独立出来,成为与构件同等级别的实体,称为连接子。
2.体系结构描述语言(ArchitectureDescriptionLanguageADL)对连接子的重视成为区分
ADL和其他建模语言的重要特征之一。
3.不同的视角得到多个视图,组织起来以描述整体的SA模型;不同侧面的视图反映所关注的系统的特定方面,体现了关注点分离的思想。
3、实现阶段团队的结构应该和体系结构模型有一定的对应关系,提高软件开发效率和质量。
分析和记录不同版本构件和连接子之间的演化。
填补高层SA模型和底层实现之间的鸿沟,典型的方法如下:
1.引入实现阶段的概念。
2.SA模型逐步精化。
3.封装底层称为较大粒度构件。4、构件组装阶段
可复用构件组装可以在较高层次上实现系统,研究内容包括:
1.如何互联。
2.如何检测并消除体系结构失配问题。
中间件跨平台交互。
产品化的中间件更好地保证最终系统的质量,中间件导向的体系结构风格。失配是指复用过程中,待复用构件对最终系统的体系结构和环境的架设(Assumption)与实际状况下不同而导致的冲突。
5、部署阶段软件构件的互联性、硬件的拓扑结构、硬件资源占用。
6、后开发阶段
实现中的软件往往具有动态性,一类是软件内部执行所导致的体系结构改变,另一类变化是软件系统外部的请求对软件进行的重配置。
升级或进行其他修改时不能停机。
SA重建是指从已实现的系统中获取体系结构的过程。
5.2基于架构的软件开发方法
5.2.1体系结构的设计方法概述
基于体系结构的软件设计(Architecture-BasedSoftwareDesignABSD)方法。
体系结构驱动,指构成体系结构的商业、质量、功能需求的组合驱动。
设计活动的开始并不意味着需求抽取和分析活动就可以终止,而应该并行,快速开始设计至关重要。ABSD方法有三个基础,功能分解、选择体系结构风格、软件模板的使用。
5.2.2概念与术语
1、设计元素
ABSD方法是一个自顶向下,递归细化的方法。
2、视角与视图
重要的是从不同的视角(perspective)来检查,考虑体系结构的不同属性。
3、用例和质量场景在使用用例捕获功能需求时,通过定义特定场景来捕获质量需求,称为质量场景。捕获变更、性能、可靠性、交互性,质量场景必须包括预期的和非预期的。
5.2.3体系结构需求
可以从需求库中取出,加以利用和修改。获取需求,体系结构需求一般来自三个方面:系统的质量目标、系统的商业目标、开发人员的商业目标。
5.2.4体系结构文档化
体系结构规格说明和测试体系结构需求的质量设计说明书。
需求模型构件的精确形式化描述,作为用户和开发者之间的一个协约。从使用者的角度进行编写,必须保证开发者手上的文档是最新的。
5.2.5体系结构复审
根据架构设计,搭建一个可运行的最小化系统用于评估和测试体系架构是否满足
需要。是否存在可识别的技术和协作风险。复审的目的是标识潜在风险,及早发现缺陷和错误。
5.2.6体系结构实现分割成规定的构件,按规定方式互相交互。
5.3软件架构风格
体系结构设计核心目标是重复的体系结构模式,体系结构级的软件重用。5.3.1软件架构风格概述
一个体系结构定义一个词汇表和一组约束。词汇表中包含构件和连接件类型约束指出如何组合起来。体系结构风格反映了共有的结构和语义特性,并指导如何组织成一个完整的系统。
5.3.2经典软件体系结构风格
每个构件都有一组输入和输出,数据输入构件,经过内部处理,然后产生数据输出。这里的构件称为过滤器。
构件是对象。
分层系统,每一层为上层提供服务,并作为下层的客户。除一些精心挑选的输出函数外,内部的层接口只对相邻层可见。由于一层最多只影响两层,为软件重用提供了强大的支持。
仓库风格中,两种不同的构件:中央数据结构、独立构件。
若构件控制共享数据,则仓库是一传统型数据库;若中央数据结构的当前状态触发进程执行的选择,则仓库是一黑板系统。C2体系结构通过连接件绑定在一起按照一组规则运作的并行构件网络。构件与构件之间的连接是不允许的。
5.3.3客户/服务器风格
宿主机应用程序既负责与用户的交互(前端),又负责对数据的管理(后端)。
C/S体系结构定义了工作站如何与服务器相连,实现部分数据和应用分布到多个处理机上。
C/S三个主要组成部分:服务器、客户机、网络。
易于对系统进行扩充和缩小。
功能构件充分隔离,客户应用程序的开发集中于数据的显示和分析,数据库服务器的开发集中于数据的管理,将大应用处理任务分布到许多通过网络连接的低成本计算机上,模型思想简单。
开发成本高,尤其是软件不断升级,客户端变得越来越臃肿。
信息内容和形式单一,用户获得的只是单纯的字符和数字。软件移植困难,维护升级困难。
5.3.4三层C/S结构风格。
三层C/S体系结构中,可以将整个应用逻辑驻留在应用服务器上,只有表示层存在于客户机上,称为“瘦客户机”。表示层、功能层、数据层。
表示层一般要使用图形用户界面GUI。
功能层之间的数据交互要尽可能简洁,一次性传输。数据层不同层构件相互独立,层间接口简洁,适合复杂事务处理
5.3.1软件架构风格概述
一个体系结构定义一个词汇表和一组约束。词汇表中包含构件和连接件类型约束指出如何组合起来。体系结构风格反映了共有的结构和语义特性,并指导如何组织成一个完整的系统。
5.3.2经典软件体系结构风格
每个构件都有一组输入和输出,数据输入构件,经过内部处理,然后产生数据输出。这里的构件称为过滤器。
构件是对象。
分层系统,每一层为上层提供服务,并作为下层的客户。除一些精心挑选的输出函数外,内部的层接口只对相邻层可见。由于一层最多只影响两层,为软件重用提供了强大的支持。
仓库风格中,两种不同的构件:中央数据结构、独立构件。
若构件控制共享数据,则仓库是一传统型数据库;若中央数据结构的当前状态触发进程执行的选择,则仓库是一黑板系统。C2体系结构通过连接件绑定在一起按照一组规则运作的并行构件网络。构件与构件之间的连接是不允许的。
5.3.3客户/服务器风格
宿主机应用程序既负责与用户的交互(前端),又负责对数据的管理(后端)。
C/S体系结构定义了工作站如何与服务器相连,实现部分数据和应用分布到多个处理机上。
C/S三个主要组成部分:服务器、客户机、网络。
易于对系统进行扩充和缩小。
功能构件充分隔离,客户应用程序的开发集中于数据的显示和分析,数据库服务器的开发集中于数据的管理,将大应用处理任务分布到许多通过网络连接的低成本计算机上,模型思想简单。
开发成本高,尤其是软件不断升级,客户端变得越来越臃肿。
信息内容和形式单一,用户获得的只是单纯的字符和数字。软件移植困难,维护升级困难。
5.3.4三层C/S结构风格。
三层C/S体系结构中,可以将整个应用逻辑驻留在应用服务器上,只有表示层存在于客户机上,称为“瘦客户机”。表示层、功能层、数据层。
表示层一般要使用图形用户界面GUI。
功能层之间的数据交互要尽可能简洁,一次性传输。数据层不同层构件相互独立,层间接口简洁,适合复杂事务处理
5.4.4DSSA的建立过程
一般情况下,需要用开发者习惯使用的工具和方法建立DSSA模型。
DSSA建立过程分为5个阶段,过程是并发的、递归的、反复的,可能每个阶段经历几
5.5.2评估中重要概念
敏感点权衡点,是关键的体系结构决策。
敏感点是构件(和/或构建之间的关系)的特性。研究敏感点可使人员明确在实现质量目标时应注意什么。
权衡点是多个质量属性的敏感点。
风险承担着或称为收益相关人。
场景,首先要精确地得出具体的质量目标,为得出这些目标采用的机制叫做场景。从风险承担者的角度与系统的交互的简短描述。刺激、环境、响应,三个方面描述场景。
5.5.3主要评估方法
1、SAAM非功能质量属性的体系结构分析方法,是最早形式成文档并得到广泛使用的分析方法。最初它用于比较不同的软件体系结构,以分析SA的可修改性。
1.特定目标,目标是对描述应用程序属性的文档,验证假设和原则,有利于评估固有的风险。
2.评估技术,使用场景技术,描述了各种系统必须支持的活动和将要发生的变化。
3.质量属性,可修改性是SAAM分析的主要质量属性。
4.风险承担者,SAAM协调不同参与者所感兴趣的方面,作为后续决策的基础,提供了对系统结构的公共理解。
5.体系结构描述,描述形式应该被所有参与者理解。功能、结构、分配,三个主要方面。
6.方法活动,SAAM的主要输入问题是描述、需求声明、体系结构描述。
SAAM分析评估体系结构过程包括5个步骤:场景开发、体系结构描述、单个场景评估、场景交互、总体评估。
通过各类风险承担者协商讨论,开发一些任务场景,体现系统所支持的各种活动。通过对场景交互的分析,得出系统中所有场景对系统中构件所产生影响的列表。总体的权衡和评价。
2、ATAM
体系结构权衡分析方法,主要针对性能、实用性、安全性、可修改性。
确定多个质量属性之间这种的必要性。
体系结构空间受到历史遗留系统、互操作性和以前失败的项目约束。
逻辑视图被分为功能结构和代码结构。这些结构加上他们之间适当的映射可以完整地描述一个体系结构。
用一组消息顺序图显示运行时的交互和场景。
从不同的体系结构角度,有三种不同场景,用例、增长场景、探测场景。
ATAM使用定性的启发式分析方法QAH,构造精确分析模型时要进行分析。
4个主要的活动领域(或阶段),场景和需求收集、结构视图和场景实现、属性模型构造和分析、分析、折中。
属性分析是互相依赖的。获得属性交互的方法有两种,敏感度分析来发现折中点、通过检查假设。
迭代的改进。除了通常从场景派生而来的需求,还有很多对行为模式和执行环境的假设。
由于属性之间存在折中,每一个架设都要被检查、验证、提问,完成所有操作后,把分析的结果和需求进行对比。领驭知识库通过基于属性的体系结构风格ABAS维护,变得更为惯例化、更可预测,得到一个标准问题集合。
2011年软考系统架构设计师学习笔记第六章
6.1UML建模与架构文档化
方法种类的膨胀,极大地妨碍了用户的使用和交流。
UML通过统一的表示法,使不同知识背景的领域专家、系统分析、开发人员、用户可以方便地交流。
6.1.1UML体系结构演变
UML是用元模型描述的,元模型是4层元模型体系结构模式中的一层,其他层次分
别是元-元模型、模型层、用户对象曾。其中元模型层由元-元模型层导出。
元模型的体系结构模式可以用来定义复杂模型所要求的精确定义,这种复杂模型通常需要被可靠地保存、共享、操作以及在工具之间进行交换。它的特点如下:
1、在每一层都递归地定义语义结构。
2、可用来定义重量级和轻量级扩展机制。
3、在体系结构上将其他体系结构的标准统一起来。UML元模型又被分解为三个逻辑子包:基础包、行为元素包、模型管理包。
6.2UML基础
UML通过图形化的表示机制从多个侧面对系统的分析和设计模型进行刻画。
10种视图,四类:
1、用例图
2、静态图,包括类图、对象图、包图。
类图的边表示类之间的联系,包括继承、关联、依赖、聚合等。
对象图描述在某种状态下或某一时间段,系统中活跃的对象及其关系。
包由子包、类组成。
3、行为图,包括交互图、状态图、活动图,他们从不同的侧面刻画系统的动态行为。
交互图分为顺序图、合作图。顺序图强调对象之间消息发送的时序。合作图更强调对象间的动态协作关系。
状态图描述对象的动态行为。
活动图描述操作序列,这些操作序列可以并发、同步,包含控制流、信息流。
4、实现图,包括构件图、部署图。描述组成和分布情况。部署图节点表示实际的计算机和设备,边表示节点之间的物理连接,也可以显示连接的类型及节点之间的依赖性。
6.2.1用例和用例图
用例图也翻译为用况、用按等,在UML中,用例用一个椭圆表示,往往用动宾结构或主谓结构命名。
可选的动作序列和会出现异常的动作序列。
37
37
用例是代表系统中各种相关人员之间就系统的行为所达成的契约。
需求阶段用例是分析人员与客户沟通的工具项目规模估算的依据;
设计阶段用例是系统功能设计的主要输入;
实现阶段用例是检测类型为正确性的文档。
本质上,用力分析是一种功能分解的技术。
1、参与者角色,参与者实际上并不是系统的一部分。
2、用例间的关系,泛化、包含、扩展等。
包含是比较特殊的依赖关系。
扩展,基本用例必须声明若干“扩展点”,而这些扩展用例只能在这些扩展点上增加新的行为和含义。
3、用例图建模人员可以在途中给某些图符加上填充色,在语义上,使用填充颜色和不使用填充颜色的模型是一样的。
6.2.2交互图
描述对象之间对象与参与者之间动态协作关系协作过程中行为次序。
通常描述用例的行为,显示该用例中所涉及的对象对象之间的消息传递。
顺序图、协作图之间可以互相转化,一个用例需要多个顺序图或协作图。
交互图可以帮助分析人员对照检查每个用例中所描述的用户需求,提醒分析人员去补充遗漏的类或方法。
水平方向为对象维,一般主要参与者放在最左边,次要参与者放在最右边。垂直方向为时间维。
6.2.3类图和对象图
一般而言,类的名字是名词。
类之间的关系有关联、聚集、组合、泛化、依赖等。
1、关联,链是关联的实例,关联表示类与类之间的关系,链表示对象与对象之间的关系。
关联用实线表示,角色还具有多重性。
关联类描述关联的属性、操作、以及其他信息。
关联类通过一条虚线与关联连接。
自返关联又称递归关联,同一个类的两个对象间的关系。两个关联端,每个关联端的角色不同。
2、聚集和组合
聚集是一种特殊形式的关联,类之间整体与部分的关系。
组合整体与部分具有同样的生存期,是一种特殊形式的聚集。3、泛化关系,一般和特殊元素之间的关系,就是平常所说的继承关系。
6.2.4状态图和活动图
1、状态图
描述对象生存期间的动态行为,所经历的状态序列,引起状态转移的事件、动作。
是UML动态行为建模的5个图之一,用状态机对一个对象的生命周期建模,状态图用于显示状态机,重点在于状态之间的控制流。
除了初态和终态,还有Idle和Running两个状态,keyPress、finished、shutDown是事件。
2、活动图
是UML动态行为建模的5个图之一,描述系统的工作流程和并发行为。状态图的特殊形式,一个活动结束后将立即进入下一个活动。
基本概念:活动、泳道、分支、分叉、汇合、对象流。
1.活动,注意区分动作状态和活动状态,动作状态是原子的,没有内部转移,没有内部活动,所占用的时间可以忽略,目的是执行进入动作,然后转向另一个状态。
活动状态是可分解的,工作完成需要一定的时间。
2.泳道,是活动图中区域划分,每个泳道代表一个责任区,知道和类并不是一一对应的关系。
3.分支,同一个触发事件,可以根据不同的警戒条件转向不同的活动,每个可能的转移是一个分支。
4.分叉和汇合,如果要表示系统或对象中的并发行为,使用分叉fork和汇合join,汇合正好与分叉相反。5.对象流,活动图中可以出现对象,对象可用作为活动的输入输出。活动图中的对象流表示活动和对象之间的关系。
6.2.5构件图
构件是系统中遵从一组接口且提供其实现的物理的、可替换的部分。
构件图显示一组构件以及它们之间的相互关系,包括编译、连接、执行时构建之间的依赖关系。
构件就是一个实际文件,以下几种类型:
1、部署构建
2、工作产品构件
3、执行构件
构件图可以对以下几个方面建模:
1、对源代码文件之间的相互关系建模。2、对可执行文件之间的相互关系建模。6.2.6部署图
部署图也称配置图、实施图,显示系统中计算节点的拓扑结构、通信路径、节点上运行的软构件等。
一个系统模型只有一个部署图,常用语帮助理解分布式系统。部署图由体系结构设计师、网络工程师、系统工程师等描述。
6.3基于UML的软件开发过程
6.3.1开发过程概述
UML是独立于软件开发过程的,能够在几乎任何一种软件开发过程中使用。迭代的渐进式软件开发过程包含四个阶段:初启、细化、构件、部署。
1、初启
项目的发起人确定项目的主要目标和范围,初步的可行性分析和经济效益分析。
2、细化
细化阶段的开始标志着项目的正式确立。
1.初步的需求分析,比较重要、比较有风险的用例。
2.初步的高层设计,用例、用例图、类、类图将依据包的划分方法分属于不同包。
3.部分的详细设计,根据软件元素的重要性和风险程度确立优先细化原则,不能将风险的识别和解决延迟到细化阶段后。
4.部分的原型构造。
3、构建
构造阶段,每次迭代中实现一部分用例,用户可以及早参与对已实现用例的实际评价。
原则:
1.用户认为业务价值较大的用例应优先安排。
2.开发人员评估后认为开发风险较高的用例优先安排。迭代计划中,要确定迭代次数、每次迭代所需时间以及每次迭代中应完成的用例。
6.3.2基于UML的需求分析
1、生成用例
如果多个用户扮演同一角色,这些用户将由单一执行者表示。如果一个用户扮演多种角色,则需要多个执行者来表示同一用户。
用例主要来源于分析人员对场景的分类和抽象,即将相似的场景进行归类,使一个用例可以通过实例化和参数调节而涵盖多个场景。
2、用活动图表示用例
3、生成用例图
执行者与用例之间的关系有两种:触发执行、信息交换。
执行者指向用例表示触发执行和/或信息交换,用例指向执行者表示用例将生成的信息传递给执行者。
4、建立顶层架构
顶层架构便于开发人员聚焦于系统的不同部分。
模型——视图——控制器(Model、View、Controller,MVC)模式。
模型维护并保存数据,视图呈现数据,控制器将动作映射为处理功能并实际调用。
MVC模式特别适合于分布式应用软件,尤其是web应用系统。
分层模式降低软件系统的耦合度。
确立顶层架构的过程中需综合考虑以下因素:
包的数量,架构过早地陷入细节,返工的可能性很大,也不合理地限制了后续分析和设计活动的自由空间。
包之间的耦合度。
将不稳引起的软件元素分类聚集于少数几个包中,以提高软件系统的可维护性。
可选功能和必须实现的功能置于不同的包。根据开发人员专长划分,使每个包都能分配给最合适的开发人员,有利于并行开发。
6.3.3面向对象的设计方法
1、设计用例实现方案
1.提取边界类,实现类和控制类。
边界类用于描述系统与外部环境之间的交互。
a.界面控制。
b.外部接口。
c.环境隔离。使目标软件系统的其余部分尽可能地独立于环境软件。
边界类,《boundary》。
实体类“内向收敛”特征,仅提供读/写信息的必要操作作接口,并不涉及业务逻辑处理,《entity》。
控制类,《control》。
边界类的作用范围可以超越单个用例2.构造交互图
交互图作为用力的精确实现方案。
事件流中的事件直接对应交互图中的消息,事件间的先后关系体现为交互图中的时序,对消息的响应则构成消息接收者的职责,这种职责被确立为类的方法。
不应该出现穿越控制类生命线的消息。
为易于理解,应该用分离的UML交互图分别表示事件流和每个备选事件流。
原则上,每个类都应该有一个操作来响应交互图中指向其对象的那条消息。
2、设计技术支撑方案
当用户需求发生变化时,技术支撑方案应具有良好的稳定性。
技术支撑方案应该位于层次结构中的较低层次。
一方面取决于需求,另一方面取决于对软件技术手段把我和选取。
3、设计用户界面
1.熟悉用户并对用户分类,以便尽量照顾到所有用户的合理要求,并优先满足某些特权用户。
2.按用户类别分析用户的工作流与习惯,从每类中选取一个用户代表,建立调查表,判断用户对操作界面的需求和喜好。
3.首先应考虑命令的顺序,一般常用命令居先,与用户工作习惯保持一致;其次,根据外部服务之间的聚合关系组织相应的命令;然后充分考虑人类记忆的局限性,最好组织为一颗两层多叉树;提供操作的快捷方式。
5.利用快速原型演示,改进界面设计。并评判系统是否齐全、方便、好用。
4、精化设计模型
对模型进行改进的活动可以分为精化和合并两种。一般先从精化开始。设计优秀的粗粒度组件应该只是完成一项功能,这一点是它与子系统的主要区分。
粗粒度组件的范围过于广泛,难以发挥重用价值,粗粒度组件拥有持久化的行为,拥有业务逻辑,需要表示层的支持。
将需求分成几个功能组,基本上就可以得到相应的粗粒度组件了。
过小的范围,将会造成粗粒度组件不容易使用,用户需要理解不同的粗粒度组件之间的复杂关系。
如果可能,在粗粒度组件之间定义单项关联可以有效的减少组件之间的耦合。
尽可能简化组件之间的关系。
我们需要从软件的目标领域中识别出关键性的实体,或者说领域中的名词。然后决定它们应该归属于那些粗粒度组件。两个组件之间存在重复的要素,可以从中抽取共性的部分,形成新的组件。
6.4系统架构文档化6.4.1模型概述
以精心选择的形式将若干结构元素进行装配。
软件架构={元素,形式,关系/约束}
逻辑视图(logicalview)对象模型。
过程视图(processview)并发和同步特征。
物理视图(physicalview)分布式。
开发视图(developmentview)静态组织结构。
Rational4.1视图模型。
每个视图上均独立地应用Perry&Wolf软件架构公式。对每种视图选用特定的架构风格(architecturalstyle)。
6.4.2逻辑结构
逻辑架构主要支持功能性需求,系统分解为一系列的关键抽象,(大多数)来自于问题域,表现为对象或对象类的形式。
抽象、封装、继承。
对于数据驱动程度高的应用程序,可以使用其他形式的逻辑视图,如E-R图代替面向对象的方法。
1、逻辑视图的风格采用面向对象的风格,试图在整个系统中保持单一的、一致的对象模型。
6.4.3进程架构
进程架构考虑一些非功能性的需求,并发性、分布性、系统完整性、容错性,以及逻辑视图的主要抽象如何与进程结构相配合在一起。
进程是构成可执行单元任务的分组。区分主要次要任务:主要任务是可以唯一处理的架构元素;次要任务是由于实施原因而引入的局部附加任务。
6.4.4开发架构
开发架构关注软件开发环境下实际模块的组织。
开发架构用模块和子系统图来表达,显示了“输出”和“输入”关系。
考虑因素:开发难度、软件管理、重用性、通用性、由工具集、语言所带来的限制。
开发视图是建立产品线的基础。推荐使用分层(layered)的风格,每层具有良好定义的职责。某层子系统依赖同一层或低一层的子系统,最大程度地减少了具有复杂模块依赖关系的网络的开发量
6.4.5物理架构
物理架构主要关注系统非功能性的需求,可用性、可靠性(容错性),性能(吞吐量)、可伸缩性。
软件至节点的映射需要高度的灵活性及对源代码产生最小的影响。6.4.6场景
4种视图的元素通过数量比较少的一组重要场景(更常见的是用例)进行无缝协同工作,我们为场景描述相应的脚本(对象之间和过程之间的交互序列)。
在某种意义上场景是最重要的需求抽象。
4+1的+1起到了两个作用:
作为一项驱动因素来发现架构设计过程中的架构元素。
作为架构原型测试的出发点。
场景表示法与组件逻辑视图非常相似,但它使用过程视图的连接符来表示对象之间的交互。
6.4.7迭代过程
在进行文档化时,提倡一种更具有迭代性质的方法——架构先被原型化、测试、估量、分析,然后在一系列的迭代过程中被细化。
除了减少风险之外,还有其他优点:团队合作、培训、加深对架构的理解、深入程序和工具等。使需求被细化、成熟化。
系统大多数关键的功能以场景的形式被捕获,关键意味着:最重要的功能、系统存在的理由、使用频率最高的功能、必须减轻的一些重要技术风险。
2011年软考系统架构设计师学习笔记第七章
7.1设计模式概述
重复遇到的典型问题,描述这些共同问题和解决这些问题的方案就形成了所谓的模式。
7.1.1设计模式的历史
模式分为几个部分:
特定的情景(Context),指模式在何种情况下发生作用;
动机(SystemofForce),指问题或预期的目标;
解决方案(Solution),平衡各动机或解决所阐述问题的构造或配置。每个模式描述了一个在某种特定情境下不断重复发生的问题,以及解决该问题解决方案的核心所在。
7.1.2为什么要使用设计模式
面向对象设计时需要考虑封装性、力度大小、依赖关系、灵活性、可重用性等。
1、简化并加快快设计
无需从底层做起,重用成功的设计,节约开发时间,提高软件质量。
2、方便开发人员之间的通信
可以更准确地描述问题及问题的解决方案,使解决方案具有一致性。
3、降低风险
4、有助于转到面向对象技术
开发人员对新技术往往会有抵触或排斥心理,对成熟的设计模式具有以下特性:
1.巧妙。
2.通用,不依赖于系统、语言、领域。
3.不仅仅停留在理论上。
4.简单。
5.可重用。6.面向对象。
7.1.3设计模式的组成元素
1、模式名,简洁地描述了模式的本质,可以帮助我们思考。
2、问题或意图,解释了设计问题和问题存在的前因后果,可能描述了特定的设计问题。
3、情景,告诉我们该模式的适用性。
4、动机,描述相关的动机和约束,通常需要对各期望的目标进行有限排序,动机阐明了问题的复杂性,定义了在相互冲突时所采取的各种权衡手段。
5、解决方案,因为模式就像一个模板,所以解决方案并不描述一个特定而具体的设计或实现,而是提供设计问题的抽象描述和怎样用一个具有一般意义的元素组合。
6、示例,帮助读者理解模式的具体使用方法。
7、结果情景,阐述了模式后续状态和副作用。
8、基本原理,解释该模式如何、为何能解决当前问题。
9、相关模式,包括静态的和动态的,迁到模式、后续模式、替代模式。
10、已知应用,通常好的模式前面都有一个摘要,提供简短的总结和概述,为模式描绘出一个清晰的图画,提供有关该模式能够解决问题的快速信息。
新技术可能带来的效果持怀疑态度。模式应该说明它的目标读者,以及对读者有哪些知识要求。
7.1.4设计模式的分类
软件模式主要可分为设计模式、分析模式、组织和过程模式等。
设计模式主要用于得到简洁灵活的系统设计。
按设计模式的目的划分,创建型、结构型、行为型;
按设计模式范围划分,类设计模式、对象设计模式。
1、创建型模式,对对象实例化过程的抽象,采用抽象类所定义的接口,封装了对象如何创建、组合等信息。
2、结构型模式,如何组合已有的类和对象以及获得更大的结构。3、行为型模式,不仅描述对象或类的模式,还描述它们之间的通信模式,特别是描述一组对等的对象怎样互相协作完成其中任一对象无法单独完成的任务。
7.2设计模式实例
7.2.1创建性模式
通过该了的子类来创建对象的。但是,这可能会限制在系统内创建对象的类型或数目。
1、AbstractFactory模式
在不指定具体类的情况下,为创建一些列相关或相互依赖的对象提供了接口。
提供了一个可以确定合适的具体类的抽象类。
优点:
可以与具体类分开。
更容易在产品系列中转换。
提高了产品间的一致性。
以下情况应该使用AbstractFactory模式:
系统独立于产品的创建、组成、表示。
系统配置成具有多个产品的系列。
相关产品对象系列是共同使用的,而且必须确保这一点。
你希望提供产品的类库,只开放其接口。
2、Builder模式
将复杂对象的构件与表示相分离,相同的构造过程可以创建不同的对象,通过只指定对象的类型和内容。
一次就可以创建所有的复杂对象,而其他模式一次就只能创建一个对象。
优点:
可以对产品内部表示进行改变。
将构造代码与表示代码相分离。
以下情况应该使用Builder模式:
算法独立于组成对象。
构造过程必须允许已构件对象有不同表示。
3、FactoryMethod模式
实例化工作交给其子类,可以在不修改代码的情况下引入新类,因为新类只实现了接口。
优点:
代码只处理接口,因此可以使用任何实现了接口的类。
在类中创建对象比直接在客户端创建要更加灵活。
以下情况中,应该使用FactoryMethod模式:
类不能预料它必须创建的对象的类。
类希望其子类指定要创建的对象。
类将责任转给某个帮助子类,而用户希望定位那个被授权的帮助子类。
4、Prototype模式
只要将对象类定义成能够复制自身就可以实现。
优点如下:
可以在运行时添加或删除产品。
通过改变值指定新对象。
通过改变结构制定新对象。
减少子类的生成和使用。
可以用类动态地配置应用程序。
以下情况中,应该使用Prototype模式:
运行时,指定需要实例化的类,例如动态载入。
避免构建与产品的类层次结构相似的工厂类层次结构。
5、Singleton模式
确保一个类只有一个实例,并且提供全局访问入口,确保使用这个实例所有的对象使用相同的实例。
优点:
对单个实例的受控访问。
命名空间的减少。
允许改进操作和表示。
允许改变数目的实例。比类操作更灵活
7.2.2结构性模式
机构性模式控制较大部分之间的关系。
它将以不同的方式影响应用程序。
允许在补充写代码或自定义代码的情况下创建系统。
具有增强的重复使用性和应用性能。
1、Adapter模式
可以充当两个类之间的媒介,可以转换一个类的接口,被另外一个类使用,使得具有不兼容接口的类能够系统使用。
优点:
允许多个不兼容的对象进行交互和通信。
提高已有功能的重复使用性。
以下情况,应该使用Adapter模式:
要使用已有类,而该类接口与所需的接口并不匹配。
要创建可重用的类,该类可以与不相关或未知类进行协作。
要在一个不同于已知对象接口的接口环境中使用对象。必须要进行多个源之间的接口转换的时候。
2、Bridge模式
将一个复杂的组件分成两个独立的但又相关的继承层次结构:功能性抽象和内部实现。
优点:
接口与实现相分离。
提高了可扩展性。
对客户端隐藏了实现的细节。
以下情况中,应该使用Bridge模式:
避免在抽象及其实现之间存在永久的绑定。
抽象及其实现可以使用子类进行扩展。抽象的实现被改动不用重新编译代码。
3、Composite模式
创建树形层次结构来改变复杂性。
优点:
定义了由主要对象和符合对象组成的类层次结构。
添加新的组件类型更加简单。
结构的灵活性和可管理性的接口。
以下情况中,应该使用Composite模式:
想要表示对象的整个或者部分的层次结构。
想要客户端能够忽略符合对象和单个对象之间的差异。结构可以具有任何级别的复杂性,而且是动态的。
4、Decorator模式
不修改对象外观和功能的情况下添加或删除对象功能。
优点:
比静态继承具有更大的灵活性。
避免了特征装载的类处于层次结构的过高级别。
简化了编码。
改进了对象的扩展性。
在以下情况中,应该使用Decorator模式:
在单个对象中动态并且透明地添加责任,不会影响其他对象。
以后可能要修改的对象中添加责任。无法通过静态子类化实现扩展时。
5、Facade模式
为子系统中的一组接口提供了一个统一的接口。更容易使用子系统的高级接口。
优点:
在不减少系统所提供的选项的情况下,为复杂系统提供了简单接口。
屏蔽了子系统组件。
提高若耦合度。
将客户端请求转换后发送给能够处理这些请求的子系统。
以下情况中,应使用Facade模式:
为复杂的子系统提供简单的接口。
客户端和抽象的实现类中存在许多依赖关系。想要对子系统进行分层。
6、Flyweight模式
通过共享对象减少对象数目。
通过共享一个接口来避免使用多个具有相同信息的实例所带来的开销。
优点:
减少了要处理的对象数目。
如果对象能够持续,可以减少内存和存储设备。
以下情况中,应该使用Flyweight模式:
应用程序使用大量的对象。
由于对象数目巨大,导致很高的存储开销。不依赖于对象的身份。
7.2.3行为性模式
行为性模式影响系统的状态、行为流。
简化、优化并且提高应用程序的可维护性。
1、ChainofResponsibility模式
在系统中建立一个链,在首先接收到它的级别处被处理,或者定位到可以处理它的对象。
优点:
降低了耦合度。
增加面向对象制定责任的灵活性。
类的集合可以作为一个整体。
以下情况中,应该使用ChainofResponsibility模式:
多个对象可以处理一个请求,而其处理器却是未知的。
在不指定确切的请求接受对象的情况下,向几个对象中的一个发送请求。动态地指定能够处理请求的对象集。
2、Command模式
在对象中封装了请求。
优点:
将调用操作的对象与知道如何完成该操作的对象相分离。
更容易添加新指令,因为不用修改已有类。
以下情况中,应该使用Command模式:
要通过执行的动作来参数化对象。
在不同的时间指定、排序、执行请求。必须支持Undo、日志记录或事务。
3、Interpreter模式
解释定义其语法表示的语言,提供了语句解释器。
优点:
容易修改并扩展语法。
更容易实现语法。
以下情况中,应该使用Interpreter模式:
语言的语法比较简单。效率并不是最主要的问题。
4、Iterator模式
为集合中的有序访问提供了一致的方法,而该集合是独立于基础集合。
优点:
支持集合的不同遍历。
简化了集合的接口。
以下情况中,应该使用Iterator模式:
不开放集合对象内部表示的前提下,访问集合对象内容。
支持集合对象的多重遍历。为遍历集合中的不同结构提供了统一的接口。
5、Mediator模式
通过引入一个能够管理对象间消息分布的对象,简化了系统中对象间的通信。提高了对象间的松耦合度,还可以独立地改变其间的交互。
优点:
去除对象间的影响。
简化了对象间协议。
集中化了控制。
由于不再需要直接互传消息,单个组件变得更加简单,而且容易处理。
由于不再需要包含逻辑来处理组件间的通信,组件变得更加通用。
以下情况中,应该使用Mediator模式:对象集合需要以一个定义规范但复杂的方式进行通信。
6、Memento模式
保持对象状态的“快照”(snapshot),对象可以在不向外界公开其内容的情况下返回到它的最初状态。
优点:
保持封装的完整性。
简化了返回到初始状态所需的操作。
以下情况中,应该使用Memento模式:
必须保存对象状态的快照,恢复状态。
7、Observer模式
定义了对象间一到多的依赖关系,当对象改变状态时,将自动通知并更新它所有的依赖对象。
优点:
抽象了主题与Observer之间的耦合关系。
支持广播方式通信。
以下情况中,应该使用Observer模式:
对一个对象的修改涉及对其他对象的修改,而且不知道有多少对象需要进行相应修改。对象应该能够在不同假设对象标识的前提下通知其它对象。
8、State模式
对象在内部状态变化时,变更其行为,并且修改其类。
优点:针对不同状态来划分行为,使状态转换显式进行。
9、Strategy模式
定义了一组能够用来表示可能行为集合的类。这些行为可以在应用程序中使用,来修改应用程序功能。
优点:
另一种子类化方法。
在类自身中定义了每一个行为,减少了条件语句。
更容易扩展模型。
以下情况中,应该使用Strategy模式:
许多相关类只是在行为方面有所区别。
需要算法的不同变体。算法使用客户端未知的数据。
10、TemplateMethod模式
不重写方法的前提下允许子类重载部分方法的方法。
将一些步骤由子类实现。
优点:代码重用的基础技术。
以下情况中,应该使用TemplateMethod模式:一次实现算法的不变部分,子类实现算法的可变行为。
11、Visitor模式
不改变操作元素的类的前提下定义一个新操作。
优点:
容易添加新操作。
集中相关排除不相关操作。
以下情况中,应该使用Visitor模式:
包含许多具有不同接口的对象类,并且想要对这些依赖具体类的对象进行操作。
定义对象结构的类很少被修改,但想要在此结构上定义新的操作
2011年软考系统架构设计师学习笔记第八章
8.1XML概述
可扩展标记语言(xml)是标准通用标记语言(SGML)的一个子集;可以用XML来开发一种标记语言,它的元素和属性多是为专门行业和产业而定义的。
支持统一字符编码UCS,使得XML成为了国际标准,XML和HTML都支持样式表(stylesheet)。
8.1.1标签语法
XML元素的结构与HTML基本相同,使用尖括号来界定标签,但二者相同点也就仅此而已。
与HTML不同,几乎所有的XML标签都是大小写敏感的,主要是满足XML国际化的设计目标和简化处理过程的需要。
非英语字母可能没有对应的大小写,合并会存在许多缺陷。
1、字符
XML指定的字符均在16位的Unicode2.1字符集。
2、命名
XML命名必须以字母、下划线或冒号开头,后面跟着的是有效命名字符(数字、减号、点)。
实际应用中不应该使用冒号,除非是用作命名空间修饰的分隔符。字母并非局限于ASCII码,这一点是非常重要的。
8.1.2文档部分
格式正规的XML:
1、一个可选的序言(prolog)
2、文档的主体(body)
3、可选的“繁杂”的尾声(epilog),包括:注释、处理指令(ProcessingInstruction,PI)和/或紧跟在元素后面的空白。
8.1.3元素
元素是XML标签的基本组成部分。
元素使用标签(tag)进行分隔:尖括号围住元素类型名。每一个元素都必须由一个起始标签和一个结束标签分隔开。
空元素
只是指定一个点,而不是提供一个包容器,空元素可以用缩略形式表示,起始和结束标签的混合体。
文档元素,每个文档有且只有一个根节点,称为文档实体(documententity)或文档根(documentroot),它们的根被称为文档元素(documentelement)。
XML对元素必须正确地嵌套。如果字符串中包含单引号,分隔符必须使用双引号,反之亦然。
8.1.4字符数据字符数据就是任何不是标记的文本,小于号、大于号、&号是标记分隔符,因此他们绝不能以字符串的形式出现在字符数据中(CDATA部分除外),必须使用转义字符“&It;”等。
8.1.5属性
元素是XML中的名词,属性是它的形容词。
attributename=“attributealue”
attributename=“attributealue”
起始标记或空标记中属性只允许有一个实例存在。
非法的:XML数据中,只有4个字符可以作为空白使用,09水平指标(HT),0D回车(CR),0A换行(CF),20空格。
8.1.6注释
8.1.7CDATA部分
是一种用来包含文本的方法,对希望在自己的文档中包含XML标记的使用举例的作者来说是最有用的。
使用这些部分时XML几乎所有的优势都丧失殆尽。,“…”可以是任何字符串,只要不包含字符串“++>”。
8.1.8格式正规的文档
元素和元素之间唯一的直接关系就是父子关系;
兄弟关系是通过数据结构推断出来的,既不直接也不可靠,因为元素可能被插入到某个元素和它的一个或多个子元素之间。
数据对象如果满足下列条件就是各市正规的文档。
1、语法合乎XML规范。
2、元素构成一个层次树,只有一个根节点。
3、没有对外部实体的引用,除非提供了DTD。任何XML解析器发现不是个是正规的结构,就报告一个“致命”错误,致命错误不一定导致解析器终止操作,但它不再会以正常的方式向应用程序传递字符数据和/或XML结构。
8.2XML命名空间
8.2.1命名空间
XML命名空间是解决多个义性和名字冲突问题的方案。命名空间是一组具有结构的名称的集合。
8.2.2定义和声明命名空间
命名空间推荐标准为我们提供了xmlns属性,属性值就是URI。
命名空间前缀经常被提及为前缀,而名称本身是基本名。默认的命名空间(没有声明别名的,形式为xmlns=“…”),在声明作用域里所有没有经命名空间前缀修饰的名称被假定属于默认的命名空间。
8.3DTD
一个XML文档是有效的,则它必须满足:文档和文档类型相关联。
8.3.1什么是DTD
DTD文档类型定义。
主要用来查看XML文档的格式,出现在XML文档的序言中,DTD声明不是必须出现的。
DTD中主要定义以下几个方面的内容:
1、元素声明。
2、实体声明。3、属性的种类。
8.3.2为什么引入DTD
提供一种验证的手段,对XML来说是一大贡献,确保XML文件确实地遵守了指定的格式,而这个格式可能是一个标准,或者是数据交换双方所共同定制的协议。
实现了文件格式的统一化,提高了文件的重用性。使用DTD进行验证,增加了操作时间。
8.3.3实体的声明
实体(entity)是一些预先定义好的数据。
存储部位,内部实体,外部实体;
组成内容,可分解实体,不可分解实体。
引用方式,一般型实体,参数型实体。不同类型的实体声明和使用方法略有不同。
8.3.4属性的声明
良构XML文档中,属性只要满足命名规则就可以了,但是在一个有效的XML文档中,属性要经过DTD的属性声明。
DTD声明中,属性的声明语法可以归纳为如下形式:元素名称指的是属性所属的元素名称。
8.4XMLSchema
DTD尽管进行了很大的简化,但还是一门风格和XML完全不同的语言,而schema文档是一种特殊的XML文档,容易学习和使用。
DTD的另一个缺点是数据类型相当有限。DTD中根本不提供数值数据类型。一个XML文档只能使用一个DTD文档,schema则采用了名域空间的机制,使得一个XML文档可以调用多种schema文档。
8.5可扩展样式表语言
(eXtensibleStylesheetLanguage,XSL)是描述XML文档样式信息的一种语言,W3C制订。
XML的一个优点就是形式与内容相分离,XSL就是它的两种样式表单之一,
另一种是层叠样式表(CSS),是一种静态的样式描述格式,其本身不遵从XML的语法规范。
而XSL是一个XML文档。
是XML的一种具体应用它有两大部分组成:
第一部分描述了如何将XML文档进行转换、转换为可浏览或可输出的格式;
第二部分定义了格式对象(FomattedObject,FO)源树转换为可以显示的结果树,称为树转换,按照FO分析结果树,产生一个输出结果,这个过程称为格式化。
转换树日趋成熟,已从XSL中分离出来,另取名为XSLT(XSLTransformations),现在一般所听说的XSL大多是指XSLT。
一同退出的还有配套标准Xpath(XMLPathLanguage,XML路径语言)
在XML中声明XSL样式单:
XSL在网络中的应用大体分为两种模式:
1、服务器端转换模式
XML文件下载到浏览器前先转换成HTML。
1.动态方式,接到转换请求时再进行实时转换。
2.批量方式。
2、客户端转换模式
XML和XSL文件都传送到客户端,浏览器必须支持XML+XSL的工作方式。8.6其他相关规范
8.6.1XPath
采用简洁的、非XML语法,基于XML文档的逻辑结构,在该结构中进行导航。
XPath表达式通常出现在URL和XML属性值里。
XPath将XML文档描绘为树或节点的模型,节点的类型有根节点、元素节点、属性节点、文本节点、注释节点、名称空间节点、处理指令节点7种。
XPath规范定义了两个主要部分:一部分是表达式语法,另一部分是一组名为XPath核心库的基本函数。
指向某个XML文档中一个特定节点的路径由三部分信息构成:一个轴类型、一个节点测试和谓词。
轴类型有多种,指定所选节点和环境之间的关系。节点测试查找什么类型的节点,测试包括通配符“*”、text()、node()、comment()、processing-instruction()等。
谓词以“*”开始,以“+”结束,谓词通过使用内部函数来过滤不需要的节点。<轴>::<节点测试>[<谓词表达式>]
8.6.2XLink和XPointer
XLink指定一个文档如何连接到另一个文档,XPointer指定文档内部的位置,都是基于XPath推荐标准。
2011年软考系统架构设计师学习笔记第九章
面向构件的软件设计
9.1术语、概念
1、构件
构件的特征如下:
独立部署单元。
61
61
作为第三方的组装单元。
没有(外部的)可见状态。
独立可部署,意味着必须能跟他所在的环境及其他构件完全分离。
原子性,构件不但必须具备足够好的内聚性,还必须将自己的依赖条件和所提供的服务说明清楚。
缓存具有这样的特征:当它被清空时,除了可能会降低性能以外,没有其它后果。
构建本质上没有状态,同一操作系统进程中装载多个构件的拷贝是毫无意义的,至多会存在一个特定构件的拷贝。许多系统中,构建被实现为大粒度的单元,工资管理服务程序就是一个构件,工资数据只是实例(对象),将不易变的“模型”和易变的“实例”分离的做法避免了大量的维护问题。
2、对象
对象的特征如下:
一个实例单元,具有唯一的标志。
可能具有状态,此状态外部可见。
封装了自己的状态和行为。
显式存在的实例化方案称为类,也有隐式的实例化方案,既通过克隆一个已存在的对象来实现,即原型对象。
新生的对象都必须被设置一个初始状态,创建与初始化对象的代码可以是一个静态过程——类的一部分,称为构造函数。
如果这个对象是专门用来创建与初始化对象的,称为工厂。对象中专门用来返回其他新创建的对象的方法称为工厂方法。
3、构件与对象
构件通常包含了若干类或不可更改的原型对象。还包括一系列对象。
但构件并非一定要包含类元素,它甚至可以不包含类,可以拥有传统过程体,甚至全局变量。
构件创建的对象——更确切地说是对这些对象的引用——可以与该构件分离开来,并对构件的客户可见。构件的客户通常是指其他构件。
62
62
一个构件可以包含多个类元素,但是一个类元素只能属于一个构建。将一个类拆分进行部署通常没有什么意义。
4、模块
模块化方法成熟的标志是其对分离编译技术的支持,包括跨模块的正确的类型检查能力。
模块没有实例化的概念,在任何情况下,模块都可以包含多个类。类之间的继承关系并不受模块界限的限制。
模块本身就可以作为一个最简单的构件,这些库是功能性的,而不是面向对象的。
资源可以参数化一个构件,重新配置该构件而无需更改构件代码,例如,本地化设置可以通过资源配置实现。某些情况下,模块并不适合作为构件,构件没有外部可见的状态,但是模块却可以显式地用全局变量来使其状态可见。
5、白盒抽象、黑盒抽象与重用白盒抽象中,可以通过继承对构件的实现细节进行修改,白盒方式中实现细节对外界是完全可见的。
绝大多数系统中,(ApplicationProgrammingInterface,API)相当于黑盒重用这些接口的实现。
白盒重用不可以轻易地被另外的软件替换,因为依赖于细节。软件构件是一种组装单元,它具有规范的接口规约和显式的语境依赖,软件构件可以被独立地部署并由第三方任意地组装。
6、接口
接口是一个已命名的一组操作集合。
一个构件可以有多个接口,每个接口提供一种服务。
尽量不要重复引入功能相近的接口。
推行标准化,可能会由于笨拙官僚的“委员会设计”问题而不能达到最优;市场竞争,的非技术本质也可能导致结果不是最优。接口标准化是对消息的格式、模式、协议的标准化,XML提供了一种统一的数据格
63
63
式
3、构件与对象
构件通常包含了若干类或不可更改的原型对象。还包括一系列对象。
但构件并非一定要包含类元素,它甚至可以不包含类,可以拥有传统过程体,甚至全局变量。
构件创建的对象——更确切地说是对这些对象的引用——可以与该构件分离开来,并对构件的客户可见。构件的客户通常是指其他构件。一个构件可以包含多个类元素,但是一个类元素只能属于一个构建。将一个类拆分进行部署通常没有什么意义。
4、模块
模块化方法成熟的标志是其对分离编译技术的支持,包括跨模块的正确的类型检查能力。
模块没有实例化的概念,在任何情况下,模块都可以包含多个类。类之间的继承关系并不受模块界限的限制。
模块本身就可以作为一个最简单的构件,这些库是功能性的,而不是面向对象的。
资源可以参数化一个构件,重新配置该构件而无需更改构件代码,例如,本地化设置可以通过资源配置实现。某些情况下,模块并不适合作为构件,构件没有外部可见的状态,但是模块却可以显式地用全局变量来使其状态可见。
5、白盒抽象、黑盒抽象与重用白盒抽象中,可以通过继承对构件的实现细节进行修改,白盒方式中实现细节对外界是完全可见的。
绝大多数系统中,(ApplicationProgrammingInterface,API)相当于黑盒重用这些接口的实现。
白盒重用不可以轻易地被另外的软件替换,因为依赖于细节。软件构件是一种组装单元,它具有规范的接口规约和显式的语境依赖,软件构件可以被独立地部署并由第三方任意地组装。
64
64
6、接口
接口是一个已命名的一组操作集合。
一个构件可以有多个接口,每个接口提供一种服务。
尽量不要重复引入功能相近的接口。
推行标准化,可能会由于笨拙官僚的“委员会设计”问题而不能达到最优;市场竞争,的非技术本质也可能导致结果不是最优。接口标准化是对消息的格式、模式、协议的标准化,XML提供了一种统一的数据格式。
6、构件与生成式编程
必须要精确控制实际的构件边界,包括提供接口和需求接口,必须能精确控制同其他构件间的静态依赖。
9.3.2语境相关组合构建框架
COM+增加了可租赁线程“套间”的概念,一次只允许一个线程入住,但是多个线程能顺序地入住该“套间”。
相同事务域中的对象共享一个单独的逻辑线程和一个单独共享事务资源集合,一旦线程从事务域中返回,事务要么提交要么终止。COM+中,如果两个构件共享一组兼容的语境属性集,则它们可以被看作是处于同一域中。
9.3.3构件开发
异步问题
事件分发机制负责接收这些事件对象,并把它们发送给对其感兴趣的其他构件实例。
多线程
多线程主要关注于对程序执行进行更好的分配,获取性能最大化的手段却根本不依赖于多线程,而是尽量在第一时间内以最快的速度处理用户的请求。
2011年软考系统架构设计师学习笔记第十章
构建平台与典型架构
10.1OMG方式
对象管理组OMG,通过规范化对象开放市场的所有层次上的互操作性。
10.1.1对象请求代理
CORBA的主要目标就是使用不同语言、不同实现、不同平台能进行交互。CORBA三个基本部分:一套调用接口、对象请求代理ORB、一套对象适配器。
10.1.2公共对象服务规范两类服务:一类服务应用于企业计算系统。一类服务应用于细粒度的对象操作,但目前这些服务的实用价值较差。
1、支持企业分布式计算的服务
1.命名服务、交易器服务
命名服务允许任意地给对象赋予一个名字,这个名字在其所属的命名语境中是唯一的。
命名语境所形成的层次结构,使得所有的名字形成名字树。
交易器服务允许给对象赋予一个复杂的描述,从而允许客户基于该描述来定位所需的对象。
搜寻结果往往是满足查询条件的一组对象列表。
2.事件服务、通告服务
事件服务允许定义那些从时间生产者被发送到时间消费者的事件对象。
信息只能从生产者流向消费者,事件必须通过事件通道传播,事件可以具有类型,而通道可以根据类型过滤事件。
事件通道支持“推”“拉”两种方式的事件通告模型。
通告服务为事件服务增加了几个重要的特征——服务质量QoS规范和管理。
3.对象事务服务
对象事务服务OTS,是建立分布式应用最重要的服务之一。
66
66
OTS实现必须支持平坦事务,而嵌套事务是可选的。
在基于构件的系统中,嵌套事务似乎不可避免。平坦事务在构件系统中的价值有限,实际上,现有的主流事务中间件也不支持嵌套事务。
6.并发控制服务
支持对象资源进行加锁、解锁。
锁必须依赖于事务的语境或其他语境才能获得。7.读锁、写锁、升级锁。
读锁允许多个客户同时执行读操作,写锁允许一个客户写操作,升级锁是可以升级为写锁的读锁支持互斥读。每个受保护的资源都拥有一个锁集合。锁集合不是事务型就是非事务型,并可与其他锁集合建立关联。
8.生命周期服务
支持创建、复制、移动、删除CORBA对象,及其相关的对象组。包含关系支持嵌套复制。
11.外部化服务
支持对象网和对象流之间的双向映射。对象网外部化后再内部化意味着创建该对象网副本。
外部化服务并不保证引用的完整性,仅保留同时外部化的对象之间的引用。对象必须实现Streamable接口才能被外部化。
12.属性服务允许将任意的属性与对象关联起来,被关联的对象必须实现ProperySet接口。
13.对象查询服务依靠属性定位对象。
67
67
15.时间服务拥有众多异步时钟的分布式系统固有的误差问题。
10.1.3CORBA构件模型
CORBA对象适配器主要的作用就是在一个ORB和真正接收调用并且返回结果的对象之间进行交互。10.2SUN公司的方式
Java构件技术的概述
Java中,编译器会检查Applet代码的安全性,通过了编译器检查的Applet代码不会带来安全隐患。
由于编译得到的字节码仍然可能被人修改,代码在装载时刻会被再次检查(称为“校验”)。
运行环境(RuntimeEnvironment,RE)、软件开发工具包(SoftwareDevelopmentKit,SDK)、参考实现。运行环境是Java虚拟机和必须具有的J2SEAPI的实现。
10.3Microsoft的方式
微软选择的是最简单的路线,他没有提出一整套标准;相反,他不断对已有的应用和平台基础进行再工程,这就可以获益于以前的成功技术。语言无关性,作为CLR的一条主要原则。
10.3.1第一个基础关联模型——COM
COM所定义的一个基础实体是接口。在二进制层面上,一个接口被表示为指向一个接口节点的指针。接口节点唯一被指定的部分是置于其内部第一个域的另一个指针,这个指针指向一个过程变量表(或者说,函数指针表)。
每个COM对象都有IUnknown接口,通常置于COM对象图的顶端。
他的“真实”名字是他的IID,即00000000-0000-0000-C000-000000000046为了方便,所
68
68
有接口也有一个可读名。根据习惯,可读接口名以字母I开头。与IID不同,可读接口名并不保证是唯一的。因此,编程中的接口引用均使用IID。
IUnknown接口的首要用途是在最抽象的情况下标志COM对象,此时COM对象没有任何特殊功能。
IUnknown接口只提供对任何COM接口都必须的三个强制性方法。QueryInterface、AddRef、Release,后两个强制性方法被用来控制对象的生命周期。
类型HRESULT被大多数COM接口的方法用来表示调用成功或失败。QueryInterface表明查询的接口是否被支持。
每个COM对象都会进行引用计数,引用计数变量被共享使用的情况下,COM对象不能释放接口节点。
一般这样做没有问题,也是通常的做法。某些情况下占用很多资源,可以使用独立的引用计数变量,以便节点可以尽早释放。这种根据需要创建和删除接口节点的技术有时被称作“快速装卸接口(Tear-OffInterface)”
10.3.2COM对象重用
COM不支持任何形式的实现继承。
COM支持两种形式的对象组装:包含(Containment)和聚集(Aggregation)。
包含是一个对象拥有指向另一个对象的唯一引用。
外部对象只是把请求转发给内部对象,所谓转发就是调用内部对象的方法。
包含能重用内含于其他构件的实现,是完全透明的。如果包含层次较深,或者被转发的方法本身相对简单,包含会存在性能上的问题。因此COM定义第二类重用形式,聚集。
聚集直接把内部对象接口引用传给外部对象的客户,而不是再转发请求。
69
69
保持透明性是很重要的,因为外部对象的客户无法辨别哪个特定接口是从内部对象聚集而来的。
10.3.3接口和多态
COM接口可通过(单)接口继承从其他COM接口中派生。
COM的接口继承与其支持的多态无关。
接口和版本化,一旦公布,COM接口和他的规范不允许以任何形式改变。
既解决了语法问题,也解决了弱基类问题。
IID可用于标志接口中的版本,因为接口总是通过IID被请求。
CORBA讨论中所提及的传递性版本冲突问题在COM中不会发生。
构件可以选择实现接口的多个版本,处理方式就像处理别的不同接口一样。
基于COM的系统能并发支持旧接口和新接口。
10.3.4COM对象的创建和COM库
创建COM类的实例对象时,COM需要把给定的CLSID映射为包含所请求的类的实际构件。COM支持系统注册器,它类似CORBA存储器。进程内(inprocess)服务器、本地服务器、远程服务器。
10.3.5从COM到分布式COM(DCOM)
代理(Proxy)对象和服务器桩(Stub)对象。
为支持跨进程或跨机器的透明通信,COM在客户端创建代理对象,在服务器端创建桩对象。
跨进程传递的接口引用需要被映射为对象引用。DCOM将数据整理成平台无关的网络数据表达(NDR)形式。
10.3.6复合文档和OLE对象
OLE可被概括为一组预定义的COM接口。
文档容器和文档服务器。
文档服务器是提供某种内容模型和显示、操作内容的能力。文档容器没有自己的内容,但可以接受任意文档服务器提供的内容成分。
70
70
许多文档容器也是文档服务器,即是说,他们支持外来的成分,同时也有自己的内容。
10.3.7.NET框架
没有原始类型。
2011年软考系统架构设计师学习笔记第十一章
2011年软考系统架构设计师学习笔记第十一章
信息安全技术
11.1信息安全关键技术
11.1.1加密和解密
有意的计算机犯罪和无意的数据破坏
被动攻击:非法地从传输信道上截取信息,或从存储载体上偷窃、复制信息。
主动攻击:对传输或存储的数据进行恶意的删除、篡改等。
密码技术是防止数据攻击的一种有效而经济的方法。
信源、信宿、明文、密文。
传输消息的通道称为信道,参数称为密钥,解密算法是加密算法的逆运算。
加密密钥与解密密钥相同,或者可以简单相互推导的密码体质称为对称密码体质。不能(在有效时间内)相互推导的,称为非对称密码体质。
1、对称密钥密码体质及典型算法
对称算法(SymmetricAlgorithm),有时又称为传统密码算法,也称单密钥算法。
安全通信之前,商定一个密钥,安全性依赖于密钥,密钥的保密性对通信至关重要。
优点:算法实现的效率高、速度快。
缺点:密钥的管理过于复杂。1.DES算法简介
DES(DataEncryptionStandard,数据加密标准)是IBM公司研制,美国国家标准局1977年公布,作为非机要部门使用的数据加密标准。DES是一个分组加密算法,以64位为分组对数据加密。密钥长度56位(因为每个第8位都用作奇偶校验)。
2.IDEA算法简介
国际数据加密算法(InternationalDataEncryptionAlgorithm,IDEA)前身是推荐加密标准(ProposedEncryptionStandard,PES)。
分组长度64b,密钥长度128b。运算非常简单,只是异或,速度极快,穷举破解不现实。
2、不对称密码加密算法
不对称密码体制又称双密钥和公钥密码体质,1976年由Diffie和Hellman提出的。
私钥秘密保存。
不需要事先通过安全秘密管道交换密钥。
RSA的安全性依赖于大素数分解。公钥和私钥都是两个大素数(大于100个十进制位的函数)。
据猜测,从一个密钥和密文中,推断出明文的难度等同于分解两个大素数的积。
具体操作时考虑到安全性和M信息量较大等因素,一般是先做HASH运算。速度慢一直是RSA的缺陷,因此一般来说,RSA只用于少量数据加密。
11.1.2散列函数与数字签名
1、MD5散列算法
散列函数是一种公开的数学函数。散列函数运算的输入信息叫做报文,运算后所得的结果叫做散列码或消息摘要。
特点:
1.给定M,要找到另一消息M,使H(M)=H(M)很难。
2.散列函数都是单向的,反推M很难。
3.对于任何一个报文,无法预知它的散列码。
4.散列码具有固定的长度,不管原始报文长度如何。
常见的散列函数有:MD5、SHA、HMAC等。
MD5(MessageDigest5)已成为国际标准,产生128位(16字节)长度的散列值(或称消息摘要)。
通过以下4个步骤:
1.附加填充位,填充后数据长度MOD512后余448。如果数据长度正好MOD512余448,增加512个填充位,填充个数也就是1~512。
填充位第一个为1,其余全部是0。
2.补足长度。
3.初始化MD缓存器。
4个32位寄存器,A、B、C、D,初始化为:
A:01234567
B:89ABCDEF
C:FEDCBA98
D:76543210
4.处理数据段。
2、数字签名与数字水印
1.数字签名可以解决否认、伪造、篡改、冒充等问题。凡是需要对用户身份进行判断的情况都可以使用数字签名。
三个过程:系统的初始化过程、签名产生过程、签名验证过程。
签名者必须注意保护好私有密钥,因为它是公开密钥体系安全的重要基础。
如果密钥丢失,应该立即报告鉴定中心取消认证,鉴定中心必须能够迅速确定用户的身份及其密钥的关系。RSA、ElGamal、Fiat-Shamir、美国的数字签名标准/算法(DSS/DSA)、椭圆曲线等多种
2.数字水印(DigitalWatermarking)是实现版权保护的有效办法,也是信息隐藏技术研究领域的重要分支。
通过在原始数据中嵌入秘密信息——水印(Watermark)来证实该数据段所有权。
水印可以是一段文字、标识、序列号等,通常是不可见或不可察的,与原始数据紧密结合并隐藏其中。
数字水印技术必须具有较强的鲁棒性、安全性、透明性。
数字水印主要应用领域:
版权保护,作品被盗版或出现版权纠纷时,所有者即可从盗版作品或水印版作品中获取水印信号作为依据。
加指纹,将不同用户端ID或序列号作为不同的水印(指纹)嵌入作品的合法备份中,一旦发现未授权的备份,就可以确定它的来源。
标题与注释。
篡改提示,可将原始图像分成多个独立块,再将每个块加入不同的水印,来确定作品的完整性,这类水印必须是脆弱的,并且检测水印信号时,不需要原始数据。
使用控制,防复制。空域算法、变换域算法、压缩域算法、NEC算法、生理模型算法等。
11.1.3密钥分配中心与公钥基础设施
现代密码系统中,算法本身的保密已经不重要了,只要密钥能够保密,即使加密算法公开,甚至加密设备丢失,也不会对加密系统的坚固性和正常使用产生多大影响。
如何高效地分配密钥、安全地管理密钥对保证数据安全来说至关重要。
1、密钥分配中心
密钥自动分配是密钥分配中心(KeyDistributionCenter,KDC)技术。
2、数字证书和公开密钥基础设施
数字证书的内容一般包括:唯一标识证书所有者的名称、唯一标识证书签发者的名称、证书所有者的公开密钥、证书签发者的数字签名、证书的有效期、证书的序列号等。
PKI(PublicKeyInfrastructure,公钥基础设施)的结构模型有三类实体:管理实体、端实体、证书库。
管理实体是PKI的核心,是服务的提供者,端实体是PKI的用户。
CA和RA是两种管理实体,CA能够发布和撤销证书,维护证书的生命周期。RA负责处理用户请求。证书库的存取对象为证书和CRL,其完整性由数字签名来保证,因此不需要额外的安全机制。
11.1.4访问控制
自动、有效地防止对系统资源进行非法访问或者不当使用。
它是建立在身份认证的基础之上的。
1、身份认证技术
识别用户的身份有两种不同形式:身份认证、身份鉴定。
认证的方法归结为3大类:知道什么、拥有什么、是什么。
是什么,是一种基于生物识别技术的认证。
1.用户名和口令认证,三种简单的认证方式:明文传送、单向散列、单向散列函数和随机函数。
2.使用令牌认证,密钥存储于令牌中。
令牌是一个可以加密存储并运行相应加密算法的设备,完成对用户必须拥有某物的验证。
令牌的实现分为:质询响应令牌、时间戳令牌,常用的是时间戳令牌。
系统的安全强度大大增加:私钥采用令牌存储的方式解决了私钥自身的安全问题,安全强度大大增加。
而且令牌有PIN码保护,对令牌的非法访问超过一定次数后,令牌会死锁。
时间戳令牌利用时间代替随机数,需要重点考虑时间同步问题,目前在安全性较高的认证系统中,多是采用这种方案。
3.生物识别与三因素认证
基于生物识别技术的认证,主要根据认证者的图像、指纹、气味、声音等作为认证数据。
2、访问控制技术
根据控制手段和具体目的的不同,通常将访问控制技术划分为几个方面:入网访问控制、网络权限控制、目录级安全控制、属性安全控制、网络服务器安全控制等。
入网访问控制,控制准许用户入网的时间、准许的工作站等。
由于用户口令验证方式容易被攻破,很多网络都开始采用基于数字证书的验证方式。
用户和用户组被赋予一定的权限。
访问机制两种实现方式:“受托者指派”和“继承权限屏蔽”
“受托者指派”控制用户和用户组如何使用网络服务器。
“继承权限屏蔽”相当于一个过滤器,可以限制子目录从父目录那里继承哪些权限。
特殊用户、一般用户、审计用户。
对目录和文件的访问权限一般有8种:系统管理员权限、读、写、创建、删除、修改、查找、访问控制。属性能够控制以下几个方面的权限:写数据、复制文件、删除目录或文件、察看目录和文件、执行文件、隐含文件、共享、系统属性等。
11.1.5安全协议
1、IPSec协议简述
因特网工程任务组(IETF),IPSec在IP层上对数据包进行高强度的安全处理提供数据源验证、无连接数据完整性、数据机密性、抗重播、有限通信流机密性等安全服务。
1.IPSec协议工作原理
通过使用两种信息安全协议来为数据报提供高质量的安全性:认证头(AH)协议和封装安全载荷(ESP)协议,以及像Internet密钥交换(InternetKeyExchange,IKE)协议这样的密钥管理协过程和协议。
IPSec允许系统或网络用户控制安全服务提供的粒度。
由通信双方建立的安全关联(SecurityAssociation,SA)来提供。
3.IPSec协议安全性分析
可以应用于所有跨越网络边界的通信。
如果所有来自外部的通信必须使用IP,且防火墙是Internet与组织的唯一入口,则IPSec是不能被绕过的。
IPSec位于传输层(TCP、UDP)之下,因此对应用程序是透明的,实现时,没有必要在用户或服务器上更改软件。IPSec对最终用户是透明的,没有必要培训用户掌握安全机制。
2、SSL协议
SSL协议(SecureSocketLayer)对计算机之间的整个会话进行加密,位于TCP和应用层之间,可为应用层提供安全业务,主要是Web应用。
基本目标是在通信双方之间建立安全的连接。
SSL协议工作原理
两个重要的概念:SSL连接和SSL会话。
连接是提供恰当类型服务的传输,对于SSL,连接是点到点的关系。
SSL的会话是客户和服务器之间的关联,会话通过握手协议来创建。
会话定义了加密安全参数的一个集合。
会话可以用来避免为每个连接进行昂贵的新安全参数的协商。
3、PGP协议
1.PGP协议的定义
PGP(PrettyGoodPrivacy)针对电子邮件在Internet上通信的安全问题而设计的一种混合加密系统。
公钥密码和分组密码是在同一个系统中,PGP的用户拥有一张公钥表。
PGP应用程序具有很多优点:速度快、效率高、可移植性好。
2.PGP协议的加密过程
用IDEA算法对明文加密,接着用接收者的RSA公钥对这个IDEA密钥进行加密。
PGP没有用RSA算法直接对明文加密,而是对IDEA密钥进行加密。由于IDEA算法速度很快,所以不会因为邮件的数量大而耽误时间,而IDEA的密钥位数较少,所以使用RSA算法在速度上也不会有很大影响。
11.1.6数据备份
1、备份的类型
备份数据常常被人们遗忘,造成的后果往往是毁灭性的。
保证数据完整性以及准确性,一直都面临着极大的考验。
1.完全备份,所需时间最长,但恢复时间最短,操作最方便可靠。
2.差异备份,备份上一次的完全备份后发生变化的所有文件。备份时间较长,占用空间较多,恢复时间较短。
3.增量备份,上一次备份后,所有发生变化的文件。备份时间较短,占用空间较少,恢复时间较长。4.按需备份。有很好的选择性。
2、异地备份
数据异地备份是容灾系统的核心技术,确保一旦本地系统出现故障,远程的容灾中
心能够迅速进行完整的业务托管。
进行异地备份时,要注意以下几个问题:
避免让备份带上病毒。
保证磁片质量,定期对其进行质量检查。
对于光盘,最大的缺点是兼容性不好,最好是用哪台刻录机刻录就用哪台刻录机读取(有时光头歪了也刻歪了,好光驱读不出来)。
对于移动硬盘,要做磁盘检查,保证其性能良好。
3、自动备份软件
具备多个备份的文件无论怎样重命名都只备份一个。对员工正常工作无任何干扰,就好像这个软件不存在一样。
11.1.7计算机病毒免疫
1、计算机病毒定义
通过修改其他程序使之含有该程序本身或它的一个变体,具有感染力,借助使用者的权限感染他们的程序。
每个被感染的程序也像病毒一样可以感染其他程序。
2、计算机病毒免疫的原理
传染模块一般包括传染条件判断和实施传染两部分。
一般情况下,传染完一个对象后,都要给被传染对象加上传染标识,若不存在这种标识,则病毒就对该对象实施传染。
不判断是否存标识,反复传染多次,雪球越滚越大。当某些尚不能被病毒检测软件检查出来的病毒感染了文件,该文件又被免疫外壳包在里面时,查毒软件查不到它。
11.2信息安全管理和评估
11.2.1安全管理技术
安全管理技术就是监督、组织、控制网络通信服务以及信息处理所必须的各种技术手段和措施的总称。
目标是确保计算机网络的持续正常运行,出现异常时能及时响应和排除故障。
各种网络安全产品的作用提现在网络中的不同方面,统一的网络安全管理平台必然要求对网络中部署的安全设备进行协同管理。
安全设备的管理、安全策略管理、安全风险控制、安全审计,几个方面。
安全审计:安全设备、操作系统、应用系统的日志信息收集汇总,进一步分析,得出更深层次的分析结果。
2011年软考系统架构设计师学习笔记第十二章
系统安全架构设计
12.1信息系统安全架构的简单描述
信息安全的特征是为了保证信息的机密性、完整性、可用性、可控性、不可抵赖性。
以风险策略为基础。
12.1.1信息安全的现状及其威胁
计算机和网络的普及,会产生两个方面的效应:
其一,各行各业的业务运转几乎完全依赖于计算机和网络。其二,大多数人对计算机的了解更加全面。
常见的安全威胁有如下几种:
1、信息泄露。
2、破坏信息的完整性。
3、拒绝服务。
4、非法使用。
5、窃听。
6、业务流分析,发现有价值的信息和规律。
7、假冒。
8、旁路控制。
9、授权侵犯。
10、特洛伊木马。
11、陷阱门,设置了“机关”,提供特定的输入数据时,允许违反安全策略。
12、抵赖。
13、重放,处于非法的目的而被重新发送。
14、计算机病毒。
15、人员不慎。
16、媒体废弃。
17、物理侵入。
18、窃取。
19、业务欺骗。可以从安全技术的角度提取出5个方面的内容:认证鉴别、访问控制、内容安全、冗余恢复、审计响应。
12.2系统安全体系架构规划框架及其方法
安全技术体系架构过程的目标是建立可持续改进的安全技术体系架构的能力。
OSI参考模型:物理、数据链路、网络、传输、会话、表示、应用。
根据网络中风险威胁的存在实体划分出5个层次的实体对象:应用、存储、主机、网络、物理。
信息系统安全规划是一个非常细致和非常重要的工作,需要对企业信息化发展的历史情况进行深入和全面的调研。
信息系统安全体系主要是由技术体系、组织结构体系、管理体系三部分共同构成。
技术体系由物理安全技术和系统安全技术两大类组成。
组织体系由机构、岗位、人事三个模块构成。
管理体系由法律管理、制度管理、培训管理三部分组成。人员安全包括安全管理的组织结构、人员安全教育与意识机制、人员招聘及离职管理、第三方人员安全管理等。
12.3网络安全体系架构设计
12.3.1OSI的安全体系架构概述
在OSI7层协议中除会话层外,每一层均能提供相应的安全服务。
最适合配置安全服务的是物理层、网络层、运输层、应用层。
ISO开放系统互联安全体系的5类安全服务:鉴别、访问控制、数据机密性、数据完整性、抗抵赖性。
分层多点安全技术体系架构,也称为深度防御安全技术体系架构,通过以下方式将防御能力分布至整个信息系统中。
1、多点技术防御,从内部或外部多点攻击一个目标,通过对以下多个防御核心区域的防御达到抵御所有方式的攻击的目的。
1.网络和基础设施,确保可用性,确保机密性和完整性。
2.边界,抵御主动的网络攻击。
3.计算环境,抵御内部、近距离的分布攻击。
2、分层技术防御,有效的措施是使用多个防御机制。
支撑性基础设施为网络、边界、计算机环境中信息保障机制运行基础。包括公钥设施、检测和响应基础设施。
1.公钥基础设施提供一种通用的联合处理方式,以便安全地创建、分发、管理公钥证书和传统的对称密钥。
公钥基础设施必须支持受控的互操作性,并与各用户团体所建立的安全策略保持一致。
2.迅速检测并响应入侵行为,便于结合其他相关事件观察某个事件的“汇总”性能。
识别潜在行为模式或者新的发展趋势12.3.2鉴别框架
鉴别(Authentication)防止其他实体占用和独立操作被鉴别实体的身份。
鉴别有两种重要的关系背景:
一是实体由申请者来代表,申请者与验证者之间存在着特定的通信关系(如实体鉴别)。
二是实体为验证者提供数据项来源。
鉴别方式主要基于以下5种:
1、已知的,如一个秘密的口令。
2、拥有的,IC卡、令牌等。
3、不改变的特性,如生物特征。
4、相信可靠的第三方建立的鉴别(递推)。
5、环境(如主机地址等)。
鉴别信息(ArtificialIntelligence,AI)是指申请者要求鉴别到鉴别过程结束所生成、使用、交换的信息。
交换AI、申请AI、验证AI。鉴别服务分为以下阶段:安装阶段、修改鉴别信息阶段、分发阶段、获取阶段、传送阶段、验证阶段、停活阶段、重新激活阶段、取消安装阶段。
12.3.3访问控制框架
访问控制(AccessControl)决定允许使用哪些资源、在什么地方适合阻止未授权访问的过程。
ACI(访问控制信息)用于访问控制目的的任何信息。
ADI(访问控制判决信息)做出判决时可供ADF使用的部分(或全部)ACI。
ADF(访问控制判决功能)做出访问控制判决。
AEF(访问控制实施功能)。涉及访问控制的有发起者、AEF、ADF、目标
12.3.4机密框架
机密性(Confidentiality)服务确保信息仅仅是对被授权者可用。
数据只对那些拥有某种关键信息的人才是可访问的。
被保护的环境被交叠保护的环境。
从一个环境移到另一个环境的数据的连续保护必然涉及到交叠保护环境。
机密性机制
数据的机密性可以依赖于所驻留和传输的媒体。
数据在传输中的机密性能通过禁止访问的机制、隐藏数据语义的机制、分散数据的机制。
物理方法保证媒体的数据只能通过特殊的有限设备才能检测到。
通过路由选择控制。通过机密提供机密性。
12.3.5完整性框架
完整性(Integrity)框架目的是通过组织威胁或探测威胁,保护可能遭到不同方式危害的数据完整性和数据相关属性完整性。
所谓完整性,就是数据不以未经授权方式进行改变或损毁的特征。
几种分类方式:未授权的数据修改、未授权的数据创建、未授权的数据删除、未授权的数据插入、未授权的数据重放。
依据是否包括恢复机制分为具有恢复机制的和不具有恢复机制的。
完整性机制的类型
1、组织对媒体访问的控制,包括物理的、不受干扰的信息;路由控制;访问控制。
2、用以探测对数据或数据项序列的非授权修改的机制。按照保护强度,完整性机制可以分为不作保护;对修改和创建的探测;对修改、创建、删除、重复的探测;对修改和创建的探测并带恢复功能;对修改、创建、删除、重复的探测并带恢复功能。
12.3.6抗抵赖框架
抗抵赖(Non-repudiation)服务包括证据的生成、验证、记录,以及在解决纠纷时随即进行的证据恢复和再次验证。
目的是提供有关特定事件或行为的证据。
当涉及消息内容的抗抵赖服务时,为提供原发证明,必须确认数据原发者身份和数据完整性。
为提供递交证明,必须确认接收者身份和数据完整性。
抗抵赖服务提供在试图抵赖的事件中使用的设备:证据生成、证据记录、验证生成的证据、证据的恢复和重验。
抗抵赖由4个独立的阶段组成:证据生成;证据传输、存储、恢复;证据验证;解决纠纷。
1、证据生成
卷入事件或行为中的实体,称为证据实体。证据实体可由证据实体、或可能与可信第三方的服务一起生成、或者单独由可信第三方生成。
3、证据验证证据在使用者的请求下被证据验证者验证。让证据使用者确信被提供的证据确实是充分的。
12.4数据库系统的安全设计
电子政务中所涉及的数据库密级更高、实时性更强。
实现数据库系统安全的完整性、保密性、可用性。安全策略一般为用户管理、存取控制、数据加密、审计跟踪、攻击检测。
12.4.1数据库安全设计的评估标准
1985年,美国国防部颁布“可信计算机系统评估标准(TrustedComputerSystemEvaluationCriteria,TCSEC)”橘皮书(简称DoD85)。
1991年,美国国家计算机安全中心(TheNationalComputerSeaurityCenter,NCSC)颁布了“可信计算机评估标准关于可信数据库管理系统的解释(TrustedDatabaseInterpretation,TDI)”。
TDI是TCSEC在数据库管理系统方面的扩充和解释,从安全策略、责任、保护、文档4个方面进一步描述了每级的安全标准。按照TCSEC标准,D类产品基本没有安全保护措施,C类产品只提供了安全保护措施,B类以上产品是实行强制存取控制的产品,是真正意义上的安全产品。
12.4.2数据库的完整性设计
数据库的完整性是指数据库中数据的正确性和相容性。
由各种各样的完整性约束来保证,因此可以说数据库完整性设计就是数据库完整性约束的设计。
通过DBMS或应用程序来实现。
1、数据库完整性设计原则
1.根据数据库完整性约束的类型确定其实现的系统层次和方式,并提前考虑对系统性能的影响。
一般情况下,静态约束应尽量包含在数据库模式中,动态约束由应用程序实现。
2.实体完整性约束、参照完整性约束是关系数据库最重要的完整性约束,尽量应用。
3.要慎用触发器,一方面性能开销较大;另一方面,多级触发不好控制,容易发生错误,最好使用Before型语句级触发器。
4.在需求分析阶段就必须制定完整性约束的命名规范。
5.要根据业务规则对数据库完整性进行细致的测试。
6.要专职的数据库设计小组。
7.应采用合适的CASE工具来降低数据库设计各阶段的工作量。
2、数据库完整性的作用
1.能够防止合法用户使用数据库时向数据库中添加不合语义的数据。
2.实现业务规则,易于定义,易于理解,而且可以降低应用程序的复杂性,提高应用程序的运行效率。集中管理。
3.能够同时兼顾数据库的完整性和系统效能。
4.有助于尽早发现应用软件的错误。
5.数据库完整性约束6类:列级静态约束、元组级静态约束、关系级静态约束、列级动态约束、元组级动态约束、关系级动态约束。
动态约束通常由应用软件来实现。
3、数据库完整性设计示例
首先需要在需求分析阶段确定要通过数据库完整性约束实现的业务规则。
然后依据整个系统的体系结构和性能要求,遵照数据库设计方法和应用软件设计方法,合理选择每个业务规则的实现方式。
最后认真测试,排除隐含的约束冲突和性能问题。基于DBMS的数据库完整性设计大体分为以下几个阶段:
1.需求分析阶段。
2.概念结构设计阶段。
3.逻辑结构设计阶段,就是将概念结构转换为某个DBMS所支持的数据模型,并对其进行优化,包括对关系型的规范化。每种业务规则都可能有好几种实现方式,应该选择对数据库性能影响小的一种,有时需通过实际测试来决定。
12.5案例:电子商务系统的安全性设计
1、原理介绍
1.验证(Authentication):是否可以获得授权。
2.授权(Authorization):可以使用哪些服务。
3.审计(Accounting):记录用户使用网络资源的情况,用户IP地址、MAC地址掩码等。
2、软件架构设计
RADIUS软件架构分为三个层面:协议逻辑层、业务逻辑层、数据逻辑层。
协议逻辑层主要实现RFC框架中的内容,处理网络通信协议的建立、通信、停止方面的工作。
相当于一个转发引擎,起到分发处理的内容分发到不同的协议处理过程中。
业务逻辑进程分为:认证、计费、授权,三种类型。
数据库代理池统一连接数据库,以减少对数据库系统的压力。同时减小了系统对数据库的依赖性,增强了系统适应数据库系统的能力。
RADIUS软件分层架构的实现:
一是对软件风险进行了深入的分析,
二是可以构建一个或多个重用的构件单元,也可以继承原来的成果。
RADIUS的功能:
一是实际处理大量用户并发的能力,
二是软件架构的可扩展性。
负载均衡是提高RADIUS软件性能的有效方法,主要完成以下任务:
1.解决网络拥塞问题,就近提供服务。
2.为用户提供更好的访问质量。
3.提高服务器响应速度。
4.提高服务器及其他资源的利用效率。
5.避免了网络关键部位出现单点失效。
2011年软考系统架构设计师学习笔记第十三章
系统的可靠性
13.1软件可靠性
目前,硬件可靠性测试技术和评估手段日趋成熟,已经得到了业界的认可。
软件可靠性模型的研究多集中在开发阶段、测试阶段、评估阶段的可靠性模型。
13.1.1软件可靠性的定义
可靠性(Reliability)是指产品在规定的条件下和规定的时间内完成规定功能的能力。
按照产品可靠性的形成,分为固有可靠性、使用可靠性。
固有可靠性是通过设计、制造赋予产品的可靠性。使用可靠性既受设计、制造的影响,又受使用条件的影响。
软件与硬件从可靠性角度来看,主要有4个不同点:
1、复杂性,软件内部的逻辑高度复杂,硬件则相对简单。
2、物理退化,一个正确的软件任何时刻均可靠,一个正确的硬件、元器件、系统则可能在某个时刻失效。
3、唯一性,软件是唯一的,软件复制不改变软件本身,硬件不可能完全相同,概率方法在硬件可靠性领域取得巨大成功。
4、版本更新快,软件版本更新较快,也给软件可靠性评估带来较大的难度。
1983年,美国IEEE对“软件可靠性”做出了更明确的定义。
1989年,我国国家标准GB/T-11457也采用了这个定义。
定义:在规定的条件下,在规定的时间内,软件不引起系统失效的概率。
依然沿用了“产品可靠性”的定义。
1、规定的时间
由于软件运行的环境与程序路径选取的随机性,软件的失效为随机事件,所以运行时间属于随机变量。
2、规定的条件
不同的环境条件下的可靠性是不同的,计算机的配置情况、对输入的要求。
有了明确规定的环境条件,还可以有效地判断软件失效的责任在用户方还是开发放。
3、所要求的功能
软件可靠性还与规定的任务和功能有关。
要准确度量软件系统的可靠性,必须先明确它的任务和功能。
4、“软件可靠性”定义具有如下特点:
1.用内在的“缺陷”和外在的“失效”关系来描述可靠性。
2.定义使人们对软件可靠性进行量化评估成为可能。3.用概率的方法描述可靠性是比较科学的。
13.1.2软件可靠性的定量描述
软件的可靠性可以基于使用条件、规定时间、系统输入、系统使用、软件缺陷等变量构建的数学表达式。
1、规定时间:自然时间、运行时间、执行时间。
使用执行时间来度量软件的可靠性最为准确。
2、失效率:把软件从运行开始,到某一时刻t为止,出现失效的概率用F(t)表示。
F(0)=0,即软件运行初始时刻失效概率为0。
F(t)在时间域(0,+无穷大)上是单调递增的。
F(+无穷大)=1,即失效概率在运行时间不断增长时趋向于1,这也意味着任何软件都存在缺陷。
3、可靠度:在规定的条件下,规定的时间内不发生失效的概率。
4、失效强度(FailureIntensity)单位时间软件系统出现失效的概率。
5、失效率(FailureRate)又称风险函数(HazardFunction),也可以称为条件失效强度。
就是当软件在0~t时刻内没有发生失效的条件下,t时刻软件系统的失效强度。
公式略。
6、可靠度与失效率之间的换算。
7、平均失效时间(MeanTimetoFailure,MTTF)就是软件运行后,到下一次出现失效的平均时间。更直观地表明一个软件的可靠度。
需要对软件可靠度这个反映软件可靠性的肚量指标作下列补充说明:
1.需指明它与其他软件的界限。
2.软件失效必须明确定义。
3.必须假设硬件无故障(失效)和软件有关变量输入正确。
5.必须指明时间基准:自然时间(日历时间)、运行时间、执行时间(CPU时间)、其他时间基准。
6.通常以概率度量,也可以模糊数学中的可能性加以度量。
7.在时间域上进行,是一种动态度量,也可以是在数据域上,表示成功执行一个回合
的概率。
软件回合是软件运行最小的、不可分的执行单位。
8.有时将软件运行环境简单地理解为软件运行剖面(OperationalProfile)。运行剖面定义了关于软件可靠性描述中的“规定条件”,测试环境、测试数据等一系列问题。
13.1.3可靠性目标
使用失效强度表示软件缺陷对软件运行的影响程度。
不仅取决于软件失效发生的概率,还和软件失效的严重程度有很大关系。引出另外一个概念——失效严重程度类(FailureSeverityClass)。
失效严重程度类就是对用户具有相同程度影响的失效集合。
对失效严重程度的分级可以按照不同的标准进行,对成本影响、对系统能力的影响等。
对成本的影响可能包括失效引起的额外运行成本、修复和恢复成本、现有潜在的业务机会的损失等。
对系统能力的影响常常表现为关键数据的损失、系统异常退出、系统崩溃、导致用户操作无效等。
可靠性目标是指客户对软件性能满意程度的期望。通常用可靠度、故障强度、平均失效时间(MTTF)等指标来描述。建立定量的可靠性指标需要对可靠性、交付时间、成本进行平衡。
13.1.4可靠性测试的意义
1、软件失效可能造成灾难性的后果。
2、软件的失效在整个计算机系统失效中的比例较高。
80%和软件有关。
结构太复杂了,一个较简单的程序,其所有路径数量可能是一个天文数字。
3、相比硬件可靠性技术,软件可靠性技术很不成熟。
4、软件可靠性问题是造成费用增长的主要原因之一。
5、系统对于软件的依赖性越来越强。
13.1.5广义的可靠性测试与侠义的可靠性测试
广义的软件可靠性测试是指为了最终评价软件系统的可靠性而运用建模、统计、试验、分析、和评价等一系列手段对软件系统实施的一种测试。
侠义的软件可靠性测试是指为了获取可靠性数据,按预先确定的测试用例,在软件的预期使用环境中,对软件实施的一种测试。
也叫“软件可靠性试验(SoftwareReliabilityTest)”,它是面向缺陷的测试,以用户将要使用的方式来测试软件,所获得的测试数据与软件的实际运行数据比较接近。
可靠性测试是对软件产品的可靠性进行调查、分析、评价的一种手段。
对检测出来的失效的分布、原因、后果进行分析,并给出纠正建议。
总的来说,可靠性测试的目的可归纳为以下三个方面:
1、发现软件系统在需求、设计、编码、测试、实施等方面的各种缺陷。
2、为软件的使用、维护提供可靠性数据。
3、确认软件是否达到可靠性的定量要求。
13.2软件可靠性建模
13.2.1影响软件可靠性的因素
软件可靠性模型(SoftwareReliabilityModel)是指为预计或估算软件的可靠性所建立的可靠性框图和数学模型。
模型将复杂系统的可靠性逐级分解为简单系统的可靠性,以便定量预计、分配、估算、评价复杂系统的可靠性。
影响软件可靠性的主要因素:缺陷的引入、发现、清除。
缺陷的引入主要取决于软件产品的特征和软件的开发过程特性。
缺陷的发现依靠运行剖面。
缺陷的清除依赖于失效的发现、修复活动、可靠性方面的投入。
影响软件可靠性的主要因素如下:
1、运行剖面(环境)。
2、软件规模。
3、软件内部结构。
4、软件的开发方法和开发环境。
5、软件的可靠性投入。人力、资金、资源、时间等。早期重视软件可靠性并采取措施开发出来的软件,可靠性有明显的提高
13.2.2软件可靠性建模方法
可靠性模型通常由以下几部分组成:
1、模型假设。模型是实际情况的简化或规范化,总要包含若干假设。
2、性能度量。软件可靠性模型的输出量就是性能度量。
3、参数估计方法。
4、数据要求。
绝大多数模型包含三个共同假设:
1、代表性假设。选取代表软件实际的运行剖面。
2、独立性假设。假设认为软件失效是独立发生于不同时刻。
3、相同性假设。认为所有软件失效的后果(等级)相同,即建模过程只考虑软件失效的具体发生时刻,不区分软件的失效严重等级。
如果在进行预测时发现引入了新的错误,或修复行为使新的故障不断发生,就应该停止预测。否则,这样的变化会因为增加问题的复杂程度而使模型的适用性降低。
好的软件可靠性模型应该具有如下重要特性:
1、基于可靠性的假设。
2、简单。
3、计算一些有用的量。
4、给出未来失效行为的好的映射。
5、可广泛使用。
13.2.3软件的可靠性模型分类
可靠性模型大致可分为如下10类:
1、种子方法模型。
利用捕获一再捕获抽样技术估计程序中的错误数,在程序中预先有意“播种”一些设定错误的“种子”,然后根据测试出的原始错误和发现的诱导错误比例,估计程序中残留的错误数。
优点是简单易行,缺点是诱导错误的“种子”与实际的原始错误之间的类比性估量困难。
2、失效率类模型。
3、曲线拟合类模型。
用回归分析的方法研究软件复杂性、缺陷数、失效率、失效间隔时间,包括参数方法
91
91
和非参数方法两种。
4、可靠性增长模型。
5、程序结构分析模型。
通过对每一个节点可靠性、节点间转换的可靠性和网络在节点间的转换概率,得出该持续程序的整体可靠性。
6、输入域分类模型。
7、执行路径分析方法模型。
8、非其次泊松过程模型。
NHPP,以软件测试过程中单位时间的失效次数为独立泊松随机变量,来预测今后软件的某使用时间点的积累失效次数。
9、马儿可夫过程模型。
10、贝叶斯模型。
利用失效率的试验前分布和当前的测试失效信息,来评估软件的可靠性。
当软件可靠性工程师对软件的开发过程有充分的了解,软件的继承性比较好时具有良效果的可靠性分析模型。
时间域。
失效数类:失效数是有限的还是无限的。
失效数分布。
有限类:用时间表示的失效强度的函数形式。无限类:用经验期望失效数表示的失效强度的函数形式。
13.2.4软件可靠性模型举例
1、模型假设
JM模型的基本假设如下:
1.初始错误个数为一个未知的常数。
2.发现错误立即被完全排除,并且不引入新的错误,排除时间忽略不记,因此每次排错后就要减1。
3.失效率剩余的错误个数成正比。
2、函数表达式。
软件可靠性模型并不成熟,定量分析方法和数学模型要在实践中不断加以验证和修正。不同类型的软件,应用方式也有很大区别。
13.2.5软件可靠性测试概述
可靠性测试由可靠性目标的确定、运行剖面的开发、测试用例的设计、测试实施、测试结果的分析等主要活动组成。
软件可靠性测试还必须考虑对软件开发进度和成本的影响,最好是在受控的自动测试环境下,由专业测试机构完成。13.2.6定义软件运行剖面
弧用来连接状态并表示由各种激励导致的转换,将转换概率分配给每个弧。
每类用户都可能以不同的方式使用系统。
两种类型分层形式:用户级分层、用法级分层。
用法级分层依赖于在测试状态下系统能做什么。
用户级分层考虑各种类型的用户,以及他们如何使用系统。
这些概率估计主要是基于如下几个方面:
1、从现有系统收集到的数据。
2、与用户的交谈或对用户进行观察获得的信息。
3、原型使用与测试分析的结果。4、相关领域专家的意见。
13.2.7可靠性测试的实施
有必要检查软件需求与文档是否一致,检查软件开发过程中形成的文档的准确性、完整性、一致性。
可靠性测试依赖于软件的可测试性。
为了获得更多的可靠数据,应该使用多态计算机同时运行软件,以增加累计时间。
用时间定义的软件可靠性数据分为4类:
1、失效时间数据。
2、失效间隔时间数据。
3、分组时间内的失效数据。
4、分组时间的累计失效数。这4类数据可以相互转化。
测试过程中必须真实地进行记录,每个测试记录必须包含如下信息:
1、测试时间。
2、含有测试用例的测试说明或标识。
3、所有与测试有关的测试结果,包括失效数据。
4、测试人员。
测试活动结束后要编写《软件可靠性测试报告》具备如下内容:
1、软件产品标识。
2、测试环境配置(硬件和软件)。
3、测试依据。
4、测试结果。
5、测试问题。6、测试时间。
13.3软件可靠性评价
13.3.1软件可靠性评价概述估计软件当前的可靠性,以确认是否可以终止测试并发布软件,还可以预计软件要达到相应的可靠性水平所需要的时间和工作量,确认软件的执行与需求的一致性。
13.3.2怎样选择可靠性模型
可以从以下几个方面进行比较和选择:
1、模型假设的适用性。
2、预测的能力与质量。
3、模型输出值能否满足可靠性评价需求。
最重要的几个需要精确估计的可靠性定量指标包括如下内容:
1.当前的可靠度。
2.平均失效时间。
3.故障密度。
4.期望达到规定可靠性目标的日期。
5.达到规定的可靠性目标的成本要求。
4、模型使用的简便性
简便性一般包含如下三层含义:
1.模型需要的数据易于收集,成本不能超过可靠性计划的预算。
2.模型应该简单易懂,测试人员不会花费太多的时间去研究专业的数学理论。3.模型应该便于使用。
13.3.3可靠性数据的收集
面向缺陷的可靠性测试产生的测试数据经过分析后,可以得到非常有价值的可靠性数据,这部分数据取决于定义的运行剖面和选取的测试用例集。
可靠性数据的收集工作是贯穿整个软件生命周期的。
可行的一些办法如下:
1、及早确定所采用的可靠性模型。
2、指定可实施性较强的可靠性数据收集计划,指定专人负责,按照统一的规范收集记录可靠性数据。
3、重视软件测试特别是可靠性测试产生的测试数据的整理和分析。4、充分利用数据库来完成可靠性数据的存储和统计分析。
13.3.4软件可靠性的评估和预测
1、判断是否达到了可靠性目标。
2、如未能达到,要再投入多少时间、多少人力、多少资金。
3、在软件系统投入实际运行若干时间后,能否达到交付或部分交付用户使用的可靠性水平。
没有失效就无法估计可靠性。
要在模型之外运行一些统计技术和手段对可靠性数据进行分析,作为可靠性模型的补充、完善、修正。
辅助方法如下:
1、失效数据的图形分析方法。
1.积累失效个数图形。
2.单位时间段内的失效数的图形。
3.失效间隔时间图形。
2、试探性数据分析技术(ExploratoryDataAnalysis,EDA)对可靠性分析有用的信息如下:
1.循环相关。
2.短期内失效数的急剧上升。
3.失效数集中的时间段。13.4软件的可靠性设计与管理
13.4.1软件可靠性设计
实践证明,保障软件可靠性,最有效、最经济、最重要的手段是在软件设计阶段采取措施进行可靠性控制。
1、软件可靠性设计是软件设计的一部分,必须在软件的总体设计框架中使用,并且不能与其他设计原则相冲突。
2、软件可靠性设计在满足提高软件质量要求的前提下,以提高和保障软件可靠性为最终目标。
3、软件可靠性设计应确定软件的可靠性目标,不能无限扩大化,排在功能度、用户需求、开发费用之后考虑。
容错设计、检错设计、降低复杂度设计等技术。
1、容错设计技术
1.恢复块设计,一旦文本出现故障,用备份文本加以替换。
2.N版本程序设计,对于相同初始条件和相同输入的操作结果,实行多数表决,防止其中某一软件模块/版本的故障提供错误的服务。
必须注意以下两方面:
使软件的需求说明具有完整性和精确性。
设计全过程的不相关性。
3.冗余设计
在相同的运行环境中,一套软件出故障的地方,另外一套也一定会出现故障。
在一套完整的软件系统之外,设计一种不同路径、不同算法或不同实现方法的模块或系统作为备份。
费用可能接近单个版本软件开发费用的两倍,还有可能导致软件运行时所花费的存储空间、内存消耗、运行时间有所增加,需要在可靠性要求和额外付出代价之间做出折中。
2、检错技术
检错技术实现的代价一般低于容错技术和冗余技术,但它有一个明显的缺点,就是不能自动解决故障。
着重考虑几个要素:检测对象、检测延时、实现方式、处理方式。
3、降低复杂度设计
模块复杂性主要包含模块内部数据流向和程序长度两个方面,结构复杂性用不同模块之间的关联程度表示。
软件复杂性是产生软件缺陷的重要根源。
在设计师就应该考虑降低软件的复杂性,是提高软件可靠性的有效方法。在保证实现软件功能的基础上,简化软件结构,缩短程序代码长度,优化软件数据流向,降低软件复杂度,从而提高软件可靠性。
13.4.2软件可靠性管理
为了进一步提高软件可靠性,又提出软件可靠性管理的概念,把软件可靠性活动贯穿于软件开发的全过程。
各个阶段的可靠性活动的目标、计划、进度、任务、修正措施等。
由于软件之间的差异较大,下面的每项活动并不是每一个软件系统的可靠性管理的必须内容,也不是软件可靠性管理的全部内容
2011年软考系统架构设计师学习笔记第十四章
基于ODP的架构师实践
14.1基于ODP的架构开发过程
系统架构反映了功能在系统系统构件中的分布、基础设施相关技术、架构设计模式等,它包含了架构的原则和方法、构件关系与约束,并能支持迭加或增量开发。
以软件架构为中心的开发过程是以质量和风险驱动的,最终提供一个稳定、低风险的系统架构,并满足客户的需求(包含潜在需求)。
开放分布进程的参考模型(RM-ODP)是一个ISO标准,定义了分布系统的重要性质:
开放性、整体性、灵活性、可塑性、联合性、可操作管理性、优质服务、安全性、透明性。
RM-ODP定义的5个观点:
1、企业视点:商业需求和策略、系统的范围和目的。可能会影响系统中的与企业相关的信息,如组织结构等。
2、信息视点。
3、计算视点。
4、工程视点。
5、技术视点。
每一个观点有具体的建模目标和系统相关者。分层子系统视图提供了一个所有子系统高度抽象的视图。
14.2系统构想
14.2.1系统构想的定义
系统构想是开发人员与用户之间共同的协议。
按照该协议,开发人员需要在特定的时间内完成系统用户的需求,系统构想必须简短而切中要点。高度概括了业务架构的核心内容。
14.2.2架构师的作用
系统构想有助于各方明了系统的目标和范围。
确保系统开发的计划、设计等阶段能依次有序地展开。
系统构想阶段,架构师合理的介入,有以下好处:
1、有利于使系统架构师本身对系统的看法更加全面、准确。
2、统一系统开发人员对系统的看法。
3、正确确定需求的优先次序。4、最大程度上提高客户对设计等过程的参与程度,更好地与客户沟通。
14.2.3系统构想面临的挑战
架构师对其控制能力之外的因素通常无能为力,可以通过有效地评估,以及高级经理和架构师之间保持紧密的联系克服这些困难。
还必须面对以下几种情况:
1、很多架构师把架构看成是他们独自的创造,只要他们认为合适的就进行修改。2、有些人不是拥有产品线构想的高级经理,却总是由这些人决定雇佣谁来做架构师。
14.3需求分析
14.3.1架构师的工作
需求一般定义系统的外部行为和外观以及用户信息,而不用设计系统的内部结构。
对需求分析通常考察以下6个方面的内容:
1、系统范围对象关系图。
2、用户接口原型,用户操作的一个雏形。
3、需求的适用性,该用什么技术解决,性能怎么样,是否与其他需求相重合或矛盾,需求分析应注意需求本身的实用或适用,而不必考虑其实现。
4、确定需求的优先级。
5、为需求建立功能结构模型,组件图,实体数据对象图。
6、使用质量功能分配(QualityFunctionDeploymen,QFD)发现隐藏质量需求,建立相关质量场景,先期预测需求风险。
有效地捕捉行为需求的方法是分析用例(UseCase)用例包含图和文字描述,符号简单、抽象,保证表述需求时简单性和清晰度。
14.3.2需求分析的任务
1、需求分析的目的
完整、准确地描述用户对系统的需求,跟踪用户需求的变化,准确地反映到系统架构和
设计中,设计和用户的需求保持一致。
具有决策性、方向性、策略性的作用。
2、需求分析的特点
追求系统需求的完整性、一致性、验证性。
保持和用户要求同步,
保持需求分析各侧面之间的一致,保持需求和系统设计间的同步。
14.3.3需求文档与架构
每个用例都有一个相关需求的文字描述,定义用例应该和领域专家一起进行,如果没有领域专家的长期参与,只能是一种“伪分析”。
用例为定义架构提供了一个系统的领域行为模型。
界面的外观、功能、导航同用例紧密相连,有效定义屏幕的方法叫低保真度原型(Low-fidelityPrototyping),领域专家也始终参与到屏幕定义中去。需求分析的项目词汇表,也将在架构规划中被扩展。
14.4系统架构设计
系统架构沟通了需求和软件之间巨大的语义上的鸿沟。
系统架构的第一个任务就是定义这两个极端之间的映射。
开放分布式处理(OpenDistributedProcessing,ODP)包括企业、逻辑信息、计算接口、分布式工程、技术选择。
对每个观点,确认架构需求的一致性是非常重要的。
14.4.1企业业务架构
企业业务架构从IT角度,对企业的业务结构、企业机构、业务的关系、内部的关系、与外部机构的关系进行整理定义。
包含如下内容:
1、企业的业务和战略目标,近期、中期、长远目标。
2、企业的组织结构。
3、业务的分类。
4、各类业务之间的关系。
5、组织机构与业务的关系。
6、企业与外部机构的关系。
这些业务对象模型标识出系统的关键性约束,包括系统目标和重要的系统策略。
策略包含如下三类明确的表达方式:
责任:业务对象必须做什么。
许可:业务对象可以做什么。
禁止:业务对象不可以做什么。
对业务问题进行分析时,要考虑企业业务的发展,如新的服务或产品推出、考虑组织机构的改变等。
所有这些可能的变化(易变场景)都应该提现在企业业务架构中。
通过对企业业务架构的定义,很清楚地知道由于企业业务特点、业务的流程特点、企业的组织机构等原因对IT系统所带来的自然分块和各个分块之间的边界关系。
企业业务架构的维护是一个长期而反复的工作。
测试结果报告系统(TestResultsReportingSystem,TRRS)。对象约束语言(ObjectConstraintLanguage,OCL)来定义企业活动者的这些策略(如许可、禁止、义务等)。
14.4.2逻辑信息架构
逻辑信息架构(信息视点)标识出系统必须知道什么。
强调定义系统状态的属性。
开放分布式处理是一种面向对象的方法,模型包含了关键信息的处理,如传统的对象概念。
软件架构对象并不是编程的对象,它表示对系统的约束和依赖,这些约束能够消除把需求翻译成软件过程中的许多猜测性工作。架构师应该把他们的建模集中于有高风险、高复杂性、模糊性的关键方面。
14.4.3计算接口架构
计算接口对系统架构非常有帮助,但是它常常被架构师所忽略。
消除多个开发者和小组的主要设计争端,这些接口的架构控制对于一个支持变化和控制复杂性的稳定的系统结构来说,是非常重要的。接口定义语言(IDL),完全独立于编程语言和操作系统。
14.4.4分布式工程架构
分布式工程架构定义了底层结构的需求,独立于所选择的技术,解决了最复杂的系统策略,包括物理位置、系统规模可变性、通信服务质量。
ODP的一个最大好处是关注点分离。
14.4.5技术选择架构
大多数架构是独立的。基于对候选者的初始选择,根据产品价格、培训要求、维护风险之类的项目因素而反复进行。
14.5实现模型
最终用户和架构师应在一起审查并贯穿于用例,始终来证实需求的有效。对产品设计的可行性做出准确地评估、论证。
14.6架构原型
架构原型是很好的需求验证工具,作为改进设计的手段,确保与工程约束相一致。
下面是一些架构师可以在架构原型中寻求解答的具体问题:
1、主要组件是否得到了良好的定义?是否恰当?
2、主要组件间的协作是否得到了良好的定义?
3、耦合是否得意最小化?
4、我们能否确定重用的潜在来源?
5、接口定义和各项约束是否可以接受?
6、每个模块是否能访问到其所需要的数据?
经过2次或3次迭代之后,架构变得稳定。主要的抽象对象都已找到,子系统和过程都已经完成,所有的接口都已明确定义。
利用架构原型,几个好处:
1、落实之前,让团队成员能自由发表他们自己的看法。
2、统一团队之间的思想看法,提高系统开发的成功率。3、对系统内部的结构分析与设计也有帮助。
14.7项目规划
项目规划是通过批准的正式文档,以它为基准跟踪和控制项目,行动方案和资源分配,引导项目实施。
主要作用是将指定规划的假设和决定批准的范围、成本、进度的基线等用正式的文档记录保存。
估算是项目规划的核心。
随着项目的进展,估算会不断校正并逐渐地接近实际。
项目管理者通过计划与规划的差异,不断优化和更新计划策略,使项目按规划的要求得以实现,计划的变更是可管理和可受控的。
规划包括:
1、项目的目的、范围、目标、对象。
2、软件生存周期的选择。
3、精选的规程、方法、标准。
4、待开发的软件工作产品。
5、规模估计、软件项目的工作量和成本估计。
6、关键计算机资源的估计;项目的里程碑。
7、风险的识别和评估。
8、工程实施和支持工具计划。软件项目计划的目标有:软件估计被文档化,活动和约定形成文档,受影响的组和个人认同与软件项目规划的约定。
14.8并行开发
14.8.1软件并行开发的内容及意义
提高软件生产率,改善软件质量,有效地组织可以重复的资源。
并行开发研究的内容主要如下:
1、软件过程及其模型。
2、并行分成划分。
3、并行控制。
4、支持环境。5、交互机制与集成技术。
14.8.2并行开发的过程
把软件系统的开发过程划分为若干个可以并行的成分,这个成分称之为子开发过程。
子开发过程=开发小组+软件对象+对软件对象的开发活动。
并行开发活动,称为并行开发系统,实体是个开发小组,实体属性是被开发的软件对象,行为是开发软件对象的活动。
行为模块的划分是并行开发中的核心问题,模块独立性是衡量软件设计质量的关键。
系统划分方法:
1、基于Petri网系统模型的动态划分方法。
2、基于脚本的系统划分方法。
软件过程并行控制是一个非常重要的问题。
就是要用正确的方式调度并行操作,避免造成不一致性,使一个操作的执行不受其他系统的干扰。
保证一致性、相容性、正确性、可靠性,手段有加锁、时间戳、管程、Petri网、PV操作等。继承和测试被分为两个阶段,如果不考虑硬件或软件的集成,两个阶段并没有明显的界限,所以,软件集成的主要问题是集成测试技术。
14.9系统转换系统转换是指运用某一种方式由新的系统代替旧的系统的过程,也就是系统设备、数据、人员等方面的转换。
14.9.1系统转换的准备
转换前,必须认真做好准备。
还需测试试运行这项工作。
注意如下两个问题:
1、系统试运行工作的代表性。2、系统试运行中错误的修正。
14.9.2系统转换的方式
直接转换、平行转换、分段转换、分批转换。
14.9.3系统转换的注意事项
1、大量的基础数据,录入工作量很大,应及早准备,尽快完成。
2、应提前做好人员的培训工作。3、出现一些局部性的问题,应有足够的准备,并做好记录。如果出现致命问题,要重新设计。
14.10操作与维护
14.10.1操作与维护的内容
数据管理与维护。
设备管理与维护。软件的管理与维护工作。
14.10.2系统维护与架构
系统架构的好坏,可维护性是一个重要方面,维护人员应参与架构的审评。
可维护性可以定性地定义为:维护人员理解、改正、改动、改进的难易程度。
可维护性有如下几个评价指标:
可理解性。
可测试性。
可修改性。
系统维护工作可以分为以下4种类型:
更正性维护。
适应性维护。
完善性维护。
预防性维护。
维护人员必须先理解要维护的系统,然后建立一个维护方案。
由于某处修改很可能会影响其他模块程序,所以考虑的重要问题是修改的影响范围和波及面的大小。必须强调的是,维护是对整个系统而言的,必须同时修改涉及的所有文档。
14.11系统移植
14.11.1系统移植的方式
不修改已有的软件。
修改软件。重新编软件。
14.11.2系统移植的工作阶段划分
计划阶段。
准备阶段,准备转换所需的材料。
转换阶段。
测试阶段。
验证阶段。使系统移植工作标准化,工具实现自动化。
14.11.3系统移植工具
系列化、标准化、文档化,使任何人都能以相同的顺序开展工作,提高效率。