《构建之法 - 现代软件工程》课件

互联网时代对于创新者来说, 既是一个伟大的时代, 又是一个糟糕的时代。 你有很多机会做出影响世界的产品,  但是, 似乎任何想法都被别人想到过了, 做出来了, 上市了, 移植到各种平台上去了…  那么我们后来人除了羡慕别人生得早, 还有什么机会呢?  但是往往不经意间, 在同学们热衷于偷菜, 三国杀, 玩朋友圈的时候,  又一批新的想法, 新的技术蜂拥而至, 别人又想出了新的点子, 新的商业模式.  我们的菜偷了不少, 三国杀玩了好几个通宵,  但是想法还是没有 …

在《现代软件工程》 这门课里, 同学们不能穿新鞋, 走老路 - 学习了很多新技术, 新的开发模式, 新的团队管理方法, 却做一个毫无新意, 没人使用, 演示后就扔掉的东西 (例如: 虚拟的学籍管理系统, 图书馆管理系统…)。  我们要做实用并且创新的项目。

那我们怎么提出新的创意, 怎么说服别人我的创意是靠谱的?  有些同学会通过“二拍”的办法来解决:

- 拍脑袋: 嘿, 咱们做一个图书拍卖网站怎么样?

- 拍胸脯: 没问题的, 市面上Asp.net 的书很多, 我看两个晚上就能写出一个购物网站。

这些事情光靠拍脑袋和拍胸脯是不够的, “二拍" 的后果往往是第三拍 - 拍屁股走人.  有些同学可能还会遭到脑袋被砖头拍, 或者被胸袭的后果。 如果不能拍脑袋, 胸脯, 屁股,  那我们怎么才能想出靠谱的想法,  然后有条理地说服别人?  在宿舍里睡觉, 聚餐, 喝酒, 搞头脑风暴?

下面是一个比较系统的框架 - NABCD 模型, 可供大家参考:

1) N (Need 需求)

你的创意解决了用户的什么需求?   这个需求可以是明确的, 公开的 (例如: 希望能上网玩三国杀).  也可能是说不清道不明的, 例如 - 以前没人说: 嗯, 如果我能找到这样一个网站, 我可以去偷菜, 就好了…

我们要充分了解用户的痛苦, 他们对已有软件, 服务不满意的地方。但是用户往往也不知道颠覆型的创新。 例如亨利 · 福特 当年发明汽车之前, 如果他深入用户之中, 了解他们的需求, 用户会告诉他 - 我希望我的马车更快一些!

需求可以进一步分析:

这是刚性需求,或辅助性需求?需求的量有多大? 需求会一直存在么? 很多同学想象力非常丰富,觉得一定会成千上万的用户来使用我想出来的软件。那么可以实践一下,找到10个潜在用户,他们表示“一定会试用你的软件”, 那么就算你找到了合适的需求 (Need).

2) A (Approach 做法)

好, 你找到了用户的痛苦,  下一步, 得看看你有什么招数, 特别是独特的招数, 来解决用户的痛苦。  你不能说我会C++, Java,所以我一定可以写好这个软件.  你得有独特的办法,  例如, 有人脸识别技术, 会做超大规模的数据处理。 那你 (你的团队) 会什么呢?  只会冒泡排序?

这些招数不光是技术上的, 也可以是商业模式上的, 地域的, 人脉的, 行业的.

招数也可以进一步分析:

基本的招数, 独特的招数, 招数的可行性, 技术可行性,法律法规可行性。

一个刚成立的团队,他们对自己的实际能力往往不太了解。 例如有学生说 - 我懂 Java,其实他只是上过一个讲Java 的课,开卷考试通过而已,和在实际中能用 Java 语言和相关的框架按时按量地完成任务还差得很远。 那么,团队会碰到什么困难,团队成员有什么能力和办法来解决这些困难呢?  请讲一讲。

3) B (Benefit  好处)

这时候你已经弄清了需求,有了独特的解决问题的办法,  那你这个产品/服务会给客户/用户带来什么具体好处呢?  如果用户已经有一个解决方案 (例如用户已经在用 QQ 聊天),  那你的产品具体有哪些好处, 能让用户离开现有产品, 使用你的产品来聊天呢?  另外这还有一个 Benefit/Cost (成本) 的问题。  如果你要用户必须有8G 内存, 最好的视频驱动, 20M 宽带连接, 才能使用你的 “更好的”视频聊天工具,  那会有多少用户愿意支付这个成本呢?

Benefit 还可以指对自己团队/公司的好处。

4) C (Competitors 竞争)

竞争对手也没有闲着, 这个市场有多大, 目前有多少竞争者在瓜分, 你了解么? 竞争者是单独的,还是存在一个行业链,各个阶段的竞争者都一样么?  你如果不是最先进入某个市场的产品, 你还能赢么? 我们的新想法可能要和已有的产品竞争,说服用户放弃一个已经使用了一段时间的产品,来用我们的产品,是有不少困难。

