บทนำสถาปัตยกรรมซอฟต์แวร์และการออกแบบ

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

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

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

สถาปัตยกรรมทำหน้าที่เป็น blueprint for a system. เป็นนามธรรมในการจัดการความซับซ้อนของระบบและสร้างกลไกการสื่อสารและการประสานงานระหว่างส่วนประกอบต่างๆ

  • เป็นการกำหนด structured solution เพื่อให้เป็นไปตามข้อกำหนดทางเทคนิคและการปฏิบัติงานทั้งหมดในขณะที่เพิ่มประสิทธิภาพคุณสมบัติคุณภาพทั่วไปเช่นประสิทธิภาพและความปลอดภัย

  • นอกจากนี้ยังเกี่ยวข้องกับชุดของการตัดสินใจที่สำคัญเกี่ยวกับองค์กรที่เกี่ยวข้องกับการพัฒนาซอฟต์แวร์และการตัดสินใจแต่ละอย่างอาจส่งผลกระทบอย่างมากต่อคุณภาพการบำรุงรักษาประสิทธิภาพและความสำเร็จโดยรวมของผลิตภัณฑ์ขั้นสุดท้าย การตัดสินใจเหล่านี้ประกอบด้วย -

    • การเลือกองค์ประกอบโครงสร้างและส่วนต่อประสานที่ระบบประกอบด้วย

    • พฤติกรรมตามที่ระบุไว้ในการทำงานร่วมกันระหว่างองค์ประกอบเหล่านั้น

    • การจัดองค์ประกอบโครงสร้างและพฤติกรรมเหล่านี้ให้เป็นระบบย่อยขนาดใหญ่

    • การตัดสินใจทางสถาปัตยกรรมสอดคล้องกับวัตถุประสงค์ทางธุรกิจ

    • รูปแบบสถาปัตยกรรมเป็นแนวทางในองค์กร

การออกแบบซอฟต์แวร์

การออกแบบซอฟต์แวร์ให้ไฟล์ design planที่อธิบายองค์ประกอบของระบบความเหมาะสมและทำงานร่วมกันเพื่อตอบสนองความต้องการของระบบ วัตถุประสงค์ของการวางแผนการออกแบบมีดังนี้ -

  • เพื่อเจรจาความต้องการของระบบและกำหนดความคาดหวังกับลูกค้าการตลาดและบุคลากรด้านการจัดการ

  • ทำหน้าที่เป็นพิมพ์เขียวในระหว่างกระบวนการพัฒนา

  • เป็นแนวทางในการดำเนินงานรวมถึงการออกแบบโดยละเอียดการเข้ารหัสการรวมและการทดสอบ

มาก่อนการออกแบบรายละเอียดการเข้ารหัสการรวมและการทดสอบและหลังจากการวิเคราะห์โดเมนการวิเคราะห์ข้อกำหนดและการวิเคราะห์ความเสี่ยง

เป้าหมายของสถาปัตยกรรม

เป้าหมายหลักของสถาปัตยกรรมคือการระบุข้อกำหนดที่มีผลต่อโครงสร้างของแอปพลิเคชัน สถาปัตยกรรมที่วางไว้อย่างดีช่วยลดความเสี่ยงทางธุรกิจที่เกี่ยวข้องกับการสร้างโซลูชันทางเทคนิคและสร้างสะพานเชื่อมระหว่างข้อกำหนดทางธุรกิจและทางเทคนิค

เป้าหมายอื่น ๆ มีดังนี้ -

  • เปิดเผยโครงสร้างของระบบ แต่ซ่อนรายละเอียดการใช้งาน

  • ตระหนักถึงกรณีการใช้งานและสถานการณ์ทั้งหมด

  • พยายามตอบสนองความต้องการของผู้มีส่วนได้ส่วนเสียต่างๆ

  • จัดการทั้งความต้องการด้านการใช้งานและคุณภาพ

  • ลดเป้าหมายในการเป็นเจ้าของและปรับปรุงตำแหน่งทางการตลาดขององค์กร

  • ปรับปรุงคุณภาพและฟังก์ชันที่ระบบนำเสนอ

  • ปรับปรุงความเชื่อมั่นภายนอกทั้งในองค์กรหรือระบบ

