[毕业论文]软件工程关于代码自动生成技术的分析.doc

上传人:仙人指路1688 文档编号:3932646 上传时间:2023-03-28 格式:DOC 页数:49 大小:606.50KB
返回 下载 相关 举报
[毕业论文]软件工程关于代码自动生成技术的分析.doc_第1页
第1页 / 共49页
[毕业论文]软件工程关于代码自动生成技术的分析.doc_第2页
第2页 / 共49页
[毕业论文]软件工程关于代码自动生成技术的分析.doc_第3页
第3页 / 共49页
[毕业论文]软件工程关于代码自动生成技术的分析.doc_第4页
第4页 / 共49页
[毕业论文]软件工程关于代码自动生成技术的分析.doc_第5页
第5页 / 共49页
点击查看更多>>
资源描述

《[毕业论文]软件工程关于代码自动生成技术的分析.doc》由会员分享,可在线阅读,更多相关《[毕业论文]软件工程关于代码自动生成技术的分析.doc(49页珍藏版)》请在三一办公上搜索。

1、目录前 言1第一章 概述21.1背景21.2研究代码自动生成技术的必要性41.3 本课题的主要研究内容6第二章 代码自动生成技术72.1 代码生成的机理72.2 三层B/S架构82.3 设计模式92.4 反射技术122.5 缓存技术132.6 XML技术152.7 语法高亮显示17第三章 系统分析与设计183.1 系统分析183.1.1 系统开发环境183.1.2 需求分析183.1.3 系统用例图及详细说明213.2 系统设计方案283.2.1 设计原则283.2.2 系统类28第四章 系统实现324.1 系统界面设计324.2系统功能实现344.2.1 数据库新连接(即导入数据库信息)功能

2、的实现344.2.2 代码生成功能的实现344.2.3 代码导出功能的实现364.2.4 数据库查询分析功能的实现36第五章 难点与对策385.1 数据库表信息的读取385.2 将xml数据加载到树形控件上395.3 语法高亮显示的实现41第五章 总结及展望435.1 总结435.2 展望44致谢45参考文献46前 言现在软件工程所涉及到的系统规模越来越大。大型的程序需要多人共同参与和开发,每个人的程序风格不同,再加上时间上的压力,这使得系统完成以后在测试及维护上带来了沉重的负担。计算机科学家一直致力于这方面的研究。在解决代码规范以及工作效率上,代码自动生成技术显现出了其很大的优越性。代码自动

3、生成器一个最关键的功能就是让程序员尽可能减轻负。当然任何东西都不能取代人在当中的作用,代码自动生成器主要来完成一些有规律可寻的代码生成。比如我们平常一般用到的MODEL类就是一个很简单的基类,它的模式基本上是固定的。如果一个系统有上百个MODEL类,那么程序员可能要话很长的时间来编写。而用了相应的自动生成器只需简单几步就很全部生成。我想这样的工作是非常有意义的。TianHao正是在这样的环境下计划开发的。TianHao生成的代码基于面向对象的思想和三层架构设计。现在的系统常用到的是三层架构。一个典型的例子就是微软的示例代码Petshop。Petshop包含了很多经典的思想和设计模式。TianH

4、ao结合了Petshop的开发模式,寻求编码规律,并融入了工厂模式,反射机制等一些思想。TianHao 同时提供支持多类型数据库,并且能够方便的对数据库查询分析,存储过程生成,代码批量自动输出等多项开发工作中常用到的功能。第一章 概述1.1背景在软件工程发展过程中,计算机科学家为了降低软件开发得强度,缩短开发周期,减少代码的重复书写,从而减轻程序员的编程负担,一直以来都致力于代码自动生成方面的研究。Lex/Yacc是最早用于自动化编写编译程序的工具。 我们可以将代码生成技术分为两大类:被动模式和主动模式。在被动模式下,代码生成器产生一系列的代码,然后软件开发者可以自由的修改、编辑这些代码,但代

5、码生成器不再承担对代码的维护工作。大多数软件集成开发环境(IDE)中的应用“向导”就是这种类型的代码生成器。被动模式的代码生成技术有其应用的范围,但是被动模式的生成系统有天生的局限性。生成器只运行一次,然后就不再承担对代码的维护工作。 与此相反,主动模式下的代码生成器则对生成的代码“长期”负责,可以通过改变生成器的输入参数并重新运行生成器来改变输出的代码。如编译器生成器就是一种主动模式 的代码生成器。 下面我们介绍几种常见的代码生成技术,这些技术对开发一个实用的代码生成器非常重要。可以依据代码生成技术的使用场合、复杂度等对这些生成技术进行分类,这里我们采用依据生成技术的输入、输出对它们进行分类

