Enterprise Architect在实验预约管理系统的建模研究

2011-11-08 11:53戴一平
长春大学学报 2011年6期
关键词:源代码用例数据模型

戴一平

(华南师范大学 教育信息技术学院,广州 510631)

Enterprise Architect在实验预约管理系统的建模研究

戴一平

(华南师范大学 教育信息技术学院,广州 510631)

介绍了应用EA建立实验预约管理系统数据模型的开发过程,侧重于该系统结构的设计与实现,并期望能提炼出一种适合一般管理系统的框架。在整个项目的设计和实施过程中,始终采用UML图等作为描述文档,并将其和统一过程结合,实现项目的迭代和增量式开发。

预约;EA;统一建模语言

0 引言

实验室是实验教学和科学研究的重要基地,也是对学生实施素质教育、能力培养和科技创新的重要媒体。实验室信息化管理是提高实验教学质量和效率及实现教学效果最优化的重要手段。信息化管理系统数据模型的开发需要有相应优秀工具去实现,统一建模语言UML(Unified Modeling Language)是一种构建直观化、明确化和文档化软件系统产物的通用可视化建模语言。它捕捉了被构建系统的有关决策和理解用来理解设计浏览配置维护以及控制系统的信息。UML可以与所有的开发方法、生命阶段、应用领域和媒介一同使用。它意图统一过去建模技术的经验,将当前软件最佳实践合并至标准的方法。UML包括语义概念、标记符号和指南,具有静态、动态环境和组织性的部分,它可被具有代码产生和报表生成的交互式可视建模工具所支持。UML规范没有定义标准过程,但可用于迭代的开发过程,并支持现有的大多数面向对象的开发过程[1,2]。

对UML我们可以这样理解:它不是编程语言,其工具可以提供UML至各种编程语言的代码生成,也可从现有的程序逆向构筑模型。UML不是用于定理证明的高度正式的语言,实际上有很多正式的语言,但它们不易理解或不适用于多种用途。UML是通用性的建模语言,不适用于特定的领域,更特定的语言和工具可能更加合适,如GUI设计、VLSI电路设计或基于规则的人工智能。UML是离散的建模语言,它不打算对如工程和物理的连续系统建模,UML是对诸如软件、硬件或数字逻辑的离散系统建模的通用语言[3]。本文结合实验预约管理系统的开发过程,对应用Enterprise Architect建立数据模型问题作较详细的分析。

1 建模技术及工具选择

1.1 开发过程概述

系统的开发是以软件工程方法学为指导,依照软件工程开发步骤来进行。首先进行需求分析,然后根据需求分析结果进行功能模块设计、数据库设计、单模块开发和系统集成测试等,依照分析-设计-开发-测试-部署的步骤进行。这是软件工程方法学的核心实现路线,但具体的开发过程并不依赖于某一开发方法论,而采用灵活的迭代式开发模型,以需求分析为中心指导各阶段的开发[3-4]。

1.2 使用主要技术

Apache几乎可以运行在所有广泛使用的Unix、Windows、Linux操作系统平台上。目前成为世界上最流行的Web服务器软件之一。其特点是安装简单、速度快、性能稳定、可移植性非常好,并可做代理服务器使用,全球很多著名网站,如 Amazon、Yahoo、W3 Consortium、Financial Times等都是 Apache 的用户[5-6]。

PHP是一种HTML内嵌式的语言,其独特的语法混合了C、Java、Perl以及自创的语法,可以比CGI或者Perl更快速的执行动态网页,而且支持几乎所有流行的数据库以及操作系统[7-8]。

MySQL是小型关系型数据库管理系统,被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库,支持非常广泛的操作系统,提供TCP/IP、ODBC和JDBC等多种数据库连接途径[9-11]。

1.3 采用的工具

Enterprise Architect(以下简称EA)是以目标为导向的软件系统,覆盖了系统开发的整个周期,除开发类模型外,还包括事务进程分析、使用案例需求、动态模型、组件和布局、系统管理、非功能需求、用户界面设计、测试和维护等功能,为整个团队提供高级的UML 2.2建模工具。使用EA设计人员可以充分利用UML 2.2图表的功能,支持全部13种UML 2.2图表和相关的图表元素,包括:

