1.2 本系统使用的方法和语言 1.2.1 统一建模语言UML 统一建模语言(Unified Modeling Language ,UML)是一种可视化的建模语言,它能让系统构造者用标准的、易于理解的方式建立起能够表达出他们想象力的系统蓝图,并且提供了便于不同人之间有效的共享和交流涉及结果的机制。 UML包括了一些可以相互组合图表的图形元素。由于UML是一种语言,所以UML具有组合这些元素的法规。UML提供了系统设计所需要的多种图,这些图是在用多个视图来展示一个系统,这组视图被称为一个模型(Model)。一个UML模型描述了一个系统需要做什么。同时,UML提供了组织和扩展这些图的方法。 关于标准建模语言UML的内容,首先,UML融合了Booch、OMT和OOSE方法中的基本概念,而且这些基本概念与其他面向对象技术中的基本概念大多相同,因而,UML必然成为这些方法以及其他方法的使用者乐于采用的一种简单一致的建模语言;其次,UML不仅仅是上述方法的简单汇合,而是在这些方法的基础上广泛征求意见,集众家之长,几经修改而完成的,UML扩展了现有方法的应用范围;第三,UML是标准的建模语言,而不是标准的开发过程。尽管UML的应用必然以系统的开发过程为背景,但由于不同的组织和不同的应用领域,需要采取不同的开发过程。 作为一种建模语言,UML的定义包括UML语义和UML表示法两个部分。 (1) UML语义 描述基于UML的精确元模型定义。 (2) UML表示法 定义UML符号的表示法,为开发者或开发工具使用这些图形符号和文本语法为系统建模提供了标准。这些图形符号和文字所表达的是应用级的模型,在语义上它是UML元模型的实例。 标准建模语言UML的重要内容可以由下列五类图(共9种图形)来定义: 第一类是用例图,第二类是静态图(Static diagram),包括类图、对象图和包图。第三类是行为图(Behavior diagram),描述系统的动态模型和组成对象间的交互关系。其中状态图描述类的对象所有可能的状态以及事件发生时状态的转移条件。通常, 状态图是对类图的补充。在实用上并不需要为所有的类画状态图,仅为那些有多个状态其行为受外界环境的影响并且发生改变的类画状态图。而活动图描述满足用例要求所要进行的活动以及活动间的约束关系,有利于识别并行活动。第四类是交互图(Interactive diagram),描述对象间的交互关系。其中顺序图显示对象之间的动态合作关系,它强调对象之间消息发送的顺序,同时显示对象之间的交互;协作图描述对象间的协作关系, 协作图跟顺序图相似,显示对象间的动态合作关系。除显示信息交换外,协作图还显示对象以及它们之间的关系。如果强调时间和顺序,则使用顺序图;如果强调上下级关系,则选择协作图。这两种图合称为交互图。第五类是实现图( Implementation diagram ),包括构件图和配置图。 1.2.2 .NET和C# 微软的.NET是为了解决因特网应用中存在的普遍问题而预先建立的基础设施。.NET的服务器版可运行在Windows NT.Windows 2000以及Windows XP Professional操作系统下.其客户版可运行在Windows 98、Windows Me、Windows XP Home下。目前它只是一个附加的服务补丁,以后的.NET版本极有可能成为操作系统的一部分,今后的版本也有可能会允许.NET的—部分运行在其他版本的Windows操作系统下,微软的.NET提供了下述服务,具体如下 .NET提供了一种新的运行环境.即.NET框架,它使得程序员能够更容易、迅速地写出优良、健壮的程序代码,并且能够方便地管理、部署和修改代码,所编写的程序和组件都在该环境中执行。它为程序员提供了一些新功能,例如自动内存管理(垃圾收集).以及更方便地访问所有系统服务。它添加了许多实用功能、例如易于访问因特网和数据库。它还为代码复用提供了一种新的机制一一更易于使用.并且比COM更加有效和灵活。.NET框架更易于部署.因为它不需要进行注册设置。它还为版本的制定提供了标准化、系统级别的支持。程序员可以在任一种与.NET兼容的编程语言中使用上述全部功能 .NET为创建HTML页面提供了一种新的编程模型,称为ASP.NET.尽管智能的单机程序仍在不断涌现,但是在不久的将来,大多数因特网通信都会以通用浏览器作为前端,这就要求服务器能够使用HTML语言来构造页面,以便浏览器识别并显示给用户。ASP.NET是一种运行在因特网信息服务(IIS)下的新环境,它使得程序员能够更容易地编写代码来构造基于HTML语言的web页面,供浏览器查看。 ASP.NET提供了一种新的与语言无关的代码编写方式,并将其与web页面请求相关联。它提供了.NET的Web窗体,它是一种与控件交互的事件驱动编程模型、这使得编写web页面变得就像编写普通的VB窗体一样。ASP.NET包含了良好的会话状态管理和安全功能,它比原来的ASP更加健壮,性能也得以提高。 .NET提供了windows窗体,它是一种使用.NET框架编写各种客户程序的新方法。 一个使用XML Web服务的专用客户端应用程序必须提供良好的用户界面。高质量的界面能够提供更佳的用户感受,.NET提供了一种新的软件包,它被称为.NET windows窗体.这使得程序员能够使用.NET框架轻易地编写出专用的windows客户应用程序。 C#是可用于创建要运行在.NET上的应用程序的语言之一,它从C和C++语言演化而来,是Microsoft专门为使用.NET平台而创建的。因为C#是近期发展起来的,所以吸取了以前的教训,考虑了其他语言的许多优点,并解决了它们的问题。 使用C#开发应用程序比使用C++简单,因为其语法比较简单。但是,C#是一种强大的语言,在C++中能完成的任务在C#中也能完成,C#中与C++比较高级的功能等价的功能(例如直接访问和处理系统内存),只能在标记为“不安全”的代码中使用。这个高级编程技术是非常危险的(正如它的名称),因为它可能覆盖系统中重要的内存块,导致严重的后果。 C#代码常常比C++略长一些。这是因为C#是一种类型安全的语言(与C++不同),一旦为某些数据指定了类型,就不能转换为另一个不相关的类型。所以,在类型之间转换时,必须遵守严格的规则。执行相向的任务时,用C#编写的代码通常比C++长。但C#代码更健壮,调试也比较简单,.NET总是可以随时跟踪数据的类型。在C#中,不能完成如“把4字节的内存放在数据中,并把它解释为x”等的任务。 C#只是.NET开发的一种语言,是目前最好的一种语言。C#的优点是,它是唯一为.NET Framework而设计的语言,是移植到其他操作系统上的.NET版本中使用的主要语言。C#能使用.NET Framework代码库提供的每种功能 1.3系统描述 本系统运用面向对象的思想,基于UML进行药品管理系统的分析与设计。本文运用UML来分析和描述医院药品管理所涉及的药品基本信息管理、药品入库、出库、调价、查询、统计、盘点等一系列功能。 系统维护包括:用户注册、用户密码修改、用户权限设定等。 入库管理包括:入库基本信息输入、入库单生成、入库审核、入库确认等。 出库管理包括:出库基本信息输入、出库单生成、出库审核、出库确认等。 调价管理包括:调整药品价格、调价记录生成等。 盘点管理包括:盘点库存药品、生成入库出库清单等。 财务信息管理包括:查询入库出库财务信息、生成报表等。 药品信息管理包括:药品基本信息维护、生产厂家信息维护、供应商信息维护、药品低储设置等等。
1.4 分析方法 为了适应开发过程多方面的挑战,不同的组织和不同的应用领域需要采取不同的开发过程才能提高开发效率。我在系统的设计开发中,使用了“快速应用工程指导原则”(Guidelines for Rapid APPLication Engineering),简称GRAPPLE。GRAPPLE的思想并没有脱离以往的UML分析方法——RUP(Rational Unified Process, 统一开发过程)。它是一组可以自适应的,灵活的开发思想,可以适应与许多不同组织的软件开发过程,让开发者发挥自己的创造力和好的思想来构建自己的组织。 GRAPPLE由5个段组成,即需求收集,分析,设计,开发,部署。本次的论文,便是以GRAPPLE方法的基本结构、步骤来构架的,由于在软件的构建阶段,设计和分析都可以往返进行直到设计完成,所以在论文中,我将分析与设计合并为一个章节来叙述。之后在设计的基础上使用微软的Visual C#完成系统的实现。 2 需求收集 2.1 业务过程分析 开发一个系统的起点就是获得对客户业务过程的理解,特别是获得使用目标系统的客户的理解。这就需要系统分析员与客户进行充分的交流。首先要在调研的过程中了解到一套业务领域的词汇。 “医药进销存管理系统”需要实现的功能有主要有:“系统维护” ,“入库管理 ”,“调价管理”,“出库管理”, “财务信息管理”,“药品信息管理”等,可以用下面的业务流程图来表示它们之间的关系:
图2-1 系统业务流程 此次设计的“医药进销存药品管理系统”需要完成的主要功能有:“系统维护”,“入库管理”,“调价管理”,“出库管理”,“财务信息管理”,“药品信息管理”等一系列与业务流程相配套的完整功能。 在系统中,主要的业务流通领域词汇有以下几大类:采购计划,入库,财务验收,付款处理,出库,调价处理,库存盘点,查询。药品信息管理的总体活动可以由以下的图来描述:
图2-2 药品信息管理的活动图 用户登录和调价和入库、出库的活动图:
图2-3 功能对应活动图 2.2 研究领域分析 现在仍然处在需求收集阶段的概念性分析。这个阶段需要开发出初步的类图、建立和标记类之间的关联,同时填充类的信息。 2.2.1 初步用例模型开发 用例是由参与者发起的,参与者能够从用例的执行中获得有价值的事物。用例模型的图形表示法很直观。用例用一个椭圆形表示,直立人形图表表示参与者。用例的发起参与者在用例图的左侧,接受参与者在用例图的右侧。参与者的名字放在参与者图表的下方,用例的名字可以放在椭圆形里面也可以放在椭圆形下方。关联线连接参与者和用例,并且表示参与者与用例之间有通信关系。关联线是实现,和类之间的关联线类似。 用例分析的一个好处是它能展现出系统和外部世界之间的边界。参与者是典型的系统外部实体,而用例属于系统内部。系统的边界用一个矩形(里面写着系统的名字)来代表。系统的用例装入矩形之内。 参与者、用例和互连线共同组成了用例模型(use case model). 下图说明了这些符号:
图2-4 用例模型示例 2.2.1.1 开发系统业务角色 首先,需要确定整个系统的业务角色。业务角色,顾名思义,就是与业务交流的人或物,都可以被称为业务角色。在本管理系统中,大体上可以分为生产厂家、供应商、采购员、销售员、基本操作员、系统管理员这六类业务角色。 由此可以开发出药品管理系统的初始用例角色图,如图2-5所示。
图2-5 系统业务角色 2.2.1.2 开发初步用例图 接下来,需要对每个业务角色标识业务用例,这些业务用例包括:生产药品、购入药品、批发销售药品、输入药品相关信息、售出药品、管理整个系统流程等等。 这个阶段的任务,就是描述系统用例与系统业务角色之间的关系,如图2-6中所示。
图2-6 业务角色与系统用例
2.2.2 开发初步类图 2.2.2.1 系统中的类 类图(Class Diagram)描述类和类之间的静态关系。与数据模型不同,它不仅显示了信息的结构,同时还描述了系统的行为。类图是定义其它图的基础。在类图的基础上,状态图、合作图等进一步描述了系统其他方面的特性。 对象(Object)与对客观世界的理解相关。通常用对象描述客观世界中某个具体的实体。所谓类(Class)是对一类具有相同特征的对象的描述。而对象是类的实例(Instance)。建立类模型时,应尽量与应用领域的概念保持一致,以使模型更符合客观事实,易修改,易理解和易交流。 类描述一类对象的属性(Attribute)和行为(Behavior)。在UML中,类的可视化表示为一个划分成三个格子的长方形(下面两个格子可省略)。图1中,"客户"就是一个典型的类。 类的获取和命名:最顶部的格子包含类的名字。类的命名应尽量用应用领域中的术语,应明确、无歧义,以利于开发人员与用户之间的相互理解和交流。类的获取是一个依赖于人的创造力的过程,必须与领域专家合作,对研究领域仔细地分析,抽象出领域中的概念,定义其含义及相互关系,分析出系统类,并用领域中的术语为类命名。一般而言,类的名字是名词。 下面分析领域一下类中的动词和名词,其中的一些名词将可能成为模型中的类,另一些名词成为类的属性。而动词或者动词短语则成为类的操作或类之间的关联标记。 系统中涉及到的名词有: 药品(drug),用户(user), 管理员(administrator), 普通用户(common user),信息录入员(information recorder),盘点员,调价员,采购员(buyer),仓库保管员(depository keeper),销售员(seller),账目(account), 发票(invoice), 账单(bill), 入库单(enter depository bill), 出库单(out depository bill), 调价单(change price bill), 客户(client),供应商(merchant),等等。 系统中涉及到的动词有: 入库(enter depository ),出库(out depository ),盘点(check)、调价(change price)、付账(pay)、信息录入(information enter),等等。 在筛选掉一些与其他名词意义重复或者应该作为属性的名词,并且增加了代表新类的名词后,可以得到以下的系统中类的名词列表: 药品(drug),用户(user), 管理员(administrator), 普通用户(common user),账目(account), 发票(invoice), 账单(bill), 入库单(enter depository bill), 出库单(out depository bill), 调价单(change price bill), 客户(client),生产厂家(manufacturer),供应商(merchant) 由此,得出如图2-7所示的初步类图:
首页 上一页 1 2 3 4 5 6 下一页 尾页 2/6/6 相关论文
首页 上一页 1 2 3 4 5 6 下一页 尾页 2/6/6