第11讲软件架构及设计
架构设计中的重要概念
架构与模式
❖ 架构≠设计模式 ❖ 模式是经验的重用,模式对软件开发中出
现的一些问题给出了比较好的解决方案 ❖ 模式的决定和使用是设计阶段考虑的问题 ❖ 架构和设计中采用合适的模式可以快速的
解决某些问题
软件架构的概念
在软件架构概念的理解上通常分为两大 流派: ❖组成派:软件系统的架构将系统描述为 计算组件及组件之间的交互。 ❖决策派:软件架构是一系列重要决策的 集合。
❖ 架构和设计是两个不同的概念 ❖ 设计主要是指思考和求证的过程 ❖ 设计指明了如何解决一个个问题,并提
出方案和计划 ❖ 当软件系统的架构确定之后,设计就开
始了
正确理解设计的含义
❖ 业务需求是系统架构的决定性因素 ❖ 软件设计和开发在架构确定之后开始进
行 ❖ 开发是在设计的基础上进行的
业务需求 架构
常见的分层架构设计
三、业务逻辑层(BLL) ❖ 业务逻辑层包括所有的业务逻辑,如:
数据验证、控计
❖ 可以在浏览器或其他外部客户端中验证 逻辑,但不能信任客户端的代码。必须 把业务层的逻辑视为真正的验证逻辑。
❖ 业务层部署到应用服务器上,或者尽可 能地与数据库服务器接近,因为业务逻 辑需要操作数据库的大量数据。
软件架构与设计
架构
❖软件架构 Ø逻辑架构:关注功能(三层架构)
❖系统架构 Ø物理架构:关注系统、网络、服务器 等基础设施 Ø数据架构:关注的是数据持久化和存 储层面的问题
软件架构
❖ 软件架构是对系统的高层视角,或者是 对系统的抽象。
❖ 简单来说:软件架构就是软件系统的一 张蓝图。
正确理解设计的含义
两种架构设计的区别和联系
❖组成派和决策派关于软件架构概念的区 别在于从不同角度来描述对软件架构概 念的认识。组成派是从软件架构的最终 形态角度来描述软件架构,决策派是从 软件架构形成过程来描述软件架构。
设计
开发
正确理解设计的含义
机械工程师
正确理解设计的含义
三层架构
❖表示层(User Interface layer-UI) ❖业务逻辑层(Business Logic Layer-BLL) ❖数据访问层(Data Access Layer-DAL)
架构设计中的重要概念
一、Tier和Layer ❖ Layer指系统中的逻辑结构,Tier指系
MVC框架模式
❖模型层(Model):模型层是应用程序的 核心部分,主要由JavaBean组件来充当 ,可以是一个实体对象或一种业务逻辑 。之所以称之为模型,是因为它在应用 程序中有更好的重用性、扩展性。
MVC框架模式
❖视图层(View):视图层提供应用程序 与用户之间的交互界面。在MVC模式中, 这一层并不包含任何的业务逻辑,仅仅 提供一种与用户相交互的视图,在Web应 用中由JSP、HTML界面充当。
软件架构的概述
❖ 什么是架构?如果你问五个不同的人, 可能会得到五种不同的答案 Ivar Jacobson, 《AOSD中文版》
❖ 很多人都试图给“架构”下定义,而这 些定义本身却很难统一 Martin Fowler,《企业应用架构模式》
软件架构的概述
❖ “架构”一词最早来自建筑学,原意为 建筑物设计和建造的艺术。在软件工程 领域,软件架构不是一个新名词,只是 在早期的著作中人们将软件架构称为软 件体系结构;
和管理的地方,例如,数据库。
常见的分层架构设计 六、物理部署
常见的分层架构设计
在两层的物理架构中,除了数据存储的位置外, 其他都与单层的配置一样,主要的工作是改变 一下数据库的连接字符串。
常见的分层架构设计
❖ 最佳性能的Web
客户端浏览器
WEB服务器
数据库服务器
MVC框架模式
❖MVC是一个框架模式,它强制性的使应用 程序的输入、处理和输出分开。使用MVC 应用程序被分成三个核心部件:模型、 视图、控制器。它们各自处理自己的任 务。
统的物理部署结构,不同的Layer可以 在同一Tier上;不同的Tier上面可以有 相同的Layer。
架构设计中的重要概念
常见的分层架构设计
常见的5层逻辑架构
逻辑上的N层 架构,优势在 于将功能分割 成明确的角色 和组,提高了 清晰度和可维 护性
常见的分层架构设计
一、界面层
❖ 界面层通过指的是用户层或表现层。 ❖ 为什么把界面层和界面控制层分开来介绍
MVC框架模式
❖控制层(Controller):控制层用于对 程序中的请求进行控制,起到一种宏观 调控的作用,它可以通知容器选择什么 样的视图、什么样的模型组件,在Web应 用中由Servlet充当。
软件体系结构的概念
❖软件体系结构和软件架构对应的英文单 词都是“Software architecture”,即 它们是意义完全相同的两个中文单词用 语。在使用它们时往往带有一种习惯上 的差异,通常学术上用“软件体系结构” 较多,在软件系统设计上用“软件架构” 较多,如在软件公司里,有“软件架构 师”的职位,但很难听到“软件体系结 构师”的说法。
常见的分层架构设计
二、界面控制层 ❖ 界面控制层的代码是接受用户的输入,
然后将其提供给业务层,在那里输入会 被验证、处理,或者其他的操作。然后, 界面控制代码必须对用户的输入做出响 应,并显示与业务层交互的结果。
常见的分层架构设计
二、界面控制层 ❖ 控制用户界面和程序数据之间同步根据
界面操作完成对程序数据更新程序数据 改变及时反应用户界面。
(一般把界面层和界面控制层综合在一起, 统称为“显示层”)
常见的分层架构设计
二、界面控制层 ❖ 该层包含以下功能:决定用户应该看到
什么,对路径进行导航,以及解释用户 的输入。 ❖ 在Windows窗体的应用程序中,这些逻 辑指窗体后台的代码;Web窗体的应用 程序中,这些逻辑不仅仅指窗体后台的 代码,也包含服务器端控件的代码。
常见的分层架构设计
四、数据访问层(DAL) ❖ 数据访问代码常常需要与数据存储和管
理层进行交互,以便查询、插入、更新 和删除数据。 ❖ 数据访问层并不会真正地管理和存储数 据,它只是为业务逻辑层和数据库之间 提供接口。
常见的分层架构设计
五、数据存储和管理层 ❖ 数据存储和管理层是真正进行数据存储