新版教程学习笔记(二)

信息系统项目管理师2019-02-10 16:42:26


1.2 信息系统开发方法





信息系统是一个极为复杂的人机交互系统,它不仅包含计算机技术、通信技术和网络计划,以及其他的工程技术,而且,它还是一个复杂的管理系统,需要管理理论和方法的支持。因此,与其他工程项目相比,信息系统工程项目的开发和管理显得更加复杂所面临的风险也更大。同时,由于我国开展信息化工作的时间并不长,用户基础比较薄弱弱,发达地区和边地区还存在一些差别,市场变化很大。那么,如何选择一个合适的开发方法法,以保证在多变的市场环境下,在既定的预算和时间要求范围内,开发出让用户满意的信息系统,这是项目经理所必须要面临的问题。

信息系统的开发需要大量的人力、物力、财力和时间的投入。在系统开发时,为了更好地控制时间、质量、成本,并使用户满意,除了技术、管理等因素外,系统开发方法也起着很重要的作用。

常用的开发方法包括结构化方法、面向对象方法、原型化方法、面向服务的方法等。


1.2.1结构化方法


结构是指系统内各个组成要素之间的相互联系、相互作用的框架。结构化方法也称为生命周期法,是一种传统的信息系统开发方法,由结构化分析( Structured analysis,SA)、结构化设计( Structured design,SD)和结构化程序设计( Structuredprogramming,SP)三部分有机组合而成,其精髓是自顶向下、逐步求精和模块化设计。

结构化方法假定待开发的系统是一个结构化的系统,其基本思想是将系统的生命周期划分为系统规划、系统分析、系统设计、系统实施、系统维护等阶段。这种方法道循系统工程原理,按照事先设计好的程序和步骤,使用一定的开发工具,完成规定的文档,在结构化和模块化的基础上进行信息系统的开发工作。结构化方法的开发过程一般是先把系统功能视为一个大的模块,再根据系统分析与设计的要求对其进行进一步的模块分解或组合,总结起来,结构化方法的主要特点列举如下:

(1)开发目标清晰化。结构化方法的系统开发遵循“用户第一”的原则,开发中要保持与用户的沟通,取得与用户的共识,这使得信息系统的开发建立在可靠的基础之上。

在开发过程中,开发人员应该始终与用户保持联系,从调查研究入手,充分理解用户的需求和业务活动,不断地让用户了解工作的进展情况,校准工作方向。

(2)开发工作阶段化。结构化方法每个阶段的工作内容明确,注重对开发过程的控制。每个阶段工作完成后,要根据阶段工作目标和要求进行审查,这使各阶段工作有条不素地进行,便于项目管理与控制。

(3)开发文档规范化。结构化方法每个阶段工作完成后,要按照要求完成相应的文档,以保证各个工作阶段的衔接与系统维护工作的便利。

(4)设计方法结构化。在系统分析与设计时,从整体和全局考虑,自顶向下地分解,在系统实现时,根据设计的要求,先编写各个具体的功能模块,然后自底向上逐步实现整个系统。

结构化方法是目前最成熟、应用较广泛的一种工程化方法,它特别适合于数据处理领域的问题,但不适应于规模较大、比较复杂的系统开发,这是因为结构化方法具有以下不足和局限性:

(1)开发周期长。采用结构化方法进行系统开发,按照顺序历经各个阶段,直到系统实施阶段结束后,用户才能使用系统。业界将这种现象形象地比喻为“只闻其声,不见其人”。这样,一方面使用户在较长的时间内不能得到(甚至无法感觉到)一个可实际运行的物理系统:另一方面,由于开发周期长,系统的环境(例如,市场环境、业务结构等)必定会有变化,这就使得最后开发出来的系统在投入使用之前就已经面临淘汰,这种种系统难以适应环境变化。

(2)难以适应需求变化。在信息系统集成项目中,用户需求的变化是不可避免的,然而,结构化方法要求分析师在系统分析阶段充分掌握和理解用户需求。否则,如果在系统分析阶段需求不明确,或者需求经常变更,就会导致后续的开发过程返工甚至无法进行,这是很多信息系统集成项目失败的主要原因之一,因为分析师不一定是用户业务领域的行业专家,可能与用户“隔行如隔山”,交流起来比较困难,想一次性就准确描述用户的的需求的企图注定是个幻想。

