Google软件工程:什么是软件工程

2023-05-16

文章目录

  • 编程≠软件工程
  • 软件工程的3个特性
  • 时间与变化
    • 海勒姆定律(Hyrum’s Law)
    • 目标不是“没有变化”
  • 规模和效率
    • 左移思维
  • 权衡和成本
  • 最后

已剪辑自: https://mp.weixin.qq.com/s/GhYfH3ndRsOWHFyAnFVvPQ

没有什么东西是建在石头上的,一切都是建在沙子上的,但我们必须把沙子当做石头来建筑。— Jorge Luis Borges

编程≠软件工程

编程:编程是生产代码的直接行为。

软件工程:软件工程是一组必要的原则、实践方法和工具,使得代码在跨团队协作和使用时能更加的有效。

编程和软件工程的三个关键差异点:时间,规模和权衡。

  • • 首先,对于一个软件工程,工程师需要更多的关注时间的流逝和可能的需求变更。
  • • 其次,软件工程需要更多的关注团队规模和集体效率,无论是其使用软件的组织,还是生产软件的组织。
  • • 第三,软件工程师,需要做出更多复杂且高风险的决策,通常是基于对时间和增长的不精确的预估。

软件工程的3个特性

软件工程不是编程,软件工程是随着时间而不断集成的编程工作。

软件工程在时间、规模和权衡3个维度上的表现特性分别为:

软件工程的可持续性:在软件的预期生命周期内,在业务和技术的双重发展中,都需要有能力做出对有价值的变化的有效反应,这就是软件的可持续性。

软件工程的规模性:软件工程师一项团队工作,团队的协作,包裹更多人的参与,甚至多个团队的协作,都会到来新的问题。在规模增加时,如何能够更好的交付有价值的系统。

软件工程的复杂性:随着组织的成长和项目功能的扩展,软件系统的生产是否能够变的更加高效,持续交付的成本是否可控。

时间与变化

在软件的预期生命周期上,在低点和高点之间显示某个地方出现了一个转变:某个项目必须开始对不断变化的外界做出反应。

对于任何一个一开始就没有计划升级的项目,这种变化可能是非常痛苦的,原因主要有三点:

  1. \1. 正在做的一项任务,还没有完成,但已经有更多的隐含的假设被注入程序之中。
  2. \2. 尝试进行升级的工程师机会不太可能有此类任务的相关经验。
  3. \3. 升级的规模往往比平时要大,一次进行累计了几年的大升级,而不是渐进式升级。

一个系统,不但要完成第一次大的升级,且要达到能够可靠地一直保持这种持续的最新状态,才是其长期可持续性的根本。

可持续性要求对所需变更的影响进行持续的规划和管理。

海勒姆定律(Hyrum’s Law)

海勒姆定律:

当一个API有足够多的用户时,在约定中你所承诺的已不再重要:所有在你系统里被观察道德行为,都会被一些用户所依赖。

这是软件系统的熵增:随着时间的推移,对变化和维护的讨论,必须要意识到海勒姆定律。

根据热力学第二定律,熵永不减少,但并不意味着我们不应该去尝试提高功效。

在软件工程中,我们不能完全的避免海勒姆定律,但我们可以去减轻它。

目标不是“没有变化”

对于大多数系统,在足够长的时间内,系统的所有内容都可能会发生变化。

规模和效率

左移思维

一个事实:在开发工作流程中,越是在早期阶段发现问题,越是能降低成本。

譬如,在一个功能的开发作业流程的从左到右的时间线上,从概念和设计开始,到代码实现、评审、测试、提交、金丝雀部署和最终的生产部署等。在这个时间线上,将问题的发现移动到更早的左边,会比等到更晚阶段在发现,成本要低很多。

安全性检测不能推迟到开发过程结束才开始,这被称为安全左移。道理很简单,如果产品的安全性问题在产品发布之后才被发现,那这个问题带来的损失可能会更大更多。

没有一个流程或工具是完美的,我们只有假设一个纵深的防御方法,来尽可能早的发现更多的问题。

权衡和成本

成本不仅仅是资金上的,成本更多是为软件成功所做的努力,可能涉及的主要因素有:

  • • 财务成本(金钱)
  • • 资源成本(CPU时间)
  • • 人员成本(工程工作的人员投入)
  • • 交易成本(采取行动的成本是多少?)
  • • 机会成本(不采取行动的成本是多少?)
  • • 社会成本(这种选择对)

所有的成本总结为:一个组织的健康,不仅仅是看账户里面有多少钱,还要看组织成员是否感到有价值和富有成效。

