《通用的Web信息管理系统框架毕业设计.doc》由会员分享,可在线阅读,更多相关《通用的Web信息管理系统框架毕业设计.doc(41页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 河北经贸大学毕业论文通用的Web信息管理系统框架专业名称: 计算机科学与技术 班 级: 200904 学生姓名: 指导老师: 完成时间: 2013年4月 摘要在Web数据库应用系统(如MIS、ERP、CRM等)的开发中,软件开发人员往往要面临重复编写一些简单的、令人乏味的代码的问题,而且每当新需求来临的时候, 又不得不一再重复以前的工作。但是在面向对象的编程中,实际情况是,一旦项目开发的整体框架和需求或是数据模型确定时,很多与项目相关的工作都可以自动生成。为了使编程人员从繁复的代码开发中解放出来,基于MDA 的代码生成技术很好的解决了这些问题。基于MDA 的代码生成技术就是一个专注于解放编码
2、生产力,用程序来编程的研究方向。系统使用Microsoft Visual Studio 2008为主要开发工具。毕业设计为一个三层架构的Web应用开发了一个基于Xml技术软件项目生成系统,生成的产品包括了项目源代码、数据库、项目文档。在软件开发人员平时的开发中,当系统的需求分析和开发使用的软件框架确定后,采用此软件项目生成系统,就可以快速生成基于Web系统框架的软件(包括了对数据实体的添加、修改、删除、下载等通用操作)。软件项目生成系统,是在微软的WPF框架而开发,使用了Ribbon界面,迎合了当代软件界面的趋势。WPF框架做到了分离界面设计人员与开发人员的工作,提供了全新的多媒体交互用户图形
3、界面,可以迅速开发出绚丽的界面。在基于MDA技术的软件生成的研究的理论基础上,本文结合一个稳定的 Web三层框架,最终设计出基于Xml软件项目生成系统。论文分五个部分详细阐述了软件项目生成系统从设计到实现的全过程。第一部分简要叙述了软件项目生成系统的背景、现状以及用到的核心技术;第二部分详细描述了系统的功能需求以及可行性;第三部分阐述了系统模块设计以及数据设计;第四部分详细讨论了系统核心功能的实现;第五部分简述了系统测试,包括黑盒测试和白盒测试。关键词:MDA;WPF;代码生成器;AABSTRACTIn a Web database application system (such as MI
4、S, ERP, CRM, etc.) development, the software developers are often repeat to write some simple, boring code problem, and when new requirements come, and have to repeat previous work. But in object-oriented programming, the reality is, once the project development or data model to determine the overal
5、l framework and demand a lot of project related work can be generated automatically. A programmer from heavy and complicated to make code development, code generation based on MDA technology is good enough to solve these problems. MDA based code generation technology is a focus on coding productivit
6、y liberation, with application to programming research direction. System uses Microsoft Visual Studio 2008 as main development tools. Graduation design is an three layer architecture of Web applications which has developed a software program generating system based on Xml technology, the generated p
7、roducts including the project source code, database, project documentation. During the development of software developers at ordinary times, when the development of the use of system requirement analysis and software framework is determined, using the software program generating system, can quickly
8、generate system framework based on Web software for data entities (including add, modify, delete, download and other common operations). Software projects generating system, it is in Microsofts WPF development framework, use the Ribbon interface, cater to the contemporary at the trend. WPF framework
9、 to do the separation of interface design and development personnel work, provides a new multimedia interactive user graphical interface, can be quickly developed a beautiful interface. Based on MDA technology research based on the theory of generated by the software, this paper combined with a stab
10、le Web three layers framework, final design based on Xml software projects generating system. Paper is divided into five parts in detail elaborated the software project during the process of production system from design to implementation. The first part briefly describes the background of a softwar
11、e project, the present situation as well as the use of core technology; The second part in detail describes the systems functional requirements, and feasibility; The third part expounds the system module design and data design; The fourth part system are discussed in detail the realization of the co
12、re functions; The fifth part describes the system test, including black box testing and white box testing. Key words: the MDA; WPF; The code generator; ASP.NET 目 录1绪论11.1背景21.2意义21.3系统开发工具及相关核心技术31.3.1 开发工具31.3.2 核心技术42用户需求分析52.1需求描述52.2需求分析52.2.1 可行性分析52.2.2 WEB架构分析62.2.3 数据库及项目文档分析72.3需求设计73系统总体设计
13、113.1体系结构设计113.2 数据设计133.2.1 数据模型实体133.2.2设计模式154系统详细设计与实现174.1 Web三层架构模板的抽象174.2 Ribbon界面的实现194.3系统流程分析204.3.1 内存共享204.3.2数据库生成流程224.3.3文档生成流程244.3.4代码生成流程265系统测试305.1测试基础305.2黑盒测试305.2.1 输出源代码及数据库测试305.2.1 输出文档测试32结束语33致 谢34参考文献3535通用的Web信息管理系统框架1绪论软件开发的高效性、简便性一直受到学术界和软件业界的高度重视,软件的自动生成更是业界努力发展的目标。
14、1968 年Mcllroy 在的NATO 软件工程会议论文大量生产的软件构件中,第一次提出了“软件组装生产线”的思想。从那年开始,采用构件技术实现软件复用,并以“搭积木” 的方式来生产软件,成为软件开发人员长期的梦想。软件复用与软件构件技术的研究,最大程度地利用了已有设计成果。在软件工程的发展过程中,许许多多的计算机科学家为了降低软件开发强度,缩短软件开发周期,减少软件代码的重复书写,从而减轻程序员的编码负担, 一直以来都致力于代码自动生成方面的研究。代码生成可以归为下列形式:代码重塑,内联代码展开,混合代码生成,局部类生成,层次化生成,全领域语言描述等。现存的代码生成工具为自动生成代码提供了
15、大量的解决方案。但是,如果把这些方案和已有的系统进行集成会遇到很多困难。另外,虽然各种技术层出不穷,但都是基于传统的代码生成方法,即代码生成和模型设计脱离;对模型驱动架构(Model-Driven Architecture, MDA)的研究多半基于模型转换,很少有模型到代码转换的研究与实现。本文的重点在于后者的研究也实现,最终的目标是生成项目源代码以及相关的文档和数据库。MDA 的主要思想是分离业务功能分析设计和实现技术平台之间紧耦合的关系,从而将技术与平台变化对系统的影响降到最低。一个MDA 的应用是从建立平台无关模型(Platform Independent Model, PIM)开始,然
16、后使用相应的转换工具,结合具体技术,将PIM 映射为特定平台上的平台相关模型(Platform Specific Model, PSM),最后通过这个特定平台上的PSM,使用代码生成器自动生成全部或部分特定平台上的程序代码。在实际应用中,代码生成器也可以直接根据PIM 生成程序代码。PIM 的核心是企业的业务模型。在ERP 中,业务模型的核心是过程视图,而每一个业务过程可看作是一系列业务活动的组合。业务活动包括所处理的业务对象的属性、作用于业务对象内部的操作及处理业务对象间关系的操作3个部分。如果能够建立灵活的业务对象及其操作模型,就可以实现ERP 系统的敏捷性。从业务对象模型的结构考虑,模型
17、包含稳定部分和频繁变化部分。稳定部分包括业务对象(包含属性、内部状态等要素)及处理业务对象内部逻辑的操作(称为简单操作,如采购需求单的新增、审核等操作),稳定部分在系统建模时很容易得到且很少变化。频繁变化部分是实现业务对象之间关联的业务操作(称为复合操作,如由采购需求单生成采购订单)。本文基于稳定部分和频繁变化部分分离的思想,把复合操作与业务对象本身分离,分别建立PIM,再由代码生成器生成各自的代码,最后加以组装形成完整的业务对象处理程序。1.1背景随着互联网技术的飞速发展,越来越多的企业利用互联网技术来实现自己的业务系统,许多企业都要求建立基于Web业务系统或将现有的业务系统改造成基于Web
18、形式。客户端操作界面的一致性以及服务器端系统维护的简便性和基于标准的连接方案,大大加强了企业与外部的联系。同时,动态的、交互式的信息发布改进了企业的服务质量,增加企业的商业机会。虽然这些Web业务系统因具体业务不同,在业务逻辑上会有所不同,但从软件开发的角度看,这些软件应用系统的开发过程是相似的。当前,在开发这些基于Web业务系统时,软件开发人员不断重复着一些不必要而且浪费很多时间的技术性劳动。如果能够按照一定的方法和流程,自动的生成全部或者大部分的业务系统代码,一方面能够缩短软件项目开发周期,降低成本,另一方面,能够解放开发人员的生产力,提高软件产品的设计质量。因此,基于Web业务系统代码自
19、动生成技术越来越引起业界的重视。为了简化基于Web业务系统的开发,一些公司先后提出了一些开发框架,如Struts、Hibernate、Ruby on Rails等,这些开发框架可以有效提高系统的开发效率,但是由于其未充分考虑实际系统的业务逻辑,因此要求开发人员至少进行基于某种脚本语言的开发,当系统的业务功能庞杂且用户需求变化很快时,系统的开发周期与所开发代码的质量仍很难满足实际需要。1.2意义在以数据库为核心的业务系统中,相当一部分业务属于录入、编辑、删除、查询或基于上述基本功能的组合业务模式。因此,基本业务系统是业务系统的基础,基本业务系统的质量直接决定了最终的业务系统的质量。基本业务系统都
20、是以对数据库信息的操作为核心,在基本业务系统的开发过程中,每种基本业务的业务逻辑存在着很多相似的地方。目前,在开发基本业务系统时,软件开发人员不断重复着一些不必要且耗时的技术性劳动;另一方面,这类系统用户需求变化很快,如何缩开发周期并应对用户对系统需求的快速变和后期维护中最大难题。在这些业务系统的开发过程中,特别是对基本业务的开发存在很多重复的劳动。本文决定在为企业开发基于Web业务系统时,以突出代码重用性为重点,并且为达到这个目标设计和开发一套基本业务代码生成平台,用于业务系统中基本业务系统的设计和开发。本次研究定位为基于.NET平台的基本业务的自动生成。实际客户需求千变万化,但仍然具有一定
21、规则和相同之处。开发人员在开发不同系统时,有大量重复工作,浪费大量人力。因为机械的重复编码工作对人力资源的大量消耗,设计和开发人员没有足够时间和精力研究客户需求。.NET的技术已日趋成熟,其优异的性能帮助软件工作者解决了很多棘手的问题。1.3系统开发工具及相关核心技术1.3.1 开发工具系统开发环境的选择对于系统的建立来说至关重要,它将决定着系统开发工作量的大小,系统的性能特点以及系统今后的维护工作难易等。因此在开发系统之前,应该对系统所采用的技术、实现功能进行评估,在选择开发环境时,主要考虑因素有扩展性,总成本,是否容易开发与管理,另外开放性和互操作性也是需要考虑的一个重要方面。因为该系统是
22、运行WindowsNT系统上的,用户平台的差异决定了与其它系统的互操作性是不可避免的。系统基于.NET平台开发,其主要开发工具为Microsoft Visual Studio2008。.NET为全球著名软件公司Microsoft公司为新一代软件开发商提供的全新的开发平台,具有安全、高效、便捷的特点。Microsoft.NET技术框架是一个新的开发平台,它为局域网(LAN)和Internet上的分布式企业应用提供了一致和有效的支持。该平台的关键特性包括:统一的、语言无关的、面向对象开发环境。它充分利用开发者已有的编程知识无冲突软件部署,避免组件的版本冲突丰富的可执行模式,与存储位置无关,组件可以
23、在本地存储执行,或者远程存储本地执行,或者在Internet上远程存储执行安全代码执行,具有高级安全设置以满足现代组织的安全需求,Windows和Web应用程序具有统一的编程环境,通过在各自环境中高效的代码编译提升Windows和Web应用程序的执行性能兼容的通信标准,确保.NET应用程序可以与其它应用程序和其它平台的应用程序共存和集成。1.3.2 核心技术可扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 XML是标准通用标记语言(SG
24、ML) 的子集,非常适合 Web 传输。XML 提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。XML与HTML的设计区别是:XML的核心是数据,其重点是数据的内容。而HTML 被设计用来显示数据,其重点是数据的显示。微软的.NET框架可以用来快速构建企业解决方案。在.NET类库中提供了对XML操作的多种方法,包括文档对象模型(DOM)、XML框架、流式读写XML,可扩展的样式转化(XSLT)、XML序列化与反序列化等较为完善的XML支持。.NET 2.0框架提供了内存中处理XML的两种方式,分别为XmlDocument类和XPathNavigator类。前者基于W3C DOM第
25、1级核心和第2级核心的建议。后者使用XPath数据模型,在内存中提供XML文档的快速只读形式,在一定场合下还可以用于选择计算、浏览、编辑XML数据。.NET中提供了一些类可以从XML文档实例推断出相应的XML架构结构,以便于自动生成效验XML数据的架构。XML序列化和反序列化是沟通面向对象编程领域的利器。.NET中的XML序列化与Java等语言的序列化概念不同。Java中的XML序列化是将内存中的XML模型输出到磁盘、网络输出流或其他对象中。而.NET中的XML序列化是将.NET对象的公共字段、属行或方法的参数和返回值转换为XML形式数据,而反序列化即将XML形式数据构造类或结构的实例对象。.
26、NET提供的XML技术并不局限于XML,而是与.NET平台技术(面向对象编程和反射技术、ADO.NET数据处理技术、IO流处理技术、应用程序配置技术)紧密联系,使XML技术在.NET中充分凸显其数据交互及开放性的优良特点,成为应用开发的优秀平台。本毕业设计中主要使用了XML的序列化以及反序列化以及可扩展的样式转化(XSLT)相关的技术。对这些技术的应用贯穿设计的始终。相关的其他XML技术都有或多或少的涉及。2用户需求分析软件需求是数据库信息管理开发的第一步,对于用户需求的准确分析和定位能为以后的开发打下一个坚实的基础。需求分析就是描述系统的需求,通过定义系统中的关键域进一步建立模型。分析的根本
27、目的是在开发者和提出需求的人之间建立一座理解和沟通的桥梁,通过了解用户的实际业务流程和数据流程来达到与客户需求的契合。本系统面向的用户主要是有一定开发经验的软件开发者,包括软件设计人员、软件架构人员、软件工程管理人员、程序员。本系统的实现将有助于更高效的管理软件开发过程,以解决软件开发中很多繁复琐碎环节中常遇到的问题。系统的输出产品包括源代码、项目文档、数据库。2.1需求描述通用的Web信息管理系统框架,主要解决的问题包括:1 开发过程中部分代码需要重复使用,分散了软件开发人员尤其是程序员的大部分精力;2 由于项目开发时间紧张或其他问题,很多开发中需要的文档没有时间书写,同时加上公司人事的频繁
28、调动,导致后期无法有效维护软件项目。3 在.net方面还比较完善、开源的框架,数据库的设计与代码的设计分离,降低软件开发的效率。本毕业设计需要解决以上提到软件开发中亟待解决的问题。本毕业设计需要做到,把软件设计人员做的需求分析,包括软件实体的ER图所表达的信息转化为数据模型,输入本系统,然后经过本系统的加工处理,输出软件项目中的产品包括程序源代码、项目文档以及数据库。同时输出的源代码基于特定的Web框架,生成的源代码主要实现了对数据库中表中数据的添加、修改、删除、浏览、下载等操作以及在Web页面展示时分页显示等功能。通过本系统,可以将开发人员从繁复的工作中解脱出来,将精力用在关键技术的开发中,
29、提高软件开发的工作效率。2.2需求分析2.2.1 可行性分析系统的实现需要用到代码生成技术,查询相关资料收集到如下代码生成技术实现的方法。第一种方法是在Windows Form 的代码中包含全部的模型逻辑、控制器逻辑、视图逻辑;第二种方法是表示层采用服务器视图模板引擎的MVC 结构,如JSP 视图引擎、ASP、ASPX、PHP 等服务器视图引擎;第三种方法是与Code Smith 类似,自行开发一个视图模板引擎,然后基于该模板引擎实现一个MVC 的代码生成器;第四种方法是基于开源模板引擎Velocity,String Template 建造一个MVC 的代码生成器;第五种方法是基于流行的动态语
30、言开发一个代码生成器,这些语言可以是ruby、python 等;第六种方法是视图引擎采用Velocity、String Template 等开源引擎,控制器引擎采用JAVA、NET 接口采用动态语言,利用动态语言把模板引擎和控制器引擎有机地结合起来。第七种方法是在特定项目的数据库中建几个存储过程来实现代码的自动生成。以上提到的代码生成技术部分已有相关的产品,而且代码生成技术已经发展了很多年,应经相当成熟。因此,灵活、合理地应用上边提到的方法,就可以实现软件项目生成系统中代码生成的功能,从而开发出通用的Web信息管理系统框架。2.2.2 WEB架构分析软件项目生成系统输出产品中包括项目源代码。但
31、是对于不同的Web框架,架构设计人员对源代码的组织形式会有或多或少的差别,因此需要选取特定的WEB框架。此次毕业设计中选取了一个 Web三层框架作为实例,专门为其定做了一份代码生成系统,并考虑到软件生成系统将来的扩展,所以为于其他的Web框架留下了相应的扩展接口。通常意义上A Web三层架构就是将整个业务应用划分为:表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)。区分层次的目的即为了“高内聚,低耦合”的思想。表现层(UI),通俗讲就是展现给用户的界面,即用户在使用一个系统的时候他的所见所得。业务逻辑层(BLL),针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理。数据
32、访问层(DAL),所做事务直接操作数据库,针对数据的增、删、改、查。在A Web三层架构中,数据的访问层是对数据库的操作,所以对于不同的实体可以实现共用。而对于业务逻辑层和表示层,不同的实体代码不同,而这些代码的差异又与实体以及实体的属性具有密切的关系,所以有效地抽象逻辑层和表示层的代码文件,采用模板的形式可以统一的管理软件项目中的源代码。但同时应该注意,自动生成的代码仅包括通用操作,例如添加、修改、删除、浏览、下载等操作,这些操作属于程序中的原子操作。而对于更复杂的操作需要软件开发者合理的组合这些原子操作,以实现比较复杂的业务逻辑。2.2.3 数据库及项目文档分析在我们日常软件开发中,最常用
33、的是关系数据库库。关系数据库是建立在关系数据库模型基础上的数据库,借助于集合代数等概念和方法来处理数据库中的数据。目前主流的关系数据库有Oracle、SQL Server、Access、db2、sybase等。在软件开发中,程序员根据从软件设计人员得到的ER模型,在数据库服务器上生成我们需要的数据库。虽然每种的数据库的Sql语句有些差别,但是它们同为关系数据库,而且都是对基本的Sql语句的扩展,所以对于我们要实现有程序来生成数据库提供了共同的理论基础。但是系统只负责生成数据库的最基本组成元素,包含了基本的表与视图,若开发者需要使用触发器、存储过程等高级操作,需要开发者手工设置。项目文档是软件项
34、目中重要的组成成分。文档是与程序开发,维护和使用有关的图文材料。开发过程中的典型文档包括软件需求规格说明书,它描述将要开发的软件做什么;项目计划,它描述将要完成的任务及其顺序,并估计所需要的时间及工作量;软件测试计划,它描述如何测试软件,使之确保软件应实现规定的功能,并达到预期的性能。软件设计说明书,它描述软件的结构,包括概要设计及详细设计。用户手册,它描述如何使用软件。 这些文档包含的内容描述了软件生命周期中的各个阶段的内容,可谓相当复杂,应用本系统不可能要生成所有的这些文档。系统秉承减少软件开发人员繁复工作的宗旨,生成的项目文档只包含了简单的信息(这些信息都由软件设计人员输入系统),而且只
35、要输出的模板确定,最终的文档的格式不在需要开发者设置,而将精力放在核心的内容的编辑中。2.3需求设计通过对需求的分析,本毕业设计的的流程图如下。软件设计人员将需求分析的成果输入软件项目生成系统,软件架构人员将对Web框架抽象得到的XSLT模板文件输入系统,然后通过本系统分析、处理,最终输出软件开发中需要的项目文档、数据库、源代码等产品。顶层数据流图如图2-1,一级数据流图如图2-2。图2-1 软件项目生成系统顶层数据流图图2-2 软件项目生成系统一级数据流图系统的需要开发者做的工作是向本系统输入数据模型。在实际情况中,由于各种原因,一次设计后可能需要更改,所以需要对已设计内容保存,以便今后打开
36、后继续设计。而且还可以设计软件的肤色,给软件开发者更好的用户体验。如图2-3,图2-4。图2-3 S1 acproject文件、肤色的数据流图图2-4 S2项目数据模型设置的数据流图最后处理分析用户输入的数据模型,通过映射的方式输出产品,包括数据库、源代码、项目文档,如图2-5。图2-5 S3系统生成引擎数据流图3系统总体设计软件的系统设计是一个将需求转变为软件陈述(表达)的过程。这种陈述给一个对软件的全局观点。系统通过逐步求精使得设计陈述逐渐接近源代码。这里有两个基本步骤;第一步是初步设计 Preliminary design,关注于如何将需求转换成数据和软件框架。第二步是 详细设计Deta
37、il design,关注于将框架逐步求精细化为具体的数据结构和软件的算法表达。发生中的设计行为、数据、算法和程序设计都需要由现代程序所需的界面设计这一清晰的行为结合起来。界面设计Interface design建立程序布局和人机交互机制。贯穿设计过程的质量由一系列的正式技术评定formal technical reviews或设计排演design walkthroughs来评价。3.1体系结构设计系统的主要完成的功能是软件设计人员根据需求分析得到的数据模型,在本系统中进行设置要实现的项目的基本信息,将数据模型转化为本系统能够识别的模型,然后输出产品(代码、项目文档、数据库)。在Xml技术的基础
38、之上,可以临时保存已经设计的数据模型,便于用户下次继续设计,以及增加了软件的皮肤功能。系统结构如图3-1。图3-1 系统结构项目文件管理模块分为新建项目,打开项目,保存项目三个子模块。新建项目主要在指定文件夹形成一个系统定义的、扩展名是acproject文件,此文件主要存储软件开发者已经输入软件生成系统的信息,以便于今后打开后继续修改完善。打开项目就是前边提到新建的项目文件,继续修改设计信息。保存项目是保存现在的修改到项目文件中。acproject文件是自定义的XML文件。皮肤管理模块主要设置软件的背景颜色,给软件开发者更好的工作环境。项目设计模块分为项目基本信息、实体基本信息、实体属性信息、
39、实体分组模等模块。项目设计模块主要描述数据模型的信息,以便项目生成模块提取分析得到需要的信息。项目基本信息主要包括了项目的名称设置、英文名称设置、项目组人员信息设置、项目开发时间设置、项目使用数据库的类型设置、数据库连接字符串的设置、生成的项目源代码使用模板的设置、生成的程序类型的设置(包括Winform和WebForm以及WPF)、以及使用的模板各层命名空间的设置、项目子模块分组的设置等信息。这里主要是对项目基本信息的设置,对于这些信息的使用在后续模块。项目生成模块包括数据库生成、项目文档生成、项目源代码生成等子模块。数据库生成模块主要生成项目所需要的数据库,包括表、视图等基本信息,开发者若
40、要使用存储过程等其他高级功能,需要开发者手动在数据库操作。项目文件生成模块主要生成软件开发中所需要的文档,这些文档和软件设计人员手里的文档或许会有冲突,但是这里生成的文档是按标准格式设计好的文档,虽然生成的信息不够完善,需要软件工程管理人员将这些信息补充完整,然后存档以便将来需要时查阅。源代码生成模块主要生成程序员需要的源代码,这些源代码已完成了最基本的添加、修改、删除等操作,更复杂的业务逻辑才是程序员需要维护的核心,也是软件开发的核心。3.2 数据设计3.2.1 数据模型实体为了管理软件设计人员在使用软件生成系统中对数据模型所做的设计信息。定义如图3-2所示的数据结构。图3-2 数据模型设计
41、DaXiaoSet实体记录了设计时对属性和方法大小写的设置。O_Control实体该类记录了设计中所使用控件的缩写的设置。O_Pack实体记录了设计时要生成的项目分包的情况。Attribute实体为核心实体,包括了开发中属性的大部分信息,有属性的名称(英文),属性的友好名称,属性的类型,精度,是否为空,在页面显示时的索引、所使用的空间、所属于的组等信息。P_Template实体记录了代码生成时所使用的模板(本毕业设计由于时间有限目前只写了一套A Web三层架构的模板)。P_NameSpaces实体记录了设计中命名空间情况。P_DataBase实体记录了生成代码时所使用的数据库类型及连接字符串(
42、本毕业设计由于时间有限目前只能访问Sql server数据库)。P_BaseInfo实体记录了项目的基本信息,如开发者姓名,项目名称等。为了满足代码生成时有效的管理各个实体信息,定义如下数据结构。图3-3主要用来描述以实体为单位存储实体的基本信息,而上面提到放入数据结构也含有此信息,但是数据的层次有差别。图3-3 实体信息Entity实体是对软件开发中实体的抽象。包括了实体在软件生成系统中的名称,实体的表名称,实体的命名空间等信息。Property实体是对属性的抽象。包括了属性的名称、属性的类型以及属性在数据库中的名称类型等信息。3.2.2设计模式此系统面向不同的数据库类型。对于不同的数据库像
43、SqlServer、Oracle、Access,虽然都同为关系数据库,但是各个数据库复杂程度差别很大。比如要获取数据库的基本信息如表、字段、索引、键等,这些都可以通过数据库中的系统表获得,但是对于每种数据库获取的方法略有不同。对于SQLServer,数据库中有SysObjects 和SysColumns这两个系统表,可以查询系统表来获得所有的表名称和字段名称以及格式,还有一个sp_helpindex的系统预定义存储过程来获得指定表的字段索引信息。对于Oracle 数据库,有一个名为Col的系统预定义视图,可以查询这个视图获得所有的表名和字段定义信息。还有一个user_ind_columns的系
44、统预定义视图, 可以获得关键字段信息。对于Access 2000 数据库, 没有这些系统表, 因此使用.NET 框架中的OleDB 数据连接对象的GetOleDbSchemaTable 函数来获得数据库表和字段定义信息。所以虽然同为获得数据库的基本信息,但是对不同数据库操作时需要不同的方法。解决此问题是通过设计模式中的工程模式。工厂模式是对象创建模式之一,它通常在类或类的静态方法中去实现。构造对象的一种方式是使用new操作符,但使用new时正是针对实现编程,会造成“耦合”问题,与具体的类关系紧密,导致代码更脆弱,缺乏弹性,在复杂逻辑的项目中建议是面向接口编程。图3-4是实现工厂模式的类图。图3
45、-4 工厂模式4系统详细设计与实现4.1 Web三层架构模板的抽象可扩展样式表语言转化(Extensible Stylesheet Language Transformations,XSLT)是XML最重要的应用技术之一。虽然使用DOM、SAX、XMLPULL等编程模型也可以处理XML文件,将其中的信息抽取出来,转化成其他格式的数据,但如对每个任务都编制专门程序,这无疑是低效而枯燥的。引入XSL转换的目的,是为了提供将XML文档方便地转化为素需要数据形式的途径。XSLT的元素既有标记性元素,又有像高级语言那样的程序控制元素,如下面包含的 和。以下是一个数据访问层的代码模板。模板文件部分代码如下。 dt.Columns.Add(,typeof(); dt.Columns.Add(tableID); return dt; 通过.NET中的XslCompiledTransform类加载Xml文件和Xslt文件既可以生成所需要的类文件。本文用到的模板文件见表4-1。表4-1编号文件名称是否系统文件说明1AppSett