跳到主要内容

信息系统开发方法

结构化开发方法

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

自顶向下就是从系统规划、系统分析、系统设计、系统实施、系统运行和维护一步一步来。

  • 结构化方法的主要特点
    • 开发目标清晰化:结构化方法的系统开发遵循”用户第一“ 的原则。
    • 开发工作阶段化:每个阶段工作完成后,要 根据阶段工作和要求进行审查,这使得各阶段工作有条不紊地进行,便于项目管理和控制。
    • 开发文档规范化:结构化方法每个阶段工作完成后,要 按照要求完成相应的文档,以保证各个工作阶段的衔接与系统维护工作的便利。
    • 设计方法结构化:在 系统分析和设计时,从整体和全局考虑,自顶向下地分解;在 系统实现 时,根据设计的要求,先编写各个具体的功能模块,然后 自底向上逐步实现整个系统
  • 结构化方法的不足和局限
    • 开发周期长:按顺序经历各个阶段,直到实施阶段结束后,用户才能使用系统。
    • 难以适应需求的变化:不适用于需求不明确或经常变更的项目。
    • 很少考虑数据结构: 结构化方法是一种面向过程,面向数据流的开发方法,很少考虑数据结构。
  • 结构化方法常用工具:结构化方法一般利用图形表达用户需求,常用工具有 数据流图、数据字典、结构化语言、判定表以及判定树等。

面向对象开发方法

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

  • 面向对象方法的特点

    • 使用 OO 方法构造的系统具有更好的复用性,其关键在于建立一个全面、合理、统一的模型(用例模型和分析模型)。
    • OO 方法也划分阶段,但其中的系统分析、系统设计、系统实现三个阶段之间已经没有缝隙。也就是说,这三个阶段的界限变得不明确,某项工作既可以在前一个阶段完成,也可以在后一个阶段完成;前一个阶段工作做得不够细,在后一个阶段可以补充。
    • 面向对象方法可以普遍适用于各类信息系统的开发
  • 面向对象方法的不足之处:必须依靠一定的面向对象技术支持,在大型项目的开发上具有一定的局限性,不能涉足系统分析以前的开发环节

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

原型化方法

提示

原型化方法适用于需求不明确的情况。

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

  • 是否实现功能分类:分为水平原型(行为原型、功能的导航)、垂直原型(结构化原型,实现了部分功能)。

  • 最终结果分类:分为抛弃式原型、演化式原型。

  • 原型法的特点

    • 原型法可以 使系统开发的周期缩短、成本和风险降低、速度加快,获得较高的综合开发效益
    • 原型法是以用户为中心来开发系统的,用户参会的程度大大提高,开发的系统符合用户的需求,因而增加了系统的满意度,提高了系统开发的成功率。
    • 由于用户参与了系统开发的全流程,对 系统的功能和结构容易理解和接受,有利系统的移交,有利于系统的运行与维护。
  • 原型法的不足之处: 开发的环境要求高。管理水平要求高

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

  • 从严格意义上来说,目前的原型法 不是一种独立的系统开发方法,而只是一种开发思想,它支持在系统开发早期阶段快速生成系统的原型,没有规定在原型构建过程中必须使用那种方法。因此,它 不是完整意义上的方法论体系。这就注定了 原型法必须与其它信息系统开发方法结合使用

提示

原型法主要是运用在系统分析阶段;结构化和面向对象方法可以运用在三个阶段(分析阶段、设计阶段、实施阶段)。 所以原型化方法必须与其它信息系统开发方法结合使用。

敏捷开发

Preview
  • 敏捷开发是一种以人为核心、迭代、循序渐进的开发方法,相对于传统软件开发方法的非敏捷,更 强调程序员团队与业务专家之间的紧密协作、面对面的沟通(认为比书面的文档更有效)、频繁交付新的软件版本、紧密而自我组织型的团队、能够很好地适应需求变化的代码编写和团队组织方法,也更注重软件开发中

  • 敏捷软件开发宣言

    • 个体和交互胜过过程和工具
    • 可以工作的软件胜过面面俱到的文档
    • 客户合作胜过合同谈判
    • 响应变化胜过遵循计划
  • 结对编程:一个程序员开发,另一个程序员在一旁观察审查代码,能够有效的提高代码质量,在开发同时对代码进行初步审查,共同对代码负责。

  • 自适应开发:强调开发方法的适应性(Adaptive)。不像其它方法那样有很多具体的实践做法,它更侧重为软件的重要性提供最根本的基础,并从更高的组织和管理层次来阐述开发方法为什么要具备适应性。

  • 水晶方法:每一个不同的项目都需要一套不同的策略、约定和方法论

  • 特性驱动开发:是一套 针对中小型软件开发项目的开发模式。是一个模型驱动的快速迭代开发过程,它强调的是简化、使用、易于被开发团队接受,适用于需求经常变动的项目。

  • 极限编程XP:核心是 沟通、简明、反馈和勇气,因为知道计划永远赶不上变化,XP 无需开发人员在软件开始初期做出很多的文档。XP 提倡 测试先行,为了将以后出现 bug 的几率降到最低。

  • 并列争球法 SCRUM: 是一种 迭代的增量化过程,把 每段时间(30天)一次的迭代称为一个冲刺,并按照需求的优先级别来实现产品,多个自组织和自治的小组并行地递增实现产品。

提示

针对中小型项目,使用敏捷开发会更快一些;大型复杂高风险项目,流程不能少,如果只使用敏捷开发,可能会失败。

统一过程(RUP)

提供了在开发组织中分派任务和责任的纪律化方法。它的目标是在 可预见的日程和预算前提下,确保满足最终用户需求的高质量产品

  • 3 个显著特点用例驱动、以架构为中心、迭代和增量
  • 4 个流程初始阶段、细化阶段、构建阶段和交付阶段。每个阶段结束时都要安排一次技术评审,以确定这个阶段的目的是否已经达到。
  • 适用:一个 通用过程框架 ,可以用于种类广泛的软件系统、不同的应用领域、不同的组织类型、不同性能水平和不同的项目规模。