为啥称为“业务逻辑”?这个词是从哪里来的? [关闭]

Posted

技术标签:

【中文标题】为啥称为“业务逻辑”?这个词是从哪里来的? [关闭]【英文标题】:Why is it called 'business logic'? Where did this term come from? [closed]为什么称为“业务逻辑”?这个词是从哪里来的? [关闭] 【发布时间】:2010-11-29 07:08:58 【问题描述】:

我正在浏览各种 WPF 文档,我感到不必要的困惑。 “业务逻辑”一词散布在其中,好像每个人都应该知道它是什么。

根据这里的这个问题,我可以看到业务逻辑是什么: What exactly consists of 'Business Logic' in an application?

但是这个词是从哪里来的呢?为什么它被称为“业务逻辑”而不是“核心逻辑”或“主要算法”或任何其他更通用的术语?我编写的程序很少与“业务逻辑”有关,当我想到“业务逻辑”时,我会想到处理信用卡交易、客户数据库维护等的事情。换句话说,与整个计算机科学的一小部分相关的事物。当我编写一个成像应用程序时,没有涉及“业务”,没有客户,没有基于金钱的交易,什么都没有。所以说我有“业务逻辑”真的让我很困惑,因为我不是在做生意,我是在处理图像。

【问题讨论】:

“业务逻辑”是矛盾的,不是吗? 当然,这个命名法可能是由讨论商业应用的人创造的。但是这个短语本身并不局限于商业应用。例如,物理应用程序可能会将大多数公式和约束(如终端速度)包含为“业务逻辑”。该术语绝不限于实际的业务应用程序,就像豚鼠是猪,花生是豌豆一样。 here 是我目前找到的很好的定义 当人们意识到将来会影响名称时,他们真的会更多地考虑术语。由于有了新技术,事情变得越来越复杂,不合逻辑的概念将变得越来越难以理解。这似乎是一个小问题,但如果你意识到这可能需要你多花 20 到 30 分钟你才能理解业务逻辑实际上是因为名称选择不当,并且你需要学习数千个其他概念,这真的是一大笔钱时间使用效率低下 @AaronSieb:“您似乎了解基本概念,为什么词源会困扰您?”。由于名称选择不当,看起来 OP 难以理解这个概念。顺便说一句,我也有过同样的经历。命名应该困扰任何软件开发人员,因为好的名称是降低复杂性的最佳工具之一。有问题的名称表明,创造和掺杂它的人对软件实际上是什么的理解非常有限。 【参考方案1】:

出于同样的原因,子弹出来的枪口被称为“业务端”。这是主要操作发生的地方。

【讨论】:

【参考方案2】:

如果您是专业的平面设计师,那么肯定会涉及到使用您的成像应用程序的业务 - 您的工作就是您的业务!

因此,“业务逻辑”是指定义用户如何进行业务(在本例中为操作图像)的代码部分。

不要忘记,在过去,所有软件都是“商业软件”——没有人能负担得起为商业目的编写软件所需的昂贵设备和技能。如果它没有赚钱或为企业省钱,它就不会被写出来。

【讨论】:

根据该定义,“业务逻辑”将是设计师如何设计图形,即她/他如何在屏幕上操作图像的 UI,而不是实际实现,例如,降噪算法,或将算法绑定到接口的逻辑。是这个词的意思吗?这与@Jonathan Patt 给出的答案或我引用的问题中标记为正确的答案不同。 @mmr:不,我不这么认为。 UI 是用户和图像之间的一个很大程度上不需要的抽象。这是用户关心的图像发生的事情,而不是 UI。 @RichieHindle--说 UI 是一个“不需要的抽象”就像说用手绘画是从最终的绘画作品中得到的“不需要的抽象”。 UI 定义了用户将如何使用程序,尤其是在成像方面,因此它似乎对“开展业务”至关重要。 @mmr:当然,如果您是为了钱而绘画,那么用手绘画是一种不需要的抽象。如果一个专业的画家可以通过意志的行为让这幅画出现在画布上,并且省去了所有繁琐的刷子,他会的。关于业务逻辑与 UI 的关键点在于,赚钱的是最终结果,而不是实现该结果的 UI 机制。 UI 非常重要,因为它的工作是使最终结果快速且易于实现,但它不是“业务”,而是达到目的的一种手段。 @RichieHindle:正如我在下面对@Simeon Pilgrim 所说,对我来说,计算中的“回到过去”意味着“航天飞机”和“通过密码破译赢得第二次世界大战”——两者都不是涉及商业,当时有人怀疑只有欧洲最富有的五位国王才能买得起电脑(辛普森一家参考)。几乎我所有的编码都与科学有关,即使它是科学业务,而不仅仅是为了业务。这就是为什么这个词对我来说似乎如此有限。【参考方案3】:

不确定,但我认为该术语应改为域逻辑。

【讨论】:

【参考方案4】:

您可以将其称为“核心逻辑”,但我相信第一个(众所周知的)多层应用程序实际上是为保险或银行业务编写的,因此称为“业务逻辑”。从那里开始,模式就形成了,命名就停滞不前了。

如果第一个多层应用程序是一个研究项目或其他什么,它可能会被称为“核心逻辑”。

【讨论】:

【参考方案5】:

