เมื่อทำการทำให้เป็นรูปเป็นร่างของระบบเป็นสิ่งสำคัญที่คุณต้องเข้าใจไม่เพียง แต่คุณค่าที่อยู่หลังสิ่งที่สถาปัตยกรรมจะนำมาสู่ตาราง แต่ยังต้องเข้าใจและชื่นชมสิ่งที่ควรจะเป็น
เป้าหมายหลักของซอฟต์แวร์หรือสถาปัตยกรรมทางเทคนิคคือการระบุความต้องการที่ไม่ใช่หน้าที่ซึ่งรับรู้โดยคุณสมบัติคุณภาพที่จะขับเคลื่อนสถาปัตยกรรมระบบสถาปัตยกรรมระบบ
ในข้อกำหนดที่ไม่ได้ใช้งาน:
ข้อกำหนดที่ไม่เกี่ยวกับการทำงานคือข้อกำหนดที่ระบุเกณฑ์ที่สามารถใช้ตัดสินการทำงานของระบบได้มากกว่าพฤติกรรมที่เฉพาะเจาะจง พวกเขาจะแตกต่างกับข้อกำหนดการทำงานที่กำหนดพฤติกรรมหรือฟังก์ชั่นที่เฉพาะเจาะจง แผนสำหรับการนำความต้องการของฟังก์ชันไปใช้นั้นมีรายละเอียดในการออกแบบระบบ แผนสำหรับการนำข้อกำหนดที่ไม่ได้ใช้งานไปใช้นั้นมีรายละเอียดในสถาปัตยกรรมระบบ
ความต้องการในการใช้งานในวงกว้างกำหนดสิ่งที่ระบบควรทำและข้อกำหนดที่ไม่เกี่ยวกับการทำงานกำหนดว่าระบบควรจะเป็นอย่างไร ... ข้อกำหนดที่ไม่สามารถใช้งานได้มักเรียกว่า "คุณสมบัติคุณภาพ" ของระบบ ข้อกำหนดอื่น ๆ สำหรับข้อกำหนดที่ไม่ใช่หน้าที่การใช้งานคือ "คุณภาพ", "เป้าหมายคุณภาพ", "คุณภาพของข้อกำหนดบริการ", "ข้อ จำกัด " และ "ข้อกำหนดที่ไม่ใช่พฤติกรรม"
แน่นอนว่าการระบุข้อกำหนดที่มีนัยสำคัญทางสถาปัตยกรรมนั้นสมเหตุสมผลเมื่ออยู่ในโครงการกรีนฟิลด์อย่างไรก็ตามเมื่อทำงานกับซอฟต์แวร์ที่มีอยู่ คุณไม่ต้องการให้สถาปัตยกรรมซอฟต์แวร์ของคุณได้รับอิทธิพลจากระบบที่มีอยู่
สถาปัตยกรรมซอฟต์แวร์ที่มีสิทธิ์จะต้องมี 3 สิ่ง
ที่เปิดเผย
นี่เป็นส่วนหนึ่งของเอกสารที่คุณประกาศว่าไม่มีอะไร แต่เป็นสิ่งที่ควรจะเป็น เราทำสิ่งนี้ผ่านการใช้มุมมองทางสถาปัตยกรรมต่างๆของระบบ เรากำหนดองค์ประกอบที่ควรจะเป็นวิธีที่พวกเขามีปฏิสัมพันธ์และจากนั้นเราเลือกที่จะเจาะลึกลงไปในแต่ละองค์ประกอบสำหรับมุมมองที่ละเอียดยิ่งขึ้นซึ่งจะประกาศว่าระบบควรได้รับการออกแบบอย่างไร
นี่คือความแตกต่างที่สำคัญ การออกแบบระบบควรถูก จำกัด โดยสถาปัตยกรรมระบบซึ่งในความเป็นจริงมันแยกจากกัน แต่เกี่ยวข้องกับสิ่งต่างๆ
หลักการและเหตุผล
เหตุผลของสถาปัตยกรรมซอฟต์แวร์ของคุณคือสิ่งที่มอบความชอบธรรมและสิทธิอำนาจในการตัดสินใจด้านสถาปัตยกรรมที่เกิดขึ้น บางทีการตัดสินใจถูกใช้ประโยชน์จากผู้ฟังเหตุการณ์ Pub / Sub ผ่าน MQ สำหรับการทริกเกอร์งานแบ็ตช์และคุณทำไดอะแกรม?
ทำไมการตัดสินใจครั้งนี้จึงเกิดขึ้น? เราอธิบายว่าทำไมในส่วนเหตุผลและเชื่อมโยงคำอธิบายของเรากลับไปยังข้อกำหนดที่ไม่ได้ใช้งานเป้าหมายคุณภาพของแอตทริบิวต์หรือข้อกำหนดที่สำคัญทางสถาปัตยกรรม (เช่นงานจะต้องไม่ตรงกันและทำซ้ำได้การบำรุงรักษาเป็นแอตทริบิวต์คุณภาพไดรฟ์ที่ในกรณีที่งานล้มเหลวเป็นชุดที่งานสามารถเริ่มต้นใหม่ผ่านข้อความ MQ ระบบจะต้องมีการสูญเสียข้อความเป็นศูนย์ด้วยการสื่อสารแบบอะซิงโครนัส ฯลฯ .. )
ความเสี่ยง
ตอนนี้คุณได้ประกาศว่าสถาปัตยกรรมควรเป็นอย่างไรและพิสูจน์ด้วยเหตุผลของคุณตอนนี้คุณสามารถระบุความเสี่ยงเกี่ยวกับสถานะปัจจุบันของระบบเพื่อที่สิ่งนี้ไม่ได้ปฏิบัติ
(เช่นการตรวจสอบฝั่งเซิร์ฟเวอร์กำลังทำซ้ำในโค้ด Javascript ฝั่งไคลเอ็นต์นี่เป็นการละเมิดหลักการ DRY และสิ่งนี้เรียกใช้เพื่อตอบสนองต่อแอตทริบิวต์คุณภาพของการดูแลรักษาไม่มีข้อกำหนดที่ไม่เกี่ยวกับการใช้งาน ไม่มีเหตุผลสำหรับพฤติกรรมของระบบในปัจจุบัน)
ความเสี่ยงของคุณยังสามารถสร้างแผนภาพที่สถานะปัจจุบันเบี่ยงเบนไปจากสถาปัตยกรรมในปัจจุบัน ความเสี่ยงเหล่านี้สามารถแก้ไขได้โดยทีมพัฒนาในขณะนี้ไม่ว่าจะผ่านแผนโครงการหรือโดยการเพิ่มสิ่งนี้ลงใน Backlog