6、。 (1) 代码挑拣器,代码挑拣器的输入是源代码,通过拣取需要的信息可以生成各种文件,代码挑拣器的使用相当广泛,可以使用它来生成代码API文档、获取常量和函数原型等。 (2) 内联代码扩展器,内联代码扩展器的输入是带有特殊标记的源代码,这些特殊标记经过扩展器的处理后将被替换为相关的代码从而产生最终的生产源代码,内联代码扩展器的典型应用是将SQL语句嵌入到源代码中,其主要特点是使得底层结构和复杂的查询分开。(3) 混合代码生成器 混合代码生成器与内联代码扩展器很像,它也是处理源代码中的特殊注释但是与内联代码扩展器不同,它的结果将直接输出到输入的源代码中。这种方式的一个典型应用就是在对话框控件和它

7、们代表的变量之间建立映射关系。(4) 部分类生成器 部分类生成器的输入是模板文件和包含特定类所需信息的定义文件,这些信息经过生成器将产生应用的基类。通过继承该基类可以完成剩余的工作。Velocity是一个源代码开放的Java模版引擎。(5) 层第生成器 层第生成器将生成一个多层应用的所有代码。模型驱动的开发是这种生成器的一个很好例子。通过UML模型输入和其余XML文件,生成器能够生成一个包含多个系统的完整应用,并且模型和代码之间可以单项乃至双项同步。(6) 完全领域语言 完全领域语言是一个图灵完全的语言,可以直接使用来进行领域相关的操作。 目前常见的代码生成器有:DbToCode 是一款为 C

8、# 数据库程序员设计的自动代码生器,DbToCode 生成的代码基于面向对象的思想和三层架构设计,结合了Petshop中经典的思想和设计模式,融入了工厂模式,反射机制等等一些思想。采用 Model + DAL + BLL + Web 的设计,主要实现在 C# 中对应数据库中表的基类代码的自动生成,包括生成属性、添加、修改、删除、查询、存在性、 Model 类构造等基础代码片断,使程序员可以节省大量机械录入的时间和重复劳动,而将精力集中于核心业务逻辑的开发。Codematic 生成的代码基于面向对象的思想和三层架构设计,结合了Petshop中经典的思想和设计模式,融入了工厂模式,反射机制等等一些

9、思想。Codematic 同时提供方便的多类型数据库管理,查询分析器,SQL脚本生成,存储过程生成,数据库文档生成,Web项目发布,代码批量自动输出等多项开发工作中常用到的功能,您可以很方便轻松地进行项目开发。AutoJava 是一款免费的,针对于Oracle和SQLserver数据库的、以面向对象模式的Java代码生成工具。AutoJava根据O/R Mapping规则生成表对应的Java对象,并且生成了所有的添加、删除、修改、查询等底层数据库操作代码。 1.2研究代码自动生成技术的必要性随着现代化信息环境日趋复杂,各种应用软件的开发难度随之加大,这需要更有技巧,更有方法地从事软件开发,开发

10、团队之间也必须更无障碍地沟通,否则极可能无法在有限的开发时间中完成任务。由于时间上的压力,一般人只注重程序的编写速度,却忽略其完成后的实用性与维护性,加上大型程序多人共同参与开发,每个人都有各自的程序风格,容易造成严重的差异性,随着系统规模越来越大,这将造成系统完成后在测试及维护上沉重的负担,代码自动生成技术更显出了其显著的优越性。尽管这些应用没有代码生成工具也能开发完成,但利用代码生成技术可以大大加速软件的开发进度,提高软件的质量。代码生成技术是关于自动生成程序的程序的技术。与手工书写代码相比,代码生成器提供了下面的一些好处: (1)所有软件实体的一致的代码质量,代码的质量依赖且只依赖于代码