(3)很少考虑数据结构。结构化方法是一种面向数据流的开发方法,比较注重系统功能的分解与抽象,兼顾数据结构方面不多。尽管结构化方法也包括数据建模和数据库设计,但它仍是以模块为系统开发的核心环节,而且,从SA阶段的数据流图到SD阶段的模块结构图的转变也比较困难。

以上问题在实际应用中有的已经解决,同时也产生了其他一些方法,例如,原型法、面向对象方法等。


1.2.2面向对象方法


面向对象( Object - Oriented,OO)方法认为,客观世界是由各种对象组成的,任何事物都是对象,每一个对象都有自己的运动规律和内部状态,都属于某个对象类,是该对象类的一个元素。复杂的对象可由相对简单的各种对象以某种方式而构成,不同对象的组合及相互作用就构成了系统。

OO方法是当前的主流开发方法,拥有很多不同的分支体系,主要包括OMT( ObjectModel technology,对象建模技术)方法、 Coad / Yourdon方法、OOSE( Object - Oriented

 Software Engineering,面向对象的软件工程)方法和 Booch方法等,而OMT、OOSE和Booch已经统一成为UML( United modellanguage,统一建模语言)。

使用OO方法法构造的系统具有更好的复用性,其关键在于建立一个全面、合理、统一的模型(用例模型与分析模型)。与结构化方法类似,OO方法也划分阶段,但其中的系统分析、系统设计和系统实现三个阶段之间已经没有“缝隙”。也就是说,这三个阶段的界限变得不明确,某项工作既可以在前一个阶段完成,也可以在后一个阶段完成:前阶段工作做得不够细,在后一个阶段可以补充。

OO方法使系统的描述及信息模型的表示与客观实体相对应,符合人们的思维习惯,有利于系统开发过程中用户与开发人员的交流和沟通,缩短开发周期。OO方法可以普遍适用于各类信息系统的开发,但是,OO方法也存在明显的不足。例如,必须依靠一定的OO技术支持,在大型项目的开发上具有一定的局限性,不能涉足系统分析以前的开发环节。

当前,一些大型信息系统的开发,通常是将结构化方法和O0方法结合起来。首先,使用结构化方法进行自项向下的整体划分;然后,自底向上地采用O0方法进行开发。因此,结构化方法和OO方法仍是两种在系统开发领域中相互依存的、不可替代的方法。


1.2.3原型化方法


结构化方法和面向对象方法有一个共同点,即在系统开发初期必须明确系统的功能要求,确定系统边界。从工程学角度来看,这是十分自然的:解决问题之前必须明确要解决的问题是什么。然而,对于信息系统建设而言,明确问题本身不是一件轻松的事情。

原型化方法也称为快速原型法,或者简称为原型法。它是一种根据用户初步需求,利用系统开发工具,快速地建立一个系统模型展示给用户,在此基础上与用户交流,最终实现用户需求的信息系统快速开发的方法。

1.原型的概念和分类

通常,原型是指模拟某种产品的原始模型。在系统开发中,原型是系统的一个早期可运行的版本,它反映最终系统的部分重要特性。如果在获得一组基本需求说明后,通过快速分析构造出一个小型的系统,满足用户的基本要求,使得用户可在试用原型系统的过程中得到亲身感受和受到启发,做出反应和评价,然后开发者根据用户的意见对原型加以改进。随着不断试验、纠错、使用、评价和修改,获得新的原型版本,如此周而复始,逐步减少分析和通信中的误解,弥补不足之处,进一步确定各种需求细节,适应需求的变更,从而提高了最终产品的质量。

从原型是否实现功能来分,可分为水平原型和垂直原型两种。水平原型也称为行为原型,用来探索预期系统的一些特定行为,并达到细化需求的目的。水平原型通常只是功能的导航,但并未真实实现功能。水平原型主要用在界面上;垂直原型也称为结构化原型,实现了一部分功能。垂直原型主要用在复杂的算法实现上,从原型的最终结果来分,可分为抛弃式原型和演化式原型。抛弃式原型也称为探索式原型,是指达到预期目的后,原型本身被抛弃。抛弃式原型主要用在解决需求不确定性、二义性、不完整性、含糊性等;演化式原型为开发增量式产品提供基础,逐步将原型演化成最终系统。主要用在必须易于升级和优化的场合,特别适用于Web项目。

