信息系统开发方法
信息系统开发方法
如何选择一个合适的开发方法,以保证在多变的市场环境下,在既定的预算和时间要求范围内,开发出让用户满意的信息系统,这是系统分析师所必须要面临的问题。
结构化方法
结构化方法也称为生命周期法,是一种传统的信息系统开发方法
结构化方法的过程
结构化方法由结构化分析(Structured Analysis,SA)、结构化设计(Structured Design,SD)和结构化程序设计(Structured Programming,SP)三部分有机组合而成,其精髓是自顶向下、逐步求精和模块化设计。
结构化分析
SA就是根据分解与抽象的原则,按照系统中数据处理的流程,用数据流图(Data Flow Diagram,DFD)来建立系统的功能模型,从而完成需求分析。
SA方法给出了一组帮助系统分析师产生需求规格说明的方法与技术,一般利用图形来表达用户需求,使用的手段主要有DFD、数据字典(Data Dictionary,DD)、结构化语言、判定表及判定树等
结构化设计
SD可以进一步细分为概要设计和详细设计两个阶段,它根据模块独立性原则和系统结构准则,将DFD转换为系统结构图(也称为模块结构图或控制结构图)。
结构化程序设计
SP就是使用某种程序设计语言,将每个模块的功能用相应的标准控制结构(顺序结构、选择结构、循环结构)表示出来,从而实现整个系统。
结构化方法的特点
开发目标清晰化。
结构化方法的系统开发遵循“用户第一”的原则,开发中要保持与用户的沟通,取得与用户的共识,这使得信息系统的开发建立在可靠的基础之上。在开发过程中,开发人员应该始终与用户保持联系,从调查研究入手,充分理解用户的需求和业务活动,不断地让用户了解工作的进展情况,校准工作方向。
开发工作阶段化。
结构化方法每个阶段的工作内容明确,注重对开发过程的控制。每个阶段工作完成后,要根据阶段工作目标和要求进行审查,这使各阶段工作有条不紊地进行,便于项目管理与控制。
开发文档规范化。
结构化方法每个阶段工作完成后,要按照要求完成相应的文档,以保证各个工作阶段的衔接与系统维护工作的便利。
设计方法结构化。
在系统分析与设计时,从整体和全局考虑,自顶向下地分解;在系统实现时,根据设计的要求,先编写各个具体的功能模块,然后自底向上逐步实现整个系统。
结构化方法的缺点
开发周期长。
采用结构化方法进行系统开发,按照顺序历经各个阶段,直到系统实施阶段结束后,用户才能使用系统。这样,一方面使用户在较长的时间内不能得到(甚至无法感觉到)一个可实际运行的物理系统;另一方面,由于开发周期长,系统的环境(例如,市场环境、业务结构等)必定会有变化,这就使得最后开发出来的系统在投入使用之前就已经面临淘汰,这种系统难以适应环境变化。
难以适应需求变化。
结构化方法要求系统分析师在系统分析阶段充分掌握和理解用户需求。否则,如果在系统分析阶段需求不明确,或者需求经常变更,就会导致后续的开发过程返工甚至无法进行。这是很多信息系统项目失败的主要原因之一,因为系统分析师不一定是用户业务领域的行业专家,可能与用户“隔行如隔山”,交流起来比较困难,想一次性就准确描述用户的需求的企图注定是个幻想。
很少考虑数据结构。
结构化方法是一种面向数据流的开发方法,比较注重系统功能的分解与抽象,兼顾数据结构方面不多。尽管结构化方法也包括数据建模和数据库设计,但它仍是以模块为系统开发的核心环节,而且,从SA阶段的DFD到SD阶段的模块结构图的转变也比较困难。
要点
- 用户至上
- 严格区分工作阶段,每阶段有任务与成果
- 强调系统开发过程的整体性和全局性
- 系统开发过程工程化,文档资料标准化
- 自顶向下,逐步分解(求精)
面向对象方法
面向对象(Object-Oriented,OO)方法认为,客观世界是由各种“对象”组成的,任何事物都是对象,每一个对象都有自己的运动规律和内部状态,都属于某个对象“类”,是该对象类的一个元素。复杂的对象可由相对简单的各种对象以某种方式而构成,不同对象的组合及相互作用就构成了系统。
OO方法的过程
与结构化方法类似,面向对象方法也包括面向对象的分析(Object-Oriented Analysis,OOA)、面向对象的设计(Object-Oriented Design,OOD)和面向对象的程序设计(ObjectOriented Programming,OOP)三个段。
OOA的任务是了解问题域所涉及的对象、对象间的关系和操作,然后构造问题的对象模型。问题域是指一个包含现实世界事物与概念的领域,这些事物和概念与所设计的系统要解决的问题有关。在这个过程中,抽象是最本质和最重要的方法。针对不同的问题,可以选择不同的抽象层次,过简或过繁都会影响到对问题的本质属性的了解和解决。
OOD在分析对象模型的基础上,设计各个对象、对象之间的关系(例如,层次关系、继承关系等)和通信方式(例如,消息模式)等,其主要作用是对OOA的结果作进一步的规范化整理,以便能够被OOP直接接受。
OOP指系统功能的编码,实现在OOD阶段所规定的各个对象所应完成的任务。它包括每个对象的内部功能的实现,确立对象哪一些处理能力应在哪些类中进行描述,确定并实现系统的界面、输出的形式等
要点:
- 更好的复用性
- 关键在于建立一个全面、合理、统一的模型
- 分析、设计、实现三个阶段,界限不明确
- 自底向上,更贴近生活
原型化方法
结构化方法和面向对象方法有一个共同点,即在系统开发初期必须明确系统的功能要求,确定系统边界。从工程学角度来看,这是十分自然的:解决问题之前必须明确要解决的问题是什么。然而,对于信息系统建设而言,明确问题本身不是一件轻松的事情。 原型化方法也称为快速原型法,或者简称为原型法。它是一种根据用户初步需求,利用系统开发工具,快速地建立一个系统模型展示给用户,在此基础上与用户交流,最终实现用户需求的信息系统快速开发的方法。
要点
- 适用于需求不明确的开发
- 按功能分∶水平原型(界面)、垂直原型(复杂算法)
- 按最终结果分∶ 抛弃式原型、演化式原型
面向服务方法
面向服务(Service-Oriented,SO)的开发方法将接口的定义与实现进行解耦,并将跨构件的功能调用暴露出来。
要点
- S0方法有三个主要的抽象级别∶ 操作、服务、业务流程
- SOAD(面向服务的分析与设计 )分为三个层次∶基础设计层(底层服务构件)、应用结构层(服务之间的接口和服务级协定)和业务组织层(业务流程建模和服务流程编排)
- 服务建模∶ 分为服务发现、服务规约和服务实现三个阶段
- 典型应用 webservice