第11讲软件架构与设计课件.ppt

上传人(卖家):三亚风情 文档编号:2860942 上传时间:2022-06-05 格式:PPT 页数:51 大小:2.20MB
下载 相关 举报
第11讲软件架构与设计课件.ppt_第1页
第1页 / 共51页
第11讲软件架构与设计课件.ppt_第2页
第2页 / 共51页
第11讲软件架构与设计课件.ppt_第3页
第3页 / 共51页
第11讲软件架构与设计课件.ppt_第4页
第4页 / 共51页
第11讲软件架构与设计课件.ppt_第5页
第5页 / 共51页
点击查看更多>>
资源描述

1、软件架构与设计软件架构与设计架构架构v软件架构软件架构逻辑架构:关注功能(三层架构)逻辑架构:关注功能(三层架构)v系统架构系统架构物理架构:关注系统、网络、服务器物理架构:关注系统、网络、服务器等基础设施等基础设施数据架构:关注的是数据持久化和存数据架构:关注的是数据持久化和存储层面的问题储层面的问题软件架构软件架构v 软件架构是对系统的高层视角,或者是软件架构是对系统的高层视角,或者是对系统的抽象。对系统的抽象。v 简单来说:软件架构就是软件系统的一简单来说:软件架构就是软件系统的一张蓝图。张蓝图。正确理解设计的含义正确理解设计的含义v 架构和设计是两个不同的概念架构和设计是两个不同的概念

2、v 设计主要是指思考和求证的过程设计主要是指思考和求证的过程v 设计指明了如何解决一个个问题,并提设计指明了如何解决一个个问题,并提出方案和计划出方案和计划v 当软件系统的架构确定之后,设计就开当软件系统的架构确定之后,设计就开始了始了正确理解设计的含义正确理解设计的含义v 业务需求是系统架构的决定性因素业务需求是系统架构的决定性因素v 软件设计和开发在架构确定之后开始进软件设计和开发在架构确定之后开始进行行v 开发是在设计的基础上进行的开发是在设计的基础上进行的业务需求业务需求架构架构设计设计开发开发正确理解设计的含义正确理解设计的含义机械工程师机械工程师正确理解设计的含义正确理解设计的含义

