Voici ce que je comprends, j'utiliserais l'exemple de l'hôpital pour élaborer les concepts et approfondir les différences entre le CB et le sous-domaine et pourquoi il peut y avoir un cas où il n'y a pas de relation 1:1 entre eux.
Ejemplo
Imaginons que nous réalisons un logiciel pour un hôpital, dans lequel nous avons identifié 3 sous-domaines
-
Soins de santé (Domaine principal, où ils veulent réellement guérir le patient)
-
Facture (Domaine de soutien axé sur la facturation)
-
Connaissances (domaine générique, où les médecins tiennent à jour les procédures sur la façon d'opérer un patient pour une maladie particulière)
Nous savons maintenant que les contextes délimités sont des frontières sous lesquelles les termes ont une signification bien définie. Appliquons-les donc aux sous-domaines
Considérons le terme. Patient
. Quelles sont les choses auxquelles vous pensez lorsque vous entendez le terme "patient" ?
- Leurs symptômes actuels
- Dossiers médicaux antérieurs
- Allergies
Et leur crédibilité en matière de paiement de factures ? Le solde impayé actuel ? Vous n'y avez pas pensé ? La raison en est que vous pensiez dans l'espace de sous-domaine principal de Health Care
. La crédibilité du paiement des factures n'a de sens que si l'on passe à la Invoice
sous-domaine.
Ce que nous comprenons, c'est que le terme "patient" se trouve à l'intérieur d'un contexte délimité, c'est-à-dire une frontière à l'intérieur d'un sous-domaine où il a une signification très spécifique.
La raison pour laquelle il a dit
La CB se situe dans l'espace des solutions/de la mise en œuvre/de la programmation et non dans celui des affaires. d'affaires
car c'est ici que nous décidons des champs et des comportements qui doivent faire partie du modèle du patient.
Dans l'espace du domaine principal, vous pourriez représenter Patient
comme ceci
class Patient {
List<Allergy> alergies;
List<MedicalRecord> records;
Age age;
boolean isAllergicTo(Allergy allergy)
boolean canTakeLocalAnesthesia()
}
Considérant que dans le Invoicing
vous pouvez le représenter comme suit
class Patient {
CreditCard creditCard;
CreditScore creditScore;
Bill currentBill;
void charge(Amount amount)
}
De même, le terme Cure
dans le sous-domaine "Health Core", les opérations qui ont été/doivent être effectuées sur un patient pour guérir la maladie, tandis que dans le sous-domaine "Health Core", les opérations qui ont été/doivent être effectuées sur un patient pour guérir la maladie. Knowledge subdomain
il contiendrait des informations sur les symptômes, les tests de diagnostic, les suggestions de prescription, qui vont de pair avec une maladie.
Vous pouvez maintenant voir que le sous-domaine des soins de santé a plusieurs CB et que sous une CB, chaque terme a une signification très spécifique, ce qui soutient le langage universel.