请注意:我们的NABCD中的 N (Need)需求,要经得起考验。 例如:问:你希望有一个帮你记得事情的程序么? 答:需要!好!  但是问题就不能这样简单地解决了(太肤浅)。  项目组还要再问:现在市场上已经有很多这样的程序,为何它们没有帮助到你? 为何我这个程序就一定能帮到你?  为何你一定会坚持用这个程序?  要说明项目组的程序为何能成为用户较长时间使用的产品,优于现有产品(列出具体理由)。

例如:项目小组问用户:“你希望有一个帮你记得事情的程序么?”   答:需要!项目组说:“好!说明我们会有很多用户。调查圆满成功!”

且慢! 问题就不能这样简单地解决了(太肤浅)。 项目组还要再问:现在市场上已经有很多这样的程序,为何它们没有帮助到你? 为何我这个程序就一定能帮到你? 为何你一定会坚持用这个程序? 要说明项目组的程序为何能成为用户较长时间使用的产品,优于现有产品(列出具体理由)

我们还要想到, 还有一个隐藏着的竞争对手是 “不消费” -- 很多用户根本就不用这个领域的任何产品, 你怎么能让他们完成从 0 到 1 的转变? 如果你成为他们的第一个产品,那你就是 First Mover,  有很多优势。   大家可以看看有关 First Mover Advantage (FMA),  Second Mover Advantage (SMA) 的描述。  

关于更多NABC 以及相关的案例, 论述, 大家可以看这本很厚的书 - Innovation: The Five Disciplines for Creating What Customers Want

5) D (Delivery 交付,  Data 数据)

在练习了多次的 NABC 之后, 我意识到也许还应该加一个D: Delivery。 怎样把你的创新产品交到用户的手中?

例1, 你想到了一个好主意, 建一个比 hao123 更好的导航页面!  我们姑且认为NABC 都没问题,  那如何把这么好, 这么简单的产品交到 (Deliver) 用户手中呢?   用户怎么能知道你的产品?你如何利用互联网(或者其他途径)把这一福音传遍你的目标用户?  这一方面在早期的软件开发者的角度来看,应该是 “市场部门” 该做的事。  但是,现在网络已经成为绝大多数软件产品一一部分,对社交网络的应用不会发生在产品开发完毕之后,而是在早期就会成为产品规划和功能的一部分。

例2, 你想到了一个手机的应用, NABC 都不错,  那如何把产品交到千万个用户手中呢? 你怎么去找到你的目标用户?光靠在几个App 市场去投放么,谁会看见这个App 呢?这是远远不够的!

除了交付给用户的手段,你还要了解你的应用到底产生了什么效果。 我们还要看 D: Data 你有什么数据来证明新的功能带来的好处? 团队做了用户调查么? 有什么量化的指标, 例如 NPS(净推荐值)?

注意,“创新”可以分为改良性的创新 incremental innovation - (软件中增加几个功能,  把某个程序变得更快一点,  把程序移植到新的平台), 和颠覆性的创新 (disruptive innovation).   这两种类型各有其重要性, 颠覆性的创新往往还没有明确定义的市场或竞争对手,但并不能说此类创新的威力不大, 创新者要锻炼表达能力,把自己项目真正的独特之处展现出来。

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

  1. 用具体的事实和分析说明你项目的特点。特别是要说明自己找到了至少 10 个潜在用户,他们会试用你的产品。 例如你们班的同学, 请把他们的名字写出来。
  2. 把这些要点都组合成为一段话  --  当你要向别人兜售你的项目的时候, 你通常只有很短的时间 (电梯演说),能否自然而有条理地把项目说清楚?  请用你产品中实际的元素代替 <> 中的抽象概念。

全新的产品:

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

增量改进的功能:

各位领导/合作伙伴: 我们的 <功能改进> 是为了解决 <目标用户> 的痛苦, 他们需要 <Need>, 但是现有的方案并没有很好地解决这些需求,我们有独特的办法 <Approach>,  它能给用户带来好处 <Benefit>, 远远超过竞争对手 <Competitor>,包括我们以前的版本。我们有数据 <Data> (用户调查)支持这一个结论。 我们相信新的改进能给我们带来 <Data> 的业绩改善 (用户量,使用时间,评价,收入)。

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

【作业2】 以终为始,假设一切顺利,产品发布了,你怎么宣传这个产品呢?请写一个新闻稿,描述你的新产品在新闻发布会上的情况

标题  用读者(你的目标客户)能理解的方式给产品起个名字。副标题  描述产品的目标客户群,他们将会得到什么好处。在标题下用一句话说清楚。总结  总结产品和带来的好处,核心内容。设想你读者只关注这一段,不会再往下看了。问题  描述你产品解决的问题。解决方案  描述产品如何优雅地解决问题。你的引证  引用一位你团队领导所说的话。如何开始  描述开始使用我们的产品是多么的简单。客户评述  假想一个客户的评价,描述他们如何体验到你产品带来的好处。(这个时候要用到 典型用户和典型场景了)收尾和号召  收尾然后为读者指明下一步的方向。