对于像软件工程类似的,高创意、高收益的领域,“人”才是限制性的因素。让工程师(创意型人才)保持快乐、专注和投入所带来的效率很容易影响其他的因素。

最后

3个起发点:

  • • 编程不等于软件工程。软件工程是在时间、规模和权衡决策上的系统性工程;
  • • 软件工程的三个特性:可持续性、规模性和复杂性;
  • • 软件工程中的2个法则:海勒姆定律左移策略
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Google软件工程:什么是软件工程 的相关文章

  • 【软件工程期末复习内容】

    前言 时不可以苟遇 道不可以虚行 一 软件工程的概念 软件是计算机系统运行的 指令 数据 和 相关文档 的集合 即软件等于程序 数据 加上文档 程序 是事先按照预定功能性能等要求设计和编写的指令序列 数据 是使程序正常处理信息的数据结构及信
  • 软件工程——第7章实现知识点整理

    本专栏是博主个人笔记 主要目的是利用碎片化的时间来记忆软工知识点 特此声明 文章目录 1 实现由哪两个部分组成
  • Open Source Game Clones

    Open Source Game Clones This site tries to gather open source reimplementations of great old games in one place If you t
  • [Binospace] Google-MegaStore的解读

    MegaStore是Google在BigTable之上实现了一个跨机房高可用的数据库 它提供了类似DB的数据分布 索引的功能 实现了在EntityGroup内部以及EntityGroup之间的事务性 并且通过Paxos协议实现在DC之间多备
  • 【论文阅读-ICSE-2021】CodeShovel: 构造方法级别上的源代码历史信息 Constructing Method-Level Source Code Histories

    CodeShovel Constructing Method Level Source Code Histories Conference ICSE 2021 Github https github com ataraxie codesho
  • 软考:中级软件设计师:多媒体基础,音频,图像,颜色,多媒体技术的种类,图像音频视频的容量计算,常见的多媒体标准

    软考 中级软件设计师 多媒体基础 提示 系列被面试官问的问题 我自己当时不会 所以下来自己复盘一下 认真学习和总结 以应对未来更多的可能性 关于互联网大厂的笔试面试 都是需要细心准备的 1 自己的科研经历 科研内容 学习的相关领域知识 要熟
  • 选择软件外包公司需要注意哪些方面

    每个行业中不同公司的实力都是良莠不齐 特别是IT软件外包公司更是如此 当我们一旦将整个项目交付对方之后 项目的成败就全看软件外包公司的表现 风险极大 那么 我们该如何选择一家靠谱的深圳软件外包公司 选择软件外包公司需要注意哪些方面 北京木奇
  • 软件工程毕业设计题目100例

    文章目录 0 简介 1 如何选题 2 最新软件工程毕设选题 3 最后 0 简介 学长搜集分享最新的软件工程业专业毕设选题 难度适中 适合作为毕业设计 大家参考 学长整理的题目标准 相对容易 工作量达标 题目新颖 1 如何选题 最近非常多的学
  • JAVAWEB编程题

    1 登陆验证代码
  • code style

    最近一直在看java convention和google c style 因为老板要提高代码质量 我们小公司一个 因为客户说我们的代码质量太烂了 于是开始搞代码质量 先从静态 代码质量开始 于是就研究起来code style 但是 我发现
  • 软件质量保证与测试技术实验报告(二)黑盒测试用例设计

    1 实验名称 黑盒测试用例设计 2 实验目的 学会用等价类划分法和边界值法设计测试用例 进行功能测试 3 实验内容 题目1 NextDate程序的功能是按年 月 日的顺序输入一个日期 输出为输入日期后一天的日期 请使用等价类和边界值法对Ne
  • 系统架构设计师-计算机网络

    目录 一 计算机网络技术概述 1 网络概述 2 网络有关指标 3 网络分类 4 5G技术 二 组网技术 1 交换技术 2 基本交换原理 三 TCP IP协议簇 1 DHCP 2 DNS 四 网络规划与设计 一 计算机网络技术概述 1 网络概
  • 软件工程期末复习+数据仓库ETL

    一 软件工程 请用基本路径测试方法为下列程序设计测试用例 并写明中间过程 第1步 画出流程图 1 菱形用于条件判断 用在有分支的地方 2 矩形表示一个基本操作 3 圆形是连接点 第2步 计算程序环路复杂性 流图G的环路复杂度V G 定义为
  • WMS系统出库扫描:提升仓储管理效率与准确性

    WMS系统中的出库扫描功能是关键环节之一 它通过扫描物料或货物的条形码或二维码 实现实时 准确地记录和更新库存信息 一 WMS系统出库扫描的重要性 1 实现库存准确性 通过出库扫描 WMS系统能够准确记录物料或货物的出库信息 实时更新库存数
  • DEVOPS 持续部署的例子:IMVU

    持续部署的例子 IMVU IMVU是一家社交娱乐公司 它的产品允许用户以一种3D阿凡达式的体验互相连接起来 本节内容改编自一位IMVU工程师所写的博客 IMVU采用了持续集成 开发人员尽早提交并经常提交 每次提交都触发测试套件的执行 IMV
  • 68 | 软件工程的宏观视角

    软件工程 今天开始 我们进入第六章 谈谈软件工程 我理解的架构师的职责其实是从软件工程出发的 也许大家都学过软件工程 但如果我们把软件工程这门课重新看待 这门学科到底谈的是什么 是软件项目管理的方法论 无论如何 软件工程是一门最年轻的学科
  • 68 | 软件工程的宏观视角

    软件工程 今天开始 我们进入第六章 谈谈软件工程 我理解的架构师的职责其实是从软件工程出发的 也许大家都学过软件工程 但如果我们把软件工程这门课重新看待 这门学科到底谈的是什么 是软件项目管理的方法论 无论如何 软件工程是一门最年轻的学科
  • ICT行业“样品”相关业务挑战及解决方案介绍

    ICT行业供应链样品相关业务介绍 在信息通信技术 ICT 行业中 研发打样 结构件打样和非0价打样是研发和产品设计过程中的重要环节 下面我会通过具体的业务场景来解释这些概念 1 研发打样 场景例子 一家手机制造公司正在开发一款新型智能手机
  • C 语言文件读取全指南:打开、读取、逐行输出

    C 语言中的文件读取 要从文件读取 可以使用 r 模式 FILE fptr 以读取模式打开文件 fptr fopen filename txt r 这将使 filename txt 打开以进行读取 在 C 中读取文件需要一点工作 坚持住 我
  • Docker 安全必知:最佳实践、漏洞管理与监控策略

    容器安全是实施和管理像 Docker 这样的容器技术的关键方面 它包括一组实践 工具和技术 旨在保护容器化应用程序及其运行的基础架构 在本节中 我们将讨论一些关键的容器安全考虑因素 最佳实践和建议 容器隔离 隔离对于确保容器化环境的强大性和

