导图社区 软考中项—软件工程、架构设计与新技术知识汇总(云计算、大数据)
软件及信息技术考试中级项目管理,系统集成系统管理中的软件工程、软件架构设计及IT新技术知识总结,包含云计算、大数据等考试必考内容
编辑于2022-05-24 11:44:10社区模板帮助中心,点此进入>>
软件工程、架构设计与新技术
软件工程
软件需求的分析
需求层次
业务需求
是指反映企业或客户对系统高层次的目标要求
用户需求
描述的是用户的具体目标,或用户要求系统必须能完成的任务
系统需求
定义
是从系统的角度来说明软件的需求,包括功能需求、非功能需求和设计约束
分类
功能需求
也称为行为需求,它规定了开发人员必须在系统中实现的软件功能
用户利用这些功能来完成任务,满足业务需要。
非功能需求
是指系统必须具备的属性或品质,又可细分为软件质量属性 (例如,易用性、可维护性、效率等)和其他非功能需求。
设计约束
也称为限制条件或补充规约,通常是对系统的一些约束说明。
质量功能部署 (QFD)
定义
是一种将用户要求转化成软件需求的技术,其目的是最大限度地提升软件工程过程中用户的满意度。
分类
常规需求
用户认为系统应该做到的功能或性能,实现越多会越满意
期望需求
用户想当然认为系统应具备的功能或性能
意外需求
是用户要求范围外的功能或性能
需求获取
是一个确定和理解不同的项目干系人的需求和约束的过程。
常用方法
用户访谈
问卷调查
采样
联合需求计划
需求分析
含义
就是把杂乱无章的用户要求和期望转化为用户需求。
方法和工具
实体联系图(ER图)
表示数据模型
数据流图(DFD)
表示功能模型
状态转换图(STD)
表示行为模型
软件需求规格说明书(SRS)
含义
是需求开发活动的产物
使项目干系人与开发团队对系统的初始规定有一个共同的理解
内容包括
(1)范围
(2)引用文件
(3)需求
(4) 合格
(5) 需求可追踪性
(6) 尚未解决的问题
(7)注解
(8) 附录。
需求验证
(1) SRS正确地描述了预期的、满足项目干系人需求的系统行为和特征。
(2) SRS中的软件需求是从系统需求、业务规格和其他来源中正确推导而来的。
(3) 需求是完整的和高质量的。
(4) 需求的表示在所有地方都是一致的。
(5)需求为继续进行系统设计、实现和测试提供了足够的基础。
UML
U M L 基 础 概 念
结构
构 造 块
事物/建模元素
结构事物、
行为事物(也称动作事物)
分组事物
注释事物
关 系
(1) 依赖
是两个事物之间的语义关系 其中一个事物发生变化会影响可另一个事物
(2)关联
描述一组对象之间连接的结构关系
(3)泛化
是一般化和特殊化的关系 描述特殊元素的对象可替换一般元素的对象
(4) 实现
是类之间的语义关系 其中的一个类指定了由另一个类保证执行的契约
图
(1)类图
(2)对象图
(3)构件图
(4)组合结构图
(5) 用例图
(6) 顺序图
(7) 通信图
(8)定时图
(9) 状态图
(10) 活动图
(11) 部署图
(12) 制品图
(13)包图
(14)交互概览图
规则
公共机制
系统视图
(1) 逻辑视图
(2)进程视图
(3) 实现视图
(4) 部署视图
(5)用例视图
面向对象分析 (OOA)
OOA的基本任务是运用OO方法,对问题域进行分析和理解,正确认识其中的事物及它们之间的关系
OOD (面向对象设计)是OO方法中一个中间过渡环节。
对OOA分析的结果作进一步的规范化整理
以便能够被OOP直接接受
面向对象
封装
继承
多态
消息
OOA核心工作
用 例 模 型
(1)识别参与者
参与者是与系统交互的所有事物, 该角色不仅可以由人承担, 还可以是其他系统和硬件设备,甚至是系统时钟。
(2)合并需求获得用例
将参与者都找到之后,接下来就是仔细地检查参与者为每一个参与者确定用例。
(3) 细化用例描述
例建模的主要工作是书写用例规约,而不是画图。
(4)调整用例模型
在建立了初步的用例模型后, 还可以利用用例之间的关系来调整用例模型。 用例之间的关系主要有包含、扩展和泛化。
分析模型
建立过程
定义概念类
确定类之间的关系
为类添加职责
CRC建模
建立交互图等
类之间的主要关系
关联
依赖
泛化
聚合
组合
实现
类 之 间 关 系
(1)关联关系。
关联提供了不同类的对象之间的结构关系 它在一段时间内将多个类的实例连接在一起。
(2)依赖关系。
两个类A和B,如果B的变化可能会引起A的变化 则称类A依赖于类B。
(3)泛化关系。
泛化关系描述了一般事物与该事物中的特殊种类之间的关系 也就是父类与子类之间的关系。
(4)聚合关系(共享聚集)。
共享聚集关系通常简称为聚合关系, 它表示类之间的整体与部分的关系, 其含义是“部分”可能同时属于多个“整体”, “部分”与“整体”的生命周期可 以不相同。
(5)组合关系(组合聚集)。
组合聚集关系通常简称为组合关系, 它也是表示类之间的整体与部分的关系。
(6) 实现关系。
实现关系将说明和实现联系起来。 接口是对行为而非实现的说明,而类中则包含了实现的结构。
软件维护
软件维护特点
结构化维护(每个阶段有文档资料)
非结构化维护(只有程序代码)
维护代价高昂
维护问题很多
软件维护类型
更正性维护
更正交付后发现的问题
适应性维护
使软件产品能够在变化后和变化中的环境中继续使用
完善性维护
改进交付后产品的性能和可维护性
预防性维护
在软件产品的潜在错误成为实际错误之前,检测并更新
软件可维护性
影响软件可维护性因素
可理解性
可测试性
可修改性
可移植性
可重用性
文档
用户文档
系统文档
可维护性复审
软件再工程过程
库存目录分析
文档重构
逆向工程
代码重构
数据重构
正向工程
软件配置管理
软件配置管理活动
软件配置管理计划
软件配置标识
软件配置控制
软件配置状态记录
软件配置审计
软件发布管理与交付
软件库包含内容
配置库
受控库
产品库
配置库的权限设计
Read
Check
可对文件内容进行变更
Add
可使用文件追加、文件重命名,文件删除等命令
Destroy
有权对文件进行不可逆的清除和销毁
软件质量保证(SQA)
软件质量包含三个部分
内部质量
外部质量
使用质量
验证与确认
验证过程试图确保活动输出产品构造正确
确认过程试图确保构造了正确的产品
软件质量保证中的常见活动
为项目准备SQA计划。
参与开发项目的软件过程描述,而非负责开发项目的软件过程描述。
评审各项软件工程活动,以验证其是否符合定义的软件过程。
审核指定的软件工作产品,以验证是否符合定义的软件过程中的相应部分。
确保软件工作及工作产品中出现的偏差已文档化 并且按照文档化的规程进行了处理。
记录所有不符合规范的部分,并报告给高层管理者。
协调变更控制和变更管理,并帮助收集和分析软件度量信息。
软件测试及其管理
测试方法
静态测试
定义
被测试程序不在机器上运行 而采用人工检测和计算机辅助静态分析的手段对程序进行检测。
方法
文档的静态测试
检查单
代码的静态测试
桌前检查
代码走查
代码审查
动态测试
定义
在计算机上实际运行程序进行软件测试。
方法
黑盒测试(功能测试)
等价类划分
边界值分析
判定表
因果图
状态图
随机测试
正交试验法
白盒测试 (结构测试)
逻辑覆盖
语句覆盖
判定覆盖
条件覆盖
判定/条件覆盖
条件组合覆盖
点覆盖
变覆盖
路径覆盖
控制结构测试
基本路径测试
条件测试
循环测试
测试类型
单元测试
测试重点
模块接口
局部数据结构
重要执行通路
出错处理通路
边界条件
代码审查(人工)
有能力的程序员
程序设计者
程序编写者
程序测试者
计算机测试
集成测试
非渐增式测试
渐增式测试(主要)
自顶向下测试
深度优先
宽度优先
自底向上测试
确认测试
1、 内部确认测试
2、 Alpha测试和Beta测试
系统测试
配置项测试
回归测试
集成测试每次增加模块,重新执行已经测试过的子集
软件测试准则
测试可追溯到用户需求
测试之前指定测试计划
Pareto原理(8:2)
小规模测试到大规模
不可能穷举测试
独立第三方测试工作
软件调试(纠错)
蛮干法
回溯法
原因排错法
软件工程的过程管理
阶段式模型
可管理级
需求管理
项目计划
配置管理
项目监督与控制
供应商合同管理
度量和分析
过程和产品质量保证
已定义级
需求开发
技术解决方案
产品集成
验证
确认
组织级过程焦点
组织级过程定义
组织级培训
集成项目管理
风险管理
集成化的团队
决策分析和解决方案
组织级集成环境
量化管理级
组织级过程性能
定量项目管理
优化管理级
组织级改革与实施
因果分析和解决方案
连续式模型
过程管理
组织级过程焦点
组织级过程定义
组织级培训
组织级过程性能
组织级改革与实施
项目管理
项目计划
项目监督与控制
供应商合同管理
项目集成管理
风险管理
集成化团队
定量项目管理
工程
需求管理
需求开发
技术解决方案
产品集成
验证
确认
支持
配置管理
度量和分析
过程和产品质量保证
决策分析和解决方案
组织级集成环境
因果分析和解决方案
软件集成技术
集成
表示集成(界面集成)
数据集成
它是白盒集成,比表示集成要更加灵活。
控制集成(功能集成/应用集成)
业务流程集成
它包括应用集成、B2B集成、自动化业务流程管理、人工流程管理
它由一系列基于标准的、统一数据格式的工作流组成
企业之间的应用集成
EAI技术
EAI技术可以适用于大多数要实施电子商务的企业
EAl使得应用集成架构里的客户和业务伙伴,都可以通过集成供应链内的所有应用和数据库实现信息共享
架构设计
设计风格
结构化设计(SD)
含义
是一种面向数据流的方法,它以SRS和SA阶段所产生的DFD(数据流图)和数据字典等文档为基础,是一个自顶向下、逐步求精和模块化的过程。
原则
高内聚,低耦合
分类
概要设计(总体设计)
设计原理
模块化
抽象
逐步求精
信息隐藏和局部化
模块独立(耦合、内聚)
启发式规则(经验)
提高模块独立性(高内聚、低耦合)
模块规模适中
适当的扇入扇出深度宽度
模块的作用域在控制域之内
降低模块接口复杂度
设计单入口单出口模块
模块功能可预测
软件机构图形工具
层次图
HIPO
结构图(SC)
详细设计
人机界面设计
过程设计工具
程序流程图
盒图(N-S图)
PAD图
判定树、判定表
过程设计语言(伪代码)
Jackson图(面向数据结构)
程序复杂度度量
流图
3个计算公式
面向对象设计(OOD)
面向对象基本概念
对象三要素
对象标识
对象状态
对象行为
对象是类的实例,类是对象的模版
三个特征
封装
继承
多态
统一建模语言与可视化建模
UML
含义
基于系统分析得出的问题域模型,用面向对象的方法设计出软件基础架构(概要设计)
以及完整的类结构(详细设计)
结构化设计
设计原则
单一职责原则
一个类只做它该做的事情
开闭原则(Open-Closed Principle)
软件实体应当对扩展开放,对修改关闭
里氏代替原则(Liskov Substitution Principle)
任何时候都可以用子类型替换掉父类型
依赖倒置原则
从依赖具体类变换为依赖抽象就叫依赖倒置
接口隔离原则
接口要小而专,绝不能大而全
合成复用原则
优先使用聚合或合成关系复用代码
迪米特法则
一个对象应当对其他对象有尽可能少的了解(低耦合)
设计模式
创建型模式
(1)单例模式(Singleton)
懒汉式
在第一次使用该单例的时候才会实例化对象出来,延迟加载,线程不安全
饿汉式
在类创建的同时就实例化一个静态对象出来,不管是否使用都会占据内存,线程安全
(2)简单工厂模式(SimpleFactory)
工厂父类负责定义创建产品对象的公共接口,而工厂子类则负责生成具体的产品对象
(3)工厂方法模式(FactoryMothod)
(4)抽象工厂模式(AbstratorFactory)
(5)建造者模式(Builder Pattern)
将一个复杂对象的构建与它的表示分离,使得同样的构建可以创建不同的表示
所创建的产品一般具有较多的共同点,其组成部分相似,如果产品之间的差异性很大,则不适合使用建造者模式
(6)原型模式(Prototype Pattern)
结构型模式
(7)适配器模式(Adapter Pattern)
将一个接口转化成为客户希望的另一个客户希望的另一个接口,适配器模式使接口不兼容的类可以工作在一起工作
既可以作为类结构型模式,也可以作为对象结构型模式
将目标类和适配者类解耦,通过引入一个适配器类来重用现有的适配者类,而无须修改原有代码
(8)桥接模式(Bridge Pattern)
(9)装饰者模式(Decorator Pattern)
在不改变原类文件以及不使用继承的情况下,动态地将责任附加到对象上,从而实现动态拓展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象
(10)组合模式(Composite Pattern)
(11)外观模式(Facade Pattern)
(12)享元模式(Flyweight Pattern)
运用共享技术有效地支持大量细粒度对象的复用
它可以极大减少内存中对象的数量,使得相同对象或相似对象在内存中只保存一份。
(13)代理模式(Proxy Pattern)
行为型模式
(14)模板方法模式(Template Method)
(15)命令模式(Command Pattern)
(16)迭代器模式(Iterator Pattern)
(17)观察者模式(Observer Pattern)
(18)中介者模式(Mediator Pattern)
(19)状态者模式(State Pattern)
(20)策略者模式(Stragety Pattern)
(21)责任链模式
(22)访问者模式(Vistor Pattern)
(23)备忘录模式(Memento Pattern)
(24)解释器模式
架构技术
SOA(面向服务)
定义
面向服务的架构,可以理解为从客户的角度,将软件设计为模块式结构
松耦合、粗粒度、协议无关性、降低维护成本
与REST区别
REST的设计目标直接支持SOA的目标
REST属于SOA的一种实现方案
典型架构
WCF、Spring Integration、Mule ESB、Apache Camel
技术实现
REST、SOAP、RPC、DCOM
DDS、OPC-UA、Java RMI
SOA架构和微服务架构的区别
SOA 面向服务的架构
一种设计方法,其中包含多个服务, 服务之间通过相互依赖最终提供一系列的功能
一个服务 通常以独立的形式存在与操作系统进程中。各个服务之间 通过网络调用
微服务架构
SOA 的升华
单个业务系统会拆分为多个可以独立开发、设计、运行的小应用
小应用之间通过服务完成交互和集成
= 80%的SOA服务架构思想 + 100%的组件化架构思想 + 80%的领域建模思想
区别
SOA
大块业务逻辑
通常松耦合
任何类型架构
着重中央管理
确保应用能够交互操作
微服务
单独任务或小块业务逻辑
总是松耦合
小型、专注于功能交叉团队
着重分散管理
执行新功能、快速拓展开发团队
IoC
包含项
依赖倒置(DIP)
对象依赖关系的三种传递方式
构造函数传递依赖对象
Setter方法传递依赖对象
接口声明依赖对象(接口注入)
如何实践
每个类尽量都有接口或抽象类,或者抽象类和接口两者都具备
变量的显示类型尽量是接口或者是抽象类
任何类都不应该从具体类派生
尽量不要覆写基类的方法
结合里氏替换原则使用
控制反转(IoC)
依赖倒置的一种实现方式,通常用于构建框架
获得依赖对象的过程被反转了
依赖注入(DI)
依赖倒置的一种具体实现,是类库设计的一种常用模式
调用者依赖于接口,而不是具体的实现, 调用者在运行时被注入所依赖接口的具体实现
通过引入IOC容器,利用依赖关系注入的方式,实现对象之间的解耦
缺点
软件系统中由于引入了第三方IOC容器,生成对象的步骤变得有些复杂
由于IOC容器生成对象是通过反射方式,在运行效率上有一定的损耗
需要进行大量的配制工作,比较繁琐
IOC框架产品本身的成熟度需要进行评估和考量,否则会造成项目风险
常用框架
Java
Spring、Guice、Pico Container、Avalon、HiveMind
JBoss,Jdon
EJB
.NET
Spring.Net、Castle
读 写 分 离
物理层面
主从库读写分离
主库增删改、从库查询
主从库同步
业务或系统层面
CQRS


