コンピュータソフトウェアにおいて、ビジネスロジックまたはドメインロジックとは、データの作成、保存、変更方法を決定する現実世界のビジネスルールをコード化するプログラムの部分です。これは、データベースの管理、ユーザーインターフェースの表示、システムインフラストラクチャ、あるいはプログラムのさまざまな部分の接続といった、より低レベルの詳細に関わるソフトウェアの残りの部分とは対照的です。
ビジネスロジック:
ビジネスルール:
ビジネスロジックは以下で構成されます。[ 1 ]
ビジネスロジックはビジネスルールとは区別されるべきである。[ 2 ]ビジネスロジックは、エンタープライズシステムにおいて、データの変換や計算方法、および人やソフトウェアへのルーティング方法(ワークフロー)を決定する部分である。ビジネスルールは、ビジネスポリシーの形式的な表現である。プロセスまたは手順であるものはすべてビジネスロジックであり、プロセスでも手順でもないものはビジネスルールである。新しい訪問者を歓迎することは、実行すべき手順からなるプロセス(ワークフロー)であるが、すべての新しい訪問者を歓迎しなければならないという記述はビジネスルールである。さらに、ビジネスロジックは手続き的であるのに対し、ビジネスルールは宣言的である。[ 3 ]
例えば、eコマースウェブサイトでは、訪問者が商品をショッピングカートに追加したり、配送先住所を指定したり、支払い情報を入力したりできる場合があります。ウェブサイトのビジネスロジックには、次のようなワークフローが含まれる可能性があります。
ウェブサイトには利用規約も設けられます。
ウェブサイトのソフトウェアには、ビジネスロジックやビジネスルールの一部とはみなされないその他のコードも含まれています。

ビジネスロジックはプログラム内のどこにでも配置できます。例えば、住所の特定の形式が与えられた場合、ビジネスロジックで指定されたフィールドに正確に対応する列を持つデータベーステーブルを作成し、無効なデータが追加されないように型チェックを追加することができます。
ビジネスロジックは頻繁に変更されます。たとえば、オンライン小売業者が新しい国に商品を発送し始めると、許可される住所形式のセットが変わる可能性があります。そのため、ビジネスロジックを実装するコードを比較的分離、つまり疎結合にすることが望ましいとよく考えられています。これにより、ビジネスロジックの変更は、コードの1つの部分のみの小さなコードセットの変更で済む可能性が高くなります。離れているが強く結合したコードは、プログラマーが必要な変更の一部のみを行い、システムの一部を見落とし、誤った動作につながるリスクも高くなります。[ 4 ]
マルチティアアーキテクチャでは、データアクセス層やサービス層など、他の層とは分離されたビジネスロジック層を作成することで、この分離を形式化します。各層は、他の層のコードについて最小限の情報しか「知りません」。必要なタスクを実行するのに十分な情報だけです。たとえば、モデル・ビュー・コントローラー(MVC)パラダイムでは、コントローラー層とビュー層をできるだけ小さくし、すべてのビジネスロジックをモデルに集中させることができます。eコマースの例では、コントローラーがチェックアウトシーケンスのWebページの順序を決定し、電子メール、住所、支払い情報がビジネスルールを満たしていることを検証する責任も負います(これらの検証をデータベース自体や下位レベルのデータベースアクセスコードに任せるのではなく)。
代替的なパラダイムも可能です。例えば、比較的単純なビジネスエンティティの場合、汎用的なビューとコントローラがデータベースオブジェクトにアクセスでき、そのデータベースオブジェクト自体が、受け入れるフォーマットや可能な変更に関するすべての関連ビジネスロジック(データベースモデルとして知られています)を含んでいます。
階層型アーキテクチャの中には、独立したアプリケーション層またはサービス層を使用するものもあれば、ビジネスロジック層をそれらのいずれかと同一視するものもあります。
ビジネスロジックは、ビジネスルール管理システム(BRMS)を使用して手続き型コードから抽出できます。[ 5 ]
ソフトウェア開発におけるビジネスルールアプローチは、BRMS(ビジネスルール管理システム)を使用し、ビジネスロジックとその他のコードを厳密に分離します。ユーザーインターフェース管理システムも、ビジネスロジックとその他のコードを厳密に分離するために使用される技術です。マジックプッシュボタンは「アンチパターン」とみなされます。この場合、この手法は望ましくない制約を生み出し、保守しやすい方法でビジネスロジックをコーディングすることを困難にします。
ドメインモデルとは、ビジネスルールで必要とされるデータストレージの種類を抽象的に表現したものです。
{{cite journal}}:ジャーナルを引用するには|journal=(ヘルプ) — Pau と Vervest は、ネットワークの観点からビジネス リソースの割り当てを最適化するために、多数のアクターを持つ分散アプリケーションの基盤となる通信ネットワークにビジネス ロジックを組み込むアプローチを開発しました。