无线电管理信息系统软件建模规范及组件开发标准研究.docx

上传人:jian****018 文档编号:9169853 上传时间:2020-04-03 格式:DOCX 页数:36 大小:35.16KB
返回 下载 相关 举报
无线电管理信息系统软件建模规范及组件开发标准研究.docx_第1页
第1页 / 共36页
无线电管理信息系统软件建模规范及组件开发标准研究.docx_第2页
第2页 / 共36页
无线电管理信息系统软件建模规范及组件开发标准研究.docx_第3页
第3页 / 共36页
点击查看更多>>
资源描述
无线电管理信息系统软件建模规范及组件开发标准研究一、 信息系统软件建模概述信息系统是对信息的采集、处理、存储、管理、检索和传输,必要时向有关人员提供有价值的信息的系统。信息系统的生命周期可分为可行性研究、系统分析、系统设计、系统实现和系统维护五个阶段。信息系统建模的意义是使复杂系统简单化,遵循“分而治之”的古老理念。信息系统建模过程可分为如下六个环节,即可行性分析和调查、功能模型精化、设计精化、实现、测试和部署交付。信息系统的建模和开发是一致的,信息系统建模具有开放性、一体化、易用性、可重用性及多领域的协同等特点,系统建模可分为面向需求分析及面向对象的逻辑两种方法,前者主要采用结构化的分析方法,多利用数据流图或者IDEF方法(ICAM DEFinition method),严格遵循需求分析、系统设计、详细设计、编码、测试联调等步骤,系统分析是设计的输入;后者是目前主流的建模方法,它采用构造模型的观点,在开发过程中,各步骤的共同目标是建造一个问题领域的模型,而系统分析不是设计的输入。统一建模语言(简称UML)融合了面向对象方法中的基本概念,是描述模型的重要工具,类图、行为图、交互图、组件图、配置图等构成了模型在不同阶段的形式,基于UML的统一过程具有以架构为中心、使用实例驱动及支持迭代开发等显著优点。综上所述,在无线电管理信息系统建模过程中,也要采用面向对象的系统建模方法,利用Rational统一建模工具,采用UML来描述模型,在实现技术上,采用组件技术,建立无线电管理信息系统标准组件,摸索建立无线电管理新型系统软件建模规范和组件开发标准,这是本课题要主要研究的内容。二、 UML简介2.1 UML概述UML是Unified Modeling Language(统一建模语言)的缩写,它用来对软件密集系统进行可视化建模,是一种定义良好、易于表达、功能强大且普遍适用的建模语言。UML为面向对象开发系统的产品提供了一种进行说明、可视化、和编制文档的标准,它的作用域不仅限于支持面向对象的分析与设计,还支持从需求分析开始的软件开发的全过程。UML之所以称为“统一”语言,是因为UML对软件建模过程中的语义和表示法制定了统一的标准。UML对语义的描述使开发者能在语义上取得一致认识,消除了因人而异的表达方式所造成的影响。UML表示法定义UML符号的表示法,为开发者或开发工具使用这些图形符号和文本语法为系统建模提供了标准。UML 2.0是UML标准最新的版本,该版本支持Model Driven Architecture(MDA)远景中的大多数卓越理念。与之前的版本相比较,新改进可分为以下五个主要方面:1) 在语言定义方面精确程度有了相当的提高;2) 一个改良的语言组织;3) 重点改进大规模的软件系统模型性能;4) 对特定领域的改进的支持;5) 全面的合并,合理化、清晰化各种不同的模型概念。2.2 UML模型构成UML模型由三个构造块组成:? 物件(Things): UML模型中最基本的构成元素,是具有代表性的成分的抽象。? 关系(Relationships): 定义物件之间的相互联系。? 图(Diagrams):图是物件和物件之间关系的可视化表示。2.2.1 物件UML包含4种物件:构件物件、行为物件、分组物件和注释物件。1) 构件物件:UML模型的静态部分,描述概念或物理元素。它包括以下几种:? 类:具有相同属性、相同操作、相同关系、相同语义的对象的描述。? 接口:描述元素的外部可见行为,即服务集合的定义说明。? 协作:描述了一组事物间的相互作用的集合。? 用例:代表一个系统或系统的一部分行为,是一组动作序列的集合。? 构件:系统中物理存在,可替换的部件。? 节点:运行时存在的物理元素。2) 行为物件:UML模型图的动态部分,描述跨越空间和时间的行为。它包括:? 交互:实现某功能的一组构件事物之间消息的集合,涉及消息、动作序列、链接。? 状态机:描述事物或交互在生命周期内响应事件所经历的状态序列。3) 分组物件:UML模型图的组织部分,描述事物的组织结构。? 包:把元素组织成组的机制。4) 注释物件:UML模型的解释部分,用来对模型中的元素进行说明、解释。? 注解:对元素进行约束或解释的简单符号。2.2.2 关系UML模型中物件之间的主要有以下四种关系:1) 依赖(dependency):两个事物之间的语义关系,其中一个事物(独立事物)发生变化,会影响到另一个事物(依赖事物)的语义。2) 关联(association):是一种结构关系,它指明一个事物的对象与另一个事物的对象间的联系。3) 泛化(generalization):是一种特殊/一般的关系。也可以看作是常说的继承关系。4) 实现(realization):是类元之间的语义关系,其中的一个类元指定了由另一个类元保证执行的契约。2.2.3 图如图2.2-1所示,UML一共定义了13种不同类型的图,他们是模型的窗口或者视图。图2.2-1 UML图的类型结构其中主要使用的图包括:? 用例图(Use Case Diagram):显示一些用例、角色以及他们的关系。使用用例图来描述系统静态的功能场景。? 类图(Class Diagram):显示一组类、接口和协作以及它们之间的关系。利用类图阐明系统的静态的设计。? 组件图(Component Diagram):显示一些组件和它们之间的关系。通常一个组件可以映射成一个或多个类,接口或协作。? 序列图(Sequence Diagram):显示一系列的对象和在这些对象之间发送和接收的消息,它强调的是时间和消息的次序。使用序列图来说明系统的动态情况。? 协作图(Collaboration Diagram):显示了一系列的对象和在这些对象之间的联系以及对象间发送和接收的消息,强调的是发送和接收消息的对象之间的组织结构。? 状态图(State Chart Diagram):显示了一个状态机,由状态、转换、事件和活动组成。使用状态图说明系统动态情况。? 部署图(Deployment Diagram):描述位于节点实例上的运行构件实例的安排。节点是一组运行资源,如计算机、设备或存储器。2.3 IBM RSA简介2.3.1 RSA概述RSA是Rational Software Architect的缩写,是IBM基于Eclipse 3.0推出的软件设计和开发平台。它超越了一个典型集成开发环境的功能能提供丰富的建模、构架设计和挖掘能力,可以实现从UML和代码之间的互相转换,帮助软件开发人员创建结构更为合理的应用程序和服务。RSA的工作台环境如图2.3-1所示,图2.3-1 RSA工作台环境2.3.2 使用RSA进行UML建模RSA为使用UML 2.0标准进行面向对象软件系统的建模提供了一套完整、灵活、高效的工作环境。RSA提供了专为UML建模的工作视图(Modeling Perspective) 在其中可以建立UML的建模项目,为项目添加UML模型,编辑UML图,甚至可将UML模型转换为源代码。其中的模型浏览器(Model Explorer)、图导航器(Diagram Navigator)和图编辑器(Diagram Editor)是进行建模的主要工作区间。? 模型浏览器:如图2-3所示,它列出了当前UML建模项目下所有模型元素,包括物件、关系和图,并可通过右键点出菜单,在里面选择添加、删除、编辑UML模型元素,也可将模型输出为源代码。图2.3-2 模型浏览器视图? 图导航器:如图2-4所示,它为用户筛选出各个项目中的UML图,在其中可以创建、删除以及查看各个类型的图,方便建模。图2.3-3 图导航器视图? 图编辑器:如图2-5所示,它是编辑UML图的工作界面,在其中可以打开查看、编辑已有的图,建立新的UML模型。图编辑器对UML元素提供了智能感应功能,大大提高了建模效率。图2.3-4 图编辑器视图三、 无线电管理信息系统建模规范3.1规范的目的和意义无线电管理信息系统建模规范是在无线电管理信息系统建模过程中必须遵循的规范性文件。规范针对无线电管理信息系统建模制定了全面详细的标准,统一了系统模型的构建方法和描述格式,对建模过程提出了指导性的原则,确保无线电管理信息系统建模的质量、效率、统一性和可理解性。3.2规范相关术语UML(Unified Modeling Language):统一建模语言。RSA(Rational Software Architect):IBM公司出产的计算机软件集成开发平台。软件工程:研究用科学知识和技术原理来定义、开发、维护软件的一门学科。制品:运用UML进行建模过程中生成的图或文档。对象:系统建模要研究的任何事件,包括具体的事物或抽象的事件。类:具有相同或类似性质的对象的抽象,具有属性和操作。接口:用于说明类或构件的某种服务的操作集合。组件:可复用的软件组成成份,可被用来构造其他软件。构件:构成一个可执行系统必要和充分的元件,是系统中可替换的物理部分。节点:存在与运行时的代表计算机资源的物理元素,可以是硬件也可以是运行其上的软件系统。3.3规范的内容无线电管理信息系统建模规范针对系统建模的各个方面制定了严格的标准,规范的内容涉及到以下几个方面:? 建模语言:规定系统建模所使用的描述语言。? 建模环境:规定系统建模所使用的工作环境,主要包括建模所用的软件平台。? 建模方法:规定构造系统模型所采用的方法。? 建模过程:规定系统建模应包含哪些阶段,按什么步骤进行。? 建模制品:规定建模过程中各阶段所生成的制品以及制品应满足的要求。? 文档格式:规定建模文档的内容格式。3.3.1 建模语言无线电管理信息系统建模使用UML 2.0作为模型描述语言。UML提出了一套供IT专业人员构建计算机应用程序的统一的标准建模符号。通过使用UML,IT人员能够阅读和交流系统架构和设计规划。UML由于与程序设计语言无关而成为了标准建模语言。UML的最新版本为2.0,为系统建模提供了更多支持。3.3.2 建模环境无线电管理信息系统建模使用RSA 6.0作为设计模型的软件平台。RSA基于Eclipse 3.0技术,除了能提供软件的开发和测试环境,还能提供丰富的基于UML 2.0建模、构架设计和挖掘能力,并可实现从UML模型到程序代码之间的互相转换,帮助软件开发人员创建结构更为合理的应用程序和服务。3.3.3 建模方法无线电管理信息系统建模运用面向对象的建模方法。面向对象方法学的出发点和基本原则是尽可能模拟人类习惯的思维方式,使开发软件的方法与过程接近人类认识世界解决问题的方法与过程。也就是说,面向对象方法是一种崭新的思维方法,它是把程序看作是相互协作而又彼此独立的对象的集合。由于对象的独立封装,模块的可构造性、可扩充性、可重用性也大大加强,从而面向对象的软件工程能够胜任当今大规模复杂、易变软件系统开发应用的要求。3.3.4 建模过程无线电管理信息系统建模按照面向对象的软件工程各阶段的要求来进行,即建模过程包括需求、分析、设计和部署四个阶段。? 需求:对系统要实现的功能以及用户与系统的交互情况进行描述。? 分析:分析系统如何实现需求中所要求的功能,系统功能都涉及到哪些对象。? 设计:选择实现系统所用的技术,设计出实现系统的软件框架,按系统功能的实现划分子系统,设计出子系统的具体实现方案。无线电管理信息系统模型使用组件技术来构建系统框架,每个子系统实现为一个组件,便于功能复用和扩展。整个系统的框架链接并使用每个组件提供的接口来实现系统功能。? 部署:根据设计出的软件框架划分系统的物理构件,确定构件要配置在哪些节点上,节点如何布置,节点间如何连接。3.3.5 建模制品在上述建模过程的各个阶段要使用UML建立相应的模型,生成相应的UML制品。具体规范如下:? 需求阶段建立用例模型。用例模型要包括系统的参与者,和系统的用例。要绘制出用例图,清晰地描述出参与者参与哪些用例以及用例之间的关系。? 分析阶段建立静态分析模型和动态分析模型。静态分析模型要从功能描述中分析出实体对象,系统具有哪些类。要绘制出类图,清晰地描述出类的属性、方法以及类之间的关系。动态分析模型要分析出实体对象具有哪些消息。要绘制出活动图来描述系统用例内部的活动;还要绘制出时序图或通信图,清晰描述对象之间如何通过动态交互来实现用例;对某些状态变化复杂的对象还要绘制出状态图。? 设计阶段建立系统框架模型,对子系统的实现方案进行建模。系统框架模型要绘制出层次图,描述将系统划分为哪些子系统,将子系统构建为组件,绘制组件图描述各个组件提供的接口以及组件之间的使用关系。子系统的组件模型要设计出组件的接口以及接口的实现。要绘制出类图来描述接口提供的操作、接口由哪些实体类实现、实体类具有哪些属性和操作以及实体类之间的关系。在设计阶段最后要绘制出时序图,描述如何通过组件之间接口的相互协作来实现用例。? 部署阶段建立部署模型。部署模型要绘制出部署图,描述出系统由哪些物理构件和节点组成,构件配置在哪些节点中以及节点之间如何连接。3.3.6 文档格式无线电管理信息系统建模要撰写建模文档来对系统模型进行详细说明。文档的内容格式要按照建模过程来组织,即按照“需求、分析、设计、部署”四个阶段的顺序对相应模型进行介绍。具体要求如下:1) “需求”的内容:首先描述系统要实现的功能,即业务上下文。然后描述用例模型,包括参与者和用例,给出用例图。2) “分析”的内容:首先描述静态分析模型,包括实体类的属性和方法、实体类之间的关系,给出类图。然后描述动态分析模型,给出用例的活动图、协作图或时序图,对图作出说明。3) “设计”的内容:首先描述系统的层次结构和框架,对子系统进行概要介绍,给出系统层次图和组件图。然后按照组件的次序依次介绍子系统组件。对于每个组件,首先对组件的每个接口进行说明,包括接口功能和其操作的功能、参数和返回值,给出接口的类图。接着详细介绍每个接口的实现方案,包括实现方案中每个实体类的属性、操作和实体类间的关系,给出接口实现的类图。最后介绍使用组件接口实现用例的过程,给出时序图。4) “部署”的内容:首先对系统的构件和节点进行说明,然后描述这些构件和节点是如何进行配置和部署的,给出部署图。四、 无线电管理信息系统建模实例根据前面制定的无线电管理信息系统建模规范,本章详细介绍基于UML 2.0创建无线电管理信息系统的一个实例模型的建模过程。模型的建立过程按照面向对象软件系统分析和设计各个阶段的要求进行,即使用UML对系统实例的需求分析、业务分析和系统设计阶段进行建模。本章UML建模工作环境为RSA 6.0。4.1 需求分析需求分析就是根据收集到对所要实现的系统功能等方面的要求,找出所要实现系统要达到的目标。这个阶段要理解软件进行操作的上下文,确定系统有什么功能,能做什么,不能做什么,确保之后系统开发的方向不偏离最终要实现的目标。在此阶段要根据收集到的业务操作上下文分析用户和系统交互的功能,找出系统参与者有哪些,系统具有哪些用例,随之建立用例模型,画出用例图。4.1.1 业务上下文本章实例所要实现模型的是无线电管理信息系统的无线电“台站申请”中的“台站信息录入”子系统,其具体操作上下文描述如下:需要架设无线电台站的企业用户或个人用户可以在电脑上通过无线电管理信息系统客户端程序台站申请。申请人首先要在系统中录入台站信息。台站信息包括U表、V表等12种表格,申请人根据所要申请的表格种类选择表格后录入台站信息,信息保存到数据库。4.1.2 用例模型从上述的操作上下文中可以得到系统的参与者和用例:(1)参与者:? 台站个人用户:需要使用电台的个人。? 台站企业用户:需要使用电台的企业。? 台站申请人:申请架设台站的用户。三个参与者之前存在着泛化关系,即台站个人用户和台站企业用户都可以但当台站申请人的角色。(2)用例:? 台站申请:台站申请人进入无线电管理信息系统选择一个“台站申请”表。? 台站信息录入:台站申请人填写表格信息后提交。台站信息录入和台站申请之间是包含关系,即进行台站申请必须要进行台站信息录入,这一步必须完成。根据上面的分析,系统的用例图如图4.1-1所示:图4.1-1 系统用例图4.2 业务分析业务分析就是根据需求中提出的功能描述去理解要处理的业务实现,找出系统的逻辑是怎样的,从中抽象出相关的实体对象、它们的属性和相互关系,并根据这些对象来具体化需求分析中的用例,即用这些对象的交互行为来实现用例,将系统必须提供的服务的清晰陈述转转换为对要处理对象的正确理解。业务分析包括静态分析和动态分析两个过程:? 静态分析:静态分析确定系统的逻辑或物理结构,根据问题描述确定系统中哪些关键类,这些类具有什么属性和操作以及它们之间的关系是怎样的。这个阶段要为系统的建立静态模型,确定关键类,绘制分析类图或对象图。? 动态分析:动态分析中最重要的部分是用例的实现,使用已确立类的对象间的交互协作来使用例变成具体现实,模拟对象之间发送消息,验证系统的类结构是否能满足功能实现的需要,给类添加适当的操作。这个阶段要为系统建立动态模型,绘制实现用例的通信图和活动图,如需要描述对象的状态还可绘制状态图。4.2.1 静态模型根据以上对“无线电信息录入”系统的需求描述,通过静态分析可以确定系统的逻辑结构,确立系统的关键类,类图绘制如下。图4.2-1 系统分析类图下面对图中相关类和关系进行详细说明:(1) 类? Applicant:台站申请人类,提供了关于台站申请人的属性和操作。属性:Address:申请人地址。Name:申请人名称。Contact:申请人联系方式。操作:ApplyStation(StationToApply station, DataSet tabledata):申请人进行台站申请。参数station为要申请的台站对象,tabledata为从界面获得的申请数据对象。? StationToApply:要申请的台站类,提供了关于要申请台站的属性和操作。属性:StationType:申请台站的类型。操作:GetStationType():获取StationType属性。SetStationType(string stationtype):设置StationType属性。? Application:申请类,提供处理台站申请的属性和操作。属性:applytable:申请表,一个ApplyData类的对象。操作:CreateApplyData(DataSet ds):根据申请数据建立申请表,设置applytable属性的值。参数ds为录入的申请信息数据。SubmitApplyTable():提交申请表,将applytable提到到数据库。? ApplyData:申请表类,此类为虚基类。由于有12种不同类型的申请表,每种申请表都对应一个继承自ApplyData的子类。属性:Data_Table:申请表的表结构。操作:BuildDataTables():设置表结构属性。SetColumnName():设置表列字段名称。? UserFace:用户界面类,提供用户操作的功能,此类为虚基类。由于有12种不同类型的申请表,每种申请表都对应一个申请表界面,因此每个申请表界面都为一个继承自UserFace的子类。属性:TableData:用户录入的数据。操作:CreateTableData():将用户录入的数据保存到TableData中。SelectStation():用户选择申请哪个台站。Submit():提交录入数据。? DataAccess:数据访问类,提供与数据库进行数据通信的功能,次类为虚基类。由于有12种不同类型的申请表,每种申请表都对应一个继承自DataAccess的子类。(2)关系? Applicant和StationToApply之间存在着依赖关系。? UserFace和Applicant、StationToApply之间是关联关系。? Application是由于Applicant和StationToApply存在“申请”关系而产生的关联类。? ApplyData是Application不可缺的部分,因此它们是组合关系。? Application中要使用DataAccess访问数据库,因此它们是使用关系。4.2.2 动态模型为用例建立活动图可以清晰地描述用例的动态流程,“台站信息录入”的活动图如图4.2-2所示。图4.2-2 台站信息录入活动图根据静态模型确立的系统关键类及其属性和操作,使用通信图来具体实现“台站信息录入”用例,如图4.2-3所示:图4.2-3台站信息录入通信图从图中可以了解到在业务运行时对象的协作过程:首先台站申请用户和界面对象userFace交互,发送消息SelectStation选择要申请的台站,userFace收到消息后向台站对象stationToApply发送消息SetStationType设置台站类型。然后台站用户向userFace发送消息Submit提交录入,userFace向applicant发送消息ApplyStation并传递录入数据,applicant向application发送消息SubmitApply提交申请,application首先调用自己的CreateApplyData方法建立申请表,随后向数据访问对象dataAccess发送消息InsertTable将申请表录入数据库。4.3 系统设计基于分析阶段对系统相关业务问题的理解,设计阶段要进一步解决系统如何实现的问题,即系统软件的层次结构是怎样的,系统分为那几个子系统,各个子系统如何实现、如何连接,选择什么技术来实现以及系统如何部署。在此阶段要形成系统的框架模型,组织并优化分析阶段得到的类,绘制出设计类图、组件图和部署图,并建立序列图来描述系统运行时的用例实现。4.3.1 系统层结构和框架为系统建立良好的层次结构能提高系统开发效率,易于维护和扩展,增强了系统的可理解性和可复用性。本实例在系统设计中将系统划分为三个层:表示层、业务逻辑层和数据访问层,每一层都使用下层提供的服务,如图4.3-1所示:图4.3-1 系统层结构图? 表示层:用于和用户交互,获取用户的输入并给用户显示信息。? 业务逻辑层:实现系统业务逻辑的功能。? 数据访问层:实现与数据库的通信,完成持久数据的交换。根据这三个层次的划分,系统分为三个子系统Presentation、Business和DataProvider,将每个子系统实现为一个组件。采用组件技术来封装各个子系统的功能,一个层的组件通过下层组件的接口使用下层提供的服务,同时提供接口供上层组件使用。组件图4-6显示了系统的整体框架,每个组件分为上下两部分,上面的部分是组件需要的接口,下面的是组件能提供的接口。图4-6 系统组件框架图4.3.2 DataProvider组件DataProvider组件封装了对数据库进行操作的功能。如图4.3-2所示,它提供了IAccessFactory和IDataAccess接口。图4.3-2 DataProvider组件接口图(1) IDataAccess接口? 说明IDataAccess接口提供对数据库的操作,包括以下四个方法:SelectTable:查询表方法。UpdateTable:更新表方法。DeleteTable:删除表方法。InsertTable:插入表方法。? 实现图4.3-3 IDataAccess接口实现图如图4.3-3所示,虚基类DataAccess实现了IDataAccess接口,并具备自己的属性和方法:ConnectionStrng属性:数据库连接字符串。dsCommand属性:数据库操作命令。GetDeleteCommand方法:设置删除命令。GetUpdateCommand方法:设置更新命令。GetInsertCommand方法:设置插入命令。GetSelectCommand方法:设置查询命令。DataAccessImp类代表了继承自DataAccess,分别对应于12个具体表的DataAccess子类,IDataAccess的功能具体由这些类提供。(2)IAccessFactory接口? 说明IAccessFactory接口提供创建IDataAccess接口实例的功能。它具有如下操作:CreateDataAccessInstance方法:创建指定类型的IDataAccess接口实例。参数stationtype为台站类型字符串,返回一个IDataAccess接口实例。? 实现图4.3-4 IAccessFactory接口实现图如图4.3-4所示,IAccessFactory接口由虚基类AccessFactory实现,其具备了一个静态方法GetInstance,使用子类SqlAccessFactory和OracleAccessFactory继承,返回一个IAccessFactory实例。SqlAccessFactory和OracleAccessFactory分别针对Sql Server数据库和Oracle数据库提供创建IDataAccess接口的具体实现。4.3.3 Business组件Business组件封装了业务服务需要的逻辑处理功能。如图4.3-5所示,它提供了IApply和IApplyFactory接口。图4.3-5 Business组件接口图(1)IApply接口? 说明IApply接口提供了台站申请的业务逻辑功能。包括以下操作:ApplyStation方法:申请台站业务的核心操作。参数为stationtype和ds,其中stationtype为台站类型,ds为申请台站中录入的信息数据集。? 实现图4.3-7显示了Business组件的内部实现类的结构,IApply接口由Applicant类实现。1)Applicant申请人类。业务逻辑实现组件中的核心类,其包含以下内部方法:SelectStation:选择台站。参数为stationtype,标示台站类型,返回一个StationToApply类的实例。SetApplication:建立申请。参数为station,是一个StationToApply类的实例,返回一个Application类的实例。FillApplication:填写申请。参数为ds和application,其中ds为录入数据集,application为一个Application类的实例。SubmitApplication:提交申请。参数为application,是一个Application类的实例。状态图4.3-6描述了Applicant实例对象在系统运行期间的状态变化情况。图4.3-6 Applicant对象运行状态图2)StationToApply申请台站类。提供要申请的台站的属性和操作。包含一个StationType属性,标示台站类型。方法SetStationType和GetStationType用来存取这个属性。3)Application申请管理类。是Applicant和StationToApply的关联类。提供了管理由两者建立的申请关系的功能。其包含了一个ApplyData类型的字段applydata来保存申请表信息。其包含的方法如下:CreateApplyTable:建立申请表。参数stationtype,为台站类型字符串。SubmitApplyTable:提交申请表,将申请表保存到数据库。参数dbaccess,为一个IDataAccess接口的实例。BindApplyTable:用录入的申请数据填充申请表。参数ds为录入的申请信息数据。4)ApplyData申请表类。和分析模型中的一致,其子类ApplyDataImp代表了12个具体的申请表类。5)ApplyImpFactory业务工厂类。用来建立实现业务逻辑用到的类的实例。它包含以下三个静态方法:CreateStationInstance:创建StationToApply类的实例,参数stationtype为台站类型字符串。CreateApplicationInstance:创建Application类的实例。CreateApplyDataInstance:创建ApplyData类的实例。图4.3-7 IApply接口实现图(2)IApplyFactory接口? 说明IApplyFactory接口提供了创建IApply接口的功能,其包含以下操作:CreateApplyInstance:创建IApply接口实例,返回一个IApply接口实例。? 实现如图4.3-8所示,IApplyFactory接口由虚基类ApplyFactory实现。ApplyFactory使用静态方法GetInstance来实例化一个子类ApplyFactoryImp。具体创建组件接口IApply时调用的是ApplyFactoryImp的方法。图4.3-8IApplyFactory接口实现图4.3.4 Presentation组件Presentation组件封装了用户界面的输入输出功能。如图4.3-9所示,它提供了IUserFaceFactory和IUserFace接口。图4.3-9 Presentation组件接口图(1) IUserFace接口? 说明IUserFace接口提供了处理用户录入数据的功能。其包含以下操作:Submit方法:提交录入数据。参数有stationtype,ds和applicant,其中stationtype为台站类型字符串,ds为录入数据,applicant为一个IApply接口的实例。SaveTableData:保存录入数据,将用户在界面组件上输入的数据保存成数据集。返回一个数据集。? 实现如图4.3-10所示,IUserFace接口是由UserFace实现的。UserFace是一个虚基类,包含了一个TableData属性,它用来保存录入的数据。在具体的实现中,由于用户录入界面为12个申请表界面,因此IUserFace接口具体是由12个UserFaceImp类实现的,这些类都继承自UserFace。图4.3-10 IUserFace接口实现图(2) IUserFaceFactory接口? 说明IUserFaceFactory接口提供了创建IUserFace接口的功能。它包含以下操作:CreateUserFaceInstance方法:创建指定的IUserFace接口实例。参数stationtype为字符串类型。返回一个和stationtype对应的IUserFace接口实例。? 实现如图4.3-11所示,IUserFaceFactory接口由虚基类UserFaceFactory实现。UserFaceFactory使用静态方法GetInstance来实例化一个子类UserFaceFactoryImp。具体创建IUserFace接口时调用的是UserFaceFactoryImp的方法。图4.3-11 IUserFaceFactory接口实现图4.3.5 系统用例实现时序图4.3-12对系统各组件的对象在运行期间的交互情况进行了建模,从中可以看到各对象间发送消息的顺序,能够了解到“台站信息录入”用例是如何实现的,描述如下:台站申请人通过程序的主窗口mainform选择要申请的台站类型,系统调用mainform的OnSelectStation方法响应,返回台站申请表。申请人填好申请表后提交,调用mainform的OnSubmit方法响应。在OnSubmit中,首先通过Presentation组件的IUserFaceFactory建立了IUserFace实例,然后又通过Business组件的IApplyFactory建立了IApply实例。随后调用了IUserFace的SaveTableData方法保存录入的数据,给IUserFace发送了Submit消息。在Submit消息中,调用了IApply的ApplyStation方法,在ApplyStation中首先执行了Applicant的SelectStation建立了一个StationToApply实例,然后调用SetApplication建立了一个Application实例并创建了申请表,接着调用FillApplication将录入数据保存在申请表中。最后调用SubmitApplication提交申请表。在SubmitApplication中调用了Application的SubmitApplyTable,其中又创建了DataProvider组件的IDataAccess接口,并调用其InsertTable方法将申请表提交到数据库。图4.3-12台站信息录入用例时序图4.3.6 系统部署系统的构件有以下几个:StationManager.exe:系统主程序。Presentation.dll:界面组件运行库。DataProvider.dll:数据库访问组件运行库。Business.dll:业务逻辑组件运行库。DBMS:数据库管理系统。系统部署情况如图4.3-13所示,系统采用客户端服务器模式,在服务器节点配置数据库(Sql Server或Oracle),在客户端节点配置windows操作系统、.net framework环境,放置除DBMS的其他构件。图4.3-13 系统部署图五、 基于组件的开发简介5.1 组件5.1.1 组件概述组件实际上是封装成单独的二进制单元且可以复用的自描述程序,它可以给应用程序,操作系统以及其他组件提供服务。任何可以和其他部分组合起来生成一个更大整体的事物都可以视为软件组件。比如:Visual BASIC中的控件,Delphi中的部件。组件是对数据和方法的简单封装。组件可以有自己的属性和方法。属性是组件数据的简单访问者。方法则是组件的一些简单而可见的功能。使用组件可以实现拖放式编程、快速的属性处理以及真正的面向对象的设计。5.1.2 组件的应用COM组件技术组件在商业软件中已经得到了广泛的应用,Windows操作系统之所以具有强大的生命力,一个重要的原因就是微软使用了COM组件技术,实现了软件的即插即用。COM是开发软件组件的一种方法,是微软为了计算机工业的软件生产更加符合人类的行为方式开发的一种新的软件开发技术。在COM构架下,人们可以开发出各种各样功能专一的组件,然后将它们按照需要组合起来,构成复杂的应用系统。由此带来的好处是多方面的:可以将系统中的组件用新的替换掉,以便随时进行系统的升级和定制;可以在多个应用系统中重复利用同一个组件;可以方便的将应用系统扩展到网络环境下。 COM与语言,平台无关的特性使所有的程序员均可充分发挥自己的才智与专长编写组件模块。开发自定义的COM组件就如同开发动态的,面向对象的API。多个COM对象可以连接起来形成应用程序或组件系统。并且组件可以在运行时刻,在不被重新链接或编译应用程序的情况下被卸下或替换掉。Microsoft的许多技术,如ActiveX, DirectX以及OLE等都是基于COM而建立起来的。并且Microsoft的开发人员也大量使用COM组件来定制他们的应用程序及操作系统。5.1.3 组件与对象的对比组件可以被认为是面向对象和其它软件技术的化身。区分组件和其它的技术有四个原则:封装、多态性、后期连接和安全性。组件没有继承这个特性,组件通过调用其它的对象和组件重复使用功能,代替了继承。5.2 组件技术5.2.1 组件技术概述组件技术就是利用某种编程手段,将一些人们所需要的,但又不便于让最终用户去直接操作的细节进行了封装,同时对各种业务逻辑规则进行了实现,用于处理用户的内部操作细节,甚至于将安全机制和事物机制体现的淋漓尽止。而这个封装体就常常的被我们称作组件。而这个封装的过程中,编程工具仅仅是充当了一个单纯的工具罢了,没有什么实际的意义,也就是说为了完成某一规则的封装,可以用任何支持组件编写的工具来完成,而最终完成的组件是与语言本身已经没有了任何的关系,甚至可以实现跨平台。5.2.2 组件技术的优势使用组件技术的目的是实现各种规则,它能将一个大型的分布式系统进行统一的规划、合理的处理冗余、安全、平衡负载等单纯的编程手段不能实现的功能,这就是我们要应用组件的一个很重要的原因。再者,组件对象不是普通的可执行文件,更不是将各种规则定死在其内部,它可以很平滑的实现自身的升级、扩展,举一个很简单的例子,当我们发现某项业务逻辑规则已经很陈旧的时候,我们不得不用新的业务逻辑规则去替换它,而这个替换过程将会体现出组件对于普通的.Dll文件或是.Exe可执行文件的具大差别。当我们需要进行更新的时候,对于组件对象而言,在最理想的情况下用户可以一边进行组件对象的应用,一边无知觉的接受组件的更新,而一个Dll文件或是某一个可执行文件无法达到这样的效果。根据惯例,所有组件都拥有与它们的实现对应的规范。这种规范定义了组件的封装(例如它为其它组件提供的公共接口)。最理想的情形是组件规范是本地的或全局的标准,它在系统、企业或行业中被广泛地重复使用。如果组件符合了客户端调用和服务的规范,那么它们不需要额外编写代码就能够实现交互操作。这一般被称为即插即用集成。5.2.3 组件创建创建组件就是自行设计制作出新的组件。设计组件是一项繁重的工作。自行开发组件与使用组件进行可视化程序开发存在着极大的不同,要求程序员熟知原有的VCL类库结构,精通面向对象程序设计。组件开发者应该掌握的三项主要内容是:属性、事件和方法。对于组件的开发者,组件是纯粹的代码。组件的开发不是一个可视化的开发过程,而是严格编制代码的工作。实际上,创建新组件使我们回到传统开发工具的时代。虽然这是一个复杂的过程,但也是一个一劳永逸的过程。创建组件的最大意义在于封装重复的工作,其次是可以扩充现有组件的功能。组件创建过程包括设计、开发、调试(就是所谓的3Ds)工作,然后是组件的使用。5.2.4 组件的合成组件利用合成来建立系统。在合成中,两个或多个组件集成到一起以建立一个更大的实体,而它可能是一个新组件、组件框架或整个系统。合成是组件的集成。5.3 基于组件的开发5.3.1 面向对象的组件开发没有基石的大厦必将会倒塌,我们没有坚实的开发平台做后盾,那么我们的组件只能说这是一种空白的设计,别人只会认为我们在空谈自己的构想。所以我们应该寻找一种开发利器来支持我们的组件开发。.Net的Framework的设计模式给了我们很大的忠告,一个组件其实就是一个工程,一个项目,而实现工程、项目的最好方法就是充分的利用OOP思想。OOP编程对于我们写组件有很大的帮助,通过OOP可以充分的减少复用程度,提高可扩展程度。所以基于组件的开发应该是面向对象的。5.3.2 C#语言简介C#是一种安全的、稳定的、简单的,由C和C+衍生出来的面向对象的编程语言。它在继承C和C+强大功能的同时去掉了一些它们的复杂特性(例如没有宏和模版,不允许多重继承)。C#综合了VB简单的可视化操作和C+的高运行效率,以其强大的操作能力、优雅的语法风格、创新的语言特性和便捷的面向组件编程的支持成为.NET开发的首选语言。5.3.3 C#语言的优势C#对Windows程序最大的优势可能就是它与COM的无缝集成了,COM就是微软的Win32组件技术。实际上,最终有可能在任何.NET语言里编写COM客户和服务器端。C#编写的类可以子类化一个已存在的COM组件;生成的类也能被作为一个COM组件使用。比方说,JScript语言子类化它从而得到第三方COM组件。这种现象的结果导致了一个运行环境的产生,在这个环境里的组件可用任何.NET语言子类化。结合我们面向对象的组件开发需求和C#语言自身的特点,我们选定C#作为本次系统开发的编程语言。六、 基于组件的无线电管理信息系统软件开发标准随着无线电管理工作信息化的需要,有大量的无线电管理信息系统需要建设,而现实情况是,这些信息系统无法由某一个公司或机构来独立完成,只有通过多方力量的合作,才能完成好这些信息系统的建设工作。不同的公司或机构根据各自的具体情况,可能会采用不同的软件架构和开发技术,这就势必会造成应用系统集成的困难和功能的重复等问题。如何解决这些问题?通过上文对于组件技术以及利用组件进行软件开发的相关介绍,我们已经了解了组件的主要优势及其构建方法。因此,我们在进行无线电管理信息系统的开发建设过程中,引入组件开发的技术将是一个很好的尝试。既然考虑要引入组件开发技术,我们就有必要设立一个基于组件的无线电管理信息系统软件开发标准,并要求无线电管理信息系统建设单位遵循该标准。只有大家都遵循该技术标准,才能共同地从该标准中受益,从而形成“共赢”的局面。下面,我们尝试给出一个简单的基于组件的无线电管理信息系统软件开发标准。6.1 标准的目的为促进无线电管理信息系统(以下简称系统)开发、建设及维护,提高系统的稳定性、高效性、维护性、延续性,特制定本标准。6.2 标准的范围各级无线电管理机构以及无线电管理信息系统建设方(以下简称建设方)在进行各种无线电管理信息系统的建设过程中,应遵循此标准。6.3 组件的建设要求(1)建设方在建设信息系统过程中,应尽量使用满足要求的已有的、公开的组件,以达到减少工作量,提高效率,增加系统稳定性等目的;(2)如没有符合要求的组件,建设方在建设信息系统过程中,应尽量使所建系统的功能模块组件化,形成一系列具有独立功能的组件;建设方在开发组件过程当中,应基于统一建模规范来设计功能模块,并尽量使用统一的开发语言(如C#语言等)来进行开发;(3)建设方所开发的组件(可执行代码、源代码及其相关说明),其知识产权属于国家无线电监测中心,建设方应在系统验收时将其全部上交至国家无线电监测中心;(4) 建设方所开发的组件,应具有独立运行的能力;(5)建设方所开发的组件,应具有稳定性、可维护性及易升级性等特点。6.4 组件的管理(1)组件的开发主要由建设方完成,并由国家无线电监测中心负责管理。(2)组件的管理主要包括组件标准的发布、组件的提交、组件的测试及组件的共享等方面。(3)国家无线电监测中心应适时发布有关组件建设的标准,以作为建设方开展建设的依据;(4)组件建设完成后,需提交给国家无线电监测中心,并通过国家无线电监测中心的测试;(5)通过测试的组件可以由国家无线电监测中心发布,并提供给需要使用该组件的部门或其他建设方使用。(6)组件的更改或升级由国家无线电监测中心及建设方共同完成。七、 遵循基于组件的无线电管理信息系统软件开发标准的实例7.1 台站管理信息系统开发简介7.1.1 系统开发背景台站管理信息系统利用组件技术,基于无线电信息系统建模规范,进行开发。是无线电管理信息系统建模规范在台站领域的一个具体应用,具有很强的实践意义。7.1.2 系统开发环境本次台站管理信息系统开发的环境:操作系统:Microsoft Windows Professional SP2开发平台:Microsoft Visio Studio 2008语言种类:C#数据库软件:Microsoft SQL Server 20057.2 台站管理信息系统组件简介本系统力求通用性,将不同业务层做成组件,然后将各组件集成。图7-1是系统中引用的组件。包括界面组件:StationA、StationB等和数据访问组件DataProvider。图7.2-1 系统中的组件7.2.1 界面层组件介绍界面组件:不同的台站表格均为组件,T表组件,U表组件如图所示:图7.2-2 T表组件图7.2-3 U表组件7.2.2 数据库访问层组件数据库访问层组件DataProvider中定义了接口IDataAccess制定了数据录入、修改、查询、删除的方法的名称。public interface IDataAccess void SelectTable(string s); void UpdateTable(string s); void DeleteTable(string s); void InsertTable(string s); void Update(string s);类DataAccess继承接口IDataAccess实现数据的录入、修改、查询、删除。InsertTable方法中将表的名称作为参数传入。public class DataAccess : IDataAccess public string tablename; public string command;public SqlConnection sqlcn = new SqlConnection(Data source=Z-7BDB0ACF6AEC4SQLEXPRESS;Initial Catalog=Station;Integrated Security=True;Pooling=False); public SqlCommand dsCommand; public SqlDataAdapter sqladapter; public DataSet dataset = new DataSet(); public SqlCommandBuilder sqlcb; public DataRow dr; public void SelectTable(string s) public void UpdateTable(string s) public void DeleteTable(string s) public void InsertTable(string s) tablename = s; command = select * from + tablename; sqladapter = new SqlDataAdapter(command, sqlcn
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 方案规范


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!