11、生成的模板、文件和模型。与此相比,手工经常采用的拷贝粘贴的方法为前后代码质量的一致性带来了隐患。 (2)提高了代码变更的能力,特别在需要大量更改代码的情况下,只需要更改模板并重新运行代码生成器即可。 (3)提高了修复软件Bug的能力,只需要修复模板的Bug然后重新运行生成器就可以修复所有的生成文件的Bug。 (4)提高了在不同框架之间的迁移能力,一个典型的情形是我们需要生成不同框架(如J2EE/.Net)的应用代码,代码生成技术将业务逻辑以语言无关的形式单独存放,通过为不同的框架提供代码模板可以基于同一逻辑生成不同框架的应用代码。 (5)灵活的同步机制,代码生成技术自动维护代码和数据模型的一致

12、性,通过重新运行生成器,对模型的修改可以自动反映到代码中,这种同步机制对维护数据的一致性是非常必要的。 (6)大幅度提高了工作效率,运用代码生成技术可以将更多的时间花费在业务相关的设计和实现上,从而可以大大提高软件的开发效率和软件质量。 (7)是代码学习的导师,由于生成的代码具有良好的风格和100%的健壮性,程序开发者很容易模仿代码风格,从中学习。 1.3 本课题的主要研究内容本课题的主要目标是在Windows XP 平台下,利用.NET C#实现.NET(C#)代码自动生成软件(如上1.1背景说述,该软件属于代码自动生成的部分类生成器)。本软件主要包含功能如下:(1)实现在对应数据库中表的基

13、类代码的自动生成,包括生成属性、添加、修改、删除、查询、存在性、Model 类构造等基础代码片断。(2)自动生成数据库的存储过程。(3) 支持不同架构代码生成,用户可以定义命名。(4)自动生成实体Model,DAL(数据访问层),IDAL(接口层),DALFactory(类工厂),BLL(业务逻辑层) 等多层的代码。(5)代码批量生成自动导出功能。第二章 代码自动生成技术2.1 代码生成的机理代码生成器的作用是读取工程的元数据,按照指定的设计模式,混合产生出规范的源代码。典型的代码生成器模型如图2-1所示。在图中,为自动生成程序代码,必需的三个关键要素是设计模式(所产生代码的模板文件)、领域元

14、数据(在代码中需建模的拓扑结构,即定义文件,通常随开发折提供的特定数据增长)。 图2-1 典型代码生成器的模型图 构建自己的代码生成器有2种方法,一是综合利用流行的代码生成器。构建出适合自己的代码生成器;另一种方法是构造出一个全新的代码生成器。无论哪种方法,在构建代码生成器都应该注意下面几个方面: (1)使用纯文字样版,使用纯文字样版的好处除了编辑方便外,也能将程序代码定义逻辑和格式化逻辑分隔开来,使实作上更有弹性。 (2)编写正规表达式(Regular Expression),正规表达式是一种字符串的表示方式,使用它不仅扩大了字符串的表达能力,让使用者很容易进行字符串判断,也可避免撰写程序进

15、行复杂字符串解析的麻烦,也自然使得数据处理的过程变得更为迅速便利。 (3)编译器原理,在对于文本文件的处理上,先利用扫描器(Scanner)扫描出其中的字符,再实作解析器(Parser)解析出所对应的语法,然后转换成所要产生的程序语言。 (4)文档输出入的处理, 由于程序产生牵涉到大量的文档读写动作,需要定义合适的数据结构及缓冲区机制来提升文档存取的效率,另一方面来说,在编写样版文档时也需考量到对于存取效率上的负担。2.2 三层B/S架构架构设计是非常高级的设计,也是系统设计的关键,主要是定义和说明包(子系统),以及包与包之间的相互依赖与通信机制。系统构架模型的合理与否将决定系统的可维护性、扩

16、展性和开发效率包通常所需要处理的是要么是一个具体的功能区域(业务逻辑),要么是一个具体的技术区域(技术逻辑)。业务逻辑主要考虑的是对系统业务功能的实现,而技术 逻辑则是进一步考虑用户界面、数据库或通信机制等形成的技术方案。把技术逻辑和业务逻辑区分开来是极其重要的,这是为了当修改程序的某一部分时不会对另一 部分产生影响,更加便于进行“复用”,同时易于应对来自业务逻辑的变更需求。三层结构是一种成熟、简单并得到普遍应用的应用程序架构, 它将应用程序结构划分三层独立的包,包括用户表示层、业务逻辑层、数据访问层。其中将实现人机界面的所有表单和组件放在表示层,将所有业务规则和逻辑的实 现封装在负责业务逻辑