ข้อ จำกัด

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

  • ขาดเครื่องมือและวิธีการที่เป็นมาตรฐานในการแสดงสถาปัตยกรรม

  • ขาดวิธีการวิเคราะห์เพื่อทำนายว่าสถาปัตยกรรมจะทำให้เกิดการนำไปใช้งานที่ตรงตามข้อกำหนดหรือไม่

  • ขาดความตระหนักถึงความสำคัญของการออกแบบสถาปัตยกรรมต่อการพัฒนาซอฟต์แวร์

  • ขาดความเข้าใจในบทบาทของสถาปนิกซอฟต์แวร์และการสื่อสารที่ไม่ดีระหว่างผู้มีส่วนได้ส่วนเสีย

  • ขาดความเข้าใจในกระบวนการออกแบบประสบการณ์การออกแบบและการประเมินการออกแบบ

บทบาทของสถาปนิกซอฟต์แวร์

Software Architect จัดเตรียมโซลูชันที่ทีมเทคนิคสามารถสร้างและออกแบบสำหรับแอปพลิเคชันทั้งหมด สถาปนิกซอฟต์แวร์ควรมีความเชี่ยวชาญในด้านต่อไปนี้ -

ความเชี่ยวชาญด้านการออกแบบ

  • ผู้เชี่ยวชาญด้านการออกแบบซอฟต์แวร์รวมถึงวิธีการและแนวทางที่หลากหลายเช่นการออกแบบเชิงวัตถุการออกแบบที่ขับเคลื่อนด้วยเหตุการณ์เป็นต้น

  • นำทีมพัฒนาและประสานงานความพยายามในการพัฒนาเพื่อความสมบูรณ์ของการออกแบบ

  • ควรตรวจสอบข้อเสนอการออกแบบและแลกเปลี่ยนกันเองได้

ความเชี่ยวชาญด้านโดเมน

  • ผู้เชี่ยวชาญในระบบที่กำลังพัฒนาและวางแผนสำหรับวิวัฒนาการซอฟต์แวร์

  • ช่วยในกระบวนการตรวจสอบข้อกำหนดเพื่อให้มั่นใจว่ามีความครบถ้วนและสม่ำเสมอ

  • ประสานความหมายของแบบจำลองโดเมนสำหรับระบบที่กำลังพัฒนา

ความเชี่ยวชาญด้านเทคโนโลยี

  • ผู้เชี่ยวชาญเกี่ยวกับเทคโนโลยีที่มีอยู่ซึ่งช่วยในการนำระบบไปใช้งาน

  • ประสานงานการเลือกภาษาการเขียนโปรแกรมเฟรมเวิร์กแพลตฟอร์มฐานข้อมูล ฯลฯ

ความเชี่ยวชาญด้านระเบียบวิธี

  • ผู้เชี่ยวชาญเกี่ยวกับวิธีการพัฒนาซอฟต์แวร์ที่อาจนำมาใช้ระหว่าง SDLC (Software Development Life Cycle)

  • เลือกแนวทางที่เหมาะสมสำหรับการพัฒนาที่ช่วยทั้งทีม

บทบาทที่ซ่อนอยู่ของสถาปนิกซอฟต์แวร์

  • อำนวยความสะดวกในการทำงานด้านเทคนิคระหว่างสมาชิกในทีมและเสริมสร้างความสัมพันธ์ที่ไว้วางใจในทีม

  • ผู้เชี่ยวชาญด้านข้อมูลที่แบ่งปันความรู้และมีประสบการณ์มากมาย

  • ปกป้องสมาชิกในทีมจากแรงภายนอกที่จะทำให้พวกเขาเสียสมาธิและสร้างมูลค่าให้กับโครงการน้อยลง

