本质复杂性 偶然复杂性_复杂性偶然与本质

2023-11-22 16:50
文章标签 本质 复杂性 偶然

本文主要是介绍本质复杂性 偶然复杂性_复杂性偶然与本质,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本质复杂性 偶然复杂性

如今,很难找到不遵循敏捷的团队或组织,但是构建软件并不容易,项目缺少进度,预算超支,而且存在缺陷。

为什么构建软件如此困难?

如果您向任何工程师提出此问题,那么90%以上的人会说要求,但这是全部事实吗?

让我们尝试分解软件结构。 每个功能都有2个重要的组件,可决定功能是否成功。

  • 基本并发症(ec)
  • 意外并发症(ac)

我们将做一些功能编程复习。

特征= f(基本并发症)+ f(偶然并发症)

本质上的复杂性来自领域,例如,如果您正在为医疗行业构建软件,那么它很复杂。 偶然的复杂性是工程师,过程和管理人员为构建功能而增加的复杂性。

由于域的原因,很难减少基本的复杂性,但是在某种程度上,可以通过使用良好的分解技术来减少复杂性。 分解是一项艰苦的技能,来自一些失败项目的实验。

偶然的并发症可以控制,但不是线性函数,偶然的并发症在系统的每个部分都不相同,并且随着时间的推移变得越来越复杂。 这也提供了有关我们作为工程师或产品团队所做的糟糕工作的反馈。

复杂性有多种形式,例如团队间的沟通,了解不足,难以重用某些功能,将程序扩展到新功能,管理问题等。

现在我们知道意外并发症是指数的,因此让我们再次编写公式。

特征= f(基本并发症)+ f(偶然并发症*未知)

现在将变得清楚,为什么某件事花费的时间比估计或猜测要长很多倍。 产品负责人还可以通过标记对功能重要性的假设来增加意外复杂性。

该怎么办?

如果我们需要某种可预测性或交付一致性,那么我们必须不断努力降低意外复杂性。 让我们看看保持这种状态的方法。

  • 使用高级语言。
  • 通过开发而不是构建软件来进行增量开发。
  • 良好购买与构建决策。
  • 统一编程环境。
  • 突袭原型以完善需求。
  • 听设计压力。
  • 测试驱动的开发。
  • 停止“摆脱困境”的心态。
  • 减少交付过程中的“ 外科手术努力”

弗雷德里克·布鲁克斯(Frederic Brooks)非常有见地的报价,无论是客户还是工程师,都必须学习询问,期望和承诺的内容,否则,唯一的选择就是系统崩溃。

“承诺在两分钟内完成的煎蛋可能进展顺利。 但是,如果在两分钟内仍未设置,则客户有两个选择-等待还是生吃。 软件客户有相同的选择。 厨师还有另一种选择。 他可以调高热量。 结果常常是煎蛋饼什么也做不了,要烧掉,一部分烧掉。

― 小弗雷德里克·布鲁克斯(Frederick P. Brooks Jr.),

神话般的月刊:关于软件工程的论文

必须为每个产品所有者,项目经理和工程师阅读布鲁克斯先生的《神话般的月》 。

如果您喜欢该帖子,那么可以在Twitter上关注我 。

翻译自: https://www.javacodegeeks.com/2019/11/complexity-accidental-vs-essential.html

本质复杂性 偶然复杂性

这篇关于本质复杂性 偶然复杂性_复杂性偶然与本质的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/411541

相关文章

CSS学习12--清除浮动的本质及处理办法