17、组件中,将所有和数据库的交互封装在数据访问组件中。其结构如下图2-2所示:图2-2 三层结构2.3 设计模式设计模式使人们可以更加简单方便地复用成功的设计和体系结构。将已证实的技术表述成设计模式也会使新系统开发者更加容易理解其设计思路。一般而言,一个模式有四个基本要素:1. 模式名称(pattern name) 一个助记名2. 问题(problem) 描述了应该在何时使用模式。它解释了设计问题和问题存在的前因后果,它可能描述了特定的设计问题,如怎样用对象表示算法等。也可能描述了导致不灵活设计的类或对象结构。有时候,问题部分会包括使用模式必须满足的一系列先决条件。3. 解决方案(solution

18、) 描述了设计的组成成分,它们之间的相互关系及各自的职责和协作方式。因为模式就像一个模板,可应用于多种不同场合,所以解决方案并不描述一个特定而具体的设计或实现,而是提供设计问题的抽象描述和怎样用一个具有一般意义的元素组合(类或对象组合)来解决这个问题。4. 效果(consequences) 描述了模式应用的效果及使用模式应权衡的问题。尽管我们描述设计决策时,并不总提到模式效果,但它们对于评价设计选择和理解使用模式的代价及好处具有重要意义。软件效果大多关注对时间和空间的衡量,它们也表述了语言和实现问题。因为复用是面向对象设计的要素之一,所以模式效果包括它对系统的灵活性、扩充性或可移植性的影响,显

19、式地列出这些效果对理解和评价这些模式很有帮助。设计模式常常划分成不同的种类,常见的种类有: 创建型设计模式,如工厂方法(Factory Method)模式、抽象工厂(Abstract Factory)模式、原型(Prototype)模式、单例(Singleton)模式,建造(Builder)模式等 。结构型设计模式,如合成(Composite)模式、装饰(Decorator)模式、代理(Proxy)模式、享元(Flyweight)模式、门面(Facade)模式、桥梁(Bridge)模式等 。行为型模式,如模版方法(Template Method)模式、观察者(Observer)模式、迭代子(I

20、terator)模式、责任链(Chain of Responsibility)模式、备忘录(Memento)模式、命令(Command)模式、状态(State)模式、访问者(Visitor)模式等等。 以上是三种经典类型,实际上还有很多其他的类型,比如Fundamental型、Partition型,Relation型等等。设计模式在特定的编程语言中实现的时候,常常会用到代码模式。比如单例(Singleton)模式的实现常常涉及到双检锁(Double-Check Locking)模式等。下面介绍重点介绍抽象工厂模式:在软件系统中,经常面临着“一系列相互依赖的对象”的创建工作;同时由于需求的变化,

21、往往存在着更多系列对象的创建工作。如何应对这种变化?如何绕过常规的对象的创建方法(new),提供一种“封装机制”来避免客户程序和这种“多系列具体对象创建工作”的紧耦合?这就是我们要说的抽象工厂模式。它的意图是提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。模型如下图所示:逻辑模型(图2-3):图2-3 逻辑模型物理模型(图2-4):图2-4 物理模型2.4 反射技术反射的定义:审查元数据并收集关于它的类型信息的能力。元数据(编译以后的最基本数据单元)就是一大堆的表,当编译程序集或者模块时,编译器会创建一个类 定义表,一个字段定义表,和一个方法定义表等,。System.ref

22、lection命名空间包含的几个类,允许你反射(解析)这些元数据表的代码。例如: Assembly类可以获得正在运行的装配件信息,也可以动态的加载装配件,以及在装配件中查找类型信息,并创建该类型的实例。 Type类可以获得对象的类型信息,此信息包含对象的所有要素:方法、构造器、属性等等,通过Type类可以得到这些要素的信息,并且调用之。 MethodInfo包含方法的信息,通过这个类可以得到方法的名称、参数、返回值等,并且可以调用之。 反射的作用: 1 可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现 有对象中获取类型。2 应用程序需要在运行时从某个特定的程序集中载入一个特定的类