3、三层架构三层架构 v表示层(表示层(User Interface layer-UIUser Interface layer-UI)v业务逻辑层业务逻辑层(Business Logic Layer-BLL)(Business Logic Layer-BLL)v数据访问层(数据访问层(Data Access Layer-DALData Access Layer-DAL)架构设计中的重要概念架构设计中的重要概念一、一、TierTier和和LayerLayerv LayerLayer指系统中的逻辑结构,指系统中的逻辑结构,TierTier指系指系统的物理部署结构,不同的统的物理部署结构,不同的Laye

4、rLayer可以可以在同一在同一TierTier上;不同的上;不同的TierTier上面可以有上面可以有相同的相同的LayerLayer。架构设计中的重要概念架构设计中的重要概念常见的分层架构设计常见的分层架构设计常见的常见的5 5层逻辑架构层逻辑架构逻辑上的逻辑上的N N层层架构,优势在架构,优势在于将功能分割于将功能分割成明确的角色成明确的角色和组,提高了和组,提高了清晰度和可维清晰度和可维护性护性常见的分层架构设计常见的分层架构设计一、界面层一、界面层v 界面层通过指的是用户层或表现层。界面层通过指的是用户层或表现层。v 为什么把界面层和界面控制层分开来介绍为什么把界面层和界面控制层分开

5、来介绍(一般把界面层和界面控制层综合在一起,(一般把界面层和界面控制层综合在一起,统称为统称为“显示层显示层”)常见的分层架构设计常见的分层架构设计二、界面控制层二、界面控制层v 该层包含以下功能:决定用户应该看到该层包含以下功能:决定用户应该看到什么,对路径进行导航,以及解释用户什么,对路径进行导航,以及解释用户的输入。的输入。v 在在WindowsWindows窗体的应用程序中,这些逻窗体的应用程序中,这些逻辑指窗体后台的代码;辑指窗体后台的代码;WebWeb窗体的应用窗体的应用程序中,这些逻辑不仅仅指窗体后台的程序中,这些逻辑不仅仅指窗体后台的代码,也包含服务器端控件的代码。代码,也包含

6、服务器端控件的代码。常见的分层架构设计常见的分层架构设计二、界面控制层二、界面控制层v 界面控制层的代码是接受用户的输入,界面控制层的代码是接受用户的输入,然后将其提供给业务层,在那里输入会然后将其提供给业务层,在那里输入会被验证、处理,或者其他的操作。然后,被验证、处理,或者其他的操作。然后,界面控制代码必须对用户的输入做出响界面控制代码必须对用户的输入做出响应,并显示与业务层交互的结果。应,并显示与业务层交互的结果。常见的分层架构设计常见的分层架构设计二、界面控制层二、界面控制层v 控制用户界面和程序数据之间同步根据控制用户界面和程序数据之间同步根据界面操作完成对程序数据更新程序数据界面操

7、作完成对程序数据更新程序数据改变及时反应用户界面。改变及时反应用户界面。常见的分层架构设计常见的分层架构设计三、业务逻辑层三、业务逻辑层(BLL)(BLL)v 业务逻辑层包括所有的业务逻辑,如:业务逻辑层包括所有的业务逻辑,如:数据验证、控制、处理,以及对应用程数据验证、控制、处理,以及对应用程序的授权等。序的授权等。常见的分层架构设计常见的分层架构设计v 可以在浏览器或其他外部客户端中验证可以在浏览器或其他外部客户端中验证逻辑,但不能信任客户端的代码。必须逻辑,但不能信任客户端的代码。必须把业务层的逻辑视为真正的验证逻辑。把业务层的逻辑视为真正的验证逻辑。v 业务层部署到应用服务器上,或者尽

8、可业务层部署到应用服务器上,或者尽可能地与数据库服务器接近,因为业务逻能地与数据库服务器接近,因为业务逻辑需要操作数据库的大量数据。辑需要操作数据库的大量数据。常见的分层架构设计常见的分层架构设计四、数据访问层四、数据访问层(DAL)(DAL)v 数据访问代码常常需要与数据存储和管数据访问代码常常需要与数据存储和管理层进行交互,以便查询、插入、更新理层进行交互,以便查询、插入、更新和删除数据。和删除数据。v 数据访问层并不会真正地管理和存储数数据访问层并不会真正地管理和存储数据,它只是为业务逻辑层和数据库之间据,它只是为业务逻辑层和数据库之间提供接口。提供接口。常见的分层架构设计常见的分层架构

9、设计五、数据存储和管理层五、数据存储和管理层v 数据存储和管理层是真正进行数据存储数据存储和管理层是真正进行数据存储和管理的地方,例如,数据库。和管理的地方,例如,数据库。常见的分层架构设计常见的分层架构设计六、物理部署六、物理部署常见的分层架构设计常见的分层架构设计在两层的物理架构中,除了数据存储的位置在两层的物理架构中,除了数据存储的位置外,其他都与单层的配置一样,主要的工作外,其他都与单层的配置一样,主要的工作是改变一下数据库的连接字符串。是改变一下数据库的连接字符串。常见的分层架构设计常见的分层架构设计v 最佳性能的最佳性能的WebWeb客户端浏览器客户端浏览器WEB服务器服务器数据库

10、服务器数据库服务器MVCMVC框架模式框架模式vMVCMVC是一个框架模式,它强制性的使应用是一个框架模式,它强制性的使应用程序的输入、处理和输出分开。使用程序的输入、处理和输出分开。使用MVCMVC应用程序被分成三个核心部件:模型、应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任视图、控制器。它们各自处理自己的任务。务。MVCMVC框架模式框架模式v模型层(模型层(ModelModel):模型层是应用程序的):模型层是应用程序的核心部分,主要由核心部分,主要由JavaBeanJavaBean组件来充当组件来充当,可以是一个实体对象或一种业务逻辑,可以是一个实体对象或一种业

11、务逻辑。之所以称之为模型,是因为它在应用。之所以称之为模型,是因为它在应用程序中有更好的重用性、扩展性。程序中有更好的重用性、扩展性。MVCMVC框架模式框架模式v视图层(视图层(ViewView):视图层提供应用程序):视图层提供应用程序与用户之间的交互界面。在与用户之间的交互界面。在MVCMVC模式中,模式中,这一层并不包含任何的业务逻辑,仅仅这一层并不包含任何的业务逻辑,仅仅提供一种与用户相交互的视图,在提供一种与用户相交互的视图,在WebWeb应应用中由用中由JSPJSP、HTMLHTML界面充当。界面充当。MVCMVC框架模式框架模式v控制层(控制层(ControllerContro

12、ller):控制层用于对):控制层用于对程序中的请求进行控制,起到一种宏观程序中的请求进行控制,起到一种宏观调控的作用,它可以通知容器选择什么调控的作用,它可以通知容器选择什么样的视图、什么样的模型组件,在样的视图、什么样的模型组件,在WebWeb应应用中由用中由ServletServlet充当。充当。软件体系结构的概念软件体系结构的概念v软件体系结构和软件架构对应的英文单软件体系结构和软件架构对应的英文单词都是词都是“Software architecture”Software architecture”,即,即它们是意义完全相同的两个中文单词用它们是意义完全相同的两个中文单词用语。在使用它

13、们时往往带有一种习惯上语。在使用它们时往往带有一种习惯上的差异,通常学术上用的差异,通常学术上用“软件体系结构软件体系结构”较多,在软件系统设计上用较多,在软件系统设计上用“软件架构软件架构”较多,如在软件公司里,有较多,如在软件公司里,有“软件架构软件架构师师”的职位,但很难听到的职位,但很难听到“软件体系结软件体系结构师构师”的说法。的说法。 软件架构的概述软件架构的概述v 什么是架构?如果你问五个不同的人,什么是架构?如果你问五个不同的人,可能会得到五种不同的答案可能会得到五种不同的答案 Ivar Jacobson, Ivar Jacobson, AOSDAOSD中文版中文版v 很多人都

14、试图给很多人都试图给“架构架构”下定义,而这下定义,而这些定义本身却很难统一些定义本身却很难统一 Martin Fowler,Martin Fowler,企业应用架构模式企业应用架构模式软件架构的概述软件架构的概述v “架构架构”一词最早来自建筑学,原意为一词最早来自建筑学,原意为建筑物设计和建造的艺术。在软件工程建筑物设计和建造的艺术。在软件工程领域,软件架构不是一个新名词,只是领域,软件架构不是一个新名词,只是在早期的著作中人们将软件架构称为在早期的著作中人们将软件架构称为软软件体系结构件体系结构;架构设计中的重要概念架构设计中的重要概念架构与模式架构与模式v 架构架构设计模式设计模式v

15、模式是经验的重用,模式对软件开发中出模式是经验的重用,模式对软件开发中出现的一些问题给出了比较好的解决方案现的一些问题给出了比较好的解决方案v 模式的决定和使用是设计阶段考虑的问题模式的决定和使用是设计阶段考虑的问题v 架构和设计中采用合适的模式可以快速的架构和设计中采用合适的模式可以快速的解决某些问题解决某些问题软件架构的概念软件架构的概念 在软件架构概念的理解上通常分为两大在软件架构概念的理解上通常分为两大流派:流派:v组成派组成派:软件系统的架构将系统描述为:软件系统的架构将系统描述为计算组件及组件之间的交互。计算组件及组件之间的交互。v决策派决策派:软件架构是一系列重要决策的:软件架构

16、是一系列重要决策的集合。集合。两种架构设计的区别和联系两种架构设计的区别和联系v组成派和决策派关于软件架构概念的区组成派和决策派关于软件架构概念的区别在于从不同角度来描述对软件架构概别在于从不同角度来描述对软件架构概念的认识。念的认识。组成派是从软件架构的最终组成派是从软件架构的最终形态角度来描述软件架构,决策派是从形态角度来描述软件架构,决策派是从软件架构形成过程来描述软件架构软件架构形成过程来描述软件架构。v软件架构最终要用构件、连接件及其约软件架构最终要用构件、连接件及其约束来描述,这既是决策的主要内容和决束来描述,这既是决策的主要内容和决策结果,也是软件架构最终的表现形式。策结果,也是

17、软件架构最终的表现形式。这就是他们的共同点。这就是他们的共同点。两种架构设计的区别和联系两种架构设计的区别和联系v一个软件项目开发可能涉及到多套方案,一个软件项目开发可能涉及到多套方案,对方案的选择可能涉及到复杂的因素,对方案的选择可能涉及到复杂的因素,需要决策者做出有远见的决策。这样的需要决策者做出有远见的决策。这样的决策对系统的开发产生根本性的影响,决策对系统的开发产生根本性的影响,软件系统最终表现的构件、连接件及其软件系统最终表现的构件、连接件及其约束的选择是这些决策导致的产物。约束的选择是这些决策导致的产物。实例实例考试系统的设计决策(考试系统的设计决策(1 1)v对于一个考试系统,考

18、试的公正性、可对于一个考试系统,考试的公正性、可用性、系统性能是考试系统的关键质量用性、系统性能是考试系统的关键质量属性。属性。v对公正性的考虑:避免抄袭是重要措施。对公正性的考虑:避免抄袭是重要措施。v方案:同一份母卷,产生不同的考试试方案:同一份母卷,产生不同的考试试卷。考生登录后,直接生成考试试卷。卷。考生登录后,直接生成考试试卷。实例实例考试系统的设计决策(考试系统的设计决策(1 1)v可用性考虑:考生年龄差异大、工作岗可用性考虑:考生年龄差异大、工作岗位特殊、有的考生计算机应用水平很低,位特殊、有的考生计算机应用水平很低,可能无法输汉字。可能无法输汉字。v方案:考生登录只输数字型考号

19、,登方案:考生登录只输数字型考号,登录后显示考生信息进行核实;客观题录后显示考生信息进行核实;客观题机考,主观题可机考,也可笔试(通过机考,主观题可机考,也可笔试(通过投影仪显示主观题)投影仪显示主观题)实例实例考试系统的设计决策(考试系统的设计决策(1 1)v系统性能不影响考试进度和考生情绪。系统性能不影响考试进度和考生情绪。v前面前面1 1、2 2条的方案属于软件架构的内容,条的方案属于软件架构的内容,因为它是考试系统设计必须遵循的原则。因为它是考试系统设计必须遵循的原则。v性能问题难以估计,将逐步解决。性能问题难以估计,将逐步解决。实例实例考试系统的设计决策(考试系统的设计决策(2 2)

20、v生成试卷存在的问题:当超过生成试卷存在的问题:当超过5050人考试人考试时,生成试卷遇到性能瓶颈:等待时间时,生成试卷遇到性能瓶颈:等待时间长,甚至产生的试卷不完整。长,甚至产生的试卷不完整。v原因:生成试卷是对母卷进行随机的大原因:生成试卷是对母卷进行随机的大题交换、小题交换、备选答案交换等一题交换、小题交换、备选答案交换等一系列复杂运算实现,运行时间长,并发系列复杂运算实现,运行时间长,并发操作不能太多。操作不能太多。v解决方案:将试卷生成功能独立,提前解决方案:将试卷生成功能独立,提前一个时间量先生成考试试卷,考生登录一个时间量先生成考试试卷,考生登录后直接取试卷。后直接取试卷。实例实

21、例考试系统的设计决策(考试系统的设计决策(2 2)v考生登录遇到的问题:当一次考试超过考生登录遇到的问题:当一次考试超过300300人后,考生登录输入考号后不能如考人后,考生登录输入考号后不能如考生所期望的那样立即显示相关信息,需生所期望的那样立即显示相关信息,需要等待一会儿,尽管只有几秒钟,但会要等待一会儿,尽管只有几秒钟,但会影响考生情绪。影响考生情绪。v原因:尽管考生身份验证简单,但并发原因:尽管考生身份验证简单,但并发操作太多同样影响性能。操作太多同样影响性能。v解决方案:将考生分成不同的逻辑班,解决方案:将考生分成不同的逻辑班,不同逻辑班将考试时间错开一个小的时不同逻辑班将考试时间错

22、开一个小的时间间隔(如间间隔(如5 5分钟)。分钟)。实例实例考试系统的架构设计(考试系统的架构设计(3 3)v网络环境对考试的影响:有的地区网络网络环境对考试的影响:有的地区网络环境差,难以保证考试顺利进行;考生环境差,难以保证考试顺利进行;考生范围局限在某个地区,将考生集中到某范围局限在某个地区,将考生集中到某个地方参加考试的成本大。个地方参加考试的成本大。v解决方案:通过考试系统下载与安装、解决方案:通过考试系统下载与安装、考试数据下载、上传、装载等功能,辅考试数据下载、上传、装载等功能,辅之其它措施保证考试的有效性。之其它措施保证考试的有效性。实例实例考试系统的架构设计(考试系统的架构

23、设计(3 3)v该方案将影响考试系统的物理架构,即该方案将影响考试系统的物理架构,即系统是一个分布式架构,交互机制是通系统是一个分布式架构,交互机制是通过网络进行文件下载、上传进行。过网络进行文件下载、上传进行。 考试中心考试中心考点考点文件下载上传文件下载上传 一个软件系统的设计,首先要对需求一个软件系统的设计,首先要对需求中提出的各种问题提出合理的解决方案。中提出的各种问题提出合理的解决方案。这些解决方案反映的是设计过程,代表的这些解决方案反映的是设计过程,代表的是高层设计决策。对这些设计决策具体化,是高层设计决策。对这些设计决策具体化,综合化,就构成了以构件、连接件等形式综合化,就构成了

24、以构件、连接件等形式表示的软件架构。表示的软件架构。软件架构设计的关注点软件架构设计的关注点v软件设计的首要任务是实现系统的功能软件设计的首要任务是实现系统的功能需求,功能不能满足用户需求的软件无需求,功能不能满足用户需求的软件无论如何也算不上好软件。论如何也算不上好软件。v软件设计必须对软件的非功能要求提出软件设计必须对软件的非功能要求提出解决方案,使开发的软件满足那些非功解决方案,使开发的软件满足那些非功能要求,不能满足非功能要求的软件也能要求,不能满足非功能要求的软件也不是一个好软件。不是一个好软件。v简单地说,不能满足功能要求的软件是简单地说,不能满足功能要求的软件是一个不能用的软件,

25、不能满足非功能要一个不能用的软件,不能满足非功能要求的软件是一个不好用的软件。求的软件是一个不好用的软件。软件架构设计的关注点软件架构设计的关注点v软件体系结构设计的关注点是用户的非软件体系结构设计的关注点是用户的非功能需求。软件的非功能需求是软件架功能需求。软件的非功能需求是软件架构设计的驱动力构设计的驱动力。 大型大型WebWeb系统架构系统架构v负载均衡系统负载均衡系统v数据库集群系统数据库集群系统v缓存系统缓存系统v分布式存储系统分布式存储系统负载均衡系统负载均衡系统v分为硬件和软件分为硬件和软件vnginxnginx数据库集群系统数据库集群系统v数据库读多写少的特点,主要对读数据库做

26、了数据库读多写少的特点,主要对读数据库做了优化,提供专用的读数据库和写数据库,在应优化,提供专用的读数据库和写数据库,在应用程序中实现读操作和写操作分别访问不同的用程序中实现读操作和写操作分别访问不同的数据库数据库缓存系统缓存系统v缓存分为文件缓存、内存缓存、数据库缓存分为文件缓存、内存缓存、数据库缓存。缓存。vMemcachedMemcached。分布式存储系统分布式存储系统框架的定义框架的定义v框架是一个已部分完成,需要扩充或丰框架是一个已部分完成,需要扩充或丰满的骨架。满的骨架。v或:框架是可以通过某种回调机制进行或:框架是可以通过某种回调机制进行扩展的软件系统或子系统的半成品。该扩展的

27、软件系统或子系统的半成品。该定义强调:定义强调:v1 1、框架是半成品。这是框架与其它软件、框架是半成品。这是框架与其它软件元素的本质区别。框架已经实现了软件元素的本质区别。框架已经实现了软件系统或子系统的通用部分的代码。系统或子系统的通用部分的代码。框架的定义框架的定义v2 2、使用框架进行软件开发的基本思想是:、使用框架进行软件开发的基本思想是:将特定应用部分(容易变化的部分)封将特定应用部分(容易变化的部分)封装成扩展点,以某种回调机制将用户扩装成扩展点,以某种回调机制将用户扩展的部分纳入框架的控制范围之内。展的部分纳入框架的控制范围之内。v3 3、采用、采用“回调回调”机制将框架扩展成

28、软件机制将框架扩展成软件系统或子系统。系统或子系统。框架与架构的区别框架与架构的区别v本质区别是:框架是软件,架构不是软本质区别是:框架是软件,架构不是软件。件。v框架是一种特殊的软件,它并不提供完框架是一种特殊的软件,它并不提供完整的解决方案,而是为开发人员解决方整的解决方案,而是为开发人员解决方案的实现提供参考模版或支持基础(或案的实现提供参考模版或支持基础(或平台)。框架是半成品,框架中的服务平台)。框架是半成品,框架中的服务(类和方法)可以被最终应用系统直接(类和方法)可以被最终应用系统直接调用,而框架中的扩展点是供应用开发调用,而框架中的扩展点是供应用开发人员定制的可变点。人员定制的可变点。框架与架构的区别框架与架构的区别v软件架构不是软件,而是软件如何被设软件架构不是软件,而是软件如何被设计的重要决策。经过完整的开发过程之计的重要决策。经过完整的开发过程之后,这些架构决策将体现在最终开发的后,这些架构决策将体现在最终开发的软件系统中。我们不能指着某些代码说软件系统中。我们不能指着某些代码说它是软件架构。架构势必被代码所体现它是软件架构。架构势必被代码所体现和遵循。和遵循。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(第11讲软件架构与设计课件.ppt)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|