บทนำสถาปัตยกรรมซอฟต์แวร์และการออกแบบ
สถาปัตยกรรมของระบบอธิบายถึงองค์ประกอบหลักความสัมพันธ์ (โครงสร้าง) และวิธีที่พวกเขาโต้ตอบซึ่งกันและกัน สถาปัตยกรรมซอฟต์แวร์และการออกแบบประกอบด้วยปัจจัยที่มีส่วนช่วยหลายประการเช่นกลยุทธ์ทางธุรกิจคุณลักษณะด้านคุณภาพพลวัตของมนุษย์การออกแบบและสภาพแวดล้อมไอที
เราสามารถแยกสถาปัตยกรรมซอฟต์แวร์และการออกแบบออกเป็นสองขั้นตอน: สถาปัตยกรรมซอฟต์แวร์และการออกแบบซอฟต์แวร์ ในArchitectureการตัดสินใจที่ไม่เป็นไปตามหน้าที่จะถูกโยนทิ้งและแยกตามข้อกำหนดในการทำงาน ในการออกแบบข้อกำหนดด้านการทำงานจะสำเร็จลุล่วง
สถาปัตยกรรมซอฟต์แวร์
สถาปัตยกรรมทำหน้าที่เป็น blueprint for a system. เป็นนามธรรมในการจัดการความซับซ้อนของระบบและสร้างกลไกการสื่อสารและการประสานงานระหว่างส่วนประกอบต่างๆ
เป็นการกำหนด structured solution เพื่อให้เป็นไปตามข้อกำหนดทางเทคนิคและการปฏิบัติงานทั้งหมดในขณะที่เพิ่มประสิทธิภาพคุณสมบัติคุณภาพทั่วไปเช่นประสิทธิภาพและความปลอดภัย
นอกจากนี้ยังเกี่ยวข้องกับชุดของการตัดสินใจที่สำคัญเกี่ยวกับองค์กรที่เกี่ยวข้องกับการพัฒนาซอฟต์แวร์และการตัดสินใจแต่ละอย่างอาจส่งผลกระทบอย่างมากต่อคุณภาพการบำรุงรักษาประสิทธิภาพและความสำเร็จโดยรวมของผลิตภัณฑ์ขั้นสุดท้าย การตัดสินใจเหล่านี้ประกอบด้วย -
การเลือกองค์ประกอบโครงสร้างและส่วนต่อประสานที่ระบบประกอบด้วย
พฤติกรรมตามที่ระบุไว้ในการทำงานร่วมกันระหว่างองค์ประกอบเหล่านั้น
การจัดองค์ประกอบโครงสร้างและพฤติกรรมเหล่านี้ให้เป็นระบบย่อยขนาดใหญ่
การตัดสินใจทางสถาปัตยกรรมสอดคล้องกับวัตถุประสงค์ทางธุรกิจ
รูปแบบสถาปัตยกรรมเป็นแนวทางในองค์กร
การออกแบบซอฟต์แวร์
การออกแบบซอฟต์แวร์ให้ไฟล์ design planที่อธิบายองค์ประกอบของระบบความเหมาะสมและทำงานร่วมกันเพื่อตอบสนองความต้องการของระบบ วัตถุประสงค์ของการวางแผนการออกแบบมีดังนี้ -
เพื่อเจรจาความต้องการของระบบและกำหนดความคาดหวังกับลูกค้าการตลาดและบุคลากรด้านการจัดการ
ทำหน้าที่เป็นพิมพ์เขียวในระหว่างกระบวนการพัฒนา
เป็นแนวทางในการดำเนินงานรวมถึงการออกแบบโดยละเอียดการเข้ารหัสการรวมและการทดสอบ
มาก่อนการออกแบบรายละเอียดการเข้ารหัสการรวมและการทดสอบและหลังจากการวิเคราะห์โดเมนการวิเคราะห์ข้อกำหนดและการวิเคราะห์ความเสี่ยง
เป้าหมายของสถาปัตยกรรม
เป้าหมายหลักของสถาปัตยกรรมคือการระบุข้อกำหนดที่มีผลต่อโครงสร้างของแอปพลิเคชัน สถาปัตยกรรมที่วางไว้อย่างดีช่วยลดความเสี่ยงทางธุรกิจที่เกี่ยวข้องกับการสร้างโซลูชันทางเทคนิคและสร้างสะพานเชื่อมระหว่างข้อกำหนดทางธุรกิจและทางเทคนิค
เป้าหมายอื่น ๆ มีดังนี้ -
เปิดเผยโครงสร้างของระบบ แต่ซ่อนรายละเอียดการใช้งาน
ตระหนักถึงกรณีการใช้งานและสถานการณ์ทั้งหมด
พยายามตอบสนองความต้องการของผู้มีส่วนได้ส่วนเสียต่างๆ
จัดการทั้งความต้องการด้านการใช้งานและคุณภาพ
ลดเป้าหมายในการเป็นเจ้าของและปรับปรุงตำแหน่งทางการตลาดขององค์กร
ปรับปรุงคุณภาพและฟังก์ชันที่ระบบนำเสนอ
ปรับปรุงความเชื่อมั่นภายนอกทั้งในองค์กรหรือระบบ
ข้อ จำกัด
สถาปัตยกรรมซอฟต์แวร์ยังคงเป็นระเบียบวินัยที่เกิดขึ้นใหม่ในวิศวกรรมซอฟต์แวร์ มีข้อ จำกัด ดังต่อไปนี้ -
ขาดเครื่องมือและวิธีการที่เป็นมาตรฐานในการแสดงสถาปัตยกรรม
ขาดวิธีการวิเคราะห์เพื่อทำนายว่าสถาปัตยกรรมจะทำให้เกิดการนำไปใช้งานที่ตรงตามข้อกำหนดหรือไม่
ขาดความตระหนักถึงความสำคัญของการออกแบบสถาปัตยกรรมต่อการพัฒนาซอฟต์แวร์
ขาดความเข้าใจในบทบาทของสถาปนิกซอฟต์แวร์และการสื่อสารที่ไม่ดีระหว่างผู้มีส่วนได้ส่วนเสีย
ขาดความเข้าใจในกระบวนการออกแบบประสบการณ์การออกแบบและการประเมินการออกแบบ
บทบาทของสถาปนิกซอฟต์แวร์
Software Architect จัดเตรียมโซลูชันที่ทีมเทคนิคสามารถสร้างและออกแบบสำหรับแอปพลิเคชันทั้งหมด สถาปนิกซอฟต์แวร์ควรมีความเชี่ยวชาญในด้านต่อไปนี้ -
ความเชี่ยวชาญด้านการออกแบบ
ผู้เชี่ยวชาญด้านการออกแบบซอฟต์แวร์รวมถึงวิธีการและแนวทางที่หลากหลายเช่นการออกแบบเชิงวัตถุการออกแบบที่ขับเคลื่อนด้วยเหตุการณ์เป็นต้น
นำทีมพัฒนาและประสานงานความพยายามในการพัฒนาเพื่อความสมบูรณ์ของการออกแบบ
ควรตรวจสอบข้อเสนอการออกแบบและแลกเปลี่ยนกันเองได้
ความเชี่ยวชาญด้านโดเมน
ผู้เชี่ยวชาญในระบบที่กำลังพัฒนาและวางแผนสำหรับวิวัฒนาการซอฟต์แวร์
ช่วยในกระบวนการตรวจสอบข้อกำหนดเพื่อให้มั่นใจว่ามีความครบถ้วนและสม่ำเสมอ
ประสานความหมายของแบบจำลองโดเมนสำหรับระบบที่กำลังพัฒนา
ความเชี่ยวชาญด้านเทคโนโลยี
ผู้เชี่ยวชาญเกี่ยวกับเทคโนโลยีที่มีอยู่ซึ่งช่วยในการนำระบบไปใช้งาน
ประสานงานการเลือกภาษาการเขียนโปรแกรมเฟรมเวิร์กแพลตฟอร์มฐานข้อมูล ฯลฯ
ความเชี่ยวชาญด้านระเบียบวิธี
ผู้เชี่ยวชาญเกี่ยวกับวิธีการพัฒนาซอฟต์แวร์ที่อาจนำมาใช้ระหว่าง SDLC (Software Development Life Cycle)
เลือกแนวทางที่เหมาะสมสำหรับการพัฒนาที่ช่วยทั้งทีม
บทบาทที่ซ่อนอยู่ของสถาปนิกซอฟต์แวร์
อำนวยความสะดวกในการทำงานด้านเทคนิคระหว่างสมาชิกในทีมและเสริมสร้างความสัมพันธ์ที่ไว้วางใจในทีม
ผู้เชี่ยวชาญด้านข้อมูลที่แบ่งปันความรู้และมีประสบการณ์มากมาย
ปกป้องสมาชิกในทีมจากแรงภายนอกที่จะทำให้พวกเขาเสียสมาธิและสร้างมูลค่าให้กับโครงการน้อยลง
สิ่งที่ส่งมอบของสถาปนิก
ชุดเป้าหมายการทำงานที่ชัดเจนสมบูรณ์สม่ำเสมอและทำได้
คำอธิบายการทำงานของระบบที่มีการสลายตัวอย่างน้อยสองชั้น
แนวคิดสำหรับระบบ
การออกแบบในรูปแบบของระบบที่มีการสลายตัวอย่างน้อยสองชั้น
ความคิดเกี่ยวกับเวลาคุณลักษณะของตัวดำเนินการและการนำไปใช้และแผนการดำเนินงาน
เอกสารหรือกระบวนการที่ทำให้แน่ใจว่ามีการย่อยสลายตามหน้าที่และรูปแบบของอินเตอร์เฟสจะถูกควบคุม
คุณสมบัติคุณภาพ
คุณภาพเป็นตัวชี้วัดความเป็นเลิศหรือสถานะของการปราศจากข้อบกพร่องหรือข้อบกพร่อง แอตทริบิวต์คุณภาพคือคุณสมบัติของระบบที่แยกจากฟังก์ชันการทำงานของระบบ
การใช้คุณลักษณะคุณภาพช่วยให้สามารถแยกความแตกต่างของระบบที่ดีจากระบบที่ไม่ดีได้ง่ายขึ้น แอตทริบิวต์เป็นปัจจัยโดยรวมที่มีผลต่อพฤติกรรมรันไทม์การออกแบบระบบและประสบการณ์ของผู้ใช้
พวกเขาสามารถจัดเป็น -
คุณสมบัติคุณภาพคงที่
สะท้อนโครงสร้างของระบบและองค์กรที่เกี่ยวข้องโดยตรงกับสถาปัตยกรรมการออกแบบและซอร์สโค้ด ผู้ใช้ปลายทางมองไม่เห็น แต่ส่งผลกระทบต่อต้นทุนการพัฒนาและการบำรุงรักษาเช่นการแยกส่วนการทดสอบความสามารถในการบำรุงรักษาเป็นต้น
คุณสมบัติคุณภาพแบบไดนามิก
สะท้อนพฤติกรรมของระบบระหว่างการดำเนินการ ซึ่งเกี่ยวข้องโดยตรงกับสถาปัตยกรรมการออกแบบซอร์สโค้ดการกำหนดค่าพารามิเตอร์การปรับใช้สภาพแวดล้อมและแพลตฟอร์มของระบบ
ผู้ใช้ปลายทางสามารถมองเห็นได้และมีอยู่ที่รันไทม์เช่นปริมาณงานความทนทานความสามารถในการปรับขนาด ฯลฯ
สถานการณ์คุณภาพ
สถานการณ์ด้านคุณภาพระบุวิธีป้องกันข้อบกพร่องไม่ให้กลายเป็นความล้มเหลว สามารถแบ่งออกเป็นหกส่วนตามข้อกำหนดคุณลักษณะ -
Source - หน่วยงานภายในหรือภายนอกเช่นคนฮาร์ดแวร์ซอฟต์แวร์หรือโครงสร้างพื้นฐานทางกายภาพที่สร้างสิ่งกระตุ้น
Stimulus - เงื่อนไขที่ต้องพิจารณาเมื่อมาถึงระบบ
Environment - สิ่งกระตุ้นเกิดขึ้นภายในเงื่อนไขบางประการ
Artifact - ทั้งระบบหรือบางส่วนเช่นโปรเซสเซอร์ช่องทางการสื่อสารหน่วยเก็บข้อมูลถาวรกระบวนการ ฯลฯ
Response - กิจกรรมที่ดำเนินการหลังจากการมาถึงของสิ่งกระตุ้นเช่นการตรวจจับความผิดพลาดการกู้คืนจากความผิดปิดการใช้งานแหล่งที่มาของเหตุการณ์เป็นต้น
Response measure - ควรวัดการตอบสนองที่เกิดขึ้นเพื่อให้สามารถทดสอบข้อกำหนดได้
คุณสมบัติคุณภาพทั่วไป
ตารางต่อไปนี้แสดงคุณสมบัติคุณภาพทั่วไปที่สถาปัตยกรรมซอฟต์แวร์ต้องมี -
ประเภท | คุณสมบัติคุณภาพ | คำอธิบาย |
---|---|---|
คุณภาพการออกแบบ | ความสมบูรณ์ตามแนวคิด | กำหนดความสอดคล้องและความสอดคล้องกันของการออกแบบโดยรวม ซึ่งรวมถึงวิธีการออกแบบส่วนประกอบหรือโมดูล |
การบำรุงรักษา | ความสามารถของระบบที่จะรับการเปลี่ยนแปลงได้อย่างง่ายดาย | |
การนำกลับมาใช้ใหม่ | กำหนดความสามารถสำหรับส่วนประกอบและระบบย่อยที่เหมาะสมสำหรับการใช้งานในแอปพลิเคชันอื่น | |
คุณสมบัติรันไทม์ | ความสามารถในการทำงานร่วมกัน | ความสามารถของระบบหรือระบบที่แตกต่างกันในการดำเนินการให้ประสบความสำเร็จโดยการสื่อสารและแลกเปลี่ยนข้อมูลกับระบบภายนอกอื่น ๆ ที่เขียนและดำเนินการโดยบุคคลภายนอก |
ความสามารถในการจัดการ | กำหนดว่าผู้ดูแลระบบสามารถจัดการแอปพลิเคชันได้ง่ายเพียงใด | |
ความน่าเชื่อถือ | ความสามารถของระบบในการทำงานตลอดเวลา | |
ความสามารถในการปรับขนาด | ความสามารถของระบบในการจัดการกับภาระที่เพิ่มขึ้นโดยไม่ส่งผลกระทบต่อประสิทธิภาพของระบบหรือความสามารถในการขยายขนาดได้ทันที | |
ความปลอดภัย | ความสามารถของระบบในการป้องกันการกระทำที่เป็นอันตรายหรือโดยบังเอิญนอกเหนือจากการใช้งานที่ออกแบบไว้ | |
ประสิทธิภาพ | การบ่งชี้การตอบสนองของระบบในการดำเนินการใด ๆ ภายในช่วงเวลาที่กำหนด | |
ความพร้อมใช้งาน | กำหนดสัดส่วนของเวลาที่ระบบทำงานและทำงาน สามารถวัดเป็นเปอร์เซ็นต์ของเวลาหยุดทำงานของระบบทั้งหมดในช่วงเวลาที่กำหนดไว้ล่วงหน้า | |
คุณภาพของระบบ | รองรับ | ความสามารถของระบบในการให้ข้อมูลที่เป็นประโยชน์สำหรับการระบุและแก้ไขปัญหาเมื่อทำงานไม่ถูกต้อง |
ทดสอบได้ | วัดความง่ายในการสร้างเกณฑ์การทดสอบสำหรับระบบและส่วนประกอบ | |
คุณสมบัติของผู้ใช้ | การใช้งาน | กำหนดว่าแอปพลิเคชันตรงตามความต้องการของผู้ใช้และผู้บริโภคเพียงใดโดยใช้งานง่าย |
คุณภาพสถาปัตยกรรม | ความถูกต้อง | ความรับผิดชอบในการปฏิบัติตามข้อกำหนดทั้งหมดของระบบ |
คุณภาพที่ไม่ใช่รันไทม์ | การพกพา | ความสามารถของระบบในการทำงานภายใต้สภาพแวดล้อมการประมวลผลที่แตกต่างกัน |
ความสมบูรณ์ | ความสามารถในการทำให้ส่วนประกอบที่พัฒนาแยกกันของระบบทำงานร่วมกันได้อย่างถูกต้อง | |
การปรับเปลี่ยน | ง่ายต่อการที่ระบบซอฟต์แวร์แต่ละระบบสามารถรองรับการเปลี่ยนแปลงซอฟต์แวร์ได้ | |
คุณลักษณะคุณภาพของธุรกิจ | ค่าใช้จ่ายและกำหนดการ | ต้นทุนของระบบเมื่อเทียบกับเวลาออกสู่ตลาดอายุการใช้งานโครงการที่คาดหวังและการใช้ประโยชน์จากมรดก |
ความสามารถทางการตลาด | การใช้ระบบที่เกี่ยวข้องกับการแข่งขันในตลาด |