23、型,以便实现某个任务时可以用到反射。3 反射主要应用与类库,这些类库需要知道一个类型的定义,以便提供更多的功能。 2.5 缓存技术由数据库驱动的Web应用程序,如果需要改善其性能,最好的方法是使用缓存功能。用户从数据库中检索数据,可能是Web应用程序中执行最慢的操作之一。因为其中涉及多个环节,例如,Web服务器、数据库服务器等。尤其是在用户比较多,检索的数据量比较大的情况下,会给包括用户在内的各个方面造成不小的困难。如果能够将数据库中的数据缓存到内存(也可以存储在其他场所),则无需在请求每个页面时都访问数据库。由于从内存中返回数据的速度始终比新提供的数据速度快,因而可以大大提供应用程序的性能。

24、ASP.NET 2.0支持以下几种缓存:页面输出缓存页面输出缓存是最为简单的缓存机制,该机制将整个ASP.NET页面内容保存在服务器内存中。当用户请求该页面时,系统从内存中输出相关数据,直到缓存数据过期。在这个过程中,缓存内容直接发送给用户,而不必再次经过页面处理生命周期。通常情况下,页面输出缓存对于那些包含不需要经常修改内容的,但需要大量处理才能编译完成的页面特别有用。需要读者注意的是,页面输出缓存是将页面全部内容都保存在内存中,并用于完成客户端请求。页面部分缓存顾名思义,页面部分缓存是将页面部分内容保存在内存中以便响应用户请求,而页面其他部分内容则为动态内容。页面部分缓存的实现包括两种方式

25、:控件缓存和替换后缓存。前者也可称为片段缓存,这种方式允许将需要缓存的信息包含在一个用户控件内,然后,将该用户控件标记为可缓存的,以此来缓存页面输出的部分内容。这一方式缓存了页面中的特定内容,而没有缓存整个页面,因此,每次都需重新创建整个页。例如,如果要创建一个显示大量动态内容(如股票信息)的页,其中有些部分为静态内容(如每周总结),这时可以将静态部分放在用户控件中,并允许缓存这些内容。缓存后替换与控件缓存正好相反。这种方式缓存整个页,但页中的各段都是动态的。例如,如果要创建一个在规定时间段内为静态的页,则可以将整个页设置为进行缓存。如果向页添加一个显示用户名的Label控件,则对于每次页刷新

26、和每个用户而言,Label的内容都将保持不变,始终显示缓存该页之前请求该页的用户的姓名。使用缓存后替换机制,可以将页配置为进行缓存,将页的个别部分标记为不可缓存。在此情况下,可以向不可缓存部分添加Label控件,这样将为每个用户和每次页请求动态创建这些控件。应用程序数据缓存应用程序数据缓存提供了一种编程方式,可通过键/值对将任意数据存储在内存中。使用应用程序缓存与使用应用程序状态类似。但是,与应用程序状态不同的是,应用程序数据缓存中的数据是易失的,即数据并不是在整个应用程序生命周期中都存储在内存中。应用程序数据缓存的优点是由ASP.NET管理缓存,它会在项过期、无效,或内存不足时移除缓存中的项

27、,还可以配置应用程序缓存,以便在移除项时通知应用程序。缓存依赖ASP.NET 2.0新增了SQL数据缓存依赖功能。该功能的核心是SqlCacheDependency类。不同版本的SQL Server,其对于SQL数据缓存依赖具有不同程度的支持,因此,使用方法差异较大。另外,ASP.NET 2.0还支持以CacheDependency类为核心的自定义缓存依赖,以及以AggregateCacheDependency类为核心的聚合缓存依赖等。ASP.NET 2.0包括了一些有助于进行缓存配置的新功能。例如,允许使用Web.config文件来创建缓存设置。在Web.config文件中进行适当设置,并在

28、单个页中引用这些设置后,就能够将缓存设置同时应用于多个页面。同时,缓存设置还添加了更多用于自定义缓存性能的选项。2.6 XML技术XML是Extensible Markup Language的缩写,是一种类似于HTML的标记语言。XML是用来描述数据的,它的标记不是在XML中预定义的,你必须定义自己的标记 。XML使用文档类型定义(DTD)或者模式(Schema)来描述数据。XML和HTML的主要区别是:XML是用来存放数据的。XML是被设计用来描述数据的,重点是:什么是数据,如何存放数据。HTML是被设计用来显示数据的,重点是:显示数据以及如何显示数据更好上面。HTML是与显示信息相关的,

