系统开发方法论

方法论:指以规范化方法实现SDLC(如一系列步骤和可交付物)

以过程为中心的方法论首先注重 确定系统的相关的活动,即过程。以过程为中心的方法论使用过程模型作为系统方案的核心。

以数据为中心的方法论首先注重确定数据存储容器的内容和这些内容是如何组织的。以数据为中心的方法论使用数据模型作为系统方案的核心。

面向对象方法论试图平衡过程和数据的重视。面向对象方法论用统一建模语言(UML)将系统方案表示为结合了数据和过程的对象集合。

一、结构化设计

      第一类系统开发方法论称为结构化设计,在20世纪80年代处于统治地位。结构化设计方法采用规范的、按步骤的SDLC实现方法,它按照逻辑顺序从一个阶段转换到下一个阶段。结构化设计也引入了规范的建模或图表技术来描述系统基本的业务过程和支持它们的数据。

1、瀑布式开发

特点:分析员和用户从一个阶段到下个阶段是顺序进行的。每个阶段通常有大量关键的可交付物,在项目从一个阶段转换到下一个阶段时要提交给项目发起者批准。一旦发起者认同了这一阶段的工作,此阶段才算结束,下阶段才能开始。此方法论被称为瀑布式开发是因为它从一个阶段转换到下一个阶段的方式像瀑布一样。

优点:(1)、在编程开始之前系统需求早早地就被确定

           (2)、项目进行期间需求变更最小化

缺点:(1)、在编程开始之前必须做好充分的设计

           (2)、在完成分析阶段的系统建议书和交付系统之间要花很长时间。

2、并行开发

特点:基于并行开发的方法论试图解决在分析阶段和系统交付之间的长期间隔问题,不是顺序进行设计和实现,而是先做出整个系统可实施的概要设计,然后把项目分成一序列单独的、能并行设计和实现的子项目。一旦所有的子项目完成,就将这些分散的部分集成,然后交付。

优点:交付系统的时间缩短了,因此业务环境的变化就会减少,从而使返工减少

缺点:有时子项目不是完全不相关的,在一个子项目中的设计决策可能会影响另一个,并且项目结束时还面临着重大的集成挑战

二、快速应用开发RAD

           第二类系统开发方法论包括基于快速应用开发(RAD)的方法。这些方法产生于20世纪90年代,是用来克服结构化设计方法论的两个弱点而提出的一个较新的系统开发方法论。

1、阶段性开发

特点:将整个系统分解成顺序开发的一序列版本。最重要的和最基本的需求绑定到系统的第1个版本,分析阶段之后进入设计和实现阶段,但这两个阶段都只是针对版本1所确定的需求集合。当版本1实现后,开始版本2的工作,在先前确定的需求基础上做进一步的分析,并结合来自用户对版本1的体验所产生的新设想和新问题。接着设计和实现版本2,然后立即开始下一版本的工作。

优点:使用户快速得到一个可用系统的优点,另外,用户更早地使用系统,也使他们比在结构化设计情形下能更早地确定重要的附加需求。

缺点:用户开始使用的系统是非常不完全的

2、原型

特点:分析、设计和实现都是并发进行的,这3个阶段将循环进行直到完成系统。在这个过程循环进行,直到分析员、用户和发起者都认同组织内所安装和使用的原型提供了足够多的功能。

优点:它能非常快地给用户提供一个可交互的系统,尽管开始时并不是为了在组织中广泛使用。能使用户确信项目团队正在开发系统,这个方法能使真正的需求更精确。

缺点:快节奏地发布系统对试图进行细致和系统化的分析是个挑战。

3、抛弃原型

特点:在SDLC的不同阶段开发,有一个相对全面的分析阶段,用来收集信息和建立系统方案的设想。用户提出的许多系统特征可能没有得到很好理解,还有许多具有挑战性的技术问题需要解决,这些方面都可用分析、设计和创建设计原型来检验。

优点:既有细致全面的分析和设计阶段所带来的好处,又具有在系统创建前利用原型求精关键内容这个优点。得到更稳定和更可靠的系统

缺点:需要花费更长的时间来交付最终的系统
三、敏捷开发

第三类系统开发方法论:敏捷开发 刚刚兴起。它们注重简化SDLC过程,去除大多数的建模、文档以及花费在这些任务上的时间。项目强调简单化、迭代化的应用开发。敏捷开发方法论的例子包括极限编程、Scrum和动态系统开发方法(DSDM)

极限编程XP

特点:建立在交流、简化、回馈和勇气这四个核心价值上。首先,开发人员必须持续快速地对最终用户进行反馈;第二,XP需要开发人员遵循KISS(Keep It Simple,Stupid)规则;第三,开发人员必须做增量修改使系统变大,他们要支持改变,而不仅仅是接受;第四,开发人员必须牢记质量第一,同时XP也鼓励小组成员在工作中提高自己的技能。XP用来创建成功系统的3个关键原则是持续测试、开发人员结对进行简单编码、以及最终用户密切交互以更快的构建系统。测试和高效的编码是XP的核心。

优点:去除大多数的建模、文档以及花费在这些任务上的时间

缺点:需要大量的规则来防止项目变得混乱和重点不明

你可能感兴趣的:(敏捷开发,XP,sdlc)