现代软件工程 第八章 【需求分析】练习与讨论

1  扩展阅读
下面两篇文章也说明了软件估计的难度:
    Steve McConnell 软件估计的 10 种罪:
    http://www.ewh.ieee.org/r5/central_texas/austin_cs/presentations/2004.08.26.pdf
    Quora精选: 为什么软件开发周期总是预估的2~3倍
    http://jandan.net/2013/07/16/quora-software-development.html

2  用户调研的对象
我们说了这么多用户调研,很多人假设评价软件的就是购买软件的,就是使用软件的,但是未必。看下面的例子:
1. 你要写一个中学生学习英语的软件,你找谁去做用户调研?
    中学生 - 最终用户。
    家长 - 他们是要掏钱的人,他们不会每天都用软件,有些人都不太会英语,但是他们也有需求。
    学校老师 - 他们是有巨大影响力的人,他们说不定立下一道规矩,我们班级就用某某软件! 
2. 你要写一个企业管理软件, 你要找谁去做用户调研? 请列出你认为重要的用户类型和你认为合适的用户调研的方式。

3  开发速度的算术题

在一个软件项目中,软件团队预计每天的进度为 30 小时(即,完成了30小时的工作量)。当项目完成了一半的总工作量的时候,大家发现实际的进度为15小时/天,问:在余下的时间中, 团队的进度要到多少,才能在项目结束时让整个项目的平均进度恢复到每天30小时工作量?


 

4. 一个目标/决心/估计的故事:某项目本来进行得很顺利,大领导非要全体人员脱产开一天的动员大会,会议结束时, 领导热情地问大家:大家对如期完成项目有信心么?  这时,项目经理站起来说:我们本来是可以按期完成的,现在开了一天会,我们已经延期了一天。

大家觉得这样的项目经理是好还是不好?

同学们的意见:

  果冻:首先,延期一天也叫延期吗…其次居然把进度卡这么精确没有缓冲时间我估计项目本来就得延期。。。

  大牛:大部分情况下项目按期完成并没有多大价值,除非是为了给团队一点阶段性的激励

你有什么意见?

大牛说,我接一个私活,很简单的,就不用搞那么多的形式主义了吧,我们直接开干,用代码说话!请分析下面例子

    http://www.cnblogs.com/yhyjy/p/4444094.html

如果你来接这个私活,应该怎么做?

 

专家的意见供大家参考:

    The two causes of runaways that stand head and shoulders above all others are poor (usually optimistic) estimation and unstable requirements.

Glass, Robert L. (2002-10-28). Facts and Fallacies of Software Engineering (Kindle Locations 736-737). Pearson Education. Kindle Edition.

 

    Most software estimates are made either by upper management or by marketing, not by the people who will build the software or their managers. Estimation is, therefore, done by the wrong people.

Glass, Robert L. (2002-10-28). Facts and Fallacies of Software Engineering (Kindle Locations 853-854). Pearson Education. Kindle Edition.

 

5. 具体项目练习:

    http://www.cnblogs.com/xinz/p/3308608.html

 

6. 看看缝纫机大叔是如何解决用户需求的

    http://weibo.com/2694810701/BpI8Km1UW#_rnd1412244033760 

 

8. 用户真正的需求和正确的解决方案

    面对一个比较难的问题, 有时候项目经理或者程序员会想到一个奇妙的主意,哇,就这样做吧,搞定!  但是一些听上去很妙的办法真的解决了用户的问题? 请看这个例子,用户发现 “原理” 之后的心情:

       http://www.zhihu.com/question/26806900/answer/34095090

 

       原理:什么原理能够在不越狱的情况下识别骚扰电话呢?

       尼玛原理就是在老子的通讯录里面自动添加上了成千上万个骚扰电话啊!

 

       老子打开通讯录发现了从haoma1 到haoma7,这7个新添加的联系人啊!

       每个联系人里面都储存了成千上万去TM的谁知道有多少个号码啊!

       然后统一整了个头像是题主配的那个图的样子啊!

       这样就尼玛的算是在不越狱下帮我识别骚扰电话了么!

 有更好的办法么?

 