29、XML则是与描述信息相关的。.Net框架为我们提供了以下一些命名空间:System.Xml、System.Xml.Schema、 System.Xml.Serialization、System.Xml.Xpath以及 System.Xml.Xsl来包容和XML操作相关的类。XmlReader类是一个虚基类,它包含了读XML文档的方法和属性。该类中的Read方法是一个基本的读XML文档的方法,它以流形式读取XML文档中的节点(Node)。另外,该类还提供了ReadString、ReadInnerXml、 ReadOuterXml和ReadStartElement等更高级的读方法。除了提供读XML

30、文档的方法外,XmlReader类还为程序员提供了 MoveToAttribute、MoveToFirstAttribute、MoveToContent、MoveToFirstContent、 MoveToElement以及 MoveToNextAttribute等具有导航功能的方法。XmlWriter类为程序员提供了许多写XML文档的方法。XmlNode类是一个非常重要的类,它代表了XML文档中的某个节点。该节点可以是XML文档的根节点,这样它就代表整个XML文档了。它是许多很有用的类的基类,这些类包括插入节点的类、删除节点的类、替换节点的类以及在XML文档中完成导航功能的类。同时,XmlN

31、ode类还为程序员提供了获取双亲节点、子节点、最后一个子节点、节点名称以及节点类型等的属性。XmlDocument类代表了一个XML文档,它提供了载入和保存XML文档的方法和属性。这些方法包括了Load、LoadXml和Save等。同时,它还提供了添加特性(Attributes)、说明(Comments)、空间(Spaces)、元素(Elements)和新节点(New Nodes)等XML项的功能。2.7 语法高亮显示语法高亮控件ICSharpCode.TextEdition来自开源项目SharpDevelop。所谓的语法加亮编辑器就是能根据不同的文件类型,来显示文本内容。比如利用语法加亮编辑

32、器可以显示C#代码的效果,类型、变量等分别用不同的颜色以示区分。具体用法可以参见:第三章 系统分析与设计3.1 系统分析3.1.1 系统开发环境A 硬件环境普通PC ( 1.8GHZ, 内存512M)一台。B 开发工具系统开发平台:Microsoft Windows XP professional 开发工具与环境:Microsoft Visual Studio 2005 C#本系统在Microsoft Windows XP professional下开发,程序测试环境为Microsoft Windows XP professional,用户在windows 2000和 windows XP下都

33、可以使用。 本系统应用的软件开发工具与环境:.Microsoft Visual Studio 2005 C#,配合数据库:Microsoft SQL Server 2000或者Microsoft SQL Server 2005。3.1.2 需求分析该系统主要需求分为数据库连接模块、代码生成模块和数据库查询分析模块(图3-1)。图3-1 总的功能模块数据库连接模块(图3-2)的业务流程:数据库连接模块支持不同版本的数据库服务器(至少支持sqlserver2000、sqlserver2005)。当用户需要连接一个新的数据库时,调用此模块。用户提供数据库的连接信息,系统将连接数据库,并做出相应的操作

34、提取该数据库的有用信息。图3-2 数据库连接模块功能模块图数据库查询分析模块(图3-3)的业务流程:用户可以选择表来查看相应表中的数据。系统为用户提供关于单表的sql语句(包括增、删、查、改)的模板。用户方便的进行查询分析,这样省去了该系统与数据库之间来回切换的不便。图3-3 数据库查询分析模块功能模块图代码生成模块(图3-4)的业务流程:根据用户选择的数据库表,系统生成相应的代码。(1)包括生成属性、添加、修改、删除、查询、存在性、Model 类构造等基础代码片断。(2)自动生成数据库的存储过程。(3) 支持不同架构代码生成,用户可以定义命名。(4)自动生成实体Model,DAL(数据访问层

35、),IDAL(接口层),DALFactory(类工厂),BLL(业务逻辑层) 等多层的代码。(5)代码批量生成自动导出功能。图3-4 代码生成模块的功能模块图3.1.3 系统用例图及详细说明本系统用例图(图3-5):图-5系统用例图每个用例的详细说明:用例1:新建连接1、 用户选择数据库类型,并且输入相应的服务器名、用户名和密码。2、 系统连接数据库,并获得该数据库的数据信息。错误情况1:数据库连接失败如果用户输入的数据库信息有误,弹出消息框提示操作失败。用例2:注销连接1、系统删除本次连接的数据库数据的信息。用例3:刷新连接1、 系统根据本次数据库连接信息重新连接数据库并且重新得到数据库信息

