首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

6种办法实现精益软件

“FAT软件”的原因 导致复杂性的一个主要原因是软件拥有的功能太多,这些不一定都是使用时所必需的功能,我们不断添加新功能和扩展,并且与原始系统的任何不兼容性将被忽略或传递无法识别。...1.所有功能,所有时间 软件的单体设计是使软件复杂化的主要原因之一,每个可以想象得到的功能都是系统设计的一部分,随着时间的推移,大多数功能都变得无关紧要,但会继续对系统产生影响。...2.对某些人来说,复杂性就是力量。 当我建议将去除一些不必要的灵活性并使事情标准化以降低复杂性和提高可维护性时,PM当时的反应至今记忆犹新。 不可理解性应引起人们的怀疑,而不是钦佩。...2.找到适当的分解 系统应该被分解成模块,模块应该被分解成组件,组件应该有单一的责任,整个系统应该在层次结构中进行分解,同时最小化复杂性并且去除重复代码。...4.永远不应该构建复杂的软件 认为复杂系统需要设计师和程序员的纪律是不正确的,完全无法理解的系统,至少在单个个体的重要程度上,应该永远不会建立起来。

53010

最强AI智能体竟如此简单!Anthropic首次公开内部秘籍!

systems),但在架构上对工作流和智能体做重要区分:工作流是通过预定义的代码路径来协调 LLM 和工具的系统智能体则是动态控制其自身过程和工具使用的系统,保持对任务完成方式的主导权接下来详细探讨这两种智能系统类型...4.5 工作流:协调者-工作者模式在协调者-工作者模式中,中心 LLM 动态分解任务,将子任务分配给工作者 LLM,并综合其结果。协调者-工作者工作流:适用场景:非常适合无法预测所需子任务的复杂任务。...LLM 在理解复杂输入、进行推理和规划、可靠地使用工具以及从错误中恢复的能力方面的逐步成熟,智能体正在生产环境中逐渐被采用。...与任何 LLM 功能一样,成功的关键在于衡量性能并对实现方案进行迭代优化。重申一点:只有在复杂性确实能够显著改善结果时,才应考虑增加复杂性。...智能体特别有效的原因包括:代码解决方案可以通过自动化测试进行验证;智能体可以使用测试结果作为反馈迭代改进解决方案;问题空间定义清晰且结构化;输出质量可以通过客观指标进行衡量。

