本当に「ビジネスロジック」とは何ですか?


115

私はPHPを始めた2009年からWeb開発に取り組んでいます。ASP.NETに移行したとき、この「ビジネスロジック」と「ビジネスルール」に多くの焦点が当てられているDDDとOOADについてよく耳にしました。要点は、これまでに開発したアプリはすべてCRUD操作に関するものであり、実際にこれらのことを見たことがないということです。

それらが実際に実際にどのようなものになるのか、私には想像できません。それでは、このビジネスロジックとはどのようなもので、アプリにどのように適合するのでしょうか?私はこれらがドメインモデルのメソッドとして実装されていることを知っていますが、それらのメソッドは何である可能性があり、アプリケーションのどこで使用される可能性がありますか?

回答:


107

CRUDは、作成、読み取り、更新、削除を表す頭字語です。これらは、データベースタプルで実行できる4つの基本操作です しかし、ビジネスアプリケーションには常に、データベースレコードの作成、読み取り、更新、削除以外のこともあります。

いくつかの基本的な定義から始めて、いくつかの例を見て、それらの定義が例にどのようにマッピングされ、実際のソフトウェアにどのようにマッピングされるかを見てみましょう。

ビジネスロジックまたはドメインロジックはデータの作成、保存、変更の方法を決定する実際のビジネスルールエンコードするプログラムの一部です。ビジネスオブジェクトが相互にどのように相互作用するかを規定し、ビジネスオブジェクトにアクセスして更新するルートとメソッドを実施します。

ビジネスルールは、組織に適用される操作、定義、および制約を記述します。操作は集合的にプロセスを形成します。すべてのビジネスはこれらのプロセスを使用して、物事を成し遂げるシステムを形成します。

それでは、いくつかの例を見てみましょう。

ある当座預金口座から別の当座預金口座への送金

まず、知っておくべきことは何ですか(入力)?

  • 振替人の身元
  • 送金される金額
  • ソース当座預金口座番号
  • ターゲット当座預金口座番号

適用する必要がある「ビジネスルール」にはどのようなものがありますか?

  • 要求を行う人には、そうする権限が必要です。
  • トランザクションはアトミックでなければなりません。
  • 一定の金額を超える場合、取引には政府への報告要件がある場合があります

「アトミック」とは、トランザクションが完全に成功するか、完全に失敗する必要があることを意味します。他の口座に入金せずにある口座からお金を引き出す(お金が消える)、または口座に入金されたが別の口座から引き落とされない(お金が魔法のようにどこからでも現れる)口座取引はできません。

Amazonに何かを注文する。

何を知る必要がありますか?

  • 注文者の身元
  • 出荷情報
  • 課金情報
  • 支払方法
  • 出荷する各アイテムの量と数量
  • 発送方法(一晩、スローボートまたはスーパーセーバー)
  • 州税率

注文後、どうなりますか?

  • アイテムは在庫から引き出されます
  • 手持ちの数量が引き落とされる
  • アイテムは出荷用に梱包されています
  • 在庫切れの商品は入荷待ちです
  • 最小数量を下回るアイテムが注文されます
  • 1回または2回の発送ですか?
  • 請求書/発送リストが印刷され、注文とともに配置されます

    ..等。


5
定義は好きですが、例では、ビジネスロジックとビジネスルールを区別するのを忘れています。
jdv-ヤンデヴァン14

1
OK。しかし、なぜビジネスルールとして「トランザクションはアトミックでなければならない」とラベル付けするのですか?ビジネスルールとしては少し低レベルに聞こえます。
jdv-ヤンデヴァン14

9
@jdv:あなたはこれを考え過ぎています。テラーはそのトランザクションの半分しか実行しませんか?
ロバートハーヴェイ14年

1
@jdv:トランザクションはアトミックでなければならないということは、2つのことを意味します:(1)何かがトランザクションの処理に干渉する場合、トランザクションの影響を、それが発生しなかったかのように元に戻すことができます(ただし、エラーログレポートの作成)、または実行する必要があるすべてを完了します。(2)トランザクションのどの部分も、それらのアカウントが関係する他の「アトミック」トランザクションと重複しません。... 2つの口座のそれぞれの$ 1,000,000持っている人は、銀行が要求され、その時点で一方から他方へ$ 500,000転送した場合、例えば
supercat

4
@jdvトランザクションはアトミックであることが、保証される必要があり、最終状態に関連する基本的な要件です。
icarus74 14

27

CRUDは、アプリケーションが行う作成、読み取り、更新、削除にすぎません。

バグトラッカーもある程度、CRUDアプリです。バグを作成し、バグを読み取り(表示)、バグを更新し、場合によっては削除します。