36、。用例4:浏览表数据1、 用户选择数据库的表,选择浏览表数据的选项。2、 系统从数据库中读取改表中的信息并予以显示。错误情况1:得到数据失败如果系统获取数据失败,系统抛出异常。用例5:生成sql语句1、 用户选择表,并选择生成sql语句的选项。2、 系统根据表信息生成相应的sql语句,并显示。用例6:执行sql语句1、 用户输入执行的sql语句,点击执行按钮。2、 系统执行sql语句,得到结果并显示。错误情况:执行sql语句出错如果系统执行sql语句出错,系统抛出异常。用例7:工厂模式MODEL代码1、 用户设选择生成工厂模式MODEL代码的表。2、 用户设置代码生成需要的参数(顶级命名空间、

37、项目名、主键、MODEL类名、代码类型(选择工厂模式下的MODEL代码)、方法选择、数据层类型)。3、 用户点击生成按钮。4、 系统生成工厂模式MODEL代码。错误情况1:代码生成失败如果用户用户没有选择指定的表,系统将不能正常生成代码,并弹出消息框予以提示。用例8:工厂模式IDAL代码1、用户设选择生成工厂模式IDAL代码的表。2、用户设置代码生成需要的参数(顶级命名空间、项目名、主键、MODEL类名、代码类型(选择工厂模式下的IDAL代码)、方法选择、数据层类型)。5、 用户点击生成按钮。6、 系统生成工厂模式IDAL代码。错误情况1:代码生成失败如果用户用户没有选择指定的表,系统将不能正

38、常生成代码,并弹出消息框予以提示。用例9:工厂模式DAL代码1、用户设选择生成工厂模式DAL代码的表。2、用户设置代码生成需要的参数(顶级命名空间、项目名、主键、MODEL类名、代码类型(选择工厂模式下的DAL代码)、方法选择、数据层类型)。3、用户点击生成按钮。4、系统生成工厂模式DAL代码。错误情况1:代码生成失败如果用户用户没有选择指定的表,系统将不能正常生成代码,并弹出消息框予以提示。用例10:工厂模式IDALFactroy代码1、用户设选择生成工厂模式IDALFactroy代码的表。2、用户设置代码生成需要的参数(顶级命名空间、项目名、主键、MODEL类名、代码类型(选择工厂模式下的

39、IDALFactroy代码)、方法选择、数据层类型)。3、用户点击生成按钮。4、系统生成工厂模式IDALFactroy代码。错误情况1:代码生成失败如果用户用户没有选择指定的表,系统将不能正常生成代码,并弹出消息框予以提示。用例11:工厂模式BLL代码1、用户设选择生成工厂模式BLL代码的表。2、用户设置代码生成需要的参数(顶级命名空间、项目名、主键、MODEL类名、代码类型(选择工厂模式下的BLL代码)、方法选择、数据层类型)。3、用户点击生成按钮。4、系统生成工厂模式BLL代码。错误情况1:代码生成失败如果用户用户没有选择指定的表,系统将不能正常生成代码,并弹出消息框予以提示。用例12:简

40、单三层MODEL代码1、用户设选择生成简单三层MODEL代码的表。2、用户设置代码生成需要的参数(顶级命名空间、项目名、主键、MODEL类名、代码类型(选择简单模式下的MODEL代码)、方法选择、数据层类型)。3、用户点击生成按钮。4、系统生成简单模式MODEL代码。错误情况1:代码生成失败如果用户用户没有选择指定的表,系统将不能正常生成代码,并弹出消息框予以提示。用例13:简单三层DAL代码1、用户设选择生成简单三层DAL代码的表。2、用户设置代码生成需要的参数(顶级命名空间、项目名、主键、MODEL类名、代码类型(选择简单模式下的DAL代码)、方法选择、数据层类型)。3、用户点击生成按钮。

