[系统架构]知识点
[系统架构]知识点
一.系统工程
1.系统工程
1.特点:整体性,综合性,协调性,科学性,实践性
2.方法:
霍尔的三维结构:时间维,逻辑维,知识维
时间维:规划,拟订方案,研制,生产,安装,运行,更新
逻辑维:明确问题,明确目标,系统综合,系统分析,优化,决策,实施
知识维:工程,医学,建筑,商业,法律,管理,社会科学,艺术等
切克兰德方法:认识问题,根底定义,建立概念模型,比较及探寻,选择,设计与实施,评估与反馈
并行工程:目标提高质量,降低成本,缩短产品开发周期和产品上市时间
综合集成方法:简单系统,巨系统
WSR系统方法:理解意图,制定目标,调查分析,构造策略,选择方案,协调关系,实现构想
3.系统工程生命周期:探索研究,概念阶段,开发阶段,生产阶段,使用阶段,保障阶段,退役阶段
生命周期方法:计划驱动方法,渐进迭代式开发,精益开发,敏捷开发
(1)计划驱动方法:始终遵守规定流程,特别关注文档的完整性,特别关注需求的可追溯性,特别关注每种表示的事后验证
(2)渐进迭代式开发:需求不清晰,不确定或客户希望在系统中引入新技术,较小的,不太复杂的系统,灵活性,通过裁剪突出了产品开发的核心活动
(3)精益开发:动态的,知识驱动的,以客户为中心的过程,向客户交付最大价值并使浪费活动最小化
(4)敏捷开发:工作(尽早,拥抱变化,持续交付),个人(可持续,简洁艺术),沟通(一起工作,面对面,产品度量进度),团队(自组织团队,定期反思)
4.基于模型的系统工程(MBSE):
采用形式化,图形化,关联化的建模语言及相应的建模工具,改造系统工程的技术过程,充分利用计算机,信息技术的优势,开展建模(含分析,优化,仿真)工作,为系统实现,验证奠定更为坚实的基础,从而提升整个研制过程的效率。
产物需求分析阶段:需求图,用例图,包图
功能分析与分配阶段:顺序图,活动图,状态机图
设计综合阶段:模块定义图,内部块图,参数图
三大支柱:建模语言,建模工具,建模思路
2.系统性能
1.计算机主要性能指标:时钟频率(主频),运算速度,运算精度,数据处理速率(PDR),吞吐率等
2.路由器主要性能指标:丢包率,时延,时延抖动,协议支持,设备吞吐量,端口吞吐量,全双工线速转发能力,路由表能力,背板能力
3.交换机性能指标:端口速率,背板吞吐量,缓冲区大小,MAC地址表大小
4.网络性能指标:设备级新能指标,网络级性能指标,应用级性能指标,用户级性能指标,吞吐量
5.操作系统性能指标:系统上下文切换,系统响应时间,系统的吞吐率(量),系统内资源利用率,可靠性和可移植性
6.数据库管理系统性能指标:最大并发事务处理能力,负载均衡能力,最大连接数等
7.Web服务器主要性能指标:最大并发连接数,响应延迟和吞吐量
8.性能指标计算:
每秒百万次指令数(MIPS):MIPS=指令条数/(执行时间X10^6)
峰值计算: 计算机每秒钟能完成的浮点计算最大次数
理论浮点峰值=CPU主频XCPU每个时钟周期执行浮点运算的次数X系统中CPU数
等效指令速度法或吉普森法:
9.性能调整:
数据库系统:CPU/内存使用状况,优化数据库设计,优化数据库管理,进程/线程状态,硬盘I/o 及剩余空间,日志文件大小等
应用系统:应用系统可用性,响应时间,并发用户数,特定应用系统的资源占用等
10.阿姆达尔解决方案:
阿姆达尔定律:计算机系统中对某一部件采用某种更快的执行方式所获得的系统性能改变程度,取决于这种方式所占总执行时间的比例。
加速比=使用增强部件时完成整个任务的时间/不适用增强部件时完成整个任务的时间
新的时间=原来的时间X[(1-增强比例)+增强比例/增强加速比]
总加速比=原来的执行时间/新的执行时间=1/[(1-增强比例)+增强比例/增强加速比]
增强比例:在原有的计算机上,能被改进并增强的部分在总执行时间中所占的比例
11.性能评估:
基准测试程序:应用程序中用得最多,最频繁的那部分核心程序
评测准确依次递减:真实程序,核心程序,小型基准程序,合成基准程序
Web服务器性能评测方法:基准性能测试,压力测试,可靠性测试
系统监视方法:系统内置命令,查阅系统日志,可视化技术
二.软件工程
1.瀑布模型
特点:因果关系紧密相连,前一个阶段工作的输出结果,是后一个阶段工作的输入。每一个阶段工作完成后都伴随着一个里程碑。
缺点:需求难以一次确定,变更代价高,结果难以预见,各阶段工作不能并行
2.原型模型
特点:原型模型解决了瀑布模型需求难以一次确定,结果难以预见的缺点。有原型开发和目标软件开发两个阶段
抛弃性原型将作为需求确认的手段,需求确认结束后就被抛弃不用,继续用瀑布模型
演化性原型在需求确认结束后,不断补充和完善原型,直至形成一个完整的产品
3.螺旋模型
在快速原型的基础上结合瀑布模型扩展而成,把整个软件开发流程分成多个阶段,每个阶段都有目标设定,风险分析,开发和有效验证,评审4部分组成。大型软件开发,适用于面向规格,面向过程和面向对象的软件开发方法,强调其他模型忽视的风险分析
4.敏捷模型
极限编程(XP):高效,低风险,测试先行(先写测试代码,再编写程序)
水晶系列方法:不同的项目,采用不同的策略
并列争球法(Scrum):侧重于项目管理
特征驱动开发方法:该方法会将开发人员分类,分为指挥者(首席程序员),类程序员等
5.软件统一过程(RUP)模型
特点:以用例驱动的,以架构为中心,迭代和增量的软件开发过程
RUP用”4+1“视图模型来描述架构:逻辑视图,进程视图,实现视图,部署视图
用例视图
6.软件能力成熟度模型(CMM)
概念模型,模型框架和表示是刚性的,不能随意改变,但模型的解释和实现有一定的弹性
7.软件能力成熟度集成(CMMI)
5个成熟度等级:初始级,已管理级,已定义级,量化管理级,优化级。
量化管理级别和已定义级的区别是对过程性能的可预测
三.需求工程
1.需求工程(RE)
组成:需求获取,需求分析,形成需求规格(或称为需求文档化),需求确认与验证,需求管理
软件需求规格说明书(SRS):包括功能需求,非功能需求和约束,约束包括设计约束和过程约束。批准的SRS是需求开发和需求管理之间的桥梁
需求管理:是一个对系统需求变更,了解和控制的过程,包括变更控制,版本控制,需求跟踪等过程
需求获取:基本步骤1,开发高层的业务模型 2,定义项目范围和高层需求 3,识别用户角色和用户代表
4,获取具体的需求 5,确定目标系统的具体工作流 6,需求整理与总结。需求获取的方法包括用户面谈,需求专题讨论会,问卷调查,现场考察,原型化方法和头脑风暴等
需求变更:
变更控制委员会(CCB):用户方和实施方的决策人员。制定决策,交流情况,重新协商约定
需求跟踪:正向跟踪和逆向跟踪,都需建立与维护需求跟踪矩阵
四.系统分析与设计
1.结构化方法(SASD)
(1)结构化方法(SA): 图形表达用户需求中的功能需求,使用手段主要有数据流图(DFD),数据字段,结构化语言,判定表以及判定树等
数据流图(DFD)有4种元素组成:数据流,处理/加工,数据存储和外部项
DFD图需满足规则:父图数据流必须在子图中出现,一个处理至少有一个数据流和一个输出流,一个存储必定有流入和流出,一个数据流至少有一个处理端
2.结构化设计(SD)
面向数据流设计方法,以SRS和SA阶段所产生的数据流图和数据字典等文档为基础,是一个自顶向下,逐步求精和模块化的过程,SD分为概要设计和详细设计两个阶段。
概要设计:确定系统的结构,对系统进行模块划分,确定每个模块的功能,接口和模块之间的调用关系
详细设计:每个模块实现的细节
模块:实现功能的基本单位,一般具有功能,逻辑和状态三个基本属性
3.结构化编程(SP)
SP通过顺序,分支和循环三种基本的控制结构可以构造出任何单入口单出口的程序。
4.数据库设计
E-R图
5.面向对象(OO)方法
(1)面向对象的分析方法(OOA)
OOA模型层次:主题层,对象类层,结构层,属性层,服务层
OOA活动:标识对象类,标识结构,定义主题,定义属性和定义服务
OOA基本原则:抽象,封装,继承,分类,聚合,关联,消息通信,粒度控制和行为分析
OOA基本步骤:确定对象和类,确定结构,确定主题,确定属性,确定方法
(2)面向对象设计方法(OOD)
实体类,控制类,边界类
(3)面向对象程序设计(OOP)
(4)数据持久化与数据库
6.基于构件的软件工程(CBSE)
可组装性,可部署性,文档化,独立性,标准化
构件模型:Web Services模型,Sun公司的EJB模型,微软的.NET模型
模型要素:接口,使用信息,部署信息
通用服务:平台服务,支持服务
构件组装:顺序组装,层次组装,叠加组装。构件组装可能面临接口不兼容的问题,常见的有参数不兼容,操作不兼容,操作不完备。编写适配构建器来解决
OP)
(4)数据持久化与数据库
6.基于构件的软件工程(CBSE)
可组装性,可部署性,文档化,独立性,标准化
构件模型:Web Services模型,Sun公司的EJB模型,微软的.NET模型
模型要素:接口,使用信息,部署信息
通用服务:平台服务,支持服务
构件组装:顺序组装,层次组装,叠加组装。构件组装可能面临接口不兼容的问题,常见的有参数不兼容,操作不兼容,操作不完备。编写适配构建器来解决