ただし、バグトラッカーには単なるCRUD以外のものもあります。

  • 開発者は、バグを検証済みまたはクローズ済みとしてマークすることはできません。これはQAの仕事の一部です。そのため、QAの役割を持たない誰かがバグをクローズまたは検証済みとしてマークできないようにするためのコードがそこにあります。
  • 実際にバグを削除できるのはプロジェクトマネージャーだけです。
  • バグを「テストミー」としてマークするには、バグに対して少なくとも1つのコードのコミットが必要です。
  • 「クローズ」状態のバグのみが「再オープン」状態に移行できます
  • バグに割り当てられた開発者は、「コードレビュー」から「コードレビュー完了」にバグを移動できません。
  • QAと開発者は、割り当てられているプロジェクトのバグのみを見ることができます。

上記を実装するコードは、アプリケーションのビジネスロジックです。

ワークフローの制限、または CRUDでさまざまな操作を行うことができます。これらは、CRUDアプリを別のものから分離するものです。これらは、アプリケーションがどのように機能するかをビジネスに実際に伝えるために必要な部分です。それは論理的です...まあ、それはプロジェクトマネージャーの耳からビールについて議論するのが一番です。しかし、それがビジネスロジックです。

もちろん、ロールのない「純粋な」CRUDアプリを作成することは可能です。すべてを変更して表示できますが、これらはルールではなく例外です。

ビジネスロジックは、与えられたビジネスルールを処理するためにプログラムに書き込むロジックです。


ビジネスルールを開始するとき、これはcrud自体またはビジネスロジックよりも高いレベルになる傾向があります。これは、ビジネスで働いているビジネスアナリストから得られるものである傾向があります。

この例では、店舗の返品デスクで商品の返品を処理する方法を決定するプログラムを検討します。

  • 領収書が90日以上経過している場合、店内クレジットのみが付与されます。
  • 領収書が90日未満の場合、領収書が購入に使用された入札にクレジットします(クレジットはクレジットカードに戻り、現金は現金に戻り、店内クレジットは店内クレジットになります)...小切手で、その場合は現金を使用します。

これらはいくつかのビジネスルールです。彼らは、アプリケーションのCRUD部分とは話しません。

ビジネスルールを使用する場合、システムで生のコードを記述する代わりに、ルールエンジン(たとえば、Windows Workflow Foundation Rules Engine)で記述されていることがよくあります。


ロジック/ルールの区別は用語の1つであり、一晩中議論することができることを理解してください(再びビールよりも良い)。これは珍しい違いではありませんが、2つは互いに溶け込むことができます。


23

他の答えは正しいです。もう1つの考え…

ビジネスロジックは移植可能

Turbo PascalからJavaに移行するなど、別のプログラミング言語でソフトウェアプロジェクト再実装する場合、ビジネスロジックビジネスルールは、古いプロジェクトと新しいプロジェクトの共通点です。

プログラミング言語は異なるだろう。ソースコードは全く異なるだろう。ツール(IDEコンパイラなど)はまったく異なる場合があります。ユーザーインターフェースは完全に再編成するか、異なる場合がありますルック&フィールをドキュメントは、おそらく違うだろう。しかし、2つのプロジェクトの目的、実行された作業/達成された目標の最終結果は同じです。


10

ビジネスロジックは基本的に、検証とフローという2つの広範なカテゴリで構成されています。ビジネスロジックによれば、数量1は数量2以上でなければなりません。たとえば、購入するアイテムの数は在庫のアイテムの数以下でなければなりません。

あるアプリケーションでは、ビジネス関係者はこれがビジネスルールであると言うので、このビジネスロジック(検証)を強制するコードを記述します。別のアプリケーションは、注文したアイテムの数が在庫のアイテムの数よりも多い場合、注文を受け入れ、差額に20%を加えた独自の注文を出すと言うので、このビジネスロジック(フロー)を記述します。

CRUDは単にデータをストレージに出し入れするだけで、それを変更します。ビジネスロジックは、そのデータを使用して何をするか、およびそれに対して許可される変換を決定します。あなたの顧客は将来、5歳未満の特定の地理的地域(地元の人/訪問者の割引)から生まれていますか。CRUDは簡単です。子供が6か月以上でなく暦年に半分の時間以上住んでいた場合にのみ子供の税額控除を取得できることを知っているのは、より複雑です。


9

ビジネスロジックまたはルールは、ユーザーインターフェイスのメカニズムに関係しないもの(「プログラミング」)です。これらは、この取引を行っていた場合、または100年前(手動)で行っていた場合に適用する必要があるものです。たとえば、購入に売上税を適用する場合。


1

プログラムまたはアプリケーションの「ビジネスロジック」は、(ユーザー、オペレーティングシステムなどからの)入力を実際に処理するコードの一部です。通常、アプリケーションの「ビジネスルール」は、プログラム自体の定義済みパラメーター(入力の処理方法など)です。少なくとも、これは多くの人から言及されていることを聞いた方法です。これらは、コードの一部を説明するための非常によく似た用語です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.