Constraints and Boundaries (ข้อจำกัดและขอบเขต)
จากประสบการณ์ของเรา สถาปนิกซอฟต์แวร์สามารถส่งผลกระทบอย่างมากต่อความสำเร็จหรือความล้มเหลวของทีมพัฒนา ทีมที่รู้สึกถูกทิ้งไว้ข้างนอก หรือแปลกแยกจากสถาปนิกของตัวเองมักจะขาดความรู้เกี่ยวกับข้อจำกัดต่างๆ ของระบบ หากปราศจากคำแนะนำในระดับที่เหมาะสม พวกเขาจะดิ้นรนในการอิมพลีเมนต์สถาปัตยกรรมให้ถูกต้อง
หนึ่งในบทบาทของสถาปนิกซอฟต์แวร์คือการสร้างและสื่อสารข้อจำกัดที่นักพัฒนาต้องอิมพลีเมนต์สถาปัตยกรรมภายใต้ขอบเขตนั้น ลองคิดว่าข้อจำกัดเหล่านี้เป็นเหมือน "ห้อง" ที่ทีมพัฒนาทำงานอยู่ภายในเพื่ออิมพลีเมนต์สถาปัตยกรรม ดังที่ Figure 24-3 แสดงให้เห็น การมีขอบเขตที่แคบเกินไปหรือหลวมเกินไปล้วนส่งผลกระทบโดยตรงต่อความสามารถของทีมในการอิมพลีเมนต์สถาปัตยกรรมให้สำเร็จ
Figure 24-3. ขอบเขตที่สถาปนิกซอฟต์แวร์สร้างขึ้นส่งผลต่อความสามารถของทีมในการอิมพลีเมนต์สถาปัตยกรรม
ข้อจำกัดที่มากเกินไปทำให้ "ห้อง" เล็กเกินไปสำหรับทีมพัฒนา ทำให้พวกเขาเข้าไม่ถึงเครื่องมือ ไลบรารี และแนวปฏิบัติหลายอย่างที่จำเป็นต่อการอิมพลีเมนต์ระบบ สิ่งนี้ก่อให้เกิดความหงุดหงิด และมักส่งผลให้นักพัฒนาลาออกจากโครงการไปหาสภาพแวดล้อมที่มีความสุขและดีต่อสุขภาพมากกว่า
สิ่งตรงข้ามก็เกิดขึ้นได้เช่นกัน ข้อจำกัดที่หลวมเกินไป (หรือไม่มีข้อจำกัดเลย) ทำให้ "ห้อง" ใหญ่เกินไป ในกรณีนี้จะมีตัวเลือกมากเกินไป จนบังคับให้ทีมพัฒนาต้องรับบทบาทของสถาปนิกไปโดยปริยายเพื่อตัดสินใจเรื่องสถาปัตยกรรมที่สำคัญทั้งหมดเอง เมื่อขาดคำแนะนำที่เหมาะสม นักพัฒนาก็จะพบว่าตัวเองต้องทำ proof of concept มากเกินไป ดิ้นรนกับการตัดสินใจด้านการออกแบบ และกลายเป็นคนที่ไม่มีประสิทธิภาพ สับสน และหงุดหงิด
สถาปนิกซอฟต์แวร์ที่มีประสิทธิภาพจะพยายามให้คำแนะนำในระดับที่เหมาะสมและข้อจำกัดที่พอเหมาะ เพื่อให้ทีมมีทุกสิ่งที่ต้องการ ส่วนที่เหลือของบทนี้จะอุทิศให้กับการแสดงวิธีสร้างขอบเขตที่เหมาะสมเหล่านี้