(1)结构图表:类、对象、合成元素、包、组件、布局;

(2)行为图表:使用案例、通信、序列、交互概述、行为、状态、时序;

(3)扩展:分析(简单行为)、定制(需求、变动和UI设计);

(4)使用工具能够跟踪依赖关系、支持大型模型,帮助开发设计人员管理大型复杂的工程;提供CVS或SCC工具,以时间快照为基线,通过比较来跟踪模型变动,从而实现版本控制;含有项目可视化窗口,提供高性能直观的工作界面;

(5)具备源代码的正向和反向工程能力,支持多种通用语言,包括 C++ 、C#、Delphi、Java、PHP、VB.Net、Visual Basic等,可获取免费的CORBA和Python附加组件,并提供语法突显功能的内置源代码编辑器,确保在一致的工作环境中快速导航和查找用户模型的源代码[12-14]。

2 系统需求分析

2.1 需求模型

需求模型(Requirements Model)是一种文档式模型,通过准确恰当地列出解释开发过程中需要实现的功能行为来描述待开发项目,并为开发过程中需要使用到的各种结构化技术文档(功能或技术规格说明书,测试计划)而使用需求模型。EA可在模型中直接建立其它学科的软件开发模式来集成需求管理的UML工具。

需求管理是建立在解决许多问题的可追溯性的、跨学科的团队分工、系统集成的变更和配置管理的核心。具有的特点包括:

(1)在模型中能够直接创建和查看需求;

(2)在模型中直接细化用例;

(3)可加入每一个需求的属性,如难点、状态和类型,也可以自定义属性;

(4)能够跟踪业务规则的需求,测试案例和分析加工;

(5)可跟踪关系矩阵和考虑需求的变化的影响[15];

(6)能够为客户创建优质的MS Word和HTML文件。

2.2 系统功能需求描述

2.2.1 角色定义

用例分析就是捕获系统、子系统、类或组件的行为,并通过用例图向外部用户展示。统一系统开发过程强调用例驱动及迭代增量的开发,用例不但用于捕获需求,而且还是提供从分析到测试的活动基础[16]。

定义参与者(Actors):参与者是与系统、子系统或类发生交互作用的外部用户、进程或其它系统的理想化角色[17]。一个参与者代表了一类外部用户可能与系统发生的交互。通过分析确认本系统的参与者为:教师、学生、管理员。在实际运行过程中,一个实际用户可以既是教师又是管理员,也可是学生又是管理员。

2.2.2 用例模型的建立

用例是一个外部可见的系统内聚功能单元,它由一种被称为主体(Subject)的类元提供,用例表示为主体与系统单元的一个或多个参与者之间所交换的消息序列。[16,18]下面对综合测评子系统进行分析和说明,并给出系统的主体-学生的用例。

(1)学生:学生参与用例图如图1。系统具体包括实验的预约、实验报告的提交、查询等等。其中,网上预约的组织管理形式有助于使学生成为教学过程中的真正主体,学生可以根据自己的学习进度自主选择实验内容、时间并预约实验资源。网上预约的实施还有助于实现开放实验室设备、场地和师资的有机结合,在一定程度上缓解了实验资源的相对不足,做到资源的合理共享和有机整合,以实现开放性实验教学。

(2)教师:除了拥有类似学生的权限外,教师可以进行实验方案的征集、审核,实验报告的审阅、批改和实验成绩的考核。实验预约的审核由主管实验室的实验中心主任或分管教学的副院长进行审批,他们角色也是教师,除了上述拥有的权限外,还比一般教师多了审批一级。

(3)系统管理员:拥有所有的权限。实验室资源管理子系统主要包括实验设备、仪器、场地和资料的管理。通过构建实验室资源管理子系统,师生可以随时了解实验资源的分配和使用情况,实时地为开放实验教学的资源调配提供指导,可最大程度实现实验室资源的合理配置,为学生合理安排自主学习时间提供参考。

2.2.3 使用时序图与活动图细化用例

确定用例化,有必要对用例进行细化,在用例的细化阶段,UML提供了非常好的工具:用简单的时序图来描述参与者和系统的交互,用活动图来描述工作流。

(1)登录认证模块设计

