前言:
有时间去读两本书,不如拿读两本书的时间去精读一本书。于是粗略读完《构建之法》三个章节后,我又重新回顾了一遍,勾画出了一些我不懂的地方,带着这些问题,我去查阅了相关资料,结合个人感悟写成了这篇博客。其中有我的笔记,也有我的困惑,希望跟大家一起交流谈论。
第一章:
问题一:探究软件企业中实际开发中运用到的商业模式到底是什么样的?
原文回顾:
软件企业 = 软件 + 商业模式
商业模式影响了一个软件企业的成败
我的观点:
查询相关资料后,我了解到,传统的软件开发模式,比较类似于互联网中的Web 1.0的门户网站,是以产品为中心,客户围绕着产品中心做圆周运动,而不是以客户为中心。而Web 2.0要逐步完成“去中心化”的工作,让客户成为中心,产品围绕客户的中心做圆周运动(http://www.williamlong.info/archives/1092.html)。回想自己以前开发新闻管理系统的经历,根本没有涉及需求分析与软件测试,两三个人熬夜做出来了,仅仅满足运行通畅这一基本条件,谈何满足以用户为中心,这样的软件一发布,哪能吸引住顾客?贯彻Saas(Software-as-a-Service)理念于今后的开发中显得尤为重要。
问题二:看到需求分析的探究时,我想到了乔伯斯说过这样一句话,“不必做市场调查,因为消费者自己也不知道自己想要什么”,那么如何正确理解这一话呢,需求分析是为了满足用户的所有需求吗?到底是有了需求再有产品,还是有了产品才有需求?
原文回顾:
需求来自于实际,而不是自己想象出来的“需求”或者人云亦云的需求(例如:虚拟的、没人用的、也没有数据的“图书管理系统”)。
我的观点;
查询资料,我认识到,在进行用户分析时,会对目标用户进行分类,:前卫(10%)、普通(80%)、保守(10%)。而在分析用户需求时,着重对前卫人群的需求进行分析,往往这些人都是比较新潮、时尚、有创意、个性以及流行的趋势。一个有“创新”的产品,往往不是用户想到的,而是用户接受了我们针对需求所做出的解决方案。于是,用户需求调研不是通过需求提出什么样的功能或服务,而是去验证我们的产品理念是否能让用户接受。这也许就是乔布斯说出这句话的本意。
第二章:
刚开始读第二章,感觉很迷茫,很多概念以前都没有接触过,比如代码覆盖率,单元测试,回归测试等等。于是自己看了几遍博客,对这些概念有了一些初步的认识
问题一:原文中提到了代码覆盖率,那么什么是代码覆盖率?
原文回顾:100%的代码覆盖率并不等于100%的正确性!
我的观点:
代码覆盖率常见的几种方式浅谈
http://blog.csdn.net/qq_30953277/article/details/52174482
代码覆盖测试
百度文库中这样说,代码覆盖(Code coverage)是软件测试中的一种度量,描述程式中源代码被测试的比例和程度,所得比例称为代码覆盖率。在一些博客中还提到了代码覆盖率的几种度量方式。最常用的几种:语句覆盖、判定覆盖、条件覆盖、路径覆盖。同时我还认为不能盲目追求代码覆盖率,覆盖率数据只能代表你测试过哪些代码,不能代表你是否测试好这些代码。举一个博客中的例子我们看下面的被测试代码:
{
return a / b;
}
假如我们的测试人员编写如下测试案例:
测试人员的测试结果会告诉你,他的代码覆盖率达到了100%,并且所有测试案例都通过了。然而遗憾的是,我们的语句覆盖率达到了所谓的100%,但是却没有发现最简单的Bug,比如,当我让b=0时,会抛出一个除零异常。所以不要过于相信覆盖率数据。
问题二:为何要做单元测试?如何一步步进行单元测试?它的流程是什么样的?
我的观点:
推荐博客:如何进行单元测试
对于如何实现单元测试,我希望老师能给予更详解的讲解。
第十六章:
问题一:迷思之一,灵光一现,伟大的创新紧随其后
原文回顾:
不要一开始就想着找到并拼对所有的拼图块,以为能够打造一个巨大的创新。
在“现代软件工程”课上,许多同学也提出了不少宏伟的创新想法,但是到了课程结束,什么也没做成,只剩下一个空的构想。
我的观点:
如何才能使空的构想变成现实呢?结合第一章软件开发的不同阶段,从玩具阶段到业余爱好者,再到探索阶段,最后到成熟的产业阶段,我想这同样适用于个人的发展。我们有一个宏伟的构想,尽管目前没有能力去实现,但我们可以从培养兴趣爱好一步步做起,积累经验,做一些小的项目,创新不是偶然间取得的,它需要知识的积累,等到时机成熟,没准下一个砸向牛顿的苹果可能会砸向你。
尾言:
《构建之法》这本书写的妙趣横生,一些难懂的专业术语,在作者朴素又抽象的阐述下,变得简单。而且这种做中学的模式,让我在实际的开发中有了更多的收获,在此为老师们的这种教学模式打call。