草庐IT

软件项目管理 4.3.敏捷需求建模方法

软件项目管理 2023-03-28 原文

软件项目管理 4.3.敏捷需求建模方法

【公众号 “项目管理研究所” 将会第一时间更新文章并分享行业分析报告】
归档于软件项目管理初级学习路线
第四章 软件需求管理
《初级学习路线合集 》


前言

大家好,这节我们学习软件项目管理---敏捷需求建模方法。

一、建模方法

敏捷思维认为项目需求是慢慢清楚的过程,对需求可以采用渐近明晰的方法应对变化。

敏捷需求从Product Backlog(产品待办事项列表)开始,需求的来源包含产品想法的一个有序列表,一个长短不定列表,可以是模糊的或是不具体的,逐渐完善,越来越明确。

每个迭代开发过程从产品待办事项选择部分需求以及细化形成Spring Backlog,细化的过程就是编写Story的过程。

Story的涵义:
按照迭代计划,逐步细化需求,形成Story(故事)
鼓励开发人员、测试人员、业务分析人员和产品
负责人合作编写故事,
确保所有的故事都足够小,可以持续交付工作。
最好每天完成至少一个故事。

因此,敏捷需求是通过User Stories(用户故事)来体现的,我们知道UML需求是从use case(用例)开始的,敏捷是从user stories开始的,他们的涵义基本一致的,而用户故事按照一定的语法形式进行表示,不需要技术语言来描述,只是以客户能够明白的,简短的形式来表达。

一个典型的描述模板如下:AS a作为某类型的用户,I wan希望达到什么目标,so that 原因如何如何 。

这是一个具体的user stories例子:这个故事是文件备份功能,stories描述如下:作为一个用户,希望备份整份硬盘,以便工作内容不会丢失。

获取到user stories后,需要与客户进行分析,相互沟通,讨论,并生成Story。

那么如何评价一个story是一个好的story呢?有一些标准是可以参考的。例如INVEST,那么他就描述了好的story的六个特征:I代表独立特征,N代表清晰描述,V代表需求的价值特征,E&S代表比较小,足以进行估算。

那么Story呢常常写在卡片上,所以称为Story cards,然后可以部署到墙上,可以讨论,这些都代表着需求分析从传统的写需求过程到讨论需求的过程。

那么这是部署到墙上的Story,成为Story wall。

二、Story排序

我们知道需求分为功能性需求和非功能性需求,我们前面用Story描述了功能需求。其实也可以用Story来描述非功能性需求,例如我们可以看:这是用Story来描述的非功能性需求,描述了系统,运行环境,开发语言的兼容性以及系统的健壮性。

迭代开发是基于优先级的,因此需要对Story进行优先级的排序,我们可以遵守一些规则来对Story来进行排序。

例如MoSCow,他是对Must have(系统必须实现的功能,否则系统无法运行),Should have(虽然很重要,但是可以省略的功能),Could have(扩展性功能,但是要求不是很低),Want to have(一部分用户的想法)来进行排序的。


例如采用MosCoW规则对某一个支付功能Story来排序,其中Must have是系统必须接受Visa卡和Master卡,Should have是可以增加美国信用卡,Could have可以增加PayPal卡,Want to have可以考虑最后增加礼品卡。


总结

总之 敏捷项目需求通过讨论的方式,循序渐进的方式进行确定的,并且可以采用user stories进行描述。

到这里,第四章 软件需求管理就讲解完毕了!下一章将全面介绍软件项目任务分解~

如果您觉得这篇文章有帮助到您的的话不妨点赞支持一下哟~~?

后续将持续更新【软件项目管理初级学习路线】的全知识点,大家感兴趣的多多关注博主哟~
————————————————

