软件分层的优缺点(转载)

转载 2011年01月11日 14:34:00

本文转自:http://blog.csdn.net/bjay/archive/2010/10/07/5924784.aspx
节选自《精通Hibernate:Java对象持久化技术详解》编著:孙卫琴
 
由于每个软件都有自身的特点,因此不可能提供一个适合于所有软件的体系结构,但总的说来,软件的层必须符合以下特征:
 
  • 每个层由一组相关的类或组件(如EJB)构成,共同完成特定的功能
  • 层与层之间存在自上而下的依赖关系,即上层组件会访问下层组件的APl,而下层组件不应该依赖上层组件。例如:表述层依赖于业务逻辑层,而业务逻辑层依赖于数据库层
  • 每个层对上层公开API,但是具体的实现细节对外透明。当某一层的实现发生变化,只要它的API不变,不会影响其他层的实现
软件分层的优点
 
恰当的为软件分层,将会提高软件的以下性能。
  1. 伸缩性:伸缩性指应用程序是否能支持更多的用户。例如,在双层GUI应用程序中,通常对每个用户都提供一个数据库连接,如果有10000个用户, 则需要建立10000个数据库连接。而在三层结构中,可采用数据库连接池机制,用少量数据库连接支持多个用户。应用的层越少,可以增加资源(如CPU和内 存)的地方就越少。层数越多,可以将每层分布在不同的机器上,例如,在一组服务器作为Web服务器,一组服务器处理业务逻辑,还有一组服务器作为数据库服 务器。
  2. 维护性:维护性指的是当发生需求变化,只需要修改软件的某一部分,不会影响其他部分的代码。层数越多,维护性也会不断提高,因为修改软件的某一层的实现,不会影响其他层。
  3. 扩展性:扩展性指的是在现有系统中增加新功能的难易程度。层数越少,增加新功能就越容易破坏现有的程序架构。层数越多,就可以在每个层中提供扩展点,不会打破应用的整体架构。
  4. 重用性:重用性指的是程序代码没有冗余,同一个程序能满足多种需求。例如,业务逻辑层可以被多种表述层共享,既支持基于GUI的表述层,也支持基于Web页面的表述层。代码的重用可以减少开发人员重复繁琐的工作,提高开发效率。(注:最后一句话是我加的
  5. 管理性:管理性指的是管理系统的难易程度。将应用程序分为多层后,可以将工作分解给不同的开发小组,从而便于管理。应用越复杂,规模越 大,需要的层就越多。软件分层后,各个开发小组只需要掌握该层需要的技术,可以高效率的并行开发,这是加快开发速度,保证项目开发进度的最好办法。(注:最后一句话是我加的

软件分层的缺点

当然,软件分层越多,对软件设计人员的要求就越高。在设计阶段,必须花时间构思合理的体系结构。否则,如果在体系结构方面存在缺陷,例如, 层与层之间出现了自下而上的依赖关系,一旦业务逻辑发生变化,不仅需要修改业务逻辑层的代码,还需要修改表述层的代码。此外,软件层数越多,调试会越困 难。例如在三层结构中,由于存在自上而下的依赖关系,如果表述层运行出现了错误,该错误有可能是表述层产生的,还有可能是业务逻辑层产生的,也有可能是由 数据库层产生的,在这种情况下,每个软件层的开发人员必须联合起来,才能找到错误的原因。

如果应用规模比较小,业务逻辑很简单,软件层数少反而会简化开发流程并提高开发效率。

软件分层的优点

l1.伸缩性:伸缩性指应用程序是否能支持更多的用户 l2.可维护性:可维护性指的是当发生需求变化,只需修改软件的某一部分,不会影响其他部分的代码 l3.可扩展性:可扩展性指的是在现有系统中增加新功...
  • limengmeng9006
  • limengmeng9006
  • 2013年02月03日 15:29
  • 127

分层式结构的优缺点

分层式结构究竟其优势何在?Martin Fowler在《Patterns of Enterprise Application Architecture》一书中给出了答案:1、开发人员可以只关注整个结构...
  • gengwei80
  • gengwei80
  • 2008年03月03日 08:44
  • 5409

层?为什么软件开发要分层

层?为什么软件开发要分层 一、事由         最近一直在做项目的前期调研,大致的设计方案已经出来了,在与合作公司的另一个工程师做交流的时候,他突然冒了一句:本来简单的项目你们为什么还要用...
  • wolvesqun
  • wolvesqun
  • 2015年03月21日 16:15
  • 1558

软件开发分层的好处

(1)计算机程序是用来高效、方便地处理日常业务。要想通过计算机解决问题,首先得将问题描述成计算机可以理解的形式。面向对象是当前比较热门和实用的建模方法,它将现实世界中的问题领域抽象成一个个对象和对象之...
  • liupeng_qwert
  • liupeng_qwert
  • 2015年05月05日 10:31
  • 919

软件的分层

软件的分层 目前典型的应用软件的结构:三层结构 表述层:提供与用户交互的界面。GUI(图形用户界面)和web页面是表述层的两个典型的例子。 业务逻辑层:实现各种业务逻辑。 数据...
  • itianyi
  • itianyi
  • 2013年05月31日 18:00
  • 3083

软件架构模式之分层架构

对程序员来说很常见一种情况是在没有合理的程序架构时就开始编程,没有一个清晰的和定义好的架构的时候,大多数开发者和架构师通常会使用标准式的传统分层架构模式(也被称为多层架构)——通过将源码模块分割为几个...
  • bboyfeiyu
  • bboyfeiyu
  • 2015年04月19日 23:53
  • 12976

软件分层的优缺点(转载)

本文转自:http://blog.csdn.net/bjay/archive/2010/10/07/5924784.aspx节选自《精通Hibernate:Java对象持久化技术详解》编著:孙卫琴  ...
  • acetech_sean
  • acetech_sean
  • 2011年01月11日 14:34
  • 1316

mvc分层软件设计的优点及缺点

今天在复习分层开发这个课的一些知识点,在网上看到了有关分层设计的优缺点的总结,个人感觉挺好,下面转载保存一下 原文地址:http://wenda.tianya.cn/question/4b12e26...
  • xingjiyuan26
  • xingjiyuan26
  • 2015年01月02日 14:01
  • 1825

转载:软件分层的优缺点

节选自《精通Hibernate:Java对象持久化技术详解》编著:孙卫琴  由于每个软件都有自身的特点,因此不可能提供一个适合于所有软件的体系结构,但总的说来,软件的层必须符合以下特征: 每个层由一组...
  • bjay
  • bjay
  • 2010年10月07日 09:56
  • 1076

软件分层设计

应用软件的设计应该采用分层设计。 分层的程序设计带来的好处是显而易见的,由于层间松散的耦合关系,使得我们可以专注于本层的设计,而不必关心其他层的设计,也不必担心自己的设计会影响其它层,对提高软件质量...
  • GoOnDrift
  • GoOnDrift
  • 2014年02月26日 21:38
  • 3449
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:软件分层的优缺点(转载)
举报原因:
原因补充:

(最多只允许输入30个字)