สิ่งที่ส่งมอบของสถาปนิก

  • ชุดเป้าหมายการทำงานที่ชัดเจนสมบูรณ์สม่ำเสมอและทำได้

  • คำอธิบายการทำงานของระบบที่มีการสลายตัวอย่างน้อยสองชั้น

  • แนวคิดสำหรับระบบ

  • การออกแบบในรูปแบบของระบบที่มีการสลายตัวอย่างน้อยสองชั้น

  • ความคิดเกี่ยวกับเวลาคุณลักษณะของตัวดำเนินการและการนำไปใช้และแผนการดำเนินงาน

  • เอกสารหรือกระบวนการที่ทำให้แน่ใจว่ามีการย่อยสลายตามหน้าที่และรูปแบบของอินเตอร์เฟสจะถูกควบคุม

คุณสมบัติคุณภาพ

คุณภาพเป็นตัวชี้วัดความเป็นเลิศหรือสถานะของการปราศจากข้อบกพร่องหรือข้อบกพร่อง แอตทริบิวต์คุณภาพคือคุณสมบัติของระบบที่แยกจากฟังก์ชันการทำงานของระบบ

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

พวกเขาสามารถจัดเป็น -

คุณสมบัติคุณภาพคงที่

สะท้อนโครงสร้างของระบบและองค์กรที่เกี่ยวข้องโดยตรงกับสถาปัตยกรรมการออกแบบและซอร์สโค้ด ผู้ใช้ปลายทางมองไม่เห็น แต่ส่งผลกระทบต่อต้นทุนการพัฒนาและการบำรุงรักษาเช่นการแยกส่วนการทดสอบความสามารถในการบำรุงรักษาเป็นต้น

คุณสมบัติคุณภาพแบบไดนามิก

สะท้อนพฤติกรรมของระบบระหว่างการดำเนินการ ซึ่งเกี่ยวข้องโดยตรงกับสถาปัตยกรรมการออกแบบซอร์สโค้ดการกำหนดค่าพารามิเตอร์การปรับใช้สภาพแวดล้อมและแพลตฟอร์มของระบบ

ผู้ใช้ปลายทางสามารถมองเห็นได้และมีอยู่ที่รันไทม์เช่นปริมาณงานความทนทานความสามารถในการปรับขนาด ฯลฯ

สถานการณ์คุณภาพ

สถานการณ์ด้านคุณภาพระบุวิธีป้องกันข้อบกพร่องไม่ให้กลายเป็นความล้มเหลว สามารถแบ่งออกเป็นหกส่วนตามข้อกำหนดคุณลักษณะ -

  • Source - หน่วยงานภายในหรือภายนอกเช่นคนฮาร์ดแวร์ซอฟต์แวร์หรือโครงสร้างพื้นฐานทางกายภาพที่สร้างสิ่งกระตุ้น

  • Stimulus - เงื่อนไขที่ต้องพิจารณาเมื่อมาถึงระบบ

  • Environment - สิ่งกระตุ้นเกิดขึ้นภายในเงื่อนไขบางประการ

  • Artifact - ทั้งระบบหรือบางส่วนเช่นโปรเซสเซอร์ช่องทางการสื่อสารหน่วยเก็บข้อมูลถาวรกระบวนการ ฯลฯ

  • Response - กิจกรรมที่ดำเนินการหลังจากการมาถึงของสิ่งกระตุ้นเช่นการตรวจจับความผิดพลาดการกู้คืนจากความผิดปิดการใช้งานแหล่งที่มาของเหตุการณ์เป็นต้น

  • Response measure - ควรวัดการตอบสนองที่เกิดขึ้นเพื่อให้สามารถทดสอบข้อกำหนดได้

คุณสมบัติคุณภาพทั่วไป

ตารางต่อไปนี้แสดงคุณสมบัติคุณภาพทั่วไปที่สถาปัตยกรรมซอฟต์แวร์ต้องมี -

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