清除浮动 前言一、清除浮动的本质二、清除浮动的方法 前言 为什么要清除浮动? 浮动不占用原文档流的位置,可能会对后面的元素排版产生影响。因此需要在该元素中清除浮动,清除浮动后造成的影响。 一、清除浮动的本质 为了解决父级元素因为子级元素引起内部高度为0的问题。 <html><head><style>* {padding: 0;margin: 0;}.box1 {width:

io本质+io效率本质,5种io模型(介绍,异步/同步区别,阻塞/非阻塞区别)

目录 5种io模型 io引入 io的本质 io效率的本质 模型引入 以钓鱼为例 效率最高的方式 异步io和同步io的区别 阻塞式和非阻塞式io的区别 介绍 阻塞式io ​编辑 非阻塞式io ​编辑 信号驱动式io ​编辑 多路转接/复用 ​编辑 异步io 5种io模型 io引入 io的本质 以read ,write为例: 如果底层缓冲区没有数据

去 IOE 的本质不是 PR 砸场,而是云端再造

「青云一直有一个目标,就是要建立一朵更好的云,全模云的推出也标志着我们在实现这个目标上往前走了一大步。」 本文由青云QingCloud CTO 甘泉的演讲内容整理而来,共 2628 字,8 图,阅读大概需要 7 分钟。 青云QingCloud 如何解决「敏态」问题 先谈谈传统业务的 IT 部署模式,基本上都是刀片机+存储柜的模式,它们都是真实的物理机,上图密密麻麻的是刀片机,右边是存

java复习第十课,方法的本质,形参和实参(很重要)

java的方法类似于其他语言的函数,是一段用来完成特定功能的代码片段,声明格式: 修饰符[public]  修饰符2[static]  返回值类型[int、String等]  方法名 (形参列表){ java语句列表..... } 形式参数:在方法被调用时用于接受外界输入的数据 实参:调用方法时实际传递给方法的数据 返回值:方法在执行完毕后返还给调用它的环境的数据 返回值类型:事先约

通过反射了解泛型的本质

通过Class,Method来认识泛型的本质 我们知道Java中集合的泛型是防止错误输入的,例如ArrayList<String>list1=new ArrayList<String>();接下来如果再有list1.add(20);系统便提示错误,程序无法通过编译,以为list1的类型已被指定为String,那么我们看以下代码 Class c1=list.getClass();Class c

延续业绩升势,亚朵吃透了酒店的服务本质

中国酒店的核心资产是什么? 不同的品牌会有不同的认知,但他们的目标大概都是一致的:提供足够好的体验,打造有心智吸引力的品牌,最后将其转化为业绩。这条路上,亚朵,是一个绕不开的案例。 8月29日晚,亚朵集团(NASDAQ:ATAT)发布了2024年二季度财报。财报数据显示,今年第二季度,亚朵集团实现总营收17.97亿元(人民币,下同),同比增长64.5%;调整后净利润为3.28亿元,同比增长31

17. 位移运算的本质是什么,为什么要有位移运算,作用范围和使用技巧。

1. 位移运算的本质 位移运算(bitwise shift operations)是直接对二进制数的每个位进行操作的运算。通过将数值的二进制位左移或右移,可以快速地完成一些数学运算或位级控制操作。位移运算通常有两种类型: 左移运算(<<):将二进制位向左移动,低位用 0 填充,高位丢弃。右移运算(>>):将二进制位向右移动,具体可以分为两种:算术右移和逻辑右移。 算术右移:保持符号位不变(用于

概率论的本质

几何分布 第一次出现正面所需要的次数 E(x) = 1/p Var(x) = (1-p)/p^2 柏松分布 其实是二项分布的一个简化版。n很大, p很小 p(k) = e-m (x^k/k!) 期望 E(x) = sum{xp(x)} Var(x) =E[(x-Ex)^2] 平均分布 E(x) = (a+b)/2 Var(x) = (n^2 - 1)/12 疑问: P105

文件描述符的本质

1. 文件描述符的本质是数组元素的下标 右侧的表称为i节点表,在整个系统中只有1张。该表可以视为结构体数组,该数组的一个元素对应于一个物理文件。 中间的表称为文件表,在整个系统中只有1张。该表可以视为结构体数组,一个结构体中有很多字段,其中有3个字段比较重要: file status flags:用于记录文件被打开来读的,还是写的。其实记录的就是open调用中用户指定的

风水学本质上是人机环境系统工效学

风水学与人机环境系统工效学的关系可以这样理解: 风水学源于传统文化,关注如何通过环境布局和方位来促进个人的健康、运势和幸福。它强调环境与个人之间的和谐,试图通过调整环境来提升生活质量。 而人机环境系统工效学则是基于现代科学,关注如何通过设计和优化工作和生活环境来提高效率、舒适性和安全性。它涉及到如何科学地安排空间、控制噪音、调节光线等,以满足人的生理和心理需求。两者都涉及到环境对