天天看点

读《构建之法》(部分)有感

读《构建之法》(部分)有感

讲软件工程的书有很多,笔者很惭愧,并没有读过多少。不过在读这本书的时候,也感到了其与其他此类书的差别。写软件工程的书,很多都太过注重“工”字,读起来感觉不如这本有活力,这本书像是一个在软件企业多年的人面对面向你讲述他这些年的感触与经验,他有一套连贯的思维,更加注重“人”而不是“工”。

由于之前并没有对软件工程有比较完整的认识,思维一直停留在程序的表层,所以刚开始读时感觉不能很好的理解。在读的过程中,有很多书中的概念与思路与自身所认识的有偏差或冲突,停下来思考又没有得到恰当的答案,于是我又往前翻页……这种读法效率实在太低下了,而且并没有让我学到一些东西,反而陷入了自我纠结的误区。

然后我找到了原因,这类介绍某种思维体系的书要知道他在说什么,首先你要按着他的思路走,因为我一直游离在外面,所以不能很好的理解。那么我就接着往下看了。

第一章     概论

问题:需求分析阶段,怎么判断用户需求是否合理?那些看似鸡肋的需求到底要不要设计呢?

“顾客有各种需求,有些靠谱,有些不靠谱;有些容易做到,有些难以做到。软件团队需要从需求分析开始,把合适的需求梳理出来,然后逐步展开后续工作,如设计(软件架构)、实现(写数据结构和算法)、测试,到最后发布软件。”

在概论这一章中,提到软件团队在进行构建时,首先就要考虑到用户需求的问题。作为一个个用户,自然是希望自己所用的软件功能比其他软件都要好。本书在提到民用飞机功能的需求时,考虑安全性的问题,设置了该项功能,虽然被使用的概率很低。这种需求在每个领域都适用吗?我觉得不是的。有些软件设计了太多的功能,看上去是迎合了各类用户的需求,但因为内容太杂,大多数用户很嫌弃这种冗杂的界面和复杂的操作。但也有软件靠着这种功能得到了用户的青睐。

在通过网络搜索之后,我发现需求分析往下分还有业务需求,用户需求,功能需求,非功能性需求。一个优秀软件需求分析师,要有业务能力的同时,还要有技术背景。网络上有很多从业人士认为,要在技术部呆两年,再在产品部呆两年,做需求分析师才行。如此可以了解到,需求分析在软件工程流程中的重要地位。那么,考虑到这个问题的复杂性,就谈那些而被认为比较鸡肋的功能吧。翻看手机短信时,我发现短信现在竟然可以发送视频和图片,这些都是用流量的。在智能手机普及的现在,用微信和qq比用短信方便多了,还有各种小功能,还省钱,为什么在一部智能手机上还会有这样的功能呢?看上去什么都能发,很符合用户的需求,但从实际使用上看,这真的是符合需求吗?

问题:在软件工程专业搞理论研究有必要吗?

谈论到软件工程与计算机的关系时,作者言计算机科学子领域的划分有偏理论的,也有偏实践的,与软件工程有很多的交叉领域。而软件工程则是毫无疑问的实践领域。“计算机理论的进展会帮助软件工程;软件工程的进展会帮助计算机科学家更有效地进行实验和探索。”那么,软件工程存在学术派吗?既然计算机科学已承担了理论研究,那么软件工程还需要这方面的人才吗?

在知乎等论坛上,有不少人在软件专业将来的选择上很迷茫,尤其在考不考博之类的问题上。这就是研究还是做工程的问题吧。“想走科学研究这条路的,应该选计算机科学与技术专业”“软件工程就是做工程,搞什么学术啊”“搞软件工程学术研究还是很有前景的”大家都有不同的想法。我在想,软件工程的学术研究是否和计算机科学相同呢?既然重点在与做工程,那么考博会不会没有什么必要呢?若都是在研究某方面的,选择计算机科学比软件工程不会更好吗?

第二章     个人技术与流程

问题:什么是API?

不止一次看到API这个词了,查了一下它的意思,百度百科是这样说的。

“API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。”

这与我先开始想的不同。在第一章中,论及软件企业的商业模式时,“如果有人要开发社交网络软件,同时提供API让别人能二次开发……”。于是,我便把它想做软件中的一个功能,一段特殊的程序。第二章中又在单元测试中提到要对API进行测试,又要让对方明白API的语义,理解API。我就不是很懂了。

接口在我想象中类似于插头的插孔,强调两者的对接,有人把它理解成一个办证的窗口,可我怎么想都觉得很抽象,不是很懂。

第十六章 IT行业 的创新

问题:用户忠诚度是否可以通过一些“小手段”来提升?

“在用户中招募粉丝,让粉丝有参与感并整合到市场推广中。”

一件产品刚出世时,它不可能生来就有无数用户忠诚拥护,像是一款没什么名气的香水,很多情况下获得热度都是来自于它背后的推手。明星为了获得关注与人气,其经纪公司会买水军,很多人恰是在水军的影响下才知道这个明星,成为他的死忠粉。

那么用户忠诚度可不可以在前期用买水军的方式获得?在很多年前360与腾讯的战争中,也有不少引导舆论的两方水军,无形中造出来一批忠实用户,这种行为是否违反软件到的规范呢?

本书的英文名为《Build To Win》,正如作者所说,是面向市场的,所以在读书时能感到一种商业化的模式,侧重点也是更偏于实践中的问题。同时他十分注重团队而不是个人,是真正把人放在团队中考虑,要求作为一个软件工程师在软件开发流程中该具备的能力。相信在一个学期的学习后,我们会对软件工程有一个较为完整的认识。