本文主要是介绍[架构之路-145]-《软考-系统分析师》- 7-企业信息化战略与实施-2-信息系统开发方法:架构化方法、面向对象方法、面向服务方法、原型开发方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
第 7 章企业信息化战略与实施
古人云:“学以致用”。一切技术都是因应用而生,为应用服务,信息技术也不例外。
系统分析与设计技术最终是要为企业(本书中的“企业”泛指公司、工厂、政府机构、 各类组织、各类事业单位等)信息化服务的,企业信息化的广阔领域就是系统分析师的 用武之地。因此,作为c i o 的最佳候选人,系统分析师必须掌握有关企业信息化的基础 知识,熟悉信息系统建设的基本方法和流程。
企业要应对全球化市场竞争的挑战,特别是大型企业要实现跨地区、跨行业、跨所 有制、跨国经营的战略目标,要实施技术创新战略、管理创新战略和市场开拓战略,要将企业工作重点转向技术创新、管理创新和制度创新的方向上來,信息化是必然的选择 和必要的手段。
本文重点阐述:软件信息系统的开发方法,即信息化的技术手段和方法!!!
7 . 3 信息系统开发方法
信息系统是一个极为复杂的人机交互系统,它不仅包含计算机技术、通信技术和网络计划,以及其他的工程技术,而且,它还是一个复杂的管理系统,需要管理理论和方 法的支持。因此,与其他工程项目相比,信息系统工程项目的开发和管理显得更加复杂, 所面临的风险也更大。
同时,由于我国幵展信息化工作的时间并不长,用户基础比较薄弱,发达地区和边 远地区还存在一些差别,市场变化很大。那么,如何选择一个合适的开发方法,以保证 在多变的市场环境下,在既定的预算和时间要求范围内,开发出让用户满意的信息系统, 这是系统分析师所必须要面临的问题。
7.3.1 结构化方法
结构是指系统内各个组成要素之间的相互联系、相互作用的框架。
结构化方法也称为生命周期法,是一种传统的信息系统开发方法,由结构化分析(Structured Analysis,S A)、结构化设计(StructuredDesign,S D)和结构化程序设计(StructuredProgramming,S P) 三部分有机组合而成,其精髓是自顶向下、逐步求精和模块化设计。
结构化方法假定待开发的系统是一个结构化的系统,即假定万事万物都是按照某种结构有机地组织起来的。
其基本思想是将系统的生命周期划分为:系统规划、系统分析、系统设计、系统实施、系统维护等阶段。这种方法遵循系统工程原理,按照事先设计好的程序和步骤,使用一定的开发工具,完成规定的文档,在结构化和模块化的基础上进行信息系统的开发工作。
结构化方法的幵发过程一般是先把系统功能视为一个大的模块,再根据系统分析与设计的要求对其进行进一步的模块分解或组合。
1. 结构化方法的特点
结构化方法的主要特点是:
( 1 ) 开发目标清晰化。
结构化方法的系统幵发进循“用户第一”的原则,开发中要保持与用户的沟通,取得与用户的共识,这使得信息系统的幵发建立在可靠的用户需求基础之上。
在开发过程中,开发人员应该始终与用户保持联系,从调査研究入手,充分理解用户的需求和业务活动,不断地让用户了解工作的进展情况,校准工作方向。
( 2 ) 开发工作阶段化。
结构化方法每个阶段的工作内容明确,注重对开发过程的控 制。每个阶段工作完成后,要根据阶段工作目标和要求进行审查,这使各阶段工作有条
不紊地进行,便于项目管理与控制。
( 3 ) 开发文档规范化。
结构化方法每个阶段工作完成后,要按照要求完成相应的文 档,以保证各个工作阶段的衔接与系统维护工作的便利。
(4) 设计方法结构化。
在系统分析与设计时,从整体和全局考虑,自顶向下地分解;
在系统实现时,根据设计的要求,先编写各个具体的功能模块,然后自底向上逐步实现 整个系统。
2 . 结构化分析
3. 结构化设计
4. 结构化程序设计、架构化编程
5 . 结构化方法的缺点
结构化方法是目前最成熟、应用较广泛的一种工程化方法,它特别适合于数据处理领域的问题,但不适应于规模较大、比较复杂的系统开发。
结构化方法的主要不足和局限性体现在以下儿个方面:
( 1 ) 开发周期长。
采用结构化方法进行系统开发,按照顺序历经各个阶段,直到系 统实施阶段结束后,用户才能使用系统。业界把这种现象形象地比喻为“只闻其声,不
见其人”。这样,一方面使用户在较长的时间内不能得到(甚至无法感觉到)一个可实际运行的物理系统;另一方面,由于开发周期长,系统的环境(例如,市场环境、业务结 构等)必定会有变化,这就使得最后幵发出来的系统在投入使用之前就己经面临淘汰, 这种系统难以适应环境变化。
( 2 ) 难以适应需求变化。
在信息系统项目中,用户需求的变化是不可避免的,然而,结构化方法要求系统分析师在系统分析阶段充分掌握和理解用户需求。否则,如果在系统分析阶段需求不明确,或者需求经常变更,就会导致后续的开发过程返工甚至无法进 行。这是很多信息系统项目失败的主要原因之一,因为系统分析师不一定是用户业务领 域的行业专家,可能与用户“隔行如隔山”,交流起来比较困难,想一次性就准确描述用 户的需求的企图注定是个幻想。
(3)很少考虑数据结构。
结构化方法是一种面向数据流的幵发方法,比较注重系统功能的分解与抽象,兼顾数据结构方面不多。尽管结构化方法也包括数据建模和数据库 设计,但它仍是以模块为系统开发的核心环节,而且,从S A阶段的D F D到S D阶段的模块结构图的转变也比较困难。
以上问题在实际应用中有的已经解决,同时也产生了其他一些方法,例如,原型法、面向对象方法等。
6 .结构化方法的贡献
结构化方法属于自顶向下的开发方法,强调开发方法的结构合理性,以及所开发系 统的结构合理性,它提出了一组提高系统结构合理性的准则,例如,分解与抽象、模块 独立性、信息隐蔽等。这些准则不但可以用在结构化方法中,也可以用在其他的开发方 法中。例如,信息隐蔽就是面向对象方法的一个核心思想。
结构化方法的另一个贡献在于,它明确划分了系统规划、系统分析、系统设计、系 统实施、系统维护等阶段,后来发展的一些开发方法,从本质上还是遵循着这些阶段, 只是在每个阶段所使用的工具和技术不同而己。
7.3.2 面向对象方法
面向对象(Object-Oriented, OO)方法认为,客观世界是由各种“对象”组成的,任何事物都是对象,每一个对象都有自己的运动规律和内部状态,都属于某个对象“类”,是该对象类的一个元素。复杂的对象可由相对简单的各种对象以某种方式而构成,不同对象的组合及相互作用就构成了系统。OO方法是当前的主流开发方法,拥有很多不同的分支体系,主要包括O M T (Object Model Technology,对象建模技术)方法、Coad/Yourdon 方法、 O O S E (Object-Oriented Software Engineering,面向对象的软件工程)方法和B o o c h方法等,而O M T、0 0S E和Booch 已经统一成为统一建模语言(United Model Language,U M L)。
1 .基本概念
(1) 对象。
在计算机系统中,对象是指一组属性及这组属性上的专用操作的封装体。 属性可以是一些数据,也可以是另一个对象。每个对象都有它自己的属性值,表示该对象的状态,用户只能看见对象封装界面上的信息,对象的内部实现对用户是隐蔽的。一个对象通常可由三部分组成,即对象名、属性和方法。
( 2 ) 类。
类是一组具有相同属性和方法的对象的集合。一个类中的每个对象都是这 个类的一个实例(instance)。在系统分析和设计时,通常要把注意力集中在类上,而不是具体的对象上。每个类一般都有实例,没有实例的类是抽象类。抽象类不能被实例化 (不能用n e w 关键字去产生对象), 抽象方法只需声明,而不需实现。是否建立了丰富 的类库是衡量一个0 0 程序设计语言成熟与否的重要标志之一。
( 3 ) 继承。
继承是在某个类的层次关联中不同的类共享属性和方法的一种机制。父 类与子类的关系是一般与特殊的关系,一个父类可以有多个子类,这些子类都是父类的 特例。父类描述了这些子类的公共属性和方法,子类还可以定义它自己的属性和方法。 一个子类只有唯一的父类,这种继承称为单一继承;一个子类有多个父类,可以从多个 父类中继承特性,这种继承称为多重继承。对于两个类A 和 B ,如 果 A 是 B 的子类, 则 B 是 A 的 泛 化 (generalization)。继承是0 0 方法区别于其他方法的一个核心思想。
( 4 ) 封装。
面向对象系统中的封装单位是对象,对象之间只能通过接口进行信息交 流,对象外部不能对对象中的数据随意地进行访问。封装的目的是使对象的定义和实现 分离,这样,就能减少耦合,类内部的实现可以自由改变而不会影响其他的类或对象。 同时,类具有严密的接口保护,使对象的属性或服务不会随意地被使用,对象的状态易 于控制,可靠性随之增强。
( 5 ) 消息。
消息是对象之间通信的手段,一个对象通过向另一个对象发送消息来请 求其服务。一个消息通常包括以下信息:提供服务的对象标识、服务类型和相关参数(输 入信息和回答信息)。要求服务的消息具有特定的格式和输入参数,这种规定也称为消息 协议。消息只告诉接收对象需要完成什么操作,但并不指示接收对象怎样去完成这个 操作。
( 6 ) 多态。
多态是指同一个操作作用于不同的对象时可以有不同的解释,并产生不N 的执行结果。
多态有多种不同的形式,其中参数多态(同一对象、方法能以一致的形 式用于不同的类型)和包含多态(定义于不同类中的同名方法的多态行为)统称为通用多态,过载多态(同一方法名表示不同的功能)和强制多态(通过语义操作把一个属性 的类型加以改变)称为特定多态。
从实现的角度来看。
多态可划分为两类,即编译时的多态和运行时的多态。前者是在编译的过程中确定了同名方法的具体操作对象,而后者则是在程序运行过程中才动态确定方法所针对的具体对象。
按照绑定进行阶段的不同, 是以分为两种不同方法,即静态绑定和动态绑定,这两种绑定过程分别对应着多态的两种实现方式。
2. OO方法的过程
与结构化方法类似,面向对象方法也包括:
- 面向对象的分析(Object-Oriented Analysis, 0 0 A )、
- 面 向 对 象 的 设 计 (Object-Oriented D e s i g n , O O D ) 和
- 面向对象的程序设计 (Object-O r i e n t e d P r o g r a m m i n g,O O P ) 三个阶段。
OO A 的任务是了解问题域所涉及的对象、对象间的关系和操作,然后构造问题领域的对象模型。问题域是指一个包含现实世界事物与概念的领域,这些事物和概念与所设计的系统要解决的问题有关。在这个过程中,抽象是最本质和最重要的方法。针对不同的问题,可以选择不同的抽象层次,过简或过繁都会影响到对问题的本质属性的了解和解决。 有关O O A 的详细知识,将 在 11.5节中介绍。
在分析对象模型的基础上,设计各个对象、对象之间的关系(例如,层次关系、 继承关系等)和通信方式(例如,消息模式)等,其主要作用是对O O A 的结果作进一 步的规范化整理,以便能够被O O P 直接接受。有 关 O O D 的详细知识,将 在 13.4节中 介绍。 .
O O P 指系统功能的编码,实现在0 0 D 阶段所规定的各个对象所应完成的任务。它包括每个对象的内部功能的实现,确立对象哪一些处理能力应在哪些类中进行描述,确 定并实现系统的界面、输出的形式等。有关O O P 的详细知识,将 在 14.1节中介绍。 另外,由于0 0 方法所幵发出来的系统具有其自身的特征,与结构化系统相比,对 于面向对象系统的测试(Object OrientedTesting,O O T ) 也需要采用不N 的技术和方法。 0 0 T 目前也逐渐独立出来,成为一个学科分支。有关这方面的详细知识,将 在 14.4节 中介绍。
3 . Coad/Yourdon 方法
C o a d /Y o u r d o n方法特别强调O O A 和 0 0 D 釆用完全一致的概念和表示法,使分析和 设计之间不需要表示法的转换。该方法的特点是表示简炼、易学,对于对象、结构、服 务的认定较系统、完整,可操作性强。 在 C o a d /Y o u r d o n方法中,0 0 A 的任务主要是建立问题域的分析模型。分析过程和 构 造 O O A 概念模型的顺序由5 个层次组成,分别是类与对象层、属性层、操作层、结 构层和主题层,它们分别表示分析的不同侧面。0 0 A 需要经过5 个步骤来完成整个分析 工作,即标识对象类、标识结构与关联(包括继承、聚合、组合、实例化等)、划分主题、 定义属性和定义操作。
O O D 中将继续贯穿O O A 中的5 个层次和5 个活动,它由4 个部分组成,分别是人 机交互组件、问题域组件、任务管理组件和数据管理组件,其主要的活动就是这4 个组 件的设计工作。
4. Booch 方法
B o o c h 最先描述了 0 0 方法的基础问题,指出0 0 方 法 是 一 种 基于于 传 统 的 功 能分解的设计方法。0 0 的系统分解更接近人对客观亊务的理解,而功能分解只通过问 题空间的转换来获得。
B o o c h 认为系统开发是一个螺旋上升的过程,每个周期包括4 个步骤,分别是标识• 类和对象、确定类和对象的含义、标识关系、说明每个类的接口和实现。
B o o c h 方法的 幵发模型包括静态模型和动态模型,静态模型分为逻辑模型(类图、对象图)和物理模 型 (模块图、进程图),用来描述系统的构成和结构。动态模型包括状态图和顺序图,用 来描述对象的状态变化和交互过程。有关这些图形的详细知识,将 在 11.5.1节中介绍。
5. OMT方法
O M T 方法使用了建模的思想,讨论如何建立一个实际的应用模型,包括对象模型、 动态模型和功能模型。对象模型描述系统中对象的静态结构、对象之间的关系、属性和 操作,主要用对象图来实现;动态模型描述与时间和操作顺序有关的系统特征,例如, 激发事件、事件序列、确定事件先后关系的状态等,主要用状态图来实现动态模型、;功 能模型描述一个计算如何从输入值得到输出值,它不考虑计算的次序,主 要 用 D F D 来 实现功能模型。简单地说,功能模型指出发生了什么,动态模型确定什么时候发生,而 对象模型确定发生的客体。
O M T 方法通常包括4 个活动:系统分析、系统设计、对象设计和实现。其中,分 析就是实现O O A 的任务,系统设计确定整个系统的架构,对象设计建立基于分析模型 的设计模型并考虑实现细节,实现是将所设计的对象类及其关系转换为程序设计语言、 数据库或硬件的实现。
6. OOSE
O O S E 在 O M T 的基础上,对功能模型进行了补充,提出了用例(use case) 的概念, 最终取代了 D F D 来进行需求分析和建立功能模型。O O S E 方法采用5 类模型来建立目标 系统,即需求模型、分析模型、设计模型、实现模型和测试模型。
O O S E 的开发活动主要分为三类:分析、构造和测试。其中分析过程分为需求分析 和健壮性分析两个子过程,分析活动分别产生需求模型和分析模型;构造活动包括设计 和实现两个子过程,分別产生设计模型和实现模型;测试过程包括单元测试、集成测试 和系统测试三个过程,共同产生测试模型。 用例是Q O S E 中的重要概念,在开发各种模型时,它是贯穿O O S E 活动的核心,描 述了系统的需求及功能。用例实际上是描述系统参与者(既可以是用户,也可以是与系 统交互的其他系统)对于系统的使用情况,是从参与者的角度来确定系统的功能。因此, 首先必须分析、确定系统的参与者,然后进一步考虑参与者的主要任务和使用方式,再 识别出所使用的事件,即用例。有关用例图的知识,将 在 11.5.1节中介绍;有关用例模 型的知识,将 在 11.5.2节中介绍。
7 . 与结构化方法的结合
0 0 方法使系统的描述及信息模型的表示与客观实体相对应,符合人们的思维习惯, 有利于系统开发过程中用户与开发人员的交流和沟通,缩短幵发周期,提供系统幵发的 正确性和效率。
0 0 方法可以普遍适用于各类信息系统的幵发,但是,0 0 方法也存在明 显的不足。例如,必须依靠一定的〇〇技术支持,在大型项冃的开发上具有一定的局限 性,不能涉足系统分析以前的开发环节。
当前,一些大型信息系统的幵发,通常是把结构化方法和〇〇方法结合起来。
首先, 使用结构化方法进行自顶向下的整体划分;
然后,自底向上地采用〇〇方法开发系统。
因此,结构化方法和〇〇方法仍是两种在系统开发领域中相互依存的、不可替代的方法。
本书后续章节有关系统分析、系统设计、系统测试等内容中,将分别包含这两种方法的 介绍,以便读者N 时理解这两种方法,并比较它们各自的优势和缺点。
7 . 3 . 3面向服务方法
0 0 的应用构建在类和对象之上,随后发展起来的建模技术将相关对象按照业务功 能进行分组,就形成了构件(c o m p o n e n t ) 的概念。对于跨构件的功能调用,则采用接口 的形式暴露出来。
进一步将接口的定义与实现进行解耦,则催生了服务和面向服务 (Service-Oriented,S O ) 的开发方法。
由此可见,面向对象、基于构件、面向服务是三个递进的抽象层次。
从企业应用的角度来看,企业内部、企业与企业之间各种应用系统的互相通信和互 操作性直接影响着企业对信息的掌握程度和处理速度。如何使信息系统快速响应需求与 环境变化,提高系统可复用性、信息资源共享和系统之间的互操作性,成为影响企业信 息化建设效率的关键问题,而 S O 的思维方式恰好满足了这种需求。
1 . 服务的概念
万维网联盟(W o r l d W i d e W e b C o nsortium, W 3C ) 将服务定义为“服务提供者完成 一组工作,为服务使用者交付所需的最终结果”。
服务是一种为了满足某项业务需求的操 作、规则等的逻辑组合,它包含一系列有序活动的交互,为实现用户目标提供支持。 服务的概念很容易与对象的概念相混淆。事实上,对象主要是面向系统的,侧重描 述的是程序概念上的内容;而服务是面向业务的,总是与业务紧密联系。此外,对象的粒度级別主要集中在类级,这种程度的抽象级别对于业务服务来说则显得过低;服务从 更广泛、更整体的角度来对待功能的实现,并使用与实现细节无关的标准化接口来构建。
服务给业务带来了灵活性和敏捷性,它们通过松散耦合、封装和信息隐藏使重构更加容 易。有关服务的详细知识,将 在 12.5.1节中介绍。
2. S O 分析与设计
S O 方法有三个主要的抽象级别:操作、服务和业务流程。
位于最低层的操作代表 单个逻辑单元的事物,执行操作通常会导致读、写或修改一个或多个持久性数据。服务的操作类似于对象的方法,它们都有特定的结构化接口,并且返回结构化的响应;
位于 第二层的服务代表操作的逻辑分组;
最高层的业务流程则是为了实现特定业务目标而执 行的一组长期运行的动作或活动,包括依据一组业务规则按照有序序列执行的一系列操 作。其中操作的排序、选择和执行成为服务或流程的编排,典钽的情况是调用己编排的 服务来响应业务事件。
从建模的观点来看,s o 带来的主要挑战是如何描述操作、服务和流程抽象的特征, 以及如何系统地构建它们。针对这个问题,O l a f z i m m e r m a n n和Pal K r o g d a h l综合了 O O A 、 0 0 D 、企业架构(Enterprise Architecture, E A )和业务流程建模(Business Process M o d e l i n g,B P M ) 中的适当原理,将这些规则中的原理与许多独特的新原理组合起来,提出了面向
3. 服务建模
4 . 与 0 0 方法的比较
7 . 3 . 4 原型化方法
结构化方法和面向对象方法有一个共同点,即在系统幵发初期必须明确系统的功能要求,确定系统边界。
从工程学角度来看,这是十分自然的:解决问题之前必须明确要 解决的问题是什么。
然而,对于信息系统建设而言,明确问题本身不是一件轻松的事情。
原型化方法也称为快速原型法,或者简称为原型法。它是一种根据用户初步需求, 利用系统开发工具,快速地建立一个系统模型展示给用户,在此基础上与用户交流,最终实现用户需求的信息系统快速开发的方法。
必须使用哪种方法。因此,它不是完整意义上的方法论体系。
这就注定了原型法必须与 其他信息系统开发方法结合使用,用原型法进行需求获取和分析,以经过修改、确定的 原型系统作为系统开发的依据,在此基础上完善用户需求规格说明书。
这篇关于[架构之路-145]-《软考-系统分析师》- 7-企业信息化战略与实施-2-信息系统开发方法:架构化方法、面向对象方法、面向服务方法、原型开发方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!