持续集成:
合理提高团队成员的集成频率,通常每个成员每天至少集成一次。每次集成通过自动化构建进行验证,及时发现集成错误。避免长时间不集成,一集成就遭遇集成地狱。
注:
自动化构建:编译,发布,自动化测试。
集成地狱:代码差异量过大,集成困难。
重构:
不改变功能,改进代码,优化性能、可读性、可扩展性。
测试驱动设计:
及时测试,发现问题,改进设计,确保对系统的更改不破坏现有功能。
演进式设计:
结合持续的需求和反馈进行敏捷开发。敏捷开发的实践:持续集成、测试驱动设计、重构。
——————————————
处理复杂系统的方式:
抽象:忽略细节,抽取主干。
分治:拆分系统为多个模块。
——————————————
领域驱动设计(Domain Driven Design,DDD):
业务驱动设计。大领域分成小领域。小领域分成各子域,或者称限定上下文。上下文高内聚,低耦合。
限界上下文之间的映射关系:
合作关系(Partnership):两个上下文紧密合作的关系,一荣俱荣,一损俱损。
共享内核(Shared Kernel):两个上下文依赖部分共享的模型。
客户方-供应方开发(Customer-Supplier Development):上下文之间有组织的上下游依赖。
遵奉者(Conformist):下游上下文只能盲目依赖上游上下文。
防腐层(Anticorruption Layer):一个上下文通过一些适配和转换与另一个上下文交互。
开放主机服务(Open Host Service):定义一种协议来让其他上下文来对本上下文进行访问。
发布语言(Published Language):通常与OHS一起使用,用于定义开放主机的协议。
大泥球(Big Ball of Mud):混杂在一起的上下文关系,边界不清晰。
另谋他路(SeparateWay):两个完全没有任何联系的上下文。
实体:大量可唯一标识的对象,如中国居民。
值对象:简单固定的对象,如中国的省、自治区、直辖市、特别行政区(属性只需全称、简称)。