这几天在看《软件需求最佳实践》作者徐锋老师的软件需求培训,三天的课程,虽然原来对需求也关注了很多,自己也做过需求分析和开发的工作,但是这次培训感觉收获还是很多。三天的培训先做个记录,后续多个点还可以逐个展开,不断的总结。

需求实践所面临的问题

需求完整性需要诸多用户的参与和确认,而且用户间需求本身也存在冲突的可能,因此需求更加强调角色和场景和划分,一个所有用户需要都能够满足的需求往往不是一个好需求。

需求过程缺乏用户的参与,我们往往是技术驱动,习惯性的跳到模块的划分导致需求本身验证困难,也导致了需求间耦合很紧,很难在后期组织有效的迭代开发。因此要考虑按流程和业务梳理需求。

需求无法实现也可能不是架构问题,而是需求本身不切实际。

用户想要和真正需要是有区别的,没有真正的识别需求优先级可能导致需求过量开发和需求镀金。

需求优先级识别往往并不能完全依靠用户,用户往往只会把自己关注功能讲优先级识别的很高,因此需求优先级识别应该是通过业务规则,流程和模式来确定。优先级识别方法(离主营业务的远近,发生的频率两个方面来度量)

沟通失真,要认识到文档仅仅是中介而不是全部,要通过即时的验证来减少沟通失真。

需求捕获和调研常见问题-用户告诉你的是他转化后的解决方案,而不是最原始的需求。

变更频繁,但是要响应变化,比如通过对变更分类来识别哪些变更是可以通过复用和可配置解决的。

非功能性需求为有效的识别,仅仅是定性,而没有通过定性->场景->定量的路线。

需求分析的核心线索

在原有的需求分析方法中,我们往往过多的关注How,而没有关注What,或者关注了What而没有关注What背后的需求场景和背后的问题Why。这都导致我们没有进行很好的需求挖掘。需求分为业务需求,用户需求和软件需求三个层面。而我们在平时的需求分析中往往很容易直接跳到了软件需求阶段,而忽视了业务需求和业务建模。

  • 业务需求 = 目标 + 范围
  • 目标的表达必须包括目标+优势+度量+合理+可行,或者说SMART原则。同时在目标表达上可以考虑场景法,即问题是什么-》影响谁-》后果是什么-》解决方案优点是什么?
  • 范围表达的两个重要方面是人和物,人包括干系人和最终用户;物包括业务事件和管理控制点。

需求定义输出业务需求;需求捕获输出用户需求;需求分析输出软件需求。需求分析的本质动作就是分解,抽象和消除歧义。而对于需求分析的本质线索则是人,事(流程),物(数据)和接口。因此需求分析不能完全等同于建模型。分析是本质,建模仅仅是手段。

需求捕获

需求捕获是一个不断的探索过程。在需求捕获中,沟通占40%,业务占30%,技术占30%。而对于沟通往往讲究的并不是单纯的技巧,而更多的是一种思维模式和顺序的问题。在这里老师引入了思维模式的话题,也通过一个案例讲解了沟通中顺序的重要性,如先将解决方案再讲具体场景和问题(类似于我上个ppt里面强调的结构化思维的一个重要原则即开门见山的逐层展开)。在沟通中讲了三个可以借鉴的方法。

未知问题->已知问题

相对重要->相当次要(创造一种比较的环境给用户)

关注点的转换->(沟通也要洞察心理学)

隐喻(将了一个用汉字的赢字来表达项目管理核心)

探求本源(问题背后的问题,引入了《你的灯亮着吗》,讲到了没有荒唐需求,只有荒唐的解决方案)
需求访谈是捕获中的一个重要内容,这里做一个概括总结:

首先要搞清楚你访问的用户本身的角色和特点,前期要收集足够的资料,然后制定针对性问题。

应该是先访谈有了初步的聚焦后,再进行调查。

访谈的用户分类包括(用户特点,功能/流程,数据,非功能性和接口)

