管道过滤器风格的特点是:每个构件都有一组输入和输出,构件读输入的数据流,经过内部处理,然后产生输出数据流。
批处理 | 管道过滤器 |
---|---|
整体数据传送 | 增量 |
构件粒度大 | 构件粒度小 |
延迟高、实时性差 | 实时性好 |
无并发 | 可并发 |
主程序/子程序:这种风格一般采用单线程控制,把问题划分为若干处理步骤,主程序的正确性取决于它调用的子程序的正确性。如单片机。
面向对象:数据的表示和它们相应操作被封装起来,对象的行为体现在其接受和请求的动作中。对象具有封装性,一个对象的改变不会影响其他对象。如面向对象开发语言。
层次:每层为上一层提供服务,使用下一层服务,只能见到与自己邻接的层。在层次结构中,修改某一层,最多影响其相邻的上下两层(通常只能影响上层)。上层必须知道下层的的身份,不能调整层次之间的顺序。如TCP/IP协议。
这种风格的主要特点是:事件的触发者并不知道哪些构件会被这些事件影响,相互保持独立。
独立构件
这种风格的主要特点是:每个构件都是独立的个体,可代表一切体现封装的”对象“。例如小到代码级的函数、类,大到一个服务端进程、集群、完整的系统。
解释器:通常包括一个完成解释工作的解释引擎、一个包含将被解释的代码的存储区、一个记录解释器当前工作状态的数据结构,以及一个记录源代码被解释执行进度的数据结构。缺点是执行效率比较低。如JVM。
基于规则的系统:包括规则集、规则解释器、规则/数据选择器和工作内存。一般用在人工智能领域和DSS中。
仓库风格包含一个数据仓库和若干其他构件。数据仓库位于该体系结构的中心,其他构件访问该数据仓库并对其中的数据进行增删改查等操作。
与二层 C/S 架构相比,在三次 C/S 架构中,增加了一个应用服务器。可以将整个应用逻辑驻留在应用服务器上,而只有表示层存在于客户机上。这种客户机称为瘦客户机。三层 C/S 架构将应用系统分成表示层、功能层和数据层三个部分。
层次 | 功能 |
---|---|
表示层 | 用户接口,检查用户输入的数据,显示输出数据 |
功能层 | 业务逻辑层,是将具体的业务处理逻辑编入程序中 |
数据层 | 对DBMS进行管理和控制 |
表现层
业务逻辑层
持久层
数据库
持久层的设计,使得业务逻辑层只需要负责业务逻辑的实现,而把数据的操作交给了持久层。持久层对数据及对数据操作的封装有以下几个优点:
通过持久层的设计,将复杂的业务逻辑和数据逻辑分离,降低系统的耦合程度,从而在开发时更明确的分工,维护工作也更容易进行,系统的体系结构也变的更加清晰。
SSH:指的是 Struts(做前端控制器),Spring(管理各层的组件),Hibernate(负责持久化层)
SSM:指的是SpringMVC(做前端控制器),Spring(管理各层的组件),Mybatis(负责持久化层)
所在分层 | SSH | SSM |
---|---|---|
页面层(View) | JSP | JSP |
控制器层(controler) | Struts2 | SpringMVC |
业务层(Service) | java | java |
持久层(DAO) | Hibernate | MyBatis |
数据库层(DB) | MySql/Oracle | MySq/Oracle |
组件管理层(Bean) | Spring | Spring |
Hibernate 和 MyBatis 的区别
服务:现实生活中的收银员、服务员、客服电话,都叫”服务“,你用不用它都在那里,长期驻守。有人需要,就请求它了提供“服务”。
SOA VS SOAP
WebService 的特征:
业务方若想使用某个WebService的服务,什么都不用耦合,只需要记住UDDI在哪儿,用的时候现场查询、现场使用即可。
MVC设计表示层优点
上述模式产生的问题
优点
基本活动 | 主要目标 |
---|---|
领域分析 | 获得领域模型。领域模型描述领域中系统之间共同的需求,级领域需求。 |
领域设计 | 获得特定领域架构。DSSA描述领域模型中表示需求的解决方案。 |
领域实现 | 依据领域模型和DSSA开发和组织可重用信息,并对基础软件架构进行实现。 |
参与角色:领域专家、领域分析人员、领域设计人员、领域实现人员。
这章是考察重点,选择题、案例题高频考点
属性 | 作用及要点 |
---|---|
性能 | 处理任务所需时间或单位时间内的处理量 |
可用性 | 正常运行的时间比例,出现故障多久能启用备用系统 |
安全性 | 系统向合法用户提供服务并阻止非法用户的能力 |
可维护性 | 错误发生后进行局部性修改,对其他构件负面影响最小 |
可扩展性 | 使用新构件、改进或删除原有构件或特性 |
结构重组 | 重新组织构件及构件关系、灵活配置构件 |
可移植性 | 多样的环境(硬件平台、语言、操作系统等) |
易用性 | 在指定条件下使用时,软件产品被理解、学习、使用和吸引用户的能力 |
质量属性场景是一种面向特定的质量属性的需求
系统正常运行时间的比例,出现故障多久能够启用备用系统。
处理任务所需时间或单位时间内的处理量
排序方法 | 时间复杂度 | 稳定性 |
---|---|---|
直接插入 | O(n2) | 稳定 |
简单选择 | O(n2) | 不稳定 |
冒泡排序 | O(n2) | 稳定 |
希尔排序 | O(n2) | 不稳定 |
快速排序 | O(nlog2n) | 不稳定 |
堆排序 | O(nlog2n) | 不稳定 |
归并排序 | O(nlog2n) | 稳定 |
能够快速的以较高的性价比对系统进行变更的能力
系统向合法用户提供服务并阻止非法用户的能力
质量特性 | 定义 | 关键词 |
---|---|---|
敏感点 | 为了实现某种特定的质量属性,一个或多个构件所具有的特性 | 对查询请求处理时间的要求将影响系统的数据传输协议和处理过程的设计 |
权衡点 | 指影响多个质量属性,并对多个质量属性来说都是敏感点的特性 | 改变业务数据编码方式会对系统的性能和安全性产生影响 |
风险 | 不以标准属于出现。某些做法有一些隐患可能导致一些问题 | 对系统某业务逻辑的描述尚未达成共识,这可能导致部分业务功能模块的重复,影响系统的可修改性 |
非风险 | 某些做法是可行的、可接受的 | 业务处理时间小于30毫秒,则将请求响应时间设定为一秒钟是可以接受的 |
业界已开发出多种软件架构评估的方法,按基于技术手段来看,可以分为三类:基于调查问卷或检查表的方式、基于场景的方式和基于度量的方式。
SAAM 方法是卡耐基梅隆大学软件工程研究所的 KaZMan 等人于 1983 年提出的一种非功能质量属性的架构分析方法,是最早形成文档并广泛应用的软件架构分析方法。
架构平衡分析法 ATAM 是一种系统架构评估方法,主要在系统开发前,针对性能、可用性、安全性、可修改性等质量属性进行评价和折中。
-四个活动阶段:需求收集、架构视图描述、属性模型构造与分析、架构决策与折中,整个过程强调以属性作为架构评估的核心概念。