构建之法阅读笔记之第一、二、十六章

说明:*随笔中的引用有些可能不是《构建之法》原文中的整句,而是经过拼凑总结的,若给老师或读者带来一些困扰,请谅解和提出问题。

      *随笔中包含了我的阅读笔记和该次作业的要求,希望不要混淆。

阅读笔记之第一章 绪论

  该章受益最深的便是让我理清了什么是程序、什么是软件工程、什么是软件,以及它们之间的关系。

程序(源程序)就是一行行代码,是建立在数据结构上的一些算法,故而有“程序=数据结构+算法”这句名言。——P1~P2

软件工程是把系统的、有序的、可量化的方法应用到软件的开发、运营和维护上的过程——P8

软件是可以运行在计算机及电子设备中的指令和数据的有序集合——P8

它们三者之间可以推断出存在“软件=程序+软件工程”的关系。——P4

  而软件与软件企业之间又可扩展推断出:软件企业=软件+商业模式

三个式子(程序=数据结构+算法、软件=程序+软件工程、软件企业=软件+商业模式)中

程序(算法、数据结构)是基本功,但是在算法和数据结构之上,软件工程决定了软件的质量;商业模式影响了一个软件企业的成败。软件从业人员和软件企业的到的操守会极大地影响软件用户的利益——P4

该章中有三个句子我非常喜欢,它将这三个领域的特点以极短的几个字便展现得淋漓尽致

哲学家的宗旨是:我思,故我在

科学家的宗旨是:我发现,故我在

工程师的宗旨是:我构建,故我在

问题一:在P3和P14中提到了软件的生命周期(Software Life Cycle,SLC)的一系列过程,但给得比较无序。那么软件的生命周期的定义是什么?在这个周期内,软件经历了怎样的开发过程?

        便在百度百科上搜了软件生命周期的具体定义,以下为摘抄:

软件生命周期是软件的产生直到报废的生命周期。

软件周期的七个阶段:问题的定义及规划——需求分析——软件设计——程序编码——软件测试——系统转换——运行维护

问题二:同在P3中提到关于软件团队或企业的赚钱方式中的“有的不但免费,连源代码页一并奉送,但是要求获得源代码的开发人员遵守某种协定”,我不明白软件企业是怎样通过这种方式盈利的呢?

阅读笔记之第二章 个人技术和流程

该章概述了一个合格的软件工程师应具备的技能:单元测试、回归测试、效能分析和个人开发流程PSP

单元测试的标准:

①单元测试应该在最基本的功能/参数上验证程序的正确性

②单元测试必须由最熟悉代码的人来写

③单元测试过后,机器状态保持不变

④单元测试要快

⑤单元测试应该产生可重复、一致的结果

⑥独立性——单元测试的运行/通过/失败 不依赖于别的测试,可以人为构造数据,以保持单元测试的独立性

⑦单元测试应该覆盖所有代码路径

⑧单元测试应该集成到自动测试的框架中

⑨单元测试必须和产品代码一起保护和维修

回归测试的目的:

①验证新的代码的确改正了缺陷

②同时要验证新的代码有没有破坏模块的现有功能,有没有Regression

效能分析方法

①抽象

②代码注入

两者各有优缺点,一般的做法是,先用抽象的方法找到效能瓶颈所在,然后对特定的模块用代码注入的方法进行详细分析

问题一:2.1节中所讲的单元测试,是越早测试越好吗?如果是这样应该早到什么程度呢?如果不是,那应该什么时候测试?

问题二:在P23~P27中出现好几次代码覆盖率及其衍生词,但文中并未提及什么是代码覆盖率,那么代码覆盖率的具体定义是什么呢?

         以下摘抄自百度百科:

代码覆盖(Code coverage)是软件测试中的一种度量,描述程式中源代码被测试的比例和程度,所得比例称为代码覆盖率。

在做单元测试时,代码覆盖率常常被拿来作为衡量测试好坏的指标,甚至,用代码覆盖率来考核测试任务完成情况。覆盖率数据只能代表你测试过哪些代码,不能代表你是否测试好这些代码,不要过于相信覆盖率数据。

代码覆盖的度量方式:

函数覆盖:执行到程序中的每一个函数(或副程式)

语句覆盖:度量被测代码中每个可执行语句是否被执行到了

判断覆盖:度量程序中每一个判定的分支是否都被测试到了

条件覆盖:度量判定中的每个子表达式结果true和false是否被测试到了

路径覆盖:度量了是否函数的每一个分支都被执行了

阅读笔记之第十六章 IT行业的创新

关于创新的迷思:

迷思之一:灵光一闪现伟大的创新就紧随其后

迷思之二:大家都喜欢创新

迷思之三:好的想法会赢

迷思之四:创新者都是一马当先

迷思之五:要成为领域的专家,才能创新

迷思之六:技术的创新是关键

迷思之七:成功的团队更能创新

迷思之八:创新者就是冒险家

问题一:创新的迷思之五:要成为领域的专家,才能创新,文中该小节的大意对这个迷思应该是不赞同的

但是统计数据表明,70%的创新者说,他们最成功的创新,是在他们拿手领域之外发现的。

就我观点而言,这个想法(迷思五)是非常片面的,但对作者的观点并不做评价。难道只有先成为某领域的专家,才能创新吗?而不能因创新灵感致使你走上该领域并成为专家?

   从小老师便教育我们要有创新意识,培养我们的创新意识,而好奇性和解放的思维是创新的源泉,且从小学便有关于创新的一些比赛,就比如说科技创新比赛,老师会引导我们思考我们想要什么功能的东西(即用来干什么),生活中是否已经有发明出来具有该功能的东西(产品),有了想法(创新灵感)之后,我们便开始研究应该怎样把这个东西发明、创造出来,从而我们开始往这个领域深入学习,探究,或许最后成为该领域的专家。我的想法总结就是我们因为有了创新(创新灵感)从而促使我们成为这个领域的专家。

posted @ 2018-03-17 18:16  zhoust  阅读(141)  评论(2编辑  收藏  举报