架构图

前后端分离
(Micro Service)微服务
组件
服务注册
服务提供方将自己调用地址注册到服务注册中心
服务发现
服务调用方从服务注册中心找到自己需要调用的服务的地址
负载均衡
(API Gateway)服务网关
作用
灰度发布、A/B 测试、负载均衡
请求路由、版本控制
用户登录、用户鉴权
熔断,降级,限流
聚合服务、多网关集群
单节点
多节点
配置中心
将本地化的配置信息(properties, xml, yaml 等)注册到配置中心
API 管理
集成框架
分布式事务
调用链
记录完成一个业务逻辑时调用到的微服务,并将这种调用关系展示出来
支撑平台
优点
降低系统复杂度、松耦合、跨语言、独立部署
缺点
服务之间的发现、服务调用链的跟踪和质量问题难以跟踪
难以测试、更改复杂、部署困难
常用框架
Spring Boot、Spring Cloud、Docker、Istio、Dubbo
分布式集群
分布式模式
游击队模式
数据并行或数据分布式
集团军模式
任务并行或任务分布式
更好的性能、可扩展性及可维护性,设计复杂性
分布式系统指标
资源占用
空载资源占用、满载资源占用
可用性
高可用架构
使用负载均衡的无状态服务的失效转移
集群服务器的Session管理
Session绑定
高可用服务
分级管理
超时设置
异步调用(消息队列)
服务降级
幂等性设计
高可用数据
数据备份
失效转移
高可用的软件质量
可扩展性
业务和可复用服务分离
伸缩性
例如NOSQL对伸缩性支持非常好
分布式协调与同步
分布式互斥
分布式选举
选举主节点维持分布式系统秩序
分布式共识
求同存异
分布式锁
多线程分布式互斥
数据库
基于数据库表
创建一张锁表,需要锁住方法或资源时就增加记录,释放就删除
需要一个定时任务,每隔一段时间把超时的数据清理
表中记录当前主机及线程信息,下次相同主机线程获取锁时直接分配
基于数据库排他锁
查询语句后面增加 for update(通过索引检索获取行级锁)
获得锁之后执行业务逻辑,完成后commit来释放锁
缺点是需要数据库的一定开销,可能影响性能且并不一定靠谱
基于缓存
Redis缓存、memcached、tair
Zookeeper树形数据存储
客户端要求加锁时生成唯一的有序节点,按最小序号分配锁
当连接断开或者需要释放锁的时候删除节点
要求
需要是一把可重入锁(避免死锁)
最好是一把阻塞锁(根据业务需求)
有高可用的获取锁和释放锁功能
获取锁和释放锁的性能要好
容错机制
Failover(失败自动切换/失效转移)
是一种备份操作模式,当主要组件异常时,其功能转移到备份组件
Failfast(快速失败)
只发起一次调用,失败立即报错,通常用于非幂等性的写操作
Failsafe(失效安全)
出现异常时,直接忽略,通常用于写入审计日志等操作
Failback(失败自动恢复)
将网络资源和服务器恢复为由原始主机提供的过程,称为自动恢复
Forking(并行调用多个服务器)
只要一个成功即返回,通常用于实时性要求较高的读操作
Broadcast
广播调用,所有提供逐个调用,任意一台报错则报错。通常用于更新提供方本地状态
分布式服务
(Serverless)无服务器
常见服务商
AWS Lambda
Apache OpenWhisk
Microsoft Azure
含义
允许自动扩展、按执行付费、将事件驱动的功能部署到云
完全依托于云厂商或云平台提供产品完成系统的组织及构建
特点
事件驱动
在有事件到来时,云函数会启动运行 区别于传统的「监听 - 处理」类型的应用,而是按需启动 事件的定义可以很丰富,一次 http 请求,一个文件上传等
单事件驱动
触发启动的一个云函数实例,一次仅处理一个事件 无需考虑高并发高可靠性,代码可以专注于业务 通过云函数实例的高并发能力,实现业务高并发
自动弹性伸缩
云函数通过自动的伸缩来支持业务的高并发 云函数自动弹性合适的处理实例来承载实际业务量 在没有事件或请求时,无实例运行,不占用资源
无状态开发
云函数运行时可能伸缩到 0,无法在运行环境中保存状态数据 分布式应用开发中,均需要保持应用的无状态,以便于水平伸缩 可以利用外部服务、产品,例如数据库或缓存,实现状态数据的保存
应用场景
web及移动后端
结合使用云函数和 API 网关或 HTTP 触发器,可以对外提供 URL 访问地址
消息处理
处理消息队列中的消息可放在云函数中
对象存储文件处理
由对象存储中的文件上传事件,来触发云函数的运行
物联网
物联网设备所采集的数据将可以作为云函数的触发事件
运维及集成
对接云函数以及云上的各个产品、日志服务、监控告警系统
(领域驱动设计)DDD

