สถาปัตยกรรมซอฟต์แวร์กับสถาปัตยกรรมของระบบเทียบกับคลาสไดอะแกรม?


11

ฉันค่อนข้างสับสนเกี่ยวกับเงื่อนไขดังต่อไปนี้:

สถาปัตยกรรมซอฟต์แวร์

สถาปัตยกรรมแอปพลิเคชันซอฟต์แวร์เป็นกระบวนการของการกำหนดโซลูชันที่มีโครงสร้างที่ตรงตามข้อกำหนดทางเทคนิคและการดำเนินงานทั้งหมดในขณะที่ปรับแต่งคุณสมบัติคุณภาพทั่วไปเช่นประสิทธิภาพความปลอดภัยและความสามารถในการจัดการ มันเกี่ยวข้องกับชุดของการตัดสินใจบนพื้นฐานของปัจจัยที่หลากหลายและการตัดสินใจแต่ละครั้งอาจมีผลกระทบอย่างมากต่อคุณภาพประสิทธิภาพการบำรุงรักษาและความสำเร็จโดยรวมของแอปพลิเคชัน ( microsoft )

ระบบสถาปัตยกรรม

สถาปัตยกรรมระบบเป็นรูปแบบแนวคิดที่กำหนดโครงสร้างพฤติกรรมและมุมมองเพิ่มเติมของระบบ 1คำอธิบายสถาปัตยกรรมเป็นคำอธิบายอย่างเป็นทางการและเป็นตัวแทนของระบบการจัดระเบียบในลักษณะที่สนับสนุนการให้เหตุผลเกี่ยวกับโครงสร้างและพฤติกรรมของระบบ ( wiki )

คลาสไดอะแกรม

ในวิศวกรรมซอฟต์แวร์คลาสไดอะแกรมใน Unified Modeling Language (UML) เป็นไดอะแกรมโครงสร้างแบบสแตติกที่อธิบายโครงสร้างของระบบโดยการแสดงคลาสของระบบคุณลักษณะการดำเนินงาน (หรือเมธอด) และความสัมพันธ์ระหว่างวัตถุ ( วิกิ )

ถ้าฉันอ่านคำอธิบายเหล่านี้ทั้งหมดอธิบายการโต้ตอบระหว่างโมดูลต่าง ๆ ของแอปพลิเคชัน อย่างไรก็ตามความแตกต่างระหว่างสิ่งเหล่านี้คืออะไร?
สิ่งที่ฉันคิด / พยายามเปรียบเทียบคำเหล่านี้ :

  • คลาสไดอะแกรมไม่ใช่รูปแบบของสถาปัตยกรรมระบบเนื่องจากคำอธิบายข้างต้น ( structure, behavior, and more views of a system) บอกเป็นนัยว่าไม่มีรายละเอียดการนำไปปฏิบัติในสถาปัตยกรรมในขณะที่แผนภาพคลาสอธิบายถึงการนำไปปฏิบัติและอาจเป็นไปในทิศทางของการออกแบบมากกว่าสถาปัตยกรรม?
  • ฉันคิดว่าสถาปัตยกรรมของระบบเป็นสถาปัตยกรรมที่มีการโต้ตอบภายนอก (เช่นฐานข้อมูล) ในขณะที่สถาปัตยกรรมซอฟต์แวร์มุ่งเน้นไปที่แอปพลิเคชันเอง

1
บางทีไดอะแกรมคลาสเป็นผลลัพธ์ของกิจกรรมสถาปัตยกรรมซอฟต์แวร์ในทำนองเดียวกันกับที่พิมพ์เขียวของอาคารเป็นผลลัพธ์ของสถาปนิกของอาคาร ...
FrustratedWithFormsDesigner

คำตอบ:


7

สถาปัตยกรรมของระบบอธิบายส่วนประกอบของระบบ ตัวอย่างเช่นคุณอาจมีระบบป้อนคำสั่งซื้อที่ประกอบด้วย:

ส่วนหน้าของเว็บบริการชั้นธุรกิจและที่เก็บข้อมูล

ดังนั้นคุณควรแผนภาพระดับสูงแสดงสิ่งนี้

สถาปัตยกรรมแอปพลิเคชันซอฟต์แวร์อธิบายสถาปัตยกรรมขององค์ประกอบเฉพาะ ตัวอย่างเช่นหนึ่งในองค์ประกอบของระบบป้อนคำสั่งซื้อคือส่วนหน้าของเว็บ สถาปัตยกรรมแอปพลิเคชันจะแสดงเลเยอร์และการโต้ตอบต่าง ๆ ของส่วนประกอบนั้น Responsive UI, Model View Controller, เว็บเซอร์วิสเอาต์เอาต์, การบันทึกจะสำเร็จได้อย่างไร, มันให้และแนวคิดของแต่ละองค์ประกอบจะถูกสร้างขึ้นและเลเยอร์ในส่วนประกอบนั้นซึ่งเป็นส่วนหนึ่งของระบบที่ใหญ่กว่า

