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

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.htmlhtml

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

3  开发速度的算术题

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


 

4. 一个目标/决心/估计的故事:某项目原本进行得很顺利,大领导非要全体人员脱产开一天的动员大会,会议结束时, 领导热情地问你们:你们对如期完成项目有信心么?  这时,项目经理站起来讲:咱们原本是能够定期完成的,如今开了一天会,咱们已经延期了一天。工具

你们以为这样的项目经理是好仍是很差?学习

同窗们的意见:网站

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

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

你有什么意见?.net

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

    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. 如何平衡各类需求, 若是只知足其中部分需求, 会怎么样?

 

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

 

 

 

在上图中,用户但愿软件开发的又快, 又便宜 (人工便宜),质量又好, 最好是免费的。  那么,若是只知足部分的需求, 咱们会获得什么样的软件呢?

例如,上图的 ① 说明, 若是但愿软件作得又快,又低成本(人工便宜), 不考虑其余要求, 那么,咱们会获得大体什么样的软件呢?

例如,上图的 ⑤ 说明, 若是但愿软件是免费的,并且要很快交付,越快越好, 那么,这样的软件有什么特色呢?

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

相关文章
相关标签/搜索