在保证实现软件功能的基础上,简化软件结构,缩短程序代码长度,优化软件数据流向,降低软件复杂度,从而提高软件可靠性。
第十一、十二、十三、十四章
第十一章 信息安全技术
11.1 信息安全关键技术
11.1.1 加密和解密
有意的计算机犯罪和无意的数据破坏
被动攻击:非法地从传输信道上截取信息,或从存储载体上偷窃、复制信息。
主动攻击:对传输或存储的数据进行恶意的删除、篡改 等。
密码技术是防止数据攻击的一种有效而经济的方法。
信源、信宿、明文、密文。
传输消息的通道称为信道,参数称为密钥,解密算法是加密算法的逆运算。
加密密钥与解密密钥相同,或者可以简单相互推导的密码体质称为对称密码体制。
不能(在有效时间内)相互推导的,称为非对称密码体制。
1、对称密钥密码体制及典型算法
对称算法(Symmetric Algorithm),有时又称为 传统密码算法,也称单密钥算法。
安全通信之前,商定一个密钥,安全性依赖于密钥,密钥的保密性对通信至关重要。
优点:算法实现的 效率高、速度快。
缺点:密钥的管理过于复杂。
1. DES 算法简介
DES(Data Encryption Standard,数据加密标准)是IBM公司研制,美国国家标准局 1977年公布,作为非机要部门使用的数据加密标准。
DES 是一个分组加密算法,以64位为分组对数据加密。密钥长度56位(因为每个第8位都用作奇偶校验)。
2. IDEA 算法简介
国际数据加密算法(International Data Encryption Algorithm,IDEA)前身是推荐加密标准(Proposed Encryption Standard,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(Message Digest 5)已成为国际标准,产生128位(16字节)长度的散列值(或称 消息摘要)。
通过以下4个步骤:
1. 附加填充位,填充后数据长度 MOD 512 后 余 448。如果数据长度正好 MOD 512 余 448,增加 512 个填充位,填充个数也就是1~512。
填充位第一个为 1,其余全部是 0。
2. 补足长度。
3. 初始化MD缓存器。
4个32位寄存器,A、B、C、D,初始化为:
A: 01 23 45 67
B: 89 AB CD EF
C: FE DC BA 98
D: 76 54 32 10
4. 处理数据段。
2、数字签名与数字水印
1. 数字签名可以解决 否认、伪造、篡改、冒充 等问题。
凡是需要对用户身份进行判断的情况 都可以使用数字签名。
三个过程:系统的初始化过程、签名产生过程、签名验证过程。
签名者必须注意保护好私有密钥,因为它是公开密钥体系安全的重要基础。
如果密钥丢失,应该立即报告鉴定中心取消认证,鉴定中心必须能够迅速确定用户的身份及其密钥的关系。
RSA、ElGamal、Fiat-Shamir、美国的数字签名标准/算法(DSS/DSA)、椭圆曲线 等多种
2. 数字水印(Digital Watermarking)是实现版权保护的有效办法,也是信息隐藏技术研究领域的重要分支。
通过在原始数据中嵌入秘密信息——水印(Watermark)来证实该数据段所有权。
水印可以是一段 文字、标识、序列号 等,通常是不可见或不可察的,与原始数据紧密结合并隐藏其中。
数字水印技术必须具有较强的 鲁棒性、安全性、透明性。
数字水印主要应用领域:
版权保护,作品被盗版或出现版权纠纷时,所有者即可从盗版作品或水印版作品中 获取水印信号作为依据。
加指纹,将不同用户端ID或序列号 作为不同的水印(指纹)嵌入作品的合法备份中,一旦发现未授权的备份,就可以确定它的来源。
标题与注释。
篡改提示,可将原始图像分成多个独立块,再将每个块加入不同的水印,来确定作品的完整性,这类水印必须是脆弱的,并且检测水印信号时,不需要原始数据。
使用控制,防复制。
空域算法、变换域算法、压缩域算法、NEC算法、生理模型算法 等。
11.1.3 密钥分配中心与公钥基础设施
现代密码系统中,算法本身的保密已经不重要了,只要密钥能够保密,即使加密算法公开,甚至加密设备丢失,也不会对加密系统的坚固性和正常使用产生多大影响。
如何高效地分配密钥、安全地管理密钥 对保证数据安全来说至关重要。
1、密钥分配中心
密钥自动分配 是 密钥分配中心(Key Distribution Center,KDC)技术。
2、数字证书和公开密钥基础设施
数字证书的内容一般包括:唯一标识证书所有者的名称、唯一标识证书签发者的名称、证书所有者的公开密钥、证书签发者的数字签名、证书的有效期、证书的序列号等。
PKI(Public Key Infrastructure,公钥基础设施)的结构模型有三类实体:管理实体、端实体、证书库。
管理实体是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 密钥交换(Internet Key Exchange,IKE)协议这样的密钥管理过程和协议。
IPSec 允许系统或网络用户 控制安全服务提供的粒度。
由通信双方建立的安全关联(Security Association,SA)来提供。
3. IPSec 协议 安全性分析
可以应用于所有跨越网络边界的通信。
如果所有来自外部的通信必须使用IP,且防火墙是 Internet 与 组织的唯一入口,则 IPSec 是不能被绕过的。
IPSec 位于传输层(TCP、UDP)之下,因此对应用程序是透明的,实现时,没有必要在用户或服务器上更改软件。
IPSec 对最终用户是透明的,没有必要 培训用户掌握安全机制。
2、SSL 协议
SSL 协议(Secure Socket Layer)对计算机之间的 整个会话进行加密,位于 TCP 和 应用层 之间,可为应用层 提供 安全业务,主要是 Web应用。
基本目标是 在通信双方之间 建立安全的连接。
SSL 协议工作原理
两个重要的概念:SSL 连接和SSL 会话。
连接 是 提供恰当类型服务的传输,对于 SSL ,连接是点到点的关系。
SSL 的会话是 客户和服务器之间的关联,会话通过握手协议来创建。
会话定义了 加密安全 参数的一个集合。
会话可以用来避免为每个连接进行 昂贵的新安全参数的协商。
3、PGP 协议
1. PGP 协议的定义
PGP(Pretty Good Privacy)针对 电子邮件 在 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 安全管理技术
安全管理技术就是 监督、组织、控制网络通信服务以及信息处理所必须的 各种技术手段和措施的总称。
目标是确保计算机网络的持续正常运行,出现异常时能及时响应和排除故障。
各种网络安全产品的作用 体现在网络中的不同方面,统一的网络安全管理平台 必然要求对网络中部署的安全设备进行协同管理。
安全设备的管理、安全策略管理、安全风险控制、安全审计,几个方面。
安全审计:安全设备、操作系统、应用系统的日志信息收集汇总,进一步分析,得出更深层次的分析结果。
第十二章 系统安全架构设计
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.1 OSI 的安全体系架构概述
在 OSI 7层协议中 除会话层外,每一层 均能提供相应的安全服务。
最适合配置安全服务的是 物理层、网络层、运输层、应用层。
ISO 开放系统互联 安全体系的5类安全服务:鉴别、访问控制、数据机密性、数据完整性、抗抵赖性。
分层多点安全技术体系架构,也称为深度防御安全技术体系架构,通过以下方式将防御能力分布至整个信息系统中。
1、多点技术防御,从内部或外部多点攻击一个目标,通过对以下多个防御核心区域的防御达到抵御所有方式的攻击的目的。
1. 网络和基础设施,确保可用性,确保机密性和完整性。
2. 边界,抵御主动的网络攻击。
3. 计算环境,抵御内部、近距离的分布攻击。
2、分层技术防御,有效的措施是使用多个防御机制。
支撑性基础设施为网络、边界、计算机环境中信息保障机制运行基础。包括公钥设施、检测和响应基础设施。
1. 公钥基础设施提供一种 通用的联合处理方式,以便安全地创建、分发、管理 公钥证书和传统的对称密钥。
公钥基础设施 必须支持受控的互操作性,并与各用户团体所建立的安全策略保持一致。
2. 迅速检测并响应入侵行为,便于结合其他相关事件观察某个事件的“汇总”性能。
识别潜在行为模式或者新的发展趋势
12.3.2 鉴别框架
鉴别(Authentication)防止其他实体占用和独立操作被鉴别实体的身份。
鉴别有两种重要的关系背景:
一是实体由申请者来代表,申请者与验证者之间存在着特定的通信关系(如实体鉴别)。
二是实体为验证者提供数据项来源。
鉴别方式主要基于以下 5种:
1、已知的,如 一个秘密的口令。
2、拥有的,IC卡、令牌等。
3、不改变的特性,如生物特征。
4、相信可靠的第三方建立的鉴别(递推)。
5、环境(如主机地址等)。
鉴别信息(Artificial Intelligence,AI)是指申请者要求鉴别到 鉴别过程结束 所生成、使用、交换的信息。
交换AI、申请AI、验证AI。
鉴别服务分为以下阶段:安装阶段、修改鉴别信息阶段、分发阶段、获取阶段、传送阶段、验证阶段、停活阶段、重新激活阶段、取消安装阶段。
12.3.3 访问控制框架
访问控制(Access Control)决定 允许使用哪些资源、在什么地方适合阻止未授权访问的过程。
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 年,美国国防部颁布“可信计算机系统评估标准(Trusted Computer System Evaluation Criteria,TCSEC)”橘皮书(简称 DoD85)。
1991年,美国国家计算机安全中心(The National Computer Seaurity Center,NCSC)颁布了“可信计算机评估标准关于可信数据库管理系统的解释(Trusted Database Interpretation,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. 避免了网络关键部位出现单点失效。
第十三章 系统的可靠性
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、失效强度(Failure Intensity)单位时间 软件系统出现失效的概率。
5、失效率(Failure Rate)又称 风险函数(Hazard Function),也可以称为条件失效强度。
就是当软件在 0~t 时刻内 没有发生失效的条件下,t 时刻软件系统的失效强度。
公式略。
6、可靠度与失效率之间的换算。
7、平均失效时间(Mean Time to Failure,MTTF)就是软件运行后,到下一次出现失效的平均时间。更直观地表明一个软件的可靠度。
需要对 软件可靠度 这个反映软件可靠性的肚量指标作下列补充说明:
1. 需指明它与其他软件的界限。
2. 软件失效必须明确定义。
3. 必须假设硬件无故障(失效)和软件有关变量输入正确。
5. 必须指明时间基准:自然时间(日历时间)、运行时间、执行时间(CPU 时间)、其他时间基准。
6. 通常以概率度量,也可以模糊数学中的可能性加以度量。
7. 在时间域上进行,是一种动态度量,也可以是在数据域上,表示成功执行一个回合的概率。
软件回合是软件运行最小的、不可分的执行单位。
8. 有时将软件运行环境简单地理解为软件运行剖面(Operational Profile)。
运行剖面定义了关于软件可靠性描述中的“规定条件”,测试环境、测试数据 等一系列问题。
13.1.3 可靠性目标
使用 失效强度 表示软件缺陷对软件运行的影响程度。
不仅取决于软件失效发生的概率,还和软件失效的严重程度有很大关系。引出另外一个概念——失效严重程度类(Failure Severity Class)。
失效严重程度类 就是对用户具有相同程度影响的失效集合。
对失效严重程度的分级 可以按照不同的标准进行,对成本影响、对系统能力的影响 等。
对成本的影响可能包括失效引起的额外运行成本、修复和恢复成本、现有潜在的业务机会的损失等。
对系统能力的影响常常表现为 关键数据的损失、系统异常退出、系统崩溃、导致用户操作无效等。
可靠性目标是指客户对软件性能满意程度的期望。通常用 可靠度、故障强度、平均失效时间(MTTF)等指标来描述。
建立定量的可靠性指标需要对可靠性、交付时间、成本进行平衡。
13.1.4 可靠性测试的意义
1、软件失效可能造成灾难性的后果。
2、软件的失效在整个计算机系统失效中的比例较高。
80%和软件有关。
结构太复杂了,一个较简单的程序,其所有路径数量可能是一个天文数字。
3、相比硬件可靠性技术,软件可靠性技术很不成熟。
4、软件可靠性问题是造成费用增长的主要原因之一。
5、系统对于软件的依赖性越来越强。
13.1.5 广义的可靠性测试与侠义的可靠性测试
广义的软件可靠性测试是指为了最终评价软件系统的可靠性而运用建模、统计、试验、分析、和评价等一系列手段对软件系统实施的一种测试。
侠义的软件可靠性测试是指为了获取可靠性数据,按预先确定的测试用例,在软件的预期使用环境中,对软件实施的一种测试。
也叫“软件可靠性试验(Software Reliability Test)”,它是面向缺陷的测试,以用户将要使用的方式来测试软件,所获得的测试数据与软件的实际运行数据比较接近。
可靠性测试是对软件产品的可靠性进行调查、分析、评价的一种手段。
对检测出来的失效的分布、原因、后果 进行分析,并给出纠正建议。
总的来说,可靠性测试的目的可归纳为以下三个方面:
1、发现软件系统在 需求、设计、编码、测试、实施 等方面的 各种缺陷。
2、为软件的使用、维护提供可靠性数据。
3、确认软件是否达到可靠性的定量要求。
13.2 软件可靠性建模
13.2.1 影响软件可靠性的因素
软件可靠性模型(Software Reliability Model)是指 为预计或估算软件的可靠性所建立的可靠性框图和数学模型。
模型将复杂系统的可靠性逐级分解为简单系统的可靠性,以便 定量预计、分配、估算、评价复杂系统的可靠性。
影响软件可靠性的主要因素:缺陷的引入、发现、清除。
缺陷的引入主要取决于软件产品的特征和软件的开发过程特性。
缺陷的发现依靠运行剖面。
缺陷的清除依赖于失效的发现、修复活动、可靠性方面的投入。
影响软件可靠性的主要因素如下:
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、曲线拟合类模型。
用回归分析的方法研究软件 复杂性、缺陷数、失效率、失效间隔时间,包括参数方法和非参数方法两种。
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、试探性数据分析技术(Exploratory Data Analysis,EDA)对可靠性分析有用的信息如下:
1. 循环相关。
2. 短期内失效数的急剧上升。
3. 失效数集中的时间段。
13.4 软件的可靠性设计与管理
13.4.1 软件可靠性设计
实践证明,保障软件可靠性,最有效、最经济、最重要的手段是 在软件设计阶段采取措施进行可靠性控制。
1、软件可靠性设计是软件设计的一部分,必须在软件的总体设计框架中使用,并且不能与其他设计原则相冲突。
2、软件可靠性设计在满足提高软件质量要求的前提下,以提高和保障软件可靠性为最终目标。
3、软件可靠性设计应确定软件的可靠性目标,不能无限扩大化,排在功能度、用户需求、开发费用之后考虑。
容错设计、检错设计、降低复杂度设计 等技术。
1、容错设计技术
1. 恢复块设计,一旦文本出现故障,用备份文本加以替换。
2. N版本程序设计,对于相同初始条件和相同输入的操作结果,实行多数表决,防止其中某一软件模块/版本的故障提供错误的服务。
必须注意以下两方面:
使软件的需求说明具有完整性和精确性。
设计全过程的不相关性。
3. 冗余设计
在相同的运行环境中,一套软件出故障的地方,另外一套也一定会出现故障。
在一套完整的软件系统之外,设计一种不同路径、不同算法或不同实现方法的模块或系统作为备份。
费用可能接近单个版本软件开发费用的两倍,还有可能导致软件运行时所花费的存储空间、内存消耗、运行时间有所增加,需要在可靠性要求和额外付出代价之间做出折中。
2、检错技术
检错技术实现的代价一般低于容错技术和冗余技术,但它有一个明显的缺点,就是不能自动解决故障。
着重考虑几个要素:检测对象、检测延时、实现方式、处理方式。
3、降低复杂度设计
模块复杂性主要包含模块内部数据流向和程序长度两个方面,结构复杂性用不同模块之间的关联程度表示。
软件复杂性是产生软件缺陷的重要根源。
在设计时就应该考虑降低软件的复杂性,是提高软件可靠性的有效方法。
在保证实现软件功能的基础上,简化软件结构,缩短程序代码长度,优化软件数据流向,降低软件复杂度,从而提高软件可靠性。
13.4.2 软件可靠性管理
为了进一步提高软件可靠性,又提出软件可靠性管理的概念,把软件可靠性活动贯穿于软件开发的全过程。
各个阶段的可靠性活动的目标、计划、进度、任务、修正措施等。
由于软件之间的差异较大,下面的每项活动并不是每一个软件系统的可靠性管理的必须内容,也不是软件可靠性管理的全部内容
第十四章 基于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、使用质量功能分配(Quality Function Deploymen,QFD)发现隐藏质量需求,建立相关质量场景,先期预测需求风险。
有效地捕捉行为需求的方法是分析用例(Use Case)
用例包含图和文字描述,符号 简单、抽象,保证表述需求时简单性和清晰度。
14.3.2 需求分析的任务
1、需求分析的目的
完整、准确地描述用户对系统的需求,跟踪用户需求的变化,准确地反映到系统架构和设计中,设计和用户的需求保持一致。
具有决策性、方向性、策略性的作用。
2、需求分析的特点
追求系统需求的完整性、一致性、验证性。
保持和用户要求同步,
保持需求分析各侧面之间的一致,
保持需求和系统设计间的同步。
14.3.3 需求文档与架构
每个用例都有一个相关需求的文字描述,定义用例应该和领域专家一起进行,如果没有领域专家的长期参与,只能是一种“伪分析”。
用例为定义架构提供了一个系统的领域行为模型。
界面的外观、功能、导航同用例紧密相连,有效定义屏幕的方法叫低保真度原型(Low-fidelity Prototyping),领域专家也始终参与到屏幕定义中去。
需求分析的项目词汇表,也将在架构规划中被扩展。
14.4 系统架构设计
系统架构沟通了需求和软件之间巨大的语义上的鸿沟。
系统架构的第一个任务就是定义这两个极端之间的映射。
开放分布式处理(Open Distributed Processing,ODP)包括企业、逻辑信息、计算接口、分布式工程、技术选择。
对每个观点,确认架构需求的一致性是非常重要的。
14.4.1 企业业务架构
企业业务架构从IT角度,对企业的业务结构、企业机构、业务的关系、内部的关系、与外部机构的关系进行整理定义。
包含如下内容:
1、企业的业务和战略目标,近期、中期、长远 目标。
2、企业的组织结构。
3、业务的分类。
4、各类业务之间的关系。
5、组织机构与业务的关系。
6、企业与外部机构的关系。
这些业务对象模型标识出系统的关键性约束,包括系统目标和重要的系统策略。
策略包含如下三类明确的表达方式:
责任:业务对象必须做什么。
许可:业务对象可以做什么。
禁止:业务对象不可以做什么。
对业务问题进行分析时,要考虑企业业务的发展,如新的服务或产品推出、考虑组织机构的改变等。
所有这些可能的变化(易变场景)都应该提现在企业业务架构中。
通过对企业业务架构的定义,很清楚地知道由于企业业务特点、业务的流程特点、企业的组织机构等原因对IT系统所带来的自然分块和各个分块之间的边界关系。
企业业务架构的维护是一个长期而反复的工作。
测试结果报告系统(Test Results Reporting System,TRRS)。
对象约束语言(Object Constraint Language,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 系统移植工具
系列化、标准化、文档化,使任何人都能以相同的顺序开展工作,提高效率。