`

软件逻辑层次的划分

阅读更多
软件的基本层次

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

从下往上依次是:

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对象,在各物理节点编写各自的实现。这样物理层次和逻辑层次是搅在一起的,使系统的逻辑结构显得混乱,但是可以达到较高的运行效率。

分享到:
评论

相关推荐

    软件危机的产生与解决及软件生命周期的划分

    7. 综合测试:通过单元测试、集成测试和系统测试等不同层次的测试,查找并修复软件中的错误。 8. 软件维护:软件上线后的维护阶段,包括纠错性维护(修复已知错误)和改进性维护(适应新的需求和技术发展),确保...

    软件体系结构逻辑设计1

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

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

    在面向对象的软件开发中,软件结构通常被划分为不同的层次,包括软件包、类和方法等。每一层次都有其特定的关注点和设计原则。 1. 软件包(Package)层次通常是指将软件功能相关的类和接口组织在一起,提供一种逻辑...

    从算法设计到硬线逻辑实现 PDF

    此外,书中可能还会涉及软硬件协同设计,这是一种结合软件和硬件优势的方法,通过在合适的层次划分任务来提高系统整体性能。例如,使用嵌入式处理器结合定制的硬件加速器,可以兼顾灵活性和性能。 总结来说,《从...

    oracle基本机构逻辑结构

    Oracle数据库是一种广泛使用的大型关系型数据库管理系统,其复杂的架构包括多个层次的逻辑和物理结构。在Oracle中,数据库是核心的存储单元,它是一个数据集合,通过特定的逻辑映射方式将数据分布在不同的文件上,...

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

    这种架构模式将应用程序划分为三个主要部分:表现层(UI)、业务逻辑层(BLL)和数据访问层(DAL)。 表现层,或用户界面层(UI),是用户与系统交互的地方。这一层负责展示数据,接收用户输入,并处理用户触发的...

    系统工程 区域划分与级别划分 算法(含walshall算法)

    区域划分通常涉及到将一个大的地理或逻辑空间分割成多个相互独立或部分重叠的子区域。这种划分可能是为了管理目的,例如网络分区、数据中心的物理布局,或者是软件系统的模块化设计。在进行区域划分时,我们需要考虑...

    电气绘图专业软件SEE Electrical划分章节(八).doc

    Solution Manager允许用户根据项目需求创建不同的章节,每个章节都可以包含多个相关页面,这样可以使项目内容逻辑分明,层次清晰。 1. 如何划分章节? 在SEE Electrical中,创建章节的过程相对简单。用户可以通过...

    逻辑与计算机设计基础实验

    此外,流水线技术是提高处理器性能的一种关键技术,它通过将指令执行过程划分为多个阶段,并行地处理多个指令来达到提高性能的目的。存储层次结构的优化,比如高速缓存(Cache)技术、主存和外存的管理,则是计算机...

    五层逻辑架构设计(转)

    五层逻辑架构是一种高度灵活的软件设计模式,它通过清晰地划分各个层次的职责来增强软件的可维护性和扩展性。这种架构不仅适用于传统的桌面应用程序,也同样适合现代的Web应用程序。通过将表现层和用户界面层分离,...

    层次式架构设计

    过于严格的层次划分可能导致灵活性降低。因此,在实际设计时,需要权衡各层之间的边界,确保架构既保持清晰又不失灵活性。 在软考系统架构设计师的考试中,理解和掌握层次式架构设计是必不可少的。考生需要了解如何...

    软件测试按不同的方式进行分类

    黑盒测试关注软件的功能表现,不涉及内部实现,通常通过功能划分、等价类划分、边界值分析和错误推测等方法进行。白盒测试则侧重于软件内部逻辑,通过语句覆盖、分支覆盖等方法确保代码的执行路径得到充分验证。灰盒...

    奥鹏大工20春《软件工程》在线作业2(答案100分)非免费答案.pdf

    * 结构化方法是一种软件开发方法,它强调软件设计的逻辑性和层次性。 * 结构化方法使用层次图、数据流图和状态图等工具来描述软件系统的结构和行为。 知识点4:层次图 * 层次图是一种软件设计工具,用于描述软件...

    软件工程实例(包括盒图,数据流图,软件结构图)

    软件结构图,又称为模块结构图,是结构化编程方法中的一种图形表示,用于展示软件系统的模块划分及其相互关系。这种图通常包含模块、接口、调用关系等元素。模块是软件的基本单元,它们之间通过调用关系相互作用。...

    软件工程复习题 试卷1 软件工程 复习题

    模块化是软件设计中的一种重要思想,即将软件系统划分成多个小的、独立的模块,每个模块都有其特定的功能和接口。 2. 瀑布模型本质上是一种线性顺序模型,指的是软件开发过程中各个阶段的顺序执行,一个阶段结束后...

    bug等级划分

    本文将深入探讨“bug等级划分”这一核心概念,详解其标准与实践,以期为软件开发团队提供有力的支持。 ### 一、Bug等级划分的重要性 Bug等级划分是软件测试和项目管理中的重要组成部分。它基于bug的严重性和紧急...

    软件著作权模版.doc

    1. 软件产品的总体结构:软件设计说明书规定了软件产品的总体结构,包括层次结构、功能结构、子系统划分、数据流程和运行环境等方面。 2. 设计的目的阐述:软件设计说明书规定了软件产品的设计目的,包括软件产品所...

    多系统 逻辑系统设计.pdf

    综上所述,文档“多系统 逻辑系统设计.pdf”中的内容可能主要围绕在ALTIUM Designer软件平台上进行多板卡设计的方法、技巧以及相关的电子设计知识。需要注意到的是,由于文档内容被OCR扫描转换而成,具体的技术细节...

Global site tag (gtag.js) - Google Analytics