系统架构设计师
2020-10-27 09:44:24 1 举报AI智能生成
系统架构设计师,持续更新中....
系统架构设计师
软考
模版推荐
作者其他创作
大纲/内容
详细模式
1.绪论
系统架构的概念及其发展历史
•系统架构的概念
软件系统架构是关于软件系统的结构 行为和属性的高级抽象
在描述阶段,其对象是直接构成系统的抽象组件以及各个组件之间的连接规则,特别是相对细致的描述组件之间的通讯
在实现阶段,这些抽象组件被细化为实际的组件,比如具体类或者对象
软件系统架构不仅,而且,包括
指定了软件系统的组织结构和拓扑结构
显示了系统需求和构成组件之间的对应关系
设计决策的基本方法和基本原理
•简要的发展历史
企业软件架构
Enterprise Software Architecture
企业软件架构的雏形来自企业建模的理论和思想
20世纪80年代,IBM首先引入 信息系统架构框架的概念
Zachman 提出 6个视角来分析企业
信息
流程
网络
人员
时间
基本原理
企业软件架构最早应用是美国的一些政府机构
META Group 是最早对企业软件架构进行分析和研究的主要咨询公司
TOGAF The Open Group Architecture Framework ,Open Group 架构框架
TOGAF 是一个行业标准的架构框架
企业软件架构实施的主体是企业,企业的需求才是软件架构发展的引擎
系统架构师的定义与职业素质
架构师的分类
业务架构师
主题领域架构师
技术架构师
项目架构师
系统架构师
系统架构师的定义
系统架构师是系统或产品线的设计责任人
是一个负责理解和管理并最终确认和评估非功能性系统需求(软件的可维护性,安全性,可靠性,性能,有效性,和可测试性等,给出开发规范,搭建系统实现的核心架构,对整个软件架构,关键构件,接口进行总体设计并澄清技术细节的高级技术人员
系统架构师主要着眼于系统的技术实现,同时还要考虑系统的组织协调
因此,系统架构师是特定的开发平台,语言,工具的大师
系统架构师是信息系统开发和演进的全方位技术和管理人才
系统架构师通常负责公司系统的架构设计和持续改进,承担从业务向技术系统转换的桥梁作用
协助项目经理制定项目计划和控制项目进度
需要承担技术管理工作,如负责组织技术研究和攻关,负责组织和管理技术培训工作,管理技术支撑团队并给项目,产品开发实施团队提供技术保障
系统架构师技术素质
具备丰富的一线大中型开发项目的总体规划,方案设计以及技术队伍管理经验
具备软件行业工作经验,熟悉业务领域的技术应用和发展
具有项目管理理论基础,并在应用系统开发平台和项目管理上有实践经验
对相关的技术标准有深刻的认识,对软件工程标准有良好的把握
具备C/S或B/S体系结构或特定领域软件产品开发及架构和设计经验
具有面向对象分析,面向对象设计,面向对象开发的能力,精通XML 和UML等,熟练使用Rational Rose Power Designer等CASE工具进行设计开发
对相关技术编程(如PHP/.NET/Java)及整个解决方案有深刻的理解及熟悉的应用,并且精通架构和设计模式(如 WS/J2EE),并在此基础上设计产品框架
精通大型数据库(如 Oracle ,SqlServer,MySql D等)的开发
对计算机系统,网络和安全,应用系统架构等有全面的认识
良好的团队意识和协作精神,有较强的内外沟通能力
系统架构师管理素质
领导素质
远见,诚信,果断
核心的高层技术管理人员
必须尽可能使所有团队成员的想法保持一致
为一个项目制定一个清晰的,强制性的,有远见的目标做为整个团队的动力
技术的领导者
必须提供特定的方法和模型作为理想的技术解决方案
并排除各种非系统相关的影响因素
技术管理者
在需要做出决定的时候,必须避免犹豫
必须具备及时解决技术问题的紧迫感和自信心
系统架构师与其他团队角色的协调
软件团队角色
项目管理师
负责整个项目的实施和控制
协调各种资源
系统分析师
分析用户需求
形成规范化的文档
指导整个项目的开发
与客户不断的交流
熟悉应用领域的业务
系统架构师
强调整体的,宏观的系统设计,侧重在架构级别上
重点要对架构进行描述。分析和评估
角色关系和区别
项目管理师与系统架构师
系统架构师
推动项目技术发展
提出系统的总体架构,并给出开发指导
项目管理师
配合系统架构师,并提供各个方面的支持
系统分析师与系统架构师
系统架构师
协同系统分析师的工作,建议系统分析师按什么标准,什么工具,什么模式,什么技术去思考系统
系统架构师应该对系统分析师所提出来的问题,碰到的难题及时地提出解决的方案
系统分析师
对业务系统进行分析 建模,他的任务 目标是明确的
系统架构师知识结构
战略规划能力
业务流程建模能力
信息数据架构能力
技术架构选择和实现能力
应用系统架构的解决能力和实现能力
基础IT只是及基础设施、资源调配能力
信息安全技术支持与管理报障能力
IT审计、治理与需求分析、获取能力
面向软件系统可靠性与系统生命周期的质量报障服务能力
知识纬度
从开发人员到架构师
一名合格的架构师的成长应该经历8年以上的项目开发经验
一般要经历程序员,软件设计师等阶段,然后再逐步成长为软件架构师
公认的软件架构师认证机构和组织
UC Irvine
CMU/SEI
iCMG
信息安全技术
系统可靠性设计
架构师的管理实践
企业集成架构设计
嵌入式系统设计
2.计算机与网络基础知识
操作系统基础知识
操作系统是计算机系统的核心系统软件
操作系统的原理、类型和结构
操作系统的定义
计算机系统的硬件资源
CPU
存储器(主存 和外存)
输入/输出设备
计算机系统的软件资源
以文件形式保存在存储器上的程序和数据等信息
操作系统的作用
通过资源管理,提高计算机系统的效率
改善人机界面,,向用户提供友好的工作环境
操作系统的分类
1
<br>单用户操作系统
批处理操作系统
2
分时操作系统
实时操作系统
3
网络操作系统
分布式操作系统
嵌入式操作系统
操作系统的特征
并发性 concurrency
共享性 sharing
虚拟性 virtual
不确定性 non-determinacy
操作系统的功能
进程管理
<br>文件管理
<br>存储管理
<br>设备管理
<br>作业管理
处理机与进程管理
进程的定义及分类
进程是程序的一次执行,该程序可以和其他程序并发执行,进程通常由程序、数据及进程控制块(Process Control Block ,PCB)组成, PCB 描述了进程的基本情况,是进程的唯一标志
程序和进程的区别
程序是静态的指令序列
进程是为执行该程序的线程而保留的资源集
进程性质分类
系统进程和用户进程
父进程和子进程
进程的状态与控制转换
进程的基本状态(三态模型)
<br>就绪
运行
阻塞
进程的五态模型
新建态
进程的基本状态
就绪、运行、阻塞
终止态
进程控制是指对系统中所有进程从创建到消亡的全过程实施有效的控制
进程控制原语
<br>创建原语
<br>撤销原语
<br>挂起原语
<br>激活原语
<br>阻塞原语
<br>唤醒原语
进程互斥与同步以及P.V操作
进程间的同步
异步环境下的一组并发进程之间互发消息,相互合作、互相等待,使得各进程按照一定的速度执行的过程称为进程同步
同步是使在异步环境下的各进程按一定的顺序和速度执行
进程间的互斥
一组并发进程中的一个或多个程序段,因共享某一个公有资源而使他们必须以一个不允许交叉的顺序执行
互斥要保证临界资源在某一时刻只能被一个进程访问
临界资源
<br>系统中有些资源可以供多个进程同时使用,有些资源一次只能供一个进程使用,称为临界资源
Critical Resource , CR
<br>如打印机,公共变量,表格等
临界区管理原则
临界区是进程中对临界资源实施操作的那段程序
Critial Section , CS
互斥临界区管理原则
有空即进
无空则等
有限等待
让权等待
信号量机制
1965年,荷兰学者Dijkstra
信号量机制是一种卓有成效的进程同步和互斥的工具
整型信号量与PV操作
信号量是一个整型变量,根据控制对象的不同赋不同值
信号量分为两类
公用信号量
实现进程间的互斥,初值=1或资源的数目
私用信号量
实现进程间的同步,初值=0或某个正整数
信号量 S 的物理意义
S>=0表示某资源的可用数, S<0 其绝对值表示阻塞对于中等待该
PV操作
实现进程同步和互斥的常用方法
低级通信原语,在执行期间不可分割
P操作
表示申请一个资源
定义: S:= S-1,如 S>=0 ,则执行P 操作的进程继续执行;否则若S<0,则置该进程为阻塞状态(因为无可用资源),并将其插入阻塞队列
V操作
表示释放一个资源
定义: S:=S+1 ,若 S>0 则执行V操作的进程继续执行;否则若S<=0,则从阻塞状态唤醒一个进程,将其插入到就绪队列,然后执行V操作的进程继续执行
利用PV操作实现进程互斥
令信号量 mutex 的初值为“1”,当进入临界区时执行 P 操作, 退出临界区时执行V操作。
利用PV操作实现进程同步
进程的同步是由于进程间合作引起的相互制约的问题,要实现进程的同步可用一个信号量与消息联系起来。
当信号量为0时表示希望的消息未产生,当信号量为非0时,表示希望的消息已经存在。
假定用信号量S表示某条消息,进程可以通过调用P操作测试消息是否到达,调用V操作通知消息已经准备好了
同步问题的经典例子:生产者-消费者问题
生产者
不断生产消息,存入缓冲区
消费者
不断的读取缓冲区,消费消息
进程通信和管程
进程通信
<br>通信是指进程间的信息交换
通信内容
控制信息的交换
<br>低级通信
<br>进程的同步和互斥是通过信号量来实现的,属于低级通信
数据的交换
<br>高级通信
<br>高级通信的类型有共享存储系统和消息传递系统和管道通信
<br>高级通信的方式有直接通信和间接通信
管程
管程是另外一种同步机制,由Brinsh Hansen 和 Hoare 提出的
管程是由一些共享数据、一组能为并发进程执行的作用在共享数据上的操作集合、初始代码以及存取权组成的,也就是共享数据及在其上操作的一组过程构成了管程
进程可以在任何需要资源的时候调用管程,且在任一时刻最多只有一个进程能够真正的进入管程,其他的只能等待。
管程提供了一种可以允许多进程安全有效地共享抽象数据类型的机制
<br>每一个管程都有一个名字
进程调度与死锁
进程调度
<br>进程调度及处理器调度,也称作上下文转换
主要功能
<br>确定把处理器在什么时候分配给哪一个进程
在某一些操作系统中,一个作业从提交到完成需要经历高、中、低三级调度
调度方式和算法
调度方式
<br>当有更高优先级的进程到来时如何分配CPU
<br>分为可剥离和不可剥离两种
调度算法
<br>先来先服务
<br>时间片轮转 round robin
<br>优先级调度
<br>多久反馈调度
死锁
两个以上的进程互相都因请求对方已经占有的资源,无限期地等待并无法继续运行下去的现象
死锁是系统的一种出错状态,它浪费资源,还会导致整个系统崩溃,所以应该尽量预防和避免死锁
死锁产生的原因及条件
原因
<br>资源竞争及进程推进顺序非法
产生死锁的4个必要条件
<br>互斥条件
<br>请求保持条件
<br>不可剥夺条件
<br>环路条件
死锁处理策略
<br>鸵鸟策略:不理睬策略
<br>预防策略:破坏死锁的4个必要条件之一
<br>避免策略:精心的分配资源,动态的回避死锁
<br>检测和解除死锁:一旦发生死锁,系统不但能检测出,还能解除
线程
<br>进程中的一个实体,是被系统独立分配和调度的基本单位
<br>在引入线程的操作系统中,通常一个进程拥有若干个线程
<br>线程只拥有一些运行中必不可少的资源,它可与同属一个进程的其他线程共享该进程所拥有的全部资源
<div class="node-self"><div class="node-title" spellcheck="false" autocapitalize="off">线程具有许多传统进程所具有的特性,称为轻型进程(Light-Weight Process)</div></div>
<br>线程可以创建另一个线程,同一个进程中的多个线程可以并发执行。
<br>线程以具有就绪,运行,阻塞三种基本状态
存储管理
存储管理的概念
<br>存储组织的能力是在存储技术和CPU寻址技术许可的范围内组织合理的存储结构,使得各层次的存储器都处于均衡的繁忙状态,其依据是访问速度匹配,容量要求和价格等
存储器结构
<br>寄存器-主存-外存
<br>寄存器-缓存-主存-外存
逻辑地址
<br>用户程序经编译后,每个目标模块以0为基地址进行的顺序编址,它不是主存中的真实地址,是相对于基地址而言的。
<br>逻辑地址又称为相对地址、程序地址或者虚拟地址
物理地址
<br>主存中各存储单元的地址,从统一的基地址进行的顺序编址,是主存中的实际地址,可以寻址并实际存在
<br>物理地址又称为绝对地址
存储空间
<br>逻辑地址空间简称地址空间是逻辑地址集合
<br>物理地址空间简称存储空间是物理地址的集合
地址重定位
静态重定位
<br>在程序执行前进行地址重定位,即装入内存时重定位
动态重定位
<br>在程序执行期间,在每次存储访问之前进行地址重定位
存储管理的功能
<br>主存储器的分配和回收
<br>提高主存储器的利用率
<br>存储保护
<br>主存扩充
存储管理的方式
<br>分区存储管理
<br>分页存储管理
<br>分段存储管理
<br>段页式存储管理
<br>虚拟存储管理
设备管理
外部设备
<br>输入/输出(I/O)设备
<br>辅存设备
<br>终端设备等
设备管理的任务
<br>保证在多道程序环境下,当多个进程竞争下使用设备时,按一定策略分配和管理各种设备,控制设备的各种操作,完成输入/输出设备与主存之间的数据交换
设备管理的目标
<br>提高设备的利用率,为用户提供方便统一的界面
设备管理的主要功能
<br>动态掌握并记录设备的状态、设备的分配和释放、缓冲区管理、实现物理输入/输出设备的操作、提供 设备使用的用户接口、设备的访问和控制、输入/输出缓存和调度
设备的分类
使用特性
<br>存储设备
<br>输入/输出设备
<br>终端设备
<br>脱机设备
资源分配
<br>独占设备
<br>共享设备
<br>虚拟设备
从属关系
<br>系统设备
<br>用户设备
数据组织方式
<br>快设备(Block Device)
<br>字符设备(Character Device)
数据传输速率
<br>低速设备
<br>中速设备
<br>高速设备
输入/输出对象
<br>人机通信设备
<br>机机通信设备
是否可交互
<br>非交互设备
<br>交互设备
设备管理的主要技术
<br>中断技术
<br>DMA技术 (Direct Memory Access)
<br>缓冲技术
<br>虚设备和SPOOLINE技术(simultaneous peripheral operations online, 外围设备联机)
设备管理软件
<br>中断处理程序
<br>设备驱动程序
<br>与设备无关的系统软件
<br>用户层I/O软件
数据传输控制方式
<br>程序控制方式
<br>中断方式
<br>直接存储访问方式
<br>通道方式
磁盘调度算法
<br>磁盘是可供多个进程共享的设备
<br>磁盘调度是使各进程对磁盘的平均访问时间最新
常用调度算法
先来先服务 (first come first served, FCFS)
<br>最短寻道时间优先(Shortest Seek Time first, SSTF)
<div class="node-self"><div class="node-title" spellcheck="false" autocapitalize="off">扫描算法(SCAN)</div></div>
文件管理
文件(file)是具有符号名的,在逻辑上具有完整意义的一组相关信息项的集合
<br>文件名的格式和长度因系统而异,操作系统根据文件名对其进行控制和管理
文件管理系统
<br>操作系统中对文件进行统一管理的一组软件和相关数据(即被管理的文件)的集合,简称文件系统
<br>文件系统的功能按名存取、统一用户接口、并发访问和控制、安全性控制、优化性能以及差错恢复
文件的类型
性质和用途
<br>系统文件
<br>库文件
<br>用户文件
文件的安全属性
<br>只读文件
<br>读写文件
<br>可执行文件
<br>不保护文件
文件的组织形式
<br>普通文件
<br>目录文件
设备文件(特殊文件)
信息保存期限
<br>临时文件
<br>档案文件
<br>永久文件
信息流向
<br>输入文件
<br>输出文件
<br>输入/输出文件
文件的结构和组织
<br>文件的结构是指文件的组织形式
<br>从用户角度看到的文件组织形式称为文件的逻辑结构
<br>从现实角度看到的文件在存储设备上的存放方式,称为文件的物理结构
文件的逻辑结构
<div class="node-self"><div class="node-title" spellcheck="false" autocapitalize="off">有结构的记录文件</div></div>
<br>无结构的字符流文件
文件的物理结构
<br>连续结构
<br>链接结构
<br>索引结构
<br>多个物理快的索引表
文件访问方法
<div class="node-self"><div class="node-title" spellcheck="false" autocapitalize="off">读写文件存储设备上的一个物理快的方法</div></div>
常用的访问方法
顺序访问
<br>对文件中的信息按顺序依次读写的方式
随机访问
<br>对文件中的信息可以按任意的次序随机的读写文件中的信息
文件存储设备管理
<br>文件系统必须对文件存储设备上的空闲空间进行组织和管理,包括对空闲空间的组织、分配和回收等
常用的空闲空闲管理方法
<br>位图法
<br>索引法
<br>链接法
文件控制块和文件目录
文件控制块
<br>系统为每个文件设置的用于描述和控制文件的数据结构
<br>它是文件存储的唯一标志,简称(File Control Block ,FCB)
FCB 包含
<br>基本信息
<br>位置信息
<br>存储控制信息
<br>使用信息
文件目录
<br>文件控制块的有序集合
常见的文件目录结构
<div class="node-self"><div class="node-title" spellcheck="false" autocapitalize="off">一级目录结构</div></div>
<br>二级目录结构
<br>多久目录结构
文件的使用
工作目录也称作当前目录
<div class="node-self"><div class="node-title" spellcheck="false" autocapitalize="off">每个用户都用自己的工作目录</div></div>
<div class="node-self"><div class="node-title" spellcheck="false" autocapitalize="off">任一目录节点都可以被设置为工作目录</div></div>
<div class="node-self"><div class="node-title" spellcheck="false" autocapitalize="off">文件系统允许用户随时改变自己的工作目录</div></div>
目录和文件的管理命令
<div class="node-self"><div class="node-title" spellcheck="false" autocapitalize="off">文件系统提供了一组专门用于目录和文件的管理指令</div></div>
目录管理指令
<br>建立目录
<div class="node-self"><div class="node-title" spellcheck="false" autocapitalize="off">显示工作目录</div></div>
<br>改变目录
<br>删除目录
文件控制命令
<br>建立文件
删除文件
打开文件
关闭文件
修改文件名
修改文件属性
文件存取命令
读写文件<br>
显示文件<br>
复制文件
文件的共享
<br>不同的用户使用同一文件,它是不同用户完成统一任务的必须的功能
文件的安全
<br>文件的保密和保护,即限制非法用户使用和破坏文件
<br>文件的安全管理措施常常在系统级,用户级,目录级和文件级上实施
作业管理
作业管理和作业控制
<br>作业是系统为完成一个用户的计算任务或者一次事务处理所做的工作总和
作业的组成部分
<br>程序
<br>数据
<br>作业说明书
<br>作业管理程序是操作系统中用来控制作业进入、执行和撤销的一组程序
<br>用户作业可以采用脱机和联机两种作业方式控制作业运行
作业控制块(Job Contrl Block ,JCB)
记录与该作业有关的各种信息的登记表
作业存在的唯一标志,包含
<br>用户名
<br>作业名
<br>状态标志
<br>在输入井中,通常将作业控制块排成一个或多个队列,称为作业后备队列,也就是说作业后备队列是由若干个JCB组成的
作业状态及转换<br>
4种作业状态
<br>提交
<br>后备
<br>执行
<br>完成
状态转换
<br>由用户提交
<br>收容
执行
<br>就绪
<br>运行
<br>等待
<br>完成
作业调度及其常用调度算法
<br>作业调度是完成从后备状态到执行状态的转变及从执行状态到完成状态的转变。
常用作业调度算法
<br>先来先服务
<br>短作业优先
<br>响应比高优先
<br>优先级调度算法
<br>均衡调度算法
<br>在一个以批处理为主的系统中,通常用平均周转时间或者平均带权周转时间来衡量作业调度算法的性能
用户界面
<br>用户界面是计算机中实现用户与计算机通信的软硬件的总称,也称用户接口或者人机界面
用户界面的硬件
<br>用户向计算机输入数据或者命令的输入装置
<br>由计算机输出供用户观察或者处理的输出装置
用户界面的软件
<br>用户与计算机相互通信的协议、约定、操纵命令及其处理软件
网络操作系统
网络操作系统
<br>Network Operating System ,NOS 是使网络中各计算机能方便而有效的共享网络资源,为网络用户提供所需的各种服务的软件和有关规则的集合
操作系统具有
<br>处理机管理
<br>储存器管理
<br>设备管理
<br>文件管理
<br>提供高效可靠的网路通信能力
<br>提供多种网络服务的能力
网络操作系统的特征
<br>硬件独立性
<br>多用户支持
<br>支持网络实用程序及其管理功能
<br>多种客户端支持
<br>提供目录服务
<br>支持多种增值服务
网络操作系统的分类
<br>集中模式
<br>客户机/服务器模式
<br>对等模式 ( peer-to-peer)
常见操作系统
Unix系统
<br>UNIX系统是由美国贝尔实验室发明的一种多用户,多任务的分时操作系统。
<br>UNIX最内层硬件提供基本服务,内核提供全部应用程序所需要的各种服务
<br>Windows家族
<br>Linux系统
数据库系统基础知识
概述
<br>数据库系统(DataBaseSystem, DBS) 从广义上讲是由数据库、硬件、软件和人员组成,管理的对象是数据
<br>数据库(DataBase, DB) 是指长期存储在计算机内的有组织的可共享的数据集合
<br>数据库管理系统(DataBase Management System DBMS) 是一种操纵和管理数据库的大型软件,用于建立、使用 和维护数据库
DBMS
<br>关系数据库(Relation DataBase System , RDBS)
<br>面向对象的数据库系统(Object-Oriented DataBase system OODBS)
<br>对象关系数据库系统(Object-Oriented Relation DataBase, OORDBS)
数据库模式结构
采用三级模式结构
外模式
<br>外部视图
概念模式
<br>概念视图
内模式
<br>内部视图
三级模式之间提供了两级映像
<br>模式/内模式映像
<br>外模式/模式映像
关系数据库基础
数据库的结构和模式
<br>数据库的结构基础是数据模型,是用来描述数据的一组概念和定义
数据模式的三要素
<br>数据结构
<br>数据操作
<br>数据的约束条件
常用的数据模式
<br>概念数据库模型
<br>基本数据库模型
<br>面向对象模型
关系数据模型的组成要素
<br>关系数据结构
<br>关系操作集合
<br>关系完整性约束
实体-联系 (E-R,Entry-Relation)模型
<br>概念模型中最常用的方法为实体-联系法,简称E-R方法
主要概念
<br>实体
<br>联系
<br>属性
<br>该方法直接从现实世界中抽象出实体和实体间的联系
ER图主要构件
矩形:表示实体集
菱形:表示联系集
椭圆:表示属性
线段:将属性与相关的实体集连接,或者将实体集与联系集相连
双椭圆:表示多值属性
虚椭圆:表示派生属性
双线:表示一个实体全部参与到联系集中
扩充的ER模型
<br>弱实体
<br>特殊化
<br>概括
<br>聚集
数据的规范化
规范化理论研究的是关系模式中各属性之间的依赖关系及其对关系模型性能的影响
关系数据库设计理论的核心是数据间的函数依赖,衡量的标准是关系规范化的程度及分解的无损连接和保存函数依赖性
数据依赖
是通过一个关系中属性间指的相等与否体现出来的数据间的相互关系
是现实世界属性间联系和约束的抽象
是数据内在的性质
是语义的体现
函数依赖
是一种最重要、最基本的数据依赖
包含
函数依赖
非平凡函数依赖
完全函数依赖
部分函数依赖
传递依赖
码
主属性和非主属性
外码
值依赖定义
函数依赖的公理系统(Armstrong 公理系统)
事务管理
事务是一个操作序列,这些操作‘要么都做,要么都不做’,事务时数据库环境中不可分割的逻辑工作单位。
事务的4个特性
原子性 (atomicity)
一致性(consistency)
隔离性(isolation)
持久性(durability)
事务定义的语句
BEGIN TRANSACTION
COMMIT
ROLLBACK
并发控制
并发操作
并发操作是指在多用户共享的系统中,用户可能同时对同一数据进行操作
并发操作带来的问题是数据的不一致性
多少更新
不可重复读
读脏数据
DBMS的并发控制子系统负责协调并发事务的执行,保证数据库的完整性不受破坏,避免用户得到不正确的数据
并发控制的主要技术是封锁
封锁的类型
排他锁(简称X锁或写锁)
共享锁(简称S锁或读锁)
并发控制还与三级封锁协议、活锁与死锁、并发调度的可串行性、两段封锁协议、封锁的粒度、事务的嵌套有关
数据库的备份与恢复
<br>保护数据库的关键技术是建立冗余数据,即备份数据
<br>建立冗余数据的方法是进行数据转储和建立日志文件
数据的转储
静态转储
动态转储
海量转储
增量转储
如何在系统出现故障后能够及时的使数据库恢复到故障前的正确状态就是数据库恢复技术
数据库的4类故障
事务故障
系统故障
介质故障
计算机病毒
事务故障的恢复
撤销事务(UNDO)
重做事务(REDO)
介质故障的恢复需要DBA的参与,装入数据库的副本和日志文件副本,再由系统执行撤销和重做操作
关系数据设计
数据库设计
结构特性的设计
行为特性的设计
数据库设计的特点
从数据结构即数据模型开始,并以数据模型为核心展开,这使数据库设计的重要特点
静态结构设计和动态行为设计分离
试探性
反复性和多步性
数据库设计方法
直观设计法
规范设计法
计算机辅助设计法
自动化设计法
基于3NF的设计方法
基于实体联系(E-R)模型的是数据库设计方法
基于视图概念的数据库设计方法
面向对象的关系数据库设计法
计算机辅助数据库设计方法
敏捷数据库设计方法
数据库设计的基本步骤
需求分析
需求分析阶段的任务使:对现实世界要处理的对象(组织、部门、企业等)进行详细调查,在了解现行系统的概况、确定新系统功能的过程中,收集支持系统目标的基础数据及其处理方法
需求分析使在用户调查的基础上,通过分析逐步明确用户对系统的需求
数据需求
围绕这些数据的业务需求
需求分析中,通过自顶向下、逐步分解的方法分析系统
分析的结果用数据流图(Data Flow Diagram ,DFD)进行图形化描述,比用一些规范的表格对数据分析结果和描述做补充,最后形成需求说明书
概念结构设计
数据库概念结构设计是建立在需求分析的基础上的。依照需求分析中的信息需求,对用户信息加以分类、聚集和概括,建立信息模型,并依据选的数据库管理关系软件,把它们转换为数据的逻辑结构,再依照软硬件环境,最终实现数据的合理存储。这一过程称为数据建模
设计策略
自顶向下
自底向上
逐步扩张
混合策略
最常用的概念结构设计方法(E-R 方法)
实体联系法(Entity Relationship Approach)
设计步骤
设计局部E-R模型
设计全局E-R模型
全局E-R模型优化
逻辑结构设计
逻辑结构设计是在概念结构设计基础上进行的数据模型设计,可以是层次、网状模型和关系模型
该设计阶段的主要任务
确定数据模型
将 E-R 图转换为指定的数据模型
确定完整性约束
确定用户视图
物理结构设计
数据库在物理设备上的存储结构与存取方法称为数据库的物理结构
数据库的物理结构设计是对已经确定的数据库逻辑结构,利用DBMS锁提供的方法、技术,以较优的存储结构,和数据存取路径、合理的数据存放位置以及存储分配,设计出一个高效的,可实现的数据库物理结构
物理结构设计要做的工作
存储记录的格式设计
存储结构的设计
存取方法设计
确定系统配置
数据库应用程序设计
数据库应用系统的开发是DBMS的二次开发
是对用户信息的存储
是对用户处理要求的实现
数据库应用设计要做的工作
选择设计方法
制定开发计划
选择系统架构
设计安全性策略
应用程序设计阶段的方法<br>
结构化设计方法
面向对象设计方法
安全策略主要是指硬件平台、操作系统平台、数据库系统、网络及应用系统的安全
数据库运行维护
该阶段要做的主要工作
数据库的转存和恢复
数据库的安全性和完整性
数据库的性能的监督、分析和改造
数据库的重组和重构
分布式数据库系统
分布式数据库的概念
分布式数据库系统(Distribute DataBase System DDBS)是针对地理上分散,而管理上又需要不同程度集中管理的需求而提出的一种数据管理信息系统。
满足分布性,逻辑相关,场地透明和场地自治性的数据库系统被称为完全分布式数据库系统
分布式数据库的特点
数据的集中控制
数据的独立
数据冗余可控性
场地自治性
存取的有效性
分布式数据库的体系结构
《分布式数据库系统标准》提出了把分布式数据库抽象为4层的结构模式
全局外层
全局概念层
局部概念层
局部内层
分布式数据库的应用
分布式数据库的应用领域
分布式计算
Internet 应用
数据仓库
数据复制
全球联网查询
Replication Server是一种典型的分布式数据库系统
商业智能
商业智能的基本概念
商业智能(Business Intelligence BI) 是对企业对商业数据的搜集、管理和分析的系统过程,目的是使企业的各级决策者获得知识或洞察力,帮助他们对企业更有利的决策。
它是数据仓库、联机分析(Online Analytical Processing,OLAP)和数据挖掘等相关技术走向商业应用后形成的一种应用技术
商业智能系统主要实现将原始业务数据转换为企业决策信息的过程
主要包括
数据预处理
建立数据仓库
数据分析
数据展现
组成部分
数据仓库
联机分析处理
数据挖掘技术
数据仓库
数据仓库的概念和特性
数据仓库(Data Warehouse)是一个面向主题的(Subject Oriented)、集成(Integrate)的、相对稳定的(Non-Volatile),且随时间变化的(Time Variant)数据集合,支持管理部门的决策过程
关键特征
面向主题
集成的
非易失的
时变的
数据仓库的结构
底层是数据仓库服务器
中间层是OLAP服务器
顶层是前端工具
数据仓库的实现方法
实现步骤
规划
需求研究
数据的抽取清洗成集成装载
数据仓库设计
分析报表查询
数据仓库性能优化
数据仓库的部署发布
推荐方法
以递增、进化的方式实现数据仓库
多维分析海里数据分析器-OLAP
对于TB级的海里数据,联机分析处理-OLAP利用多维的概念,提供了切片、切块、下钻、上卷、和旋转等多维分析和跨维度分析功能
OLAP系统架构主要分为
基于关系数据库的ROLAP(Relational OLAP)
基于多维数据库的MOLAP(Multidimensional OLAP)
基于混合数据库的HOLAP(Hybrid OLAP)
数据挖掘(Data Mining)
从技术上看
数据挖掘是从大量的、不完全的、有噪声的、模糊的、随机的数据中,提取隐含在其中的,事先不知道的、但是又潜在有用的信息和知识的过程
从商业的角度上看
数据挖掘是一种新的商业信息处理技术,从中提取辅助商业决策的关键性数据
主要特点
对大量业务数据进行抽取
转换
模型化
数据挖掘的广义观点
数据挖掘是从存放在数据库、数据仓库或其他信息库中的大量数据中挖掘有趣的知识的过程
数据挖掘与传统的数据分析(查询,报表,联机应用分析)的本质区别
数据挖掘没有明确假设的前提下去挖掘信息、发现知识
数据发掘所得到的信息具有
先知
有效
实用
数据挖掘的功能
数据挖掘的目标是从数据库中发现隐含的、有意义的知识
主要功能
自动预测趋势和行为
关联分析
聚类
概念描述
偏差检测
常用的数据挖掘技术
关联分析
序列分析
分类分析
聚类分析
预测
时间序列分析
数据挖掘的流程
确定挖掘对象
准备数据
建立模型
数据挖掘
结果分析
知识应用
数据挖掘的应用
目前情况的数据挖掘热点
空间数据库的挖掘
多媒体数据库的挖掘
时序数据和序列数据的挖掘
文本数据的挖掘
Web挖掘
应用领域
生物医学
金融业
零售业
视频和音频
科学和统计数据
商业数据挖掘的事例
Intelligent Miner
Enterprise Miner
Mineset
Clementine
DBMiner
常见的数据库管理系统
Oracle
IBM DB2
Sybase
Microsoft SQL Server
计算机网路基础知识
网络概述
概述
计算机网络是指利用通信设备和线路将地理位置分散的功能独立的计算机系统或由计算机控制的外部设备连接起来,在网络操作系统的控制下,按照约定的通信协议进行信息交换,实现资源共享的系统
计算机网络的组成元素
网络节点
通信链路
计算机网络的功能
数据通信
资源共享
负载均衡
高可靠性
网络分类
按通信距离和范围
广域网(WAN)
局域网(LAN)
城域网(MAN)
按信息交换方式
电路交换网
分组交换网
综合交换网
按网络拓扑结构
星形网
树形网
环形网
总线网
按通信介质
双绞线网
同轴电缆网
光纤网
卫星网
按传输带宽
基带网
宽带网
按使用范围
公用网
专用网
按速率
高速网
中速网
低速网
按通信传播方式
广播网
点对点
按使用方式
校园网
企业网
按连接范围
内联网
外联网
按提供的服务
通信网
信息网
开发系统互连参考模型
开放系统
遵从国际标准的,能够通过互连而相互作用的系统
系统之间的相互作用只涉及系统的外部行为,而与系统内部结构和功能无关
国际化标准组织公布了开放系统参考模型
International Standard Organization ISO
OSI/RM
为开放系统互连提供了一种功能结构框架,是一种分层体系结构,参考模型有7层
分层的基本想法是每一层都在它的下层提供的服务基础上提供更高级的增值服务
最高层提供能运行分布式应用程序的服务
分层的方法把复杂的问题分解开了,并保持了层次之间的独立性
7层结构
物理层(physical layer)
数据链路层(datalink layer)
网络层(network layer)
传输层(transport layer)
会话层(session layer)
表示层(presentation layer)
应用层(application layer)
OSI协议集
7层结构相应协议
物理层(physical layer)
802.3
802.4
802.5
FDDI
RS-232
RS-449
X-21
V.35
ISDN
数据链路层(datalink layer)
IEEE 802.2
HDLC
PAP-B
网络层(network layer)
ES-IS
IS-IS
X.25
PLP
CLNP
传输层(transport layer)
TP0
TP1
TP2
TP3
TP4
会话层(session layer)
OSI会话层协议
表示层(presentation layer)
OSI表示层协议
应用层(application layer)
VT
DS<br>
FTMA<br>
CNIP/CMIS<br>
MHS<br>
ANS.1<br>
ACSSE<br>
RTSE<br>
ROSE<br>
CCR
计算机网络
广域网、局域网和城域网
广域网
又称远程网,指覆盖范围广,传输速率相对较低,以数据通信为主要目的的数据通信网
特点
分布范围广
数据传输率低
数据传输可靠性随着传输介质的不同而不同
拓扑结构复杂
广域通信网
公共交换电话网
各种公用数据网
分组交换网
帧中继网
ATM网
移动通信网
广域传输的协议
PPP 点对点协议
DDN
ISDN(综合业务数字网)
FR(帧中继)
ATM(异步传输模式)
局域网
是指传输距离有限,传输速度较高,以共享网络资源为目的的网络系统
特点
分布范围有限<br>
较高的通信带宽<br>
数据传输率高<br>
数据传输可靠误码率低<br>
通常采用同轴电缆或双绞线作为传输介质<br>
拓扑结构简单简洁<br>
网络的控制一般为分布式<br>
通常被单一组织所拥有和使用
局域网使用的拓扑结构
总线拓扑
环型拓扑
星型拓扑
上面三种拓扑的混合型
城域网
规模介于局域网和广域网之间的一种较大范围的高速网络
一般覆盖临近的多个单位和城市,从而接入网络的企业、机关、公司及社会单位提供文字、声音和图像的集成服务
网络拓扑结构
网络中通信线路和节点的几何排序,用以表示整个网络的结构外貌,反应节点之间的结构关系
它影响着整个网络的设计、功能、可靠性和通信费用等重要方面
常用的拓扑结构
总线型
星型
环型
树形
分布式结构
局域网和城域网
国际标准都是IEEE802标准
决定局域网的主要技术有
用以传输数据的传输介质
用以连接各种设备的拓扑结构
用以共享资源的介质访问控制方法
上面三种技术在很大程度上决定了传输数据的类型、网络的响应时间、吞吐率和利用率,以及网络应用等各种网络特性,其中最重要的是介质访问控制方法
介质访问控制协议
在局域网和城域网中,所有的设备都共享传输介质,所以需要一种方法有效的分配传输介质的使用权,这种功能叫做介质访问控制协议
对总线型,星型和树型拓扑结构最适合的介质访问控制协议是CSMA/CD(Carrier Sense Mulitple Access/Collision Detection)
介质访问控制方法
集中式控制
分布式控制
局域网的标准
国际电子电气工程师协会(IEEE)<br>
IEEE 802.3(CSMA/CD,以太网)<br>
IEEE 802.4(Token Bus,令牌总线)<br>
IEEE 802.5(Token Ring,令牌环)<br>
IEEE 802.7(FDDI)<br>
IEEE 802.3u(快速以太网)<br>
IEEE 802.12(100VG-AnyLAN)<br>
IEEE 802.3z(千兆以太网)
无线局域网
Wireless Local Area Networks ,WLAN
在不采用传统缆线的同时,提供以太网或者令牌网络的功能。
与有线网络相比,无线网络的优点
安装便捷
使用灵活
经济节约
易于扩展
IEEE 802.11标准是面向数据的计算机局域网发展而来,网络采用无连接的协议
无线局域网可以在普通局域网基础上通过无线Hub、无线接入站AP、无线网桥、无线Modem及无线网卡来实现
无线局域网的关键技术
红外传输技术<br>
扩频技术<br>
窄带微波技术<br>
调制技术<br>
加解扰技术<br>
无线分集接收技术<br>
功率控制技术<br>
节能技术
无线局域网主要的结构
点对点型
点对多点型
多点对点型
混合型
无线局域网广泛应用的领域
接入网络信息系统
难以布线的环境
频繁变化的环境
使用便携式计算机等可移动设备进行快速网络连接
用于远距离信息的传输
专门工程或高峰时间所需的暂时局域网
流动工作者可得到信息的区域
办公室和家庭办公室(Small Office /Home office,SOHO)用户
需要方便快捷的安装小型网络的用户
网络互联
网络互连的目的是使一个网络的用户能访问其他网络的资源,使不同网络上的用户能够相互通信和交换信息,实现更大范围的资源共享。
网络互连设备的作用是连接不同的网络
根据网络设备工作的协议分为
中继器(repeater)
网桥 (bridge)
路由器 (router)
网关 (gateway)
交换机 (Switch)
网络互连设备
局域网用网桥互连
网关是应用层互连设备
网络层互连的设备是路由器
数据链路层的互连设备有网桥、交换机
物理层互连设备中有中继器和集线器(hub)
网络线路和用户节点连接时需要的是网络传输介质互连设备,如T型头,收发器,RJ-45,RS232接口,DB-15接口,VB35同步接口、网络接口单元和调制解调器等
广域网用路由器互连
传输介质
信号传输的媒介
常用介质
有线介质
双绞线
同轴电缆
光纤等
无线介质
微波
红外线
激光等
局域网组成部件
服务器
客户机
网络设备
通信介质
网络软件
Internet及应用
Internet是世界上规模最大、覆盖最广,最具影响力的计算机互联网络,它将分布在世界各地的计算机利用开发系统互联协议连接在一起,用来进行数据传输、信息交换和资源共享
用户接入Internet 的方式
终端方式
SLPP/PPP方式
专线方式(DDN,FR,ISDN专线,网络电缆直连)
代理服务器方式
TCP/IP
Transmission Control Protocol/Internet Protocol
Internet 的核心协议
主要特性
逻辑编址
路由选择
域名解析
错误检测
流量控制
应用程序的支持
TCP/IP是个协议簇,包含多种协议
TCP/IP分层模型由4个层次构成
应用层
Network file Serve, NFS 协议
Telnet
Simple Mail Transport Protocol, SMTP
File Transfer Protocol , FTP
传输层
网际层
IP协议
Internet Control Message Protocol, ICMP
Address Resolution Protocol,ARP
Reverse Address Resolution Protocol, RARP
网络接口层
Internet 地址
主要用两种书写形式
域名格式
IP格式
域名和IP地址是一一对应的
IP协议版本
IPV4
IPV6
WWW(World Wide Web) 万维网或者称为全球网
是指在Internet上以超文本为基础形成的信息网
采用统一的资源地位器(Uniform Resource Locator ,URL)和图文声并茂的用户界面,可以方便的在浏览Internet上的信息和利用各种网络服务。
互联网常用服务
域名服务(Domain Name Server, DNS)
WWW 服务
E-mail 电子邮件服务
FTP文件传输服务
Telnet远程登录服务
信息查询搜索服务(Gopher等)
网络管理与网络安全
网络管理
网络管理是对计算机网络的配置、运行状态和计费等进行管理
提供了监控、协调和测试各种网络资源以及网络运行状况的手段
还可提供安全字处理和计费等功能
在OSI网络管理标准中定义了网络管理的五大基本功能
配置管理
性能管理
故障管理
安全管理
计费管理
其他功能
网络规划
网络操作人员的管理
计算机网络安全
计算机网络安全是指计算机、网络系统的硬件、软件以及系统中的数据收到保护,不因偶然的或恶意的原因而遭到破坏、更改、泄露,确保系统能连续和可靠的运行,是网络服务不中断。
网络安全从本质上讲就是网络上的信息安全。
信息安全是在分布式计算环境中对信息的传输、存储、访问提供安全保护,以防止信息被窃取、篡改和非法操作。
信息安全的基本要素
保密性
完整性
可用性
真实性
可控性
完整的信息安全保障系统体系包括4个方面
保护
检测
响应
恢复
信息安全术语
密码学
鉴别
Kerberos 鉴别
公钥基础设施
数字签名
访问控制
网络威胁
对网络安全缺陷的潜在利用,这些缺陷可能导致非授权访问,信息泄露,资源耗尽,资源被盗和被破坏等
网络安全威胁的种类
窃听<br>
假冒
重放
流量分析<br>
数据完整性破坏<br>
拒绝服务<br>
资源的非法授权使用<br>
陷门<br>
特洛伊木马<br>
病毒<br>
诽谤
网络安全漏洞
通常,入侵者首先寻找网络存在的安全弱点,然后从缺口处无声无息的进入网络。
因而开发反黑客反击武器的思想是找出现行网络中的安全弱点,演示,测试这些安全漏洞,然后指出应如何堵住安全漏洞。
当前网络安全非常脆弱,主要存在
操作系统
计算机网络
数据库管理系统
这些安全隐患表现在
物理安全性
软件安全漏洞
不兼容使用安全漏洞
选择合适的安全哲理
网络攻击
网络攻击是指任何的非法授权行为。
网络攻击分为
被动攻击
主动攻击
物理临近攻击
内部人员攻击
分发攻击
任何形式的互联网络服务都回导致安全方面的风险,问题是如何将风险降低到最低程度
目前的网络安全措施
数据加密
数字签名
身份认证
防火墙
入侵检测
VPN
虚拟专用网(Virtual Private Network, VPN) 建立在公用网上的,由某一组织或某一群用户专用的通信网络,其虚拟性表现在任意一对VPN用户之间没有专用的物理连接,而是通过(Internet Services Provider, ISP) 提供的公用网络来实现通信。
其专用性表现在VPN之外的用户无法访问VPN内部的网络资源,VPN内部用户之间可以实现安全通信
实现VPN的关键技术
隧道技术(Tunneling)
加解密技术(Encryption & Decryption)
密钥管理技术(Key Management)
身份认证技术(Authentication)
VPN的解决方案
内联网VPN(Intranet VPN)
外联网VPN(Extranet VPN)
远程接入VPN(Access VPN)
网络工程
网络工程师根据用户的需求和具体情况,结合现时的网络技术的发展水平及产品程序,经过充分的需求分析和市场调研,从而确定网络建设方案,依据方案有步骤,有集合实施的网络建设活动。
网络建设步骤
网络规划和网络设计阶段
工程组织和实施阶段
系统运行维护阶段
存储及负载均衡技术
RAID技术
RAID (Redundat Array of Inexpensive Disks) 磁盘阵列
是一种由多块磁盘构成的冗余阵列
使用磁盘阵列的目的
建立数据冗余
增强容错
提高容量
增进性能
RAID 技术主要包含 RAID0-7等规范,和复合RIAD模式 RAID0+1 RAID5+1
在RAID家族中,RAID0和RAID1在个人电脑上得到了广泛的应用
硬件RAID的实现
一般使用SCSI或者IDE/ATA作为硬盘系统的接口
硬件实现方式
内置或集成RAID控制器
外置RAID控制器
软件RAID的实现
除了使用RAID卡或者主板所带的芯片实现磁盘阵列外,在一些操作系统中可以直接利用软件方式实现RAID功能
例如 WINDOWS 2000/xp内置 RAID功能,Linux 用Raidtools来实现RAID功能
网络存储技术
网络存储采用面向网络的存储体系结构,使数据处理和数据存储分离,由专门的系统负责数据处理,存储设备或子系统负责数据的存储
网络存储体系结构
直连式存储(Direct Attached Storage, DAS)
网络连接存储(Network Attached Storage,NAS)
存储区域存储(Storage Area Network, SAN)
负载均衡技术
负载均衡(Load Balance)是由多台服务器以对称的方式组成一个服务器集合,每台服务器都具有等价地位,都可以单独对外提供服务而无须其他服务器的辅助
负载均衡是在现有的网络结构的基础上,通过扩展网络设备和服务器的带宽,来增加吞吐量提升网络的数据处理能力,提高网络的灵活性,可靠性和可维护性,最终的目的是加快服务器的响应速度,从而提高用户的体验度
负载均衡结构
本地负载均衡(Local Server Load Balance)
全局负载均衡(Global Server Load Balance)
负载均衡的实现方法
把大量的并发访问或者数据流量分配到多个设备上分别处理,以减少用户的等待
将单个的重负载的预算分摊到多个设备上并行处理,再将每个设备的运行结果汇总后返回给用户
一个网络的负载均衡,一般从三个角度实现
传输链路的聚合
采用更高层网络交换技术
设置服务器集群
常用的负载均衡技术
操作系统自带的负载均衡服务
基于特定服务器软件的负载均衡
基于DNS的负载均衡
反向代理负载均衡
基于NAT的负载均衡技术
扩展的负载均衡技术
硬件方式
服务器集群技术
集群Cluster 是一组相互对立的服务器在网络中表现单一的系统,并以单一系统的模式加以管理。此单一系统为客户端提供高可靠性的服务,并大幅度提高了服务器的安全性
一个Cluster包含多台(至少两台)拥有一个共同名称,各节点服务器通过一内部局域网相互通讯,集群内任一系统上运行的服务都可被所有的网络客户使用,当一台节点服务器发生故障时,这台服务器上所运行的应用程序将在另一个节点服务器上被自动接管,客户也能很快的自动的连接到新的应用服务器上
多媒体技术及其应用
多媒体技术基本概念
媒体
承载信息的载体又称媒介。
媒体有两种含义
表示信息的载体,如文本、图形、图像、动画、音频和视频等
存取信息的实体,如纸张、磁盘、光盘和半导体存储器等
媒体的种类
感觉媒体
Perception Medium 指人们接触信息的感觉形式
如视觉、听觉、触觉、嗅觉和味觉等
表示媒体
Representation Medium 时指信息的表示形式
如文字、图形、图像、动画、音频和视频等
显示媒体
Presentation Medium 表现和获取信息的物理设备
如输入显示媒体键盘、鼠标器和麦克风等;输出显示媒体显示器、打印机和音箱等
存储媒体
Storage Medium 时存储数据的物理设备
如 磁盘 光盘和内存等
传输媒体
Transmission Medium 传输数据的物理载体
如电缆、光缆和交换设备等
多媒体
多媒体时数字、文字、声音、图形、图像和动画等各种媒体的有机组合,并与先进的计算机、通信和广播电视技术相结合,形成一个可组织、存储、操纵和控制多媒体信息的集成环境和交互系统
多媒体这个术语既指信息表示媒体的多样化,有包括了传播、处理和使用多媒体的各种技术和方法
多媒体技术
多媒体技术是指以数字化为基础,能够对多种媒体信息进行采集、编码、存储、传输、处理和表现,综合处理多种媒体信息并使之建立起有机的逻辑联系,集成为一个系统并能具有良好交互性的技术。
多媒体元素是指多媒体应用中可显示给用户的媒体形式
目前常见的媒体元素
文本
图形
图像
声音
动画
视频图像等
多媒体技术包含
计算机技术
视听技术
通信技术
多媒体技术的特征
多样性
交互性
集成性
实时性
多媒体计算机
多媒体计算机(Multimedia Personal Computer, MPC) 是指能够综合处理多种媒体信息的计算机
MPC = PC+CD-ROM+声卡+显示卡+多媒体操作系统
多媒体数据压缩编码技术
由国际标准化协会、国际电信协会和国际电联领导下,制定了三个有关视频图像压缩编码的国际标准
JPEG
H-261
MPEG
多媒体数据压缩编码的国际标准
静态图像压缩编码的国际标准
JPEG(Joint Photographic Experts Group) 联合图像专家小组标准
JPEG是一种对静态图像压缩的编码算法。
“联合"的含义
国际电报电话咨询委员会(Consulative Committeeon International Telephone and Telegraph, CCITT)
国际标准化协会
静态图像压缩的标准
JPEG
JPEG2000
运动图像压缩标准
MPEG (Moving Picture Experts Group) 运动图像专家组
MPEG 是专门制定多媒体领域内的国际标准的一个组织
MPEG是面向运动图像压缩的一个系列标准
目前有<br>
MPEG-1
MPEG-2
MPEG-4
MPEG-7
MPEG-21
DVI
MPEG的优势
首先,它是作为一个国际化的标准来研究制定的,所以具有很好的兼容性
其次,MPEG能够比其他算法提供更好的压缩比,最高可达200:1
MPEG在提供高压缩比的同时,对数据的损失很小
不存在专利问题,更适合于大力推广
多媒体数据压缩方法分类
无损压缩编码法(Lossless Compresssion Coding),也称冗余压缩法或熵编码法
有损压缩编码法(Loss Compression Coding) 也称 熵压缩法
组合编码(高效压缩编码)
多媒体系统的组成
多媒体的层次结构与计算机系统的机构原则上是相同的。由底层的硬件系统和其上的各层软件系统组成,只是考虑多媒体的特性各层次的内容有所不同。
多媒体系统的层次
多媒体应用软件
多媒体开发工具
多媒体操作系统
多媒体驱动程序
多媒体硬件系统
多媒体硬件
多媒体硬件系统的构成
主机
大中型计算机
工作站
微机
多媒体外部设备接口卡
声卡
视频压缩卡
VGA/TV转换卡
视频捕捉卡
视频播放卡
光盘接口卡
多媒体外部设备
视频音频输入设备
摄像机
录像机
影碟机
扫描仪
话筒
录音机
激光唱盘
MIDI合成器
视频音频输出设备
显示器
电视机
投影器
扬声器
立体声耳机
人机交互设备
键盘
鼠标
触摸屏
光笔
数据存储设备
CD-ROM
磁盘
打印机
可擦写光盘
多媒体软件
多媒体软件系统按功能分为
系统软件
多媒体操作系统
媒体素材制作软件
多媒体函数库
多媒体创作工具与开发环境
多媒体外部设备驱动
驱动器接口程序
应用软件
教育软件
电子图书
系统软件
系统软件是多媒体系统的核心
不仅具有综合使用各种媒体,灵活调度多媒体数据进行媒体的传输和处理能力
而且要控制各种媒体硬件设备协调的工作
应用软件
是在多媒体创作平台上设计开发的面向应用领域的软件系统
通常由应用领域的专家和多媒体开发人员共同协作 配合完成的多媒体应用系统和多媒体产品
多媒体技术的研究内容
数据压缩
在多媒体系统中,由于涉及的各种媒体信息主要是非常规数据类型,这些数据所需要的存储空间是十分巨大的。
多媒体技术必须要解决的技术
采用新技术手段增加存储空间和通信宽带
对数据进行有效的压缩
数据的组织与管理
数据量大,种类繁多,关系复杂是多媒体数据的基本特征
面向对象数据库(Object Oriented Data Base, OODB)和多媒体数据库结合超媒体(hypemedia)技术的应用,为多媒体信息的建模、组织和管理提供了有效方法
多媒体信息的展现和交互
在多媒体环境下、各种媒体并存、视觉、听觉、触觉、味觉和嗅觉媒体信息的综合与合成,各种多媒体的时空安排和效应、相互之间的同步和合成效果,相互作用的解释和描述等都是多媒体领域需要研究和解决的问题
多媒体通信和分布处理
多媒体的分布处理是一个十分重要的研究课题
多媒体信息分布的基本目标
超越时空限制
充分利用信息
协同合作
相互交流
节约时间和经费
虚拟实现技术
所谓虚拟实现就是采用计算机技术生成一个逼真的视觉、听觉、触觉及味觉感等感官世界,用户可以直接用人的技能和智慧对这个生成的虚拟实体进行考察和操纵
虚拟现实包含的三层概念
虚拟现实是用计算机生成的一个逼真实体
用户可以通过人的感官与这个环境进行交互
虚拟现实往往要借助一些三维传感技术为用户提供一个逼真的操纵环境
智能多媒体技术
将具有推理功能的知识库与多媒体数据库结合起来,形成智能多媒体数据库。
智能媒体数据库另一个重要研究课题是多媒体数据库基本内容检索技术,它需要把人工智能领域中的高维空间的搜索技术、视音频信息的特征抽取和识别技术、视音频信息语义抽取问题以及知识工程中的学习、挖掘及退了等问题应用到基于内容的检索技术中
把多媒体信息实时处理和压缩编码算法集成到CPU芯片中
计算机产业的发展趋势应该是把多媒体和通讯的功能集成到CPU中,过去的计算结构设计较多的考虑计算功能,主要用于数学运算和数值处理,随着多媒体技术和网络通讯技术的发展需要计算机具有综合处理声、文、图信息及通讯的功能。
其一,以及多媒体和通讯功能为主,融合CPU芯片原有的计算机功能,它的设计目标是用在多媒体专用设备、家用及宽带通讯设备,可以取代这些设备中的cpu及大量ASIC和其他芯片
其二,以通用CPU计算功能为主,融合多媒体和通讯功能,它们的设计目标是与现有的 计算机系列兼容,同时具有多媒体和通讯功能,主要用在多媒体计算机中
多媒体技术的应用领域
办公自动化
电子出版物
多媒体通信
信息点播(Information Demand)
计算机协同工作(Computer Supported Cooperative Work,CSCW)
教育与培训
商业与咨询
军事与娱乐
军事遥感
核武器模拟
战场模拟
CD
MIDI
VCD
DVD
游戏
系统性能
系统性能是一个系统提供给用户众多性能指标的集合。
硬件性能
软件性能
部件性能
综合性能
系统性能包含4个方面
性能指标
性能指标是软硬件的性能指标集成
在硬件中
计算机
各种通信交换设备
各类网络设备
在软件中
操作系统
协议
应用程序
计算机
对计算机评价的 主要性能指标
时钟频率(主频)
运算速度
运算精度
内存的存储容量
存储器的存取周期
数据处理速率(Processing Data Rate, PDR)
吞吐率
各种响应时间
各种利用率
RASIS特性
可靠性(Reliability)<br>
可用性(Availability)<br>
可维护性(Sericeability)<br>
完整性(Intergraity)<br>
安全性(Security)
平均故障响应时间
兼容性
可扩充性
性能价格比
路由器
设备吞吐量<br>
端口吞吐量
全双工线速转发能力
背靠背帧数
路由表能力
背板能力
丢包率
时延
时延抖动
VPN支持能力
内部时钟精度
队列管理机制
端口硬件队列数
分类业务带宽保证
RSVP
IP Diff Serv
CAR支持
冗余
热插拔组件
路由器冗余协议
网管
基于web的管理
网管类型
带外网管支持
网管粒度
计费能力/协议
分组语音支持方式
语音压缩能力
端口密度
信令支持
交换机
交换机类型、配置、支持的网络类型
最大ATM端口数
最大SONET端口数
最大FDDI端口数
背板吞吐量
缓冲区大小
最大MAC地址表大小
最大电源数
支持协议和标准
路由信息协议(RIP)
RIP2
开放式最短路径优先第二版
边界网关协议(BGP)
无类别域间路由(CIDR)
互联网组成管理协议(IGMP)
距离矢量多播路由协议(DVMRP)
开放式最短路径优先多播路由协议(MOSPF)
协议无关的多播协议(PIM)
资源预留协议(RSVP)
802.1P优先级标记
多队列
路由
支持第三层交换
支持多层
4到7层交换
支持多协议路由
支持路由缓存
可支持最大路由表数
VLAN
最大VLAN数量
网管
支持网管类型
支持端口镜像
Qos
支持基于策略的第二层交换
每端口最大优先级队列数
支持基于策略的第三层交换
支持基于策略的应用级Qos
支持最小/最大带宽分配
冗余
热交换组件
管理卡
交换结构
接口模块
电源
冷却系统
支持端口链路聚集协议
负载均衡
网络
设备级性能指标
网络级性能指标
应用级性能指标
用户级性能指标
吞吐量
操作系统
系统的可靠性
吞吐量
系统响应时间
系统资源利用率
可移植性
数据库管理系统
数据库大小
数据库中表的数量
单个表的大小
表中允许的记录数量
单个记录的大小
表示所允许的索引数量
数据库所允许的索引数量
最大并发事务处理能力
负载均衡能力
最大连接数
Web服务器
最大并发连接数
响应延迟
吞吐量
性能计算
主要方法
定义法
公式法
程序检测法
仪器检测法
常用性能指标的计算过程(Millions of Instructions Per Second, MIPS)的计算方法
峰值计算
等效指令速度(吉普森(Gibosn)法)
在实际应用中,往往是对这些常用性能指标的复合计算,然后通过算法加权处理得到最终结果
性能设计
性能调整
当系统性能降到最基本的水平时,性能调查由查找和消除瓶颈组成
对于数据库系统,性能调整主要包括
CPU/内存的使用状况
优化数据库设计
优化数据库管理
进程/线程状态
硬盘剩余空间
日志文件大小
对于应用系统
应用系统的可用性
响应时间
并发用户数
特定应用的系统资源占用
在开始性能调整之前,必须做的准备工作
识别约束
指定负载
设置性能目标
在建立了性能调整的边界和期望值后,就可以开始调整了
这是一系列重复的数控的性能试验,循环的调整过程为收集,分析、配置和测试
阿姆达尔解决方案
阿姆达尔(Amdahl)定律主要用于系统性能改进的计算中。
阿姆达尔定律是指计算机系统中对某一部件采用某种更快的执行方式所获得的系统性能改变程度,取决于这种方式被使用的频率,或所占总执行时间的频率
阿姆达尔定律定义了采用特定部件所取得的加速比
加速比=不使用增强部件时完成整个任务的时间/使用增强部件时完成整个任务的时间
加速比反映了使用增强部件后完成一个任务比不使用增强部件完成同一个任务加快了多少
加速比主要取决于两个因素
在原有的计算机上,能被改进并增强的部分在总执行时间中所占的比例。这个指称为增强比例,它永远小于等于1
通过增强的执行方式所取得的进步,即如果整个程序使用了增强的执行方式,那么这个任务的执行速度会有多少提高,这个值是在原来条件下程序的执行时间与使用增强功能后的程序执行时间的比
原来的机器使用了增强功能后,执行时间等于未改进部分的执行时间加上改进部分的执行时间
新的执行时间=原来的执行时间*((1-增强比例)+增强比例/增强加上比)
总的加速比等于两种执行时间的比
总加速比=原来的执行时间/新的执行时间=1/((1-增强比例)+增强比例/增强加速比)
性能评估
性能评估是为了一个目的,按照一定的步骤,选用一定的度量项目,通过建模和实验,对一个系统的性能进行各项检测,对测试结果作出解释,并形成一份文档的技术
基准测试程序
常见的4种评价程序,它们的评测的准确度依次递减
真实的程序
核心程序
小型基准程序
合成基准程序
把应用程序中用的最多,最频繁的那部分核心程序作为评价计算机性能的标准程序称为基准测试程序(Benchmark)
分为
整数测试程序(Dhrystone)
浮点测试程序(Linpack)
Whetstone 基准测试程序
SPEC基准测试程序
TPC基准程序
WEB服务器的性能评估
性能指标
最大并发连接数
响应延迟
吞吐量
性能评测方法
基准性能测试
压力测试
可靠性测试
系统监视
系统本身提供的命令
Unix/Linux
W\PS\LAST
WINDOWS
NETSTAT
通过系统记录文件查阅系统在特定时间内的运行状态
集成命令、文件记录和可视化技术
windows 的perfmon应用程序
3.信息系统基础知识
信息化概念
信息的定义
信息是系统有序程度的度量
信息就是信息,不是物质也不是能量
信息是反映事物的形式、关系相差别的东西,它包含在事物的差异中,而不在事物的本身
统一和科学的定义是系统论对信息的概括
即信息是对客观事物变化和特征的反映
是客观事物之间相互作用的联系表征
是客观事物经过感知或认识之后的再现
信息的特征
客观性
信息反映了客观事物的运动状态和方式
客观性即事实性,不符合事实的信息不仅没有价值,而且可能有副作用
普遍性
物质的普遍性决定了信息的普遍存在,因而信息无所不在
无限性
信息是随着时间的变化而变化的,因而使动态的
依附性
信息使客观世界的反映,因而要依附于一定的载体存在,需要有物质的承担者。
信息不能完全脱离物质而独立存在
交换性
信息可以在时间上或空间上从一点传递到另一点
信息在时间上的传递即是存储
在空间上的传递即是转移或扩散
层次性
客观世界是分层次的,反映它的信息也是分层次的
信息可以分为
战略级
管理级
操作级
系统性
信息可以表示为一种集合
不同类别的信息可以形成不同的整体,因而可以形成与现实世界相对应的信息系统
信息化的定义
在国家宏观信息政策指导下,通过信息技术开发、信息产业的发展、信息人才的配置,最大限度的利用信息资源以满足全社会的信息需求,从而加速社会各个领域的共同发展以推进信息社会的过程。
从本质上看,信息化应该是以信息资源开发利用为核心,以网络技术、通讯技术等高科技技术为依托的一种新技术扩散的过程
在信息化过程中,信息技术自身和整个社会都发生着质的变化。信息化不仅仅是生产力的变革,而且伴随着生产关系的重大变革。
信息化的主体是全社会成员,包括政府、企业、事业、团体和个人
信息化的时域是一个长期的过程
信息化的空域是经济和社会的一切领域
信息化的手段是基于现代信息技术的先进社会生产工具
信息化的途径是创建信息时代的先进生产力,推动社会生产关系及社会上层建筑的改革
信息化的目标是使国家的综合实力、社会的文明素质和人民的生活质量全面达到现代化水平
信息化的基础是工业化,现代化,自动化
信息化也是工业化,现代化和自动化向高级阶段发展的必然结果
信息化的内容
信息资源的开发利用
信息资源的开发利用的三个问题
原始信息的采集
使存在的信息在给定时间内获取
使用户获得真正需要的信息
信息化本身就是信息资源的大量开发和利用的过程,因此信息资源使信息化的源泉
信息网络的全面覆盖
信息网络是信息资源开发和利用的基础设施,是信息传输、交换和共享的必要手段
只有建设先进的信息网络才能充分发挥信息化的整体效益
信息网络包括
计算机网络
电信网
电视网等
信息网络在国家信息化的过程中将逐步实现三网融合,最终做到三网合一
信息技术的广泛应用
信息技术的应用是指把信息技术广泛应用于经济和社会的各个领域,这是信息化的基础
信息技术的应用时国际信息化中十分重要的要素,它直接反映了效率 效果和效益
信息产业的大力发展
信息产业时信息化的物质基础
信息产业包括
微电子
计算机
电信产品的技术 开发 生产销售
软件 信息系统的开发
电子商务
从根本上来说,国家信息化只有在产品和技术方面拥有雄厚的自主知识产权,才能提高综合国力
信息化人才的培养
高素质的人才队伍和合理的人才结构时信息化建设能否取得成功的关键所在
合理的信息化人才结构要求不仅要有各个层次的信息化技术人才,还要有精干的信息化管理人才、营销人才、法律人才和情报人才
信息化政策法规和标准规范建设
信息化政策法规和标准规范时国家信息化快速、有序、健康和持续发展的保障
主要包括
电子商务交易
知识产权保护
信息资源管理
网络安全
信息管理
安全认证
信息化的经济社会意义
信息化促进全球化的发展
信息技术产品贸易直接促进世界商品贸易的增长
信息技术促进服务贸易的发展
信息技术为跨国公司的投资、贸易活动提供便利
信息技术促进金融全球化和全球金融市场的形成
信息化极大促进了经济的增长
促进经济结构转变与产业结构高级化
信息和知识作为经济增长的内在因素,作为增长内在的源泉来促进经济的增长
信息化引发社会生活生活全面变革
随着全球信息化的进程的不断推进,信息技术和信息经济正逐渐成为经济增长和社会进步的主要力量
信息化时一项复杂的庞大的系统工程,既涉及信息技术和信息资源本身、也涉及政治体制、经济模式、生活方式、文化传统、人的思维方式和行为等内容
信息化将是推动社会进步与发展的第三次浪潮
信息化对国际关系产生了深刻影响
信息化的发展不仅促进了国与国之间的联系
同时也改变了国家力量对比并加速多极化格局的形成
信息化对组织的意义
社会学认为最具有代表性的4种组织类型
政府
企业
社团
家庭
信息化对家庭的意义比较单纯,主要是信息消费的方式、内容、价值等的变化
信息化对政府、企业、社团的意义
组织结构的创新
一个组织的结构如何进行运作往往是由信息的获取、处理、存储和传递方式、手段和效率决定的
由于信息化引发的组织创新到处可见,如,虚拟企业、虚拟社区等
组织管理创新
信息化管理软件大大提升了管理水平
企业应用(Enterprise Resource Planning, ERP)
Customer Relationship Management ,CRP
政府实施电子政务
建立电子政府
社会团体建立电子社团
组织经营创新
在信息化环境下,比较易于做到使经营和管理融为一体,从而提高组织的核心竞争力
造就信息化的人才队伍
人才信息化的含义
要造就一支信息化的人才队伍,包括有
计算机技术人才
网络技术人才
通信技术人才
操作人才
要有一批通晓本职业务,并能熟练进行信息系统操作的业务人才
要足够多的同时精通信息技术和经营管理专业的复合型、专家型人才
信息化的需求
组织对信息化的需求使组织信息化的原动力,它决定了组织信息化的价值取向和成果效益水平
组织信息化需求的层次性
战略需求
组织信息化的目标是提升组织的竞争力,为组织的可持续发展提供一个支持环境
从某种意义上来说,信息化对组织不仅仅是服务的手段和实现现有战略的辅助工具
信息化可以把组织战略提升到一个新的水平,为组织带来新的发展契机
特别是对于企业,信息化战略是企业竞争的基础
运作需求
组织信息化的运作需求是组织需求非常重要且关键的一环
包含三个方面
实现信息化战略目标的需要
运作策略的需要
人才培养的需要
技术需求
由于系统开发时间过长等问题在信息技术层面上对系统的完善、升级、集成和整合提出了需求
也有的组织,原来基础上没有大型的信息系统项目,有的也是一些单机应用,这样的组织的信息化需求,一般是从头开发新的系统
组织信息化需求的系统性
一个组织就是一个复杂的系统
组织的各层次的信息化需求之间存在着有机的内在联系
各层次信息化需求之间的逻辑关系
因果关系
依赖关系
主辅关系
协同关系
实现组织信息化的资源
人力
物力
财力
时间
精力
一个组织的信息化应该遵循,总体规划,分步实施的原则
信息化的战略
到2020年,我国信息化发展的战略目标
综合信息基础设施基本普及
信息技术自主创新能力显著增强
信息产业结构全面优化
国家信息安全保障水平大幅提高
国民经济和社会信息化取得明显成效
新型工业化发展模式初步确立
国家信息化发展的制度环境和政策体系基本完善
国民信息技术应用能力显著提高
为迈向信息社会奠定坚实基础
我国信息化发展的九大战略重点
推进国民经济信息化
推行电子政务
建设先进网络文化
推进社会信息化
完善综合信息基础设施
加强信息资源的开发利用
提高信息产业竞争力
建设国家信息安全保障体系
提高国民信息技术应用能力,造就信息化人才队伍
信息系统工程总体规划
系统规划是指根据组织的战略目标和用户提出的需求,从用户的现状出发,经过调查对所要开发管理信息系统的技术方案、实施过程、阶段划分、开发组织和开发队伍、投资规模、资金来源及工作进度,用系统的、科学的、发展的观点进行全面规划
信息工程总体规划的目标范围
在进行系统规划时,一般应对现行系统进行以下工作
创造性分析
creative analysis
对现存问题采用新的方法进行调查分析
批判性分析
critical analysis
毫无偏见地仔细询问系统中各组成部分是否有效益或效率
是否已超越手工作业系统地自动化
询问用户地陈述和假设,选择合理地解决方法
查清及分析有冲突地目标和发展方向
其目标是
从整体上把握管理信息系统地开发,有利于集中全部资源优势,使其得到合理配置与使用
使开发地目标系统与用户建立良好地关系
促进管理信息系统地开发与深化
作为系统开发的标准
促使管理人员回顾过去的工作,发现可以改进的薄弱环节
信息系统工程总体规划的内容包括
组织的战略目标、政策和约束、计划和指标分析
新的管理信息系统的目标、约束、计划和指标分析、功能结构、组织运行和管理效益分析和规划
组织的外部环境与管理现状调查
用户的需求调查与分析
新的管理信息系统的描述
新的管理信息系统的运行环境
新的管理信息系统的资源选型
新的管理信息系统的开发计划
信息系统工程总体规划的方法论
关键成功因素法
Critical Success Factors, CSF
在现行系统中,总存在着多个变量影响系统目标的实现,其中若干因素是关键的和主要的即关键成功因素
通过对关键成功因素的识别,找出实现目标所需要的关键信息集合,从而确定系统开发的优先次序
关键成功因素来自于组织的目标,通过组织的目标分解和关键成功因素的识别、性能指标识别,一直到产生数据字典
识别关键成功因素,就是要识别联系于组织目标的主要数据类型及其关系,不同组织的关键成功因素不同,不同时期的关键成功因素也不同。当在一个时期内的关键成功因素解决后,新的识别关键成功因素又开始了
关键成功因素法能抓住主要矛盾,使目标的识别突出重点。
该方法有利于确定企业的管理目标
战略目标集转化法
Strategy Set Transformation,SST
把整个战略目标看成是一个信息集合,由使命、目标、战略组成,管理系统的规划过程即是把组织的战略目标转变成为管理信息系的战略目标的过程。
战略目标集转化法从另一个角度识别管理目标,它反映了各种人的要求,而且给出了按这种要求的分层,然后转化为信息系统目标的结构化方法。它能保证目标比较全面,疏漏较少,但它在突出重点方面不如关键因素法
企业系统规划法
Business System Planning, BSP
信息支持企业运行
通过自上而下的识别系统目标,企业过程和数据,然后对数据进行分析,自下而上的设计信息系统
该管理信息系统支持企业目标的实现,表达所有管理层次的要求,向企业提供一致性信息,对组织机构的变动具有适应性
企业系统规划法,虽然也首先强调目标,但它没有明显的目标导引过程,它通过识别企业过程引出了系统目标,企业目标到系统目标的转化是通过企业过程/数据类等矩阵的分析得到的
其他
企业信息分析与集成技术
产出/方法分析
投资回收法
征费法(chargout)
零线预算法
阶石法
信息系统工程总体规划的软件架构组成
文件服务器架构
文件服务器架构是一种基于局域网的方案,其中服务器仅仅装载了数据层,系统应用的其他层都在客户端实现
典型的客户/服务器两层架构
在这种架构中,数据和数据处理放在服务器上,而应用领域、表现逻辑和表现层放在客户端。
充分挖掘使用了客户端的计算能力,并使数据库维护方便,其他客户端可同时使用同一表和数据库的其他记录,大大降低网络流量。
但是应用逻辑必须在所有客户端进行复制、维护等操作,客户端必须健壮
而且,数据库由众多程序直接访问,导致数据库的安全性和完整性难以维护
客户/服务器N层架构
客户/服务器N层架构就是在客户端和服务器之间加入一层或者多层的应用服务器程序(应用服务器)
开发人员把应用的业务逻辑和用户界面分开,将业务逻辑放在经过合理任务划分与物理部署后的中间层应用服务器上,客户程序通过中间层间接地访问数据库,客户端地修改不影响服务器端,客户程序可以充分扩展
如果需要修改应用程序代码,只需要对中间层应用服务器修改,而不用修改客户端应用。
好处
开发人员更专注于应用系统核心业务逻辑地分析与设计等工作
简化了应用系统地开发更新
整个系统的可扩展性、数据的安全性等显著增强
更好的支持对企业业务逻辑的集中控制与管理
基于web的架构
基于web架构是松散耦合的,能够在不同的网络及操作系统中运行,并能方便的扩充到相关企业和最终用户
把数据表现层逻辑从客户端分离出来部署在web服务器上。用事务逻辑部署在应用服务器上,数据处理逻辑和数据本身部署在数据服务器上。
这架构以服务器为中,客户端瘦小,简单,容易在运行时实现自动升级;应用事务层可在异构的平台的客户端上共享;分离不同的逻辑构件,并采用中间件技术,使得人机交互设计人员、事务逻辑开发人员可以独立的设计和维护他们各自的部分,同时增强应用系统的动态适应性
总体规划的实现过程
按总体规划报告购置和安装计算机网络系统
建立数据库系统
程序设计
结构化程序设计方法
原型方法
面向对象的方法
系统转换
运用某一种方式由新的系统代替旧的系统的过程
试运行
系统正式运行的前期准备工作,同时也是系统调试工作的延续
信息化的典型应用
政府信息化与电子政务
电子政务的概念
电子政务实质上时对现有的、工业时代形成的政府形态的一种改造,即利用信息技术和其他相关技术,将其管理和服务职能进行集成,在网络上实现政府组织结构和工作流程优化重组,超越时间、空间与部门分隔的制约,实现公务、政务、商务、事务的一体化管理与运行。
电子政务的发展过程实质上是对原有的 政府形态进行信息化改造的过程,通过不断地摸索和实践,最终构造出一个与信息时代相适应的政府形态
电子政务主要包括
政府部门内部电子化和网络化办公
政府部门之间通过计算机网络进行的信息共享和实时通信
政府部门通过网络与居民之间进行的双向信息交流
电子政务的内容
在社会中,与电子政务相关的行为主体主要有三个
政府
企业,事业单位
居民
政府的业务活动
政府与政府 G2G
政府间的互动
政府的各个部门之间、政府与公务员与其他政府工作人员之间的互动
中央政府与各级地方政府之间
首脑机关与中央和地方政府组成部门之间的互动
政府内部的政务活动
国家和地方基础信息的采集、处理和利用
政府之间各种业务流所需要采集和处理的信息
政府之间的通信系统
政府内部的各种管理信息系统
各级政府的决策支持系统和执行信息系统
政府对企业事业 G2B
政府面向企业的活动
政府向企业事业单位发布的各种方针、政策、法规、行政规定,即企业事业单位从事合法业务活动的环境
政府向企业事业单位颁发的各种营业执照、许可证、合格证和质量认证
政府对居民 G2C
政府对居民的活动实际上是政府面向居民所提供的服务。
政府对居民的服务首先是信息服务,让居民知道
政府的规定是什么
办事程序是什么
主管部门在哪里
各种关于社区公安和水火天灾等于公共安全有关的信息
政府向居民提供的各种服务
户口、各种证件和拍照的管理
各种公共部门服务信息
企业对政府 B2G
企业对政府的活动
向政府缴纳各种税款
按政府要求应该填报的各种统计信息和报表
参加政府的各项工程的竞、投标
向政府供应各种商品和服务
就政府如何创造良好的投资经营环境,如何帮助企业发展等提出企业的意见和希望
反映企业在经营活动中遇到困难
提出可供政府采纳的建议
向政府申请可能提供的援助
居民对政府 C2G
居民对政府的活动
个人应向政府缴纳的各种税款和费用
按政府要求应该要填报的各种信息和表格
以及缴纳各种罚款
居民参政,议政
报警服务
电子政务的技术形式
电子政务在世界范围内的发展的主要特征
以互联网为基础设施,构造和发展电子政务
就电子政务的内涵而言,更强调政府服务功能的发挥和完善
电子政务发展经历的阶段
起步阶段
政府信息网上发布是电子政务发展起步阶段较为普遍的一种形式
大体上是通过网站发布与政府有关的各种静态信息,如法规、指南、手册、政府机构、组织、官员和通信联络等
政府与用户单向互动
在这个阶段,政府除了在网上发布与政府服务项目有关的动态信息之外,还向用户提供某种形式的服务
政府与用户双向互动
在这个发展阶段,政府与用户可以在网上完成双向的互动
网上事务处理
以电子方式实实在在的完成了一项政府业务的处理
电子政务的应用领域
电子政务的应用结构
面向社会的应用
政府通过自己的网站向社会发布信息,为社会公众提供查询服务
面向社会的各类信访、建议、反馈以及数据收集和统计系统
各类公共服务性业务的信息发布和实施
面向社会的各类项目的申报、申请
相关文件、法规的发布
政府部门之间的应用
各级政府间的公文信息审核、传递系统
各级政府间的多媒体信息应用平台
同级政府间的公文传递、信息交换
政府部门内部的各类应用系统
政府内部的公文流转、审核、处理系统
政府内部的各类专项业务管理系统
政府内部面向不同管理层的统计、分析系统
涉及政府部门内部的各类核心数据的应用系统
机要、秘密文件及相关管理系统
领导事务管理系统
涉及重大事件的决策分析、决策处理系统
涉及国家重大事务的数据分析、处理系统
政府电子化采购
政府的电子商务
电子社区
城市社区管理中信息手段的应用
企业信息化与电子商务
企业信息化的概念
企业信息化就是企业利用现代信息技术,通过信息资源的深入开发和广泛利用,实现企业生产过程的自动、管理方式的网络化、决策支持的智能化和商务运营的电子化,不断提高生产、经营、管理、决策的效率和水平,进而提高企业经济效益和企业竞争力的过程
信息技术在企业内的应用
在空间上是一个从无到有,由点到面的过程
在时间上具有阶段性和渐进性
信息化的核心和本质是企业运用信息技术,进行知识的挖掘和编码,对业务流程进行管理
企业信息化的实施
一是自上而下,必须与企业的制度创新、组织创新和管理创新的结合
二是自下而上,必须作为企业主体的业务人员的直接受益和使用水平逐步提高为基础
企业信息化的目的
具体目标
是优化企业业务活动使之更加有效
根本目的
在于提高企业竞争能力,使企业具有平稳和有效的运作能力,对紧急情况和机会做出快速反应,为企业内部外部用户提供有价值的信息
革新
技术创新
现实情况
我国企业能够拥有并掌握 的技术创新成果甚少,相关信息闭塞
又有大量的技术开发成果被沉淀和搁置,造成惊人的浪费
必须运用信息技术,通过在生产工艺设计、产品设计中计算机辅助设计系统的应用,通过互联网及时了解和掌握创新的技术信息,才能加快技术向生产的转化
生产技术与信息技术相结合,能够大幅度地提高技术水平和产品地竞争力
管理创新
要对企业现有地管理流程重新整合
从作为管理核心的财务、资金管理,转向技术、物资、人力资源的管理
并延伸到企业技术创新、工艺设计、产品设计、生产制造过程的管理
进而扩展到客户关系管理、供应链的管理
乃至发展到电子商务
实现上面的这些目标,就必须借助于信息技术,发挥计算机的信息采集,存储功能和网络的传递与共享功能
制度创新
在建设现代企业制度的过程中,信息化起着重要的作用
通过计算机网络系统管理,建立起明确的岗位责任和精准的监管体系
借助互联网获取全面、系统、及时的信息,彻底改变企业一直沿用的计划经济体制的资源分配方式和管理方式,注重市场信息的分析和研究,提供准确及时的决策信息
应用科学的方法实施管理
企业信息化的规划
企业信息化一定要建立在企业战略规划基础之上,以企业战略规划为基础建立的企业管理模式是建立的企业管理模式是建立企业战略数据模型的依据
企业信息化就是技术和业务的融合
融合的实现
企业战略层面
在规划中必须对企业的目前业务策略和未来的发展方向作深入分析。
通过分析,确定企业的战略对企业内外部供应链和相应管理模式,从中找出实现战略目标的关键要素,分析这些要素与信息技术之间的潜在关系
从而确定信息技术应用的驱动因素,达到战略上的融合
业务运作层面
针对企业所确定的业务战略,通过分析获得实现这些目标的关键驱动力和实现这些目标的关键流程
关键流程的分析和确定要根据他们对企业的价值产生过程中贡献程度来确定
关键的业务需求是从那些关键的业务流程分析中获得的,它们将决定未来系统的主要功能。
信息系统如果能够与这些直接创造价值的关键业务流程相融合,这对信息化投资回报的贡献是非常巨大的,也是信息化建设的成败的一个衡量指标
管理运作层面
虽然这一层面从价值链的角度上来说,属于辅助流程,但它对企业日常管理的科学性、高效性是非常重要
在企业战略层面的分析中,我们可以获得适应企业未来业务发展的管理模式,这个模式的实现是离不开信息技术的支撑的。
所以,在管理运作层面的规划上,除了提出应用功能的需求外,还必须给出相应的信息技术体系,这些将确保管理模式和组织架构适应信息化的需求
企业战略数据模型
数据仓库模型
数据仓库模型则描述企业高层决策者所需信息及关系
数据库模型
数据库模型用来描述日常事务处理中数据及其关系
企业信息化方法
业务流程重构方法
利用信息技术和网络技术,对企业的组织结构和工作方法进行 彻底的 根本性的 重新设计,以适应当今市场发展和信息社会的需求
核心业务应用方法
围绕核心业务应用计算机技术和网络技术是很多企业信息化成功的秘诀
信息系统建设方法
对大多数企业来说,建设信息系统是企业信息化的重点和关键。
主题数据库方法
主题数据库就是面向企业业务的主题的数据库,也就是面向企业的核心业务的数据库
资源管理方法
常见系统
ERP Enterprise Resuorce Planning 企业资源规划
SCM Supply Chain Management 供应链管理
人力资本投资方法
人力资本的概念是经济学理论的发展产物
人力资本与人力资源的主要区别是人力资本理论把一部分企业的优秀员工看做是一种资本,能够取得投资效益
人力资本投资方法特别适用于那些依靠智力和知识而生存的企业
企业资源规划的结构和功能
ERP的概念
企业的所有资源
物流
资金流
信息流
ERP也就是对这三种资源进行全面集成管理的管理信息系统
概括的说,ERP是建立在信息技术基础上,利用现代企业的先进管理思想,全面集成了企业的所有资源信息,并为企业提供决策、计划、控制与经营业绩评估的全方位和系统化的
ERP系统是一种管理理论和管理思想,不仅仅是信息系统
ERP利用企业的所有资源,包括内部资源和外部市场资源,为企业制造产品或提供服务器或提供服务创造最优的解决方案,最终达到企业的经营目标
ERP理论与系统是由MRP-II发展而来的。MRP-II的核心是物流,主线是计划,但是ERP已将管理的重心转移到财务上,在企业整个经营运作过程中贯穿了财务成本控制的概念
ERP极大的扩展了业务管理的范围及深度,包括
质量
设备
分销
运输
多工厂管理
数据采集接口等
ERP的管理范围涉及企业的所有供需过程,是对供应链的全面管理
企业运作的供需链结构
物流
物流流入
物流过程
物流流出
市场
供应市场
采购
加工
销售
需求市场
资金流
资金流出
资金流过程
资金流入
信息流
物流过程的信息流
资金流过程的信息流
ERP的结构
生产预测
市场需求是企业生产的基础,在ERP中首先需要对市场进行较准确的预测,预测主要用于计划。
常用的预测方法
德尔菲(Delphi)方法
移动平移法
指数平滑法
非线性最小二乘曲线拟合法
销售管理(计划)
销售管理主要针对企业的销售部门的相关业务进行管理
销售管理从其计划角度来看,属于最高层计划的范畴,是企业最重要的决策层计划之一
经营计划(生产计划大纲)
生产计划大纲(Production Planning , PP)
生产计划大纲是根据经营计划的生产目标制定的,是对企业经营计划的细化,用以描述企业在可用资源的条件下,在一定时期中的产量计划
生产计划大纲在企业决策层的三个计划中有承上启下的作用
一方面它是企业经营计划和战略计划的细化
另一方面它又用于指导企业编制主生产计划,指导企业又计划的进行生产
主生产计划
主生产计划(Master Production Schedule, MPS)
主生产计划是对企业生产计划大纲的细化,说明在一定时期内的计划
生产什么
生产多少
什么时候交货
主生产计划的编制以生产计划大纲为准,其汇总结果应该等同于生产计划大纲,同时主生产计划又是其下一层计划-物料需求计划的编制依据
物料需求计划
物料需求计划是对主生产计划的各个项目所需的全部制造和全部采购件的网络支持计划和时间进度计划。
根据主生产计划对最终产品的需求量和交货期,推导出构成产品的零部件及材料的需求数量和需求时期,再导出自制零件的制作订单下达日期和采购件的采购订单发送日期,并进行需求资源和可用能力之间的进一步平衡。
物料需求计划是生产管理的核心,它将主生产计划安排生产的产品分解成各自零部件的生产计划和采购件的采购计划
物料需求计划属于ERP管理层计划
能力需求计划
能力需求计划(Capacity Requipment Planning , CRP)
能力需求计划是对物料需求计划所需能力进行核算的一种计划管理方法
目的在于通过分析比较 MRP 的需求和企业现有生产能力,及早发现能力的瓶颈所在,为实现企业的生产任务而提供能力方面的保障
车间作业计划
车间作业计划(Production Activity Control ,PAC)
车间作业计划是在MRP所产生的加工制造订单(即自制零部件生产计划)的基础上,按照交货期的前后和生产优先级选择原则以及车间的生产资源情况(如设备、人员、物料的可用性、加工能力的大小等)将零部件的生产计划以订单形式下达给适当的车间
当前主流的车间作业计划模式是(JIT,just in time)模式
车间作业计划属于ERP执行层计划
采购与库存管理
采购与库存管理是ERP的基本模块,其中采购模块是对采购工作--从采购单产生至货物收到的全过程进行组织、实施与控制。
库存管理(Inventory Management,IM)
库存管理模块是对企业物料的进、出、存进行管理
质量与设备管理
质量管理贯穿于企业管理的始终。
全面质量管理(Total Quality Management, TQM)
全面质量管理的主要实施模式,它要求对企业的全过程进行质量管理,而且明确指出执行质量职能是企业全体人员的职责
设备管理 是指依据企业的生产经营目标,通过一系列的技术、经济和组织措施,对设备寿命周期的所有设备物资运动形态和价值运动形态进行的综合管理
财务管理
会计工作是企业管理的重要组成部分,是以货币的形式反映和监督企业的日常经济活动,并对这些经济活动的数据进行分类、汇总,以便为企业管理和决策提供必要的信息支持。
企业财务管理是企业会计工作和活动的统称
财务管理是一个综合性的管理,它渗透在企业全面的经济活动中。
ERP 有关扩展应用模块
客户关系管理
分销资源管理
供应链管理
电子商务等
ERP的功能
支持决策的功能
ERP在MRP-II的基础上扩展了管理范围,给出了新的结构
将企业内部业务流程划分成几个相互协同作业的支持子系统
财务
市场营销
生产制造
质量管控
服务维护
工程技术
并在功能上增加了
质量控制
运输
分销
售后服务
市场开发
人事管理
把企业的制造系统,营销系统、财务系统等紧密结合在一起,可以实现全球范围内的多工厂、多地点的跨国经营运作,因而能够不断收到来自各个业务过程的运作信息,并且提供了对质量控制、市场变化、客户满意度、经营绩效等关键问题的实施分析,从而有力地支持企业的各个层面上的决策
为处于不同行业的企业提供又针对性的IT解决方案
ERP 打破了 MRP-II只局限在传统制造业的格局,把应用扩展到其他行业,并逐渐形成了针对于某种行业的解决方案。
以财务、人事、后勤等功能为核心,加入每一行业的特殊的需求
从企业内部的供应链发展为全行业和跨行业的供应链
当前企业只有联系该行业中其他上下游企业,建立一条业务关系紧密、经济利益相连的供应链实现优势互补,才能适应社会化大生产的竞争环境,共同增强市场竞争实力。
ERPD的管理范围由企业的内部拓展到整个行业的原材料供应,生产加工,配送环节,流通环节,以及最终消费者
客户关系管理在企业的应用
CRM的概念
客户关系管理(Customer Relationship Management, CRM)
客户关系管理是涵盖构建良好客户关系所应具备所有要素的一门科学
从管理科学角度,CRM源于市场营销理论
从解决方案角度,CRM是将市场营销的科学管理理念通过信息技术的手段集成在软件方面,得以全球大规模的普及和应用
CRM主要包括的内容
提供的信息要有利于更好的理解客户
流程管理要为客户提高效率、适当的体验
允许员工使用以上知识的软件
培训并改变管理要素,使员工和企业了解并且有能力提供那些构建强有力关系,提高客户忠诚度的体验
CRM的目的是提高收入
CRM的核心思想就是以客户为中心
CRM的背景
管理理念的更新
互联网催生了许多新的营销管理理念
数据库营销
关系营销
一对一营销
市场需求的拉动
随着时代的发展市场的主动权转移给了客户,企业只有赢得客户才能赢得市场
越来越多的企业要求销售于服务的日常业务自动化和科学化,这是客户关系管理应运而生的需求基础
信息技术的推动
通过先进的管理理念和软件不仅能够彻底改变企业的管理和运营模式,也直接影响到企业竞争力的强弱
CRM的内容
CRM是一套先进的管理思想及技术手段,通过将人力资源,业务流程与专业技术进行有效的整合,最终为企业涉及到客户或者消费者的各个领域提供了完美的集成,使得企业可以更低成本,更高效的满足客户需求,并于客户建立基于学习性关系基础上的一对一营销模式
主要模块
销售自动化
销售自动化(Sales Force Automation ,SFA)
销售自动化是CRM中最基础的模块
SFA主要是提高专业销售人员的大部分活动的自动化程度
主要功能包括
日历和日程安排
联系和客户管理
定价
区域划分
费用报告
信息源主要包括
目录和价格
购买记录
服务记录
存货情况
促销文本资料
信用记录
营销自动化
营销自动化 (Marketing Automation , MA)
营销自动化模块是对销售自动化的补充
为营销提供的功能
营销活动计划的编制和执行
计划结果的分析
集成的信息源包括
客户商业智能信息
产品信息
营销百科全书
提供了全面营销信息的仓库
包括
成品
技术特点
各种文本宣传资料
产品使用手册
目标
不局限于提高销售人员活动的自动化程度
为营销及其相关活动的设计、执行和评估提供详细的框架
客户服务与支持
客户关怀
纠纷、订货、订单跟踪<br>现场服务<br>问题及其解决方法的数据库<br>维修行为安排和调度<br>服务协议和合同<br>服务请求管理等
商业智能
利用数据挖掘、知识发现等技术分析
挖掘结构化、面向特定领域的存储与数据仓库的信息
商业智能的范围
客户
产品
服务
竞争者
商业智能是指客户智能(customer intelligence)
CRM的解决方案和实施过程
到目前为止CRM尚未有成型的理论出现,但与此同时,各厂商对CRM系统认识上有一致性又使他们的解决方案存在一定的共同之处
国内外CRM产品一般都具有以下几点
通常都支持电子商务销售方式
CRM的基本构成通常包括4个部分
销售管理
对销售队伍
销售机会
销售业务的管理
市场管理
对市场的设定、追踪和分析总结
服务管理
对服务器信息的支持
日程的安排
服务活动的监控
知识库
现场服务管理
为游离于企业之外的现场服务人员利用移动设备检索服务的安排以及关于产品、客户等与服务有关的信息
CRM的辅助构成
电子商务支持CRM系统,不仅提供电子商务接口,还全面开发电子商务
呼叫中心支持由合作的硬件厂商参与并提供全套设备,而不仅仅是提供支持呼叫中心的应用软件
对移动设备的支持
CRM系统除了组成部分的需求外,还需要技术上实现其特有的一些功能
信息分析能力
对客户互动渠道进行集成的能力
支持网络应用的能力
建设集中的信息客户信息仓库的能力
对工作流进行集成的能力
与ERP功能的集成
实施客户关系管理
寻找正确的客户
提供正确的产品和服务
在正确的时间和客户接触
利用正确的渠道为客户提供服务
成功实施CRM的8个战略阶段
分析与规范
确定一个综合性的需求分析
确定项目范围和系统规范
项目计划和管理
项目实施计划在这一阶段得以制定
供应商项目管理者应是供应商与企业之间的沟通点
还需要任命一名来自企业的系统管理员,作为内部系统的专家
组建和培训项目工作组
将投资回报率进行量化,以有效地衡量新系统带来地投资效益
系统配置与修改
在本阶段,CRM系统将得到配置和修改,以适应具体地商业需要
经特殊调整地系统必须伴随技术培训,使员工能尽量地解决自己技术问题
所有新的软硬件都应在本阶段完成
对系统进行的所有必要的修改都在此阶段完成
原型、兼容测试和系统重复运行
本阶段包括系统原型的建立和测试
企业员工将在此阶段熟悉安装程序和所安装系统的方方面面
数据转换
供应商的实施专家和本公司的MIS人员之间将进行大量的沟通
主导系统和质量保证测试
这一阶段包含大量的测试,让公司的员工来培训员工如何使用CRM系统
培训所有终端用户和管理层如何使用系统
培训者’必须接受软件供应商进行的培训,成为新系统的专家
开始应在小型用户进行新系统的测试,由企业员工参与的对新系统进行测试的质量保险测试应制成文档,提供给项目工作组管理人员
最后实施和推广
这是一个行动阶段,是新系统的最终实施阶段
应准备好一份实施指南,简单列出实施前或者实施过程中必须完成的每一项任务
对所有用户的正规培训
用户必须认识到使用新系统的即时和明显的好处
培训必须以计划阶段确定的需要为基础
培训必须以计划阶段确定的需要为基础
一个执行良好的培训计划决定着成败
持续支持
对系统的持续支持需要公司配备至少一名以上全职的内部系统管理员,这样可以保证技术上自给自足的灵活性
<span class="node-type dot"></span><div class="node-title" spellcheck="false" autocapitalize="off">系统管理员应从计划阶段就开始接触CRM系统。</div>
务必让供应商提供综合性的支持计划,对内部工作组也要进一步补充和完善
系统的持续管理
CRM系统基础设施一定要提供业绩管理衡量标准
该系统必须有效的获取适当的数据,为接触的每个个体提供途径
CRM的价值
CRM作为一个经营理念,它在企业范围内的实践最终是为了实现企业所制定的经营目标
价值
提高内部员工的工作效率,节省日常开支
投资回报指标(Return over Investment, ROI)
提高客户满意度
提高客户忠诚度
企业门户
企业门户的功能
个性化
应该具有定做用户工作区和外观的能力
门户个性化功能包括
演示个性化
个性化的信息过滤
个性化的用户配置
演示功能
对信息进行组织并简化信息消费流程是门户的首要目标
一个高效门户的第二个目标就是显示方式要尽可能地直观,让用户易学、易用
知识及内容的创建与管理
已用户为基础进行内容创建和发布
搜索和检索
全文本搜索
允许在全部信息资源中进行搜索
根据主体进行搜索
对信息进行分类搜索
元数据管理和分类
门户运用各种不同地技术来进行信息及其资源地组织分类工作,并用元数据定义企业内部的通用语言,通过使用元数据,信息的含义不再模棱两可或者混乱不堪
查询/报告和分析
数据管理和应用集成
门户产品利用各种工具对已有的应用程序及信息资源进行整合,通过实现信息管理和信息访问的功能使门户成为访问企业IT环境的中心入口
人们期望使用统一的视图整合所有的事件,不管这些事件使结构性数据还是无结构数据,是过程还是程序
文档管理
协同和信息共享/知识汲取及索引
虚拟社区
流程支持
把商务流程和工作流技术相融合以支持企业的运营将是门户可以提供的另一个强大功能
商业功能/垂直市场应用程序
集中式目录支持和门户管理
为了加强目录的管理和安全控制,许多企业采用了简便目录访问协议结构(Lightweight Directory Access Protocol ,LDAP)
安全功能
企业门户的分类
企业信息门户
Enterprise Information Portal, EIP
企业信息门户重点强调的是为访问结构数据和无结构数据提供给统一的入口,它强调对结构化与非结构化数据的收集、访问、管理和无缝集成。
企业信息门户的目的是通过一个个性化、集中式的信息浏览手段,是企业员工,合作伙伴、客户、供应商都能够访问企业内部网络和因特网存储的各种自己所需信息。
企业知识门户
Enterprise Knowledge Portal , EKP
也称知识门户,其渊源在于管理知识运动
知识管理建立在通过发挥组织的集体知识和经验的杠杆作用来发展或维持企业的竞争优势这样一个假设上,这些知识大多存在于企业员工的心中,且相互孤立。
由于企业知识门户将人和信息连接了起来,提供了一个实验企业知识并最大化其价值的载体,因此可以说企业知识门户是第一个将知识管理的理论用于实践的工具
企业知识门户的好处在于减少了确认问题和解决问题的时间,降低了训练成本和缩短了学习曲线,从而提高了企业生产率
企业知识门户还应具有信息搜集,整理,提炼的功能,可以对已有知识进行分类,建立企业知识库并随时更新知识库的内容
企业应用门户
Enterprise Application Portal EAP
企业应用门户是一个用来提高企业集中贸易能力,协同能力和信息管理能力的平台。
它以商业流程和企业应用为核心,把商业流程中功能不同的应用模块通过门户技术集成在一起,提供了一个企业内部的无缝集成的应用和后端支持系统。
从某种意义上来说,我们可以把企业应用门户看成企业信息系统的集成界面。
企业门户集成的应用程序和系统包括
企业资源计划
旧版本系统(legacy system)
客户关系系统 CRM
供应链管理系统 SCM
其他要求随时随地访问的关键任务(missinon-critical)应用程序
企业应用门户的以流程为中心的特点,企业应用门户经常包含有工作流的特征
企业应用门户经常使用复杂的安全手段并集成了现有的或新的轻量级目录访问协议或目录结构来保证用户通过不同的系统进行一目了然的访问时的安全
企业门户具有集成应用程序和系统的能力,他对企业具有比企业信息门户或企业知识门户更大的价值,但是其建立也更为困难、成本更高也更费时间
垂直门户
vortal
垂直门户是为某一特定行业服务的
垂直门户传送的信息只属于人们感兴趣的领域
总结
随着企业信息系统复杂程度的增加,企业需要将信息门户,知识门户和应用门户有机整合在一起,形成通用型企业门户。
按照(Intelnational Data Corporation IDC)的定义,通用型的企业门户应该随访问者角色的不同,允许其访问企业内部网络上相应的应用和信息资源。
企业门户提供多种功能
先进的搜索功能
内容聚合能力
目录服务
安全性
应用/数据/过程集成
协作支持
知识获取
前后台业务系统集成
企业门户的要素
计划和设计
技术决策
行政人员的支持
限定初始项目的范围
超过组织物理界限的扩展
信息组织
内部推广和门户使用范围
门户实施中的社会和心理因素以及这些因素对企业及其门户方案的影响
用户对门户管理的持续管理和支持
什么是电子商务
分类
广义电子商务
使用各种电子工具从事电子商务
各种电子工具
泛商品的需求活动,泛商品的生产活动
侠义电子商务
使用Internet从事商务或活动
电子商务是在技术、经济高度发达的现代社会里,掌握信息技术和商务规则的人,系统化的运用电子工具,高效率,低成本从事以商品交换为中心的各种活动的总称
电子商务的类型
按参与交易的对象分类
企业与消费者之间的电子商务(Bussiness To Customer, B2C)
企业与企业之间的电子商务(Bussiness To Bussiness, B2B)
企业与政府方面的电子商务(Bussiness To Garvment , B2G)
按交易涉及的商品内容分类
间接电子商务
涉及的商品为有形商品货物的订货
直接电子商务
涉及的商品为无形的货物和服务
按电子商务使用的网络类型分类
EDI网络电子商务
Electronic Data Interchange ,电子数据交换
EDI是按照一个公认的标准和协议,将商务活动中涉及的文件标准化和格式化,通过计算机网络,在贸易伙伴的计算机网络系统之进行数据交换和自动处理
EDI主要用于批发业务。
EDI对企业有较高的管理、资金和技术要求,因此至今不太普及
Internet 网络电子商务
目前电子商务的主要形式
内联网络电子商务
Intranet 网络
是指大型企业内部或者一个行业内开展的电子商务活动,形成一个商务活动链,可以大大的提高工作效率和降低业务的成本
电子商务的标准
基于XML的电子商务标准
ebXML
ebXML是全球基于XML的电子商务信息交换框架,它向全球各贸易参与方提供了一种可互相操作的、安全稳定的电子商务信息交换模式
RosettaNet
一个致力于开发和实现全行业开放式电子商务流程标准的信息技术、电子元件和半导体制造企业联合组织
cnXML
中国科学院软件研究所电子商务技术研究中提出以国际XML标准为基础,与国际其他相关标准可相互转换的、符合我国商业流程习惯与传统的B2B电子商务预防、具有中国特色的电子商务信息化规范
在数据结构上提出了中英双语标准,不仅支持英文标准,还全面支持中文标签
基于Web服务的电子商务集成标准
Web服务是指由企业发布的完成其特别商务需求的在线应用服务,其他公司或应用软件能够通过互联网访问并使用这项在线服务
Web服务模式的核心是能够实现更简单的,基于XML的在线数据交换
企业应用集成
企业应用集成(EAI)的简要历史
Enterprise Application Integration,系统应用集成
EAI的内容
EAI构建统一标准的基础平台,将进程、软件、标准和硬件联合起来,连接具有不同功能和目的而又独自运行的企业内部的应用系统。以达到信息和流程的共享,是企业相关应用整合在一起
EAI就是在各个应用系统的接口之间共享数据和功能。
EAI的一个原则就是集成多个系统并保证各个系统互不干扰。
EAI的终极目标就是将多个企业和企业内部的多个应用集成到一个虚拟的、统一的应用系统中
实施EAI必须遵循的原则
应用程序的独立性
面向商业流程
独立于技术
平台无关
EAI提供4个层次的服务
通讯服务
主要靠通讯中间件进行消息的路由
信息传递与转化服务
负责传递消息和转化消息
应用连接服务
靠应用连接适配器将应用连接至EAI平台,最终连接起来
流程控制服务
解决人工参与的长期的工作流程控制
集成深度上的种类集成
数据的集成
应用系统的集成
业务流程的集成
集成广度上的种类集成
部门内部的信息系统集成
部门之间的信息系统集成
企业级的信息系统集成
与有稳定关系的合作伙伴之间的信息系统实现面向业务过程的集成
与随机遇到的合作伙伴之间的信息系统实现面向业务过程集成
集成技术的发展展望
主流的集成模式
面向信息的集成技术
必选的方法
主要采用的主要数据处理技术
数据复制
数据聚合
接口集成
主流技术
通过一种集成代理方式实现集成
即应用系统创建适配器作为自己的代理
适配器通过其开放或私有接口将信息从应用系统中提取出来
并通过开放接口与外界系统实现信息交互
适配器的结构支持一定的标准,将极大的简化集成的负责度,并有助于标准化,这也是面向接口集成的方法的主要优势来源
标准化的适配器技术可以使企业从第三方供应商获取适配器,从而集成技术简单化
面向过程的集成技术
是一种过程流集成的思想,不需要处理用户界面开发、数据库逻辑、事务逻辑等,而知识处理系统之间的过程逻辑,与核心业务逻辑相分离
在结构上,面向过程的集成方法在面向接口的集成方案之上,定义了另外的过程逻辑层
在该结构的底层,应用服务器、消息中间件提供了支持数据传输和跨过程协调的基础服务
提供用于业务过程集成是对其产品的重要拓展,也是目前应用集成市场的重要需求
面向服务的集成技术
Service-Orientend Arditecture 面向服务架构
面向服务架构和Web 服务技术的应用集成是业务集成技术上的一次重要的变化,被认为是新一代的应用集成技术
集成的对象
一个个的Web服务
封装成Web服务的业务处理
供应链管理
供应链管理的定义
供应链是指产品生产和流程过程中涉及的原料供应商,制造商、批发商、零售商以及最终消费者组成的供需网络
供应链是企业赖以生存的商业循环系统,是企业电子商务中最重要的要素。
供应链管理是指对供应商、制造商、物流者和分销商等各种经济活动,有效开展集成管理,以正确的数量和质量,正确的地点,正确的时间,进行产品制造和分销,提高系统效率,促使系统成本最小化,并提高消费者的满意度和服务水准
供应链管理的基本思想
供应链管理可以弥合整个供应链体系中的矛盾和冲突
供应链管理是一种集成化的管理模式
把不同的企业集成起来以增加整个供应链效率,注重企业之间的合作,以达到全局最优
通过供应链管理,协调好供应链各个角色相互之间 的关系,建立有效的信息共享机制,使供应链中的信息流,物流和资金流类似于一个整体运作,能快速满足最中客户不断变化的需求
供应链管理的运作模式
正向推动式运作模式
推动力来自供应链的上游企业
适用于市场需求量很大而且需求稳定的通用型产品,其指导思想是以生产为中心
用发展的眼光来观察,正向推动式运作模式柔性较差,快速响应能力不强,不是供应链普遍使用的模式
逆向拉取式运作模式
基于需求驱动原理的供应链模式,驱动力来源于最终用户,与正向推动有本质的区别
指导思想是以用户为中心
供应链管理的技术支持体系
信息的传递方向
进行纵向的上下信息传递,把不同层次的经济行为协调起来
进行横向信息传递,把各部门、各岗位的经济行为协调起来
信息技术对供应链的支撑可以分为两个层面
第一个层面是由核心技术构成
标识代码技术
对大量信息进行合理的分类后或者为了对编码对象进行唯一表示而用代码加以表述
信息编码标准化可以实现供应链中贸易伙伴将的数据交换与共享
自动识别与数据采集技术
Automated Identification and Data Collection , AIDC
通过自动识别项目标识信息,并且不使用键盘即可将数据输入到计算机、程序逻辑控制器或其他微处理器控制设备
AIDC技术包含
条码技术
射频技术
磁识别技术
声音识别技术
图像识别技术
光子识别技术
生物识别技术
空间数据传输技术
电子数据交换技术
EDI
EDI是供应链管理的主要信息手段之一,特别是国际贸易中有大量文件传输条件下,它是计算机和计算机之间的相关业务数据的交换工具,它有一致的标准以使交换成为可能
互联网技术
互联网为供应链信息共享提供了一个基础的工具
第二个层面是基于信息技术而开发的支持企业生产的管理系统
销售时点信息系统
Point of Sales ,POS
POS 是指通过自动读取设备(收银机)在销售商品时直接读取商品销售信息,并通过和计算机系统传送至有关部门进行分析加工,以提高经营效率的系统
电子自动订货系统
EOS
是指企业间利用网络和终端设备以在线方式进行订货作业和订货信息交换的系统。
计算机辅助系统
计算机辅助设计
Computer-Aide Process Desgin, CAD)
计算机辅助工艺规划
Computer-Aide Process Plaming, CAPP
计算机辅助工程
CAE
计算机辅助制造
CAM
企业计划管理
企业资源计划 ERP
制造资源计划 MRPII
及时生产制 JIT
客户关系管理
CRM
电子商务
B2B
B2C
信息化的有关法律和规定
有关信息产业发展的法律和规定
电信条例
宗旨是规范电信市场秩序,维护电信用户和电信业务经营者的合法权益,保证电信网络和信息的安全,促进电信业健康反正。
国务院2008年第18号文件
《鼓励软件产业和集成电路产业发展的若干政策》
我国软件产业发展史上的重要里程碑
政策目标
通过政策引导,鼓励资金、人才等资源投向软件产业和集成电路产业,进一步促进我国信息产业快速发展,力争到2010年时我国软件产业研究开发和生产能力达到或接近国际先进水平
鼓励国内企业充分利用国际、国内两种资源,努力开拓两个市场
信息产业主管部门的有关规定
软件企业的认定制度
软件企业认定标准及管理办法(试行)》
主要职责是
根据各省,自治区、直辖市信息产业主管部门的建议确定各地省级软件企业认定机构,向其授权或撤销对其授权,并公布软件企业认定机构名单
指导并监督、检查全国软件企业认定工作
受理对认定结果和年审结果的复查申请
软件产品管理办法
《软件产品管理办法》
任何单位和个人不得开发、生产、销售、进出口含有以下内容的软件产品
侵犯他人的知识产权
含有计算机病毒
可能危害计算机系统安全的
含有国家规定禁止传播的内容的
不符合我国软件标准规范的
主要职责
制定并发布软件产品测试标准和规范
对各省、自治区、直辖市登记的国产软件产品备案
指导并监督、检查全国各地的软件产品管理工作
授权软件产品检测机构,按照我国软件产品的标准规范和软件产品的测试标准及规范,进行符合性检测
制定全国统一的软件产品登记号码体系、制作软件产品登记证书
发布软件产品登记通知
有关知识产权保护的法律和规定
《计算机软件保护条例》
对计算机软件著作权的权利、归属以及侵权行为的鉴别做了详细的规定,并指出侵权行为应负的法律责任
计算机信息网络管理的法律和规定
《信息网络传播权保护条例》
避风港条例
在发生著作权侵权案件时,当(ISP)网络服务提供商只提供空间服务,并不制作网页内容,如果ISP被告知侵权,则有删除的义务,否则就被视为侵权。如果侵权内容既不在ISP的服务器上存取,又没有被告知哪些内容应该删除,则ISP不承担侵权责任
《中华人民共和国计算机信息网络国际联网管理暂行规定实施方法》
该实施办法规定国家对国家联网的建设布局、资源利用进行统筹规划,对国际出入口信道统一管理
《计算机信息网络国际联网安全保护管理办法》
该规定为了保护计算机信息系统的安全,促进计算机的应用和发展
《互联网安全保护技术措施规定》
从保障和促进我国互联网发展出发,对互联网服务单位落实安全保护技术措施提出了明确、具体和可操作的要求,有利用加强和规范互联网安全保护工作,提高互联网服务单位和联网单位的安全防范能力和水平,预防和制作网上维护犯罪活动
4.系统开发基础知识
软件开发方法
软件开发生命周期
软件定义时期
软件定义包括可行性研究和详细需求分析过程,任务是确定软件开发工程必须完成的总目标
具体分为
问题定义
软件的目标系统是什么
系统的定位以及范围
按照软件系统工程需求来确定问题空间的性质(说明是一种什么性质的系统)
可行性研究
技术可行性
经济可行性
操作可行性
社会可行性
确定问题是否可解,解决办法是否可行
需求分析
需求分析的任务是确定软件系统的功能需求、性能需求和运行环境的约束,写出软件需求规格书、软件系统测试大纲,用户手册概要
功能需求是软件必须完成的功能
性能需求是软件的安全性、可靠性、可维护性、结果的精度、容错性(出错处理)、响应速度和适应性等
运行环境是软件必须满足运行环境的要求,包括硬件和软件平台
软件需求规格说明书,是以后软件设计和验收的依据
需求分析的过程,应该由系统分析员、软件开发人员与用户共同完成,反复讨论和协商并且逐步细化、一致化、完全化等,直至建立一个完整的分析模型。
需求分析工作完成之后要提交软件需求规格说明书(Software Requirements Specification, SRS)
系统或子系统名称
功能描述
接口
基本数据结构
性能
设计需求
开发标准
验收原则
软件开发时期
软件开发时期就是软件的设计与实现
分为
概要(总体)设计
在软件需求规格说明的基础上,建立系统的总体结构(含子系统的划分)和模块间的关系,定义功能模块及各功能模块之间的关系
详细设计
对概要设计产生的功能模块逐步细化
把模块内部细节转化为可以编程的程序过程性描述
详细设计的内容包括
算法与数据结构
数据分布
数据组织
模块间接口信息
用户界面等的设计
写出详细设计报告
编码
又称编程
编码的任务是把详细设计转化为能在计算机上运行的程序
测试
单元测试
集成测试
确认测试
系统测试
通常把编码和测试称为系统的实现
测试等
软件运行和维护
软件运行就是把软件产品移交给用户使用
软件投入运行后的主要任务是使软件持久满足用户的需求
软件维护是对软件产品进行修改对软件需求变化做出响应的过程,也就是尽可能地延长软件地寿命
当软件已没有维护地价值,宣告退役,软件地生命随之宣告结束
软件开发模型
软件生存周期模型又称软件开发模型(software develop model)或者软件过程模型(software process model)
它是从某一个特定角度提出地软件过程的简化描述
模型的主要特点是简单化
软件过程模型是开发实际过程的抽象与概括,应该包括构成软件过程的各种活动,也就是对软件开发过程各种阶段之间关系的一个描述和表示
基本概念
软件过程是制作软件产品的一组活动以及结果,这些活动主要由软件人员来完成
软件活动
软件描述
必须定义软件功能以及使用的限制
软件开发
也就是软件的设计和实现,软件工程人员制作出能满足描述的软件
软件有效性验证
软件必须经过严格的验证,以保证能够满足客户的需求
软件进化
软件随着客户的需求的变化不断改进
开发模型种类
瀑布模型
waterfall model
该模型描述了软件生命的一些基本过程活动,所以它称为软件生命周期模型
这些活动从一个阶段到另一个阶段逐次下降,它的工作流程形式上很像瀑布,因此称为瀑布模型
包含的阶段
问题定义
可行性研究
需求分析
总体设计
详细设计
编码与单元测试
综合测试
运行与维护
模型特点
因果关系紧密相连,前一个阶段工作的结果是后一个阶段工作的输入。
每一个阶段都是建筑在前一个阶段正确结果之上,前一个阶段的错漏会隐藏的带到后一个阶段。
这个错误有时甚至是灾难性的
它有利于人员的组织管理
有利于软件开发方法和工具的研究
模型的主要缺点
软件需求分析的准确性很难确定,甚至是不可能和不现实的。
因为用户不理解计算机,无法回答目标系统是“什么”情况,对系统将来的改变部分难以确定。
用户和软件项目负责人要相当长的时间才能得到初始版本,这时如果改变需求将会带来巨大的损失(如人力,财力,时间等),该模型的应用有一定的局限性
演化模型
原型模型
prototype model
又称快速模型
由于瀑布模型的缺点,人们借鉴建筑师,工程师建造原型的经验,提出了原型模型
阶段
原型开发阶段
软件开发人员根据用户提出的软件系统的定义,快速的开发一个原型。
包含
目标系统的关键问题
反映目标系统的大致面貌
展示目标系统全部或者部分的功能、性能等
开发原型考虑的三种途径
利用模拟软件系统的人机界面和人机交互方式
真正开发一个原型
找来一个或者几个正在运行的类似软件进行比较
目标软件开发阶段
在征求用户对原型的意见后对原型进行修改完善,确认软件系统的需求并达到一致的理解进一步开发实际系统。
原型模型的使用的注意点
用户对系统模糊不清,无法准确回答目标系统的需求
要又一定的开发环境和工具支持
经过对原型的若干次修改,应收敛到目标范围内,否则可能会失败
对大型软件来说,原型可能非常复杂而难以快速形成,如果没有现成的,就不应考虑用原型法
螺旋模型
Spiral Model
是在快速模型基础上扩展而成。也有人把螺旋模型归到快速模型,实际上,它师生命周期模型与原型模型的一种结合
阶段组成
目标设定
需求分析
定义和确定这一阶段的专门目标
指定对过程和产品的约束
制定详细的管理计划
风险分析
对可选方案进行风险识别和详细分析
制定解决办法
采用有效的措施避免这些风险
开发和有效性验证
为系统选择开发模型
并进行原型开发
评审
对项目进行评审,以确定是否需要进行螺旋线的下一次回路,如果决定继续就要制定下一阶段计划
螺旋模型实际上是上述4各部分的迭代过程,每一次迭代,螺旋线增加一周,软件系统就生产一个新版本,这个新版本实际上是对目标系统的一个逼近,经过若干次的迭代后,系统应该尽快的收敛到用户允许或可以接受的范围内,否则也有可能中途夭折
该模型支持大型软件开发,适用于面向规格说明、面向过程和面向对象的软件开发方法,也适用于几种开发方法的组合
喷泉模型
基于可重用构件的模型
在许多软件项目中都存在一些重用软件。在某一个项目中的设计或者代码在另一个项目中重复出现时,重用就自然而然地产生了
构件的重用提高了 软件的可靠性和易维护性
模型
软件需求
标识构件
开发构件
取出构件
存入构件库
集成目标系统
重用构件模型依赖于构件库,软件工程项目所创建的构件不断地积累存储到构件库中。后续的开发过程中一旦标识出候选构件就可从构件库中检索出来。
软件目标系统是基于可重用构件的一种集成,大大的提高了软件的可靠性和生产率
基于面向对象的模型
对象技术强调了类的创建与封装,一旦一个类创建与封装成功,就可以在不同的应用系统中被重用
对象技术为基于构件的软件过程模型提供了更强的技术框架
基于面向对象的模型,是综合了面向对象和原型方法及重用技术的一种模型
软件需求
检索构件库
构件开发
重用构件库
需求开发
面向对象分析
OOA原型
面向对象设计
OOD原型
目标系统
系统实现与集成
基于四代技术的模型
四代语言(4th Generation Language ,4GL)
大型数据库管理系统的基础上发展出来的程序设计语言
程序设计语言
机器语言
汇编语言
高级语言
四代语言
人工智能领域应用而设计的语言--5代语言
4GL 目前还没有统一的定义
用于快速开发应用软件的高产工具(重点强调了提高软件开发的生产系效率)
用于快速事务处理系统的高产工具(突出主要应用领域)
主要特征
它是非过程化的语言,目的在于高效、直接的实现各种应用系统。它完全不用编程的方式来构造应用系统,程序员可以不用通常的编程方法、算法等来完成某一个功能,而是利用生成器,从而构造用户需要的应用系统生成器自动生成源程序
它与数据库关系密切,能够对大型数据库进行高效处理,它被广泛应用于数据库管理系统中
注意
四代语言与通常的软件工程环境或计算机辅助软件工程(Computer-Aided Software Engineering, CASE) 不同,CASE支持软件开发的全过程,4GL不支持应用软件开发的全过程,只侧重于应用软件开发过程中的设计阶段和实现阶段,特别是支持界面以及界面相关的处理过程
敏捷方法
敏捷方法的特点
敏捷方法是适应性(adaptive) 而非预设性(predictive)
重型方法试图对一个软件开发项目在很长的时间跨度内做出详细的计划,然后依计划进行开发。这类方法在计划制定后拒绝变化
敏捷方法则欢迎变化,它的目的就是称为适应变化的过程,甚至允许改变自身来适应变化
敏捷方法是面向人的(people -oriented) 而非面向过程的(process-oriented)
它们试图使软件开发工作能够利用人的特点,充分发挥人的创造能力
它们强调软件开发应当是一项愉快的活动
特点详解
适应性和预设性
软件设计之所以难以实现,问题在于软件需求的不稳定,从而导致软件过程的不可预测
但是我们必须对这样的过程进行监控,以使得整个过程能向我们期望的目标前进
敏捷方法使用反馈机制对不可预测过程进行控制
面向人而非面向过程
传统的方法开发人员服从一个过程而非接受一个过程,但是一个常见的情况就是软件的开发过程由管理人员决定的,而管理人员已经脱离实际开发活动相当长的时间了,如此设计出来的开发过程是难以为开发人员所接受的
敏捷型开发过程还要要求开发人员必须有权作技术方面的所有决定。使得开发人员和管理人员在一个软件项目中的领导方面有同等的地位,共同为整个开发过程负责
敏捷方法特别强调开发中相关人员之间的信息交流,因此敏捷方法一般按照高内聚,松耦合的原则将项目划分为若干小组,以增加沟通,提高敏捷性及应变能力
敏捷方法的核心思想
敏捷方法是适应型,而非可预测型
敏捷方法是以人为本,而非以过程为本
迭代增量式的开发过程
敏捷方法以原型开发思想为基础,采用迭代增量式开发,发行版本小型化。根据客户需求的优先级和开发风险,制定版本发行计划,每一个发行版本都是在前一个成功发行版本的基础上进行的功能需求扩充,最后满足客户的所有功能需求
敏捷方法的含义及其特征
敏捷方法的思想是自适应的而非预设的重型方法试图预先固定需求并拟定详细计划;敏捷方法适应需求变化,甚至可以说其初衷就是针对变化的需求的
敏捷方法的思考角度是面向人的而非面向开发过程。重型方法在实践原则中总是把开发者看作是一个泛化的生产要素,而忽视了作为决定性因素的人的特殊性;而敏捷方法则强调以人为本,并贯穿实践始终。
敏捷方法其实是软件开发方法论从无到重型再进一步发展的成果
敏捷方法的适用范围
满足工程设计标准的唯一文档是源代码清单
软件项目的设计是一个抽象的概念
程序的概括形状
结构以及每一个模块、类和方法的详细形状
敏捷方法对设计者、开发者和客户之间的有效沟通和及时反馈要求比较高,所以不易在开发团队比较庞大的项目中实施,当然这也不是绝对的。
敏捷方法的主要内容
4个核心价值
沟通
强调设计者、开发者和客户三者之间的有效交流时开发成功的关键
简单
设计和编码的指导原则,强调只满足当前功能需求,不做假想设计,尽量使代码简单化
反馈
强调设计者、开发者和客户之间及时和详尽的意见反馈时开发成功的保证
勇气
开发适应变化的前提,要求设计者和开发者在必需做出取舍和重构时,勇于抉择,勇于实践
12条过程实践规则
简单设计
测试驱动
代码重构
结对编程
持续集成
现场客户
发行版本小型化
系统隐喻
代码集体所有制
规划策略
规范代码
40小时工作机制
主要敏捷方法简介
XP(Extreme Programming,极限编程)
在所有的敏捷方法中,XP时最引人瞩目的,XP在一些对费用严格控制的公司中的使用,已经被证明非常有效
高度纪律性
Cockburn的水晶系列方法
水晶系列方法与XP一样都有以人为中心的概念,但在实践上有所不同,用最少的纪律约束而仍能成功地方法,从而在产出效率与易于运作上达到一种平衡
水晶系列不如XP那样地产出效率,但是会有更多人能够接受并遵循它
开放式源码
差错排障地高度并行性,任何人发现了错误都可以将改正源码地补丁发给维护者。然后维护者将这些补丁或者新增地代码并入源码库
SCRUM
明确定义了的可重复的方法过程只限于在明确定义了的可重复的环境中为明确定义了的可重复人员所用,去解决明确定义了的可以重复的问题
Coad的功用驱动开发方法(Feature Driven Development ,FDD)
致力于短时的迭代阶段和可见可用的功能,在FDD中一个迭代一般是两周
ASD方法
Adaptive Software Development
其核心是三个非线性的、重叠的开发阶段
猜测
合作
学习
RUP
RUP概述
Rational Unified Process
Rational 表示 RUP 是由Rational 公司提出的
Unified 表示最佳开发经验总结
Process 表示一个软件开发过程
RUP的生命周期
RUP 软件开发生命周期是一个二维软件开发模型
RUP有9个核心工作流(discipline)
业务建模
business modeling
理解待开发系统所在的机构及其商业运作,确保所有参与人员对待开发系统所在的机构有共同的认识,评估待开发系统对所在机构的影响
需求
requirements
定义系统功能及用户界面,使客户知道系统的功能,使开发人员理解系统的需求,为项目预算及计划提供基础
分析与设计
analysis & design
把需求分析的结果转化为分析与设计模型
实现
implementation
把设计模型转化为实现结果,对开发的代码做单元测试,将不同实现人员开发的模块集成为可执行系统
测试
test
检查各个子系统的交互与集成,验证所有需求是否均被正确实现,对发现的软件质量上的缺陷进行归档,对软件质量提出改进建议
部署
deployment
打包、分发、安装软件,升级旧系统;培训用户及销售人员,并提供技术支持
配置与变更管理
configuration & change management
跟踪并维护系统开发过程中产生的所有制品的完整性和一致性
项目管理
project management
为软件开发项目提供计划、人员分配、执行、监控等方面的指导,为风险管理提供框架
环境
environment
为软件开发机构提供软件开发环境,即提供过程管理和工具的支持
RUP 把生命周期划分为多个循环(cycle)
每个cycle生成产品的一个新的版本,每个cycle依次由4个连续的阶段(phase)组成,每个阶段完成确定的任务
每一个阶段都由一个或多个连续的迭代(iteration)组成。迭代并不是重复地做相同的事,而是针对不同用例的细化和实现
每一个迭代都是一个完整的开发过程,它需要项目经理根据当前迭代所处的阶段以及上次迭代的结果,适当地对核心工作流中地行为进行裁剪
每一个阶段结束前有一个里程碑(mileston)评估该阶段地工作,如果未能通过该里程碑地评估,则决策者应该做出决定,是取消该项目地还是继续做该阶段地工作
4个阶段
初始阶段
inception
定义最终产品视图和业务模型,并确定系统范围
细化阶段
设计及确定系统的体系结构,制定工作计划及资源要求
elaboration
构造阶段
construction
构造产品并继续演进需求、体系结构、计划直至产品提交
移交阶段
transition
把产品提交给用户使用
RUP中的核心概念
角色
Role
who 的问题
角色描述某个人或一个小组的行为与职责
RUP预先定义了很多角色
体系结构师 architer
设计人员 designer
实现人员 implementer
测试员 tester
配置管理人员 configuration manager
活动
Activity
how的问题
活动是一个明确目的的独立工作单元
制品
artifact
what的问题
制品是活动生成、创建或修改的一段信息
工作流
workflow
when的问题
工作流描述了一个有意义的连续的活动序列,每个工作流产生一些有价值的产品,并显示了角色之间的关系
其他基本概念
工具教材 tool mentor
检查点 checkpoints
模板 template
报告 report
RUP的特点
用例驱动
需求分析
设计
实现
测试
以体系结构为中心
RUP中的开发活动时围绕体系结构展开的
软件体系结构的定义:软件体系结构是关于构成系统的元素、这些元素之间的交互、元素与元素之间的组成模式以及作用在这些组成模式上的约束等方面的描述。具体来说,软件体系结构刻画了系统的整体设计,它去掉了细节部分,突出了系统的重要特征
体系结构层次的设计问题
系统的总体组织和全局控制
通讯协议
同步
数据存取
给设计元素分配特定功能
设计元素的组织
物理分布
系统的伸缩性和性能
体系结构的设计需要考虑多方面的问题
在功能性特征方面要考虑系统的功能
在非功能性特征方面要考虑系统的性能、安全性和可用性
与软件开发有关的特征要考虑可修改性、可移植性、可重用性、可集成性和可测试性
与开发经济学有关的特征要考虑开发时间、费用、系统的生命周期
软件的体系结构是一个多维的结构,会采用多个视图来描述软件体系结构
RUP采用4+1S视图模式
4+1视图
用例视图
分析人员和测试人员关系的是系统行为
逻辑视图
最终用户关系的是系统功能
实现视图
程序员关心的是系统的配置、装配等问题
进程视图
系统集成人员关心的是系统的性能、可伸缩性、吞吐率等问题
部署视图
系统工程师关心的是系统的发布、安装和拓扑结构等问题
迭代与增量
RUP强调采用迭代和增量的方式来开发软件,把整个项目分开为多个迭代过程。在每次迭代中,只考虑系统的一部分需求,进行分析、设计和实现、测试、部署等过程,每次迭代是在已完成部分的基础上进行的,每次增加一些新的功能实现,以此进行下去,直到项目完成
迭代与增量的好处
在软件开发的早期就可以对关键的、影响大的风险进行处理
可以提出一个软件体系结构来指导开发
可以更好的处理不可避免地需求变更
可以较早地得到一个可运行地系统,鼓舞团队地士气,增加项目成功地信心
为开发人员提供一个能更有效工作地开发过程
RUP裁剪
RUP是一个通用的过程模板
开发指南
开发过程中产生的制品
开发过程中所涉及的各种角色的说明
RUP非常庞大,没有一个项目会使用RUP 中的所有东西,针对RUP时还要对RUP进行裁剪可以得到很多不同的软件开发过程
RUP裁剪的步骤
确定本项目的软件开发过程需要哪些工作流
确定每个工作流要产出哪些制品
确定初始阶段、细化阶段、构造阶段和移交阶段 如何演进
确定每个阶段内的迭代计划
规划工作流内部结构
软件系统工具
软件开发工具
需求分析工具
需求分析工具用以辅助软件需求分析活动,辅助系统分析员从需求定义出发,生成完整的、清晰的、一致的功能规范
功能规范是软件所要完成的功能精确而完整的陈述,描述该软件要做什么及只做什么,是软件开发者和用户的锲约,同时也是软件设计者的实现者的依据。
功能规范应该正确的、完整的反映用户对软件的功能要求,其表达是清晰的、无歧义的。
需求分析工具的目标就是帮助分析员形成这样的功能规范
基于自然语言或图形描述的工具
这类工具采用分解与抽象等基本手段,对用户的问题逐步求精,并在检测机制的辅助下,发现其中可能存在的问题,通过对问题的描述的修改,逐步形成能正确反映用户需求的功能规范,它能帮助分析员提高需求文档的质量,降低功能规范的维护费用
以支持结构化方法的需求分析工具为例
结构化分析方法采用数据流图的描述方法,分析的主要结果是一套分层的数据流图和和一个数据词典
基于形式化需求定义语言的工具
此类工具大多以基于知识的需求智能助手的形式出现,并把人工智能技术运用于软件工程。
其他需求分析工具
可执行规范语言以及原型技术为需求分析工具提供了另一条实现途径,这些工具通过运行可执行规范或原型,将有关的结果显示给用户和系统分析员,以便进行需求确认。
设计工具
设计工具用以辅助设计活动,辅助设计人员从软件功能规范出发,得到相应的设计规范
设计规范是否符合功能规范和需求定义中所指定的功能及性能要求,对软件的组织或其组成部分的内部结构的描述。
设计规范分为
概要设计规范
此规范描述软件的功能模块及其相互关系,说明模块的处理过程和外部行为,同时还应描述数据的逻辑结构
详细设计规范
此规范描述每个模块的处理算法及涉及到的全部数据结构
设计规范是程序员进行编程活动的依据
编码与排错工具
编码工具
编辑程序
汇编程序
汇编程序用以将汇编语言书写的程序翻译成等价的机器语言程序
编译程序
用以将高级程序语言书写的程序翻译成等价的低级程序语言程序
生成程序
排错工具
源代码排错程序
用以帮助程序员理解程序的执行状态,可通过对程序执行过程中各种状态的判别进行程序错误的识别、定位及改正
排错程序生成程序
一种通用的排错工具。对给定的程序语言,它能生成一个相应的源代码排错程序
软件维护工具
版本控制工具
在软件开发和维护过程中一个软件会有多个版本,版本控制工具用来储存、更新、恢复和管理一个软件的多个版本
SCCS Source Code Control System
文档分析工具
文档分析工具用于对软件开发过程中形成的文档进行分析,给出软件维护活动所需的维护信息
开发信息库工具
开发信息库工具用来维护软件目的开发信息,包括对象、模块等
它记录每个对象的修改信息和其他变形
维护对象和与之有关信息之间的关系
逆向工程工具
在软件生存周期中,将某种形式表示的软件转换成更高抽象形式表示的软件的活动称为逆向工程
再工程工具
再工程工具用来支持重构一个功能和性能更为完善的软件系统。
主要集中在
代码重构
程序结构重构
数据结构重构
软件管理和软件支持工具
软件管理和软件支持工具用来辅助管理人员和软件支持人员的管理活动和支持活动,以确保软件高质量高效的完成。
常用的工具
项目管理工具
项目管理工具用来辅助软件的项目管理活动
项目管理活动包括
项目的计划
调度
通信
成本估算
资源分配
质量控制
一个项目管理工具通常把重点放在某一个或某几个特定的管理环节上,而不提供对管理活动包罗万象的支持
配置管理工具
配置管理工具用以辅助完成软件配置项的标识、版本控制、变化控制、审计和状态统计基本任务,使各配置项的存储、修改和系统生成易于实现,从而简化审计过程,改进状态统计,减少错误,提高系统的质量。
软件评价工具
软件评价工具用以辅助管理人员进行软件质量保证的有关活动
软件质量模型
McCall软件质量模型
ISO软件质量度量模型
软件开发工具的评价和选择
衡量开发工具的标准
功能
易用性
稳健性
硬件要求和性能
服务和支持
需求管理
概念
软件需求开发的最终文档经过评审批准后,则定义了开发工作的需求基线(BaseLine)
这个基线在客户和开发者之间构筑了计划产品功能需求和非功能需求的一个约定(agreement)
需求约定是需求开发和需求管理之间的桥梁
需求管理是一个对系统需求变更、了解和控制的过程
需求管理过程与需求开发过程相互关联,当初始需求导出的同时就启动了需求管理规划,一旦形成需求文档的初稿,需求管理活动就开始了
需求管理的主要活动
变更控制
建议变更
分析影响
做出决策
交流
合并
测量需求的稳定性
版本控制
确定需求文档版本
确定单个需求文档版本
需求跟踪
定义对其他需求的连接性
定义对其他系统元素的连接性
需求状态跟踪
定义需求状态
跟踪需求每一个状态
需求管理原则
过程能力成熟模型( Capability Maturity Model CMM)
CMM 在软件开发机构中被广泛用来指导软件过程改进
CMM 软件处理能力的5个成熟级别
组织机构必须具有的6个关键过程域(Key Process Areas, KPA)
需求管理的目标
为软件需求建立一个基线,提供给软件工程和管理使用
软件计划,产品和活动与软件需求保持一致
需求管理过程域之内的原则和策略
需求管理的关键过程领域不涉及收集和分析项目需求,而是假定已收集了软件需求,或者已由更高一级别的系统给定了需求。一旦需求获得并且文档化了,软件开发组和有关团队需要评审文档。发现问题应与客户或者其他需要源协商解决。软件开发计划是基于已确认的需求
开发人员在向客户以及有关部门承诺某些需求之前,应该确认需求和约束条件、风险、偶然因素、假定条件等
关于处理领域同样建议通过版本控制和变更控制来管理需求文档
需求规格说明的版本控制
版本控制是管理需求的一个必要方面,必须统一确定需求文档的每一个版本,软件开发组的每一个成员必须得到需求的当前版本,但需求发生变更时,应该清楚的通知所有涉及的人员。
需求属性
创建需求的时间
需求的版本号
创建需求的作者
负责认可该软件需求的人员
需求状态
需求的原因和根据
需求涉及的子系统
需求涉及的产品版本号
使用的验证方法和接受的测试标准
产品的优先级或者重要程度
需求的稳定性
需求变更
开发组织能够严格控制软件项目应该确保的项目
仔细评估已建议的变更
挑选合适的人选对变更做出决定
变更应及时通知所有涉及的人员
项目要按一定的程序来采纳需求变更
管理
变更控制过程
需求变更管理过程
问题分析和变更描述
这是识别和分析需求问题或者一份明确的变更提议,以检查它的有效性,从而产生一个明确的需求变更提议
变更分析和成本计算
使用可追溯性信息系统和系统需求的一般知识,对需要变更的提议进行影响评估。
变更成本计算应该包括对需求文档的修改、系统修改的设计和实现的成本。
一旦分析完成并且被确认,应该进行是否执行这一变更的决策。
变更实现
这要求需求文档和系统设计以及实现都要同时修改。
需求变更策略
所有需求变更必须遵循需求变更控制过程
对于未获得批准的变更,不应该做设计和实现工作
变更应该由项目变更控制委员会决定实现哪些变更
项目风险承担者应该能够了解变更数据库的内容
决不能从数据库中删除或者修改变更请求的原始文档
每一个集成的需求变更必须能跟踪到一个经核准的变更请求
问题跟踪工具
可以定义变更请求的数据项
可以定义变更请求生存期的状态转换图
可以加强状态转换图使经授权的用户仅能做出所允许的状态变更
记录每一种状态变更的数据,确认做出变更的人员
可以定义在提交新请求状态被更新后应该自动通知的设计人员
可以根据需要生成标准的或定制的报告和图表
变更控制委员会
说明
变更控制委员会只要能决定合适的人做正确的事就足够了,不必追求大而全
变更控制委员会对项目中任何基线工作产品的变更都可以做出决定,需求变更文档仅使其中之一
变更控制委员会包括的各方面的代表
产品和计划管理部门
项目管理部门
开发部门
测试和质量保证部门
市场部或客户代表
制作用户文档的部门
技术支持部门
帮助桌面或用户支持热线部门
配置管理部门
变更控制委员会总则
用于描述变更控制委员会的目的、授权范围、成员构成、做出决策的过程及操作步骤
应该说明举行会议的频度和事由
管理范围描述该委员能做什么样的决策,以及由哪一类决策应上报高一级的委员会
过程及操作步骤
制定决策
变更控制委员会必须到会的人数或做出有效决定必须出席的人数
决策的方法(例如投票 一致通过 或者其他机制)
变更控制委员会主席是否可以否决该集体的决定
交流情况
一旦变更控制委员会做出决策,指派的人员应及时更新数据库中请求的状态
通知相关人员
重新协商约定
变更总是有代价的。
当工程项目接受了重要的需求变更时,为了适应变更情况要与管理部门和客户重新协商约定。
协商内容可能包括推迟交货时间、要求增加人力,推迟实现尚未实现的较低优先级的需求,或者质量上进行折中。要是不能获得一些约定的调整,应该把面临的风险写进风险管理计划
需求跟踪
需求跟踪包括编制每个需求同系统元素之间的联系文档。
元素包括
别的需求
体系结构
其他设计部件
源代码模块
测试
帮助文件和文档
跟踪能力(联系)链
traceability link
可以使我们跟踪一个需求使用期限的全过程。
跟踪能力使优先需求规格说明书的一个特征
为了实现可能跟踪能力,必须统一地标识出每一个需求,以便能准确地进行查阅
4类需求跟踪能力链
客户需求向前追溯到软件需求
从软件需求回溯相应的客户需求
从软件需求向前追溯到下一级工作产品
从产品部件回溯到软件需求
跟踪能力联系链记录了单个需求之间的父层、互连和依赖的关系
需求变更的代价和风险
变更需求是要付出代价的,只要允许软件需求变更或者添加新特性,一个表面上很简单的变更也可能转变成很复杂的局面
影响分析使需求管理的一个重要组成部分
开发管理
项目的范围、时间、成本
范围
项目范围说明书
范围定义的输入
项目章程
产生详细的项目范围说明书
项目范围管理计划
组织过程资产
批准的变更申请
时间
时间管理过程
活动定义
为了得到工作分解结构(Work Breakdown Structure, WBS)中最底层的交付物,必须执行一系列的活动,对这些活动的识别以及归档的过程叫做活动定义。
活动排序
活动的资源估算
活动历时估算
制订进度计划
为使项目目标得以实现并且制订出比较完善的项目进度计划。
进度控制
成本
成本管理的过程
项目成本管理的这种广义观点常被称为全生命周期成本计算
项目成本管理应该考虑项目干系人的信息需求,不同的项目干系人会在不同的时间,以不同的方式检查项目成本
配置管理、文档管理
配置管理
配置管理使PMBOK、ISO9000和CMMI中的重要组成元素,它在产品开发的生命周期中,提供了结构化的、有序化的、产品化的管理方法,使项目管理的基础工作。
配置管理的一个重要内容就是对变更加以控制,使变更的成本、工期和质量的影响降到最小
产品配置
产品配置是指一个产品在其生命周期各个阶段所产生的各种形式和各种版本的文档、计算机程、部件及数据的集合
该集合中的每一个元素称为该产品配置中的一个配置项(Configuration ITEM ,CI)
配置项主要分为两大类
属于产品组成部分的工作成果
需求文档
设计文档
源代码
测试用例
属于项目管理和机构支撑过程域产生的文档
工作计划
项目质量报告
项目跟踪报告
配置项的主要属性
名称
标识符
文件状态
版本
作者
日期
文档管理
软件系统的文档
用户文档
系统文档
主要描述系统设计、实现和测试等各方面的内容
从问题定义、需求说明到验收测试计划这样一系列和系统实现有关的文档
描述系统设计、实现和测试的文档对于理解程序和维护程序来说时非常重要的
软件文档应当满足的要求
必须描述如何使用这个系统,没有了这种描述即使是简单的系统也无法使用
必须描述怎样安装和管理这个系统
必须描述系统需求和设计
必须描述系统的实现和测试,以便使系统成为可维护的
软件开发的质量与风险
软件质量
项目质量管理包括
为确保项目能够满足所要执行的需求的过程
质量管理职能的所有活动
在项目领域,质量管理的一个关键因素是通过项目范围管理转换隐含需求为项目需求
软件开发风险
项目风险是一种不确定的事件或条件,一旦发生,会对项目目标产生某种正面或负面的影响
项目风险既包括对项目目标的威胁,也包括促进项目目标的机会
风险源于所有项目中的不确定因素
已知风险是那些已经经过识别和分析的风险,对于已知风险,进行相应计划是可能的
设计方法
结构化分析与设计
定义
结构程序设计是程序设计技术,它采用自顶向下逐步求精的设计方法和单入口单出口的控制构件
结构程序设计的思想应该在软件设计中体现出来,但这不排除为效率或其他原因对结构程序设计做一点修正
面向对象的分析设计
面向对象的分析模型
顶层架构图
用例与用例图
领域概念模型
设计模型包含
以包图表示的软件体系结构图
以交互图表示的用例实现图
完整精确的类图
针对复杂对象的状态图
用以描述流程化处理过程的活动图
设计人员必须处理的任务
针对分析模型中的用例,设计实现方案,实现方案用UML 交互图表示
设计技术支撑设施
大型软件项目中,往往需要一些技术支撑设施来帮助业务需求层面的类和子系统完成其功能。
这些设施本身并非是业务需求的一部分,但却为多种业务需求的实现提供公共服务
例如
数据的持久储存服务
安全控制服务
远程访问服务
设计用户界面
针对分析模型中的领域模型以及引进的新类,完整、精确的确定每个类的属性和操作,并完整地标示类之间地关心
面向对象的设计过程
分析模型
用例描述及用例图
领域概念模型
设计师
设计用例实施方案
设计技术支撑方案
设计用户界面
精化设计模型
设计模型
体系结构图
用例实现图
类图
其他
5.软件架构设计
软件架构概念
软件架构的定义
一个程序和计算系统软件体系结构是指系统的一个或者多个结构,结构中包括软件的构件,构件的外部可见属性以及它们之间的相互关系
体系结构
分析设计在满足规定需求方面的有效性
在设计变更相对容易的阶段,考虑体系结构可能的选择方案
降低与软件构造相关联的风险
体系结构的设计的两个层次
数据设计
表示出传统系统中体系结构的数据构件和面向对象系统中类的定义(封装了属性和操作)
体系结构设计
主要关注软件构件的结构、属性和交互作用
软件架构设计与生命周期
需求分析阶段
需求阶段的SA研究还处于起步阶段
在本质上,需求和SA设计面临的是不同的对象
一个是问题空间
一个是解空间
从软件需求模型向SA模型的转换主要关注两个问题
如何根据需求模型构建SA模型
如何保证模型转换的可追踪性
从软件复用的角度,SA影响需求工程也有其自然性和必然性
设计阶段
设计阶段是SA研究关注的最早和最多的阶段
这一阶段SA研究主要包括
SA 模型的描述<br>
SA的基本概念
SA模型由哪些元素组成
这些组成元素之间按照何种原则组织
现阶段的SA描述方法是构件和连接子的建模
体系结构描述语言
Architecture Description Language ADL)
支持构件、连接子及其配置的描述语言
ADL 对连接子的重视称为区分ADL 和其他建模语言的重要特征之一
典型的ADL
Unicon
Rapide
Darwin<br>Wright<br>C2 SADL<br>Acme<br>XADL<br>XYZ/ADL<br>ABC/ADL
SA模型的多视图表示
从不同视角描述特定系统给的体系结构,从而得到多个视图,并将这些视图组织起来以描述整体的SA模型
系统的每一个不同测秒的视图反映了一组系统相关人员所关注的系统的特定方面
多视图体现了关注点分离的思想
多视图的方案的典型模型
4+1模型
逻辑视图
进程视图
开发视图
物理视图
统一场景
Hofmesiter
概念视图
模块视图
执行视图
代码视图
CMU-SEI的Views and Beyond 模型
模块视图
构件视图
连接子视图
分配视图
多视图描述SA模型的标准
IEEE标准 1471-2000 软件密集型系统体系结构描述推荐实践
开放分布式处理参考模型 RM-ODP
统一建模语言 UML
Zachman 框架
SA模型的设计与分析方法
对SA设计经验的总结与复用
实现阶段
最初的SA研究往往只关注较高层次的系统设计、描述和验证
研究的方面
研究基于SA的开发过程支持
项目组织结构
配置管理
寻求从SA向实现过渡的途径
将程序设计语言元素引入SA阶段
模型映射
构件组装
复用中间件平台
研究基于SA的测试技术
SA提供了待生成系统的蓝图,根据该蓝图实现系统需要较好的开发组织结构和过程管理技术。以体系结构为中心的软件项目管理方法,开发团队的组织结构应该和体系结构模型有一定的对应关系,从而提高软件的开发效率和质量
典型的实现方法
在SA模型中引入实现阶段的概念,如引入程序设计语言元素等
通过模型转换技术,将高层的SA模型逐步精化成能够支持实现的模型
封装底层的实现细节,使之成为较大粒度的构件,在SA指导下通过构件组装的方式实现系统,这往往需要底层中间件平台的支持
构件组装阶段
在构件组装的过程中,SA 设计模型起到了系统蓝图的作用
研究内容
如何支持可复用构件的互联,即对SA设计模型中规约的连接子的实现提供支持
在组装过程中,如何检测并消除体系结构失配问题
中间件遵循特定的构件标准,为构件互联提供支持,并提供相应的公共服务
安全服务
命名服务
中间件支持的连接子实现的优势
中间件提供了构件之间跨平台交互的能力,且遵循特定的工业标准,可以有效的保证构件之间的通信完整性
产品化的中间件可以提供强大的公共服务能力,这样能够更好的保证最终系统的质量属性
中间件导向的体系结构风格
middleware-induced architecture style
检测并消除体系结构失配
失配是指在软件复用的过程中,由于待复用构件对最终系统的体系结构和环境的假设月实际状况不同导致的冲突
失配问题主要包括
由构件引起的失配
由于系统对构件基础设施
构件控制模型和构件数据模型的假设存在冲突引起的失配
由连接子引起的失配
一系统对构件交互协议
连接子数据模型
由于系统成分对全局体系结构的假设存在冲突引起的失配
要解决失配问题,首先需要检测出失配问题,并在此基础上通过适当的手段消除检测出的失配问题
部署阶段
SA 对软件部署作用
提供高层的体系结构视图描述部署阶段的软硬件模型
基于SA模型可以分析部署方案的质量属性,从而选择合理的部署方案
部署方案的分析往往停留在定性的层面,并需要部署人员的参与
后开发阶段
软件部署安装之后的阶段
这阶段的研究主要
维护
演化
复用
典型的研究方向
动态软件体系结构
传统的SA研究设想体系结构总是静态的,软件的体系结构一旦建立,就不会在运行时刻发生变动
现实中的软件往往具有动态性,它们的体系结构会在运行时方式改变
SA在运行时发生的变化包括两类
软件内部执行所导致的体系结构改变
软件系统外部的请求对软件进行的重配置
动态软件体系结构研究分为两个部分
体系结构设计阶段的支持
变化的描述
根据变化如何生成修改策略
描述修改过程
在高抽象层次保证修改的可以行性以及分析
推理修改所带来的影响
运行时刻基础设施的支持
系统体系结构的维护
保证体系结构修改在约束范围内
提供系统的运行时刻信息
分析修改后的体系结构符合指定的属性
正确映射体系结构构造元素的变化到实现模块
保证系统的重要子系统的连续执行并保持状态
分析和测试运行系统等
体系结构恢复与重建
SA重是指从已实现的系统中获取体系结构结构的过程。
一般SA重建的输出是一个组体系结构视图
现有的体系结构重建方法
手工体系结构重建
工具支持的手工重建
获取基本体系结构单元
提供图形界面允许用户操作SA模型
支持分析SA模型
通过查询语言来自动建立聚集
在逆向工程工具下分析程序源代码,然后将所得到的体系结构信息存入数据库,并通过适当的查询语句得到有效的体系结构显示
使用其他技术
数据挖掘等
软件架构的重要性
架构设计能够满足系统的品质
系统地功能性是软件架构师通过组成体系架构地多种元素之间地交互作用来支持地
架构设计用实现系统品质
性能
安全性
可维护性
通过架构设计文档化,可以尽早地评估项目地品质
架构设计使受益人达成一致的目标
体系架构地过程需要确保架构设计被清楚地传达与理解
一个被有效传达地体系架构使得涉众们可以辩论决议和权衡,反复讨论,最终达成共识
文档化体系结构是非常重要地。这是软件架构师地主要职责
架构设计能够支持计划编制过程
架构设计将确定组件之间地依赖关系,直接支持项目计划和项目管理地活动
细节划分
日程安排
工作分配
成本分析
风险管理
技能开发
架构师还能协助估算项目成片
体系架构决定使用第三方组件地成本
以及支持开发地所有工具地成本
架构师支持风险的管理
制定每一个风险的优先次序
确定一个恰当的风险缓解策略
架构设计对系统开发的指导性
架构设计的主要目标是确保体系架构能够为设计人员和实现人员所承担的工作提供可靠的框架
为了确保最终体系架构的完整性,架构师必须明确的定义体系架构,因为它确定了体系架构的重要元素
系统的组件
组件之间的接口
组件之间的通信
架构师同时还必须定义恰当的标准和指导方针,它们将会引导设计人员与实现人员的工作
对开发过程活动采取恰当的架构回顾和指导方针,能够确保体系架构的完整性
架构设计能够有效地管理复杂性
体系架构通过构件及 构件之间关系,描述了一个抽象的系统,因而提供了高层次的复杂管理的方法
架构设计过程考虑组件的递归分解。这是处理一个大的问题的很好的一个方法,它可以把这个大问题分解成很多的小问题,再逐次的解决
架构设计为复用奠定了基础
架构设计过程可以同时支持使用和建立复用资源
复用资源可以降低一个系统的成本,并且可以改进系统的质量
一个体系架构的建立能够支持大粒度的资源复用
例如
体系架构的重要组件和它们之间的接口和质量,能够支持现货供应的组件,存在的系统和封装的应用程序等的选择
架构设计能够降低维护费用
首先最重要的是架构设计过程要确保系统的维护人员是一个主要的涉众
并且他们的需求被作为首要的任务满足
一个被恰当文档化的体系架构不应该仅仅为了减轻系统的可维护性
架构师还应该确保结合了恰当的系统维护机制
并且再建立体系架构的时候还要考虑系统的适应性和可扩充性
架构设计能支持冲突分析
架构设计的一个重要的好处是它可以允许我们在采取改变之前推断它所产生的影响
一个软件构架确定了主要的组件和它们之间的交互作用,两个组件之间的依赖性以及这些组件对于需求的可追溯性
基于架构的软件开发方法
体系结构的设计方法概述
基于体系结构设计方法(Architecture-Base Software Design, ABSD)
ABSD方法是体系结构驱动,即指构成体系结构的商业、质量和功能需求的组合驱动的
使用ABSD方法,设计活动可以从项目总体功能框架明确就开始,这意味着需求抽取和分析还没有完成,就开始了软件设计
设计活动的开始并不意味着需求抽取和分析活动的终止,而是应该与设计活动冰箱
ABSD方法的三个基础
功能的分解
在功能分解中,ABSD方法使用已有的基于模块的内聚和耦合技术
通过选择体系结构风格来实现质量和商业需求
软件模板的是使用
ABSD方法是递归的。且迭代的每一个步骤都是清晰地定义。因此不管设计是否完成,体系结构总是清晰地。这有助于降低体系结构设计地随意性
概念与术语
设计元素
ABSD 是一个自顶向下,递归细化地方法,软件系统的体系结构通过该方法得到细化,直到能产生软件构件和类
ABSD 方法使用的设计元素层次
在最顶层,系统被分解为若干概念子系统和一个或若干各软件模板
在第二层,概念子系统又被分解成概念构件和一个或若干各附加软件模板
设计元素
系统
概念子系统
概念构件
实际构件
模板
模板关系
聚会 空心圈
继承 实心圈
进化 虚线箭头
视角与视图
考虑体系结构时,重要的是从不同的视角(perspective) 来检查,这促使软件设计师考虑体系结构的不同属性
展示功能组织的静态视角能判断质量特性
展示并发行为的动态视角能判断系统行为特征
选择的特定视角或视图
逻辑视图
记录设计元素的功能和概念接口
进程视图
实现视图
配置视图
设计元素的功能定义了它本身在系统中的角色
用例和质量场景
用例
用例已经成为推测系统在一个具体设置中的行为的重要技术
用例被用在很多不同的场景
用例是系统的一个给予用户一个结果值得功能点
用例用来捕获功能需求
场景
在使用用例捕获功能需求得同时,我们通过定义特定场景来捕获质量需求,并称这个些场景为质量场景
使用质量场景捕获
变更
变更场景
性能
性能场景
可靠性
可靠性场景
交互性
交互性场景
质量场景必须包括预期的和非预期的
例如
一个预期的性能场景是估计每年用户数量增加10%的影响,一个非预期的场景是估计每年用户数量增加100%的影响
非预期场景可能不能真正实现,但它们在决定设计的边界条件时很有用
基于体系结构的开发模型
传统的软件开发过程
问题定义
需求分析
软件设计
软件实现
软件测试
ABSDM 模型把整个基于体系结构的软件过程划分为
体系结构需求
体系结构设计
体系结构文档化
体系结构复审
体系结构实现
体系结构演化
体系结构需求
需求是指用户对目标软件系统在功能、行为、性能、设计约束等方面的期望
体系结构需求受技术环境和体系结构设计师的经验影响
需求过程
需求获取
体系结构需求一般来自三个方面
系统的质量目标
系统的商业目标
系统开发人员的商业目标
软件体系结构需求获取过程
定义开发人员必须实现的软件功能,使用户能完成他们的任务,从而满足业务上的功能需求
获得软件质量属性,满足一些非功能需求
标识构件
该过程为系统生成初始逻辑结构,包括大致的构件
实现过程
生成类图
对类进行分组
在生成类图的基础上,使用一些标准对类进行分组可以大大的简化类图结构,使之更清晰
一般的
与其他类隔离的类形成一组
由概括关联的类形成一组
由聚合或合成关联的类形成一个附加组
把类打包成构件
把第二步得到的类簇打包成构件,这些构件可以分组合并成更大的构件
架构需求评审
组织一个由不同代表(分析人员,客户、设计人员、测试人员等)组成的小组,对体系结构需求及相关构件进行仔细审查
审查的主要内容
所获取的需求是否真实反映了用户的要求
类的分组是否合理
构件合并是否合理
必要时需要进行迭代
体系结构设计
体系结构设计是一个迭代过程,如果要开发的系统能够从已有的系统中导出大部分,则可使用已有系统的设计过程
软件体系设计过程
提出软件体系结构模型
在建立体系结构的初期,选择一个合适的体系结构风格是首要的。
把已标识的构件映射到软件体系结构中
把在体系结构需求阶段已标识的构件映射到体系结构中,将产生一个中间结构,这个中间件结构只包含那些能明确适合体系结构模型的构件
分析构件之间的相互作用
为了把所有已标识的构件集成到体系结构中,必须认真分析这些构件的相互作用和关系
产生软件体系结构
一旦决定了关键的构件之间的关系和相互作用,就可以在第二阶段得到的中间结构的基础上进行精化
设计评审
一旦设计了软件体系结构,必须邀请独立于系统开发的外部人员对体系结构进行评审
体系结构文档化
绝大数的体系结构都是抽象的,由一些概念的构件组成,要让系统分析员的和程序员去实现体系结构,还必须把体系结构进行文档化
体系结构文档化过程的主要输出结果
体系结构规格说明
测试体系结构需求的质量说明书
体系结构复审
复审的目标是标识潜在的风险,及早发现体系结构设计中的缺陷和错误。
体系结构是否满足要求
质量需求是否在设计中得到体现
层次是否清晰
构件划分是否合理
文档表达是否明确
构件的设计是否满足功能和性能的要求
体系结构实现
所谓实现就是要用实体显示出一个软件体系结构,即要符合体系结构所描述的结构性设计决策,分割成规定的构件,按规定方式互相交互
实现过程
分析与设计
构件实现
构件组装
系统测试
整个实现过程是以复审后的文档化的体系结构说明书为基础的
每个构件必须满足软件体系结构中说明的对其他构件的责任
最后一步是测试,包括单个构件的功能性测试和被组装应用的整体功能和性能测试
体系结构的演化
体系结构的演化过程
需求变化归类
首先对用户需求的变化进行归类,使变化的需求与已有的构件对应
对找不到对应构件的变动,也要做好标记,在后续工作中,将创新的构件以对应这部分变化的需求
制订体系结构演化计划
在改变原有构件之前,开发组织必须制订一个周密的体系结构演化计划,作为演化开发工作的指南
修改、增加或删除构件
更新构件的相互作用
构件组装与测试
技术评审
对以上步骤进行确认,进行技术评审,决定是否进行下一次迭代
软件架构风格
软件架构风格概述
软件体系结构风格是描述某一特定应用领域中系统组织方式的惯用模型
体系结构风格定义一个系统家族,即一个体系结构定义一个词汇表和一组约束
词汇表
构件
连接件类型
约束
系统是如何将这些构件和连接件组合起来的
体系结构风格反映了领域中众多系统所共有的结构和语义特性,并指导如何将各个模块和子系统有效的组织成一个完整的系统
经典软件体系结构风格
管道和过滤器
每个构件都有一组输入和输出
数据输入构件,经过内部处理,然后产生数据输出
这里的构件被称为过滤器
这种风格的连接件就像是数据流传输的管道,将一个过滤器的输出传入到另一个构件的输入口
数据抽象和面向对象组织
事件驱动系统
构件不直接调用一个过程,而是触发或广播一个或多个事件
系统中的其他构件中的过程在一个或多个事件中注册。当一个事件被触发,系统自动调用在这个事件中注册的所有过程。这样一个事件的触发就导致了另一个模块中的过程调用
分层系统
层次系统组成一个层次结构,每一层为上层服务,并作为下层客户
仓库系统及知识库
repository
两种构件
中央数据机构说明当前状态
队列构件在中央数据存储上执行
仓库
传统型数据库
构件控制共享数据
黑板系统
中央结构的当前状态触发进程执行的选择
C2风格
C2体系结构风格可以概括为通过连接件绑定在一起按照一组规则运作的并行构件网络
系统组织规则
系统中的构件和连接件都一个顶部和一个底部
构件的顶部应连接到某连接件的底部,构件的底部则应连接到某连接件的顶部。而构件与构件之间的直接连接是不允许的
一个连接件可以和任意数目的其他构件和连接件连接
当两个连接件进行直接连接时,必须由其中一个的底部到另一个的顶部
客户/服务器风格
它是通过一台物理上的宿主机相连接的非智能终端来实现宿主机上的应用程序
在多用户的环境中,宿主机应用程序即负责与用户的交互,又负责对数据的关联
宿主机上的应用程序一般分为
与用户交互的前端
管理数据的后端
C/S体系结构定义了工作站如何与服务器相连,实现部分数据和应用分布到多个处理机上
C/S的主要组成部分
数据库服务器
服务器负责有效的管理系统的资源
数据库安全性的要求
数据库访问并发性的控制
数据库前端的客户应用程序的全局数据完整性规则
数据库的备份与恢复
客户应用程序
主要任务
提供用户与数据库交互的界面
向数据库服务器提交用户请求并接收来自数据库服务器的信息
利用客户应用程序对存在于客户端的数据执行应用逻辑要求
网络
优点
硬件和软件的变化显示出极大的适应性和灵活性
易于对系统进行扩充和缩小
节约硬件成本
缺点
开发成本较高
客户端程序设计复杂
信息内容和形式单一
用户界面风格不一,使用繁杂,不利于推广使用
软件移植困难
软件维护和升级困难
层C/S结构风格
三层C/S结构增加一个应用服务器
可以将整个应用逻辑驻留在应用服务器上,而只有表示层存在于客户机上。这中结构称为瘦客户机
应用功能分成
表示层
应用的用户接口部分担负与应用逻辑间的对话功能
它用于用户从工作站输入的数据,并显示应用输出的数据
一般使用图形界面与用户交互,需求变更是只需要改写显示控制和数据检查,而不影响业务逻辑
功能层
应用的本体,负责具体的业务处理逻辑
表示层和功能层之间的数据交互尽可能地简洁,相关信息一次性传输完成
数据层
通常是数据库管理系统,负责管理对数据库数据地读写
三层结构进行明确分割,不同层构件相互独立,层间地接口简洁,适合复杂事务处理
浏览器/服务器风格
B.S是三层结构的一种实现
B.S结构的不足
B/S结构缺乏对动态页面的支持能力。没有集成有效的数据库处理能力
扩展能力差,安全性难以控制
应用系统在数据查询等响应速度上,要运低于C/S结构
数据提交一般以页面为单位,数据的动态交互性不强,不利于在线事务处理(online transaction processing OLTP)应用
很多应用系统常以C/S和BS混合应用形式出现
特定领域软件体系结构
DSSA的定义
Domain Specific Software Architecture, DSSA
定义
DSSA就是专用于一类特定类型的任务(领域)的、在整个领域中能有效的使用的、为成功构造应用系统限定了标准的组合结构的软件构件的集合
一个特定的问题领域中支持一组应用的领域模型、参考需求、参考体系结构等组成的开发基础,其目标就是支持在一个特定领域中多个应用的生成
DSSA的必备特征
一个严格定义的问题域和问题解域
具有普遍性。使其可以用于领域中某个特定应用的开发
对整个领域的构件组织模型的恰当抽象
具备该领域固定的、典型的开发过程中可重用元素
从功能覆盖的范围角度有两种理解DSSA中的领域的含义方式
垂直域
定义了一个特定的系统族,包括整个系统族内的多个系统,结果是在该领域中可作为系统的可行解决方案的一个通用软件体系结构
水平域
定义了在多个系统和多个系统族中功能区城的共有部分。在子系统之上涵盖多个系统族的特定部分功能
DSSA的基本活动
领域分析
这个阶段的主要目标是获取领域模型
领域模型描述领域中系统之间的共同的需求
定义领域边界
明确分析的对象
识别信息源
现存系统
技术文献
问题域
系统开发的专家
用户调查
市场分析
领域演化的历史记录
领域设计
这个阶段的目标是获取DSSA
DSSA描述在领域模型中表示的需求的解决方案
领域实现
这个阶段的主要目标是依据领域模型和DSSA开发和组织可重用信息
参与DSSA的人员
领域专家
包括
该领域中系统的有经验的用户
从事该领域中系统的需求分析、设计、实现以及项目管理的有经验的软件工程师等
主要任务
提供关于领域中系统的需求规约和实现的知识
帮助组织规范的、一致的领域字典
帮助选择样本系统作为领域工程的依据
复审领域模型、DSSA等领域工程产品
应该熟悉
系统的软件设计和实现
硬件限制
未来的用户需求及技术走向
领域分析人员
应具有知识工程背景的有经验的系统分析员来担任
主要任务
控制整个领域分析过程
进行知识获取
将获取的知识组织到领域模型中
根据现有系统、标准规范等验证领域模型的准确性和一致性
维护领域模型
能力
应该熟悉软件重用和领域分析方法
熟悉进行知识获取和知识表示所需的技术、语言和工具
应具有一定的该领域的经验
应具有较高的进行抽象、关联和类比的能力
应具有较高的与他人交互和合作的能力
领域设计人员
应由有经验的软件设计人员来担当
主要任务
控制整个软件设计过程
根据领域模型和现有的系统开发出DSSA
对DSSA的准确性和一致性进行验证
建立领域模型和DSSA之间的联系
能力要求
应熟悉软件重用和领域设计方法
熟悉软件设计方法
应有一定的该领域的经验,以便于分析领域中的问题及与领域专家进行交互
领域设计人员
应由有经验的程序设计人员来担任
主要任务
根据领域模型和DSSA,或者从头开发可重用构件
或者利用再工程的技术从现有系统中提取可重用构件
对可重用构件进行验证
建立DSSA与可重用构件间的联系
能力要求
熟悉软件重用、领域实现及软件再工程技术
熟悉程序设计
具有一定的该领域的经验
DSSA的建立过程
DSSA建立过程分为5个阶段
定义领域范围
定义领域特定的元素
定义领域特定的设计和实现需求约束
定义领域模型和体系结构
产生,搜集可重用的产品单元
DSSA建立的过程是并发的、递归的和反复进行的。
该过程的目的是将用户的需求映射到基于实现限制集合的软件需求,这些需求定义了DSSA
系统架构的评估
系统架构评估概述
性能
performance
系统响应能力
性能测试经常要使用基准测试程序
可靠性
reliability
软件系统在应用或系统错误面前,在意外或错误使用的情况下维持软件系统的功能特性 的基本能力
可靠性同城用平均失效等待时间(mean time to failure,MTTF) 和平均失效间隔时间( mean time between failure, MTBF)来衡量
可靠性可以分为
容错
目的是在错误放生的时候确保系统正确的行为,并进行内部修复
健壮性
保护应用程序不受错误使用和错误输入的影响,在遇到意外错误时间时确保应用系统处于定义好的状态
和容错相比健壮性并不是说在错误发生时可以继续运行,它只能保证软件按照某种已经定义好的方式终止执行
软件体系结构对软件系统的可靠性有巨大的影响
可用性
availability
系统能够正常运行的时间比例
经常用两次故障之间的时间长度或在出现故障时系统能够恢复正常的速度来表示
安全性
security
系统在向合法用户提供服务的同时能够阻止非授权用户使用的企图和拒绝服务的能力
安全性时根据系统可能受到的安全威胁的类型来分类的
安全性可分为
机密性
保证信息不泄露给未授权的用户、实体或过程
完整性
保证信息的完整和准确,防止信息被非法修改
不可否认性
可控性
保证对信息的传播及内容具有控制的能力,防止非法者所用
可修改性
功能性
functionality
系统所能完成所期望的工作的能力
一项任务的完成需要系统中许多或大多数构件的相互协作
可变性
changeability
体系结构经扩充或变更而成为新体系结构的能力
这种新体系结构应该符合预先定义的规则,在某些具体方面不同于原有的体系结构
互操作性
inter-operation
作为系统组成部分的软件不是独立存在的,经常与其他系统或自身环境相互作用,为了支持互操作性,软件体系结构必须为外部可视的功能特性和数据结构提供精心设计的软件入口
评估中重要的概念
敏感点和权衡点
sensitivity point & tradeoff point
敏感点和权衡点是关键的体系结构决策
敏感点是一个或多个构件的特性
权衡点是影响多个质量属性的特性,是多个属性的敏感点
风险承担或者称为利益相关人
stakeholder
系统体系结构涉及很多人的利益,这些人都对体系结构施加各种影响,以保证自己的目标能够实现
系统架构评估中的风险
系统生产者
软件架构师
对其他风险承担者提出的质量需求的环节和调停
开发人员
体系结构描述的清晰与完整、各部分的内聚性与受限耦合、清楚的交互机制
维护人员
可维护性,确定出某个更改发生后必须对系统中哪些地方进行改动的能力
集成人员
可维护性,确定出某个更改发生后必须对系统中哪些地方进行改动的能力
测试人员
集成、一致的错误处理协议,受限的构件耦合、构件的高内聚性、概念完整性
标准专家
对所关心问题的分离、可修改性和互操作性
性能工程师
易理解性、概念完整性、性能、可靠性
安全专家
安全性
项目经理
体系结构层次清晰,便于组建小组;任务划分结构、进度标志和最后期限等
产品线经理
可重用性,灵活性
系统消费者
最终用户
功能性、可用性
应用开发者(对产品体系结构而言)
体系结构的清晰性、完整性、简单交互机制、简单裁减机制
任务专家、任务规划者
功能性、可用性、灵活性
用户
开发的进度,总体预算、系统的有用性、满足需求的情况
系统服务人员
系统管理员
容易找到可能出现问题的地方
网络管理员
网络性能、可预测性
技术支持人员
使用性、可服务性、可裁减性
其他人员
领域代表
可互操作性
系统设计师
可移植性、灵活性、性能和效率
设备专家
可维护性、性能
场景
场景(scenarios)在进行体系结构评估是,一般首先要精确的得出具体的质量目标,并以之作为判定该体系结构优劣的标准
场景是从风险承担者的角度对与系统的交互的简短描述
对场景描述的三个方面
刺激
stimulus
环境
enviroment
响应
response
主要评估方法
SAAM
Scenarios-based Architecture Analysis Method
一种非功能质量属性的体系结构分析方法,是最早形成文档并得到广泛使用的软件体系结构分析方法
评估方向
特定目标
SAAM的目标是对描述应用程序属性的文档,验证基本的体系结构假设和原则
此外,该分析方法有利于评估体系结构雇佣的风险
评估技术
SAAM所使用的评估技术是场景技术
场景代表了描述体系结构属性的基础,描述了各种系统必须支持的活动和将要发生的变化
质量属性
把任何形式的质量属性都具体化为场景,但可修改性是SAAM分析的主要质量属性
风险承担者
SAAM协调不同参与者所感兴趣的方面,作为后续决策的基础,提供了对体系结构的公共理解
体系结构描述
SAAM用于描述体系结构的最后版本,但早于详细设计
体系结构的详细描述形式应当被所有参与者理解
描述体系结构的三个主要方面
功能
结构
分配
方法活动
SAAM的主要输入问题
问题描述
需求声明
体系结构描述
SAAM分析评估体系结构的过程
场景开发
体系结构描述
单个场景评估
场景交互
总体评估
通过各类风险承担者协商讨论,开发一些任务场景,体现系统所支持的各种活动
用一种易于理解的、合乎语法规则的体系结构描述SA,体现系统的计算构件、数据构件已经构件之间的关系(数据和控制)
对场景(直接场景和间接场景)生成一个特定体系结构的场景描述列表。通过对场景交互的分析,能得出系统中所有场景对系统中的构件所产生音响的列表,最后对场景和场景间的交互作一个总体的权衡和评价
目前知识库的可重用性
SAAM不考虑这个问题
方法验证
SAAM是一种成熟的方法,已被应用到众多系统中
这些系统包括
空中交通管制
嵌入式音频系统
WRCS(修正控制系统)
KWIC(根据上下文查找关键词系统)
ATAM
体系结构权衡分析方法
Architecture Tradeoff Analysis Method, ATAM
在SAAM体系基础上发展起来的,主要针对性能、实用性、安全性和可靠性,在系统开发之前对这些质量属性进行评价和折中
评估方向
特定目标
ATAM的目标是在考虑多个相互影响的质量属性的情况下,从原则上提供一种理解软件体系结构的能力的方法
质量属性
ATAM方法分析多个相互竞争的质量属性
开始时考虑的是系统的
可修改性
安全性
性能
可用性
风险承担者
在场景、需求收集有关活动中,ATAM方法需要所有系统相关人员的参与
体系结构描述
体系结构空间受到历史遗留系统、互操作性和以前失败的项目的 约束
在5个基本结构的基础上进行体系结构描述
5个结构是从Kruchten 的4+1视图派生而来的
其中逻辑视图被分为
功能结构
代码结构
这些结构加上它们之间适当的映射可以完整的描述一个体系结构
用一组消息顺序视图显示运行时的交互和场景,对体系结构描述加以注解。ATAM方法被用于体系结构设计中,或被另一组分析人员用于检查最终版本的体系结构
评估技术
可以把ATAM看成一个框架,该框架依赖于质量属性,可以使用不同的分析技术
它集成了多个优秀的单一理论模型,其中每一个都能够高效、实用的处理属性
该方法使用了场景技术,从不同的体系结构角度,有三种不同类型的场景
用例
包括对系统典型的使用,还用于引出信息
增长场景
用于涵盖与它的系统修改
探测场景
用于涵盖那些可能会对系统造成压迫的极端修改
定性的启发分析方法
Qualitative Analysis Heuristics
对一个质量属性构造了一个精确分析模型时要进行分析
定性的启发分析方法就是这种分析的粗粒度版本
方法的活动
主要活动领域或阶段
场景和需求收集
体系结构视图和场景实现
属性模型构造和分析
折中
属性专家独立地创建和分析他们的模型,然后交换信息(澄清和创建新的需求)
属性分析是相互依赖的,因为每个属性都会涉及其他的属性
获得属性交互的方法
使用敏感度分析来发现折中点
通过检查假设
领域知识库的可重用性
领域知识库通过基于属性的体系结构风格维护
基于属性的体系结构风格
Attribute-Based Architectare Style,ABAS
ABAS有助于从体系结构风格的概念转向基于特定质量属性模型的推理能力
获取一组基于属性的体系结构风格的目标在于要把体系结构设计变得更为惯性化、更可预测,并得到一个基于属性的体系结构分析的标准问题集合,使设计与分析之间的联系更为紧密
方法验证
该方法已经应用到多个软件系统,但仍处在研究之中
影响和制约分析评估技术发展的问题
体系结构的描述
质量特征的分析
场景不确定性的处理
度量的应用体系结构分析和评价支持工具
6.UML建模与架构文档化
UML现在与发展
UML起源
OMG(Object Management Group)
UML体系结构演变
4层元模型体系结构模式
元-元模型
元模型
UML是用元模型来描述的
模型层
用户对象层
元模型体系结构模式已被证明可以用来定义复杂模型所要求的精确语义
元模型体系结构模式的特点
它在每一次都递归定义语义结构,从而使语义更精确、更正规
它可以用来定义重量级和轻量级扩展机制,如定义新的元类和构造型
它在体系结构上将UML元模型与其他基于4层元模型体系结构的标准统一起来
UML元模型又被分为三个逻辑子包
基础包
包含
核心
扩展机制
数据类型
支持
类图
对象图
构件图
部署图
它是描述模型静态结构的语言底层结构
行为元素包
描述模型动态行为的语言上层结构
支持
不同的行为图
Use Case(用况)图
顺序图
协作图
状态图
活动图
依赖于基础包
模型管理包
定义了模型元素进行分组和管理的语义
包括
包
模型
子系统
依赖于基础包
解决UML1.1的遗留问题
完善活动图的语义和表示法
清理关系的标准元素
体系结构的一致性
其他变化
静态结构图
用例图
泛化
包含
延伸
交互图
模型管理图
为UML2.0确立路标
体系结构
扩展性
构件
关系
状态图和活动图
模型管理
总体机制
UML的应用与未来
UML是在多种面向对象建模方法的基础上发展起来的建模语言,主要用于软件密集型系统的建模
它的演化按性质分为
最初阶段
有面向对象方法学专家将他们各自的方法结合在一起形成UML9.0
第二阶段
由十几家公司组成的UML伙伴组织将各自的意见加入UML形成UML1.0和1.1,并作为向OMG申请成为建模语言规范的提案
第三阶段
在OMG控制下的修订和改进
UML基础
概述
UML通过图形化的表示机制从多个侧面对系统的分析和设计模型进行刻画
UML分为4大类10种视图
用例图
从外部用户的角度描述系统的功能,并指出功能的执行者
use case diagram
静态图
包括
类图
class diagram
描述系统的静态结构
类图的节点表示系统中的类及其属性和操作
类图的边表示类之间的联系
继承
关联
依赖
聚合
对象图
object diagram
类图的一个实力,它描述在某种状态下或某一时间段,系统中活跃的对象及其关系
包图
package diagram
描述系统的分解机构
它表示包以及包之间的关系
包的组成
子包
类
包之间的关系
继承
构成
依赖
行为图
交互图
interactive diagram
描述对象之间的消息传递
又可分为
顺序图
sequence diagram
强调对象之间消息发送的时间序
合作图
collaboration diagram
强调对象间的动态协作关系
也可通过消息序号来表示消息传递的时间序,只不过这种表示不如顺序图那样直观
状态图
statechart diagram
描述类的对象的动态行为,它包含对象所有可能的状态、在每个状态下能够响应的事件已经事件发生时的状态迁移与响应动作
活动图
active diagram
描述系统为完成某项功能而执行的操作序列,这些操作序列可以并发和同步
包括
控制流
信息流
实现图
implementation diagram
包括
构件图
component diagram
描述软件实现系统中各组成部件以及它们之间的依赖关系
部署图
deployment diagram
描述作为软件系统运行环境的硬件及网络的物理体系结
其节点表示实际的计算机和设备
边表示节点之间的物理连接关系,也可显示连接的类型及节点之间的依赖性
描述软件实现系统的组成和分布状况
用例和用例图
用例(use case)
在UML中用例用一个椭圆表示,用例名往往用动宾或主谓结构命名
定义
定义1: 用例是对一个活动者(actor) 使用系统的一项功能时所进行的交互过程的一个文字描述序列
定义2:用例是系统、子系统或类和外部的参与者(actor)交互的动作序列的说明,包括
可选的动作序列
会出现异常的动作序列
用例是代表系统中各相关人员之间就系统的行为所达成的契约
软件开发过程和用例的关系
需求分析阶段
需求分析阶段是分析人员与客户沟通的工具和项目规模估算的
设计阶段
用例是系统功能设计的主要输入
实现阶段
用例是检验类行为正确的文档
面向对象的软件开发过程是用例驱动的
用例分析
用例分析可以支持领域建模(domain modeling)以确保定义正确的需求(right requirments),是保证OO软件开发成功的基础,但是要在具体项目中灵活使用用例来捕获用户的需求不是一件容易的事情,往往需要用户的经验、沟通能力、丰富的领域知识
用例分析是一种功能分解(functionalitydecomposition)的技术,并未使用到面向对象的思想,但用例是UML的重要部分,确定一个系统的用例是开发OO系统的第一步。
编写用例的元素
参与者
角色(actor)
指系统以外的、需要使用系统或与系统交互的东西
包括
人
设备
外部系统
有很多不同的译名
参与者
活动者
执行者
行动者
与用例的关系
一个参与者可以执行多个用例
一个用例可以由多个参与者使用
参与者实际上不是系统的一部分
参与者实际上是一个版型化的类,其版型是《Actor》
参与者的三种表示形式
图标(Icon)形式
标签(Label)形式
修饰(Decoration)形式
用例间的关系
关系
用例与参与者有关联关系
关联(association)
用例之间的关系(relationship)
泛化(generalization
包含(include)
指两个用例之间的关系,其中一个用例(称作基本用例,base use case)的行为包含了另一个用例(称作包含用例,inclusion use case)的行为
包含关系是依赖关系的版型,也就是说包含关系是比较特殊的依赖关系,它们比一般的依赖关系多一些语义
扩展(extend)
扩展关系的基本含义与泛化的关系类似,但扩展关系中,对于扩展用例(extension use case) 有更多的规则限制,即基本用例必须声明若干扩展点(extension point),而扩展用例只能在这些扩展点上增加新的行为和含义
用例图
use case diagram
用例图是显示一组用例、参与者已经它们之间关系的图
在UML中一个用例模型由若干个用例图描述
用例的描述
用例的描述才是用例的核心部分
用例采用自然语言描述参与者与系统进行交互时双方的行为,不追求形式化的语言表达
典型描述方式
用例
编号+名称
用例及特征
用例在系统中的目标
用例目标描述
范围
当前考虑的是哪个系统
级别
概要任务
首要任务
子功能
当前条件
用例执行前系统应具有的状态
成功后续条件
用例成功执行后应具有的状态
失效后续条件
用例没有完成目标的状态
触发
启动该用例执行的系列动作
角色
首要角色
与该用例关联的首要角色
主场景
动作序列
步骤编号+动作描述+系统响应
扩展场景
动作序列
步骤编号+动作描述+系统响应
相关信息(可选)
优先级
该用例对于系统、组织的关键程度
性能目标
该用例的执行时间耗费
频度
该用例被执行的频度
与首要角色的联系渠道
交互式
静态文件
数据库
存在问题
列出关于用例的未解决问题
交互图
interaction diagram
交互图是用来描述对象之间已经对象与参与者之间的动态协作关系以及协作过程中行为次序的图形文档
它通常用来描述一个用例的行为,显示该用例中所涉及的对象和这些对象之间的消息传递
交互图包括
顺序图
sequence diagram
顺序图着重描述对象按照顺序的消息交换
顺序图也称为时序图
顺序图是显示对象之间交互的图,这些对象是按时间顺序排列的。特别的,顺序图中显示的是参与交互的对象及对象之间消息交互的顺序
顺序图是一个二维图形,在顺序图中水平方向 为对象维,沿水平方向排列的是参与交互的对象,其中对象间的排列顺序并不重要,但一般把表示参与者的对象放在图的两侧,主要参与者放在最左边,次要参与者放在最右边 (或者表示人的参与者放在最左边,表示系统的参与者放在最右边
顺序图中的垂直方向为时间轴,沿垂直向下的方向按时间递增的顺序列出各对象所发出和接收的消息
协作图
collaboration diagram
协作图着重描述系统成分如何协同工作
协作图是用于描述系统的行为是如何由系统的成分协作实现的图
协作图中包括的建模元素
对象
参与者实例
多对象
主动对象
消息
链接
顺序图和协作图从不同角度表达了系统中的交互和系统的行为,它们之间可以相互转化
一个用例需要多个顺序图或协作图,除非特别简单的用例
类图和对象图
类
类是拒用相似结构、行为和关系的一组对象的抽象
在UML中类表位划分三个格子的长方形
在定义类的时候,类的命名应尽量用应用领域中术语,应明确、无歧义,以利于开发人员与用户之间的相互理解和交流
类之间的关系
关联
association
关联是模型元素间的一种语义联系,它是对具有共同的结构特性、行为特性、关系和语义的链(link)的描述
链是一个实例,就像对象是类的实例一样,链是关联的实例,关联表示的是类与类之间的关系,而链表示的是对象与对象之间的关系
在类图中,关联用一条把类连接在一起的实线表示
关联两端的类可以某种角色参与关联
角色拒用多重性(multiplicity),表示可以有多个对象参与关联
关联类
association calss
通过关联类可以进一步描述关联的属性、操作以及其他信息
关联类通过一条虚线与关联连接
自返关联
reflexive association
又称递归关联
recursive association
是一个类与自身的关联,即一个类的两个对象的关系
自返关联虽然只有一个被关联的类,但有两个关联端,每个关联端的角色不同
聚集
aggregtion
聚集是一种特殊形式的关联。聚集表示类之间整体与部分的关系
在对系统进行分析和设计时,需求描述中的“包含”、组成、分为。。。部分 等词常常意味着存在聚集关系
在UML中,使用一端为菱形的实线表示,空心菱形指向整体,实线连接部分。同时表明整体与部分的对应关系
组合
composition
表示类之间的整体与部分的关系,但组合关系中的整体与部分具有同样的生存期
组合是一种特殊形式的聚集
泛化
generalization
泛化定义了一般和特殊元素之间的关系
类和类之间的泛化关系就是类与类之间的继承关系
UML中,用一头为空心三角形的连线表示
依赖
假设有两个元素 X Y ,如果修改元素X的定义可能会导致另一个元素Y的定义的修改,则称为元素Y依赖于元素X
类图
类图以直观、抽象形式展示了不同对象之间的关系
状态图和活动图
状态图
state chart diagram
UML中 状态图主要用于描述一个对象在其生存期间的动态行为,表现一个对象所经历的状态序列,引起状态转移的时间,以及因状态转移而伴随的动作。
状态图在检查、调试和描述类的动态行为时非常有用,一般可以用状态机对一个对象的生命周期建模,状态图是用于显示状态机的,重点在于描述状态之间的控制流
活动图
活动图可以用于描述系统的工作流程和并发行为
活动图其实可以看作状态图的特殊形式,活动图中一个活动结束后将立刻进入下一个活动(在状态图中状态的转移可能需要事件的触发)
活动图的基本概念
活动
activity
活动表示的是某个流程中的任务的执行,它可以表示某算法过程中语句的执行
在活动图中需要注意区分动作状态(action state) 和活动状态(activity state) 者两个概念
动作状态
动作状态是原子的,不能被分解,没有内部转移,没有内部活动,动作状态的工作所占用的时间是可忽略的
动作状态的目的是执行进入动作(entry action) 然后转向另一个状态
活动状态
活动状态是可分解的,不是原子的,其工作的完成需要一定的时间
可以把动作状态看作活动状态的特例
泳道
swimlane
泳道是活动图中的区域划分,根据每个活动的职责对所有活动进行划分,每个泳道代表一个责任区
泳道和类并不是一一对应的关系,泳道关心的是其所代表的职责
一个泳道可能由一个类实现,也可能由多个类实现
分支
在活动图中,对于一个触发时间,可以根据不同的警戒条件向不同的活动,每个可能的转移是一个分支
branch
分叉和汇合
分叉 fork
表示两个或多个控制流经过分叉后,这些控制流并发进行
汇合 join
汇合正好相反,两个或多个并发控制流经过汇合后,合并成一个控制流
如果表示系统或对象中的并发行为,则可以使用分叉和汇合两种建模元素
对象流
在活动图中可以出现对象,对象可以作为活动的输入和输出。
活动图中的对象流表示活动和对象之间的关系。
构件图
componentdiagrama
构件是系统中遵从一组接口且提供其实现的、物理的、可替换的部分
构件图则显示一组构件以及它们之间的相互关系
编译
链接
执行时构件之间的依赖关系
构件的类型
部署构件
deployment component
如
dll
com+对象
corba对象
EJB
动态Web页
数据库表
工作产品构件
work product component
如
源文件
数码文件
子主题
执行构件
execution component
系统执行后得到的构件
构件图可以对两个方面建模
对源代码文件之间的相互关系建模
对可执行文件之间的相互关系建模
部署图
部署图也称配置图、实施图
它可以用来显示系统中计算结点的拓扑结构和通信路径与结点上运行的软构件等
一个系统模型只有一个部署图,部署图常用于帮助理解分布式系统
部署图由体系结构设计师、网络工程师、系统工程师等描述
基于UML的软件开发过程
开发过程概述
初启
在初启阶段,软件项目的发起人确定项目的主要目标范围,并进行初步的可行性分析和经济效益分析
细化
初步需求分析
采用UML的用例描述目标软件所有比较重要、比较有风险的用例,利用用例图标表示参与者与用例以及用例与用例之间的关系
采用UML的类图表示目标软件系统所基于的应用领域中的概念与概念之间的关系。这些相互关联的概念构成领域模型
领域模型
一方面可以帮助软件项目组理解业务背景,与业务专家进行有效沟通
另一方面,随着软件开发阶段的不断推荐,领域模型将成为软件结构的主要基础
如果领域中含有明显的流程处理成分,可以考虑利用UML的活动图来刻画领域中的工作流,并标识业务流程中的并发、同步等特征
初步高层设计
如果目标软件系统的规模比较庞大,那么经初步需求分析获得的用例和类将会非常多。此时,可以考虑根据用例、类在业务领域中的关系或者根据业务领域中某种有意义的分类方法将整个软件系统规划分为若干个包,利用UML的包图刻画这些包及其间的关系
这样,用例,用例图、类、类图将依据包的划分方法分属于不同的包,从而得到整个目标软件系统的高层结构
部分的原型构造
在许多情形下,针对某些辅助的用例构造可实际的运行原型是降低技术风险、让用户帮忙软件项目组确认用户需求的最有效的方法
为了构造原型,需要针对用例生成详尽的交互图,对所有相关类给出明确的属性和操作定义
综上所述
在细化阶段可能需要使用的UML语言机制
描述用户需求的用例及用例图
表示领域模型的类图
表示业务流程的活动图
表示系统高层结构的包图
表示用例内部实现过程的交互图
构建
构造阶段
开发人员通过一系列的迭代完成对所有用例的软件实现工作,在每次迭代中实现一部分用例
以迭代的方式实现所有用例的好处在于,用户可以及早的参与对已实现用例的实际评价,并提出改进意见。这样可以有效的降低大型软件系统的开发风险
在实际开发构造软件系统之前,有必要预先制定迭代计划
计划制定的遵循的两项原则
用户认为业务价值较大的用例应优先安排
开发人员评估后认为开发风险较高的用例应优先安排
在迭代计划中
要确定迭代次数
每次迭代所需时间以及每次迭代中应完成的用例
每次迭代过程由针对用例的5个子阶段
分析
设计
编码
测试
集成
在集成之后
用户可以对用例的实现效果进行评估,并提出修改意见
这些修改意见可以在本次迭代过程中立即实现,也可以在下次迭代中再予以考虑
构建过程中
需要使用UML的交互图来设计用例的实现方法。为了与设计得出的交互图协调一致,需要修改或精化在细化阶段绘制的作为领域模型的类图,增加一些为软件实现所必须的类、类的属性或方法
在构建阶段的每次迭代过程中
可以对细化阶段绘制出的包图进行修改或精化,以便包图切实反映目标软件系统最顶层的结构划分状况
综上所述
在构建阶段可能需要使用的UML语言机制包括
用例以及用例图
他们是开发人员在构造阶段进行分析和设计的基础
类图
在领域概念模型的基础上引进为软件实现所必需的类、属性和方法
交互图
表示针对用例设计的软件实现方法
状态图
表示类的对象的状态-事件-响应行为
活动图
表示复杂算法过程,尤其是过程中的并发和同步
包图
表示目标软件系统的顶层结构
构件图
部署图
部署
开发人员将构造阶段获得的软件系统在用户实际工作环境(或接近实际的模拟环境)中试运行,根据用户的修改意见进行少量调整
基于UML的需求分析
基于UML的需求分析过程的步骤
利用用例及用例图表示需求
从业务需求描述出发获取执行者和场景
对场景进行汇总、分类、抽象,形成用例
确定执行者与用例、用例与用例图之间的关系,生成用例图
利用包图及类图表示目标软件系统的总体框架
根据领域知识、业务需求描述和既往经验设计目标软件系统的顶层架构
从业务需求描述中提前关键概念,形成领域模型
从概念模型和用例出发,研究系统中主要的类之间的关系,生成类图
生成用例
从外部用户的视角看,一个用例是执行者(actor)与目标软件系统之间的一次典型的交互作用
从软件系统内部的视角出发,一个用例达标系统执行的一系列动作,动作执行的结果能够被外部的执行者所察觉
执行者是指外部用户或者外部实体在系统中扮演的角色
如果多个用户在使用目标软件系时扮演同一角色,这些用户将由单一执行者表示
如果一个用户扮演多种角色,则需要用多个执行者来表示同一用户
对用例的完整描述包括
用例名称
参与执行者
前置条件
一个主事件流
表示正常情况下执行者与系统之间的信息交互及动作序列
零到多个辅事件流
表示特殊情况或异常情况下执行者与系统之间的信息交互及动作序列
后置条件
用例主要来源与分析人员对场景的分类和抽象,即将相似的场景进行归并,是一个用例可以通过实例化和参数调节而涵盖多个场景
用活动图表示用例
生成用例图
执行者与用例之间的关系有两种
触发执行
信息交换
执行者与用例之间可能兼具这两种关系
在UML用例图中,从执行者指向用例的边表示触发执行和/或者信息交互,从用例指向执行者的边则表示用例将其他生成的信息传递给执行者
建立顶层架构
顶层架构的主要目的是为后续的分析和设计活动建立一种结构和分划,以便开发人员在不同的开发阶段,以及同一开发阶段的不同开发人员,能够聚焦于系统的不同部分。
顶层架构是分析和设计的阶段成果的承载体。随着开发过程的推进,框架中的内容不断丰富、详实,最终演进为完整的面向对象软件结构
UML包图
包是UML对类进行分组的一种机制
可以从某种视角将具有比较密切的关联的一些类划分为一个包,分属于不同包的两个类之间的关联则比较松散
对于大型软件系统而言,包的划分是实现分而治之的重要技术手段
包之间存两种依赖关系
依赖
如果对类A的修改将导致类B的改变,则称B依赖于A
构成
如果两个包中存在具有依赖关系的两个类,则认为这两个类分属的包之间存在依赖关系
顶层架构设计
软件系统顶层架构的基本方法是,结合实际需求,从既往的架构设计经验模式中选取适当者,再进行微调或局部改造
主要的架构模式
流程处理模式
流程处理系统以算法和数据结构为中心,其系统功能由一系列的处理步骤构成,相邻的处理步骤之间以数据流通管道相互连接
客户/服务器模式
客户端负责用户输入和处理结果的呈现
服务端负责后台业务逻辑处理
MVC模式
模型--视图--控制器
Model view controller
该模式将整个系统分为
模型
负责维护并保存具有持久性的业务数据,实现业务处理功能,并将业务数据的变化情况及时通知视图
视图
负责呈现模型中包含的业务数据,响应模型变化通知,更新呈现形式,并向控制器传递用户界面动作
控制器
负责将用户的界面动作映射到模型中的业务处理功能并实际调用之,然后更加模型返回的业务处理结果选择新的视图
MVC适用于分布式应用软件,尤其是web应用系统
分层模式
最顶层
直接面向用户提供软件系统的操作界面
其余各层
为紧邻其上的层次提供服务
应用
分层模式可以有效的降低软件系统耦合度
事实上,大型软件的顶层架构往往需要复合使用多种架构样式
将整个目标软件系统采用分层结构
在系统的不同层次再分别使用适宜的其他种类的架构模式
确立顶层架构的过程中需要综合考虑的因素
架构中包的数量
架构中包之间的耦合度
软件系统的必然性
软件元素的安全、保密级别
开发团队的技术专长
建立概念模型
面向对象设计方法
设计用例实现方案
UML的交互图(顺序图、协作图)适用于用例实现方案的表示
该设计方法包含三个步骤
提取边界类、实体类和控制类
边界类
用于描述目标软件系统与外部环境之间的交互
并负责实现的功能
界面控制
包含输入数据的格式及内容转换
输出的结果的呈现以及软件运行过程中界面的变化写切换等
外部接口
实现目标软件系统与外部系统或外部设备之间的信息交流和互操作
主要关注跨越目标软件系统边界的通信协议
环境隔离
将目标软件系统与操作系统、数据库管理系统、应用服务器中间件等环境软件进行交互的功能与特性封装与边界类之中,使目标软件系统的其余部分尽可能的独立与环境软件
在UML类图中,边界类往往附加UML构造型<boundary>作为特别标识
实体类
表示目标软件系统中具有持久意义的信息项及其操作
实体类的操作具有内向收敛特征,它们只向目标软件系统的其余部分提供读写信息项内容的必要的操作接口,并不涉及业务逻辑处理
实体类的UML构造型《entity》
控制类
作为完成用例任务的责任承担者,协调、控制其他类共同完成用例规定的功能或行为
对于比较复杂的用例,控制类通常并不处理具体的任务细节,但是它应知道如何分解任务,如何将子任务分派给适当的辅助类,以及如何在辅助类之间进行消息传递和协调
控制类UML构造型《controll》
通常情况下,执行者与用例之间的一种通信连接对应一个边界类。但是如果两个以上的用例与同一执行者交互,并且这些交互具有共同行为、完成相同或类似的任务,就可以考虑用同一边界类实现用例与执行者之间的交互。这就意味着边界类的作用范围可以超越单个用例
构造交互图
UML交互图,以交互图作为用例的精确实现方案
用例描述中已包含事件流的说明,事件流的事件应直接对应于交互图中的消息,而事件间的先后关系体现为交互图中的时序,对消息的响应则构成消息接收者的职责。这种职责在后续的设计活动中将被确立为类的方法
设计复杂用例的实施方案时,应考虑为控制类设置一些独立辅助类,让控制类将一些任务委托给辅助类完成
再用例描述中,许多用例主事件流外,往往还包含备选事件流,以说明某些特殊异常在异常情况下的事件和相应动作序列
根据交互图精化类图
在UML交互图中,对每个类的对象都规定了
它必须响应的消息
类的操作
类的对象之间的消息传递通道
类之间的连接关系
因此,可以利用交互图精化分析模型中的类图,将交互图中出现的新类添加到原有类图中,并且对相关的类进行精化,定义其属性和操作
原则上,每个类都应该有一个操作来响应交互图中指向对象的哪条消息。但是,这并不意味着消息与操作一定会一一对应,因为类的一个操作可能具有响应多条消息的能力
同理,两个类之间的一条连接关系也可以为多条消息提供传递通道。为了设计模型,也为了提高重用程度,设计人员应该尽量使用已有的操作来响应新消息,并尽量使用已存在的连接路径作为消息传递通道
如果两个类之间存在明确、自然的聚会或组合关系,则可以在类图中直接相应的UML图元符号表示类间的聚会或组合关系,这两个关系均可提供消息传递通道
类的操作完成消息响应责任的能力来源于两个方面
类本身具有的信息,即类的属性
类能够找到的其他类,通过其他类协助完成的消息响应
综合上述两个因素,类的操作应该明确哪些子任务可以通过消息传递路径委托给其他类完成,哪些子任务必须由自身完成
结合领域和业务知识既可以推导出类应具有的属性
设计技术支撑方案
技术支撑方案应该为多个用例的软件实现提供技术服务,所以,它应该成为整个目标软件系统中全举行的公共技术平台
当用户需求发生变化是,技术支撑方案应具有良好的稳定性。这就要求软件设计者选用开放性和可扩充性较好的技术支撑方案
如果秒软件系统的顶层架构采用分层方式,那个技术支撑方案应该位于层次结构中较低的层次
技术支撑方案的设计
取决于目标软件系统对公共技术服务的需求
取决于设计人员对软件技术手段的把握和选取
设计用户界面
用户设计的策略与步骤
熟悉用户并对用户分类
用户分类
技术熟练程度
工作性质
访问权限
按用户类别分析用户的工作流程与习惯
在用户分类的基础上,从每类中选取一个用户达标,建立调查表,并通过调查结果的分析判断用户对操作界面的需求和洗好
调查表内容
姓名
期望软件用途
特征
年龄<br>文化程度<br>限制<br>等等
主要要求与喜好
技术熟练程度
任务客观场景描述
设计命令系统并进行优化
命令系统可分为
若干菜单、菜单栏
一组按钮
优化命令系统首先考虑的顺序
常用命令
命令的顺序与用户工作习惯保持一致
根据外部服务之间的聚合关系组织相应的命令
总体功能对应父命令
部分功能对应子命令
充分考虑人类的给予的局限性
命令系统最好组织为一个两层的多叉树
应尽可能减少用户完成一个操作所需的动作,并为熟练用户提供操作的快捷方式
设计用户界面的各种细节
增加用界面专用的类与对象
精化设计模型
对模型进行改进的活动有两种
精化
根据需求和架构原则划分不同粗粒度组件
粗粒度组件
来源于分析活动中的业务实体
白具有很强相关性业务实体组合起来形成一个集合
集合内部存在错综复杂的关系,同时集合向外提供服务接口
对外的接口和内部的实现是相区分的
形式很多
jar
dll
...
优先的粗粒度组件应该只完成一项功能
可能也是必须的跨越层次
拥有持久化的行为
需要表示层的支持
来源于需求。
得到粗粒度组件后的工作
定义不同的粗粒度组件之间的关系
在粗粒度组件的基础上定义业务实体或定义细粒度组件
合并
最初得到的组件模型可能并不完善,需要对其修改
可能某个组件中的类太多了,过于复杂,就需要对其进一步精化、分为更细足记,需要和其他组件进行合并
系统架构文档化
模型概述
软件架构
软件架构用来处理软件高层次结构的设计和实施,它以精心选择的形式将若干结构元素进行装配,从而满足系统主要功能和性能需求,并满足其他非功能性需求,如可靠性,可伸缩性,可移植性
公式
软件架构={元素,形式,关系/约束}
软件架构涉及到
抽象、分解
组合、风格
美学
5个主要的视图
逻辑视图
logical view
设计的对象模型(使用面向对象的设计方法时)
过程视图
process view
捕捉设计的并发和同步特征
物理视图
physical view
描述了软件到硬件的映射,反映了分布式特性
开发视图
development view
描述了在开发环境中软件的静态组织结构
场景
scenarios
架构的描述,即所做的各种决定,可以围绕这前4个视图来组织,然后一些用例和场景来说明,从而形成了第5个视图
在每个视图上均独立的应用公式,即定义一个所使用的元素集合(组件,容器,连接符),捕获工作形式和模式,并捕获关系及约束,将架构与模型需求连接起来
每种视图使用自身所特有的蓝图(blueprint)来描述,并且架构师可以对每个视图使用自身所特定的架构风格(architecture style),从而运行系统中多种风格并存
逻辑结构
逻辑结构主要支持功能性需求,即在为用户提供服务方面系统所应该提供的功能
系统分解为一系列的关键抽象,大多数来自于问题域,表现为对象或对象类的形式。它们采用抽象、封装和继承的原理
分解不仅仅为了功能分析,而且用来识别便便系统各个部分的通用机制和设计元素
借用于类图和类模板的手段
类图
用来显示一个类的集合和它们的逻辑关系
逻辑关系
关联
使用
组合
继承
...
相似的类可以划分成类集合,基本的逻辑蓝图表示法
Component
Class
Class Utility
Parameterized Class
Connectors
Association
Containment Aggergation
Inheritance
Instanciation
Category
Class Category
类模板
关注于单个类,它们强调主要的类操作,并且识别关键的对象特征
如果需要定义对象的内部行为,则使用状态转换图和状态图来完成
公共机制或服务可以在类功能(class utilities)中定义,对于数据驱动程度高的应用程序,可以使用其他形式逻辑视图,来代替面向对象的方法
逻辑视图的表示法来自Booch标记法,当仅考虑具有架构意义的条目时,这种表示法相当简单
逻辑视图的风格
逻辑视图的风格采用面向对象的风格
其主要的设计准则是试图在整个系统中保持单一的、一致的对象模型,避免就每个场合或过程产生草率的类和机制的技术说明
逻辑结构蓝图的样例
进程架构
进程架构考虑一些非功能性的需求
性能
可用性
它解决并发性、分布性、系统完整性、容错性的问题,以及逻辑视图的主要抽象如何与进程结构相配合在一起,即在哪个控制线程上,对象的操作被实际执行
进程架构可以在几种层次的抽象上进行描述,每个层次针对不同的问题
最高层次
进程架构可以视为一组独立执行的通信程序(processes)的逻辑网络,它们分布在整个一组硬件资源上这些资源通过LAN或者WAN连接起来,多个逻辑完了可能同时并存,共享相同的物理资源
进程是构成执行单元任务的分组
进程代表了可以进行策略控制过程架构的层次
开始
恢复
重新配置
关闭
进程可以就负载的分布式增强或可用性的提高而不断地被重复
区分任务
主要任务
可以唯一处理的架构元素
通讯途径是良好定义的交互任务通信机制
基于消息的同步或异步通讯服务,远程过程调用,事件广播
在同一过程或处理节点上,主要任务不应该对它们的分配做出任何假定
次要任务
由于实施原因而引入的局部附加任务
周期性活动
缓冲
暂停
消息流、过程负载可以基于过程蓝图来进行评估,同样可以使用哑负载来实现“中控”的进程架构,并测量目标系统上的性能
进程表示法
进程蓝图
Components
Process
Simplified Process
Periodic process adormment (Indicaies a cyclial process)
Connectors
Unspecifled
Message
Remote Procedure Call
Message bidirectional
Event broadcast
开发架构
物理架构主要关注系统非功能性的需求
可用性
可靠性(容错性)
性能(吞吐量)
可伸缩性
软件在计算机网络或处理节点上运行,被识别的各种元素(网络、过程、任务和对象)需要被映射至不同的节点
我们希望使用不同的物理配置:一些用于开发和测试,另外一些用于不同地点和不同客户的部署
因此软件至节点的映射需要高度的灵活性及对源代码产生最小的影响
物理蓝图表示法
components
connectors
Communication line Communication
rion premarient
Uinidirectional Communication
High band with Communication Bus
Prcessor
Other Device
场景
4中视图的元素通过数量比较少的一组重要场景(更常见的是用例)进行无缝协同工作,我们为场景描述相应的脚步(对象之间和过程之间的交互序列)
在某种意义上场景是最重要的需求抽象,它们的设计使用对象场景图和对象交互图来表示
场景表示法与组件逻辑视图非常相似,但他使用过程视图的连接符来表示对象之间的交互,注意对象实例使用实线来表示。至于逻辑蓝图,我们使用rational Rose 来捕获并管理对象场景
迭代过程
在进行文档化时,提倡一种更具有迭代性质的方法-架构先被原形化、测试、估量、分析,然后在一系列的迭代过程中被细化
该方法除了减少与架构相关的风险之外,对于项目而言还有其他有点
团队合作
培训
加深对架构的理解
深入程序和工具等
演进的原形,逐渐发展成为系统,而不是一次性的试验的原形
这种迭代方法还能够是需求被细化、成熟化并能够被更好的累计
场景驱动(scenario-driven)的方法
开始阶段
基于风险和重要性为某次迭代选择一些场景
场景可能被归纳为若干用户需求的抽象
形成稻草人式的架构
对场景进行描述,以识别主要的抽象(类、机制、过程、子系统)
所发现的架构元素被分布到4个蓝图中
逻辑蓝图
进程蓝图
开发蓝图
物理蓝图
然后实施、测试、度量该框架
这项分析可能检测到一些缺点和潜在的增强要求
捕获经验教训
循环阶段
下一个迭代过程开始进行
重新评估风险
扩展考虑的场景选择板
选择能减轻风险或提高结构覆盖的额外的少量场景
然后试着在原先的架构中描述这些场景
发现额外的架构元素,或有时还需要找出适应这些场景所需的重要架构变更
更新4个主要视图
逻辑视图
进程视图
开发视图
物理视图
根据变更修订现有的场景
升级实现工具(架构原型)来支持新的、扩展了的场景集合
测试。如果可能的话,在实际的目标环境和负载下进行测试
然后评审5个视图来检测简洁性、可重用性 和通用性的潜在问题
更新设计准则和基本原理
捕获经验教训
终止循环
迭代过程的持续时间参差不齐,原因在于
所实施项目的规模
参与项目的人数
他们对本领域和方法的熟悉程度
该系统和开发组织的熟悉程度
7.设计模式
设计模式概述
设计模式的历史
概念模式是建筑师 Chirsopher Alexander提出来的
将模式分为
特定的情景(Context)
指模式在何种状况下发生作用
动机(System of Force)
指问题或预期的目标
解决方案(Solution)
指平衡各动机或解决所阐述问题的一个构造或配置
模式是表示特定的情景、动机、解决方案三个方面关系的一个规则,每个模式描述了一个某种特定的情景下不断重复发生的问题,以及该问题解决方案的核心所在
模式技术一个事物又是一个过程,不仅描述该事物本身,而且提出了通过怎样的过程来产生该事物
设计模式的核心
问题描述
说明模式的最佳使用场合及它将如何解决问题
解决方案
用一组类和对象及其结构和动态协作来描述的
为什么要用设计模式
概述
面向对象设计时需要考虑许多因素
封装性
粒度大小
依赖关系
灵活性
可重用性
如何确定系统中类及类之间的关系
如何动态的将追加的功能增加到一个对象
哪些是设计时要努力达到的目标
简化并加快设计
开发人员面对的问题来自不同的层次
在最底层
涉及的是单个类的接口或实现的细节问题
在最高层
涉及的是系统的整体架构的创建问题
中间层
设计模式关注的层
在这一层必须保证局部化的特定的设计性质
设计模式使得软件开发人员无须从底层做起,开发人员可以重用成功的设计,可以节省开发时间,同时有助于提高软件质量
方便开发人员之间的通信
利用设计模式可以更准确地描述问题及问题的解决方案,是解决方案具有一致性
也有利于开发人员可以在更高层次上思考问题和讨论方案
降低风险
由于设计模式经过很多人的使用,已被证明是有效的解决方法,所以采用设计模式可以降低失败的可能性,也有利于在复杂系统中产生简洁、精巧的设计
有助于转到面向对象技术
新技术要在一个开发机构中得到应用,一般要经历两个阶段
技术获取阶段
比较容易
技术迁移阶段
由于开发人员对新技术往往会有抵触或排斥心理,对新技术可能带来的效果持怀疑态度
同时由于对新技术还是一知半解
所以要在一个开发机构中进行技术迁移并不是一件容易的事情
设计模式一般都是基于面向对象技术而提出的,也可以应用于接口定义良好的结构化方法中
设计模式是可重用的设计经验的总结,已在实际的系统中多次得到成功应用,因此通过设计模式的研究,能够深入理解良好的最基本的性质,从而有助于说服开发人员采用新技术
成熟的软件设计模式具有六大特性
巧妙
设计模式是一些优雅的解决方案,是在大量实践经验的基础上提炼出来的
通用
设计模式通常不依赖于某个特定的系统类型、程序设计语言或应用领域,它们是通用的
得到很好的证明
设计模式在实际系统和面向对象系统中得到广泛应用,它们并不仅仅停留在理论上
简单
设计模式通常都非常简单,只涉及很少的一些类。为了构建更多更复杂的解决方案,可以把不同的设计模式与应用代码或混合使用
可重用
设计模式的建档方式使它们非常易于使用,因而可方便用于任何适宜的系统
面向对象
设计模式是用最基本的面向对象机制如类、对象、多态等构造的。许多模式特别强调了某些面向对象设计擅长的领域
例如,区分接口和实现
降低各部分之间的依赖性
隔离硬件和软件
设计模式的组成元素
模式是一个高度抽象的概念
设计模式的基本组成元素
模式名
模式必须具有一个有意义的名称,这样就可以用一个词或短语来指代该模式,以及它所描述的知识和结构
模式名称简洁的描述了模式的本质
模式名可以帮助我们思考,便于我们与其他人交流设计思想及设计结果,找到恰当的模式名也是设计模式编目工作的难点之一
问题或意图
陈述问题并描述它的意图,以及它在特定的情景和动机下要达到的目标,它解释了设计问题和问题存在的前因后果,它可能描述了特定的设计问题,如怎样用对象表示算法等,可能描述了导致不灵活设计的类或对象结构
有时候问题部分会包括使用模式必须满足的一系列先决条件。通常情况下这些动机和目标是相互矛盾相互影响的
情景
情景是问题及解决方案产生的前提条件
情景告诉我们该模式的适用性,可以将情景视为应用该模式之前的系统初始配置
动机
它描述相关的动机和约束,它们之间或与期望达到的目标之间的相互作用或冲突,通常需要对各期望的目标进行优先级排序
动机阐明了问题的复杂性,定义了在相互冲突时所采取的各种权衡手段
一个好的模式应尽可能的将所有产生影响的动机考虑在内
解决方案
解决方案是描述一些静态的关系和动态的规则,用以描述如何得到所需的结果。通常是给出一组指令来说明如何构造所需的工作制品
该说明可包括
图表
文字
用以标示模式的结构、参与者及其之间的协作,从而表明问题是如何解决的
因为模式就像一个模板,可应用与多种不同的场合,所以解决方案并不描述一个特定而具体的设计或实现,而是提供设计问题的抽象描述和怎样用一个拒用一般意义的元素组合(类或对象组合)来解决这个问题
示例
一个或多个该模式的应用例子
示例说明了模式在怎么样的初始情景下如何发生作用,如何改变情景而导致结果场景的出现
示例帮助读者理解模式的具体使用方法
结果情景
结果情景指在应用该模式后系统的状态或配置,包括模式发生作用后带来的后果,以及在新的情景下产生的问题、可应用的模式等
它阐述了模式的后续状态和副作用
通常通过对结果情景的描述,使该模式与其他模式联系起来(该模式的结果情景成为其他模式的初始情景)
基本原理
基本原理指对该模式中的结局步骤或采用的规则的解释、证明,解释该模式如何、为和能解决当前问题,它采用的方法为何能得到与期望相一致的结果
相关模式
该模式与其他模式的关系,包括静态的和动态的
例如
该模式的前导模式(前导模式应用后产生的结果情景与该模式的初始情景一致)
后续模式
该模式应用后产生的结果情景与后续模式的初始情景一致
替代模式
使用该模式的替代模式产生同样的效果
已知应用
阐述该模式在已有应用系统中的实际应用情况,有助于验证该模式的有效性
模式效果大多关注对时间和空间的衡量,它们的也表述了语言和实现问题。因为复用是面向对象设计的要素之一,所以模式效果包括它对系统的灵活性、扩充性或可移植性的影响,显示地列出这些效果对理解和评价这些模式很有帮助
通常好的模式前面都有一个摘要,提供简短的总结和概述,为模式描绘出一个清晰的图画,提供有关该模式能够解决问题的快速信息。有时这种描述称为模式的缩略概要,或一个缩略图
模式应该说明它的目标读者,以及对读者有哪些知识要求
设计模式的分类
软件模式主要可分为
设计模式
分析模式
组织
过程模式
两个准则
按设计模式的目的划分
创建型
结构型
行为型
按设计模式的范围划分
类设计模式
对象设计模式
创建模式
该类型模式是对对象实例化过程的抽象,它通过采用抽象类所定义的接口,封装了系统中对象如何创建、组合等信息
结构型模式
该类模式主要用于如何组合已有的类和对象以获得更大的结构,一般借鉴封装、代理、继承等概念将一个或多个类或对象进行组合、封装,以提供统一的外部视图或新的功能
行为型模式
该类模式主要用于对象之间的职责及其提供的服务的分配,它不仅描述对象或类的模式,还描述它们之间的通信模式,特别是描述一组对等的对象怎样相互协作以完成其中任一对象都无法单独完成的任务
设计模式实例
创建性模式
在系统中,创建性模式支持对象的创建。该模式允许在系统中创建对象,而不需要在代码中标识特定类的类型,这样用户就不需要编写大量、复杂的代码来初始化对象。它是通过该类的子类来创建对象的。但是,这可能会限制在系统内创建对象的类型或数目
Abstract Factory
抽象工厂
在不指定具体类的情况下,这种模式为创建一系列相关或相互依赖的对象提供了一个接口
根据给定的相关抽象类,Abstract Factory 模式提供了一个相互匹配的具体子类集创建这些抽象类的实例的方法
Abstract Factory 提供了一个可以确定适合具体类的抽象类,这个抽象类可以用来创建实现标准接口的具体产品的集合
客户端只与产品接口和Abstract Factory 类进行交互
使用这种模式,客户端不用知道具体的构造类
Abstract Factory 模式类似与Factory Method 模式,但是Abstract Factory 模式可以创建一系列的相关对象
优点
可以与具体类分开
更容易在产品系列中进行转换
提高了产品间的一致性
应该使用Abstract Factory 模式的情况
系统独立于产品的创建、组成以及表示
系统配置成具有多个产品的系列,如
Microsoft Windows
Apple McIntosh
相关产品对象系列是共同使用的,而且必须确保这一点。 这是该模式的关键,否则可以使用Factory Method模式
你希望提供产品的类库,只开发其接口,而不是其实现
Builder
Builder模式将复杂对象的构建与其表示相分离,这样相同的构造过程可以创建不同的对象,通过只指定对象的类型和内容,Builder模式允许客户端对象构建一个复杂对象。客户端可以不受对象构造的细节的影响。这样通过定义一个能够构建其他类实例的类,就可以简化复杂对象的创建过程
Builder模式生产一个主要产品,而该产品中可能有多个类,但是通常只有一个主类
当使用该模式时,可以一次就创建所有的复杂对象。而其他模式一次就只能创建一个对象
优点
可以对产品的内部表示进行分离
将构造代码与表示代码相分离
应该使用Builder 模式的情况
创建复杂对象的算法独立于组成对象的部分以及这些部分的集合方式
构造过程必须允许构建对象有不同表示
Factory Method
该模式定义了创建对象的接口,它允许子类决定实例化哪个类。它允许类将实例化工作交给其子类,这对于在特定目的下构建单个对象是非常有帮助的,而其它不需要请求者知道要被实例化的特定类,这就可以在不修改代码的情况下引入新类,因为新类只实现了接口,这样它就可以被客户端使用。可以创建一个新的Factory类来创建新类,而这个Factory 类来实现Factory接口
优点
没有了将应用程序类绑定到代码中的要求,代码只处理接口,因此可以使用任何实现了接口的类
允许子类提供对象的扩展版本,因为在类中创建对象比直接在客户端创建要更加灵活
应该使用该模式的情况
类不能预料它必须创建的对象的类
类希望其子类指定它要创建的对象
类将责任转给某个帮助子类,而用户希望定位那个被授权的帮助子类
Prototype
该模式允许对象在不了解要创建对象的确切类以及如何创建等细节的情况下创建自定义对象。使用Prototype实例,便指定了要创建的对象类型,而通过复制这个Prototype,就可以创建新的对象。Prototype模式是通过先给出一个对象的Prototype对象,然后再初始化对象的创建。创建初始化后的对象再通过Prototype对象对其自身进行复制来创建其他对象。Prototype模式使得动态创建对象更加简单,只要将对象定义成能够复制自身就可以实现
优点
可以在运行时添加或删除产品
通过改变指指定新对象
通过改变结构指定新对象
减少子类的生成和使用
可以用类动态的配置应用程序
应该使用该模式的情况
在运行时,指定需要实例化的类
例如动态载入
避免构建与产品的类层次结构相似的工厂类层次结构
当类的实例是仅有的一些不同状态组合
Singleton
该模式确保一个类只有一个实例,并且提供了对该类的全局访问入口,它可以确保使用这个类实例的所有的对象使用相同的实例
优点
对单个实例的受控制访问
名称空间的减少
允许改进操作和表示
允许可变数目的实例
比类操作更灵活
应该使用该模式的情况
只有一个类实例
结构性模式
结构性模式控制了应用程序较大部分之间的关系。它将以不同的方式影响应用程序。结构性模式允许在不重写代码或自定义代码的情况下创建系统。这可以使系统具有增强的重复使用性和应用性能
Adapter
Adapter模式可以充当两个类之间的媒介,它可以转换一个类的接口,这样就可以被另外一个类使用,这使得具有不兼容接口的类能够协同使用。Adapter模式实现客户端所知接口,并且为客户端提供对不为其所知的类实例的访问。Adapter对象可以在不知道实现该接口的类的情况下提供该接口的功能
优点
允许两个或多个不兼容的对象进行交互和通信
提高已有功能的重复使用性
应该使用该模式的情况
要使用已有类,而该类接口与所需的接口并不匹配
要创建可重用类,该类可以与不相关或未知类进行协作,也就是说,类之间并不需要兼容接口
要在一个不同于已知对象接口的接口环境中使用对象
必须要进行多个源之间的接口转换的时候
Bridge
Bridge模式可以将一个复杂的组件分成两个独立的但又相关的继承层次结构
功能性的抽象
内部实现
改变组件的这两个层次很简单,以至于它们可以相互独立地变化。当具有抽象的层次结构和相应的实现层次结构时,Bridge模式是非常有用的。除了可以将抽象和实现组合成许多不同的类,该模式还可以以动态组合的独立类的形式实现这些抽象和实现
优点
可以将接口与实现相分离
提高了可扩展性
对客户端隐藏了实现的细节
应该使用该模式的情况
想避免在抽象及其实现之间存在永久的绑定
抽象及其实现可以使用子类进行扩展
抽象的实现被改动应该对客户端没有影响;也就是说,你不用重新编译代码
Composite
Composite模式允许创建树型层次结构来改变复杂性,同时允许结构中的每一个元素操作同一个接口,该模式将对象组合成树型结构来表示整个或部分层次结构。这就意味着Composite模式允许客户端使用单个对象或多个同一对象组合
优点
定义了由主要对象和复合对象组成的类层次结构
使得添加新的组件类型更加简单
提供了结构的灵活性和可管理的接口
应该使用该模式的情况
想要表示对象的整个或部分测层次结构
想要客户端能够忽略复合对象和单个对象之间的差异
结构可以具有任何级别的复杂性,而且是动态的
Decorator
Decorator模式可以在不修改对象外观和功能的情况下添加或者删除对象功能。它可以使用一种对客户端来说是透明的方法来修改对象的功能,也就是使用初始类的子类实例对初始对象进行授权。Decorator模式还为对象动态地添加了额外的责任,这样就在不使用静态继承的情况下,为修改对象功能提供了灵活的选择
优点
比静态继承具有更大的灵活性
避免了特征装载的类处于层次结构的过高级别
简化了编码,因为用户编写的每一个类都针对功能的一个特定部分,而不用将所有的行为编码到对象中
改进了对象的扩展性,因为用户可以通过编写新的类来做出改变
应该使用该模式的情况
想要在单个对象中动态并且透明的添加责任,而这样并不会影响其他对象
想要在以后可能要修改的对象中添加责任
当无法通过静态子类化实现扩展时
Facade
Facade模式为子系统中的一组接口提供一个同一的接口。因为只有一个接口,该模式就定义了更容易使用子系统的高级接口。这个统一的接口允许对象使用该接口与子系统进行通信,从而实现对子系统的访问
优点
在不减少系统所提供的选项的情况下,为复杂系统提供了简单接口
对客户端屏蔽了子系统组件
提高了子系统与客户端之间的弱耦合度
如果每一个子系统使用自身的Facade模式而且系统的其他部分也是用Facade模式与子系统进行通信的话,就可以降低子系统之间的耦合度
将客户端请求转换后发送给能够处理这些请求的子系统
应该使用该模式的情况
想要为复杂的子系统提供简单的接口
在客户端和抽象的实现类中存在许多依赖关系
想要对子系统进行分层
Flyweight
Proxy 模式为控制对初始对象的访问提供了一个代理或者占位符对象。它的实现可以有多种类型,其中Remote Proxy 和Vitual Proxy 是最常见的
优点
远程代理可以隐藏对象位于不同的地址空间的事实
虚拟代理可以执行优化操作
例如根据需要创建一个对象
应该使用该模式的情况
需要比简单的指针更灵活,更全面的对象引用
行为性模式
子主题
行为模式可以影响一个系统的状态和行为流。通过优化状态和行为流转换和修改的方式,可以简化、优化并且提高应用程序的可维护性
Chain of Responsibility
Chain of Responsibility模式可以在系统中建立一个链,这样消息可以在首先接收到它的基本被处理,或者可以定位到可以处理它的对象
优点
降低了耦合度
增加向对象指定责任的灵活性
由于在一个类中产生的事件可以被发送到组成中的其他类处理上,类的集合可以作为一个整体
应该使用该模式的情况
多个对象可以处理一个请求,而其处理器却是未知的
想要在不指定确切的请求接收对象的情况下,向几个对象中的一个发送请求
可以动态地指定能够处理请求的对象集
Command
Command模式在对象中封装了请求,这样可以保存命令,将该命令传递给方法以及像任何其他对象一样返回该命令
优点
将调用操作的对象与知道如何完成该操作的对象相分离
更容易添加新命令,因为不用修改已有类
应该使用该模式的情况
想要通过要执行的动作来参数化对象
要在不同的时间指定、排序以及执行请求
必须支持Undo、日志记录或事务
Interpreter
Interpret模式可以解释定义其语法表示的语言,还提供了用表示来解释语言中的语句解释器
优点
容易修改并扩展语法
更容易实现语法
应该使用该模式的情况
语言的语法比较简单
效率并不是最主要的问题
Iterator
Iterator模式为集合中的有序访问提供了一致的方法,而该集合是独立于基础集合,并与之相分离的
优点
支持集合的不同遍历
简化了集合的接口
应该使用该模式的情况
在不开放集合对象内部表示的前提下,访问集合对象的内容
支持集合对象的多重遍历
为遍历集合中的不同结构提供了统一的接口
Mediator
Mediator模式通过引入一个能够管理对象间消息分布的对象,简化了系统中对象间的通信,该模式可以减少对象之间的相互作用,从而提高了对象间的松耦合度,并且它还可以独立地改变其间的交互
优点
去除对象间的影响
简化了对象间协议
集中化了控制
由于不再需要直接互传消息,单个组件变得更加简单,而且容易处理
由于不再需要包含逻辑来处理组件间的通信,组件变得更加通用
应该使用该模式的情况
对象集合需要以一个定义规范但复杂的方式进行通信
想要在不使用子类的情况下自定义分布在几个对象之间的行为
Memento
Memento模式可以保持对象状态的快照(snapshot),这样对象可以在不向外界公开其内容的情况下返回到它的最初状态
优点
保持封装的完整
简化了返回到初始状态所需的操作
应该使用该模式的情况
必须保存对象状态快照,这样以后就可以恢复状态
使用直接接口来获得状态可能会公开对象的实现细节,从而破坏对象的封装性
Observer
Observer模式为组件向相关接收放广播消息提供了灵活的方法。该模式定义了对象间一到多的依赖关系,这样当对象改变状态时,将自动通知并更新它所有依赖的对象
优点
抽象了主体与Observe之间的耦合关系
支持广播方式的通信
应使用该模式的情况
对一个对象的修改涉及对其他对象的修改,而且不知道有多少对象需要进行相应修改
支持广播方式的通信
State
State 模式允许对象在内部状态变化时,变更其行为,并且修改其类
优点
定位指定状态的行为,并且针对不同状态来划分行为,使状态转换显式进行
应该使用该模式的情况
对象的行为依赖于其状态,并且该对象必须在运行时根据其状态修改其行为
操作具有大量以及多部分组成的取决于对象状态的条件语句
Strategy
Strategy 模式定义了一组能够用来表示可能行为集合的类。这些行为可以在应用程序中使用,来修改应用程序功能
优点
另一种子类化方法
在类自身中定义了每一个行为,这样就减少了条件语句
更容易扩展模型。在不对应用程序进行代码修改的情况下,使用该模式具有新的行为
应该使用该模式的情况
许多相关类只是在行为方面有所区别
需要算法的不同变体
算法使用客户端未知的数据
Template Method
Template Method 模式提供了在不重写方法的前提下允许子类重载部分方法的方法。在操作中定义算法的框架,将一些步骤由子类实现。该模式可以在不修改算法结构的情况下,让子类重新定义算法的特定步骤
优点
代码重用的基础技术
应该使用该模式的情况
想要一次实现算法的不变部分,而使用子类实现算法的可变行为
当子类间的通用行为需要分解、定位到通用类的时候,这样可以避免代码重复的问题
Vistor
Vistor模式提供了一种方便的、可维护的方法来表示在对象结构元素上要进行的操作,该模式允许在不改变操作元素的类的前提下定义一个新操作
优点
更容易添加新操作
集中相关操作并且排除不相关操作
应该使用该模式的情况
对象结构包含许多具有不同接口的对象类,并且想要对这些依赖于具体类的对象进行操作
定义对象结构的类很少被修改,但想要在此结构上定义新的操作
XML技术
9.面向构件的软件设计
构件的概念
术语与概念
构件
构件的特性
独立部署单元
一个构件是独立可部署的,意味着它必须能跟它所在的环境及其他构件完全分离
构件必须封装自己的全部内部特征
并且,构件作为一个部署单元具有原子性,是不可拆分的
也就是说,第三方没有权利访问其所使用的任何构件的内部细节信息
作为第三方的组装单元
如果第三方厂商能将一个构件和其他构件组装在一起,那么这个构件不但必须具备足够好的内聚性,还必须将自己的依赖条件和所提供的服务说明清楚.构件必须封装它的实现,并且只通过良好的定义的接口与外部环境进行交互
没有(外部的)可见状态
这要求构件不能与自己的拷贝有所区别.但对于不影响构件功能的某些属性,则没有这种限制
通过对属性的可见性进行限制,允许用户在不影响构件的可见行为的前提下,使用合法的技术手段对那些影响性能的状态进行特殊处理
特别是,构件可以将某些状态专门用于缓存
缓存具有的特性
当缓存被清空时除了可能会降低性能以外,没有其他后果
构件在特定的系统中可以被装载和激活
由于构件本质上没有状态,因此,在同一操作系统进程中装载多个构件的拷贝是毫无意义的.而且它们之间是不可区分的
给定一个进程,至多互存在一个特定构件的拷贝
对象
对象的特性
一个实例单元,具有唯一的标志
对象是一个实例化的单元,所以不能被局部初始化
由于对象有各自的状态,它必须有唯一的标志,以使他在整个生命周期内,无论状态如何变化,都能被唯一的识别
可能具有状态,此状态外部可见
封装了自己的状态和行为
当对象被实例化的时候,需要一个构造方案来描述其状态空间,初始状态,和新生对象的行为
显示存在的实例化方案称为类.也有隐示的实例化方案,即通过克隆一个已存在的对象来实现,即原型对象
无论哪种方式,新生对象都必须被设置一个初始状态
创建与初始化控制对象的代码可以是一个静态的过程
如果它是对象所从属类的一部分,就被称为构造函数
如果这个对象是专门用来创建与初始对象的,则简称为工厂
对象中专门用来返回其他新创建的对象的方法常被称为工厂方法
构件与对象
构件的行为显然可以通过对象来实现,因此构件通常包含了若干类或不可更改的原型对象.除此之外,构件还包括一系列对象,这些对象被用来获取默认的初始状态和其他的构件资源
构件并非一定要包含类元素,它甚至可以不包含类.构件可以拥有传统的过程体,甚至全局变量,它也可以是函数语言或者汇编语言,或者其他的可用方法实现自身的全部特性
构件创建的对象-更确切地说是对这些对象的引用--可以与该构件分离开来,并对构件的客户可见,构件的客户通常是指其他构件,除非构件的对象对客户可见,否则我们无从判断一个构件内部是否是完全面向对象的
互依赖的关系.一个类的父类并不一定与它的子类存在于同一个构件中.如果一个类的父类存在于外部的其他构件中,那么这两个类之间的继承关系便是跨构件的,这种关系将会导致相关联的构件间的导入关系.规约的继承是保证正确性的一项很关键的技术,因为共同的规约是构件间达成共识的基础
模块
模块化方法成熟的标志是其对分离编译技术的支持,包括跨模块的正确的类型检查能力
模块常常被用于把多个诸如抽象数据类型\类等实体打包到一个单元中
模块可以包含多个类
模块本身就可以作为一个最简单的构件
模块可以显式的用全局变量来使其状态可见.并且,通过直接导入其他模块的接口,模块之间可以存在静态的代码依赖.
模块化是构件技术产生的前提
白盒抽象 黑盒抽象与重用
白盒抽象和黑盒抽象的区别主要在于接口后面的实现细节是否可见
黑盒抽象
客户对接口和规约之外的实现细节一无所知
白盒抽象
在接口限制了用户行为并确保了封装性的情况下,客户仍然可以通过继承对构件的实现细节进行修改
由于白盒方式中实现细节对外界是完全可见的,因此可以对实现细节进行研究,以加深对该接口抽象含义的理解
黑盒重用指仅仅依赖接口和规约来实现
白盒重用指依赖与对具体实现细节的理解,通过接口来使用软件部件
在白盒重用中,被重用的软件不可以轻易地被另外的软件替换.如果贸然替换可能破坏正在重用的客户端.因为这些客户端依赖于那些在未来可能发生改变的实现细节
软件构件是一种组装单元,它具有规范的接口规约和显示的语境依赖.软件的构件可以被独立地部署并由第三方任意组装
一个可部署构件的合约内容远不只接口和依赖,它还要规定构件应该如何部署,一旦被部署了应该如何被实例化,实例如何通过规定的接口工作等.事实上,各个接口的规约都应该被独立地看待,任何提供与使用该接口实现的构件之间都是相对独立的
接口
接口是一个已命名的一组操作的集合
构件在不同的访问点有多个不同的接口.每一个访问点提供不同的服务,以迎合不同的客户需求
强调构件接口规范的合约性非常重要,因为构件和它的客户是在互不知情的情况下分别独立开发的.是合约提供了保证两者成功交互的公共中间层
成功的合约接口需要遵循的技术因素
必须时刻关注经济效益
一个构件可以有多个接口,每一个接口提供一种服务
应当避免不当的市场分化,因为这些威胁到构件的生存
尽量不要引入功能相近的接口
为了使一个接口的规范和实现该接口的构件得到广泛的应用,需要一个公共传媒向大众进行宣传和推广
被广泛认可的保证命名唯一性的命名方案
接口标准化
显式语境依赖
构件除了说明所提供的接口外,还要说明其需求
为了使构件正常的工作,必须恕瑞玛其对部署环境的具体要求.这些要求被称为语境依赖,指的是构件组装和部署的语境
定义组装规则的构件模型
定义构件部署
安装和激活规则的构件平台
构件的规模
环境需求往往取决于构件运行的目标机器
最大化重用
最大化重用降低了可用性
语境依赖
语境依赖越多,能满足构件环境需求的客户构件就越少
构件设计者需要在这两点上找到一个平衡点
标准与规范化
通用市场与专用市场
通用市场覆盖了多数甚至全部不同的市场领域
它对所有或者绝大数的客户和生产商都有影响
专用市场往往只限于某个特定的领域,相对来说影响较小
标准的构件体系与规范化
在基本构件体系和那些最重要的接口合约形成标准,并且在这些标准被相关的工业界支持的情况下,构件技术最为成功,然而,要发挥标准化的作用就必须使与之竞争的其他标准的数目尽量很效
如果相互竞争的标准过多,而相应的市场份额过小,就可能引发危机,这个问题可以通过规范手段来解决,公布共同的设计模式并对其进行编码,原来互不知情的各方标准化实体就肯在各自的目标领域发现共同点
构件的布线标准
布线用于连接电子构件
布线标准从何而来
由于过程的交互为进程边界所限,所以操作系统支持多种多样的进程间通信(Internet Process Connection IPC)机制,典型的例子有文件,套接字Socket及共享内存,这些机制不能跨平台移植
IPC机制的一个共同优势是,它们可以很容易的被扩展到网络甚至是因特网上.这是传统进程模型的直接结果.在这个传统进程模型中,每个进程模型中,每个进程产生了一个幻象,就好像一个共享的物理主机上的每个进程都拥有单独的虚拟机
RPC的设想是在本地被调用者和远程调用者两端都使用指代(stub).调用者使用严格的本地调用约定,就像调用了一个本地被调用者,实际上,却调用了一个本地指代来编排串行化参数,并将它们发送到远端.在远端另一个指代接收参数,并还原反串行化参数,然后调用真正的被调用者.和调用者一样,被调用者的过程本身也要遵循本地调用约定,并且不知道自己被远程调用了.编排和还原过程负责转化数据值.将它们从本地转化为网络格式,然后再 转化为远端表示.通过这种方法,格式的差异等被跨越了
分布式计算环境(DCE)是OSF(OPEN Software Foundation,OPen Group 的一部分)的一个标准,它是跨越异构的平台上实现RPC机制的最重要的服务.再另一个极端,轻量 RPC 变化能被用来处理单机上的ipc问题.
潜在的透明性既是RPC的优点,同时也是其负担.因为它隐藏了本地调用,进程间调用及机器间调用的很重要的代价上的差异.在大多数当前的体系结构上,进程间调用比本地调用慢10--1000倍,而机器间调用比进程间调用慢10--1000倍
接口定义语言(Interface Definition Language ,IDL) 保证了不同环境下过程调用语义的一致性. 对每一个可以被远程调用的过程,IDL指定了参数的数目,传递模式和类型,以及可能的返回值的类型.为了确保机器边界的通信正常工作,所有的IDL都必须固定基本类型的范围
过程调用及它们的二进制调用约定提供了一个良好证明的布线标准.但是它们还不能直接支持对象所需要的远程方法调用,如果和动态链接库(DynamicLinkLibrary, DLL)结合起来,远程过程调用就会在为构件布线形成一个有用的基础的过程中更进一步
从过程到对象
深层次问题
XML
构件框架
体系结构
语境相关组合构件框架
构件开发
构件组装
构件平台与典型架构
系统安全架构设计
基于ODP的架构师实践
层次式架构设计
面向方面编程
面向服务的架构
大纲模式
计算机组成原理与体系结构<b style=""><font color="#fdb813">(2-4分)</font></b>
终断
存储器
并/串转换
寄存器
内存容量计算
磁盘文件读取
异步传输
CISC和RISC
Cache特点
虚拟存储器
总线
宿主机
系统配置与性能评价<font color="#fdb813"><b>(0-2分)</b></font>
性能指标
阿姆达尔解决方案
评价方法
时钟频率法
指令执行熟读发
等效指令速度法(吉普森混合法)
数据处理速率法(PDR)
综合理论性能法(CTP)
基准程序法
负载均衡
数据备份
MIPS
基准程序测试
操作系统<b><font color="#fdb813">(6-8分)</font></b>
概念
微内核
文件系统
索引文件
进程管理&进程状态
前驱图与PV操作
存储管理
存储结构
页式存储
段式存储
快表-高速缓存
页面置换算法
最优算法(OPTIMAL,OPT)
随机算法(RAND)
先进先出(FIFO)
最近最少使用(LRU)
计算机网络<b><font color="#fdb813">(3-6分)</font></b>
网络层次化设计
七层模型
物理层
数据链路层
网络层
传输层
会话层
表示层
应用层
网络技术标准与协议
主要协议
TCP/IP协议
IPX和SPX协议
NETBEUI协议
分层协议
网络接口层
Internet层
传输层
TCP-三次握手
UDP
网络规划与设计
规划原则
实用性
开放性
先进性
设计原则
可用性
可靠性
可恢复性
适应性
可伸缩性
规划与设计
分层设计
接入层
汇聚层
核心层
逻辑网络设计
物理网络设计
无线网
优势
接入方式
有接入点模式
无接入点模式
分类
无线局域网(WLAN,802.11,Wi-Fi
无线城域网(WMAN,802.16,WiMax)
无线广域网(WWAN,3G/4G)
无线个人网(WPAN,802.15,Bluetooth)
网络接入技术
有线接入
公用交换电话网络(PSTN)
数字数据网(DDN)
综合业务数字网(ISDN)
非对称数字用户线路(ADSL)
同轴光纤技术(HFC)
无线接入
IEEE,802.11 Wi-Fi
IEEE,802.15 Bluetooth
红外(IrDA)
WAPI
3G/4G
WCDMA-国际
CDMA2000 - 电信推广
TD-SCDMA - 中国移动
LTE-Advanced
WirelessMAN-Advanced WiMAX -也被纳入了4G范围
网络存储
分类
直连式存储 DAS
网络附加存储NAS
存储区域网络(SAN)
RAID技术
RAID0(条块化)
RAID1(镜像结构)
RAID0+1(RAID10)
RAID5(分布式奇偶校验的独立磁盘)
RAID3(奇偶校验并行传送
RAID6(两种存储的奇偶校验)
IPSAN
IPV6
特点
128位
灵活的IP报文头部格式
简化报文头部格式,只有8位
提高安全性
支持更多服务类型
允许协议继续演化
地址分类
单播地址
任播地址
组播地址
物联网
分层
感知层
网络层
应用层
关键技术
二维码
RFID
传感网
M2M
云计算
体现形式
IAAS
PAAS
SAAS
应用
存储服务
搜索
科学计算
安全应用
软件即服务
综合布线
DNS服务器
数据库系统<b><font color="#fdb813">(4-9分)</font></b>
数据库设计
ER模型
完整性约束
触发器
候选关键字
模式分解
分布式数据库
体系结构
分布模式
分片模式
水平分片
垂直分片
混合分片
全局概念模式
数据库优化
集中式数据库
硬件系统
CPU
内存
I/O(磁盘阵列)
网络
系统软件
进程优先级
CPU使用权
内存使用
数据库设计
表与视图
索引
SQL优化
应用软件
分布式数据库
通信代价
同时考虑集中式数据库需要考虑的问题
数据仓库
特性
面向主题
集成的
相对稳定的(非易失的)
反应历时变化(随着时间变化)
经历的阶段
数据抽取
清理
装载
刷新
建立仓库
OLAP服务器
报表工具进行数据分析
数据集市
OLAP服务器
数据挖掘
方法
决策树
神经网络
遗传算法
关联规则挖掘算法
分类
关联分析
序列模式分析
分类分析
聚类分析
联邦数据库FDBS
特征
分布性
异构性
自治性
透明性
分类
紧耦合
松耦合
NOSQL
不足之处要了解
成熟度
开源数据库产品支持力度
数据挖掘与商业智能支持力度不足
专家少
反规范化
技术手段
增加派生性冗余列
增加冗余列
重新组表
分割表
大数据
特点
数据量 Volume
速度 Velocity
多样性 Variety
值 Value
特征
高度可扩展性
高性能
高度容错
支持异构环境
较短的分析延迟
易用且开放的接口
较低成本
向下兼容
范式
事务处理
数据库
数据库安全
备份与恢复
冷备份
需要停止数据库
优点
缺点
热备份
不停服务的情况下备份
优势
缺点
另一种分类方式
完全备份:全量备份
差量备份:
增量备份
日志文件
故障与恢复
事务本身可预知的故障
事务本身不可预知的故障
系统故障
介质故障
SQL语言
关系代数
企业信息化与战略实施<b><font color="#fdb813">(4-6分)</font></b>
概念
什么是信息
什么是信息化
系统
信息系统的类型
数据环境分类
数据文件
应用数据库
主题数据库
面向业务主题
信息共享
一次一处输入系统
由基本表组成
信息检索系统
应用层次划分
战略级(企业最高层管理)<br>
战术级(企业中层经理及其管理部门)<br>
<span style="color: rgb(51, 51, 51); font-family: -apple-system, "PingFang SC", BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Microsoft YaHei", 微软雅黑, 黑体, Heiti, sans-serif, SimSun, 宋体, Arial, serif; font-size: 14px;">操作级</span><span style="color: rgb(51, 51, 51); font-family: -apple-system, "PingFang SC", BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Microsoft YaHei", 微软雅黑, 黑体, Heiti, sans-serif, SimSun, 宋体, Arial, serif; font-size: 14px;">(服务型企业的业务部门)</span>
事务级(企业管理人员的业务人员)
企业信息化方法
以数据处理为核心
企业系统规划法(BSP)
关键成功因素法(CSF)
战略集合转化法(SST)
以企业内部MIS为核心
战略数据规划法(SDP)
信息工程法(IE)
战略栅格法(SG)
以集成为核心
价值链分析法(VCA)
战略一致性模型(SAM)
政府信息化与电子政务
政府办公自动化
政府信息查询
社会公众企业
政府对政府(G2G)
政府对企业(G2B)
政府对公众(G2C)
政府对公务员(G2E)
公共政务办公
企业信息化与电子商务
企业资源计划(ERP)
系统一般包括
财会管理
物流管理
生产控制管理
人力资源管理
客户管理管理(CRM)
系统一般包括
客户服务与支持
客户群维系
商机管理
供应链管理(SCM)
常用设计原则
商业智能(BI)
建立过程
需求分析
数据仓库建模
数据抽取
建立BI分析报表
用户培训和数据模拟测试
系统改进和完善
电子数据交换(EDI)
三大要素
EDI软件和硬件
通信网络
数据标准化
特点
是企业间信息交换的一种方式
EDI传送的一般是企业的商业数据,非通知
采用专用网络
无需人工介入
企业应用集成
分类
表示集成(界面集成)
数据集成
控制集成(应用集成,API集成)<br>
业务流程集成(过程集成)
方式
消息集成
共享数据库
文件传输
电子商务
信息化"三流"或"四流"
信息流
资金流
物流
商流
类型
B2B
B2C
C2C
O2O
国家电子商务标准体系
软件工程<b><font color="#fdb813">(12-18分)</font></b>
信息系统开发方法
结构化方法
优点
用户至上
严格区分工作阶段,每个阶段有任务和成果
系统开发过程工程化、文档资料标准化
自顶向下,逐步分解(求精)
缺点
流程不容易变化
原型法
适合于需求不明确的开发
包括抛弃型原型和演化式原型
面向对象方法
更好的复用
关键在于建立一个全面、合理、统一的模型
分析、设计、实现三个阶段,界限不明显
面向服务方法
SO方法主要抽象级别
操作
服务
业务流程
SOAD主要层次
基础设计层(底层服务构件)
应用结构层 服务之间的接口及服务协定
业务组织层 业务流程建模和服务流程安排
服务建模(三个阶段)
服务发现
服务规约
服务实现
软件开发模型
瀑布模型(SDLC)
软件计划
需求分析
软件设计
程序编码
软件测试
运行维护
演化模型(增量模型)
增量模型
螺旋模型
快速原型模型
喷泉模型
V模型
构建组装模型(CBSD)
流程和步骤
需求分析和定义
软件架构设计
构件库的建立
应用软件的构建
测试和发布
快速开发模型RAD=SDLC+CBSD
流程
业务建模
数据建模
过程建模
应用生成
测试与交付
统一过程RUP/UP
特点
用例驱动
以架构为中心
具备迭代与增量的特点
分块/循环
初始阶段
细化阶段
构建阶段
交付阶段
敏捷开发方法
主流的敏捷方法
自适应开发
水晶方法
特征驱动开发
SCRUM
极限编程XP
基本原则
5大原则
4大价值观
12个最佳实践
逆向工程
设计模型(实现级)
程序和数据结构信息(结构级)
对象模型、数据和控制流模型(功能级)
UML状态图和部署图(领域级)
需求管理
面向对象
OOA概念
对象
类(实体类、边界类、控制类)
抽象
封装
继承与泛化
多态
接口
消息
组件
模式和复用
UML图
事物
结构事务
行为事务
分组事务
注释事务
图
结构图(静态图)
类图
对象图
包图
组合结构图
构件图
部署图
制品图
行为图 (动态图)
用例图
顺序图/序列图
通信图/协作图
定时图
状态图
活动图
交互概览图
关系
依赖
关联
泛化
实现
需求的分类
需求获取方法
需求分析
处理业务流程设计
人机界面设计
原则
置于用户控制之下
减少用户的记忆负担
保持界面的一致性
结构化设计
概要设计<br>
详细设计
自顶向下,逐步求精
信息隐蔽
模块独立(高内聚、低耦合,复杂度)
面向对象设计
设计原则
单一职责原则
开放-封闭原则
李氏(liskov)替换原则
依赖倒置原则
接口隔离原则
组合重用原则
迪米(Demeter)特原则(最小知识法则)
设计模式的概念
架构模式
设计模式
惯用法
设计模式的分类
创建型模式(5)
工厂方法模式(factory method)
原型模式(prototype)
单例模式(singleton)
构建器模式(builder)
结构型模式(6)
适配器模式(adapter)
桥接模式(bridge)
组合模式(composite)
装饰模式(decorator)
外观模式(facade)
享元模式(flyweight)
代理模式(proxy)
行为型模式(11)
责任链模式(Chain of Responsibility)
命令模式(Command)
解释器模式(Interpreter)
迭代器模式(Iterator)
中介者模式(Mediator)
备忘录模式(Memento)
观察者模式(Visitor)
状态模式(State)
策略模式(Strategy)
模板方法模式(Template Method)
访问者模式(Observer)
用例包含关系
系统测试
测试原则和类型
原则
尽早,不断的进行测试
程序员避免测试自己设计的程序
既要选择有效合理的数据 也要选择无效不合理的数据<br>
修改后应该进行回归测试
尚未发生的错误量与已经 发生的错误成正比
类型
<span style="color: rgb(51, 51, 51); font-family: -apple-system, "PingFang SC", BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Microsoft YaHei", 微软雅黑, 黑体, Heiti, sans-serif, SimSun, 宋体, Arial, serif; font-size: 15px;">动态测试</span>
黑盒测试
白盒测试
灰盒测试
静态测试
桌前检查
代码走查
代码审查
测试用例设计
黑盒测试
等价化分类
边界值分析
错误推测
因果图
白盒测试
基本路径测试
循环覆盖测试
逻辑覆盖测试
语句覆盖
判定覆盖
条件覆盖
条件判定覆盖
修正的条件覆盖
条件的组合覆盖
点覆盖
边覆盖
路径覆盖
测试阶段
<span style="color: rgb(51, 51, 51); font-family: -apple-system, "PingFang SC", BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Microsoft YaHei", 微软雅黑, 黑体, Heiti, sans-serif, SimSun, 宋体, Arial, serif; font-size: 15px;">单元测试</span>
集成测试
确认测试
<span style="color: rgb(51, 51, 51); font-family: -apple-system, "PingFang SC", BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Microsoft YaHei", 微软雅黑, 黑体, Heiti, sans-serif, SimSun, 宋体, Arial, serif; font-size: 15px;">系统测试</span>
面向对象测试
<span style="color: rgb(51, 51, 51); font-family: -apple-system, "PingFang SC", BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Microsoft YaHei", 微软雅黑, 黑体, Heiti, sans-serif, SimSun, 宋体, Arial, serif; font-size: 15px;">算法层(单元测试)</span>
<span style="color: rgb(51, 51, 51); font-family: -apple-system, "PingFang SC", BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Microsoft YaHei", 微软雅黑, 黑体, Heiti, sans-serif, SimSun, 宋体, Arial, serif; font-size: 15px;">类层(模块测试)</span>
模板层/类树层(集成测试)
测试管理
测试团队管理
测试计划管理
错误(缺陷)跟踪管理
相同任务多人并行执行 错误数的估算
测试件管理
软件调试
软件调试的方法
蛮力法(穷举法)<br>低效耗时
回溯法
原因排除法
软件调试与测试的区别
目的不同:
调试是测试之后的活动
测试从一个已知的条件开始
<span style="color: rgb(51, 51, 51); font-family: -apple-system, "PingFang SC", BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Microsoft YaHei", 微软雅黑, 黑体, Heiti, sans-serif, SimSun, 宋体, Arial, serif; font-size: 15px;">过程控制</span>
测试过程可以事先设定,进度可以事先确定
调试不能描述过程或持续时间
软件运行与维护
可维护性
易分析性(指源代码)
易改变性(与前期的软件设计有关)
稳定性
易测试性
维护类型
改正性维护(25%)
适应性维护(20%)
完善性维护(50%)
预防性维护(5%)
软件过程改进
CMM
CMMI
项目管理<b><font color="#fdb813">(0-4分)</font></b>
用户文档
配置项
项目管理工具
需求变更
软件架构设计<b><font color="#fdb813">(22-28分)</font></b>
知识点
设计模式
基于构建的开发模型
构建技术
MVC模式
架构设计阶段
架构设计基本概念
<span style="color: rgb(51, 51, 51); font-family: -apple-system, "PingFang SC", BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Microsoft YaHei", 微软雅黑, 黑体, Heiti, sans-serif, SimSun, 宋体, Arial, serif; font-size: 15px;">软件架构需求</span>
ABSD
软件架构文档
架构复审
软件架构风格选择
架构模式
架构评估方法
“4+1”视图
架构与质量属性
软件产品线
ADL
中间件
典型应用架构
软件架构概述
软件架构建模
模型分类 5种
结构模型
框架模型
动态模型
过程模型
功能模型
4+1视图模型
逻辑视图 Logic view
开发视图 Development view
进程视图 Process view
物理视图 Physical view
场景视图 Scenarios view
软件架构风格
通用架构风格分类
数据流风格
调用/返回风格
独立构件风格
虚拟机风格
仓库风格
经典软件架构风格
管道/过滤器风格
面向对象风格
基于事件的隐士调用
分层系统
仓库系统及知识库
C2风格
客户机/服务器风格(C/S)
多层架构风格
三层C/S架构模型
B/S架构
富互联网应用
RIA
正交软件架构
基于层次消息总线的架构
特定领域软件架构DSSA
定义
DSSA的基本活动
领域分析
领域设计
领域实现
DSSA的建立过程
定义领域范围
定义领域特定的元素
定义领域特定的设计和实现需求约束
定义领域模型和架构
产生、搜集可重用的产品单元
架构设计与演化
基于架构的软件开发
1. 架构需求
2. 架构设计
3. 架构文档化
4. 架构复审
5. 架构实现
6. 架构演化
软件架构评估
主要的评估方式
1. 基于调查问卷或检查表的方式
2. 基于场景的方式
分析方法
架构权衡分析法(ATAM)
描述和介绍阶段
调查和分析阶段
测试阶段
报告阶段
软件架构分析法(SAAM)
1. 形成场景
2. 描述架构
3. 对场景分类并确定优先级
4. 对场景进行单个评估
5. 评估场景的相互作用
6. 形成总体评价
成本效益分析法(CBAM)
3. 基于度量的方式
软件产品线
概念
是一个综合的比较复杂的技术 (领域工程、软件架构、DSSA)
核心资源+产品集合
4个基本技术特点
过程驱动
特征领域
技术支持
以架构为中心
过程模型
双生命周期模型
领域工程
应用工程
SEI模型
核心资源开发
产品开发
管理
三生命周期模型
企业工程
领域工程
<span style="color: rgb(51, 51, 51); font-family: -apple-system, "PingFang SC", BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Microsoft YaHei", 微软雅黑, 黑体, Heiti, sans-serif, SimSun, 宋体, Arial, serif; font-size: 15px;">应用工程</span>
组织结构
设立核心资源小组
应用小组
建立方式
基于现有产品
全新产品线
1.将现有产品演化为产品线-风险低
2. 用软件产品线替代现有产品集
3. 全新软件产品线的演化-高风险
4. 全新软件产品线的开发
设计模式
可扩展标记语言
XML
相关技术
Schema
XSL
XLL
WEB服务架构
面向服务的架构SOA
企业服务总线EJB
系统安全性与保密性设计<b><font color="#fdb813">(2分)</font></b>
法律法规与标准化 <b><font color="#fdb813">(3分)</font></b>
数学与经济管理 <b><font color="#fdb813">(2-4分)</font></b>
数学建模
转移矩阵
盈亏评审点
线性规划
函数曲线
专业英语<b><font color="#fdb813">(5分)</font></b>
软件架构风格
软件架构
信息系统设计
DFD
关注公众账号“T-Superman”
觉得对你有帮助求“赞”,右上角 👍,谢谢!
Collect
Get Started
Collect
Get Started
Collect
Get Started
Collect
Get Started
评论
0 条评论
下一页