基于分层模式的软件体系结构在日立ERP系统开发中的应用
- 格式:pdf
- 大小:229.37 KB
- 文档页数:4
第28卷第3期长春理工大学学报Vo l 128No 132005年9月Journal of Changchun University of Science and Technol ogyS ep.2005 收稿日期:2005-06-20 基金项目:日本日立医疗株式会社ERP 帐务系统资助项目。
作者简介:李岩芳,女(1965-),副教授,主要从事计算机教学和数据库技术应用领域的研究工作。
基于分层模式的软件体系结构在日立ERP 系统开发中的应用李岩芳 张仁龙(长春理工大学 计算机科学技术学院,长春 130022)摘 要:本文首先介绍了分层模式的软件体系结构理论,并分析其在软件开发中的作用和地位,然后将该体系结构应用于日立ERP 帐务系统项目的开发中。
把软件系统结构定为界面层、业务处理层和数据层,进而设计、编程和测试,有效地降低了软件开发过程的复杂度,提高了系统的开发效率和可靠性。
关键词:软件体系结构;分层软件模式;软件复用中图分类号:TP39 文献标识码:A文章编号:1672-9870(2005)03-0004-04Software Architecture Appli cati on Based on Layeri n gPatter i n Hit achi ERP Syste m ProjectL I Yanfang ZHAN G R en long(College of Co m puter Science and Technology,Changhun University of Science and Technology,Changchun 130022)Abstract:The paper intr oduces the s oft w are architecture theory of layer pattern,analyzes its r ole and po 2siti on in s oft w are devel opment,and app lies the architecture int o the account subsyste m of H itachi ERP .I nterface layer,service p r ocessing layer and data layer are designed as the s oft w are architecture t o organ 2ize detailed design,coding and test in design p r ocess,which reduces the comp lexity of the s oft w are de 2vel opment,and i m p r ove the syste m devel op ing efficiency and reliability .Key words:s oft w are architecture;layering s oft w are pattern;s oft w are reuse 软件体系结构为软件系统提供了一个结构、行为和属性的高级抽象,它不仅指定了系统的组织结构和拓扑结构,并且显示了系统需求和构成系统的元素之间的对应关系,提供了一些设计决策的基本原理。
随着软件系统的规模和复杂性的增加,软件体系结构的选择成为比数据结构和算法的选择更为重要的因素。
分层的客户/服务器体系结构为企业资源管理计划的整合提供了良好的框架,是建立企业级管理信息系统的最佳选择。
本文主要以日立医疗ERP ACCOUNT 系统的开发为实例,阐述基于分层模式软件体系结构的软件设计与实现方法[1,2]。
1 层次化软件构造软件工程的目标是生产高质量的软件产品,并基于构件的开发为软件重用提供一种可行的方法。
构件是一个内聚度高的软件包,可作为一个单元独立开发和发布,并且能方便地与其它构件组成更大的构件或系统。
基于构件的软件开发就是使用一个定义良好的实现了的且经过严格测试的构件来搭建新的软件系统。
待开发系统需要的构件可能在以前已经开发过,对于过去成功软件产品中的构件,可以直接拿过来应用到新的软件产品中,这不仅节省了软件开发时间,而且由于这些构件都经过严格的测试,新的软件产品质量就能得到很好的保证,这就是软件复用思想的体现。
构件技术就是直接为了软件复用而在软件工程领域出现的新技术。
开发构件的目的是为了复用,而层次化软件构造方法则是为了充分利用构件技术而提出的。
当对一个软件系统进行分解并完成了各个模块的设计后,将着手把各个模块设计成构件,以利于以第3期李岩芳等:基于分层模式的软件体系结构在日立ERP系统开发中的应用图1 ACCOUN T系统业务流程简图图2 ACCOUN T 系统软件结构设计图后复用。
这些构件中处于较高层次的构件可以认为是特定领域的构件,因为它们与当前开发的软件系统关系相对较紧密。
而处于较低层次的构件只是与图3 数据层详细设计结构图物理硬件或数据库打交道,或是提供一些通用算法的实现,它们可被认为是公共服务构件,因为在不同软件系统中都可能使用它们。
对于软件体系结构中层次的划分是一个笼统的概念,它们之间不具有严格意义上的层次关系,在各个层次构件的内部层次划分中才能看到明显的上下层依赖关系。
一个软件系统的层次化构造,从粗粒度角度看,仅是多个层次构件的聚集,而从细粒度角度,即从内部观察软件系统时,才可以看到内部明显的层次关系。
之所以提出基于构件的层次化软件构造是因为构件技术在很大程度上能使软件复用思想得到具体应用。
采用基于构件的技术,有利于系统可扩展性能的提高,使系统具有更大的灵活性。
当完成一个软件系统所有构件的开发后,集成只须按照系统需求将构件组合起来。
要添加或删除系统功能只须将相关构件加入或从系统中去除就行了。
这大大减轻了软件系统的维护负担,并在很大程度上5长春理工大学学报2005年保证了软件系统的可伸缩性,为开发类似产品或系列产品提供了有力的支持[3]。
2 日立ER P系统总体设计方案日立医疗ERP Account系统主要完成日立医疗株式会社售后服务部分的业务处理。
日立医疗销售各部分主要工作和业务流程如图1所示。
在系统总体设计过程中,根据系统的业务功能,结合当前软件体系结构中比较流行的软件分层设计方法,把软件体系结构定为三层:界面层、业务处理层和数据层。
界面层主要负责系统与用户的接口,接收用户对软件使用的操作;业务层根据用户提出的软件需求,对用户提交的指令进行分析处理,然后向数据层提出数据请求操作;数据层负责向整个系统提供所要操作的数据,该层主要考虑系统的性能、数据传输效率和数据安全性。
系统结构图如图2所示。
Account系统设计与实现使用三层C/S结构。
表示层主要提供用户输入和系统的输出,其中输出包括显示器输出和打印机输出(有单独的打印模块),这一部分主要运行在客户机中;业务层根据日立公司的业务流程完成各种书类的创建、查询、修改、更新、复制和删除等基本业务控制,同时负责用户输入数据合法性检验、业务逻辑控制检验等工作,现在这部分工作也在客户机中以动态链接库运行,如果客户需要,可以方便地移植到单独的业务层服务器上;数据层主要向表示层和业务层提供基本数据,然后经业务层处理,最后在表示层输出或者更新数据库。
数据层数据管理部分工作在一台日立的S QL Server2000服务器上,主要工作都是由数据库服务器中的存储过程完成的。
在系统设计过程中,为了降低系统设计和实现的复杂性,达到软件质量的可评估性和软件的易维护性,同时保证软件系统按时交工,采用了分层模式的软件体系结构。
每一层内都使用面向对象的方法设计。
在层内,根据各模块之间的关系,提取抽象基类,使得层内数据结构相对比较规范。
这样层内各小组成员就能够在很短的时间内接管其他成员未完成的代码或者对已完成的代码进行维护。
同时由于各层内设计规范,也相应地简化了层间接口设计的复杂性,提高了软件内构件的可重用性。
表示层主要完成用户界面的显示与跳转。
设计过程中主要使用了For m类和D ial og类,所有用户界面都是在这两个类的基础上继承的。
根据用户的特殊需求,界面层定义了一些特殊的用户控件,这些控件已经被打包生成动态链接库文件,可以被大量的重复使用。
3 数据层建模数据层是整个日立系统数据支持层,主要包括各种书类数据和系统支持参数数据。
界面层中的控件都是使用数据绑定方式直接绑定到数据层提供的数据对象中,同时业务层也可以直接操作数据层的数据对象。
另外考虑到分层体系结构的特点和软件运行的效率,在设计数据对象时就有了特殊的要求。
软件开发过程中数据层的设计也是构件重用的一个重要组成部分。
好的数据层设计可以在同类软件中重复使用,将会大大提高软件的开发效率。
这些都要求数据层设计时考虑通用性和可复用性。
为此,在整个数据层设计过程中进行了大量的数据抽象和功能提取,同时设计过程中使用了缓存机制,以提高软件系统开发的执行效率。
如图3所示。
根据系统分析,数据层中主要包括两类数据本体信息和数据检索信息。
同时,为了提高系统效率,在设计过程中增加了缓存结构类和几个特殊类,例如用户登录信息类、数据源连接类、受注分类设定类等。
数据层中存在主要的五个基础类:Acc DataSource生成数据源连接类、Acc Operat or 当前登录用户信息类、Accgl O bj L ist全局数据缓存类、Acc Data Obj书类本体数据对象类、Acc O jbSearch 数据对象检索类。
AccG LObj L ist是一个设计过程中使用的缓存机制。
在AccG LObj L ist类中,提供了对系统中所有数据本体的引用。
当系统中某个引用数为0时,数据底层结合1net框架的内存垃圾回收机制完成内存管理功能。
该类中的元素都是Acc Docs Base类型的,整个对象中的元素都是在检索的时刻来根据条件向AccG LObj L ist对象中添加数据的。
AccG LOb2 j L ist类,在数据层中自主维护,对数据层的其它类和其它层来说都是透明的。
Acc Data Obj类是系统原始基类,Acc ObjSearch 是书类的检索数据对象。
Acc Data Obj是所有书类本体的基类,包含了各个书类的共有信息和共有属性。
其中共有信息定义为一个A rray L ist数据结构,A r2 ray L ist中的每一项都是一个AccField I nf o结构,包含了本体中的所有数据项在数据库中的字段名、字段大小、字段值和字段类型。
AccField I nfo结构是Col2 lecti on的Ite m数据成员的类型,作为书类和其他类抽象出来的基类,继承于I L ist接口,提供Fied2 By Na me、FindField两种访问字段的方法,在Ac26第3期李岩芳等:基于分层模式的软件体系结构在日立ERP系统开发中的应用c DataObj中提供访问接口,在具体的书类中实现方法,在Acc Data Obj中定义A rray L ist对象列表,当具体的书类检索出所需要的字段的值后,向该对象列表中追加项目。