构建之法阅读笔记05
这次阅读构建之法我主要学习了第8,9章其主要内容包括如下:
7.需求分析
我们开发软件是为了解决现实社会和生活中的各种问题。人们的需求各种各样,我们该如何找到需求呢?
1.获取和引导需求。需求是需要挖掘的,我们既可以引导客户,结合自身行业经验,得到需求,也可以分析技术的发展趋势和全球产业变化社会发展的大趋势分析需求,如大数据云计算移动互联网。
2.分析和定义需求。规整需求,定义需求的内涵,从各个角度量化需求。
3.验证需求。如果需求分析没有做好直接开工的话,容易做无用功,造成返工。软件团队要跟利益相关者沟通,通过分析报告,用户调查或演示等形式向他们验证软件团队对于这些需求的认知。
4.需求管理。如上所说,需求会不断变化,或者说解决需求有了新的捷径和方式,这些都要求我们因地制宜,跟着变化而变化。
5.需求的分类:功能性需求要求产品必须实现某些功能,开发过程需求要求开发流程必须产生哪些文档在什么时间交付,非功能性需求要求服务质量例如12306网站要做到实时响应。
那么,作为一个开发者,需不需要到需求中来呢,非常需要,因为软件的各种约束各种技术实现会影响到他们的工作过效率。我们一定要让相关角色在需求分析阶段有机会提出他们的需求和一件。
8.创新分析
创新可以使改良型的,在现有的软件中增加几个新的功能,把某个程序变得更快一点,把程序移植到新的平台。颠覆性的创新,一个新的产品导致就得产品或产业发生巨大的变化或消失。
但是如何按部就班地分析需求,有条理地说服别人你的创新呢?有NABCD模型。
Need,你的创意解决了用户的什么需求。
Approach,找到了需求,就需要使用独特的作法来领先于其他软件了。独特的作法有技术上的,比如有人脸识别技术,有超大规模的数据处理能力。还有商业模式上的,
第一个团购,地域上的,第一个苏州公交系统,行业上的,嘀嘀打车。
Benifit,这些实现可以给用户带来什么好处呢,为什么为了达到这个好处用户会花费时间金钱成本去迁移呢?
这也是我首次仔细阅读人月神话的第一章焦油坑,因此我总结了几点感触:
1. 编程系统产品开发的工作量是供个人使用的、独立开发的构件程序的九倍。
2. 编程行业的一些内在固有苦恼:
(1)将做事方式调整到追求完美,是学习编程的最困难部分。
(2)由其他人来设定目标,并且必须依靠自己无法控制的事物。
(3)真正的权威来自于每次任务的完成。
(4)任何创造性活动都伴随着枯燥艰苦的劳动,编程也不例外
(5 人们通常期望项目在接近结束时(bug、工作时间)能收敛得快一些,然而软件项目的情况却是越接近完成,收敛得越慢。
(6)产品在即将完成时总面临着陈旧过时的威胁。