第6章电子政务系统的开发.ppt
E-Government,电子政务,第六章 电子政务系统的开发,3,第六章 电子政务系统的开发,了解信息系统开发的主要方法和掌握信息系统开发的主要过程重点掌握面向对象的电子政务系统建设的需求捕获、系统分析、系统设计工作的主要内容和主要步骤,学习目标,4,第六章 电子政务系统的开发,第一节 信息系统开发方法和开发过程第二节 电子政务系统的需求捕获第三节 电子政务系统分析第四节 电子政务系统的设计第五节 电子政务系统的实施和测试本章小结,5,第一节 信息系统开发方法和开发过程,一、信息系统开发方法二、信息系统的开发过程,6,一、信息系统开发方法,(一)信息系统常见开发方法简介1结构化系统开发方法(1)结构化系统开发方法的基本思想 结构化系统开发方法是迄今为止最传统、应用最广泛的一种系统开发方法。结构化系统开发方法的基本思想是利用系统工程的思想和工程化的方法,以用户至上为原则,按结构化、模块化、自顶向下的方法对系统进行分析与设计。,7,一、信息系统开发方法,(一)信息系统常见开发方法简介1结构化系统开发方法(2)结构化开发方法的开发过程,8,一、信息系统开发方法,(3)结构化开发方法的特点对现实世界的认识与系统编程之间存在着理解上的鸿沟 系统是围绕着如何实现一定的行为来进行的,当系统行为易变,需要经常性地修改时,修改变得极为困难这种结构是无法适应以控制关系为重要特性的系统要求 自顶向下功能分解的分析设计方法极大地限制了软件的可重用性,9,一、信息系统开发方法,(一)信息系统常见开发方法简介2原型法(1)原型法的基本思想 原型法是近年来提出的一种以计算机为基础的系统开发方法,它首先构造一个功能简单的原型系统,然后通过对原型系统逐步求精,不断扩充完善得到最终的软件系统。原型就是模型,而原型系统就是应用系统的模型,它是待构筑的实际系统的缩小比例模型,但是保留了实际系统的大部分功能。这个模型可在运行中被检查、测试、修改,直到它达到用户需求为止,因而,这个工作模型能很快转换成目标系统。,10,一、信息系统开发方法,(2)原型法开发过程,11,一、信息系统开发方法,(3)原型法的特点 原型法的主要优点在于它是一种支持用户的方法,使得用户在系统生存周期的设计阶段起到积极的作用;它能减少系统开发的风险,特别是在大型项目的开发中,由于对项目需求的分析难以一次完成,应用原型法效果更为明显。原型法既适用于系统的重新开发,也适用于对系统的修改;它不局限于仅对开发项目中的计算机软硬件进行设计,还可用于制作系统的工作模型。原型法可以与结构化系统开发方法相结合使用,这样会扩大用户参与需求分析、初步设计及详细设计等阶段的活动,加深对系统的理解。,12,一、信息系统开发方法,原型法的使用有一定的适用范围和局限性,这主要表现在以下几个方面:对于一个大型的系统,如果我们不经过系统分析来进行整体性划分,想要直接用屏幕来一个一个地模拟是很困难的。对于大量运算性和逻辑性较强的程序模块,原型方法很难构造出模型来供人评价。对于原基础管理不善、信息处理过程混乱的问题,原型法的使用存在一定的困难。对于一个批处理系统,其大部分是内部处理过程,这时用原型法有一定的困难。,13,一、信息系统开发方法,(一)信息系统常见开发方法简介3面向对象的开发方法。(1)面向对象开发方法的发展背景。面向对象(Object Oriented)方法的形成最初是从面向对象程序设计语言开始的,随之才逐渐形成面向对象分析和设计方法。面向对象编程语言的出现以20世纪60年代末挪威奥斯陆大学和挪威计算中心共同研制的SIMULA语言为标志。,14,一、信息系统开发方法,(2)面向对象开发方法的发展背景。客观事物都是由对象(Object)组成的。对象由属性和方法组成。属性(Attribute)反映了对象的信息特征,如特点、值、状态等等。而方法(Method)则是用来定义改变属性状态的各种操作。对象之间的联系主要是通过传递消息(Message)来实现的。对象可按其属性进行归类。类(class)有一定的结构,类上可以有超类(Superc1ass),类下可以有子类(Subclass)。这种对象或类之间的层次结构是靠继承关系维系着的。对象是一个被严格模块化了的实体,称之为封装(Encapsulation)。,15,一、信息系统开发方法,(3)面向对象开发方法的开发过程,16,一、信息系统开发方法,第一阶段:分析问题的性质和求解问题。对系统将要面临的具体管理问题以及用户对系统开发的需求进行调查研究,即先弄清要干什么的问题。在繁杂的问题域中抽象地识别出对象以及其行为、结构、属性、方法等。这一阶段一般称为面向对象分析,简称为OOA(Object-Oriented Analysis)。第二阶段:整理问题。即对分析的结果作进一步地抽象、归类、整理,并最终以范式的形式将它们确定下来。这一阶段一般被称为面向对象设计,简称为OOD(Object-Oriented Design)。第三阶段:程序实现。即用面向对象的程序设计语言将上一步整理的范式直接映射(即直接用程序语言来取代)为应用程序软件。这一阶段一般被称为面向对象的编程,简称为OOP(Object-Oriented Programming)。,17,一、信息系统开发方法,(4)面向对象开发方法的特点较好地处理软件的规模和复杂性不断增加所带来的问题。通过使用各种直接模仿应用领域的实体得到的抽象和对象,使规格说明和设计更加完整和易于理解。通过形成界面更少、更抽象、聚集度更高的模块,提高了软件工程中的模块化和信息隐藏度。面向对象程序设计语言和面向对象数据库管理系统的使用,大大缩小了代码规模,提高了效率和可复用性。,18,一、信息系统开发方法,(二)统一建模语言1面向对象的开发方法与UML面向对象的开发方法的发展在20世纪80年代末至90年代中出现了一个高潮,UML(Unified Modeling Language,统一建模语言)是这个高潮的产物。它不仅统一了Booch、Rumbaugh和Jacobson的表示方法,而且对其作了进一步的发展,并最终统一为大众所接受的标准建模语言。,19,一、信息系统开发方法,(二)统一建模语言1面向对象的开发方法与UML1994年10月,Grady Booch和Jim Rumbaugh开始致力于这一工作。他们首先将Booch93和OMT-2统一起来,并于1995年10月发布了第一个公开版本,称之为统一方法UM0.8(Unitied Method)。1995年秋,OOSE的创始人Ivar Jacobson加盟这一工作。经过Booch、Rumbaugh和Jacobson三人的共同努力,于1996年发布了新的版本,即UML0.9,并将UM重新命名为UML,集成了各种面向对象方法的优点,成为一个更具综合性的统一方法。,20,一、信息系统开发方法,(二)统一建模语言2UML静态建模任何建模语言都以静态建模机制为基础,统一建模语言UML也不例外。UML的静态建模机制包括用例图(use case diagram)、类图(class diagram)、对象图(object diagram)、包(package)、组件图(component diagram)和配置图(deployment diagram)。,21,一、信息系统开发方法,2UML静态建模(1)用例图 UML中的角色是指触发系统的用户,用例是指系统的功能。用例图用于描述若干角色以及这些角色与系统提供的用例之间的关系。用例图仅仅从角色使用系统的角度描述系统的信息,也就是站在系统外部察看系统功能,它并不描述系统内部对该功能的具体操作方式,用例图定义的是系统的功能需求。,22,一、信息系统开发方法,2UML静态建模(1)用例图,用例图示意,23,一、信息系统开发方法,2UML静态建模(2)类图 UML中的类用来表示系统中需要处理的事物。类与类之间有多种连接关系,比如:关联关系(彼此之间的连接)、依赖(一个类使用另一个类)、泛化(一个类是另一个类的子类)等。类图就是用来表示系统中类和类之间的这些关系,它是对系统静态结构的描述。,24,一、信息系统开发方法,2UML静态建模(2)类图,25,一、信息系统开发方法,2UML静态建模(3)对象图 对象图是类图的变体。两者之间的差别在于对象图表示的是类的对象实例,而不是真实的类。对象图是类图的一个范例,它及时、具体地反映了系统执行到某处时的当前工作状况。对象图没有类图重要,对象图通常用来示例一个复杂的类图,通过对象图反映真正的实例是什么,它们之间可能具有什么样的关系,以帮助人们对类图的理解。,26,一、信息系统开发方法,2UML静态建模(4)包 将许多类集合成一个更高层次的单位,形成一个高内聚、低耦合的类的集合。UML中将这种机制叫做包(package)。包图主要显示由类组成的包以及这些包之间的依赖关系,有时还显示包和包之间的继承关系和组成关系。,27,一、信息系统开发方法,2UML静态建模(4)包,28,一、信息系统开发方法,2UML静态建模(5)组件图和配置图1)组件图。组件图显示软件组件之间的依赖关系。一般来说,软件组件就是一个实际文件,可以是源代码文件、二进制代码文件和可执行文件等。组件图可以用来显示编译、链接或执行时组件之间的依赖关系。2)配置图。配置图描述系统硬件的物理拓扑结构以及在此结构上执行的软件。配置图可以显示计算结点的拓扑结构和通信路径、结点上运行的软件组件、软件组件包含的逻辑单元(对象、类)等。配置图常常用于帮助理解分布式系统。,29,一、信息系统开发方法,(二)统一建模语言3.UML动态建模(1)消息UML定义的消息类型有三种:1)简单消息。表示简单的控制流,用于描述控制如何在对象间进行传递,而不考虑通信的细节。2)同步消息。表示嵌套的控制流,方法的调用是一种典型的同步消息。调用者发出消息后必须等待消息返回,只有当处理消息的方法执行完毕后,调用者才可继续执行自己的方法。3)异步消息。表示异步控制流,当调用者发出消息后不用等待消息的返回即可继续执行自己的方法。异步消息主要用于描述实时系统中的并发行为。,30,一、信息系统开发方法,3.UML动态建模(2)状态图状态图用来描述一个特定对象的所有可能状态及其引起状态转移的事件,表示单个对象在其生命周期中的行为。一个状态图包括一系列的状态以及状态之间的转移。1)状态。状态图中定义的状态有:初态、终态、中间状态、复合状态。如果一个状态可以进一步地细化为多个子状态,我们将其称作复合状态。2)转移。状态图中状态之间带箭头的连线被称为转移。,31,一、信息系统开发方法,3.UML动态建模(3)顺序图 顺序图用来描述对象之间动态的交互关系,着重体现对象间消息传递的时间顺序。顺序图存在两个轴:水平轴表示不同的对象,垂直轴表示时间。顺序图中的对象用一个带有垂直虚线的矩形框表示,并标有对象名和类名。,32,一、信息系统开发方法,3.UML动态建模(3)顺序图,33,一、信息系统开发方法,3.UML动态建模(4)协作图 协作图用于描述相互合作的对象间的交互关系和链接关系。虽然顺序图和协作图都用来描述对象间的交互关系,但侧重点不一样。顺序图着重体现交互的时间顺序,协作图则着重体现交互对象间的静态链接关系。,34,一、信息系统开发方法,3.UML动态建模(4)协作图,35,一、信息系统开发方法,3.UML动态建模(5)活动图 活动图的应用非常广泛,它既可描述操作(即类的方法)的行为,也可以描述用例和对象内部的工作过程。活动图是由状态图变化而来的,它们各自用于不同的目的。活动图依据对象状态的变化来捕获动作(将要执行的工作或活动)与动作的结果。活动图中一个活动结束后将立即进入下一个活动。,36,一、信息系统开发方法,3.UML动态建模(5)活动图,37,一、信息系统开发方法,4UML建模应用过程分析阶段。捕捉系统的功能需求,分析、提取所开发系统的“客观世界”领域的类以及描述它们的协作关系,分析阶段一般包括用例和域类分析。设计阶段。通过考虑实现环境,将分析阶段的模型扩展和转化为可行的技术实现方案,即通过设计模型描述技术上的解决方案。实现阶段。具体工作就是进行编码,同时对已构造的模型作相应的修正,并通过模型描述所开发系统的软硬件配置情况。测试阶段。使用前几个阶段所构造的模型来指导和协助测试工作。,38,一、信息系统开发方法,未来的软件开发模式将会具有以下三个特点:首先,软件开发自动化的程度将越来越高;其次,在所开发的软件中隐藏的差错将越来越少;第三,在新型软件工程环境的支持下,将有能力开发出自适应的软件系统。统一建模语言UML及其集成化支持环境将为走向这个新的开发范式奠定坚实的基础。,39,二、信息系统的开发过程,(一)信息系统开发过程中的核心要素信息系统开发的最终结果是一种产品,其开发过程是由许多不同类型的人员共同参与的,开发过程一般需要通过使用一种或一组工具完成,同时,开发过程需要通过一定的管理技术和手段,因而也属于项目管理的范畴。因此,在信息系统开发过程中存在几个核心因素,即人员、项目、产品、过程,这些因素及其之间的相互作用关系将影响开发工作的成败,40,二、信息系统的开发过程,(一)信息系统开发过程中的核心要素1人员至关重要人员将参与软件产品的开发,并贯穿其整个生命周期,他们或对产品提供资金,或进行规划、开发、管理、测试、使用,或从中受益。因此,指导产品开发的过程必须是面向人员的,也就是说,要便于人们应用。组织和管理开发项目的方式,即开发过程会极大地影响参与项目的人员。包括项目可行性、项目风险管理方式、开发组的结构、项目进度表的制定、项目的易理解性,以及项目完成的成就感。因此对适当的人员安排适当明确的开发工作将使人员工作,将更加开发工作的效率。,41,二、信息系统的开发过程,(一)信息系统开发过程中的核心要素2项目创造产品一个开发项目将得到一种产品的新版本。生命周期中的第一个项目开发和发布最初的系统或产品。后续的项目周期将在很多版本之上延续系统的生命周期。在项目的整个生命周期中,项目组在项目实施的过程中必须综合考虑变化、迭代和组织模型这三方面的因素,以创造最佳产品。,42,二、信息系统的开发过程,(一)信息系统开发过程中的核心要素3产品不仅仅是代码在信息系统的开发中,开发的产品是一个软件系统。这里的产品不是单指所交付的代码,而是指整个系统。除了系统的源代码外,系统分析、设计的文档,有关的需求、测试、生产、安装的操作也是系统的组成部分。系统是以机器其形式或人们可读形式给机器、工作人员和其他项目相关人员提供表示的所有制品。其中机器指工具、编译器或目标计算机;工作人员包括经历、架构工程师、开发人员、测试人员、行政管理人员等;项目相关人员包括投资者、用户、项目经理、生产线经理、生产人员等等。,43,二、信息系统的开发过程,(一)信息系统开发过程中的核心要素4工具支持过程,过程指导项目工具是将重复的任务自动化,使事情更有条理,管理大量信息,并指导开发人员沿着一套特定的开发路金前进。开发过程如果不考虑怎样将它自动化,那么这种开发过程只会有理论意义。开发工具如果不知道它们用来支持什么样的过程,工具就没有应用价值。因此,过程和工具是相辅相成的。一方面,过程驱动工具的开发;另一方面,工具指导过程的开发。,44,二、信息系统的开发过程,(二)Rational统一过程(RUP)简介软件开发过程是一个将用户需求转化为软件系统所需要的活动的集合。统一过程不仅仅是一个简单的过程,而是一个通用的过程框架,可用于不同类型的软件系统。Rational 软件公司在1995年秋季引进了Objectory AB,并在已有的软件开发过程基础之上统一了基本规则,从而获得了突破。1998年6月,Rational公司公布了该产品的新版本Rational统一过程(Rational Unified Process,RUP)5.0版本。,45,二、信息系统的开发过程,(二)Rational统一过程(RUP)简介RUP是目前软件开发业事实上的工作标准,RUP的突出特点表现为以下三个方面:RUP是用例驱动的;RUP以架构设计为中心;RUP是迭代和增量的过程。,46,二、信息系统的开发过程,47,二、信息系统的开发过程,(三)RUP的核心工作流,需求捕获,系统分析,系统设计,系统实施,系统测试,48,【案例6-1】财政部非贸易外汇管理信息系统的开发过程简介,49,第二节 电子政务系统的需求捕获,一、需求捕获的基本概念二、需求捕获的主要工作,50,一、需求捕获的基本概念,在系统开发过程中遇到的第一个问题是缺乏统一定义、开发人员与客户易理解、易沟通的名词或术语来描述软件开发工作。客户所定义的“需求”对开发者来说是一个较高层次的产品概念,而且可能是一个从商业角度来定义的概念。而开发人员所说的“需求”对用户来说则象是详细设计,并且可能会包含许多一般客户所不能或不易理解的内容。实际上,软件需求包含着多个层次,不同层次的需求从不同角度与不同程度反映着整个系统的细节问题。,51,一、需求捕获的基本概念,系统需求可以划分为功能性需求和非功能性需求两种:功能性需求定义的是在信息系统必须包括的功能或某种行为,它们被用户所接受和使用,如处理存款,计算平均学分等都是系统的功能性需求。非功能性需求则指的是系统的属性、特点或者是某种特性,这些属性、特点或特性同时也限制了系统解决方案的可选范围,如性能要求、系统经费投入要求、系统的安全限制要求都属于系统的非功能性需求。,52,一、需求捕获的基本概念,2需求捕获的目的和意义需求捕获工作的主要目的是开发一个正确的系统。为了开发出正确的、能满足客户需求并解决客户问题的系统,需要以一种详细的方式来描述系统需求(也就是系统必须完成的功能、存在的条件、系统目标或能力),并通过一些必要的交流和调整使客户和开发人员在系统应该做什么、不应该做什么方面达成一致。需求捕获的重大意义在于获得系统需求,建立待开发系统的模型,而用例可以帮助我们更好地了解系统需求并以规范化的格式进行描述。功能性需求很容易以用例的方式来表达,而大多数非功能性的需求都具体对应于单个用例,并可以在用例的详细描述文档中表现。其他的一些通用性的非功能性需求可以采用补充需求说明的方式列出,以便用于系统分析、设计工作。,53,一、需求捕获的基本概念,3需求捕获的主要原则需求捕获工作要解决的首要问题是如何使得需求的定义没有二义性,以便能与客户进行充分的交流。如果客户是计算机专家或具备基本的计算机知识,那么开发人员能够采用系统开发中的一些专用工具和方法来进行需求捕获和需求描述工作。但更普遍的情况是,客户根本不是计算机专家,甚至从未接触过计算机,此时,同样要求开发人员以一种清晰明了、简单易懂的方式来表达需求,并保证客户能够读懂并理解需求捕获工作的成果。因此,我们必须使用客户语言来描述这些结果,以便于客户的理解和与客户的交流。如果在需求捕获工作中要引入各种形式化描述或专业工具来表述系统需求或系统内部运作的细节时,一定要非常小心,要避免与客户交流的不畅,这样才能尽可能地避免因为不符合需求而带来的开发风险。,54,二、需求捕获的主要工作,需求捕获的主要工作主要包括以下四个步骤。获得候选需求:列举候选需求,生成候选需求清单;理解系统环境:以业务模型、领域模型或术语表的方式描述系统环境;捕获功能需求:采用用例模型来表达系统功能需求;捕获非功能需求:针对用例或整个系统建立特殊需求说明,也可以以特殊用例的方式来描述一些非功能需求。,55,二、需求捕获的主要工作,1获得候选需求在系统开发的整个生命周期中,系统投资者、用户、分析人员和开发人员等系统利益相关者都会不断地提出很多系统建设的想法,这些想法中可能会包含一些真正的系统需求。因此,分析人员需要及时地记录这些原始想法,把它们作为候选需求,并根据实际情况在后续的系统建设中有选择地实现它们。当有新的想法加入时,这份候选需求清单会增长,当有些候选需求被证实为无效或成为真正需求并进入系统开发过程中时,这份清单会缩减。,56,二、需求捕获的主要工作,1获得候选需求候选需求清单是需求捕获工作的第一个工作成果,在清单中,需要对每个候选需求进行描述。每个候选需求都有一个简短的名字和简要的解释,并可以包含一些对该需求进行详细描述的其他属性,可能包括的其他属性有:系统的状态、估计实现成本、优先级、可能带来的风险级别、对组织的影响范围。,57,二、需求捕获的主要工作,2理解系统的环境系统环境是系统所处的业务、技术环境的综合描述,包括对环境中的重要概念和过程的描述。采用领域模型描述领域中的主要概念和主要对象,并将这些对象按照它们的关系连接起来。确定这些对象并给这些对象命名有助于建立领域术语表,以确保参与系统的每个人都能够较好地根据领域知识进行交流。同时,在系统的分析和设计阶段,领域对象也有助于建立系统概念模型并确定相应的分析类。,58,二、需求捕获的主要工作,3捕获功能性需求系统需求可以以用例的方式来进行捕获,用例通过一种简明统一的方式表达系统的功能性需求和非功能性需求。用例实际上代表了系统用户能够执行的一种操作,是系统功能的体现,根据用例的优先级别的不同,不同的用例将被安排在不同的阶段进行实现和完成。,59,二、需求捕获的主要工作,4捕获非功能性需求非功能性需求确定了系统的性质,如环境和实现约束、性能、平台依赖、可维护性、可扩展性等性质。性能需求为系统的功能需求增加了一些新的约束和条件,如响应速度、可承担的负载、内存的占用、延迟时间等等。大多数性能需求是与单个用例相关联的,因此在描述用例时应该采用恰当的方式和恰当的语言来描述用例的性能需求。除此之外的一些非功能性需求,如平台依赖性、可维护性往往是针对整个系统或某个子系统而言的,而且会显得非常通用,因此不能与某个特定的用例或现实世界中的某个特定对象相关联。这时,可以采用补充需求说明的方式来记录这些非功能性需求并进行单独处理。,60,【案例6-2】财政部非贸易外汇管理信息系统的需求捕获(部分),61,第三节 电子政务系统分析,一、系统分析的基本概念二、系统分析的主要工作,62,一、系统分析的基本概念,1什么是系统分析 系统分析(System Analysis)是按照对象和概念对系统进行分解。形成系统分析的逻辑方案。系统分析关注对问题的深入调查,分析模型体现了对问题域的理解和建模。系统分析阶段是系统详细开发的关键性阶段,是确保每个子系统在服从全局的前提下,实现具体功能的重要基础,其关键在于“理解”和“表达”。“理解”是开发人员对系统需求的理解,这些需求既包括了用户明确表达出来的,也包括用户没有明确表达出来的。,63,一、系统分析的基本概念,2系统分析的意义与目的系统分析阶段,通过精化对组织需求捕获阶段所描述的需求进行深入分析,并得到一个易于维护且有助于确定系统结构的需求描述,即分析模型,分析模型有助于我们组织需求,并能提供一种侧重于可维护性的结构,例如具有对需求变化的柔性及可重用性。系统分析的主要目的是在系统规划规定的某个开发项目范围内明确系统开发的目标和用户的信息需求,提出系统的逻辑方案。,64,一、系统分析的基本概念,3系统分析的主要原则(1)采用图形方式,使分析方案易于沟通理解。(2)采用“自顶向下”的工作原则。(3)强调逻辑结构而不是物理实现(4)避免重复工作。,65,二、系统分析的主要工作,(一)功能分析需求捕获的主要工作是获得系统需求,建立待开发系统的模型,而用例可以帮助我们更好地了解系统需求并以规范化的格式进行描述。功能性需求很容易以用例的方式来表达,而大多数非功能性的需求都具体对应于单个用例,并可以在用例的详细描述文档中表现。其他的一些通用性的非功能性需求可以采用补充需求说明的方式列出,以便用于系统分析、设计和实现工作。,66,二、系统分析的主要工作,(一)功能分析1识别参与者和定义系统边界参与者是系统外部的一个实体,它以某种方式参与了用例的执行过程。参与者通过向系统输入和请求系统输出某些事件来触发系统用例的执行。一个参与者表示了用例的使用者在与这些用例交互时所扮演的角色的一个紧密的集合。一个参与者代表的角色可以是人或硬件设备,也可以是另一个系统。识别系统参与者后,要根据参与者的特性和系统开发的标准对系统参与者进行命名,一定要注意命名的有意义性和一致性,保证系统的可读性和可理解性。同时,可以根据需要对参与者的角色和参与者使用系统实现的功能进行简要描述,内容应包括对参与者的需求和责任的概述。,67,二、系统分析的主要工作,(一)功能分析2建立用例模型(1)用例的识别用例是对过程的描述,作为一个叙述型文档,用例描述了一个参与者使用本系统完成某个过程时的事件发生顺序,系统通过执行一组活动来为参与者产生一个可观察的结果。,68,二、系统分析的主要工作,(一)功能分析2建立用例模型(2)识别用例间关系在参与者和用例之间存在关联关系,这种关联可能是双向的(用例到参与者和参与者到用例的关系),也可能是单向的(用例到参与者的,或参与者到用例的)。关联关系的导航方向取决于谁是通信的发起者(即参与者初始化和用例的通信,或者是用例初始化和参与者的通信)。在用例之间存在的两种主要关系是:包含(include)或扩展(extend)。这两种关系也代表了对用例描述的抽象。多个用例可能使用同一个功能,这种用例最好分开单独建立,这样比在几个用例中实现相同的功能更好些。包含关系是建立在相同功能和其他使用这些功能的用例之间的,意味着所有其他的用例都可以使用这个具有同一功能的子用例。,69,二、系统分析的主要工作,(一)功能分析2建立用例模型(3)用例图首先可以根据不同的方式进行用例的组织,通常包括按照角色组织、按照系统的不同考察角度和不同层次等进行组织;第二步是确定共享的用例,进行用例抽象,从而定义用例之间的包含关系;第三步是确定各用例的扩展或可选部分,即定义用例之间的扩展关系。最后可以根据对每个用例的仔细分析进一步确定用例之间的其他关系,并对用例建立简要说明。,70,二、系统分析的主要工作,(一)功能分析2建立用例模型(3)用例图在建立了用例模型后,应该邀请开发组织外的人员进行非正式的评审,以确定建立的用例模型是否满足了系统需求,其主要判定条件包括:是否已经将所有必需的功能性需求捕获为用例;每个用例的具体动作序列是否是正确的、完整的和易于理解的;是否已经确定了一些价值很小或根本没有价值的用例,若有则需要重新考虑是否应该包含它们;用例的组织和用例之间的关系是否合理和正确。,71,二、系统分析的主要工作,(一)功能分析3用例排序按照迭代开发的观点,系统开发的任务分为多次迭代来完成,即分为多个开发周期来完成,每个开发周期会从事新的用例的开发,或者是对前一个或多个周期的扩展。开发周期是围绕用例来组织的,每个开发周期都是在实现部分用例的功能,因此,每个开发周期都将包含一个到多个用例。,72,二、系统分析的主要工作,(一)功能分析3用例排序 用例的分类是对用例按照一定的标准来进行类别划分或顺序排列,其目的是找出对系统最为重要的用例,确定高级别的用例集,并在早期的开发周期中优先完成,以降低整个系统开发的风险,提高系统开发成功率。用例分类可按照两个步骤来进行:定义用例的级别,根据用例对系统核心体系结构的影响将用例概要性地划分为三个级别主要的、次要的和可任选的;对每个级别内的用例按照功能实现的重要性进行排序,确定各级别中用例的先后完成次序。,73,二、系统分析的主要工作,(一)功能分析4用例的详细描述一个用例可以表达为多种不同的执行情况,对于一个用例来讲,会有一个基本的执行序列,但是大多数情况下,一个用例的执行会根据具体情况的不同存在多个不同的执行路径。关键用例包含了系统的关键风险所在,也是对系统架构影响最大的一个部分。在功能分析阶段需要对部分关键用例进行详细描述,以详细解释其事件流,包括用例如何开始、如何结束、开始和结束时的系统状态以及如何与参与者进行交互等等。,74,二、系统分析的主要工作,(一)功能分析5部分用例的界面原型在需求阶段进行界面原型的设计不是必需的,但是对于一些复杂用例或关键用例来讲,有一个系统界面雏形可以增进用户和开发人员之间的沟通和了解,能够使开发小组更准确地把握用户真正想要的东西,从而避免在开发完成后发生重大的需求变更。应该说,用例模型和用例的详细描述已经能够大体上反映客户需求了,但是由图标、列表、按钮和数据等组成的图形界面能够使用户更为真实地感受到用例为他们提供的功能,因此也能够使参与者更好地分析和评审用例。,75,二、系统分析的主要工作,(一)功能分析5部分用例的界面原型构建用户界面原型可以分两步来完成:界面分析对所选择的用例,确定参与者需要向用例提供什么以及从用例获得什么,即识别用例的输入输出,这样就可以了解用例需要显示或展现哪些内容;界面构建根据上一步工作建立用例界面原型,说明用户是如何与用例进行交互的,界面原型的构建可以直接用笔在纸上画,也可以通过一些计算机辅助工具来完成。,76,二、系统分析的主要工作,(二)域类分析域类分析的工作即在于表达系统内部视图,建立系统概念模型,从与应用实施无关的逻辑层来描述整个系统的结构和功能。域类分析阶段的主要工作成果是概念模型和顺序图,其中概念模型描述了从逻辑角度抽象分析得到的系统核心概念类,而顺序图是从与实施技术无关的角度来描述系统行为,但顺序图的描述不是分析阶段的重点。,77,二、系统分析的主要工作,(二)域类分析域类分析的主要工作内容1概念模型概念模型是对问题域中的概念或对象的描述,它将展示应用系统涉及领域的有意义概念及这些概念之间的关系,它是面向对象分析阶段的主要成果和产出,是下一步面向对象设计工作的基础和前提。识别与系统有关的一组对象或者概念是系统分析阶段的主要工作,在此基础上可以进一步分析对象或者概念的职责和对象或概念之间的关系,并形成利用UML类图来表示的概念模型。,78,二、系统分析的主要工作,(二)域类分析1概念模型在理解概念模型时,有三点需要特别注意:概念模型主要对系统领域中的有意义概念或对象进行描述,即仅描述开发人员或客户感兴趣的对象,系统领域涉及的其他一些与系统开发和建设无关的概念不应该出现在概念模型中,概念模型中描述的是真实世界中的各个事物的代表,而不是软件系统中的构件或者程序的代表,因此在建立概念模型时不应该考虑软件实施后的具体软件对象或概念,概念模型侧重于对系统进行静态描述,包括对象本身和对象之间关系的描述,而对象的动态特性将通过其他方式来进行描述和表达。,79,二、系统分析的主要工作,(二)域类分析域类分析的主要工作内容2概念识别概念或对象可以定义为客观世界中存在的事物,这种事物可以是真实存在的物质实体或抽象的概念,包括一个想法、事物或者对象。对于概念模型的建立,首先是要获得系统涉及领域的各个有意义概念,并分析各概念的有效属性。,80,二、系统分析的主要工作,(二)域类分析3类职责和系统行为描述职责是分析类(即概念模型中的概念)应该完成的任务或应该履行的义务的表述,职责与对象在行为上的动作或操作有密切关系。在面向对象的分析设计中,首先要识别职责,其次要根据一定的模式或规则来分配职责,即把职责分派给合适的对象。职责的粒度划分不一样,其表达和组成方式也不一样,广义上的职责可以是一个涉及面较宽的职责,可能需要许多个类和许多个方法才能实现,如“访问关系数据库”,这一职责的完成可能需要许多的对象和方法的支持。职责的识别可以通过对事件流的分析来完成。,81,二、系统分析的主要工作,(二)域类分析4类关系分析现实世界中的实体之间存在着各种各样的关系,如学校与各院系有一种包含关系,学生与课程有一种选课关系,这种关联关系是实体之间相互作用、相互影响的反映。在面向对象的分析设计中,需要对这些现实中的关联关系进行描述,并且要根据抽象的观点来进一步提升和表述各实体之间的潜在关系。,82,【案例6-3】财政部非贸易外汇管理信息系统的分析方案(部分),83,第四节 电子政务系统的设计,一、系统设计的基本概念二、系统设计的主要工作,84,一、系统设计的基本概念,(一)什么是系统设计系统设计(System Design)就是要提出合理的计算机硬件、软件系统的技术方案,采取具体的措施来满足用户需求。系统设计根据系统分析阶段完成的系统分析模型要求,并考虑经济、技术和运行环境等方面的条件,确定系统的总体结构和系统各组成部分的技术方案,合理选择计算机和通讯的软、硬件设备,提出系统的实施计划。,85,一、系统设计的基本概念,(一)什么是系统设计系统设计阶段的主要任务是从系统的总体目标出发,根据系统分析阶段对系统功能的逻辑要求,确定系统构架和运行方式,明确系统体系结构,并考虑到经济、技术和运行环境等方面的条件,确定系统的网络总体结构和系统各组成部分的技术方案,合理选择计算机和通信的软、硬件设备,提出系统的实施计划,确保总体目标的实现。系统设计是在系统分析的基础上由抽象到具体、从逻辑到物理的过程,该过程中还应该考虑到系统实现的内外环境和主客观条件。,86,一、系统设计的基本概念,(一)什么是系统设计 系统设计与系统分析阶段的工作相比,设计阶段的工作有以下几点的不同:设计阶段解决的是“如何做”的问题,而分析阶段解决的是“做什么”的问题;设计阶段的成果是物理模型,是实现的蓝图;分析阶段脱离技术细节,可针对不同的设计来进行,而设计工作针对特定的实现来进行,通用性差;设计工作的工作量更大,直接影响系统成败;通过代码生成工具,设计可以直接支持系统实现,生成系统框架代码。,87,一、系统设计的基本概念,(二)系统设计的意义与目的系统设计的重要意义在于深入理解与非功能性需求和约束相联系的构件重用、分布与并发技术、数据库技术、用户界面技术、事物管理技术等相关问题。系统设计阶段的主要目的是将系统分析阶段提出的、反映用户信息需求的系统逻辑方案,转换为可以实施的、基于计算机与通信系统的物理(技术)方案,并且能够比较容易地将方案转化成程序代码。系统设计的主要任务是提出合理的计算机硬、软件系统的技术方案,并采取具体的技术措施来满足用户需求,因而大量工作是技术性的。,88,一、系统设计的基本概念,(三)系统设计的主要原则(1)系统设计是系统分析的继承,系统设计师必须严按照系统分析阶段的成果所规定的目标、任务和逻辑功能进行设计工作。(2)系统的直接使用者是用户,进行系统设计时应充分尊重合理解用户的要求,特别是用户在操作使用方面的要求,经可能是用户感到满意。(3)系统的目标和现行的管理方法相匹配,与组织的改革与发展相适应。也就是说,要符合当前的需要,适应系统的工作环境。(4)系统设计中还应考虑现行系统的软、硬件状况和管理技术环境的发展趋势。,89,二、系统设计的主要工作,系统设计的工作主要包括系统构架设计、用例设计、系统静态结构设计(主要是类图设计)和动态行为设计(主要是顺序图设计)四个部分,其中系统构架设计主要是建立系统的体系结构,在系统结构上做出决策;用例设计是从物理技术的角度对用例进行细化,包括进行界面设计;类设计和顺序图设计是在系统分析阶段的工作成果的基础上进一步细化,成为与物理实现和技术细节相关的设计成果。但是,这四个部分内容并不是整个面向对象设计的全部,实际上,基于UML的系统设计还包括了状态图、配置图、活动图等多方面的内容,但这些方面的内容不是设计工作的重点,因此,这里只介绍了构架设计、用例设计、类设计和顺序图设计这四个最为重要的部分。,90,二、系统设计的主要工作,(一)构架设计所谓构架,是系统的整体框架和系统风格等多方面因素的选择。在面向对象的系统开发过程中,系统构架的搭建是贯穿在整个系统的开发过程中,是一个迭代和不断扩充的过程。系统构架设计的工作主要是确定系统整体框架,进行包(或子系统)的划分和层次划分。构架设计的目的在于通过识别子系统、确认系统各层内容、识别对构架有重要意义的设计类等来确定系统的整体框架。,91,二、系统设计的主要工作,(一)构架设计1把握关键功能软件构架的作用在本质上与基本构架在建筑物结构中所起的作用是一样的,它体现了系统最为静态和动态的方面。基本构架根