DSDM业务中心框架开发方法(一)
Author:袁琳
MSN:testwin@sohu.com
DSDM是什么?
DSDM(动态系统开发方法,也称业务中心框架开发方法)是众多敏捷开发方法中的一种,它倡导以业务为核心,快速而有效的进行系统开发。我们可以把DSDM看成一种控制框架,重点在于快速交付、并补充如何应用这些控制的指导原则的框架。
DSDM描述了在快速开发以业务为中心的环境中包含的各个方面——项目管理、预估、原型建立、时光盒法、配置管理、测试、质量保证、角色和职责、项目组结构、工具环境、风险管理、可维护性、重用、以及供应商和购买者之间的关系。
DSDM的基本观点是,任何事情都不可能一次性的圆满完成,应该用20%的时间完成80%的有用功能,以适合商业目的为准。实施的思路是,在时间进度和可用资源预先固定的情况下,力争的最大化满足业务需求(传统方法一般是需求固定,时间和资源可变),交付所需要的系统。对于交付的系统,必须达到足够的稳定程度以在实际环境中运行;对于业务方面的某些紧急需求,也要求能够在短时间内得到满足,然后在以后迭代阶段中对功能进行进一步完善。
DSDM的历史背景
20世纪90年代,IT业为了弄清楚应用程序开发的流程并归纳出避免失败的方法,进行了一系列的尝试。1994年,英国国内来自各个工业领域不同规模企业里的信息系统工作人员,以及来自IT行业中的一些大公司的顾问和项目经理聚集在一起,形成了一个非赢利性的联盟。该联盟专注于理解应用程序开发过程中的最佳实践方法,并尝试建立一种独立于任何工具的、公开的、公认的方法。DSDM联盟提供了一个过程,这个过程能够在可控的项目环境中,在满足紧迫时间的约束下,建立和维护系统。DSDM联盟创立之初有17名会员。现在联盟已经有上千名会员,在全球范围内有多个社团:英国、北美、比荷卢经济联盟、丹麦、法国和瑞典。社团式的发展,是DSDM与其他一些敏捷型方法的不同,它有专门的组织支持,有手册,培训课程,认证程序等。在英国,由于在各种规模的软件组织中的成功,DSDM已经成为应用的最为广泛的快速软件开发方法。
DSDM一直处于改进和变化之中,其重点内容通过会员的反馈不断修改、更新,以适应当今市场的变化。在2001年,DSDM联盟发布了以业务为中心的开发框架DSDM4.1版本,并将DSDM应用到更多的项目中——数据仓库、组件开发、原形业务法,在框架中都增加了这些内容。
DSDM过程
DSDM开发过程被形象的称做“三张比萨和一块奶酪”,如图所示。
DSDM周期有7个阶段:
1、项目准备阶段;
2、可行性研究阶段;
3、业务研究阶段;
4、功能建模阶段(迭代式);
5、系统设计编程阶段(迭代式);
6、实施阶段;
7、项目后期;
项目准备阶段确保启动、建立正确的项目。可行性研究阶段和业务研究阶段是顺序进行的,它们为后面的迭代、增量式的开发制定了基本规则。也就是说,在这两个阶段的工作充分完成后,才能进入后面的迭代阶段,而后续迭代阶段具体的迭代方式、迭代周期如何确定、整合,则需要视项目具体情况来定。比如:有些项目需要首先完成功能建模的全部迭代,然后再进入设计和编码阶段进行迭代,最后进入实施阶段,这种方式是顺序的,是各阶段内部独立完成迭代;有些项目将功能建模、设计和编码这两个阶段的每一次相关的活动做为一次迭代,通过不断的迭代,完成项目开发,最后进入项目实施;有些项目将功能建模、设计和编码、实施这一个过程做为一次迭代,通过不断的迭代,不断的呈现给用户满足他们需求的软件。因此,DSDM框架是极其灵活性的,在应用DSDM之前,必须要定义和评估使用DSDM的方式,在项目过程中,也可以随需而变,进行动态调整,以便能够更好的支持商业需求。DSDM“动态系统开发方法”的名称也是由此得来的吧!哈!^_^
DSDM的可行性研究阶段主要侧重评估DSDM方法是否适用于本项目,我觉得这一点比较与众不同,因为在很多的可行性研究结果中,已经把瀑布模型默认为软件开发方法了。在可行性研究阶段需要得到一些结论“该系统技术上可行吗?”、“对当前业务流程带来的影响可接受吗?”、“DSDM是开发这个系统最好的方法吗?”......必须把这些问题弄清楚,以便确定“这样去做值得吗?”。然后需要出一份全面的可行性报告,对于风险很高的方面,还需要提供如何应对、控制风险的策略。除了可行性报告之外,还需要提供开发的框架计划(outline plan),证明预期的结果是可实现的;另外,也可以提供一个快速原型,目的是证明项目从技术上是可行的。当然,如果对业务已经有了一定程度理解,相应的技术也已经用过,那么生成原型的价值也不大,可以不需要。DSDM的哲学就是:“足够就好,无需过多!”。
业务研究阶段主要是对业务流程进行分析和定义。首先需要开展一系列的讨论会,对业务流程及其相关信息、用户群进行定义,这些定义的结果被称做业务区定义,经过管理层同意后,需要从使用业务的用户群中选出代表参与到开发过程中。进行业务区定义时,可以采用结构化分析方法,定义主要的数据流程图;也可以采用面向对象的方法,定义重要的用户用例。对于业务区定义的功能,必须区分出是功能性需求还是非功能性需求并且划分优先级,因为DSDM是以业务为导向的,所有制定优先级的原则也必须要以业务为导向,但是也需要从技术实现需要的角度来考虑,把技术上要求先实现的功能做为高优先级。这样就可以清晰的理解需要开发的功能和它们实现的优先级,从而引导我们对系统架构的定义,系统架构定义实际上定义了软件开发、运行的平台,软件模块和接口的结构。最后,根据可行性研究阶段的开发框架计划和业务区定义可以制定出开发计划,这个开发计划应该包含功能建模阶段和设计编程阶段的开发策略、测试策略和配置管理计划。
功能建模阶段主要是深入分析业务区定义的功能并进行细化,在分析模型的基础上构建软件模块,将创建的原型交付用户评审,经过用户评审后进一步充实和改进,这样经过不断迭代,原型逐渐演化成可工作的软件。在功能建模阶段,还会产生以下产物:
1、带有优先级的功能:随着业务的细化,业务研究阶段定义的优先级需要调整,从而保证本次迭代中包含用户最需要的核心功能。
2、功能性原型的评审文档:用户每次对原型评审时提出的改进建议都需要被记录下来,并需要根据这些评审结果对业务定义、建模进行修正。
3、非功能性需求:在功能建模阶段将非功能需要也需要记录下来。(但是,这里我就有一个问题一直比较困惑,因为在前期建模阶段,主要注重了对业务流程的分析建模,和对高优先级需求的原型实现,倡导快速实现、交付用户评审,因此,这个过程一直注重功能性需求,对于性能方面关注不多,因为无法从全局考虑、并更深入的考虑 到整个系统的性能瓶颈,特别是前期架构设计若存在缺陷将导致后期出现性能隐患,这是很难解决的;另外,若前期迭代功能与后期迭代关联功能存在性能制约,也存在一定风险。因此,我觉得在这一阶段,进行建模时也必须要考虑到各种可能的性能需求的技术实现,并且也需要制定优先级,在不同的迭代中处理必要的性能需求。)
4、实施计划:在功能建模阶段,就应该规划这一阶段的实施计划了。包括:业务方案的准备,培训用户的计划,各种知识、技能的准备。
设计编程阶段主要根据功能建模的标准建造实际系统并通过测试。这里的测试和瀑布模型的测试是不同的,它不是一项单独活动,测试应该是贯穿于整个功能建模和设计编码过程的。
实施阶段主要是培训用户,完成系统从开发环境向运行环境的交接,然后评估这一阶段哪些需求做完了,下一阶段需要做哪些工作。我觉得有时候开发环境(包括测试环境)不可能完全模拟用户运行环境,因此在系统移交过程中,也可能会出现一些实施问题;另外,在这个阶段,部分隐藏的系统性能问题也可能会暴露出来,也需要关注。
项目后期评审当前使用的方案并评估是否达到预期的效果。
参考文献:
1、《The New Methodology》 Martin Fowler http://www.martinfowler.com/
2、《DSDM Business Focused Development》 Jennifer Stapleton
3、《Agile方法研究综述》
钱乐秋② 张敬周①② 朱三元①②
①(上海计算机软件技术开发中心)
②(复旦大学计算机与信息技术系)
分享到:
相关推荐
DSDM(Dynamic Systems Development Method)是一种敏捷软件开发方法论,它的核心理念是在项目开发过程中将用户的参与度提升至最大化,并在项目需求发生变化时提供快速而有效的应对措施。DSDM的出现是为了弥补传统...
- **动态系统开发方法(DSDM)**:结合了敏捷和传统方法的优点,强调业务需求的快速实现。 - **水晶方法(Crystal Methods)**:一系列灵活的过程框架,根据项目特性选择合适的实践。 - **特性驱动开发(Feature-...
- **动态系统开发方法(DSDM)**:强调项目的快速启动和早期交付,以快速反馈为基础。 #### 敏捷方法的关键实践 敏捷方法的关键实践包括但不限于: - **迭代开发**:将开发过程分成多个短期迭代,每个迭代结束后都...
敏捷开发的实践方法通常包括几种具体的框架或方法论,如Scrum、极限编程(XP)、水晶方法、特性驱动开发(FDD)和动态系统开发方法(DSDM)等。其中,Scrum和XP是最为广泛使用的方法。 - Scrum是一种管理产品开发...
3. **敏捷框架与方法**:书中可能涵盖Scrum、Kanban、XP(极限编程)、DSDM(动态系统开发方法)等流行的敏捷框架,详细介绍它们的工作方式、角色分配、规则和实践。 4. **敏捷规划与迭代管理**:敏捷开发强调短...
敏捷不是一个单一的开发方法论、过程或框架,而是一组包含多种方法的价值观和原则。 四、敏捷核心思想 敏捷的核心思想是以人为本和适应变化,强调人的作用以及对变化的快速响应。 五、敏捷原则 敏捷原则包括: 1. ...
- **动态系统开发方法(DSDM)**:结合了严格的项目控制和敏捷开发的特点。 - **水晶方法(Crystal)**:一系列针对不同项目规模和类型的轻量级方法。 - **特性驱动开发(FDD)**:强调通过详细的前期设计和架构规划来指导...
4. **DSDM(动态系统开发方法)**:注重快速交付,强调业务参与和时间盒管理。 ### 四、敏捷实践与工具 - **用户故事**:从用户角度描述功能,便于理解需求。 - **每日站会**:团队成员每日同步进度,解决障碍。 -...
敏捷开发是一种以人为本、迭代、增量的软件开发方法论,它强调快速响应变化,通过短期的工作周期(称为冲刺或迭代)来频繁交付可工作的软件。这一理念源于20世纪90年代末期,由一群软件开发从业者共同提出的《敏捷...
在敏捷开发中,常见的模式包括Scrum、极限编程(XP)、精益开发和动态系统开发方法(DSDM)等。每种模式都有一套特定的实践和规则来支持敏捷的实施。 Scrum是一种用于管理软件开发项目的敏捷框架,它以“sprint”为...
- **动态系统开发方法(DSDM)**:强调商业驱动,确保项目的商业价值优先。 - **水晶方法(Crystal Methods)**:根据不同项目的特点,灵活选择合适的实践。 - **特性驱动开发(Feature-Driven Development, FDD)**:关注...
除了Scrum,敏捷方法还包括其他几种常见的框架和实践,例如XP(极限编程)、Kanban、DSDM(动态系统开发方法)和FDD(特性驱动开发)。XP强调编程实践,如结对编程、单元测试和重构。Kanban关注工作流可视化和限制在...
- **敏捷开发**:强调快速迭代和应对变化,常见的敏捷开发方法包括eXtreme Programming (XP)、SCRUM、DSDM、Adaptive Software Development (ASD)等。 - **统一软件开发过程**:强调用例驱动、以架构为中心、迭代和...
5. **动态系统开发方法(DSDM)**:强调快速交付,注重业务可行性。 **实践** 1. **迭代开发**:项目被分解成多个短期迭代,每个迭代结束时产出可用的软件版本。 2. **用户故事**:以用户视角描述功能需求,便于...
为了克服这些挑战,业界提出了一种新的软件开发方法论——敏捷开发。 - **宣言原则**:2001年,一群软件行业的专家共同制定了敏捷宣言,强调了几个核心价值观: - 个体和交互比过程和工具更重要。 - 可运行的软件...
ITSM则是一种以客户为中心的方法论,关注于通过优化IT服务来满足客户需求。两者之间的关系密切,ITIL提供了实现ITSM目标的具体方法和流程。 #### 三、当前应用程序开发的状态 ##### 1. 应用程序开发的常规阶段 从...
业务建模是软件开发中的一个重要环节,它帮助开发人员理解并表示出业务流程和技术要求之间的关系。书中主要涵盖了以下几个方面: - **业务流程构成**:详细解释了构成业务流程的基本要素。 - **业务流程改进**:...
15. **动态系统开发方法(DSDM)**:敏捷方法之一,强调快速交付和业务焦点。 16. **极限编程(XP)**:一种敏捷方法,强调持续集成、测试驱动开发和团队间的密切协作。 理解并熟练运用这些模型可以帮助项目经理...