23120
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    五校联合软件工程专业软件工程概论

    简答题汇总 1.简述软件危机发生的原因。 客观原因: ①软件与硬件产品不同,软件是“开发的”而非“制造的”。其开发过程 难以管理和控制,产品质量也不好把握。 ②软件没有“磨损”,但是它会不断“退化”。...软件系统无法适应不断变 化的环境和功能需求。 ③软件都规模庞大,而程序的复杂性是随其规模的扩大呈指数增加。 主观原因: ①对用户要求没有完整和准确的认识就匆忙编写程序。...(1)用分阶段的生命周期计划严格管理 应该将软件开发和维护的漫长生命周期划分成若干个阶段,并针对每个阶段制定切实可行的计划,然后严格按照计划对软件的开发和维护工作进行管理。...1.复查并精化数据流图 2.确定数据流图类型 3.确定数据流的边界 4.完成“第一级分解” 5.完成“第二级分解” 6.优化 12.简述软件结构设计启发式规则。...(3)特点 白盒测试的优点是对程序内部逻辑进行覆盖测试,而黑盒测试的优点是能站在用户立场,针对软件功能进行测试; 白盒测试的缺点是无法检验程序的外部功能特性,无法对程序内部欠缺部分进行测试,而黑盒测试的缺点是无法测试程序内部逻辑

    66620

    【论文阅读】Learning Graph-based Disentangled Representations for Next POI Recommendation

    for Next POI Recommendation 问题描述 图片 OverView 论文认为,以前的合并地理信息的方法不能模拟 POI 对用户的复杂影响: 首先,用户到某个 POI 的各种潜在因素没有被有效地分解开...POI 表示分解为多个独立的分量;提出了 Disentangled Graph Convolution Network (DGCN) 学习 POI 表征,并对 self-Attention 进行拓展,...论文主要贡献如下: 明确了 POI 包含的多方面因素并进行分解,并提出 DGCN 进行实现; 提出 DRAN,充分利用 POI 全局信息并学习用户的动态偏好。...但是论文考虑到两个原因并没有这么做: 需要引入超参数来平衡两者之间的比例,可能无法保持不同类型的影响; POI 本身就包含不同因素的影响,只表示为一种特殊类型可能会限制其能力。...可以看出,结果显示了四个明显的对角线块,这表明模型具有很强的区分潜在成分的能力: 总结 论文的内容挺多,最主要的想法就是将 POI 进行分解,从不同部分对其进行表示,从最后的可视化效果图来看确实有一定作用

    74710

    网络安全架构 | 安全架构公理

    如果安全架构无法支撑组织利用其资产来完成业务工作,则该安全架构可能被边缘化和显得无用。 安全架构应基于业务风险驱动,并且应该是对这些风险进行适当响应。 02 公理2:场景 不要虚构场景,否则后果自负。...任何架构类型的主要目标之一就是管理复杂性。必须通过自上而下的分解来分解高度复杂的SOI(系统收益),从最高级别的业务目标开始,并创建逐渐简化的SOI层次,并对其逐层解决。...复杂性本身就是导致出现这一现象的原因。 简化复杂性的方法,通常是通过自上而下的逐层分解。下图显示了两种分解方式。 ? 图2-IT技术栈 ?...这些利益冲突可能非常复杂,源于安全架构的跨复杂领域的性质。 12 公理12:清晰的沟通 安全应使用有利于业务和技术利益相关方之间进行有效沟通的通用术语。...最重要的一点是,无论加密服务是否已打开并处于最佳运行状态,网络服务都无法向应用服务发出信号。因为网络无法理解应用程序的数据结构。 规则很简单:网络需要网络安全服务来保护。

    1.4K10

    机器学习可解释性系列 - 是什么&为什么&怎么做

    机器学习可解释性分析 可解释性通常是指使用人类可以理解的方式,基于当前的业务,针对模型的结果进行总结分析; 一般来说,计算机通常无法解释它自身的预测结果,此时就需要一定的人工参与来完成可解释性工作; 目录...,超多的参数、复杂的结构、特征的组合等等都阻挡了我们对结果的直观理解,这在一定程度上伤害着我们对结果的信心; 因此,不管是从对业务扩展、可信度、结果分享中的哪个角度考虑,可解释性都是机器学习中重要且有必要的一环...; 可解释性 可解释性的一个特殊点在于它的衡量没有一个量化的数学方法,主观的定义是可解释性是人们能够理解模型决策原因的程度,这种理解是基于实际数据和业务下的理解,假设一个线性模型做房屋预测,模型中房屋大小对房价影响最大...进行可解释性的原因: 知其然更要知其所以然:人类的好奇心驱使下,问为什么是很正常的一种思维,如果不能解释预测结果,那么就无法让人们完全信任这个结果(现代医学中西医的接受度要高于中医,除了科学带来的普适性之外...; 功能级评估:代理型解释,例如我们用SVM训练模型并预测房屋价格,使用局部代理方法(比如决策树)来解释SVM的预测结果,也就是复杂模型做业务,简单模型解释其结果; PS:在我们的乘客聚类项目中,一部分解释性工作就类似代理型解释

    1.2K73

    卷积神经网络的压缩和加速

    最实际的原因在于当前存储条件和硬件的计算速度无法满足复杂网络的需求,当然也许十几年或更远的将来,这些都将不是问题,那么神经网络的压缩和加速是否仍有研究的必要呢?...答案是肯定的,我认为对网络压缩和加速的最根本原因在于对高效率模型的追求,当前很多复杂网络中的很多参数是冗余的,对实际模型结果没什么贡献,我们怎么能容忍这些无意义的参数竟然和有意义的参数享受相同的“待遇”...此时我们仍需要回到图1左侧的示意图:对输入矩阵我们无法做分解,因为不同的前向传递中矩阵是变化的,但是参数矩阵是固定的呀,那么何不分解参数矩阵呢?...Tucker分解是对张量直接进行分解,其分解效果如图5所示 原卷积经过分解成3个计算量更小的卷积,卷积核通道数如图中所示,那么分解前后计算量为 image.png 由表所示,若要求加速至少2倍,在卷积核大小为...主要思想是用预训练好的网络(通常结构较复杂,准确率较高),来指导小网络的训练,并使小网络达到与复杂网络相近的准确率。

    3.9K80

    .NET 云原生架构师训练营(设计原则与模式)--学习笔记

    系统思维 什么是复杂系统 系统复杂的原因 软件系统的复杂性 控制复杂性 面向过程与面向算法 系统思维 什么是系统?...-- 亚里士多德 什么是复杂系统 由很多高度相关、高度互联和高度混杂的元素或实体所组成的系统 系统复杂的原因 我们总是有“更多的要求”(更多功能,更好性能,更健壮,更灵活) 我们要求系统能够与其它系统相互协作...,相互连接 要用大量的信息来指定并描述 软件系统的复杂性 问题域的复杂性 管理开发过程的复杂性 软件系统中随处可能出现的灵活性 描述离散系统行为的问题 控制复杂性 算法分解 面向对象分解 面向对象思想(...从对象到类的过程就是抽象的过程,即将所见到的具体实体抽象成概念,从而可以在计算机世界中进行描述和对其采取各种操作 最少承诺 根据这个原则,对象的接口只提供它的基本行为,此外别无其他 最少惊奇 这个原则是指抽象捕捉了某个对象的全部行为...,从而在不同的抽象层次对系统进行分解,进一步简化对系统的理解

    25900

    MECE分析法

    举个简单的例子:某项目出现质量问题,领导需要你对当前质量问题进行分析,找到根因并给一定的改善方案。...此时你一定会把问题列表全部拉出来,尝试一条一条的分析其原因,并且原因可能判读的类型是基于你当下的理解,如代码缺陷,数据错误,设计问题...... 最终可能的问题分类为: 这就不符合MECE原则。...3.3、围绕这些阶段,继续分解出可能的原因 如需求阶段可能的原因有:需求设计不明确,需求理解错误,需求PRD写的不够充分等等......这时候你会发现围绕着这几个原因大类可以很容易分解出一些子项。...这要求对问题进行深入的思考和仔细审查。遗漏或重叠会导致分析的不准确性。 4.3、数据和信息的可获得性 在选择细分或部分时,确保相关数据和信息可以收集和分析。...一般而言,需要通过企业架构来规划业务的企业,其业务都具有相当的复杂度。

    24910

    从高考到奥林匹克竞技场:大模型与人类智能的终极较量

    所有实验均使用zero-shot CoT prompts,研究团队针对每种答案类型进行了定制,并指定了输出格式以便于答案提取和基于规则的匹配。...从对不同推理能力的细粒度分析来看,大模型所欠缺的能力(如对复杂问题的分解,对几何图形的视觉推理等)正是科学研究中不可或缺、至关重要的能力,表明了AI离真正可以全方位辅助人类进行科学研究还有一段距离。...该benchmark的题目使用了复杂的文本-图像环绕的输入格式,一些模型无法很好地支持这一格式,导致其不能很好的处理和理解嵌入文本中的图像位置信息。...模型错误类型的分析 研究团队采样了 GPT-4V 回答错误的112道题(每个学科 16 道题目,其中 8 道为纯文本题目,8 道为多模态题目),并人工标注这些错误的原因。...另一个比较多的错误原因是理解偏差,这可以归因于模型对上下文的误解以及整合复杂语言结构和多模态信息的困难。

    12110

    高情商程序员:5种类型的bug沟通有诀窍!

    但即便是这样,当拿到bug描述后,即便发给了更多的同事,可能还是无法复现这个bug,此时可以这样跟提bug的人进行沟通:先解释你这里已经找了很多人测试,实在无法复现bug;建议对方可以进行什么操作如清缓存...现在大多是敏捷开发,对于复杂的系统,需求定义或讨论时确实会遗漏部分场景或者大家对需求的描述有各自的理解。...对于此类的bug,沟通时可参考以下方式:找产品经理确认细节,当时自己的理解可能有误或者需求没有定义这部分的细节,如果是需求没有定义的,那就让产品经理根据项目进度安排进后续的迭代中;如果是自己当时对需求的理解有歧义的...然后,跟产品经理沟通,尽量将bug相关的内容进行分解,把影响层面最大的那部分场景先修复掉,其他场景可以排在后续的迭代中分批或一次性更改(这个看具体情况)。...在你们有结论之后,可以参考以下方式跟bug相关的人员进行沟通:首先,还是解释你已经查明了bug的原因,但这个因为涉及到一些历史遗漏或者对其他项目的影响等问题,改起来比较耗时或有风险;接着,说明当前项目的任务比较紧

    24310

    「强化学习可解释性」最新2022综述

    例如,结构简单的模型(如决策树、贝叶斯网络等)在通常可以直观的展示输入和输出之间的逻辑关系,但面对由 大量简单结构组成的庞大模型,其错综复杂的逻辑关系仍然导致模型的整体不可理解.同时,虽然结构复杂的模...,即解释智能体行为的动机及行为之间的关联.然而,缺乏 对环境和任务的认识使得一些关键问题无从解决:缺乏对环境的认识使人在面临复杂任务时,缺乏对环境内部 规律的理解,导致对环境状态进行抽象时忽略有利信息,...的基础性 问题,并对现有工作进行总结.首先,本文从 XAI 出发,对其通用观点进行总结,作为分析 XRL 问题的基础;然后, 分析 XRL 与 XAI 的共同问题,构建出一套可解释性领域的理论体系,包括界定智能算法和机械算法...然而,当模型规模逐渐 庞大时,各因素之间的逻辑不可避免地相互交织,变得错综复杂,使我们最终无法抓住其主从关系。...备特定领域的专业知识;感知表达对模型决策的重要因素进行筛选,并使用清晰、简洁的形式进行呈现,虽然结 果易于理解,但已经不具备重构策略的能力。

    58320

    Anthropic:Agents 最佳实践指南

    Agents(智能体):大模型动态指导其自身的过程和工具使用,保持对任务完成的控制。 如何使用 agents ?...Vellum:用于构建和测试复杂工作流程的GUI工具。 使用框架的建议 初学者使用LLM API:许多模式可以用几行代码实现。 理解底层代码:确保理解框架的底层代码,避免错误的假设。...Routing(路由):对输入进行分类并将其引导至专门的后续任务。 案例 将不同类型的客户服务查询(一般问题、退款请求、技术支持)引导到不同的下游流程、Prompt 和工具中。...Orchestrator-worker(协调器-工作者):中央 LLM 动态分解任务并将其委托给 worker LLMs ,然后综合结果。 案例‍ 每次对多个文件进行复杂更改的产品。...Agents 用于开放式问题,难以预测所需的步骤数量,无法硬编码固定路径。 案例 用于解决 SWE 工作台任务 的编程 Agent ,该任务涉及根据任务描述对许多文件进行编辑。

    7110

    【综述专栏】强化学习可解释性

    ,即解释智能体行为的动机及行为之间的关联.然而,缺乏 对环境和任务的认识使得一些关键问题无从解决:缺乏对环境的认识使人在面临复杂任务时,缺乏对环境内部 规律的理解,导致对环境状态进行抽象时忽略有利信息,...的基础性 问题,并对现有工作进行总结.首先,本文从 XAI 出发,对其通用观点进行总结,作为分析 XRL 问题的基础;然后, 分析 XRL 与 XAI 的共同问题,构建出一套可解释性领域的理论体系,包括界定智能算法和机械算法...XAI 在其他方向(如视觉)的成果;另一方面,XRL 目前仍处于起步阶段,对其针对性的讨论 较少,而对于 XAI,研究者们长期以来进行了广泛的研究和讨论[17] -[24] ,具有深刻的借鉴意义.基于上述原因...在对知识进行转换表达的过程中,待解释的知识可能无法完全通过目标知识体系进行描述,这时只有部分 知识可以被解释.本文使用“完全解释”和“部分解释”的概念描述这一情况: 完全解释:待解释的知识完全被目标知识体系表达...,变得错综复杂,使我们最终无法抓住其主从关系.对于以简洁 结构(如决策树分支)构成的大规模模型,虽然所有结果在理论上有迹可循,但当模型规模已超越人类的理解能 力,导致系统整体将仍然不具备可解释性. 2.4

    50721

    「强化学习可解释性」最新2022综述

    例如,结构简单的模型(如决策树、贝叶斯网络等)在通常可以直观的展示输入和输出之间的逻辑关系,但面对由大量简单结构组成的庞大模型,其错综复杂的逻辑关系仍然导致模型的整体不可理解.同时,虽然结构复杂的模 型...,即解释智能体行为的动机及行为之间的关联.然而,缺乏 对环境和任务的认识使得一些关键问题无从解决:缺乏对环境的认识使人在面临复杂任务时,缺乏对环境内部 规律的理解,导致对环境状态进行抽象时忽略有利信息,...问题,并对现有工作进行总结.首先,本文从 XAI 出发,对其通用观点进行总结,作为分析 XRL 问题的基础;然后, 分析 XRL 与 XAI 的共同问题,构建出一套可解释性领域的理论体系,包括界定智能算法和机械算法...然而,当模型规模逐渐庞大时,各因素之间的逻辑不可避免地相互交织,变得错综复杂,使我们最终无法抓住其主从关系。...;感知表达对模型决策的重要因素进行筛选,并使用清晰、简洁的形式进行呈现,虽然结果易于理解,但已经不具备重构策略的能力。

    74740

    hhdb客户端介绍(27)

    目的与概述在复杂逻辑的开始部分添加注释,简要说明该逻辑块的目的,实现的功能和它在程序中的作用。提供对该逻辑块的整体描述,包括它处理的数据类型、涉及的算法或策略,以及预期的输出结果。...步骤说明: 将复杂逻辑分解为若干步骤,并在每个步骤的开头或关键位置添加注释,说明该步骤的目的和操作。这有助于跟踪逻辑的执行流程,并理解每一步的作用。...输入和输出:说明复杂逻辑块的输入参数和预期的输出结果,以及它们如何被处理。输入参数说明: 对于复杂逻辑中的每个输入参数,提供详细的注释说明其类型、含义、预期范围或限制条件。...验证方法: 提供如何验证逻辑正确性和性能的方法或工具,以便后续维护和升级时进行验证。维护提示修改记录: 在逻辑块附近添加修改记录注释,记录每次修改的原因、时间和修改者,以便追踪代码变更历史。...优化与重构:如果代码经过优化或重构,注释应记录这些变更的原因、方法和结果,以便未来维护者理解为何采用当前实现。

    5910

    强化学习中的可解释性问题

    传统的价值函数压缩信息,但无法展示序列决策过程的细节,而TPD则将泛化价值函数分解为一系列预期未来结果,每个时间步都有一个,从而揭示出特定结果何时可能发生的信息。...实验表明,TPD能够准确地生成解释,澄清政策的未来策略和给定动作的预期轨迹,并改善对奖励组成的理解,促进与人类期望的一致性。...论文实验 本文介绍了作者使用模拟环境和强化学习算法对出租车问题进行了解释性的研究,并进行了以下对比实验: 实验一:比较不同初始燃料水平下的策略选择和事件概率预测结果,以及解释未来奖励与策略之间的关系。...未来展望 未来的研究可以从以下几个方面展开: 1)可以考虑将TPD应用于连续问题中,如无线网络优化等,以验证其在更复杂和现实场景下的性能; 2)可以探索如何将不确定性估计纳入预测中,例如使用一致预测技术计算置信区间...,以便向用户传达EFO预测的可靠程度; 3)可以进一步研究如何预测奖励的完整分布,而不是仅仅关注离散事件,这对于那些无法轻松分解成离散事件的问题尤其有用。

    10610

    借助 Solidity 来识别智能合约的调配模式

    在将代码分解为多个可操作的合约后,我们便会发现有的合约中的函数需要通过另一个合约才能进行调用。...由于当时的区块 gas 限制无法支持这种规模的智能合约,所以这项改变当时并没有受到重视: “该解决方案为储存在区块链中的对象大小设置了最高上限,并使其略高于当前gas上限值(在最坏的情况下,可以使用470...但我们仍需把解决方案分解为多个合约。 复杂性和面向对象程序设计 将区块链应用分解为多个智能合约的第二个原因与技术限制无关,而是与“人”的精神限制有关。...其工厂合约的设计方式决定了其配对交易合约的部署需要经过两个步骤。首先部署合约,然后用将要进行交易的两个代币对其进行初始化。...我们可以遵循以上标准来实现安全有效的调配,希望大家可以深入理解文中的示例原理,并形成适合自己的解决方案。

    91830

    《微服务设计》第 1 章 微服务

    第 1 章 微服务 Eric Evans 的《领域驱动设计》一书帮助我们理解了用代码呈现真实世界的重要性,并且告诉我们如何更好地进行建模。...持续交付理论告诉我们如何更有效及更高效地发布软件产品,并指出保持每次提交均可发布的重要性。基于对 Web 的理解,我们寻找到了机器与机器交互的更好方式。...有一个黄金法则是:你是否能够修改一个服务并对其进行部署,而不影响其他任何服务?...,这是一种非常标准的分解技术 这种方式存在一些缺点 首先,你无法选择异构的技术 其次,你会失去独立地对系统某一部分进行扩展的能力。...而最糟糕的影响可能是你会缺乏一个比较明显的接缝来建立架构的安全性保护措施,从而无法确保系统的弹性 1.4.2 模块 有些语言提供了自己的模块分解技术。

    44731
    领券