【问题标题】: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 难以理解这个概念。顺便说一句,我也有过同样的经历。命名应该困扰任何软件开发人员,因为好的名称是降低复杂性的最佳工具之一。有问题的名称表明,创造和掺杂它的人对软件实际上是什么的理解非常有限。

标签: business-logic nomenclature


【解决方案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 会去逻辑上做生意..

                (对不起,忍不住:))

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 1970-01-01
                  • 2013-09-04
                  • 1970-01-01
                  • 1970-01-01
                  • 2011-04-20
                  • 1970-01-01
                  • 1970-01-01
                  • 2018-09-25
                  相关资源
                  最近更新 更多