【PHP开源代码栏目提醒】:以下是网学会员为您推荐的PHP开源代码-基于构件的物流软件开发模式探索输出报告 - 期刊论文,希望本篇文章对您学习有所帮助。
“基于构件的物流软件开发模式探索”输出报告1 前言 软件工程的目标是致力于提高软件生产效率和软件质量如果每个应用软件系统的开发都从头开始必然存在大量的重复劳动。
在这样的目标背景下,软件构件技术就应运而生了,现在已经是炙手可热。
软件构件技术是软件复用的一种重要手段,是近年来软件复用研究的热点,目前出现了大量的基于构件的应用软件开发,取得了良好的效果。
我们在分析了构件间各种操作的基础上,将软件体系结构的概念引入现有的构件模型,用于对复合构件进行描述,从而改进了现有的构件模型,给出了一种基于软件体系结构的可复用构件模型,并给出了该模型的应用。
同时,使用基于构件的软件开发技术,发挥构件在软件重用方面的优势,就必须要有支持整个软件生命周期并包含有大量可用构件的构件库系统及过程管理方法,有效的构件管理和高效的构件查询检索是构件库系统成功的关键。
2 物流软件系统基础体系结构介绍2.1 J2EE 三层架构 我公司物流软件在 J2EE 开发平台上进行开发实施,基于 B/S 三层体系架构实现,采用界面表示、业务逻辑、数据操作相分离的模式,客 1户不能直接与数据库交互,它首先与中间层联系,中间层实例化服务器应用程序,并管理服务器对象,将结果返回给客户。
J2EE 三层架构示意图2.2 系统体系结构设计 我公司物流软件采用了 Struts Spring Hibernate 的轻量级 J2EE框架,表示层用 Struts 框架; 业务层用 Spring 框架;而持久层则用Hibernate 框架。
每个层在处理程序上都应该有一项明确的责任 而不应该在功能上与其它层混合,并且每个层要与其它层分开,但要给他们之间放一个通信接口。
2 Struts Spring HibernateJDO ORACLE MySql MSSQL SYBASE POSTGRE SQL Windows Server ,Linux,Other Unix操作系统 系统体系结构图 整个平台的体系架构将集中在 Struts/Spring/Hibernate 之上进行构建,与三层框架结合,有效实现了系统中三个层次之间的分离,使整个平台是一个开放的、松耦合的,可灵活订制的平台系统。
平台采用 struts 和 spring 编程框架,可有效分离 web 的显示层和业务操作层;同时使用基于 Hibernate 的 O/R Mapping 技术,实现基于对象的关系型数据库操作,包括数据的 CRUD 操作,O/R Mapping 使得平台软件可以灵活地适应不同类型的 DBMS 系统,而前端的业务层却不用做出任何改变。
2.3 工作流技术应用 本系统应用
开源工作流引擎,引擎是驱动流程流动的主要部件,它负责解释工作流流程定义,创建并初始化流程实例,控制流程流动的路径,记录流程运行状态,挂起或唤醒流程,终止正在运行的流程,与其 3他引擎之间通讯等工作。
工作流管理系统(Workflow Management System WfMS)的主要功能是通过计算机技术的支持去定义、执行和管理工作流,协调工作流执行过程中工作之间以及群体成员之间的信息交互。
工作流需要依靠工作流管理系统来实现。
我们的工作流管理系统是基于 JBPM 工作流引擎的一套工作流管理系统,通过 API 向外部提供四个方面的功能服务,这些功能分别为: 接口 1-流程定义 接口 2-流程控制与应用接口 接口 3-不同工作流管理系统之间的协同工作 接口 4-管理和监视功能 下面的图表示这四个接口的作用: 接口 1-流程定义 4 我们开发了一套可视化的流程定义工具,通过这个工具,用户可以自由定义出各种流程,可以轻松支持顺序签、任意签、会签、条件式判断流程等各种复杂的流程,并可以指定工作流每个节点的任务人和限定时间,从根本上满足应用多样化的需求。
接口 2—流程控制与应用接口 流程控制与应用接口提供大致几个方面的功能: 1、 流程的建立与撤销 2、 获取工作流流程定义与状态 3、 工作流流程实例的操作,如创建、挂起、终止流程,获取和 设置流程属性等 4、 工作流活动实例的操作,如获取和设置活动的属性,改变活 动的状态等 5、 工作列表及工作项的操作,如获取工作列表,处理工作项等 通过这些功能,用户可以完成与工作流管理系统之间交互的所有任务:登录系统、打开自己的工作列表、处理自己的工作任务、将完成的任务提交给系统、将自己的任务分发或转交给其他用户、修改当前流程等等。
在我们的工作流引擎中,有一套监听机制,当我们创建、完成、转交、挂起、终止流程时,会并根据不同的操作自动完成不同的任务。
接口 3-不同工作流管理系统之间的协同工作 有时候流程需要跨越多个服务器或系统,此时就需要服务器或系统之间进行通讯,交换流程控制信息和流程定义等数据,以实现流程跨地 5域运行。
接口 4-管理和监视功能 我们提供用户管理和监控系统运行状态、查看系统运行历史记录、业务统计的各个接口。
由于工作流程中的每个步骤,每个状态都记录在数据库中,我们可以很轻松的提供各种用户需要的状态或者报表,而且还可以通过系统导出到外部接口中。
在此工作流技术基础上,我们可以实现的主要功能包括: 1. 流程自定义 用户可根据业务需求利用鼠标拖拉拽就可以完成流程的定义,不用任何
代码。
2. 流程类型 支持顺序签、任意签、会签、条件式判断流程等各种复杂的流程。
3. 超时工作提醒 当某一个工作设置了提醒功能以后,在该工作完成前或者完成后多长时间进行邮件或在线短信息的提醒等。
4. 流程的可视化跟踪 可以在整个流程途中,查看流程进行到哪一个步骤。
5. 多种条件的代理功能 不仅支持单一人的代理,而且可以支持多种代理,例如当张三出差期间其工作由李四来代理,而且还可以按部门、角色、工作名称的条件来指定代理人 6. 流程可以在执行过程中暂停 当某一个工作在处理过程中需要暂时停下来的时候可以设置此功能,并且还可以重新设置启动或者流程直接终止。
6 7. 工作的退回 工作可以退回到任何以前的一个步骤。
8. 流程的启动方式可以分: 条件启动,自动启动,呼叫启动,触发启动等。
9. 业务报表:流程统计、任务平均办结周期分析、任务参与者办理时间分析、超期任务情况分析、人员的任务办理数量分析、人员的任务办理质量分析2.4
开源软件技术应用2.4.1 STRUTS、SPRING、HIBERNATE
开源框架 Struts 是一个基于 Sun J2EE 平台的 MVC 框架,主要是采用Servlet 和 JSP 技术来实现的。
由于 Struts 能充分满足应用开发的需求,简单易用,敏捷迅速,在目前颇受关注。
Struts 把 Servlet、JSP、自定义标签和信息资源message resources整合到一个统一的框架中,开发人员利用其进行开发时不用再自己编码实现全套 MVC 模式,极大的节省了时间,所以说 Struts 是一个非常不错的 WEB 应用框架。
Spring 是一个解决了许多在 J2EE 开发中常见的问题的强大框架。
Spring 提供了管理业务对象的一致方法并且鼓励了注入对接口编程而不是对类编程的良好习惯。
Spring 的架构基础是基于使用 JavaBean属性的 Inversion of Control 容器。
然而,这仅仅是完整图景中的一部分:Spring 在使用 IoC 容器作为构建完关注所有架构层的完整解决方案方面是独一无二的。
Spring 提供了唯一的数据访问抽象,包括简单和有效率的 JDBC 框架,极大的改进了效率并且减少了可能的错误。
7Spring 的数据访问架构还集成了 Hibernate 和其他 O/R mapping 解决方案。
Spring 还提供了唯一的事务管理抽象,它能够在各种底层事务管理技术,例如 JTA 或者 JDBC 事务提供一个一致的编程模型。
Spring 提供了一个用标准 Java 语言编写的 AOP 框架,它给 POJOs提供了声明式的事务管理和其他企业事务--如果你需要--还能实现你自己的 aspects。
这个框架足够强大,使得应用程序能够抛开 EJB 的复杂性,同时享受着和传统 EJB 相关的关键服务。
Spring 还提供了可以和IoC 容器集成的强大而灵活的 MVC Web 框架。
Hibernate 是一个开放源
代码的对象关系映射框架,它对 JDBC 进行了非常轻量级的对象封装,使得 Java 程序员可以随心所欲的使用对象编程思维来操纵数据库。
Hibernate 可以应用在任何使用 JDBC 的场合,既可以在 Java 的客户端程序实用,也可以在 Servlet/JSP 的Web 应用中使用,最具革命意义的是,Hibernate 可以在应用 EJB 的J2EE 架构中取代 CMP,完成数据持久化的重任。
2.4.2 JBoss 应用服务器 Jboss 是 web 服务器的一种,主要做 ejb 容器。
近年来,在 J2EE应用服务器领域,JBoss 是发展最为迅速的应用服务器。
JBoss 是免费 开放源
代码 J2EE 的实现,的, 它通过 LGPL 许可证进行发布这使得 JBoss广为流行。
另外,JBoss 应用服务器还具有许多优秀的特质: 它将具有革命性的 JMX 微内核服务作为其总线结构;它本身就是面向服务的架构 8 ;(Service-Oriented Architecture,SOA) 它还具有统一的类装载器,从而能够实现应用的热部署和热卸载能力。
因此,它是高度模块化的和松耦合的。
JBoss 应用服务器是健壮的、高质量的,而且还具有良好的性能。
2.4.3 MySQL 数据库 MySQL 是一个小型关系型数据库管理系统,开发者为瑞典 MySQLAB公司,在 2008 年 1 月 16 号被 Sun 公司收购。
与其他的大型数据库例如Oracle、IBM DB2、SQL Server 等相比,MySQL 自有它的不足之处,如规模小、功能有限等,但是这丝毫也没有减少它受欢迎的程度。
对于一般的中小型企业来说,MySQL 提供的功能已经绰绰有余,而且由于 MySQL是开放源码软件,因此可以大大降低总体拥有成本。
MySQL 的特性: 使用 C 和 C编写,并使用了多种编译器进行测试,保证源
代码 的可移植性。
支持 AIX、BSDi、FreeBSD、HP-UX、 Mac Linux、 OS、Novell Netware、 NetBSD、OpenBSD、OS/2 Wrap、Solaris、SunOS、Windows 等多 种操作系统。
为多种编程语言提供了 API。
这些编程语言包括 C、C、C、 Delphi、Eiffel、Java、Perl、
PHP、Python、Ruby 和 Tcl 等。
支持多线程,充分利用 CPU 资源,支持多用户。
优化的 SQL 查询算法,有效地提高查询速度。
9 既能够作为一个单独的应用程序应用在客户端服务器网络环境 中,也能够作为一个库而嵌入到其他的软件中。
提供多语言支持,常见的编码如中文的 GB 2312、BIG5,日文的 Shift_JIS 等都可以用作数据表名和数据列名。
提供 TCP/IP、 ODBC 和 JDBC 等多种数据库连接途径。
提供用于管理、检查、优化数据库操作的管理工具。
可以处理拥有上千万条记录的大型数据库。
InnoDB 给 MySQL 提供了具有事务、回滚、崩溃修复能力、多版 本并发控制、事务安全型表。
3 物流软件构件技术应用情况 本系统充分利用软件构件技术,并在基础通用构件的基础上,设计和开发了一批行业通用性较强、实现某一特定物流业务逻辑的领域构件,并采用标准的 XML 配置来实现业务构件的定义;这样,在新项目开发时,这些业务构件可以通过配置直接使用,减少重复开发工作量。
103.1 构件库管理系统应用 我们公司使用的北京大学软件工程研究所开发的构件库管理系统。
该软件构件库提供了多种构件发布、分类、检索的方法和良好的用户访问控制能力;支持分布式构件库管理与应用;能够支持 UDDI 协议(Universal Description Discovery and Integration:统一描述、发现 ,实现与分布式构件(主要是 EJB、CORBA 与 COM构件)和集成协议)的运行平台相协同;在构件库系统存储管理方面,可基于分布式结构存储软件构件及其相关信息,提供高可靠性(分布、备份、负载均衡)支持机制;具备良好的安全性(用户身份验证、访问控制、抗攻击、抗抵赖等)。
113.2 通用构件应用情况 第三方零担配送业务营运管理系统采用 Java 语言开发,浏览器/服务器(B/S)模式。
界面类控件开发应用:以 JavaScrip 语言为主,包括树形菜单、 分页列表、日期选择等。
数据库构件开发应用:包括数据库连接池应用,全文检索等。
算法构件应用:包括加密算法,数据格式验证,压缩算法等。
其他功能性构件:包括打印控件,报表控件,电子认证构件等。
3.3 基于通用构件可二次开发平台框架 系统管理 基础信息管理 其他通用构件 功能模 角色 组织机 数据字 界面处 数据库 块管理 管理 构管理 典 理控件 构件 权限 登录帐 车辆信 客户档 运算 工作流 管理 号管理 息管理 案管理 算法 引擎 流程 系统公 员工信 日志处 管理 告 息管理 …… 理 …… 通用构件分类示意图 通用构件一般实现界面控制、算法、数据库处理、系统管理(用户角色权限)、基础信息管理(组织机构)等与业务无关的功能,通用构件可以应用于系统的各个模块。
本系统基于构件化技术,将与业务无关的部分实现为可重用的基本应用框架,基本应用框架包括登录控制、界面生成、基于角色的访问控 12制方法(RBAC)、树型菜单结构管理、工作流引擎。
系统采用成熟的工作流引擎作为业务流程定义及运行处理工具。
工作流引擎作为底层的流程定义及处理支撑工具,为系统提供了极大的灵活性和可配置性。
通过实现与业务分离的系统基本框架、构件技术、工作流技术的应用,系统实现了软件系统的平台化。
本系统作为一个平台产品,不仅为用户提供了一个具有完善业务功能的第三方物流业务管理系统,系统本身也成为一个面向物流行业的支持二次开发的平台化软件产品。
系统中基本框架和工作流引擎的综合应用,使用户可以在系统提供的业务构件之上根据实际需要再进行二次集成和开发,对平台实现改造或升级,解决物流领域客户业务流程基本相似、但由于基本单据存在差异导致定制开发工作量较大的难题,开发出符合用户自身业务要求的系统。
3.4 系统领域构件开发 订单管理 运输配送管理 结算管理 客户关系管理 功能模 角色 组织机 数据字 结算员 返程支 界面处 数据库 块管理 管理 构管理 典 收款 付 理控件 构件 权限 登录帐 车辆信 客户档 返程收 发货人 运算 工作流 管理 号管理 息管理 案管理 款 支付 算法 引擎 流程 系统 员工信 结算分 日志 管理 公告 息管理 …… 成 …… 处理 ……Web Service HTTPs Web Service HTTPs Web Service HTTPs Web Service HTTPs EAI(企业应用 流程 数据 集成)平台 …… 管理 总线 基于领域构件开发的软件系统部署图 13 领域构件是在通用构件的基础上,设计和开发的实现了某一特定物流业务逻辑、通用性较强的构件,领域构件基本可以独立实现某一方面的物流业务功能,如订单管理、道路运输管理、货款管理,运费管理及结算分成、网上查询、客户关系管理等。
这些领域构件在业务上与其他业务不能重叠,领域构件其内部封装了界面展现逻辑、业务行为、数据管理等功能。
3.5 领域构件设计分解视图 领域构件一般独立实现相应的业务功能。
开发系统时,我们对系统功能根据确定业务相关性,进行分析和分解(参见功能设计)。
然后进行系统架构选型,本系统以 J2EE 体系架构为基础,并将 Struts、Spring、Hibernate 三种架构技术进行整合,分别对应 web 开发中的应用层、业务层、持久层。
然后,分别从数据模型、逻辑模型、流程管理、界面标识等几个方面,对领域构件分别进行。
经过上述分析、设计和开发过程,我们的系统就明确的被分割为领域构件和通用构件两种构件了。
14 领域构件分解视图4 基于构件的软件开发过程管理4.1 传统的软件开发过程 软件开发流程分为:需求确认——概要设计——详细设计——编码——单元测试——集成测试——系统测试——维护。
传统的软件开发模式存在的问题是每个项目总是从头做起,每个应用程序的开发均涉及到大量的重复劳动。
15 传统软件开发流程图4.2 基于构件的软件开发过程 基于构件的软件开发(Component-Based Software DevelopmentCBSD,有时也称为基于构件的软件工程 CBSE)是一种基于分布对象技术、强调通过可复用构件设计与构造软件系统的软件复用途径。
基于构件的软件系统中的构件可以是 COTS Commercial-Off-the-Shelf) ( 构件, 。
也可以是通过其它途径获得的构件(如自行开发) CBSD 整个过程从需求开始,由开发团队使用传统的需求获取技术建立系统的需求规约。
在完成体系结构设计后,并不立即开始详细设计,而是确定哪些部分可由构件组装而成。
此时开发人员面临的设计决策包括“企业构件库中是否存在满足某种需求的内部开发的可复用构件”,“是否存在满足某种需求的 COTS 构件”,“这些可用构件的接口与体系结构的设计是否匹配”等。
对于那些满足需求的可用构件,开发人员通常需要进行如下活动:构件的获取和组装。
构件的获取包括指通过购买或从企业内部构件库获取构件,然后通 16过接口以及其它约束判断 COTS 构件是否可在新系统中复用。
如果被复用的构件不符合目标系统的软件体系结构就可能导致该构件无法正常工作,甚至影响整个系统的运行,这时需要调整构件使之满足体系结构要求的行为,构件调整可通过白盒、灰盒或黑盒的方式对构件进行修改或配置。
白盒方式允许直接修改构件源
代码;灰盒方式不允许直接修改构件源
代码,但提供了可修改构件行为的扩展语言或编程接口;黑盒方式是指调整那些只有可执行
代码且没有任何扩展机制的构件。
构件组装:构件必须通过良好定义的基础架构才能组装成目标系统。
构件之间连接或协调的机制,是构件组装成功与否的关键因素之一。
这样基于构件的系统演化往往表现为构件的替换或增加,其关键在于如何充分测试新构件以保证其正确工作且不对其它构件的运行产生副面影响。
对于那些无法通过已有构件满足的需求,就只能采用传统的或面向对象的软件工程方法开发新构件。
如果目前没有满足需要的构件,项目 .
上一篇:
源码之家: 源代码下载ASP源码PHP源码
下一篇:
软件工程毕业设计论文