登录控制部分就是要求用户在使用系统前进行登录,然后根据用户所拥有的权限对访问进行控制。系统使用基于安全策略的统一用户管理、认证,把用户的资料存放在统一的中央用户管理认证服务器上。基本思想是拦截用户的请求,检查该用户是否已经登录,如果没有登录则转向到用户认证服务的登录页面。

图1 学生参与用例图

(2)使用时序图确定参与者与系统交互

用例是一种文本的描述,主要用于解释用例的具体内容或者事务流程。时序图可以更精确、更直观地表达用例。它按时间组织描述了参与者和系统的交互情况。如图2所示为本系统的学生预约时序图。

时序图简单地显示了参与者之间的动态交互关系,但没有显示它们之间的结构关系。如果一个用例有多个流程,就需要使用多个时序图才能表示出这些流程。在需求捕获和分析阶段早期,必要的时序图相对简单而且不完整。当进入到用例分析,并用更深入的细节精制时序图时,这种情况就会改变。用时序图捕获每一种用例的主流程是有用的,但是捕获每一个流程乃至每一个交替变换的流程,特别是当它们的数目非常多时,就不必要了,因此,一般用时序图来捕获用例的主流程。为了能够显示多个流程,往往有活动图[19]。

2.2.4 系统其他需求

系统应具备灵活性、实用性、兼容性、高效性、可扩充性和可维护性、安全可靠性和稳定性。实验预约管理系统架构是基于PHP应用程序体系结构的。同时,为了实现系统的可重用性和可扩展性,在架构实验预约管理系统时还遵循以下原则:使用MVC设计模式实现实验预约管理系统的逻辑分层。在系统中,利用一个用户界面控制器控制网页的生成、转发及业务组件调用,实现模型和视图的分离,从而使系统的各个功能模块达到一种层间松散藕合的效果,提高系统灵活性、复用性和可维护性[20]。

图2 学生预约时序图

2.2.5 硬件配置环境

物理/配置模型提供了一种部署在整个系统的基础设施组件的详细模型。它详述网络功能、服务器规格、硬件要求和其他相关资料部署。物理模型显示在何处以及将如何部署系统组件。图3部署图说明实验预约管理系统物理部署环境,它显示组件位于服务器、机器或硬件的位置,可阐明网络连接、局域网带宽等。

一个节点是描述任何服务器、工作站或其它主机硬件用来部署到开发环境的组成部分。也可指定节点之间的联系(如TCP/IP)和要求。节点有性能特点、最低硬件标准、操作系统级别等记录。

3 系统设计

3.1 系统架构设计

基于PHP程序体系结构设计原则,把整个实验预约管理系统设计成为一系列的相互独立功能模块,并且为每个模块定义一个通用接口。每个模块的设计过程是相互独立的,这样有利于团队的并行开发和使用第三方的组件。另外,模块之间相互独立也使系统更容易扩展和维护。如图4学生用户预约模块主要组件及其关系,限于篇幅,其它模型不一一列举。

图3 物理/配置模型

图4 学生用户预约模块主要组件及其关系

3.2 数据库设计

3.2.1 逻辑(类)数据模型建模

逻辑数据模型反映的是系统分析设计人员对数据存储的观点,是对概念数据模型进一步的分解和细化,并根据业务规则确定业务对象、业务对象的数据项及业务对象之间关系的基本蓝图。其内容包括所有的实体和关系,确定每个实体的属性,定义每个实体的主键,指定实体的外键,需要进行范式化处理[21]。如图5。

逻辑数据模型的目标是尽可能详细的描述数据,但并不考虑数据在物理上如何去实现。逻辑数据建模不仅会影响数据库设计的方向,还间接影响最终数据库的性能和管理。如果在实现逻辑数据模型时投入得足够多,那么在物理数据模型设计时就可以有许多可供选择的方法。

3.2.2 物理数据模型建模

物理数据模型是在逻辑数据模型的基础上,考虑各种具体的技术实现因素,进行数据库体系结构设计,以实现数据在数据库中的存放。

图5 用户登录相关类

物理数据模型的内容包括确定所有的表和列,定义外键用于确定表之间的关系,基于用户的需求可能进行范式化等要求[21]。在物理实现上的考虑,可能会导致物理数据模型和逻辑数据模型有较大的不同。如图6。