โดยทั่วไปจะมีไดอะแกรมแสดงรายละเอียดเพิ่มเติมว่าจะสร้างองค์ประกอบนั้นอย่างไร

ในที่สุดคลาสไดอะแกรมจะดำดิ่งลงไปในสถาปัตยกรรมแอปพลิเคชันซอฟต์แวร์มากขึ้น ตัวอย่างเช่นสัญญาสำหรับอินเทอร์เฟซการบันทึกมีลักษณะอย่างไร ดูจะโต้ตอบกับคอนโทรลเลอร์อย่างไรและอื่น ๆ สิ่งเหล่านี้จะแสดงรายละเอียดเพิ่มเติมเกี่ยวกับสถาปัตยกรรมซอฟต์แวร์แอปพลิเคชันสำหรับส่วนประกอบเฉพาะของระบบ

ควรมีหลายสิ่งเหล่านี้หากองค์ประกอบเฉพาะมีขนาดใหญ่และซับซ้อน


2

บางจุดเพิ่มเติม:

  • ระบบเป็นคำที่กว้างที่สุดและโดยทั่วไปแล้วระดับสูงสุดมีรายละเอียดน้อยที่สุด
  • บางส่วนของระบบอาจจัดเป็นซอฟต์แวร์
  • บางส่วนของซอฟต์แวร์อาจอธิบายได้โดยใช้ไดอะแกรมระดับ

สุดท้าย แต่ไม่ท้ายสุด: สถาปัตยกรรมเป็นตัวเลือกครั้งเดียวที่ยากหรือเป็นไปไม่ได้ที่จะกลับมาใหม่ในภายหลังโดยไม่ต้องสร้างใหม่ทุกอย่าง คำจำกัดความที่ดีที่สุดของสถาปัตยกรรมซึ่งทำให้แตกต่างจากการออกแบบคือ "ทุกอย่างที่แพงเกินกว่าจะเปลี่ยนแปลง" ดังนั้นในสถาปัตยกรรมคุณมักจะพบตัวเลือกสำหรับภาษาการเขียนโปรแกรมระบบปฏิบัติการแบรนด์ของฐานข้อมูลเชิงสัมพันธ์ไม่ว่าคุณจะล็อกเข้ากับโซลูชันประเภทใด ดังนั้นสิ่งที่จัดเป็นสถาปัตยกรรมก็ขึ้นอยู่กับระบบและความยืดหยุ่นในแง่มุม


0

แผนภาพคลาสนั้นค่อนข้างแตกต่างจากส่วนที่เหลือของสองคำศัพท์ - พวกเขาแสดงสิ่งที่ชั้นเรียนเสนอให้กับชั้นเรียนอื่นและวิธีที่พวกเขาโต้ตอบกัน อย่างไรก็ตามคำว่า 'สถาปัตยกรรมระบบ' และ 'สถาปัตยกรรมซอฟต์แวร์' สร้างความสับสนและต้องการคำชี้แจงเพิ่มเติม

สิ่งสำคัญคือต้องตระหนักว่า 'ระบบ' ไม่เพียงหมายถึงส่วนประกอบซอฟต์แวร์เท่านั้น แต่ยังรวมถึงส่วนประกอบอื่น ๆ เช่นส่วนประกอบฮาร์ดแวร์ด้วย หากระบบมีเพียงระบบซอฟต์แวร์เท่านั้นจะไม่มีความแตกต่างระหว่างข้อกำหนดทั้งสอง อย่างไรก็ตามหากระบบมีส่วนประกอบอื่นที่ไม่ใช่ซอฟต์แวร์สถาปัตยกรรมซอฟต์แวร์จะแตกต่างจากสถาปัตยกรรมระบบของระบบอย่างมีนัยสำคัญ


สถาปัตยกรรมของระบบควรมีบางสิ่งบางอย่างเช่นโมดูล GUI หรือไม่ @Tushar
KingBoomie

ใช่มันอาจและไม่จำเป็นต้องเป็นองค์ประกอบซอฟต์แวร์ @RickBeeloo
Tushar

แต่คุณจะต้องมีคลาสในซอฟต์แวร์เพื่อรับอินพุตของผู้ใช้และแสดงบางสิ่งบางอย่างแก่ผู้ใช้? ดังนั้นควรเป็นส่วนประกอบของซอฟต์แวร์ด้วยหรือไม่
KingBoomie

ใช่และฉบับที่ไม่บริโภคทั้งหมดของระบบซอฟแวร์เป็นมนุษย์ :)
Tushar
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.