现代软件工程课件 需求分析 如何提出靠谱的项目建议 NABCD相关推荐

  1. 现代软件工程讲义 如何提出靠谱的项目建议

    互联网时代对于创新者来说, 既是一个伟大的时代, 又是一个糟糕的时代. 你有很多机会做出影响世界的产品,  但是, 似乎任何想法都被别人想到过了, 做出来了, 上市了, 移植到各种平台上去了-  那么 ...

  2. 软件工程导论——需求分析总结

    软件工程导论--需求分析总结 需求分析是软件定义的最后一个阶段,它的基本任务是准确的回答"系统必须做什么"这个问题(系统必需完成哪些工作,而不是确定系统怎样完成它的工作) 需求分析 ...

  3. 借助计算机软件进行文学写作,网络文学创作对编辑提出的新要求及建议

    摘要:互联网文学的快速发展,诞生了很多网络文学编辑,与传统的文学创作相比,网络文学创作在内容和形式上更加多元化,对网络文学编辑的要求与传统编辑工作也有比较大的差异.本文根据现有的研究资料,详细分析了网 ...

  4. 计算机三种不同类型的用户账户,网络操作系统——Windows Server 2008篇 教学课件 1 作者 刘本军 李建利 [项目5]用户与组的管理.ppt...

    网络操作系统--Windows Server 2008篇 教学课件 1 作者 刘本军 李建利 [项目5]用户与组的管理.ppt (76页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就 ...

  5. 一级建造师课件下载建筑工程行业会计分录汇总非常全建议收藏!

    一级建造师课件下载建筑工程行业会计分录汇总非常全建议收藏! 1.基本流程 凭证制单→凭证审核→记账→对账→其他系统结账→总账系统结账 2.工资.社保费.个人所得税的核算 根据每月末人力资源部和各项目部 ...

  6. 创业第26天,客户请吃饭,提出了几个项目的大致意向

    创业第26天,客户请吃饭,提出了几个项目的大致意向,回去之后编写了各个项目的预算与周期,提交客户审阅.

  7. 软件工程之需求分析②(软件需求规则说明书、数据要求说明书、初步用户手册、软件开发实施计划)

    软件需求分析阶段研究的对象是软件项目的用户要求,如何准确表达用户的要求,怎 样与用户共同明确将要开发的是一个什么样的系统,是需求分析要解决的主要问题.也就 是说需求阶段的任务并不是确定系统怎样完成工作 ...

  8. 软件工程 之需求分析2

    软件工程需求分析2 软件工程需求分析 基本概念 需求分析阶段的任务 需求工程过程 需求分析的原则 1.能够表达和理解问题的信息域以建立数据模型 2.建立描述系统的功能和行为的模型 3.能够对问题进行分 ...

  9. 软件工程中需求分析的重要性

    此篇文章系在网易博客上转来他人的编程经验分享----纯属学习借鉴 定义 在软件工程中,需求分析指的是在建立一个新的或改变一个现存的电脑系统时描写新系统的目的.范围.定义和功能时所要做的所有的工作.需求 ...

最新文章

  1. video视频播放以及主流浏览器兼容
  2. c语言中的static变量和static函数
  3. hive 解密_hive 中自定义 base64 加密 解密 UDF 函数
  4. 中国金控(00875.HK)获主席兼首席执行官林裕豪增持15.8万股
  5. [2018.12.26]BZOJ1022 [SHOI2008]小约翰的游戏John
  6. Shell 脚本编程 基本语法:
  7. C语言size_t和size_type比较
  8. 【URAL - 1114 】Boxes (dp,组合数学)
  9. 产品新人没有完整项目经验?这篇文章帮你打开思路
  10. Linux课程实践二:编译模块实现内核数据操控
  11. 【人工智能】全网首发!2020年AI、CV、NLP等最全国际会议、顶会时间汇总!!
  12. 轻松搞定 SpringBoot 的邮件服务
  13. k3s 部署, 使用注意事项
  14. 修改dell 序列号_怎么将xp的vlk序列改为dell oem序列号工具
  15. Pazera Free MP4 To MP3 Converter 1.6 中文64位+32位便携版,免费的视频转换器
  16. kettle软件的使用
  17. 入门用Python进行Web爬取数据:为数据科学项目提取数据的有效方法
  18. SharePoint 2013 安装中间出错了怎么办? 每一次安装都是一段曲折的路【1603(0x643) 】...
  19. sql2000安装失败的解决方法
  20. LTE上行物理层传输机制(6)-周期CQI、PMI和RI的发送时机

热门文章

  1. python语言中的数据类型之字典
  2. Python面向对象(类的成员之属性)
  3. 修改maven打包名字
  4. 静态方法和实例方法(mark)
  5. IOS 获取农历方法(转)
  6. lucene索引创建
  7. Junit 内部解密之一: Test + TestCase + TestSuite
  8. linux的基础知识——signal信号捕捉,信号集操作函数
  9. MATLAB图自编码器
  10. 【剑指offer】面试题22:链表中倒数第k个节点(Java)