41、4、系统生成简单模式DAL代码。错误情况1:代码生成失败如果用户用户没有选择指定的表,系统将不能正常生成代码,并弹出消息框予以提示。用例14:简单三层BLL代码1、用户设选择生成简单三层BLL代码的表。2、用户设置代码生成需要的参数(顶级命名空间、项目名、主键、MODEL类名、代码类型(选择简单模式下的BLL代码)、方法选择、数据层类型)。3、用户点击生成按钮。4、系统生成简单模式BLL代码。错误情况1:代码生成失败如果用户用户没有选择指定的表,系统将不能正常生成代码,并弹出消息框予以提示。用例15:单层代码1、用户设选择生成单层代码的表。2、用户设置代码生成需要的参数(顶级命名空间、项目名、

42、主键、代码类型(选择单层代码)、方法选择、数据层类型)。3、用户点击生成按钮。4、系统生成单层代码。错误情况1:代码生成失败如果用户用户没有选择指定的表,系统将不能正常生成代码,并弹出消息框予以提示。用例16:Aspx代码1、用户设选择生成Web页面代码的表。2、用户设置代码生成需要的参数(代码类型(选择Aspx代码)、方法选择)。3、用户点击生成按钮。4、系统生成Aspx代码。错误情况1:代码生成失败如果用户用户没有选择指定的表,系统将不能正常生成代码,并弹出消息框予以提示。用例17:Aspx.CS代码1、用户设选择生成Web页面代码的表。2、用户设置代码生成需要的参数(代码类型(选择Asp

43、x.CS)、方法选择)。3、用户点击生成按钮。4、系统生成Aspx.CS代码。错误情况1:代码生成失败如果用户用户没有选择指定的表,系统将不能正常生成代码,并弹出消息框予以提示。用例18:存储过程1、 用户选择生成存储过程的表和所要生成的存储过程方法,并点击生成按钮。2、 系统生成该表的存储过程。错误情况1:代码生成失败如果用户用户没有选择指定的表,系统将不能正常生成代码,并弹出消息框予以提示。用例19:代码导出1、 用户选择代码导出按钮。2、 系统显示代码输出窗口。3、 用户选择要输出代码的数据库名和表名。4、 用户选择架构、方法、保存路径,输入命名空间、子文件夹,点击导出。5、 系统根据用

44、户输入生成相应的代码并保存到相应的位置,并弹出消息框提示。错误情况1:代码导出失败如果用户选择的数据库与表不一致,系统无法成功生成代码,系统将弹出消息框提示。3.2 系统设计方案3.2.1 设计原则本系统采用面向对象方法并根据分层设计原则设计。系统分为表示层、逻辑层和数据访问层(如图3-6所示)三层。图3.-6 典型代码生成器的模型数据访问层实现系统与数据库之间的通信。它使的表示层、逻辑层不再关心数据库的具体问题。业务逻辑层实现该系统的业务逻辑的细节。表示层实现用户接口。3.2.2 系统类 系统类包含在数据访问包 、业务逻辑包 和用户界面包这三个包中。数据访问包设计(图3-7):图3-7 数据

45、访问包每个类说明:AntoSqlHelper类是进行数据库通信的基类,通过此类访问数据库并得到数据集。DBConfig类用于设置和读取数据库连接配置的信息。Sqlk2kDBInfo类用于获得SQLSERVER2005数据库的信息。Sqlk2kDBInfo2类用户获得SQLSERVER2000数据库的信息.DBToDBXml类将SQLSERVER2005数据库的信息转化成表的形式以便对其数据库信息的操作。DBToDBXml2将SQLSERVER2000数据库的信息转化成表的形式以便对其数据库信息的操作。DBToDBXml将不同版本的数据信息以统一的形式写入xml中,它作为本系统的操作基础。业务逻

46、辑包设计(图3-8):图3-8 业务逻辑包每个类的说明:EntityCode类将数据库指定表的信息以及用户要求生成工厂模式的MODEL层代码。IDALCode类将数据库指定表的信息以及用户要求生成工厂模式的IDAL层代码。DALCode类将数据库指定表的信息以及用户要求生成工厂模式的DAL层代码。DALFactoryCode类将数据库指定表的信息以及用户要求生成工厂模式的DALFactoryCode层代码。BLLCode类将数据库指定表的信息以及用户要求生成工厂模式的BLL层代码。AspxCode类将数据库指定表的信息以及用户要求生成增加窗体和显示窗体的代码。AspxCsCode类将数据库指定表的信息以及用户要求生成Aspx.CS代码。SimpleCode类将数据库指定表的信息以及用户要求生成单层结构的代码。THBLLCode类将数据库指定表的信息以及用户要求生成简单三层的BLL代码。THDALCode类将数据库指定表的信息以及用户要求生成简单三层的DAL代码。THEnt

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号