Governance (การกำกับดูแล)

ข่าวดีสำหรับการกำกับดูแล (governance) ของ architecture style นี้คือ เพราะมันพบได้ทั่วไปมาก สถาปนิกที่สร้างเครื่องมือ structural testing ดั้งเดิมบางตัวจึงออกแบบมาโดยคำนึงถึง architecture นี้ อันที่จริง fitness function ตัวอย่างใน Figure 6-4 ถูกสร้างขึ้นสำหรับ layered architecture โดยเฉพาะ (ดู Example 10-1 )

Example 10-1. ArchUnit fitness function สำหรับกำกับดูแล layer
layeredArchitecture()
    .layer("Controller").definedBy("..controller..")
    .layer("Service").definedBy("..service..")
    .layer("Persistence").definedBy("..persistence..")

    .whereLayer("Controller").mayNotBeAccessedByAnyLayer()
    .whereLayer("Service").mayOnlyBeAccessedByLayers("Controller")
    .whereLayer("Persistence").mayOnlyBeAccessedByLayers("Service")

ใน Example 10-1 สถาปนิกกำหนด layer ต่าง ๆ ใน architecture โดยตั้งชื่อที่สะดวก เช่น Controller สำหรับ component ที่แทนด้วยชื่อ package นั้น (ในไวยากรณ์ของ ArchUnit จุดสองจุด ( .. ) ที่อยู่ทั้งสองข้างของชื่อ package บ่งบอกถึงความเป็นเจ้าของ) จากนั้นสถาปนิกจะกำหนดการสื่อสารที่อนุญาตระหว่าง layer ต่าง ๆ เพื่อกำกับดูแล open layer และ closed layer ของมัน

fitness function library รองรับ layered architecture style ได้เป็นอย่างดี ทำให้สถาปนิกสามารถทำ governance ของความสัมพันธ์ที่พวกเขาออกแบบไว้ระหว่าง layer ในระหว่างการ implement ได้แบบอัตโนมัติ