该术语起源于业务软件,其中业务特定规则在各自的模块中分离。这只是转移到所有其他软件。

【讨论】:

是的,但为什么呢?编码不仅仅是业务特定的规则。 绝大多数从业的专业程序员要么为企业编写软件,要么编写将出售给企业的软件。这些可能是高度技术性的程序,但最终目标是支持业务流程。即使在 PC 世界中,企业拥有和部署的 Wintel 机器也比“家庭”PC 多得多。【参考方案6】:

当我编写一个成像应用程序时,没有涉及“业务”,没有客户,没有基于金钱的交易,什么都没有。所以说我有“业务逻辑”真的让我很困惑,因为我不是在做生意,我是在处理图像。

此外,关于表示和数据的许多建议也开始向南走,因为在业务应用程序的“表示层”中额外出现的效果和过滤器等操作是您的核心。

“可视化”、“引擎”和“持久存储”是我倾向于从事的模拟中层的常见名称。在您的域中使用有意义的名称没有问题。但后来我对所有 SAS 程序员的招聘广告感到困惑,因为这在英国国防环境中意味着其他东西;如果您想与商务人士交谈,您必须为他们翻译。

【讨论】:

实际上,这些广告中的大部分都是您所想的。从直升机上速降时成功调试导弹固件的能力非常罕见,他们不得不在各处宣传。【参考方案7】:

想想早期的计算机系统,比如信用卡处理,代码有两个很大的部分,做 io、与后端对话、磁带等的部分,以及做业务逻辑的部分,规则之类的,卡是否有效,是否已超过限制。

换一种思考方式,业务人员所说的事情就是要捕捉的“规则”。

【讨论】:

当我想到“早期计算机系统”时,我认为 ENIAC、密码破解和航天飞机从软件工程的角度来看是“完美的代码库”。与信用卡交易几乎没有任何关系,除非这些交易应该加密。 ENIAC 是古老的,几乎是预计算,当您考虑“计算机”这个词今天的含义时。 但那是图灵等人定义现代计算的时候——这就是为什么我认为这些系统是“早期计算机系统”的原因 我认为这些是第一,先驱或计算机,对于这个答案,我的意思是早期的 DEC、VAX、DP-x 部署类型的东西。【参考方案8】:

业务逻辑是应用程序中“如何”工作的部分,由编程团队以外的其他人决定。通常是代码完成了客户想要完成的工作。该术语通常仅适用于为非 IT 团队构建的内部软件。

【讨论】:

那么为什么我会看到它出现在 WPF 等非常通用的文档中?这是一个适用于任何类型的应用程序的框架,而不仅仅是内部的东西,也不仅仅是业务工作。 因为显然文档的作者不同意你的观点,并认为 WPF 是用于商业工作的。那是微软最常见(收入最高)的客户类型,不是吗?【参考方案9】:

我认为很多时候它是讽刺的,因为业务逻辑并不总是合乎逻辑的。它只是以某种方式完成,因为企业想要那样做——很多时候它不是最好的方式。你可以和他们战斗(如果幸运的话)让他们看到光明,或者只是接受它的业务逻辑这一事实,并准备好在他们意识到自己犯了错误时改变它。

【讨论】:

【参考方案10】:

这是一个主要用于业务线应用程序的术语,人们知道它的另一种方式是 CRUD 应用程序(创建、读取、更新、删除)。

我认为这意味着类包含业务流程如何为给定业务流程工作的逻辑。

【讨论】:

【参考方案11】:

我想我同意 DVK - IIRC,当时,整个 Data->Logic->Presentation 层是一个“企业”(基本上是:商业)软件流行语。

现在每个该死的网页都应该是三层的,这更常见了。

您还必须记住,虽然除了业务代码之外还有很多代码,但业务代码的数量是巨大的,而且业务量也很大(har har)。一些术语起源于那里并不奇怪。

【讨论】:

【参考方案12】:

我认为核磁共振是非常正确的。我正在教授我的 HCI 软件工程课程,我需要鼓励学生停止思考“业务逻辑”,而更多地思考 MVC。

很多时候,他们以前的教授会告诉他们, “在 HCI 之下是 BIDness 逻辑”

我们可以丢掉业务逻辑吗?由于软件很少没有用户界面, 我们可以说,对于软件的其余部分,有视图、用户控件和模型。

这三个实体之间会有消息传递。顺便说一句,它们是“输出”、“输入”/“状态”。正如图灵(和 Church)教导我们的那样。

所以...让我们放弃“出价逻辑”

【讨论】:

【参考方案13】:

就像你去洗手间做生意的美女一样,你漂亮的 GUI 会去逻辑上做生意..

(对不起,忍不住:))

【讨论】:

以上是关于为啥称为“业务逻辑”?这个词是从哪里来的? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

这个 backBarButtonItem 又是从哪里来的呢?

这个 VSCODE 智能感知是从哪里来的?

人类的创造力是从哪里来的:4星|《三联生活周刊》2018年第46期

你好,你知道这个包裹是从哪里来的吗?包:flutter_gen/gen_l10n/gallery_localizations.dart

CRM订单状态的Open, In process和Completed这些条目是从哪里来的

这些 .htaccess 规则是从哪里来的,它们到底是做啥的?