基本层次
软件的逻辑结构可以划分为下面四个基本层次:
从下往上依次是:
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对象,在各物理节点编写各自的实现。这样物理层次和逻辑层次是搅在一起的,使系统的逻辑结构显得混乱,但是可以达到较高的运行效率。
分享到:
相关推荐
软件的总体结构主要回答的问题 软件的组成部分 软件的层次关系 模块的内部处理逻辑 模块之间的界面 软件工程软件体系结构全文共50页,当前为第4页。 软件体系结构 软件体系结构包括两部分: (1)过程构件(模块)的层次...
软件开发的本质:不同抽象层术语之间的“映射”,以及不同抽象层处理逻辑之间的“映射”。 简述实施软件开发的基本途径 软件开发的基本途径是问题建模。常用的建模手段有:结构化方法、面向对象方法以及诸多面向数据...
345加工逻辑的描述 35需求分析图形工具 351层次方框图 352Warnier图 353IPO图 36SA 方法的应用 37习题 第4章软件总体设计 41软件总体设计的目标和任务 42软件设计的概念和原理 421模块和模块...
需求分析 确定待开发软件的功能、性能、界面等要求,从而确定系统的逻辑模型 用户、项目负责人、系统分析员 需求规格说明书 软件开发阶段——待开发软件“怎么做” 软件设计 概要设计 模块分解,确定软件的结构,...
为了在逻辑层次上跟踪软件系统的版本演变,支持变更影响分析和系统一致性验证,提出了一种基于逻辑元素间关系的软件配置管理模型LEBM(logical element basedmodel)。LEBM通过配置项类型抽象区分不同类型的软件工件...
4.4.1功能层次模型 4.4.2数据流模型(DFD图) 4.4.3数据关系模型(ER图) 4.4.4系统状态模型 4.5需求有效性验证 4.5.1需求验证内容 4.5.2需求验证方法 4.6需求规格定义 小结 习题 第5章软件概要设计 5.1概要...
可以判断,任何一款实用的软件采取的软件逻辑抽象都是别样的,特例的逻辑。否则,软件不可能那么轻快实用。软件逻辑,鬼魅也。而需求分析,必须是现实实用的,而不是同构/仿真的-这似乎是反对象分析的。因为这里...
·逻辑覆盖率 ·其他覆盖率 ~单元测试 ·单元测试的定义和目的 ·单元测试关注的重点 ·单元测试环境 ·单元测试策略 ·单元测试过程 ·单元测试原则 ·单元测试执行过程 ·CppUnit自动化单元测试框架 ~...
软件架构的好坏直接决定了软件系统的成败,而软件架构设计最关键的就是要解决软件主体模块之间的逻辑关系。尽管新技术、新工具不断涌现,技术本身千变万化,但一些基本的设计原理、设计思想却万变不离其宗。本书作者...
答:软件开发的本质就是实现问题空间的概念和处理逻辑到解空间的概念和处理逻辑之间的映射。P19 (2)简述实施软件开发的基本途径。 答:实施软件开发的基本途径是系统建模。所谓系统建模,是指运用所掌握的知识,...
软件架构的好坏直接决定了软件系统的成败,而软件架构设计最关键的就是要解决软件主体模块之间的逻辑关系。尽管新技术、新工具不断涌现,技术本身千变万化,但一些基本的设计原理、设计思想却万变不离其宗。本书作者...
分层次深入:主要分为初次使用、理解加深和灵活应用这三个层次。学员理解为更为透彻,掌握更为牢固。 逆向设计确保就业——专业分析5362条招聘信息 ——深入访谈386家用人企业 ——定制2份行业人才需求标准...
软件测试工程师,在国外的标准来说,应该是和架构师处于同一等级,道理很简单,测试是为了发现更多的隐藏bug才存在的一种职业,你要发现bug首先你要知道别人的逻辑是否正确,代码你要看得懂,这样才找得出bug。...
软件⼯程—软件设计 前⾔ 软件分析阶段完成了新系统的逻辑模型设计。软件设计就是根据新系统的逻辑模型模型建⽴物理模型。软件设计阶段解决软 件"怎么⼲"的问题,可以分为总体设计和详细设计两个阶段,最后形成系统...
软件是计算机系统中的逻辑成分,具有无形性。其主要内容包括:程序、配置文件、系统 文档、用户文档等。 2.软件分类 (1)按功能划分:系统软件、支撑软件、应用软件。 (2)按工作方式划分:实时处理软件、分时...
用maxplus2软件设计多功能数字钟,采用层次化的设计方法,底层使用VHDL语言设计各模块的功能,然后使用画图方法设计顶层。 设计中包括计时,校时,整点闹铃,闹钟4大模块 计时模块:用VHDL语言设计24进制计时、60...
答:软件开发的本质就是实现问题空间的概念和处理逻辑到解空间的概念和处理逻辑之间的映射。 2.简述实施软件开发的基本途径。 答:实施软件开发的基本途径是系统建模。所谓系统建模,是指运用所掌握的知识,通过抽象...
逻辑覆盖率 其他覆盖率 单元测试 单元测试的定义和目的 单元测试关注的重点 单元测试环境 单元测试策略 单元测试过程 单元测试原则 单元测试执行过程 CppUnit自动化单元测试框架 集成测试 集成测试的...
包括: 系统组成、逻辑结构及层次确认 应用系统结构确认 支撑系统结构确认 系统集成确认 系统工作流程确认 软件设计方案模板全文共8页,当前为第6页。软件设计方案模板全文共8页,当前为第6页。 系统详细界面划分 ...
①向上层提供统一的调用接口(如 read/write 系统调用) ②设备的保护 ③差错处理 ④设备的分配与回收 ⑤数据缓冲区管理 ⑥建立逻辑设备名到物理设备名的