2.原型法的开发过程

 确定用基本需求。在需求分析和用密配合下,快速确定系的基本需些需求可能是不完全的、粗略的,但却是最基本的、易于描述和定的。这个阶段一般不外的正式文,但于大型系而言应该形成一初步

需求文档。

设计系统初始原型。在快速分析的基础上,根据基本需求,尽快实现一个可运行的系统。构造原型时要注意两个基本原则,即集成原则(尽可能用现有系统和模型来构成,这需要相应的原型工具)和最小系统原则(耗资一不超过总投资的10%)。

试用和评价原型。用户在开发人员的协助下试用原型,根据实际运行情况,评价系统的优点和不足,指出存在的问题,进一步明确用户需求,提出修改意见。

修改和完善原型。根据修改意见和新的需求进行修改。如果用修改原型的过程代替快速分析,就形成了原型开发的迭代过程。开发人员和用户在一次次的选代过程中不断将原型完善,以接近系统的最终要求整理原型、提供文档。如果经过修改或改进的原型,得到参与者一致认可,则原型开发的迭代过程可以结束。

根据以上介绍可知,利用原型法可为系统开发提供一种完整的、灵活的、近似动态的需求规格说明方法。

3.原型法的特点

从原型法的开发过程可以看出,原型法从原理到流程都是十分简单的,并无任何高深的理论和技术,所以得到了广泛应用。原型法的特点主要体现在以下几个方面:

原型法可以使系统开发的周期缩短、成本和风险降低、速度加快,获得较高的综合开发效益。

原型法是以用户为中心来开发系统的,用户参与的程度大大提高,开发的系统符合用户的需求,因而增加了用户的满意度,提高了系统开发的成功率。

由于用户参与了系统开发的全过程,对系统的功能和结构容易理解和接受,有利于系统的移交,有利于系统的运行与维护。

但是,作为一种开发方法,原型法也不是万能的,它也有不足之处,主要体现在以下两个方面:

开发的环境要求高,例如,开发人员和用户的素质、系统开发工具、软硬件设备等,特别是原型法需要快速开发工具的支持,开发工具的水平是原型法能否顺利实施的第一要素。原型法成败的关键及效率的高低,在于原型构建的速度、管理水平要求高。系统的开发缺乏统一的规划和开发标准,难以对系统的开发过程进行控制。例如,如何确定用户的满意程度,如何控制对系统原型的修改次数等,都是较难协调的问题。

由以上的分析可以看出,原型法的优点主要在于能更有效地确认用户需求。从直观上来看,原型法适用于那些需求不明确的系统开发。事实上,对于分析层面难度大、技术层面难度不大的系统,适合于原型法开发:而对于技术层面的困难远大于其分析层面的系统,则不宜用原型法。

从严格意义上来说,目前的原型法不是一种独立的系统开发方法,而只是一种开发思想,它只支持在系统开发早期阶段快速生成系统的原型,没有规定在原型构建过程中必须使用哪种方法。因此,它不是完整意义上的方法论体系。这就注定了原型法必须与其他信息系统开发方法结合使用,用原型法进行需求获取和分析,以经过修修改改、确定的原型系统作为系统开发的依据,在此基础上完善用户需求规格说明书。


1.2.4面向服务的方法


OO的应用构建在类和对象之上,随后发展起来的建模技术将相关对象按照业务功能进行分组,就形成了构件( Component)的概念。对于跨构件的功能调用,则采用接口的形式暴露出来。进一步将接口的定义与实现进行解耦,则催生了服务和面向服务( Service- Oriented,SO)的开发方法。

从应用的角度来看,组织内部、组织之间各种应用系统的互相通信和互操作性直接影响着组织对信息的掌握程度和处理速度。如何使信息系统快速响应需求与环境变化提高系统可复用性、信息资源共享和系统之间的互操作性,成为影响信息化建设效率的关键问题,而SO的思维方式恰好满足了这种需求。

目前,SO方法是一个较新的领域,许多研究和实践还有待进一步深入。但是,它代表着不拘混于具体技术实现方式的一种新的系统开发思想,已经成为信息系统建设的大趋势,越来越多的组织开始实施SO的信息系统。