读《软件需求最佳实践》YOUGAN的更多相关文章

  1. 敏捷遇上UML-需求分析及软件设计最佳实践(郑州站 2014-6-7)

      邀请函: 尊敬的阁下:我们将在郑州为您奉献高端知识大餐,当敏捷遇上UML,会发生怎样的化学作用呢?首席专家张老师将会为您分享需求分析及软件设计方面的最佳实践,帮助您掌握敏捷.UML及两者相结合的实 ...

  2. 移动App測试实战:顶级互联网企业软件測试和质量提升最佳实践

    这篇是计算机类的优质预售推荐>>>><移动App測试实战:顶级互联网企业软件測试和质量提升最佳实践> 国内顶级互联网公司測试实战经验总结.阿里.腾讯.京东.携程.百 ...

  3. Atitit. 软件设计 模式 变量 方法 命名最佳实践 vp820 attilax总结命名表大全

    Atitit. 软件设计 模式 变量 方法 命名最佳实践 vp820 attilax总结命名表大全 1. #====提升抽象层次1 2. #----使用通用单词1 3. #===使用术语..1 4.  ...

  4. 【读书笔记】读《高性能网站建设指南》及《高性能网站建设进阶指南:Web开发者性能优化最佳实践》

    这两本书就一块儿搞了,大多数已经理解,简单做个标记.主要对自己不太了解的地方,做一些记录.   一.读<高性能网站建设指南> 0> 黄金性能法则:只有10%~20%的最终用户响应时间 ...

  5. 基于开源软件在Azure平台建立大规模系统的最佳实践

    作者 王枫 发布于2014年5月28日 前言 Microsoft Azure 是微软公有云的唯一解决方案.借助这一平台,用户可以以多种方式部署和发布自己的应用. 这是一个开放的平台,除了对于Windo ...

  6. Web前端开发最佳实践(10):JavaScript代码不好读,不好维护?你需要改变写代码的习惯

    前言 这篇文章本应该在上一篇文章:使用更严格的JavaScript编码方式,提高代码质量之前发布,但当时觉得这篇文章太过基础,也就作罢.后来咨询了一些初级的开发者,他们觉得有必要把这篇文章也放上来.尽 ...

  7. Atitit.软件开发概念说明--io系统区--特殊文件名称保存最佳实践文件名称编码...filenameEncode

    Atitit.软件开发概念说明--io系统区--特殊文件名称保存最佳实践文件名称编码...filenameEncode 不个网页title保存成个个文件的时候儿有无效字符的问题... 通常两个处理方式 ...

  8. 快读《ASP.NET Core技术内幕与项目实战》WebApi3.1:WebApi最佳实践

    本节内容,涉及到6.1-6.6(P155-182),以WebApi说明为主.主要NuGet包:无 一.创建WebApi的最佳实践,综合了RPC和Restful两种风格的特点 1 //定义Person类 ...

  9. 读生产环境下go语言最佳实践有感

    最近看了一篇关于go产品开发最佳实践的文章,go-in-procution.作者总结了他们在用go开发过程中的很多实际经验,我们很多其实也用到了,鉴于此,这里就简单的写写读后感,后续我也争取能将这篇文 ...

随机推荐

  1. when_did_you_born-瞟来的wp

    继上文,这次开始嫖when_did_you_born这题.前面的步骤大致是一样的就不赘述了,直接到代码分析. 字符串 这次呢在main函数处 按下F5进入调试 查看反汇编代码 可以清楚的看到它的逻辑一 ...

  2. api文档方法参数

    in型参数,带信息进去用: out型参数,方法执行结束,带着信息出来 如: CreateProcessW(     _In_opt_ LPCWSTR lpApplicationName,     _I ...

  3. SQLyog连接报错 Error No.2058 Plugin caching_sha2_password could not be loaded

    参考链接:https://blog.csdn.net/qq_22766431/article/details/80628583 win10系统更新安装Mysql8.0,连接SQLyog的时候出现下面错 ...

  4. oracle根据一张表更新另外一张表

    知道是两张表进行更新,之前作过mysql的,直接就写了: update a,b set a.code = b.code wehre a.id = b.id 然后就报错了,上网查了下知道oracle不能 ...

  5. other#apache-commons

    if you want to be a better javaer, you should  spent time on apache commons.

  6. java#StringBuffer&StringBuilder

    StringBuffer A thread-safe, mutable sequence of characters. A string buffer is like a String, but ca ...

  7. Project导入RedMine甘特图展示

    前端时间因公司业务需要使用RedMine来管理项目进度. 但是使用其自带的csv导入工具无法完成导入. 而我是java开发,并不会所谓的ruby语言,自然无法在段时间内完成此导入功能的修改. so,经 ...

  8. mac搭建nginx

    0.介绍 Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务.Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler ...

  9. 2020寒假 05 ——eclipse安装scala环境

    在eclipse中安装Scala环境 1安装eclipse插件步骤,点击help,选择Eclipse Marketplace 2.输入Scala,点击go 3.选择搜索到的Scala IDE 4.7. ...

  10. manjaro更换深度桌面 卸载ked桌面

    下载需要的桌面环境 pacman -S deepin deepin-extra 修改/etc/lightdm/lightdm.conf sudo nano /etc/lightdm/lightdm.c ...