`

SpecDD:整合项目管理、需求管理与质量管理的混合型敏捷

 
阅读更多

“混合型敏捷开发”综述

敏捷开发,现今已发展成为最流行的开发方法。众多开发团队正逐步走向敏捷开发方法,其中很重要的一个原因是因为它能迅速提高团队的工作效率,另外一个原因是敏捷方法被认为是一种先进流行的“智能”开发方法。如果不采用敏捷模式,常会导致开发团队由于一直处在缺乏效率的工作境地,而不断产生对公司管理的质疑:为什么不采用最先进的开发方法? 长此以往最终将造成更为不良的后果:大量流失优秀的开发人员。

不过,当您开始实践敏捷开发的时候,您同样要面临另外一种风险,即敏捷开发过程常常会忽视项目管理,需求管理和质量管理的价值,比如单纯的敏捷开发往往更强调和关注任务层面的工作量,而对需求分析、整体设计和计划不够重视,而这将kenen导致项目失败。

在实际敏捷开发实践中,超过70%的敏捷团队采用了敏捷开发方法与传统开发方法相融合的敏捷过程。换句话说,敏捷开发正被强烈的要求与项目管理、需求管理以及质量管理整合在一起使用,且在敏捷过程中,有效的项目监管和控制是至关重要的。然而事实上,此前业界并没有任何一种方法会教您如何去实现这种整合。

基于敏捷的混合型开发方法:SpecDDSpecification Driven Development)应运而生,SpecDD是一种可扩展的敏捷开发模式,它帮助开发团队在敏捷开发中实现需求与质量的整合,并实现敏捷过程与项目管理的融合与均衡,助力企业在管理大型项目和多团队协作项目中获得更多成功。

组织并推动敏捷开发与项目管理之间的均衡,带来的好处显而易见,同时也带来挑战。敏捷倡导个体和交互胜过过程和工具,看起来似乎不再需要微观管理和对项目的规划管理;因为其首要目的就是向客户成功交付一个满足要求的产品项目。实际上敏捷开发并不是排斥项目管理,而是希望采用适当的项目管理和需求规划,为开发团队创造一个更好的环境,从而让团队能更有效地投入到敏捷过程中。

敏捷开发乐于接受需求变更,提倡积极响应变更而不默守陈规。许多敏捷团队错误地认为需求管理是不必要的,结果导致他们的敏捷过程无法实现可持续的成功。敏捷过程依赖于一个按优先级进行排序的产品Backlog来正确规划每个开发迭代周期。这样的产品Backlog实际上履行了对需求的适当管理。大型项目的需求管理会更加复杂,实现多层次的需求规划与管理是确保多团队协作大型敏捷项目成功的基础。

对一个刚开始实践敏捷开发的公司来说,也许最容易犯的错误就是把所有测试团队都加入到敏捷团队中。测试成员被分配到每一个敏捷团队,结果导致测试部门被空置,测试经理和测试主管开始直接向敏捷项目负责人汇报工作。事实上,开发团队从来无法完全掌控产品的质量。 因此,在敏捷实践中正确的整合测试过程,才能实现在大型项目中有效地部署敏捷开发。

SpecDD:项目管理、需求管理与质量管理全面整合的混合型敏捷开发

SpecDD是一种可扩展的敏捷开发方法。它让团队在使用敏捷的过程中又不失传统开发方法的最佳实践原则。它通过均衡以下实践,帮助企业在管理大型项目和多团队协作项目中获得更多成功。

l  项目管理主要包括:针对项目的生命周期管理,项目成功的准则,执行层的任务跟踪,以及质量管理

l  需求管理并不苛求百分百的理解和无一遗漏的文档。但是需求必须被正确的表达和量化,从而使得敏捷开发团队能够正确设定产品Backlog的优先级,并成功管理开发迭代周期。

l  质量管理源于正规化表达和量化产品质量。测试团队应当推荐一到两名测试人员加入敏捷开发团队,加入的测试人员主导测试工作,并保持相对独立的工作,同时又与敏捷开发团队共同合作以保证质量。测试团队和测试部门应始终存在,并负责产品的整体质量管理。

l  完整的可追溯性从需求管理开始。在敏捷开发中,产品Backlog不断被消耗和燃尽。生成的燃尽图,常常被用于估计剩余的工作量和跟踪以下工作的完成度,包括需求的完善过程,开发迭代的任务分配过程,以及测试标准和测试计划的执行过程。

l  Scrum为代表的单纯敏捷方法缺乏对多团队协作大型开发项目的有效管理模型。纯敏捷只针对单一敏捷团队的开发过程。SpecDD的出发点就是融合项目管理、需求建模和质量管理;使得多个敏捷团队能够相互整合工作,从而取得项目的成功。

 

量化需求,以驱动开发

     SpecDD使用Epic和Spec来管理需求。Epic表示一个大概的想法,一般来说往往过于笼统,范围也比较大,因此需要进一步分解为Spec。Spec表示一个新功能或者功能改进,可能需要进一步分解为一个或多个开发任务进行实现。一个Spec,不需要在充分理解需求,或者需求被完整文档化的情况下,才开始实现。随着Spec的开发实现,可执行的软件本身将帮助团队更好地理解原始需求。并常常会为需求添加新的和改进后的文档及附件,包括新的业务逻辑模型、更新后的用户图形界面、以及新的技术设计文档等。

    当Spec被分配到产品Backlog时,Story将被创建,用来作为对Spec实现分配的承诺。实际项目中,单个Spec的实现,可能需要生成多个Story,经过多次实现分配才最终完成。

    下图说明了Spec、Story和任务之间的关系。Spec被分配到开发空间中,生成一个或多个Story。每个Story可以进一步分解为一个或多个开发任务。每个开发任务可能含有一个或多个QA测试子任务。

                                                            SpecDD_2.gif

 

在SpecDD模型中,需求“驱动”并不意味着需求在驱动开发和质量实践前,需要被完整的定义。Spec 是以客户价值角度,表达的某个产品功能,可能并不包含最初需求的细节。需求Spec的实现过程,与需求Spec的重定义过程,常常并行发生。SpecDD提倡团队使用需求作为交流的标准,并使用文档记录改进后的需求理解,以保存团队在需求决策过程中所做的“智慧”。

SpecDD开发迭代

       Sprint工作量来源于产品负责人选定的一组候选功能和缺陷列表。功能以Story的形式分配到Sprint,每个Story包含一些细分的开发任务。缺陷通常以独立存在的开发任务(不与Story相关联)分配到Sprint。

     随着任务负责人对各自工作进展的推动,一个个开发任务从初始状态,经过中间状态,并且最终到达完成状态。使用一个简单的敏捷工作流,常常能够帮助团队管理任务的生命周期。SpecDD框架下的任务工作流,往往包含以下几个状态:待分配,处理中,QAFloater验证和完成任务。随着任务负责人每天的进展,剩余工作时间理想情况下,将从最初的估计值不断减少直至为零。伴随开发团队自我管理,自我驱动地完成所有承诺的开发任务,生成的燃尽图报表(例如下图)最佳地展现了团队Sprint工作量的进展。

SpecDD_3.gif

 

SpecDD Sprint质量模型

     SpecDD框架中,Sprint工作量由一组待实现的Story,开发任务和缺陷组成。在Sprint开始的时候,为开发人员估计每个工作项的工作量,可以使用剩余时间或点数。这里有一个问题:是否需要创建与开发任务同级别的QA测试任务,并作为工作量的一部分?

      一个常用的,但不合理的做法是为所有的开发任务创建同级别的QA测试任务,使用同样的办法,为QA测试任务也设定具体的剩余时间,从而驱动QA测试任务的进展。对于一个开发任务,估计剩余时间是可能的,并且能很好地激励任务负责人,在估计的时间内努力完成工作。

      然而对于QA测试工作来说,在Sprint开始的时候,将所有可能需要的各种测试任务创建完毕,并且估计剩余时间,实际上是不可能的。更为重要的是,对QA测试总时间的估计,阻碍了建设一个自我驱动的团队。不包含QA测试时间,对于Sprint的总剩余时间,团队总是可以自我驱动的,并将它作为要达成的动态目标。而包含QA测试时间,它只会损害一个自我驱动的开发团队,在他们估计的时间内,努力完成所有开发工作的积极性。

      在SpecDD模型中,通过为开发任务建立子任务来表示QA测试工作。对于功能性开发任务,可以基于开发任务所对应的父级需求,生成相应地测试标准。随着需求被充分理解并文档化,团队可以为需求Spec和Story创建测试用例,来准确表达质量标准。对于缺陷修复任务,测试子任务可能并不会与测试用例相关联,因为缺陷描述本身往往就保留了QA测试的标准。下图说明了基于QA测试子任务的SpecDD Sprint质量模型。

                                                SpecDD_4.gif

 

 SpecDD Sprint质量模型创造了一种“平衡”的质量控制概念。可执行软件的创造人员,自我驱动并努力将Story和开发任务转化为可执行的软件。QA Floater是可执行软件的保护者,他们为开发任务创建QA测试子任务,以确保开发任务完成之前进行充分的测试。可执行软件的创造者想要燃尽图走的更快,总是主动积极并达成剩余时间估计目标。而保护者则是减缓剩余时间的进展,有时,他们甚至因为发现新的缺陷,而增加了开发任务的剩余时间。SpecDD Sprint质量模型为这两个关注面创造了一种动态的平衡,优化了开发产生力和质量保障。

      对于每个SpecDD的敏捷开发团队,推荐1-2名测试人员加入开发团队,加入的测试成员称为QA floater。QA floater主导测试,并促进最佳测试实践,同时帮助每个敏捷团队成员成为更好的测试人员。建立并完善测试用例,是敏捷Sprint测试实践中的主要产物,以确保高质量的Sprint。测试用例将被保存于测试用例库中,完整的测试用例库未来会进一步指导测试团队的全面回归测试。

SpecDD回归测试模型

      在QA floater和测试子任务模型下,一个理想的SpecDD Sprint将能够交付一个没有缺陷的可执行软件。但现实中往往是,在多个Sprint迭代后,相互集成的产品,势必会有一些缺陷。没有一个稳固的回归测试实践,多团队参与的大型项目,无疑将缺乏质量控制和可扩展性。

      SpecDD使用测试用例,并与运行时的环境变量相结合,正规化表达并量化产品的质量。QA测试计划为产品的发布指定了测试标准。为了更加灵活高效地执行测试计划,常常使用测试周期来表示较小的测试迭代,一个测试周期可用于覆盖QA测试计划可能产生的所有任务的一个子集。

      一个测试周期包含一组测试任务,测试任务是基于测试用例与运行环境变量排列组合下产生的具体实例。可以手动或使用自动化测试工具,来执行这些测试任务。下图反映了开发迭代周期与QA 测试周期的关系。

                                                     SpecDD_5.gif

 

      正如您所看到的,QA测试周期的规划和执行,不一定同步于开发迭代周期。当您想将新发现的缺陷分配到当前进展中的Sprint时,敏捷开发方法会要求测试团队只能将缺陷提交到产品Backlog中。QA回归测试团队负责提交缺陷,但是他们并没有权利决定何时修复这些缺陷。拥有一个独立的测试团队,更早地发现缺陷,并在产品Backlog中对缺陷进行优先级排序,实际上有助于创造一个更加灵活的敏捷过程。

结论

      敏捷技术,正成为一个个构建基石,嵌入到其他开发方法。有了这样的信念,SpecDD为团队提供了指引,将敏捷技术与团队现有实践进行最佳的融合。

      对于使用瀑布模型的团队,SpecDD帮助他们扩展了需求管理,并支持产品Backlog。随着产品Backlog的优先级排序,团队可以开始尝试较短的迭代开发,同时通过燃尽图和每日敏捷练习,创造自我驱动的团队。伴随需求驱动的开发和质量的实践,他们很快就会看到生产率的提高。

      对于已经实践敏捷开发的团队,SpecDD有助于全面整合需求管理与产品Backlog,实现需求完整可追溯。通过引入敏捷Sprint QA测试,并建立一个独立的QA团队来执行回归测试,使得多团队参与的敏捷项目变得更具有扩展性。

 

SpecDD创始人简介

      周铁人,毕业于美国Kansas 州立大学,获计算机科学专业硕士学位和人工智能专业博士学位;在攻读博士学位期间,他致力于实验室自动化、概念建模、机器人技术和人工智能的研究。如今,作为"以知识为核心"的应用生命周期管理(ALM)领域内的专家,周铁人博士提倡以知识为核心的软件过程改进,并针对当今的分布式开发团队和服务支持团队的特点和需求,设计开发TechExcel ALM 解决方案,帮助企业全面管理软件生命周期内的各个流程,从概念形成、设计规划、到开发实施和产品交付。周博士曾参与过全球最大的开发团队的培训及实践工作,其独创的SpecDD混合的敏捷开发方法论,已成功指导和应用于EA、SONY、RIM、联邦快递等国际知名企业,优化了QA和需求管理相整合的敏捷过程,组织推动了均衡和可扩展的敏捷开发方法论。

1
4
分享到:
评论

相关推荐

    基于敏捷研发模型SpecDD

    SpecDD是一种基于敏捷研发模型,适用于大型团队研发,解决了大团队不适用于敏捷的问题。

    高校学生选课系统项目源码资源

    项目名称: 高校学生选课系统 内容概要: 高校学生选课系统是为了方便高校学生进行选课管理而设计的系统。该系统提供了学生选课、查看课程信息、管理个人课程表等功能,同时也为教师提供了课程发布和管理功能,以及管理员对整个选课系统的管理功能。 适用人群: 学生: 高校本科生和研究生,用于选课、查看课程信息、管理个人课程表等。 教师: 高校教师,用于发布课程、管理课程信息和学生选课情况等。 管理员: 系统管理员,用于管理整个选课系统,包括用户管理、课程管理、权限管理等。 使用场景及目标: 学生选课场景: 学生登录系统后可以浏览课程列表,根据自己的专业和兴趣选择适合自己的课程,并进行选课操作。系统会实时更新学生的选课信息,并生成个人课程表。 教师发布课程场景: 教师登录系统后可以发布新的课程信息,包括课程名称、课程描述、上课时间、上课地点等。发布后的课程将出现在课程列表中供学生选择。 管理员管理场景: 管理员可以管理系统的用户信息,包括学生、教师和管理员账号的添加、删除和修改;管理课程信息,包括课程的添加、删除和修改;管理系统的权限控制,包括用户权限的分配和管理。 目标: 为高校学生提

    TC-125 230V 50HZ 圆锯

    TC-125 230V 50HZ 圆锯

    影音娱乐北雨影音系统 v1.0.1-bymov101.rar

    北雨影音系统 v1.0.1_bymov101.rar 是一个计算机专业的 JSP 源码资料包,它为用户提供了一个强大而灵活的在线影音娱乐平台。该系统集成了多种功能,包括视频上传、播放、分享和评论等,旨在为用户提供一个全面而便捷的在线视频观看体验。首先,北雨影音系统具有强大的视频上传功能。用户可以轻松地将本地的视频文件上传到系统中,并与其他人分享。系统支持多种视频格式,包括常见的 MP4、AVI、FLV 等,确保用户能够方便地上传和观看各种类型的视频。其次,该系统提供了丰富的视频播放功能。用户可以选择不同的视频进行观看,并且可以调整视频的清晰度、音量等参数,以适应不同的观看需求。系统还支持自动播放下一个视频的功能,让用户可以连续观看多个视频,无需手动切换。此外,北雨影音系统还提供了一个社交互动的平台。用户可以在视频下方发表评论,与其他观众进行交流和讨论。这为用户之间的互动提供了便利,增加了观看视频的乐趣和参与感。最后,该系统还具备良好的用户体验和界面设计。界面简洁明了,操作直观易用,让用户可以快速上手并使用各项功能。同时,系统还提供了个性化的推荐功能,根据用户的观看历史和兴趣,为用户推荐

    Tripp Trapp 儿童椅用户指南 STOKKE

    Tripp Trapp 儿童椅用户指南

    node-v8.13.0-linux-armv6l.tar.gz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    谷歌浏览器 64位-89.0.4389.128.exe

    Windows版本64位谷歌浏览器,是由Google谷歌公司开发的一款电脑版网络浏览器,可以运行在Windows 10/8.1/8/7 64位的操作系统上。该浏览器是基于其它开放原始码软件所撰写,包括WebKit和Mozilla,目标是提升稳定性、速度和安全性,并创造出简单且有效率的使用者界面。软件的特点是简洁、快速。并且支持多标签浏览,每个标签页面都在独立的“沙箱”内运行,在提高安全性的同时,一个标签页面的崩溃也不会导致其他标签页面被关闭。此外,谷歌浏览器(Google Chrome)基于更强大的JavaScript V8引擎,这是当前Web浏览器所无法实现的。

    适用于鲲鹏麒麟的OpenJDK1.8

    适用于鲲鹏麒麟的OpenJDK1.8

    毕业设计-基于SSH的任务调度系统的设计与实现

    任务调度试系统,基本功能包括:用户的注册、用户的登录、发起项目、项目详细及搜索等。本系统结构如下: (1)用户的注册登录: 注册模块:完成用户注册功能; 登录模块:完成用户登录功能; (2)发起项目: 发起项目模块:完成了项目及项目下一个或者多个任务的添加; 项目详细:点击项目名称,可以看到项目及任务详细信息; 搜索项目:完成对项目名称的模糊搜索功能 任务调度试系统,基本功能包括:用户的注册、用户的登录、发起项目、项目详细及搜索等。本系统结构如下: (1)用户的注册登录: 注册模块:完成用户注册功能; 登录模块:完成用户登录功能; (2)发起项目: 发起项目模块:完成了项目及项目下一个或者多个任务的添加; 项目详细:点击项目名称,可以看到项目及任务详细信息; 搜索项目:完成对项目名称的模糊搜索功能

    30个炫酷的数据可视化大屏(含源码)

    大屏数据可视化是以大屏为主要展示载体的数据可视化设计,30个可视化大屏包含源码,直接运行文件夹中的index.html,即可看到大屏。 内含:数据可视化页面设计;数据可视化演示系统;大数据可视化监管平台;智能看板;翼兴消防监控;南方软件视频平台;全国图书零售监测数据;晋城高速综合管控大数据;无线网络大数据平台;设备大数据;游戏数据大屏;厅店营业效能分析;车辆综合管控平台;政务大数据共享交换平台;智慧社区;物流云数据看板平台;风机可视化大屏等。

    基于yolov5识别算法实现的DNF自动脚本源码.zip

    优秀源码设计,详情请查看资源源码内容

    毕业设计:基于SSM的mysql-在线网上书店(源码 + 数据库 + 说明文档)

    毕业设计:基于SSM的mysql_在线网上书店(源码 + 数据库 + 说明文档) 2.系统分析与设计 3 2.1系统分析 3 2.1.1需求分析 3 2.1.2必要性分析 3 2.2系统概要设计 3 2.2.1 项目规划 3 2.2.2系统功能结构图 4 2.3开发及运行环境 4 2.4逻辑结构设计 5 2.4.1 数据库概要说明 5 2.4.2 主要数据表结构 6 2.5文件夹架构 9 2.6编写JAVA BEAN 9 3.网站前台主要功能模块设计 10 3.1前台首页架构设计 10 3.2网站前台首页设计 11 3.3新书上市模块设计 12 3.4特价书籍模块设计 13 3.5书籍分类模块设计 14 3.6会员管理模块设计 15 3.7购物车模块设计 17 3.8收银台设计模块 19 3.9畅销书籍模块设计 20 4.网站后台主要功能模块设计 21 4.1网站后台文件夹架构设计 21 4.2后台主页面设计 21 4.3书籍管理模块设计 22 4.4会员管理模块设计 25 4.5订单管理模块设计 26 4.6公告管理模块设计 28 4.7退出系统页面设计 29 5.网站制作中遇到的问

    python 开发 python爬虫数据可视化分析项目源码加课题报告,源码注解清晰一看就懂,适合新手.zip

    python 开发 python爬虫数据可视化分析项目源码加课题报告,源码注解清晰一看就懂,适合新手

    node-v8.0.0-linux-armv7l.tar.gz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    使用FPGA发送一个经过曼彻斯特编码的伪随机序列

    rtl中存放的是设计文件 sim中存放的是仿真文件

    基于Java的班级管理系统课程设计源码

    附件是基于 Java的班级管理系统课程设计源码,包含程序说明和运行环境要求,文件绿色安全,仅供学习交流使用,欢迎大家下载学习交流!

    最新获取QQ微信头像橘头像阁PHP源码下载.rar

    最新获取QQ微信头像橘头像阁PHP源码下载.rar最新获取QQ微信头像橘头像阁PHP源码下载.rar

    K-750 管道疏通机手册

    K-750 管道疏通机手册 Drain Cleaner Manual K-750 Drain Cleaning Machine

    基于哈希链表的简单人员信息管理系统

    实现基于哈希表的员工信息管理系统,该系统主要用于处理员工信息,主要包括员工个人信息的录入、删除、查找、修改等,同时支持数据的导入导出

    node-v6.16.0.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

Global site tag (gtag.js) - Google Analytics