有关软件项目管理 4.3.敏捷需求建模方法的更多相关文章

  1. ruby - 如何使用 Nokogiri 的 xpath 和 at_xpath 方法 - 2

    我正在学习如何使用Nokogiri,根据这段代码我遇到了一些问题:require'rubygems'require'mechanize'post_agent=WWW::Mechanize.newpost_page=post_agent.get('http://www.vbulletin.org/forum/showthread.php?t=230708')puts"\nabsolutepathwithtbodygivesnil"putspost_page.parser.xpath('/html/body/div/div/div/div/div/table/tbody/tr/td/div

  2. ruby - 如何从 ruby​​ 中的字符串运行任意对象方法? - 2

    总的来说,我对ruby​​还比较陌生,我正在为我正在创建的对象编写一些rspec测试用例。许多测试用例都非常基础,我只是想确保正确填充和返回值。我想知道是否有办法使用循环结构来执行此操作。不必为我要测试的每个方法都设置一个assertEquals。例如:describeitem,"TestingtheItem"doit"willhaveanullvaluetostart"doitem=Item.new#HereIcoulddotheitem.name.shouldbe_nil#thenIcoulddoitem.category.shouldbe_nilendend但我想要一些方法来使用

  3. ruby - 为什么我可以在 Ruby 中使用 Object#send 访问私有(private)/ protected 方法? - 2

    类classAprivatedeffooputs:fooendpublicdefbarputs:barendprivatedefzimputs:zimendprotecteddefdibputs:dibendendA的实例a=A.new测试a.foorescueputs:faila.barrescueputs:faila.zimrescueputs:faila.dibrescueputs:faila.gazrescueputs:fail测试输出failbarfailfailfail.发送测试[:foo,:bar,:zim,:dib,:gaz].each{|m|a.send(m)resc

  4. ruby - i18n Assets 管理/翻译 UI - 2

    我正在使用i18n从头开始​​构建一个多语言网络应用程序,虽然我自己可以处理一大堆yml文件,但我说的语言(非常)有限,最终我想寻求外部帮助帮助。我想知道这里是否有人在使用UI插件/gem(与django上的django-rosetta不同)来处理多个翻译器,其中一些翻译器不愿意或无法处理存储库中的100多个文件,处理语言数据。谢谢&问候,安德拉斯(如果您已经在ruby​​onrails-talk上遇到了这个问题,我们深表歉意) 最佳答案 有一个rails3branchofthetolkgem在github上。您可以通过在Gemfi

  5. ruby - Facter::Util::Uptime:Module 的未定义方法 get_uptime (NoMethodError) - 2

    我正在尝试设置一个puppet节点,但ruby​​gems似乎不正常。如果我通过它自己的二进制文件(/usr/lib/ruby/gems/1.8/gems/facter-1.5.8/bin/facter)在cli上运行facter,它工作正常,但如果我通过由ruby​​gems(/usr/bin/facter)安装的二进制文件,它抛出:/usr/lib/ruby/1.8/facter/uptime.rb:11:undefinedmethod`get_uptime'forFacter::Util::Uptime:Module(NoMethodError)from/usr/lib/ruby

  6. Ruby 方法() 方法 - 2

    我想了解Ruby方法methods()是如何工作的。我尝试使用“ruby方法”在Google上搜索,但这不是我需要的。我也看过ruby​​-doc.org,但我没有找到这种方法。你能详细解释一下它是如何工作的或者给我一个链接吗?更新我用methods()方法做了实验,得到了这样的结果:'labrat'代码classFirstdeffirst_instance_mymethodenddefself.first_class_mymethodendendclassSecond使用类#returnsavailablemethodslistforclassandancestorsputsSeco

  7. ruby - 如何在 buildr 项目中使用 Ruby 代码? - 2

    如何在buildr项目中使用Ruby?我在很多不同的项目中使用过Ruby、JRuby、Java和Clojure。我目前正在使用我的标准Ruby开发一个模拟应用程序,我想尝试使用Clojure后端(我确实喜欢功能代码)以及JRubygui和测试套件。我还可以看到在未来的不同项目中使用Scala作为后端。我想我要为我的项目尝试一下buildr(http://buildr.apache.org/),但我注意到buildr似乎没有设置为在项目中使用JRuby代码本身!这看起来有点傻,因为该工具旨在统一通用的JVM语言并且是在ruby中构建的。除了将输出的jar包含在一个独特的、仅限ruby​​

  8. ruby-on-rails - 建模收藏夹 - 2

    我希望将Favorite模型添加到我的User和Link模型。业务逻辑用户可以有多个链接(即可以添加多个链接)用户可以收藏多个链接(他们自己的或其他用户的)一个链接可以被多个用户收藏,但只有一个所有者我对如何为这种关联建模以及在模型就位后如何创建用户收藏夹感到困惑?classUser 最佳答案 下面的数据模型怎么样:classUser:destroyhas_many:favorite_links,:through=>:favorites,:source=>:linkendclassLink:destroyhas_many:favor

  9. ruby-on-rails - Rails 3.2.1 中 ActionMailer 中的未定义方法 'default_content_type=' - 2

    我在我的项目中添加了一个系统来重置用户密码并通过电子邮件将密码发送给他,以防他忘记密码。昨天它运行良好(当我实现它时)。当我今天尝试启动服务器时,出现以下错误。=>BootingWEBrick=>Rails3.2.1applicationstartingindevelopmentonhttp://0.0.0.0:3000=>Callwith-dtodetach=>Ctrl-CtoshutdownserverExiting/Users/vinayshenoy/.rvm/gems/ruby-1.9.3-p0/gems/actionmailer-3.2.1/lib/action_mailer

  10. ruby - Highline 询问方法不会使用同一行 - 2

    设置:狂欢ruby1.9.2高线(1.6.13)描述:我已经相当习惯在其他一些项目中使用highline,但已经有几个月没有使用它了。现在,在Ruby1.9.2上全新安装时,它似乎不允许在同一行回答提示。所以以前我会看到类似的东西:require"highline/import"ask"Whatisyourfavoritecolor?"并得到:Whatisyourfavoritecolor?|现在我看到类似的东西:Whatisyourfavoritecolor?|竖线(|)符号是我的终端光标。知道为什么会发生这种变化吗? 最佳答案

随机推荐