软件架构
架构模式
1)分层模式
常见分层
表示层(也称为UI层)
应用层(也称为服务层)
业务逻辑层(也称为领域层)
数据访问层(也称为持久化层)
2)客户端-服务器模式
3)主从设备模式
在数据库复制中,主数据库被认为是权威的来源,并且要与之同步
在计算机系统中与总线连接的外围设备(主和从驱动器)
4)管道-过滤器模式
概念
可用于构造生成和处理数据流的系统。每个处理步骤都封装在一个过滤器组件内。
要处理的数据是通过管道传递的。这些管道可以用于缓冲或用于同步。
使用场景
编译器。连续的过滤器执行词法分析、解析、语义分析和代码生成
生物信息学的工作流
逻辑图
5)代理模式
用于构造具有解耦组件的分布式系统。 这些组件可以通过远程服务调用彼此交互。代理组件负责组件之间的通信协调。
服务器将其功能(服务和特征)发布给代理。 客户端从代理请求服务,然后代理将客户端重定向到其注册中心的适当服务。
使用场景:消息代理软件 如Apache ActiveMQ,Apache Kafka,RabbitMQ和JBoss Messaging
6)点对点模式
单个组件被称为对等点。对等点可以作为客户端,从其他对等点请求服务, 作为服务器,为其他对等点提供服务。
对等点可以充当客户端或服务器或两者的角色,并且可以随时间动态地更改其角色。
使用场景
像Gnutella和G2这样的文件共享网络
多媒体协议,如P2PTV和PDTP
像Spotify这样的专有多媒体应用程序
7)事件总线模式
主要是处理事件,包括4个主要组件:事件源、事件监听器、通道和事件总线。
消息源将消息发布到事件总线上的特定通道上。侦听器订阅特定的通道。 侦听器会被通知消息,这些消息被发布到它们之前订阅的一个通道上。
8)模型-视图-控制器模式
MVC
定义
模型(model)
通过域对象,结合某些业务逻辑存储和操作数据库状态的类
视图(View)
用户界面部分,用于将模型呈现给用户
控制器(Controller)
作用于模型和视图上,它控制数据流向模型对象 并在数据变化时更新视图
结构图
与 WebForm 比较
WebForm
简单状态管理,基于ViewState和PostBack模型
显示逻辑和代码存在耦合导致难以进行单元测试 控件的状态管理导致页面庞大
PostBack导致难以控制浏览器和服务器之间的通信
MVC
提供了对HTML页面的全面控制、生成的页面更加简洁
能够支持多种视图引擎(例如Brail、NHaml、NVelocity)
方便地整合jQuery等JS框架,并支持ASP.NET的所有核心功能
默认使用RESTful风格(有助于SEO)
没有提供ViewState和PostBack模型,难以保存页面状态
工作过程比较
WebForm
MVC
视图
MVC架构默认使用WebFormViewEngine视图引擎
MVC视图对象
ViewMasterPage
ViewPage
ViewUserControl
ViewData 模型
ViewData用于呈现视图存储和传送来自模型和控制器的数据
TempData
用于保存临时会话数据的字典,可以被当前或者下一个请求使用
Action
返回结果类型
ActionResult
FileResult
ViewResultBase
基本返回类型
ContentResult
EmptyResult
HttpUnauthorizedResult
JavaScriptResult
JsonResult
FileContentResult
FilePathResult
FileStreamResult
RedirectResult
RedirectToRouteResult
ViewResult
PartialViewResult
控制器
URL路由
告诉控制器工厂应该实例化哪个控制器及执行控制器中的哪个操作
控制器工厂
默认控制器工厂是DefaultControllerFactory
MVP
架构图
关系图
构成
Model
View
Presenter
以Presenter为核心,负责从model获取数据,并填充到View中。 该模型使得Model和View不再有联系,且View被称为“被动视图”,暴露出setter接口
与MVC区别
1.View不直接与Model交互,而是通过与Presenter交互来与Model间接交互 2.Presenter与View的交互是通过接口来进行的,更有利于添加单元测试 3.通常View与Presenter是一对一的 但复杂的View可能绑定多个Presenter来处理逻辑 业务相似的时候也可以多同个View共享一个Presenter。
MVC模式: 1.View可以与Model直接交互 2.Controller是基于行为的,并且可以被多个View共享 3.Controller可以负责决定显示哪个View
MVVM
构成
(模型)Model
(视图模型)ViewModel
(视图)View
架构
View与VM保持同步,View绑定到VM的属性上,如果VM数据发生变化, 通过数据绑定的方式,View会自动更新视图
MVT(django)
是python中django框架使用的一种架构模式
构成
models
views
templates
架构图
9)黑板模式
对于没有确定解决方案策略的问题是有用的。由3个主要组成部分组成
黑板——包含来自解决方案空间的对象的结构化全局内存
知识源——专门的模块和它们自己的表示
控制组件——选择、配置和执行模块
所有的组件都可以访问黑板。组件可以生成添加到黑板上的新数据对象。
组件在黑板上查找特定类型的数据,并通过与现有知识源的模式匹配来查找这些数据。
使用场景
语音识别
车辆识别和跟踪
蛋白质结构识别
声纳信号的解释
10)解释器模式
用于设计一个解释用专用语言编写的程序的组件。它主要指定如何评估程序的行数,即以特定的语言编写的句子或表达式。其基本思想是为每种语言的符号都有一个分类。
使用场景
数据库查询语言,比如SQL
用于描述通信协议的语言
逻辑图
软件中间件
数据库访问中间件
ODBC(Windows平台)
JDBC(Java平台)
远程调用中间件(RPC)
g-RPC
面向消息中间件(MOM)
MSMQ
RabbitMQ
分布式对象中间件
RMI/EJB
DCOM(微软公司)
事务中间件
Tuxedo
架构风格
软件架构风格
(1)数据流风格
包括批处理序列和管道/过滤器两种风格。
(2)调用/返回风格
包括主程序/子程序、数据抽象和面向对象,及层次结构。
(3) 独立构件风格
包括进程通信和事件驱动的系统。
(4)虚拟机风格
包括解释器和基于规则的系统。
(5) 仓库风格
包括数据库系统、黑板系统和超文本系统。
软件架构评估
1、敏感点是一个或多个构件(和/或构件之间的关系)的特性。
2、权衡点是影响多个质量属性的特性,是多个质量属性的敏感点。
3、软件评估技术分为基于调查问卷的方式、基于场景的方式(最为常用)和基于度量的方式。
4、基于场景的方式分析软件架构对场景的支持程度,从而判断该架构对这一场景所代表的质量需求的满足程度。
5、基于场景的方式主要包括:架构权衡分析法(ATAM)、软件架构分析法 (SAAM) 和成本效益分析法(CBAM)
6、在架构评估中,一般采用刺激、环境和响应三方面来对场景进行描述。
新一代信息技术
云计算
特 点
超大规模
虚 拟 化
服 务 器 虚 拟 化
组件
VirtualBox
Oracle VM Server
XenServer
基于 Xen 的虚拟平台,直接安装在物理的计算节点上, 然后在上面创建更多的虚拟机
Red Hat Virtualization(RHV)
OpenVZ
VPS(Virtual Private Server 虚拟专用服务器)
Windows Server Container
Hyper-V Container
云平台 / 云操作系统
Microsoft Azure
OpenStack
nova-volume卷组存储
Swift存储
特点:持久性、对称性
Swift架构图
虚拟化平台
Xen
开源的虚拟化监视器
KVM
即利用一组键盘、显示器和鼠标实现对多台设备的控制 (多计算机切换器,用于实现远程调度监控)
VMware
Hyper-V
网络虚拟化
存储虚拟化
高可靠性
通用性
高可扩展性
按需服务
极其廉价
潜在危险性
服 务 模 式
(基础设施服务)IaaS
应用
备份和恢复服务
计算服务
提供弹性资源
内容分发网络(CDN)
服务管理
存储服务
(平台服务)PaaS
分类
半平台PaaS
平台软件层中只安装了操作系统,其他的留给租户自己解决
全平台PaaS
安装了应用软件依赖的全部平台软件 (操作系统、数据库、中间件、运行库)
应用
商业智能(BI)
用于创建仪表盘、报表系统、数据分析等应用程序的平台
数据库
开发和测试平台
软件集成平台
应用软件部署
(软件服务)SaaS
适合云化以SaaS模式交付给用户的软件
企事业单位的业务处理类软件
协同工作类软件
办公类软件
软件工具类
优点
云终端少量安装或不用安装软件
有效使用软件许可证
数据安全性得到提高
有利于消费者摆脱 IT 运维的技术泥潭而专注于自己的核心业务
能节约大量前期投资
应用
电子邮件和在线办公软件
计费开票软件
客户关系管理系统(CRM)
协作工具
内容管理系统(CMS)
财务软件
人力资源管理系统
企业资源计划(ERP)
销售工具等
DaaS
DaaS(Data as a Service)数据即服务
CaaS
CaaS(Communications as a Service)
FaaS
FaaS(Functions as a Service)
BaaS
BaaS(Backend as a Service)后端即服务
计算形态
云虚拟机
容器技术
云函数
serverless
部署模型
私有云
含义
只供一个企事业单位内的员工使用, 其他的人和机构都无权租赁并使用云端计算资源
类别
本地私有云
云端部署在企业内部 私有云的安全及网络安全边界定义都由企业自己实现并管理
托管私有云
消费者所在的企业通过专线与托管的云端建立连接, 或在因特网上建立安全通道(VPN)
社区云
云端资源只给两个及以上特定单位组织内的员工使用 除此之外的人和机构都无权租赁和使用
公共云
云端资源面向社会大众开放 符合条件的任何个人或者单位组织都可以租赁并使用云端资源
混合云
由两个或两个以上 不同类型的云组成
公私混合云
优势
架构更灵活
更安全
更容易满足合规性要求
费用更低
功能
数据备份
灾备
负载延伸
大数据
特点
5V
Volume(大量)
Variety
数据类型繁多(结构化和非结构化数据)
Value (价值)
指的是价值密度低。价值密度的高低与数据总量的大小成反比。
Velocity(高速)
指的是处理速度快。这是大数据区分于传统数据挖掘的最显著特征。
Veracity(真实性)
指的是数据来自各种、各类信息系统网络,以及网络终端的行为
应用
大数据征信
大数据风控
大数据消费金融
大数据财富管理
大数据疾病预测
处理环节
①数据准备
②存储管理
③计算处理
④数据分析
⑤知识展现
关键技术
HDFS
能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。
HBase
不同于一般的关系数据库,是非结构化数据存储的数据库。
MapReduce
一种编程模型,主要思想:概念“Map”(映射)和“Reduce”(归约)。
Chukwa
用于监控大型分布式系统的数据收集系统
移动互联
特点
(1)终端移动性
(2)业务使用的私密性
(3)终端和网络的局限性:
(4)业务与终端、网络的强关联性
关键技术
架构技术SOA
页面展示技术Web2.0
页面展示技术HTML5
主流开发平台Android
重要意义
(1) 重视对传感技术的应用。
(2)有效地实现人与人的连接。
(3)浏览器竞争及孤岛问题突出。
人工智能
定义
人工智能是赋予机器同人的能力,进行更深度的维度思考能力
人工智能是高效能自动化处理人的思维、决策、问题求解和学习的技术
人工智能是计算模型研究智能行为
人工智能是提升理解、推理和未知行为的可能性的计算
人工智能是计算机程序智能化执行人或动物的行为的任务
主要成果
语音识别技术
计算机视觉
机器学习
机器人技术
自然语言处理
人工智能包含了自识别和自学习能力
自动工程
自动驾驶、印钞工厂和猎鹰绘图。
知识工程
应用
智能工程
智能机器人
智能物流
智能家居
智能手机应用
第五代移动通信技术5G
性能目标
高数据速率
减少延迟
节省能源
降低成本
提高系统容量
大规模设备连接
优势
数据传输速率远远高于以前的蜂窝网络,最高可达10Gbit/s
较低的网络延迟(更快的响应时间),低于1毫秒
特点
1、峰值速率需要达到G bit/s的标准,以满足高清视频,虚拟现实等大数据量传输。
2、空中接口时延水平需要在1ms左右,满足自动驾驶,远程医疗等实时应用。
3、超大网络容量,提供千亿设备的连接能力,满足物联网通信。
4、频谱效率要比LTE提升10倍以上。
5、连续广域覆盖和高移动性下,用户体验速率达到100Mbit/S。
6、 流量密度和连接数密度大幅度提高。
7、协同化,智能化水平提升,表现为多用户,多点,多天线,多摄取的协同组网,以及网络间灵活地自动调整。
8、5G区别于前几代移动通信的关键,是移动通信从以技术为中心逐步向以用户为中心转变的结果。
关键技术
超密集异构网络
自组织网络技术
内容分发网络
设备到设备通信(D2D)
M2M通信
信息中心网络(ICN)
应用领域
车联网与自动驾驶
外科手术
智能电网
区块链
概念
分布式数据存储
点对点传输
共识机制
区块链系统中实现不同之间建立信任、获取权益的数学算法
加密算法
特征
开放
共识
去中心化
去信任机制
交易透明
双方匿名
不可篡改
可追溯
特点
去中心化
自治性
集体维护
开放性
安全性
匿名性
完全透明
应用
1.以密码学方式保证的不可篡改和不可伪造的分布式账本。例如比特币的底层技术
2.为了解决“双花”问题剔除交易风险(电子货币被复制或盗版)
3.解决拜占庭将军问题
4. 数值货币、智能合约
5.商品防伪和食品安全的湖源,全生命周期的记录
6.版权确权等
核心技术
分布式账本/去中心
区块链是一个分布式账本,一种特殊的分布式数据库
链表中有多个存储节点,类似于网状图,没有中心节点
非对称加密/数字签名
哈希加密/防篡改
区块链采用区块+链式的存储结构
每一个区块的生成,含有上一个区块的HASH信息,从而连贯起来
每个链中记录了本块HASH和上一块的HASH和交易,这样彼此连贯起来。
共识算法(博弈论)/全民记账
一般有POW(工作量证明)Pos(权益证明)等
比特币采用了POW(工作量证明),争夺记账权,争夺记账权=挖矿
区块链2.0技术架构
数据层
封装了底层数据区块及相关的数据加密和时间戳等基础数据
网络层
包括分布式组网机制、数据传播机制和数据验证机制等
共识层
激励层
合约层
主要封装各类脚本、算法和智能合约,是区块链可编程特性基础
应用层
封装了区块链的各种应用场景和案例。
物联网
关键技术
嵌入式技术
传感器技术
架构
感知层
负责信息采集和物物之间的信息传输,
技术包括
传感器
条码和二维码
RFID射频技术
音视频
多媒体信息
网络层
应用层
提供丰富的基于物联网的应用,是物联网发展的根本目标
技术包括
编码技术
标识技术
解析技术
安全技术
中间件技术
智慧城市