首页 > 其他分享 >构建之法阅读笔记01

构建之法阅读笔记01

时间:2023-03-20 17:35:41浏览次数:34  
标签:01 软件开发 工程师 单元测试 笔记 构建 Build 模块 软件

第一章 概论

在这一章中,作者为我们介绍了一些关于软件工程的基本知识。

①软件=程序+软件工程:正是因为对软件开发活动(构建管理、源代码管理、软件设计、软件测试、项目管理)相关的内容的完成,才能完成把整个程序转化成为一个可用的软件的过程。

扩展的推论:软件企业=软件+商业模式

②软件开发的不同阶段:玩具阶段→业余爱好阶段→探索阶段→成熟的产业阶段

③软件所具有的特殊性:复杂性、不可见性、易变性、服从性、非连续性(由软件的本质所决定的)

软件还有其他特性:

·有许多不同的程序设计语言、软件工具和软件开发平台

·存在许多不同的软件开发流程

·软件团队中存在许多不同的角色

·软件通常既可以存储在磁带上,也可以存储在CD/DVD上

④作者邹欣总结的自己做过的项目的各自特点:

• Build To Learn:开发软件,构建系统的目的是做进一步的试验,试图发现客观规律或某个试验方法的优点与缺点。这些项目经常是科研论文的基础工作。

• Build To Show:为了突出地展现某个技术的作用,开发一些演示为目的的软件,这些项目很吸引眼球,经常获得新闻报道,但是功能未必全面。

• Build To Serve:为了服务一定范围的目标用户而构建的工具等,有时以公开的SDK形式发布。

• Build To Win:以在市场上赢得用户为目标而构建的软件。这也是种种科学发现,技术突破最好的试金石。这是我在研究院之外的十余年中做的最多的项目类型,也是这本书的英文名字。

第二章 个人技术和流程

2.1 单元测试

①重要的单元测试:有效解决程序员对模块功能的误解、疏忽或不了解模块的变化之类的问题,使自己负责的模块功能定义尽量明确,模块的质量得到稳定的、量化的保证。

②好的单元测试的标准:

在最基本的功能/参数上验证程序的正确性

单元测试必须由最熟悉代码的人(程序的作者来写)

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

单元测试要快(一个测试的运行时间是几秒钟,而不是几分钟)

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

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

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

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

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

③单元测试的基础上能够建立关于这一模块的回归测试,目的是:

(1)验证新的代码的确改正了缺陷

(2)同时验证新的代码有没有破坏模块的现有功能,有没有Regression

2.2 效能分析工具

效能分析方法:抽样和代码注入

2.3 个人开发流程

个人开发流程PSP(Personal Software Process)

特点:(1)不局限于某一种软件技术,而是着眼于软件开发的流程,这样,开发不同应用的软件工程师可以互相比较。

(2)不依赖于考试,而主要靠工程师自己收集数据,然后分析、提高。

(3)在小型、初创的团队中,很难找到高质量的项目需求,这意味着给程序员的输入质量不高。在这种情况下,程序员的输出(程序/软件)往往质量也不高,然而这并不能全部由程序员负责。

(4)PSP依赖于数据(工程师输入数据的时间代价、数据可能遗失或者不准确的风险、可能会出现一些数据不利于工程师本人的情况)

(5)PSP目的是记录工程师如何实现需求的效率,而不是记录顾客对产品的满意度,工程师有可能很高效地开发出一个顾客不喜欢的软件。

标签:01,软件开发,工程师,单元测试,笔记,构建,Build,模块,软件
From: https://www.cnblogs.com/azwz/p/17237075.html

相关文章

  • 构建之法读后感
     这是一本讲解软工是什么的书,全书清晰的介绍了软工。曾经的我,认为软工无非就是编写程序,打打代码,会很轻松,但是读完《构建之法》以后,我对软工有了更深一步的认知。    ......
  • b01lers CTF & WolvCTF 2023 部分Re WriteUp
    这周打了两个比赛,个人感觉b01lersCTF偏简单一些,WolvCTF比前者难一点。养生型选手,一共做了三个题b01lersCTFSafe一个嵌入式逆向的题目,是逆向ArduinoUNO一个门锁......
  • 重链剖分学习笔记+做题记录
    一、理论知识首先放一张图(明显是OI-Wiki的):\(u\)的子节点\(p_1,p_2,\dots,p_k\)中子树最大的节点叫做重儿子,如有多个,任取其一,记作\(son_u\)。\(u\)除掉\(so......
  • Maven构建项目出现多个root模块解决方法 将子模块项目放到父模块 pom文件的 <modules/
    Maven构建项目出现多个root模块解决方法https://blog.csdn.net/hkl_Forever/article/details/119975146问题描述:1、使用maven构建项目出现多个root,如下图所示,导致父工......
  • Windows Server 2016配置NTP客户端
    前提:开通WindowsTime 服务输入services.msc进入服务管理界面,找到WindowsTime 开启服务。情况1:可以直接设置NTP时钟控制面板——时钟和区域——设置时间和日期——I......
  • C 栈模板及笔记
    文章目录​​Intro​​​​1.熟练掌握栈的定义、特性和栈的抽象数据类型,​​​​定义​​​​是限定仅在队尾进行插入或删除操作的先行比爱​​​​特性​​​​表尾端......
  • 基于Kafka和Elasticsearch构建实时站内搜索功能的实践
    作者:京东物流纪卓志目前我们在构建一个多租户多产品类网站,为了让用户更好的找到他们所需要的产品,我们需要构建站内搜索功能,并且它应该是实时更新的。本文将会讨论构建这......
  • Fortran读书笔记(3)
    本篇文章为本人读气象出版社的fortran程序设计,若有侵权,请私信,本人立即删除数组的定义数组举例:integera(-5,5),b(20)character*8d(50)dimensiona(2,3)integera......
  • loj6144「2017 山东三轮集训 Day6」C
    loj6144「2017山东三轮集训Day6」C注意到修改只有位运算,容易想到将位拆开考虑。首先可以发现对某一位或上\(0\)或者是对某一位与上\(1\)是没有意义的,相当于没有操作......
  • 《深入理解计算机系统》第四章学习笔记 处理器体系结构
    一个处理器支持的指令和指令的字节级编码称为它的指令集体系结构。不同的处理器“家族”,例如IntelIA32和x86-64、IBM/FreescalePower和ARM处理器家族,都有不同的ISA。一个......