随机推荐

  • 这次把怎么做好一个PPT讲清-总体篇

    文章目录 一 背景二 图表化 图示化三 关键词设计四 版式层级五 逻辑关系图 1 xff09 常用逻辑 2 xff09 如何让逻辑关系图好看 六 对齐 分组和对比 对齐 分组 分组就是将同类得信息放在一起 xff0c 靠的更近一点 那么 x
  • 这次把怎么做好一个PPT讲清-画图篇

    文章目录 概述布尔运算PPT幻灯片中如何设置形状对象格式每一个图形既是一个形状 xff0c 又是一个文本框 如何用PPT来实现三维3D效果 xff0c 附参数设置详解怎么用ppt画三维立体图 PPT做3D可动样机 PPT做3D 动态图标 P
  • 这次把怎么做好一个PPT讲清-其他技巧篇

    文章目录 如何统一批量设置PPT的中文字体和英文字体ppt如何插入页码和时间工具 原料插入页码和时间的步骤 xff1a 注意事项 在Powerpoint幻灯片里显示总页数在Powerpoint 2010中添加幻灯片编号在Powerpoint
  • 这次把怎么做好一个PPT讲清-审美篇

    要提高审美 xff0c 主要是靠不断的看优秀的作品来知道什么是美的 xff0c 这个短时间很难速成 xff0c 只能靠不断的积累 如何做出具有高级感的PPT xff1f 已剪辑自 https zhuanlan zhihu com p 386
  • 这样做时间轴,让你的PPT更出彩!

    文章目录 方法一 xff1a 美化时间节点 方法二 xff1a 利用图片中的 轴 方法三 xff1a 时间轴不一定需要 轴 方法四 xff1a 把时间轴拆成数页 总结 已剪辑自 https zhuanlan zhihu com p 5667
  • PPT文字很多的排版,PPT图片很多的排版,PPT图文排版

    文章目录 专业设计师是如何把一个word变成PPT的 xff1f 搭建 骨架 xff0c 填充 血肉 内页的排版 对页面的可视化处理 PPT文字巨多 xff01 领导还不让删 xff0c 怎么排版才高大上 xff1f 排版技巧一 xff1a
  • PPT目录页怎么设计才高大上?告诉你一个万能排版法!

    已剪辑自 https zhuanlan zhihu com p 64526891 嗨 xff0c 各位木友们好呀 xff0c 我是小木 帅的人都知道 xff0c 一个完整的PPT xff0c 一般应该要有 封面 43 目录 43 过渡页 4
  • 这样做框架结构图,让你的PPT更有创意!

    已剪辑自 https zhuanlan zhihu com p 58834710 嗨 xff0c 各位木友们好呀 xff0c 我是小木 昨天 xff0c 有个跟我一样鸟人的鸟人让我帮忙做个框架结构图 xff1a 可惜当时我不在办公室 xff
  • 如何画架构图?

    平时做过一些系统设计 xff0c 也写过一些系统分析文章 xff0c 从组件 关系 交互等方面提供一些建议 xff0c 并用我之前写文章画的一些图举些例子 构成系统的组件通过形状 颜色 名称来逼近其概念 LevelDB 主要构件如上面 Le
  • 主定理的证明及应用举例

    主定理 主定理最早出现在 算法导论 中 xff0c 提供了分治方法带来的递归表达式的渐近复杂度分析 规模为n的问题通过分治 xff0c 得到a个规模为n b的问题 xff0c 每次递归带来的额外计算为c n d T n lt 61 aT n
  • 程序员怎样才能写出一篇好的博客或者技术文章?

    文章目录 来分享下鹅厂多位技术同学关于如何写好技术文章的经验 1 为什么要写文章 1 1 对作者的好处 1 1 1 复盘学习成果 xff0c 巩固知识理解 1 1 2 提升思考能力 1 1 3 传播技术知识 xff0c 积累技术资产 1 1
  • 数字孪生技术有没有真正的实用价值?

    作为一个数字孪生领域的技术公司负责人 xff0c 我尽可能用比较直白的话来描述一下我对数字孪生行业以及数字孪生价值的理解 纵观数字孪生相关的公司 xff0c 主要有两个流派 xff0c 一派是具有互联网基因的数字孪生创业公司 xff0c 一
  • 你在编程过程中养成了哪些好习惯?

    写工作日志 我一直有大量写笔记的习惯 编程的时候 xff0c 也经常遇到一些麻烦的问题 xff0c 思路转瞬即逝 xff0c 于是把所有这些思路记录下来 xff0c 会在以后的搜索中成为重要的灵感来源 我的工作日志里通常以项目为单位 xff
  • 如何让 PPT 中的表格更美观?

    这个不难 xff0c 不信你看 做PPT表格 xff0c 千万不要直接把Excel截个图粘贴到PPT里 或者网上找到相应的表格图片 xff0c 也直接粘贴到PPT中 这样做的PPT表格肯定不好看呀 今天和大家分享几个表格美化的小技巧 xff
  • 这次把怎么做好一个PPT讲清-演讲篇

    商务演讲与汇报 一 目标 xff1a 演讲必须有清晰的目标 演讲 xff1a 影响他人发生积极的 改变 注意 xff0c 目标就要设定的影响听众在听完你的演讲后发生积极的改变 xff1b 例 xff1a 5月初向领导做月度工作汇报 让领导在
  • 这次把怎么做好一个PPT讲清-动画篇

    干货预警 xff01 作为一位PPT发烧友看过诸多PPT案例 xff0c 分享几个高大上的动画效果 文末有福利 xff01 废话不多说 xff0c 直接上重点 xff0c 本文主要讲八个动画技巧 xff0c 我们来看先目录 xff1a 收藏
  • 重新认知发明,全网保姆级入门说明

    已剪辑自 https mp weixin qq com s IDQXYXpWQlaW1NyX36H2vQ 关注 林外的日课 公众号 xff1a 每日思考 xff0c 每周更新 发明 xff0c 是指对产品 方法或者其改进所提出的新的技术方案
  • 软件测试需要掌握哪些技术?

    文章目录 1 黑盒测试 白盒测试 灰盒测试1 1 黑盒测试1 2 白盒测试1 3 灰盒测试 2 自顶向下集成和自底向上集成各自的优缺点 2 1 自顶向下集成2 2 自底向上集成 3 按照开发阶段划分 xff0c 软件测试可以分为哪几个流程
  • 画时序图的四个好用的工具~

    已剪辑自 https mp weixin qq com s xvCOLaGARp15vCRq6w8h2Q 分享几个画时序图的软件 xff0c 一些通信协议 xff0c 如I2C SPI UART MIPI等 xff0c 都会涉及到时序 Ti
  • Google软件工程:什么是软件工程

    文章目录 编程 软件工程软件工程的3个特性时间与变化海勒姆定律 xff08 Hyrum s Law xff09 目标不是 没有变化 规模和效率左移思维 权衡和成本最后 已剪辑自 https mp weixin qq com s GhYfH3