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

转载 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. 管理性:管理性指的是管理系统的难易程度。将应用程序分为多层后,可以将工作分解给不同的开发小组,从而便于管理。应用越复杂,规模越 大,需要的层就越多。软件分层后,各个开发小组只需要掌握该层需要的技术,可以高效率的并行开发,这是加快开发速度,保证项目开发进度的最好办法。(注:最后一句话是我加的

软件分层的缺点

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

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

相关文章推荐

软件的分层

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

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

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

软件分层设计思路

分层架构设计 常见的三层: 1、表现层(UI):通俗讲就是展现给用户的界面,即用户在使用一个系统的时候他的所见所得。    2、业务逻辑层(BLL):针对具体问题的操作,也可以说是对数据...

软件的分层

软件的分层 目前典型的应用软件的结构:三层结构 表述层:提供与用户交互的界面。GUI(图形用户界面)和web页面是表述层的两个典型的例子。 业务逻辑层:实现各种业务逻辑。 数据库层:负责存放和...

如何做系统分层

数据访问层:有时候也称为是持久层,其功能主要是负责数据库的访问。简单的说法就是实现对数据表的Select,Insert,Update,Delete的操作。如果要加入ORM的元素,那么就会包括对象和数据...

微服务架构基础——解读六边形架构

六边形架构的初衷是为了解决技术与业务系统的解耦合问题,以及技术与技术间的解耦合问题,这一架构从设计模式中来,从业务的实体服务出发,将面向接口的设计具体化的端口协议和适配器实现,将业务实体实现自服务的完...

一个简单的JSP 连接MySQL使用实例

一、软件环境              下载并安装MySQL,Tomacat,JDBC、MyEclipse或其他IDE。 二、环境配置                将其环境变量配置好之后,下载Jav...
  • kirinlau
  • kirinlau
  • 2016年11月16日 08:42
  • 15510

常用文献管理软件优缺点比较及总结

文献管理软件的用途: 一、核心用途:写论文时的引文管理,这些是任何文献管理软件必备的核心功能 二、重要功能:管理题录使得可以快速高效地搜索到自己已经看过的文献;对题录进行分组管理方便自己浏览; ...

B/S、C/S软件架构优缺点对比

要想对“C/S”和“B/S”技术发展变化有所了解,首先必须搞清楚三个问题。 第一、什么是C/S结构。 C/S(Client/Server)结构,即大家熟知的客户机和服务器结构。它是软件系统体系结构...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:软件分层的优缺点(转载)
举报原因:
原因补充:

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