ไม่มีคำตอบที่ชัดเจนสำหรับเรื่องนี้เพราะ "สถาปัตยกรรมซอฟต์แวร์" และ "การออกแบบซอฟต์แวร์" มีคำจำกัดความค่อนข้างมากและไม่มีคำจำกัดความตามบัญญัติของทั้งสอง
วิธีคิดที่ดีคือ Len Bass, Paul Clements และ Rick Kazman กล่าวว่า "สถาปัตยกรรมทั้งหมดคือการออกแบบ แต่ไม่ใช่การออกแบบทั้งหมดคือสถาปัตยกรรม" [Software Architecture in Practice] ฉันไม่แน่ใจว่าฉันเห็นด้วยกับสิ่งนั้น (เพราะสถาปัตยกรรมสามารถรวมกิจกรรมอื่น ๆ ) แต่มันจับสาระสำคัญที่สถาปัตยกรรมเป็นกิจกรรมการออกแบบที่เกี่ยวข้องกับชุดย่อยที่สำคัญของการออกแบบ
คำจำกัดความ flippant เล็กน้อยของฉัน (พบได้ในหน้าคำนิยามของ SEI ) คือชุดของการตัดสินใจซึ่งหากทำผิดจะทำให้โครงการของคุณถูกยกเลิก
ความพยายามที่มีประโยชน์ในการแยกสถาปัตยกรรมการออกแบบและการใช้งานเป็นแนวคิดที่ทำโดย Amnon Eden และ Rick Kazman เมื่อหลายปีก่อนในงานวิจัยเรื่อง "Architecture, Design, Implementation" ซึ่งสามารถพบได้ที่นี่: http: //www.sei.cmu .edu ภาษาของพวกเขาค่อนข้างเป็นนามธรรม แต่พวกเขาพูดง่าย ๆ ว่าสถาปัตยกรรมคือการออกแบบที่สามารถนำไปใช้ในหลายบริบทและมีความหมายที่จะนำไปใช้กับระบบการออกแบบคือการออกแบบ (ผิดพลาด) ที่สามารถใช้ได้ในหลายบริบท ของระบบและการนำไปใช้เป็นการออกแบบเฉพาะบริบทและนำไปใช้ในบริบทนั้น
ดังนั้นการตัดสินใจทางสถาปัตยกรรมอาจเป็นการตัดสินใจที่จะรวมระบบผ่านการส่งข้อความมากกว่า RPC (ดังนั้นจึงเป็นหลักการทั่วไปที่สามารถนำไปใช้ในหลายสถานที่และมีวัตถุประสงค์เพื่อนำไปใช้กับระบบทั้งหมด) การตัดสินใจออกแบบอาจใช้ต้นแบบ / thread thread structure ในโมดูลการจัดการคำร้องขออินพุตของระบบ (หลักการทั่วไปที่สามารถใช้ได้ทุกที่ แต่ในกรณีนี้ใช้เพียงหนึ่งโมดูล) และในที่สุดการตัดสินใจในการนำไปใช้อาจต้องย้ายความรับผิดชอบเพื่อความปลอดภัยจาก Request Router ไปยัง Request Handler ในโมดูล Request Manager (การตัดสินใจที่เกี่ยวข้องกับบริบทนั้นเท่านั้นที่ใช้ในบริบทนั้น)
ฉันหวังว่านี่จะช่วยได้!