图6 学生信息管理模块图示

物理数据模型的目标是指如何用数据库模式来实现逻辑数据模型以及保存数据。学生信息管理模块的开发目的是管理全学院学生的各种信息,方便学生信息的查询。学生信息管理的功能概括起来包括信息的录入、维护和查询。

3.3 代码工程

代码工程是一个转化过程,包括自动代码生成、逆向工程、模型代码和源代码之间的同步。可以从UML生成源代码模型元素的类或接口。可生成的语言包括 C、C++ 、C#、Delphi、Java、PHP、Python、Action Script、Visual Basic and VB.NET源代码,源代码包含类的定义、变量和每个UML类的属性及方法,可使用源代码查看器来查看任何要打开的源代码。

3.3.1 正向工程

源代码生成(正向工程)采用UML的类或接口的模型元素创建详细的阐述并编译源代码。正向工程的主要工作包括类、属性和方法,确保模型和代码间的一致。例如将图5用户登录相关类进行正向工程可得到三个 PHP 源文件,分别是 LoginAction.php、UseCode.php、LoginActionForm.php。

代码从类或接口的模型元素中生成,所以必须创建所需的类和接口的元素,添加属性(生成变量)和操作(生成方法)。在生成代码之前,应该确保代码生成的默认设置符合要求。默认设置位于源代码工程选项对话框(选择工具选项源代码工程菜单选项)。设置默认值,以符合需要的语言和首选项。首选项,可以定义默认的构造函数和析构器,包括接口方法和创造语言的Unicode的选项[22]。

3.3.2 逆向工程

逆向工程的功能是将现有的源代码构建为数据模型,即映射为UML表示的源代码结构,并能够检查遗漏的代码和重复的代码,而将UML模型更新。

在EA的逆向工程中,可以导入以上各种语言的代码到UML模型,将现有的源代码结构映射成为UML的表示,例如一个Java类映射到UML类元素的变量作为属性的定义,模式也随着业务和Java类之间的相互作用在UML模型与相应的接口类图中显示,逆向工程可为用户检查遗留代码和审议重用的代码库的功能或使UML模型与最新代码同步进程。研究在一个UML模型的代码使用户能够识别关键模块中的代码,有利于理解原有业务系统的系统要求,使开发获得更好的源代码做更全面的了解[22]。

4 结语

EA是一种出色的、面向对象的可视化系统分析建模工具,依托UML整套成熟的建模技术,广泛地应用于众多领域。其建模过程并不是简单的线性过程,而是一种与UML紧密联系的演化与迭代过程,通过不断地分析、评价和修改、再分析,最终得到高质量的系统分析模型。在建模过程中,须根据具体情况,选择合适的UML图示清晰地描述各种功能。它的各个模型能帮助开发人员更好地理解业务流程,建立更可靠、更完善的系统模型,增加用户和开发人员对问题的描述的共识,减少语义差异,保障分析的正确性。它改变了传统软件的设计思想,降低了系统设计的盲目性与不确定性,也更有利于系统的扩展与测试,加强了用户、开发人员、分析人员、测试人员以及管理人员之间的信息传递与沟通,极大地提高了相互间的协作能力和软件开发的工程化程度。

[1] Object Management Group Inc.OMG Unified Modeling Language(OMG UML2.3),Infrastructure[EB/OL].(2010)[2010 - 12 - 12].http://www.omg.org/technology/documents/modeling_spec_catalog.htm#UML.

[2] Object Management Group Inc.OMG Unified Modeling Language(OMG UML2.3),Superstructure[EB/OL].(2010 -5 -3)[2010 -12 -12].http://www.omg.org/technology/documents/modeling_spec_catalog.htm#UML.

[3] James Rumbaugh,Jacobson Ivar,Booch Grady.The Unified Modeling Language Reference Manual[M].Boston:Addison Wesley Longman,Inc.,1999:3-4.

[4] 刘涛,周晓锋.基于PowerDesigner高校进修人员系统的建模研究[J].计算机技术与发展,2009,19(10):185-188.

[5] 维基百科.Apache[DB/OL].(2010 -10 -18)[2010 -12 -13].http://zh.wikipedia.org/zh-cn/Apache.

