首页 > 其他分享 >5月份阅读笔记1

5月份阅读笔记1

时间:2023-06-09 22:01:39浏览次数:44  
标签:阅读 软件开发 月份 工程师 单元测试 笔记 Build 模块 软件

5月份的阅读笔记为《构建之法》的读书笔记 

第一章 概论

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

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

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

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

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

软件还有其他特性:

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

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

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

·软件通常既可以存储在磁带上,也可以存储在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目的是记录工程师如何实现需求的效率,而不是记录顾客对产品的满意度,工程师有可能很高效地开发出一个顾客不喜欢的软件。

标签:阅读,软件开发,月份,工程师,单元测试,笔记,Build,模块,软件
From: https://www.cnblogs.com/qq2803572183/p/17470338.html

相关文章

  • 5月份阅读笔记3
    第五章团队和流程5.2软件团队的模式主治医师模式、明星模式、社区模式、业余剧团模式、秘密团队、特工团队、交响乐团模式、爵士乐模式、功能团队模式、官僚模式5.3开发流程①写了再改模式②瀑布模型(WaterfallModel)是一个项目开发架构,开发过程是通过设计一系列阶段顺序......
  • 5月份阅读笔记2
    第三章软件工程师的成长3.1个人能力的衡量与发展①软件工程包括了开发、运用、维护软件的过程中的很多技术、做法、习惯和思想。软件工程把这些相关的技术和过程统一到一个体系中,叫“软件开发流程”,软件开发流程的目的是为了提高软件开发、运营和维护的效率,以及提升用户满意度......
  • 【做题笔记】做题经验总结
    1.int*int会爆int,记得开longlong2.一般情况下,对于一棵树,树根没有父亲3.一定要看输入和输出格式4.多测不清空,爆零两行泪......
  • java 基础面试笔记(一)
    1、对final和static的理解final修饰变量,变量不可修改;final修饰类,类不可继承;final修饰方法,方法不能重写;static方法,不依赖任何对象可以访问;static成员变量初始化顺序按照定义的顺序进行初始化:· 父类静态变量· 父类静态代码块· 子类静态变量· 子类静态代码块· 父类普通变量......
  • 读书笔记——人月神话2
     “人月”指项目预估和进度安排中使用的工作量单位,比如一个项目需要3个人耗费四个月的时间,衡量这个项目的工作量就用12人月表示。在本文中,作者认为“用人月作为衡量一项工作的规模是一个危险和带有欺骗性的神话,它暗示着人员数量和时间是可以相互替换的。”人数和时间可以互换的......
  • 读书笔记——人月神话3
    在写项目申请书时,经常会遇到两个问题。其一,不同的人负责项目申请书的不同部分,最后在整合到一起时往往会让人产生项目需求和功能不完全对应的感觉,整个项目明显有拼凑的痕迹,显得不伦不类;其二,在决定产品实现什么功能时,往往会很贪心的把所有功能都往上加,最后产品没有针对性,更没有特色......
  • 读书笔记——代码大全1
    1.       用错误处理代码来处理预期会发生的状况,用断言来处理绝不应该发生的状况。2.       隔栏:以防御式编程为目的而进行隔离的一种办法,就是把某些接口选定为“安全”的区域边界,对穿越安全边界的数据进行合法性的校验,并当数据非法时做出敏锐的反映。3.    ......
  • 读书笔记——代码大全2
    第一章构建(写代码)是软件开发中非常重要的部分。还引用了一句话,艺术评论家聚在一起总是谈论架构,思想;艺术家聚在一起总是谈论在哪里可以买到便宜的树脂油。)构建的产品即源代码,是软件唯一的、最准确的说明书。(想到了一句话,程序员就是用代码(语言)说服计算机去做一些事情) 构建(作者不......
  • 读书笔记——代码大全3
    对于没有顺序关系的代码,应该通过排列代码增加代码的可读性。应该将相关的代码组织在一起,从而便于自上而下阅读。组织较好的代码应该可以划分成若干个不重叠(但是可能嵌套)的代码块,各自执行相关的功能。这一部分让我感触比较深。对于有明确顺序的代码通常我都会注意到将它们排列整齐......
  • 代码大全读书笔记
    需求分析:软件开发的第一步是理解客户的需求。对需求进行仔细的分析和定义非常重要,因为这些定义决定了软件系统的性能、功能和特性。设计:在设计阶段,我们需要考虑系统的结构,组件和模块,以及它们相互作用的方式。一个好的设计应该将复杂的系统分解为简单的部分,以便开发人员更容易......