`
lane_cn
  • 浏览: 53687 次
社区版块
存档分类
最新评论

软件的逻辑层次

阅读更多

基本层次

软件的逻辑结构可以划分为下面四个基本层次:

从下往上依次是:

1:基础设施层——这个层次是纯技术层次,解决的是系统的物理问题,比如database gateway、网络通信、对象容器……这个部分与业务需求关系不大,是系统的物理条件。

2:business对象——在这个层次上,业务要素出现了,业务领域中的概念在这里实现。比如一个航运公司的系统,这里就应该有航线、航班、座位、乘客、登机牌……这些对象应该拥有与实际业务领域相符的属性、方法。

3:business流程——这个流程不是指程序解决问题的流程,而是用户的商业活动的流程。他体现的是端到端的业务流程。比如:检票员为旅客办理登机牌。business流程的输入参数是business对象,输出参数是business对象,产生的异常也是business对象。business对象在这里组合、串接,实现业务流程的自动化。这个层次是在直接实现用户的需求。

4:UI和接口——这个层面调用business流程,将执行的结果交给软件的用户,或者别的系统。

这种逻辑层次划分是最基本的情况,各种复杂的层次都是这种方式的一种扩充。比如下面这样的形式:

在基础设施层和business对象之间,加入了一个DAO层。DAO层一方面负责数据的存储,体现了数据的存储方式,另一方面体现了业务对象的属性。这样就使business对象只需要负责纯粹的业务逻辑,不用关心物理问题。简单的说,业务对象里面不需要写SQL语句了。

business对象和business过程之间,加入了Service层。business对象也是具有行为的,但是这样的行为是比较细微的,需要调用者在多次调用之间保持必要的状态,需要用Service层来做一个封装,更明确的表达业务含义。

单元测试

单元测试需要关心一个问题:层次之间的依赖关系。如果要测试某一个层次上的对象,必须同时建立他所依赖的每一个对象。层次之间的依赖越简单,测试越容易。

逻辑层次之间原则上是由上至下的依赖关系,同一层次内部的对象可以互相依赖。跨越层次的调用也是允许的,比如在UI Process中调用Business对象。UI层和UI Process层之间存在着互相的依赖。开发中我们最希望测试的是这三个层次:business过程、service、business对象。我们只要对下层对象建立stub对象,就可以对这三个层次上的对象进行测试。

对这三个层次的测试结果不仅保证了程序的运行时正确性,也是对程序的业务流程进行测试。在开发过程中和维护过程中,某个业务流程发生了变化,可以用单元测试保证其他流程不会受到危害。这样的构架可以保证迭代开发过程。

和物理层次的结合

上面说的都是系统的逻辑层次。在系统中还存在着另一个层次——物理层次。逻辑层次的目的是简化程序的逻辑复杂度,便于开发和维护;物理层次的实现需要考虑实际的物理分布情况,合理的安排每个物理节点的任务,最大限度提高系统的性能。逻辑层次和物理层次的划分依据和划分目的都是不一样的,他们之间存在着联系,但也不是绝对的。

逻辑层次和物理层次的结合有两种方式:

1、在基础设施层解决掉物理分布的问题,建立一个分布式的对象容器,把business对象和service放到容器中。这样,business对象和service就不必处理复杂的物理分布问题,business过程也不必关心他所调用的对象是在什么位置建立的。这样的方式最大限度的减少了物理结构对程序逻辑结构的影响,增加了物理分布的灵活性。但是在大部分情况下,对系统的效率都是有危害的。

2、在business对象内部处理物理分布的问题,或者制定一个技术无关的接口来体现business对象,在各物理节点编写各自的实现。这样物理层次和逻辑层次是搅在一起的,使系统的逻辑结构显得混乱,但是可以达到较高的运行效率。

分享到:
评论
1 楼 lane_cn 2006-12-22  
这个帖子变成入门讨论了,也算是有了正确的归宿。我只是想普及一点基础知识,看到n个人在这里讨论对UI和DAO搞JUNIT测试,我觉得这样的普及是必要的。

相关推荐

    模糊层次分析法软件-好软件

    模糊层次分析法(Fuzzy Analytic Hierarchy Process,FAHP)是一种在决策分析中结合了模糊逻辑和层次分析法的工具。它适用于处理那些信息不完整、评价标准模糊不清或存在多个相互关联因素的复杂决策问题。在IT行业中...

    逻辑函数公式化简器

    2. **多级括号**:软件能处理复杂的表达式,其中包括多层括号结构,确保正确解析逻辑层次。 3. **化简算法**:内置高效的化简算法,能够快速将逻辑表达式简化为最简与或非形式。 4. **用户界面**:提供友好的用户...

    5.1_4_IO软件层次结构1

    软件层次结构中的 I/O 软件层次结构 在计算机系统中,I/O 软件层次结构是指从用户应用程序到物理设备的 I/O 操作的各个层次。在这个层次结构中,每个层次都有其特定的功能和责任,共同完成 I/O 操作。下面是 I/O ...

    用层次分析法进行评价的运算软件

    使用这款软件进行层次分析运算,用户无需深入理解AHP的数学细节,只需关注实际问题和判断,软件将自动完成计算和分析工作,大大降低了决策分析的难度和时间成本。对于企业、研究机构和个人来说,这是一款非常实用的...

    软件体系结构逻辑设计1

    这种风格将系统划分为三个主要层次:展示层、业务逻辑层和数据层。展示层是用户与系统交互的界面,负责处理用户请求并显示反馈结果;业务逻辑层则包含业务规则和处理流程,是系统的核心;数据层负责数据的存储和访问...

    5.1.4_IO软件层次结构1

    《5.1.4_IO软件层次结构1》 在计算机科学中,输入/输出(I/O)软件层次结构是操作系统中的关键组成部分,它负责管理硬件设备的交互,为用户提供一致的接口,以及处理设备的保护、错误处理、资源分配等多个方面。本...

    软件分析与建模 实验2逻辑视图

    "实验2:逻辑视图"是针对建桥课程中软件分析与建模部分的一个实践任务,主要使用PowerDesigner这一强大的数据库设计工具来完成。在这个实验中,我们将深入探讨逻辑视图的概念、作用以及如何利用PowerDesigner来构建...

    软件研发质量管理层次模型.doc

    《软件研发质量管理层次模型》 在软件开发领域,质量管理是至关重要的环节,它涉及到软件产品的整个生命周期,确保软件产品能够满足用户的需求并达到预设的标准。本文主要探讨了软件研发质量管理的层次模型,旨在...

    论文研究-不同层次上面向对象软件的特性 .pdf

    1. 软件包(Package)层次通常是指将软件功能相关的类和接口组织在一起,提供一种逻辑上的模块化。软件包不仅有助于管理代码的可见性和作用域,还能通过封装和抽象来降低模块间的耦合度。 2. 类(Class)层次则是...

    SaleaeLogic16-V2版-逻辑分析使用说明.pdf

    - 首先,从官网下载Saleae Logic16 V2版逻辑分析仪的软件,解压至任意目录。 - 安装USB驱动,对于Windows系统,解压后进入相应版本目录,运行setup32.exe或setup64.exe安装驱动。 - 确保在设备未插入的情况下执行...

    数字逻辑实习报告

    使用软件工具如ModelSim或 Quartus II,可以对设计进行仿真,检查其在不同输入条件下的行为是否符合预期。通过硬件测试板,我们可以将设计实际实现并验证其功能,确保其在真实环境中也能正常工作。 总的来说,数字...

    业务流程中概念模型到逻辑模型的转换

    它涉及将高层次的业务需求转化为实际可执行的软件系统模型的过程。在这个过程中,概念模型通常用于分析和理解业务流程,而逻辑模型则是为具体的系统实现提供设计蓝图。本文首先分析了概念模型和逻辑模型之间的区别和...

    软件开发质量管理层次模型.doc

    软件开发质量管理层次模型是软件开发过程中确保产品质量的关键框架。该模型分为三个主要层次:技术层次、方法体系层次和社会因素层次。 1. 技术层次: - 数据质量管理:这一层关注的是数据的准确性和完整性,因为...

    层次分析法软件.zip

    1. **构建层次结构**:首先,我们需要定义问题的目标、准则和备选方案,将它们按照从总目标到具体选项的逻辑关系组织成层次结构。这个层次结构通常包括目标层、准则层和方案层。 2. **建立判断矩阵**:在每一层中,...

    什么是三层架构_表现层/业务逻辑层/数据访问层

    高内聚意味着每个层次内部的组件有较强的关联性,而低耦合则意味着各层之间的相互依赖度较低,这样可以降低修改某一层次对其他层次的影响。 微软推荐的三层架构还包括了模型-视图-控制器(MVC)模式,其中模型代表...

    Stateflow逻辑系统建模.rar

    《Stateflow逻辑系统建模》是一份深入探讨Simulink中的Stateflow技术的资料,它在控制工程、软件工程和系统模拟等领域具有广泛的应用。Stateflow是一种强大的图形化建模工具,它允许用户以直观的方式表示复杂的离散...

    逻辑电路设计基础

    - **层次化设计**:将复杂的系统分解成多个模块,每个模块完成特定功能。 - **可编程逻辑器件**:包括PAL、GAL、CPLD和FPGA等,这些器件可以根据需要重新配置逻辑功能。 - **硬件描述语言**:如Verilog HDL和VHDL,...

    面向计算机科学的数理逻辑

    1. **基础概念**:数理逻辑主要包括命题逻辑、一阶逻辑(含谓词逻辑)、二阶逻辑等层次。这些逻辑系统提供了形式化的语言和推理规则,用于精确表达和分析数学和计算机科学中的命题和理论。 2. **命题逻辑**:这是...

    概念模型、逻辑模型、物理模型区别(HZQ).doc

    逻辑模型是数据库设计的中间层次,它是基于概念模型的描述,用于定义数据的逻辑结构和关系。逻辑模型主要关心的是数据的逻辑结构和关系,而不关心数据的物理存储方式。逻辑模型的设计主要是为了定义数据的逻辑结构和...

    逻辑学导论

    无论是软件开发中的算法设计,还是人工智能领域的模式识别,逻辑推理都是关键技术之一,推动了科技的进步与发展。 ### 结语 逻辑学作为一门古老的学科,在现代社会依然发挥着不可替代的作用。通过对逻辑学的深入...

Global site tag (gtag.js) - Google Analytics