[6] Netcraft Ltd.October 2010 Web Server Survey[DB/OL].(2010 - 10 -12).http://news.netcraft.com/archives/2010/10/12/october-2010-webserver-survey.html.

[7] 维基百科.PHP[DB/OL].(2010-12-12)[2010-12-13].http://zh.wikipedia.org/zh-cn/PHP.

[8] PHP Documentation Group.PHP Manual[M/OL].The PHP Group,(2010 -12 -17)[2010 -12 -18].http://www.php.net/manual/en/.

[9] 维基百科.MySQL[DB/OL].(2010-12-10)[2010-12-12].http://zh.wikipedia.org/zh-cn/MySQL.

[10] 百度百科.MySQL[DB/OL].(2010 -11-26)[2010-12-12].http://baike.baidu.com/view/24816.htm.

[11] Stefan Hinz,Lead Team,DuBois Paul,et al.MySQL 5.5 Reference Manual[M/OL].California:Oracle Corporation,(2010 - 12)[2010 - 12 -20].http://dev.mysql.com/doc/refman/5.5/en/index.html.

[12] Sparx Systems Pty Ltd.Enterprise Architect User Guide[M/OL].Australia:Sparx Systems,(2010 - 9)[2010 - 12 - 9].http://www.sparxsystems.com/enterprise_architect_user_guide/8.0/.

[13] Wikipedia.Enterprise architect[DB/OL].(2010 -11 -17)[2010 -12 -19].http://en.wikipedia.org/wiki/Enterprise_architect.

[14] 百度百科.Enterprise Architect[DB/OL].(2007 -9 -27)[2010 -12 -19].http://baike.baidu.com/view/1152740.htm.

[15] Sparx Systems Pty Ltd.Enterprise Architect User Guide[M/OL].Australia:Sparx Systems,(2010 - 9).http://www.sparxsystems.com/enterprise_architect_user_guide/8.0/.

[16] Eric J.Naiburg,Maksimchuk Robert A.UML for Database Design[M].Boston:Addison Wesley,2001:49 -64.

[17] Pascal Roques.UML in Practice[M].West Sussex:John Wiley & Sons Ltd.,2004:6 -14.

[18] Scott W.Ambler.The Elements of UML 2.0 Style[M].New York:Cambridge University Press,2005:33 -46.

[19] Craig Larman.Applying UML and Patterns-An Introduction to Object-Oriented Analysis and Design and the Unified Process[M].Prentice Hall,1997.

[20] Seth Ladd,Darren Davison,Steven Devijver,et al.Expert Spring MVC and Web Flow[M].New York:Apress,2006:21 -40.

[21] Abraham Silberschatz,Henry F.Korth,Sudarshan S.DATABASE SYSTEM CONCEPTS[M].New York:McGraw-Hill,2001:15 -122.

[22] Sparx Systems Pty Ltd.Enterprise Architect User Guide[M].Australia:Sparx Systems,2010:1281 - 1348.

The research on the modeling of Enterprise Architect in the experiment reservation management system

DAI Yi-ping

(School of Educational Information Technology,South China Normal University,Guangzhou 510631,China)

This article describes the development process of establishing data model in experimental reservation management system by applying Enterprise Architect,focusing on the design and implementation of the system architecture and hoping to extract a suitable framework for general management systems.During the whole process of design and implementation,UML diagrams are used as the document and combined with unification process to realize the iteration and incremental development.

reservation;EA;unified modeling language

TP392

A

1009-3907(2011)06-0035-06

2011-05-11

戴一平(1971-),男,广东广州人,实验师,硕士,主要从事数据库、软件工程、计算机应用技术。

责任编辑:吴旭云

猜你喜欢
源代码用例数据模型
UML用例间包含关系与泛化关系的比较与分析
UML用例模型中依赖关系的比较与分析
基于TXL的源代码插桩技术研究
联锁软件详细设计的测试需求分析和用例编写
面板数据模型截面相关检验方法综述
從出土文獻用例看王氏父子校讀古書的得失
软件源代码非公知性司法鉴定方法探析
基于语法和语义结合的源代码精确搜索方法
揭秘龙湖产品“源代码”
财政支出效率与产业结构:要素积累与流动——基于DEA 和省级面板数据模型的实证研究