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

构建之法 阅读笔记01

时间:2023-04-08 21:33:07浏览次数:34  
标签:01 软件开发 工程师 流程 单元测试 笔记 构建 软件 代码

第一章 概论

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

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

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

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

软件还有其他特性:

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

2.>存在许多不同的软件开发流程

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

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

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

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

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

Build To Win:以在市场上赢得用户为目标而构建的软件。

第二章 个人技术和流程

2.1 单元测试

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

2》好的单元测试的标准:

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

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

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

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

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

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

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

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

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

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

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

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

2.2 效能分析工具

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

2.3 个人开发流程

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

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

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

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

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

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

第三章 软件工程师的成长

3.1 个人能力的衡量与发展

一:软件工程包括了开发、运用、维护软件的过程中的很多技术、做法、习惯和思想。软件工程把这些相关的技术和过程统一到一个体系中,叫“软件开发流程”,软件开发流程的目的是为了提高软件开发、运营和维护的效率,以及提升用户满意度、软件的可靠性和可维护性。

二:初级软件工程师的成长包括以下几种:

(1)积累软件开发相关的知识,提升技术技能(如对具体技术的掌握,动手能力)。例如:对JAVA、C/C++、C#的掌握,诊断/提高效能的技术,对设备驱动程序、内核调试器的掌握,对于某一开发平台的掌握

(2)积累问题领域的知识和经验(例如对医疗或金融行业的了解)

(3)对通用的软件设计思想和软件工程思想的理解

(4)提升职业技能(区别于技术技能),包括:自我管理的能力、表达交流的能力、与人合作的能力、按质按量完成任务的执行力

(5)实际成果——最重要的评价标准

3.2 软件工程师的职业发展

自我评估,自我评价清单:软件工程师自评表。

通过阅读构建之法,我今后要更加注意技术和流程,进行有效的测试,使得代码据有更好的运行效果。努力提升专业技能,认识自己的职业前景,积累更多的代码程序经验。

标签:01,软件开发,工程师,流程,单元测试,笔记,构建,软件,代码
From: https://www.cnblogs.com/syhxx/p/17299282.html

相关文章

  • 自学Python爬虫笔记(day4)
    环境python3.9版本及以上,开发工具pycharm 今天是对requests模块的应用实战,分别是爬取豆瓣电影TOP250的基本信息和电影天堂“2023必看热片”的名称及下载地址。具体如下:'''爬取豆瓣电影TOP250的基本信息思路:1.拿到页面源代码2.编写正则,提取页面数据3.保存数据'''import......
  • SpringCloud源码学习笔记3——Nacos服务注册源码分析
    系列文章目录和关于我一丶基本概念&Nacos架构1.为什么需要注册中心实现服务治理、服务动态扩容,以及调用时能有负载均衡的效果。如果我们将服务提供方的ip地址配置在服务消费方的配置文件中,当服务提供方实例上线下线,消费方都需要重启服务,导致二者耦合度过高。注册中心就是在......
  • STM32F401串口2的异步发送
    本文使用Nucleo-F401RE这块板,目的是学习STM32平台上串口的使用方法。只描述如何操作寄存器以发送给定数据且不使用中断。接收数据的方法自行类比。准备工作:一、打开芯片的Datasheet。找到引脚功能映射表,选择要使用的串口对应的功能引脚。这里使用PA2和PA3的07号功能,即USART2-TX......
  • 表格化构建系统-加入新的系统功能
    要实现的功能1.图片识别表格化重建2.保存识别记录,可以查看自己的记录3.分析记录并统计总结4.能够将所有的记录形成一个完整的个人总结性表格  部分代码:packageorg.example;//importcom.sun.media.sound.InvalidFormatException;importnet.sourceforge.tess4j.ITes......
  • 小迪笔记
    第一天基础名词二级域名与多级域名二级域名分两种:在国际顶级域名下的二级域名二级域名一般是指域名注册人选择使用的网上名称,如“yahoo.com”;上网的商业组织通常使用自己的商标、商号或其他商业标志作为自己的网上名称,如“microsoft.com”。国家顶级域名下二级域名在国家顶级域名......
  • Java笔记(14) UDP通讯程序Demo
    实现一个简单的UDP通信程序,仅作为笔记使用网络编程中有三要素:IP、端口号和通信协议,分别用来确定对方在互联网上的地址、指定接受数据的软件和确定数据在网络中传输的规则。IP地址IP地址分为IPv4地址和IPv6地址,这里不做讨论。IPv4地址中分为公网地址(万维网使用)和私有地址(局......
  • 论文阅读笔记《Sim-to-real learning for bipedal locomotion under unsensed dynamic
    Sim-to-reallearningforbipedallocomotionunderunsenseddynamicloads目录Sim-to-reallearningforbipedallocomotionunderunsenseddynamicloads介绍背景研究现状本文贡献学习策略无负载策略的训练有负载策略的训练实验模拟器实验虚实迁移实验总结本文的贡献对研究......
  • 问卷分析笔记(2)信度效度分析
    在对量表问卷展开分析之前,必须要经过信度和效度检验。信度检验,可以理解为可靠性检验(Reliabilityindices),为可靠度、一致性、稳定性。用于测量样本回答结果是否可靠,即样本有没有真实作答量表类题项,最常用的检验办法是使用科隆巴赫系数(Cronbach’salpha或Cronbach’sα)。一般......
  • 『0017』 - Solidity Types - Solidity 枚举(Enums)
    作者:黎跃春,案例下面的代码是我对官方案例作了简单的修改而成。ActionChoices就是一个自定义的整型,当枚举数不够多时,它默认的类型为uint8,当枚举数足够多时,它会自动变成uint16,下面的GoLeft==0,GoRight==1,GoStraight==2,SitStill==3。在setGoStraight方法中,我们传入的参数......
  • 『0016』 - Solidity Types - 玩转 Solidity 数组 (Arrays)
    作者:黎跃春,学习目标掌握Arrays的可变不可变的创建深度理解可变数组和不可变数组之间的区别二维数组memoryarrays的创建bytes0~bytes32、bytes与byte[]对比固定长度的数组(Arrays)固定长度类型数组的声明pragmasolidity^0.4.4;contractC{//数组的长度为5,数组里面的存储......