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 ได้แบบอัตโนมัติ