9. 用户的需求似乎都被满足了,咋办?

    在市场上已经有一个主流软件满足的大部分用户的显性需求的情况下,后来者如何挖掘用户需求?

    http://www.zhihu.com/question/22310847

    请为后来者想几个办法, 用户的需求真的被满足了么?

 

10. 团队练习 - NABCD 写作,视频,并且互评

请同学们把自己项目的NABCD 都写出来。

1) 列成详细的条目,用具体的事实和分析说明。

2)把这些要点都组合成为一段话  --  当你要向别人兜售你的项目的时候, 你通常只有很短的时间 (电梯演说),能否自然而有条理地把项目说清楚?  请用你产品中实际的元素代替 <> 中的抽象概念。

     各位领导/投资人/用户/合作伙伴: 我们的产品 <foo> 是为了解决 <目标用户> 的痛苦, 他们需要 <Need>, 但是现有的方案并没有很好地解决这些需求,我们有独特的办法 <Approach>,  它能给用户带来好处 <Benefit>, 远远超过目前市场上的竞争对手 <Competitor>。  同时,我们有高效率的 <Delivery> 方法,能很快地让大部分用户知道我们的产品,并进一步传播。  

3)把上面的这段话录制为视频,上传到视频网站,并把链接发到个人/团队博客上。 

      NABCD参考 (参见 http://www.cnblogs.com/xinz/archive/2010/12/01/1893323.html)

  同学们的实际作业例子:

    http://www.cnblogs.com/liangzhilin/p/5462486.html

    http://www.cnblogs.com/jjy520/p/5463552.html

    http://www.cnblogs.com/hgf520/p/5457322.html 

 

4) 每个团队发布了博客/视频之后,  其他团队对每一个团队的博客进行排名 (1,2,3... ) ,排名没有并列。    并且把排名的理由写到博客上, 对每个团队的分析不得少于 140 字 (除非这个团队没有写博客或者提供足够的材料) .

  如何写出140 字的分析? 

    对这个项目的一句话描述

    这个项目的优点

    这个项目计划的缺点  (需求符合实际么? 符合你的认知么?技术能满足用户的需求么? ...)

    如果你来领导项目,你会做什么不一样的事情?

这个练习的目的是让团队运用掌握的软工知识去评价别人做的需求分析。   然后助教自己也对所有团队的 NABCD 博客排名, 这样, 助教就能够比较快速地收集到所有团队 需求分析的分数。  

 

11. 用户界面设计,快速设计并验证需求

  不要等到所有代码写好之后再去验证需求,请用合适的原型设计工具描述用户界面和需求,然后找用户验证。请用下面工具来描述你的产品原型:

  工具 Axure  http://www.cnblogs.com/powertoolsteam/p/4763010.html

  墨刀: https://modao.cc/ 

  MockPlus: mockplus

  Balsamiq Mockup: https://balsamiq.com/products/  

  GUI Design Studio: https://www.carettasoftware.com/guidesignstudio/   

 

12. 如何平衡各种需求, 如果只满足其中部分需求, 会怎么样?

 

顾客对于要交付的软件和服务,都是有很多美好的需求的,例如,交付要快, 人工要便宜, 质量要高,最好软件本身是免费的。 但是一个软件团队的确不能同时满足这么多需求,如何让顾客知道她们的“多快好省”愿望是不可能达到的呢? 

 

 

 

在上图中,用户希望软件开发的又快, 又便宜 (人工便宜),质量又好, 最好是免费的。  那么,如果只满足部分的需求, 我们会得到什么样的软件呢?

例如,上图的 ① 说明, 如果希望软件做得又快,又低成本(人工便宜), 不考虑其他要求, 那么,我们会得到大致什么样的软件呢?

例如,上图的 ⑤ 说明, 如果希望软件是免费的,而且要很快交付,越快越好, 那么,这样的软件有什么特点呢?

请把 ① 到 ⑦ 的需求组合会导致什么样的软件, 会出现什么样的问题, 都列出来。

 

 

 

posted @ 2014-07-18 23:44  SoftwareTeacher  阅读(2728)  评论(9编辑  收藏  举报