第11讲软件架构及设计课件_第1页
第11讲软件架构及设计课件_第2页
第11讲软件架构及设计课件_第3页
第11讲软件架构及设计课件_第4页
第11讲软件架构及设计课件_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

IvarJacobson,《AOSD中文版》很多人都试图给“架构”下定义,而这些定义本身却很难统一

MartinFowler,《企业应用架构模式》软件架构的概述“架构”一词最早来自建筑学,原意为建筑物设计和建造的艺术。在软件工程领域,软件架构不是一个新名词,只是在早期的著作中人们将软件架构称为软件体系结构;架构设计中的重要概念架构与模式架构≠设计模式模式是经验的重用,模式对软件开发中出现的一些问题给出了比较好的解决方案模式的决定和使用是设计阶段考虑的问题架构和设计中采用合适的模式可以快速的解决某些问题软件架构的概念在软件架构概念的理解上通常分为两大流派:组成派:软件系统的架构将系统描述为计算组件及组件之间的交互。决策派:软件架构是一系列重要决策的集合。两种架构设计的区别和联系组成派和决策派关于软件架构概念的区别在于从不同角度来描述对软件架构概念的认识。组成派是从软件架构的最终形态角度来描述软件架构,决策派是从软件架构形成过程来描述软件架构。软件架构最终要用构件、连接件及其约束来描述,这既是决策的主要内容和决策结果,也是软件架构最终的表现形式。这就是他们的共同点。两种架构设计的区别和联系一个软件项目开发可能涉及到多套方案,对方案的选择可能涉及到复杂的因素,需要决策者做出有远见的决策。这样的决策对系统的开发产生根本性的影响,软件系统最终表现的构件、连接件及其约束的选择是这些决策导致的产物。实例—考试系统的设计决策(1)对于一个考试系统,考试的公正性、可用性、系统性能是考试系统的关键质量属性。对公正性的考虑:避免抄袭是重要措施。方案:同一份母卷,产生不同的考试试卷。考生登录后,直接生成考试试卷。实例—考试系统的设计决策(1)可用性考虑:考生年龄差异大、工作岗位特殊、有的考生计算机应用水平很低,可能无法输汉字。方案:①考生登录只输数字型考号,登录后显示考生信息进行核实;②客观题机考,主观题可机考,也可笔试(通过投影仪显示主观题)实例—考试系统的设计决策(1)系统性能不影响考试进度和考生情绪。前面1、2条的方案属于软件架构的内容,因为它是考试系统设计必须遵循的原则。性能问题难以估计,将逐步解决。实例—考试系统的设计决策(2)生成试卷存在的问题:当超过50人考试时,生成试卷遇到性能瓶颈:等待时间长,甚至产生的试卷不完整。原因:生成试卷是对母卷进行随机的大题交换、小题交换、备选答案交换等一系列复杂运算实现,运行时间长,并发操作不能太多。解决方案:将试卷生成功能独立,提前一个时间量先生成考试试卷,考生登录后直接取试卷。实例—考试系统的设计决策(2)考生登录遇到的问题:当一次考试超过300人后,考生登录输入考号后不能如考生所期望的那样立即显示相关信息,需要等待一会儿,尽管只有几秒钟,但会影响考生情绪。原因:尽管考生身份验证简单,但并发操作太多同样影响性能。解决方案:将考生分成不同的逻辑班,不同逻辑班将考试时间错开一个小的时间间隔(如5分钟)。实例—考试系统的架构设计(3)网络环境对考试的影响:有的地区网络环境差,难以保证考试顺利进行;考生范围局限在某个地区,将考生集中到某个地方参加考试的成本大。解决方案:通过考试系统下载与安装、考试数据下载、上传、装载等功能,辅之其它措施保证考试的有效性。实例—考试系统的架构设计(3)该方案将影响考试系统的物理架构,即系统是一个分布式架构,交互机制是通过网络进行文件下载、上传进行。考试中心考点文件下载上传

一个软件系统的设计,首先要对需求中提出的各种问题提出合理的解决方案。这些解决方案反映的是设计过程,代表的是高层设计决策。对这些设计决策具体化,综合化,就构成了以构件、连接件等形式表示的软件架构。软件架构设计的关注点软件设计的首要任务是实现系统的功能需求,功能不能满足用户需求的软件无论如何也算不上好软件。软件设计必须对软件的非功能要求提出解决方案,使开发的软件满足那些非功能要求,不能满足非功能要求的软件也不是一个好软件。简单地说,不能满足功能要求的软件是一个不能用的软件,不能满足非功能要求的软件是一个不好用的软件。软件架构设计的关注点软件体系结构设计的关注点是用户的非功能需求。软件的非功能需求是软件架构设计的驱动力。大型Web系统架构负载均衡系统数据库集群系统缓存系统分布式存储系统负载均衡系统分为硬件和软件nginx数据库集群系统数据库读多写少的特点,主要对读数据库做了优化,提供专用的读数据库和写数据库,在应用程序中实现读操作和写操作分别访问不同的数据库缓存系统缓存分为文件缓存、内存缓存、数据库缓存。Memcached。分布式存储系统框架的定义框架是一个已部分完成,需要扩充或丰满的骨架。或:框架是可以通过某种回调机制进行扩展的软件系统或子系统的半成品。该定义强调:1、框架是半成品。这是框架与其它软件元素的本质区别。框架已经实现了软件系统或子系统的通用部分的代码。框架的定义2、使用框架进行软件开发的基本思想是:将特定应用部分(容易变化的部分)封装成扩展点,以某种回调机制将用户扩展的部分纳入框架的控制范围之内。3、采用“回调”机制将框架扩展成软件系统或子系统。框架与架构的区别本质区别是

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论