คู่มือฉบับย่อ
สถาปัตยกรรมของระบบอธิบายถึงองค์ประกอบหลักความสัมพันธ์ (โครงสร้าง) และวิธีที่พวกเขาโต้ตอบซึ่งกันและกัน สถาปัตยกรรมซอฟต์แวร์และการออกแบบประกอบด้วยปัจจัยที่มีส่วนช่วยหลายประการเช่นกลยุทธ์ทางธุรกิจคุณลักษณะด้านคุณภาพพลวัตของมนุษย์การออกแบบและสภาพแวดล้อมไอที
เราสามารถแยกสถาปัตยกรรมซอฟต์แวร์และการออกแบบออกเป็นสองขั้นตอน: สถาปัตยกรรมซอฟต์แวร์และการออกแบบซอฟต์แวร์ ในArchitectureการตัดสินใจที่ไม่เป็นไปตามหน้าที่จะถูกโยนทิ้งและแยกตามข้อกำหนดในการทำงาน ในการออกแบบข้อกำหนดด้านการทำงานจะสำเร็จลุล่วง
สถาปัตยกรรมซอฟต์แวร์
สถาปัตยกรรมทำหน้าที่เป็น blueprint for a system. มันเป็นสิ่งที่เป็นนามธรรมในการจัดการความซับซ้อนของระบบและสร้างกลไกการสื่อสารและการประสานงานระหว่างส่วนประกอบต่างๆ
เป็นการกำหนด structured solution เพื่อให้เป็นไปตามข้อกำหนดทางเทคนิคและการปฏิบัติงานทั้งหมดในขณะที่เพิ่มประสิทธิภาพคุณสมบัติคุณภาพทั่วไปเช่นประสิทธิภาพและความปลอดภัย
นอกจากนี้ยังเกี่ยวข้องกับชุดของการตัดสินใจที่สำคัญเกี่ยวกับองค์กรที่เกี่ยวข้องกับการพัฒนาซอฟต์แวร์และการตัดสินใจแต่ละอย่างอาจส่งผลกระทบอย่างมากต่อคุณภาพการบำรุงรักษาประสิทธิภาพและความสำเร็จโดยรวมของผลิตภัณฑ์ขั้นสุดท้าย การตัดสินใจเหล่านี้ประกอบด้วย -
การเลือกองค์ประกอบโครงสร้างและส่วนต่อประสานที่ระบบประกอบด้วย
พฤติกรรมตามที่ระบุไว้ในความร่วมมือระหว่างองค์ประกอบเหล่านั้น
การจัดองค์ประกอบโครงสร้างและพฤติกรรมเหล่านี้ให้เป็นระบบย่อยขนาดใหญ่
การตัดสินใจทางสถาปัตยกรรมสอดคล้องกับวัตถุประสงค์ทางธุรกิจ
รูปแบบสถาปัตยกรรมเป็นแนวทางในองค์กร
การออกแบบซอฟต์แวร์
การออกแบบซอฟต์แวร์ให้ไฟล์ design planที่อธิบายองค์ประกอบของระบบความเหมาะสมและทำงานร่วมกันเพื่อตอบสนองความต้องการของระบบ วัตถุประสงค์ของการวางแผนการออกแบบมีดังนี้ -
เพื่อเจรจาความต้องการของระบบและกำหนดความคาดหวังกับลูกค้าการตลาดและบุคลากรด้านการจัดการ
ทำหน้าที่เป็นพิมพ์เขียวในระหว่างกระบวนการพัฒนา
เป็นแนวทางในการดำเนินงานรวมถึงการออกแบบโดยละเอียดการเข้ารหัสการรวมและการทดสอบ
มาก่อนการออกแบบรายละเอียดการเข้ารหัสการรวมและการทดสอบและหลังจากการวิเคราะห์โดเมนการวิเคราะห์ข้อกำหนดและการวิเคราะห์ความเสี่ยง
เป้าหมายของสถาปัตยกรรม
เป้าหมายหลักของสถาปัตยกรรมคือการระบุข้อกำหนดที่มีผลต่อโครงสร้างของแอปพลิเคชัน สถาปัตยกรรมที่วางไว้อย่างดีช่วยลดความเสี่ยงทางธุรกิจที่เกี่ยวข้องกับการสร้างโซลูชันทางเทคนิคและสร้างสะพานเชื่อมระหว่างข้อกำหนดทางธุรกิจและทางเทคนิค
เป้าหมายอื่น ๆ มีดังนี้ -
เปิดเผยโครงสร้างของระบบ แต่ซ่อนรายละเอียดการใช้งาน
ตระหนักถึงกรณีการใช้งานและสถานการณ์ทั้งหมด
พยายามตอบสนองความต้องการของผู้มีส่วนได้ส่วนเสียต่างๆ
จัดการทั้งความต้องการด้านการใช้งานและคุณภาพ
ลดเป้าหมายในการเป็นเจ้าของและปรับปรุงตำแหน่งทางการตลาดขององค์กร
ปรับปรุงคุณภาพและฟังก์ชันการทำงานที่ระบบนำเสนอ
ปรับปรุงความเชื่อมั่นภายนอกในองค์กรหรือระบบ
ข้อ จำกัด
สถาปัตยกรรมซอฟต์แวร์ยังคงเป็นระเบียบวินัยที่เกิดขึ้นใหม่ในวิศวกรรมซอฟต์แวร์ มีข้อ จำกัด ดังต่อไปนี้ -
ขาดเครื่องมือและวิธีการที่เป็นมาตรฐานในการแสดงสถาปัตยกรรม
ขาดวิธีการวิเคราะห์เพื่อทำนายว่าสถาปัตยกรรมจะทำให้เกิดการนำไปใช้งานที่ตรงตามข้อกำหนดหรือไม่
ขาดความตระหนักถึงความสำคัญของการออกแบบสถาปัตยกรรมต่อการพัฒนาซอฟต์แวร์
ขาดความเข้าใจในบทบาทของสถาปนิกซอฟต์แวร์และการสื่อสารที่ไม่ดีระหว่างผู้มีส่วนได้ส่วนเสีย
ขาดความเข้าใจในกระบวนการออกแบบประสบการณ์การออกแบบและการประเมินการออกแบบ
บทบาทของสถาปนิกซอฟต์แวร์
Software Architect มีโซลูชันที่ทีมเทคนิคสามารถสร้างและออกแบบสำหรับแอปพลิเคชันทั้งหมด สถาปนิกซอฟต์แวร์ควรมีความเชี่ยวชาญในด้านต่อไปนี้ -
ความเชี่ยวชาญด้านการออกแบบ
ผู้เชี่ยวชาญด้านการออกแบบซอฟต์แวร์รวมถึงวิธีการและแนวทางที่หลากหลายเช่นการออกแบบเชิงวัตถุการออกแบบที่ขับเคลื่อนด้วยเหตุการณ์เป็นต้น
นำทีมพัฒนาและประสานงานความพยายามในการพัฒนาเพื่อความสมบูรณ์ของการออกแบบ
ควรจะตรวจสอบข้อเสนอการออกแบบและแลกเปลี่ยนกันเองได้
ความเชี่ยวชาญด้านโดเมน
ผู้เชี่ยวชาญในระบบที่กำลังพัฒนาและวางแผนสำหรับวิวัฒนาการซอฟต์แวร์
ช่วยในกระบวนการตรวจสอบข้อกำหนดเพื่อให้มั่นใจว่ามีความครบถ้วนและสม่ำเสมอ
ประสานความหมายของแบบจำลองโดเมนสำหรับระบบที่กำลังพัฒนา
ความเชี่ยวชาญด้านเทคโนโลยี
ผู้เชี่ยวชาญเกี่ยวกับเทคโนโลยีที่มีอยู่ซึ่งช่วยในการนำระบบไปใช้งาน
ประสานงานการเลือกภาษาการเขียนโปรแกรมเฟรมเวิร์กแพลตฟอร์มฐานข้อมูล ฯลฯ
ความเชี่ยวชาญด้านระเบียบวิธี
ผู้เชี่ยวชาญเกี่ยวกับวิธีการพัฒนาซอฟต์แวร์ที่อาจนำมาใช้ในระหว่าง SDLC (Software Development Life Cycle)
เลือกแนวทางที่เหมาะสมสำหรับการพัฒนาที่ช่วยทั้งทีม
บทบาทที่ซ่อนอยู่ของสถาปนิกซอฟต์แวร์
อำนวยความสะดวกในการทำงานด้านเทคนิคระหว่างสมาชิกในทีมและเสริมสร้างความสัมพันธ์ที่ไว้วางใจในทีม
ผู้เชี่ยวชาญด้านข้อมูลที่แบ่งปันความรู้และมีประสบการณ์มากมาย
ปกป้องสมาชิกในทีมจากแรงภายนอกที่จะทำให้พวกเขาเสียสมาธิและสร้างมูลค่าให้กับโครงการน้อยลง
สิ่งที่ส่งมอบของสถาปนิก
ชุดเป้าหมายการทำงานที่ชัดเจนสมบูรณ์สอดคล้องและทำได้
คำอธิบายการทำงานของระบบที่มีการสลายตัวอย่างน้อยสองชั้น
แนวคิดสำหรับระบบ
การออกแบบในรูปแบบของระบบที่มีการสลายตัวอย่างน้อยสองชั้น
ความคิดเกี่ยวกับเวลาคุณลักษณะของตัวดำเนินการและการนำไปใช้และแผนการดำเนินงาน
เอกสารหรือกระบวนการที่ทำให้มั่นใจได้ว่ามีการย่อยสลายตามฟังก์ชันและรูปแบบของอินเตอร์เฟสจะถูกควบคุม
คุณสมบัติคุณภาพ
คุณภาพเป็นตัวชี้วัดความเป็นเลิศหรือสถานะของการปราศจากข้อบกพร่องหรือข้อบกพร่อง แอตทริบิวต์คุณภาพคือคุณสมบัติของระบบที่แยกจากฟังก์ชันการทำงานของระบบ
การใช้คุณลักษณะคุณภาพช่วยให้สามารถแยกความแตกต่างของระบบที่ดีจากระบบที่ไม่ดีได้ง่ายขึ้น แอตทริบิวต์เป็นปัจจัยโดยรวมที่มีผลต่อพฤติกรรมรันไทม์การออกแบบระบบและประสบการณ์ของผู้ใช้
พวกเขาสามารถจัดเป็น -
คุณสมบัติคุณภาพคงที่
สะท้อนโครงสร้างของระบบและองค์กรที่เกี่ยวข้องโดยตรงกับสถาปัตยกรรมการออกแบบและซอร์สโค้ด ผู้ใช้ปลายทางมองไม่เห็น แต่ส่งผลกระทบต่อต้นทุนการพัฒนาและการบำรุงรักษาเช่นการแยกส่วนการทดสอบความสามารถในการบำรุงรักษาเป็นต้น
คุณสมบัติคุณภาพแบบไดนามิก
สะท้อนพฤติกรรมของระบบระหว่างการดำเนินการ ซึ่งเกี่ยวข้องโดยตรงกับสถาปัตยกรรมของระบบการออกแบบซอร์สโค้ดการกำหนดค่าพารามิเตอร์การปรับใช้สภาพแวดล้อมและแพลตฟอร์ม
ผู้ใช้ปลายทางสามารถมองเห็นได้และมีอยู่ที่รันไทม์เช่นปริมาณงานความทนทานความสามารถในการปรับขนาด ฯลฯ
สถานการณ์คุณภาพ
สถานการณ์จำลองคุณภาพระบุวิธีป้องกันข้อบกพร่องไม่ให้กลายเป็นความล้มเหลว สามารถแบ่งออกเป็นหกส่วนตามข้อกำหนดคุณลักษณะ -
Source - หน่วยงานภายในหรือภายนอกเช่นคนฮาร์ดแวร์ซอฟต์แวร์หรือโครงสร้างพื้นฐานทางกายภาพที่สร้างสิ่งกระตุ้น
Stimulus - เงื่อนไขที่ต้องพิจารณาเมื่อมาถึงระบบ
Environment - สิ่งกระตุ้นเกิดขึ้นภายในเงื่อนไขบางประการ
Artifact - ทั้งระบบหรือบางส่วนเช่นโปรเซสเซอร์ช่องทางการสื่อสารหน่วยเก็บข้อมูลถาวรกระบวนการ ฯลฯ
Response - กิจกรรมที่ดำเนินการหลังจากการมาถึงของสิ่งกระตุ้นเช่นการตรวจจับความผิดพลาดการกู้คืนจากความผิดปิดการใช้งานแหล่งที่มาของเหตุการณ์เป็นต้น
Response measure - ควรวัดการตอบสนองที่เกิดขึ้นเพื่อให้สามารถทดสอบข้อกำหนดได้
คุณสมบัติคุณภาพทั่วไป
ตารางต่อไปนี้แสดงคุณสมบัติคุณภาพทั่วไปที่สถาปัตยกรรมซอฟต์แวร์ต้องมี -
ประเภท | คุณสมบัติคุณภาพ | คำอธิบาย |
---|---|---|
คุณภาพการออกแบบ | ความสมบูรณ์ตามแนวคิด | กำหนดความสอดคล้องและความสอดคล้องกันของการออกแบบโดยรวม ซึ่งรวมถึงวิธีการออกแบบส่วนประกอบหรือโมดูล |
การบำรุงรักษา | ความสามารถของระบบที่จะรับการเปลี่ยนแปลงได้อย่างง่ายดาย | |
การนำกลับมาใช้ใหม่ | กำหนดความสามารถสำหรับส่วนประกอบและระบบย่อยที่เหมาะสมสำหรับการใช้งานในแอปพลิเคชันอื่น | |
คุณสมบัติรันไทม์ | ความสามารถในการทำงานร่วมกัน | ความสามารถของระบบหรือระบบที่แตกต่างกันในการดำเนินการให้ประสบความสำเร็จโดยการสื่อสารและแลกเปลี่ยนข้อมูลกับระบบภายนอกอื่น ๆ ที่เขียนและดำเนินการโดยบุคคลภายนอก |
ความสามารถในการจัดการ | กำหนดว่าผู้ดูแลระบบสามารถจัดการแอปพลิเคชันได้ง่ายเพียงใด | |
ความน่าเชื่อถือ | ความสามารถของระบบในการทำงานตลอดเวลา | |
ความสามารถในการปรับขนาด | ความสามารถของระบบในการจัดการกับภาระที่เพิ่มขึ้นโดยไม่ส่งผลกระทบต่อประสิทธิภาพของระบบหรือความสามารถในการขยายขนาดได้ทันที | |
ความปลอดภัย | ความสามารถของระบบในการป้องกันการกระทำที่เป็นอันตรายหรือโดยบังเอิญนอกเหนือจากการใช้งานที่ออกแบบไว้ | |
ประสิทธิภาพ | การระบุการตอบสนองของระบบในการดำเนินการใด ๆ ภายในช่วงเวลาที่กำหนด | |
ความพร้อมใช้งาน | กำหนดสัดส่วนของเวลาที่ระบบทำงานและทำงาน สามารถวัดเป็นเปอร์เซ็นต์ของเวลาหยุดทำงานของระบบทั้งหมดในช่วงเวลาที่กำหนดไว้ล่วงหน้า | |
คุณภาพของระบบ | รองรับ | ความสามารถของระบบในการให้ข้อมูลที่เป็นประโยชน์สำหรับการระบุและแก้ไขปัญหาเมื่อทำงานผิดพลาด |
ทดสอบได้ | วัดความง่ายในการสร้างเกณฑ์การทดสอบสำหรับระบบและส่วนประกอบ | |
คุณสมบัติของผู้ใช้ | การใช้งาน | กำหนดว่าแอปพลิเคชันตรงตามความต้องการของผู้ใช้และผู้บริโภคได้ดีเพียงใดโดยใช้งานง่าย |
คุณภาพสถาปัตยกรรม | ความถูกต้อง | ความรับผิดชอบในการตอบสนองความต้องการทั้งหมดของระบบ |
คุณภาพที่ไม่ใช่รันไทม์ | การพกพา | ความสามารถของระบบในการทำงานภายใต้สภาพแวดล้อมการประมวลผลที่แตกต่างกัน |
ความสมบูรณ์ | ความสามารถในการทำให้ส่วนประกอบที่พัฒนาแยกกันของระบบทำงานร่วมกันได้อย่างถูกต้อง | |
การปรับเปลี่ยน | ง่ายต่อการที่ระบบซอฟต์แวร์แต่ละระบบสามารถรองรับการเปลี่ยนแปลงซอฟต์แวร์ได้ | |
คุณลักษณะคุณภาพของธุรกิจ | ค่าใช้จ่ายและกำหนดการ | ต้นทุนของระบบเมื่อเทียบกับเวลาออกสู่ตลาดอายุการใช้งานโครงการที่คาดหวังและการใช้ประโยชน์จากมรดก |
ความสามารถทางการตลาด | การใช้ระบบที่เกี่ยวข้องกับการแข่งขันในตลาด |
สถาปัตยกรรมซอฟต์แวร์ถูกอธิบายว่าเป็นองค์กรของระบบโดยที่ระบบแสดงถึงชุดของส่วนประกอบที่ทำให้ฟังก์ชันที่กำหนดไว้สำเร็จ
รูปแบบสถาปัตยกรรม
architectural styleหรือเรียกอีกอย่างว่า architectural patternคือชุดของหลักการที่กำหนดรูปแบบแอปพลิเคชัน เป็นการกำหนดกรอบนามธรรมสำหรับครอบครัวของระบบในแง่ของรูปแบบของโครงสร้างองค์กร
รูปแบบสถาปัตยกรรมมีหน้าที่ -
ให้คำศัพท์เกี่ยวกับส่วนประกอบและตัวเชื่อมต่อพร้อมกฎว่าจะรวมกันได้อย่างไร
ปรับปรุงการแบ่งพาร์ติชันและอนุญาตให้นำการออกแบบกลับมาใช้ใหม่โดยให้แนวทางแก้ไขปัญหาที่เกิดขึ้นบ่อยครั้ง
อธิบายวิธีการกำหนดค่าชุดส่วนประกอบ (โมดูลที่มีอินเทอร์เฟซที่กำหนดไว้อย่างดีใช้ซ้ำได้และเปลี่ยนได้) และตัวเชื่อมต่อ (การเชื่อมโยงการสื่อสารระหว่างโมดูล)
ซอฟต์แวร์ที่สร้างขึ้นสำหรับระบบที่ใช้คอมพิวเตอร์มีรูปแบบสถาปัตยกรรมหลายรูปแบบ แต่ละสไตล์อธิบายถึงหมวดหมู่ของระบบที่ครอบคลุม -
ชุดของประเภทส่วนประกอบที่ทำหน้าที่ตามที่ระบบต้องการ
ชุดตัวเชื่อมต่อ (การเรียกรูทีนย่อยการเรียกโพรซีเดอร์ระยะไกลสตรีมข้อมูลและซ็อกเก็ต) ที่เปิดใช้งานการสื่อสารการประสานงานและความร่วมมือระหว่างส่วนประกอบต่างๆ
ข้อ จำกัด เชิงความหมายซึ่งกำหนดวิธีการรวมส่วนประกอบเพื่อสร้างระบบ
เค้าโครงทอพอโลยีของส่วนประกอบที่ระบุความสัมพันธ์ระหว่างรันไทม์
การออกแบบสถาปัตยกรรมทั่วไป
ตารางต่อไปนี้แสดงรูปแบบสถาปัตยกรรมที่สามารถจัดระเบียบตามพื้นที่โฟกัสหลัก -
ประเภท | การออกแบบสถาปัตยกรรม | คำอธิบาย |
---|---|---|
การสื่อสาร | บัสข้อความ | กำหนดให้ใช้ระบบซอฟต์แวร์ที่สามารถรับและส่งข้อความโดยใช้ช่องทางการสื่อสารอย่างน้อยหนึ่งช่องทาง |
สถาปัตยกรรมเชิงบริการ (SOA) | กำหนดแอปพลิเคชันที่เปิดเผยและใช้ฟังก์ชันการทำงานโดยใช้สัญญาและข้อความ | |
การปรับใช้ | ไคลเอนต์ / เซิร์ฟเวอร์ | แยกระบบออกเป็นสองแอปพลิเคชันโดยที่ไคลเอนต์ส่งคำขอไปยังเซิร์ฟเวอร์ |
3 ชั้นหรือ N-tier | แยกฟังก์ชันการทำงานออกเป็นส่วนต่างๆโดยแต่ละส่วนเป็นระดับที่อยู่บนคอมพิวเตอร์ที่แยกจากกัน | |
โดเมน | การออกแบบที่ขับเคลื่อนด้วยโดเมน | มุ่งเน้นไปที่การสร้างแบบจำลองโดเมนธุรกิจและการกำหนดวัตถุทางธุรกิจตามเอนทิตีภายในโดเมนธุรกิจ |
โครงสร้าง | ตามส่วนประกอบ | แบ่งการออกแบบแอปพลิเคชันออกเป็นส่วนประกอบเชิงฟังก์ชันหรือเชิงตรรกะที่ใช้ซ้ำได้ซึ่งแสดงอินเตอร์เฟสการสื่อสารที่กำหนดไว้อย่างดี |
ชั้น | แบ่งข้อกังวลของแอปพลิเคชันออกเป็นกลุ่มที่ซ้อนกัน (เลเยอร์) | |
เชิงวัตถุ | ขึ้นอยู่กับการแบ่งหน้าที่ความรับผิดชอบของแอปพลิเคชันหรือระบบออกเป็นอ็อบเจ็กต์แต่ละรายการมีข้อมูลและพฤติกรรมที่เกี่ยวข้องกับอ็อบเจ็กต์ |
ประเภทของสถาปัตยกรรม
มีสถาปัตยกรรมสี่ประเภทจากมุมมองขององค์กรและโดยรวมแล้วสถาปัตยกรรมเหล่านี้เรียกว่า enterprise architecture.
Business architecture - กำหนดกลยุทธ์ของธุรกิจการกำกับดูแลองค์กรและกระบวนการทางธุรกิจที่สำคัญภายในองค์กรและมุ่งเน้นไปที่การวิเคราะห์และออกแบบกระบวนการทางธุรกิจ
Application (software) architecture - ทำหน้าที่เป็นพิมพ์เขียวสำหรับระบบแอปพลิเคชันแต่ละระบบการโต้ตอบและความสัมพันธ์กับกระบวนการทางธุรกิจขององค์กร
Information architecture - กำหนดสินทรัพย์ข้อมูลเชิงตรรกะและทางกายภาพและทรัพยากรการจัดการข้อมูล
Information technology (IT) architecture - กำหนดโครงสร้างฮาร์ดแวร์และซอฟต์แวร์ที่ประกอบเป็นระบบข้อมูลโดยรวมขององค์กร
กระบวนการออกแบบสถาปัตยกรรม
กระบวนการออกแบบสถาปัตยกรรมมุ่งเน้นไปที่การสลายตัวของระบบออกเป็นส่วนประกอบที่แตกต่างกันและปฏิสัมพันธ์ของระบบเพื่อตอบสนองความต้องการด้านการทำงานและไม่ใช้งานได้ ปัจจัยสำคัญในการออกแบบสถาปัตยกรรมซอฟต์แวร์ ได้แก่ -
ข้อกำหนดที่ผลิตโดยงานวิเคราะห์
สถาปัตยกรรมฮาร์ดแวร์ (สถาปนิกซอฟต์แวร์จะให้ข้อกำหนดแก่สถาปนิกระบบซึ่งเป็นผู้กำหนดค่าสถาปัตยกรรมฮาร์ดแวร์)
ผลลัพธ์หรือผลลัพธ์ของกระบวนการออกแบบสถาปัตยกรรมคือ architectural description. ขั้นตอนการออกแบบสถาปัตยกรรมพื้นฐานประกอบด้วยขั้นตอนต่อไปนี้ -
ทำความเข้าใจกับปัญหา
นี่เป็นขั้นตอนที่สำคัญที่สุดเนื่องจากมีผลต่อคุณภาพของการออกแบบที่ตามมา
หากไม่มีความเข้าใจที่ชัดเจนเกี่ยวกับปัญหาก็จะไม่สามารถสร้างวิธีแก้ปัญหาที่มีประสิทธิภาพได้
โครงการซอฟต์แวร์และผลิตภัณฑ์จำนวนมากถือว่าล้มเหลวเนื่องจากไม่ได้แก้ปัญหาทางธุรกิจที่ถูกต้องหรือมีผลตอบแทนจากการลงทุน (ROI) ที่เป็นที่รู้จัก
ระบุองค์ประกอบการออกแบบและความสัมพันธ์
ในขั้นตอนนี้สร้างพื้นฐานสำหรับการกำหนดขอบเขตและบริบทของระบบ
การสลายตัวของระบบเป็นส่วนประกอบหลักตามข้อกำหนดการทำงาน การสลายตัวสามารถสร้างแบบจำลองได้โดยใช้เมทริกซ์โครงสร้างการออกแบบ (DSM) ซึ่งแสดงการพึ่งพาระหว่างองค์ประกอบการออกแบบโดยไม่ต้องระบุรายละเอียดขององค์ประกอบ
ในขั้นตอนนี้การตรวจสอบความถูกต้องของสถาปัตยกรรมครั้งแรกทำได้โดยการอธิบายอินสแตนซ์ระบบจำนวนหนึ่งและขั้นตอนนี้เรียกว่าการออกแบบสถาปัตยกรรมตามฟังก์ชันการทำงาน
ประเมินการออกแบบสถาปัตยกรรม
แต่ละแอตทริบิวต์คุณภาพจะได้รับการประมาณดังนั้นเพื่อรวบรวมมาตรการเชิงคุณภาพหรือข้อมูลเชิงปริมาณการออกแบบจะได้รับการประเมิน
เกี่ยวข้องกับการประเมินสถาปัตยกรรมเพื่อให้สอดคล้องกับข้อกำหนดคุณลักษณะคุณภาพทางสถาปัตยกรรม
หากแอตทริบิวต์คุณภาพโดยประมาณทั้งหมดเป็นไปตามมาตรฐานที่กำหนดกระบวนการออกแบบสถาปัตยกรรมจะเสร็จสิ้น
มิฉะนั้นขั้นตอนที่สามของการออกแบบสถาปัตยกรรมซอฟต์แวร์จะเข้าสู่: การเปลี่ยนแปลงสถาปัตยกรรม หากแอตทริบิวต์คุณภาพที่สังเกตไม่เป็นไปตามข้อกำหนดจะต้องสร้างการออกแบบใหม่
พลิกโฉมการออกแบบสถาปัตยกรรม
ขั้นตอนนี้ดำเนินการหลังจากการประเมินการออกแบบสถาปัตยกรรม การออกแบบสถาปัตยกรรมจะต้องเปลี่ยนแปลงจนกว่าจะเป็นไปตามข้อกำหนดคุณลักษณะด้านคุณภาพอย่างสมบูรณ์
เกี่ยวข้องกับการเลือกโซลูชันการออกแบบเพื่อปรับปรุงคุณลักษณะด้านคุณภาพในขณะที่รักษาการทำงานของโดเมน
การออกแบบเปลี่ยนแปลงโดยใช้ตัวดำเนินการออกแบบสไตล์หรือรูปแบบ สำหรับการเปลี่ยนแปลงให้ใช้การออกแบบที่มีอยู่และใช้ตัวดำเนินการออกแบบเช่นการย่อยสลายการจำลองแบบการบีบอัดสิ่งที่เป็นนามธรรมและการแบ่งปันทรัพยากร
การออกแบบจะได้รับการประเมินอีกครั้งและกระบวนการเดียวกันจะทำซ้ำหลาย ๆ ครั้งหากจำเป็นและแม้กระทั่งดำเนินการซ้ำ
การเปลี่ยนแปลง (เช่นโซลูชันการเพิ่มประสิทธิภาพคุณลักษณะคุณภาพ) โดยทั่วไปจะปรับปรุงคุณลักษณะด้านคุณภาพอย่างใดอย่างหนึ่งหรือบางอย่างในขณะที่ส่งผลกระทบต่อผู้อื่นในทางลบ
หลักการสถาปัตยกรรมที่สำคัญ
ต่อไปนี้เป็นหลักการสำคัญที่ต้องพิจารณาในขณะออกแบบสถาปัตยกรรม -
สร้างเพื่อเปลี่ยนแปลงแทนที่จะสร้างเป็นสุดท้าย
พิจารณาว่าแอปพลิเคชันอาจต้องเปลี่ยนแปลงอย่างไรเมื่อเวลาผ่านไปเพื่อตอบสนองความต้องการและความท้าทายใหม่ ๆ และสร้างความยืดหยุ่นเพื่อรองรับสิ่งนี้
ลดความเสี่ยงและโมเดลในการวิเคราะห์
ใช้เครื่องมือออกแบบการแสดงภาพระบบการสร้างแบบจำลองเช่น UML เพื่อจับความต้องการและการตัดสินใจในการออกแบบ วิเคราะห์ผลกระทบได้ด้วย อย่าทำให้เป็นทางการของแบบจำลองจนถึงขนาดที่ขัดขวางความสามารถในการทำซ้ำและปรับเปลี่ยนการออกแบบได้ง่าย
ใช้โมเดลและการแสดงภาพเป็นเครื่องมือการสื่อสารและการทำงานร่วมกัน
การสื่อสารที่มีประสิทธิภาพของการออกแบบการตัดสินใจและการเปลี่ยนแปลงอย่างต่อเนื่องในการออกแบบมีความสำคัญต่อสถาปัตยกรรมที่ดี ใช้โมเดลมุมมองและการแสดงภาพอื่น ๆ ของสถาปัตยกรรมเพื่อสื่อสารและแบ่งปันการออกแบบอย่างมีประสิทธิภาพกับผู้มีส่วนได้ส่วนเสียทั้งหมด สิ่งนี้ทำให้สามารถสื่อสารถึงการเปลี่ยนแปลงการออกแบบได้อย่างรวดเร็ว
ระบุและทำความเข้าใจการตัดสินใจทางวิศวกรรมที่สำคัญและประเด็นที่มักเกิดข้อผิดพลาดบ่อยที่สุด ลงทุนในการตัดสินใจที่สำคัญในครั้งแรกเพื่อให้การออกแบบมีความยืดหยุ่นมากขึ้นและมีโอกาสน้อยที่จะเสียหายจากการเปลี่ยนแปลง
ใช้วิธีการเพิ่มหน่วยและการทำซ้ำ
เริ่มต้นด้วยสถาปัตยกรรมพื้นฐานจากนั้นพัฒนาสถาปัตยกรรมของผู้สมัครโดยการทดสอบซ้ำเพื่อปรับปรุงสถาปัตยกรรม เพิ่มรายละเอียดในการออกแบบซ้ำ ๆ ผ่านหลาย ๆ รอบเพื่อให้ได้ภาพขนาดใหญ่หรือที่เหมาะสมจากนั้นจึงมุ่งเน้นไปที่รายละเอียด
หลักการออกแบบที่สำคัญ
ต่อไปนี้เป็นหลักการออกแบบที่จะต้องพิจารณาเพื่อลดต้นทุนความต้องการในการบำรุงรักษาและเพิ่มความสามารถในการขยายตัวสูงสุดการใช้งานสถาปัตยกรรม -
การแยกความกังวล
แบ่งส่วนประกอบของระบบออกเป็นคุณสมบัติเฉพาะเพื่อไม่ให้เกิดการทับซ้อนระหว่างการทำงานของส่วนประกอบ สิ่งนี้จะให้การเชื่อมต่อที่สูงและการมีเพศสัมพันธ์ต่ำ วิธีนี้หลีกเลี่ยงการพึ่งพาซึ่งกันและกันระหว่างส่วนประกอบของระบบซึ่งช่วยในการดูแลรักษาระบบได้ง่าย
หลักการความรับผิดชอบเดียว
แต่ละโมดูลของระบบควรมีความรับผิดชอบเฉพาะอย่างหนึ่งซึ่งช่วยให้ผู้ใช้เข้าใจระบบได้อย่างชัดเจน นอกจากนี้ยังควรช่วยในการรวมส่วนประกอบกับส่วนประกอบอื่น ๆ
หลักการของความรู้น้อยที่สุด
ส่วนประกอบหรือวัตถุใด ๆ ไม่ควรมีความรู้เกี่ยวกับรายละเอียดภายในของส่วนประกอบอื่น ๆ แนวทางนี้หลีกเลี่ยงการพึ่งพาซึ่งกันและกันและช่วยในการบำรุงรักษา
ลดการออกแบบขนาดใหญ่ล่วงหน้า
ลดการออกแบบขนาดใหญ่ล่วงหน้าหากข้อกำหนดของแอปพลิเคชันไม่ชัดเจน หากมีความเป็นไปได้ในการปรับเปลี่ยนข้อกำหนดให้หลีกเลี่ยงการออกแบบขนาดใหญ่สำหรับทั้งระบบ
อย่าทำซ้ำฟังก์ชันการทำงาน
ห้ามใช้ฟังก์ชันการทำงานซ้ำโดยระบุว่าไม่ควรทำซ้ำฟังก์ชันการทำงานของส่วนประกอบดังนั้นจึงควรใช้โค้ดส่วนหนึ่งในส่วนประกอบเดียวเท่านั้น การทำสำเนาฟังก์ชันภายในแอปพลิเคชันอาจทำให้ยากต่อการนำการเปลี่ยนแปลงไปใช้ลดความชัดเจนและทำให้เกิดความไม่สอดคล้องกัน
ชอบองค์ประกอบมากกว่าการสืบทอดในขณะที่ใช้ฟังก์ชันการทำงานซ้ำ
การสืบทอดทำให้เกิดการพึ่งพาระหว่างชั้นเรียนของเด็กและผู้ปกครองและด้วยเหตุนี้จึงบล็อกการใช้คลาสย่อยฟรี ในทางตรงกันข้ามองค์ประกอบนี้ให้อิสระในระดับมากและลดลำดับชั้นการสืบทอด
ระบุส่วนประกอบและจัดกลุ่มใน Logical Layers
ส่วนประกอบของข้อมูลประจำตัวและส่วนที่เป็นปัญหาที่จำเป็นในระบบเพื่อให้เป็นไปตามข้อกำหนด จากนั้นจัดกลุ่มส่วนประกอบที่เกี่ยวข้องเหล่านี้ในชั้นตรรกะซึ่งจะช่วยให้ผู้ใช้เข้าใจโครงสร้างของระบบในระดับสูง หลีกเลี่ยงการผสมส่วนประกอบของข้อกังวลประเภทต่างๆในชั้นเดียวกัน
กำหนดโปรโตคอลการสื่อสารระหว่างเลเยอร์
ทำความเข้าใจว่าส่วนประกอบต่างๆจะสื่อสารกันอย่างไรซึ่งต้องใช้ความรู้ที่สมบูรณ์เกี่ยวกับสถานการณ์การปรับใช้และสภาพแวดล้อมการผลิต
กำหนดรูปแบบข้อมูลสำหรับเลเยอร์
ส่วนประกอบต่างๆจะโต้ตอบกันผ่านรูปแบบข้อมูล อย่าผสมผสานรูปแบบข้อมูลเพื่อให้แอปพลิเคชันใช้งานขยายและบำรุงรักษาได้ง่าย พยายามทำให้รูปแบบข้อมูลเหมือนกันสำหรับเลเยอร์เพื่อไม่ให้ส่วนประกอบต่างๆต้องโค้ด / ถอดรหัสข้อมูลในขณะที่สื่อสารกัน ช่วยลดค่าใช้จ่ายในการประมวลผล
ส่วนประกอบของบริการระบบควรเป็นนามธรรม
รหัสที่เกี่ยวข้องกับการรักษาความปลอดภัยการสื่อสารหรือบริการระบบเช่นการบันทึกการทำโปรไฟล์และการกำหนดค่าควรได้รับการสรุปไว้ในส่วนประกอบที่แยกต่างหาก อย่าผสมรหัสนี้กับตรรกะทางธุรกิจเนื่องจากง่ายต่อการขยายการออกแบบและบำรุงรักษา
การออกแบบข้อยกเว้นและกลไกการจัดการข้อยกเว้น
การกำหนดข้อยกเว้นล่วงหน้าช่วยให้ส่วนประกอบสามารถจัดการข้อผิดพลาดหรือสถานการณ์ที่ไม่ต้องการได้อย่างสวยงาม การจัดการข้อยกเว้นจะเหมือนกันทั้งระบบ
หลักการตั้งชื่อ
ควรกำหนดรูปแบบการตั้งชื่อไว้ล่วงหน้า มีรูปแบบที่สอดคล้องกันซึ่งช่วยให้ผู้ใช้เข้าใจระบบได้ง่าย สมาชิกในทีมสามารถตรวจสอบความถูกต้องของโค้ดที่เขียนโดยผู้อื่นได้ง่ายขึ้นและด้วยเหตุนี้จะเพิ่มความสามารถในการบำรุงรักษา
สถาปัตยกรรมซอฟต์แวร์เกี่ยวข้องกับโครงสร้างระดับสูงของนามธรรมของระบบซอฟต์แวร์โดยใช้การสลายตัวและองค์ประกอบด้วยรูปแบบสถาปัตยกรรมและคุณลักษณะด้านคุณภาพ การออกแบบสถาปัตยกรรมซอฟต์แวร์ต้องเป็นไปตามข้อกำหนดด้านฟังก์ชันการทำงานและประสิทธิภาพที่สำคัญของระบบรวมทั้งเป็นไปตามข้อกำหนดที่ไม่ใช้งานได้เช่นความน่าเชื่อถือความสามารถในการปรับขนาดการพกพาและความพร้อม
สถาปัตยกรรมซอฟต์แวร์ต้องอธิบายถึงกลุ่มของส่วนประกอบการเชื่อมต่อการโต้ตอบระหว่างส่วนประกอบเหล่านั้นและการกำหนดค่าการปรับใช้ของส่วนประกอบทั้งหมด
สถาปัตยกรรมซอฟต์แวร์สามารถกำหนดได้หลายวิธี -
UML (Unified Modeling Language) - UML เป็นหนึ่งในโซลูชันเชิงวัตถุที่ใช้ในการสร้างแบบจำลองและการออกแบบซอฟต์แวร์
Architecture View Model (4+1 view model) - แบบจำลองมุมมองสถาปัตยกรรมแสดงถึงข้อกำหนดด้านการทำงานและไม่ใช้งานได้ของแอปพลิเคชันซอฟต์แวร์
ADL (Architecture Description Language) - ADL กำหนดสถาปัตยกรรมซอฟต์แวร์อย่างเป็นทางการและตามความหมาย
UML
UML ย่อมาจาก Unified Modeling Language เป็นภาษาภาพที่ใช้ในการสร้างพิมพ์เขียวซอฟต์แวร์ UML ถูกสร้างโดย Object Management Group (OMG) ร่างข้อกำหนด UML 1.0 ได้รับการเสนอต่อ OMG ในเดือนมกราคม 1997 โดยทำหน้าที่เป็นมาตรฐานสำหรับการวิเคราะห์ความต้องการซอฟต์แวร์และเอกสารการออกแบบซึ่งเป็นพื้นฐานสำหรับการพัฒนาซอฟต์แวร์
UML สามารถอธิบายเป็นภาษาการสร้างแบบจำลองภาพวัตถุประสงค์ทั่วไปเพื่อแสดงภาพระบุสร้างและจัดทำเอกสารระบบซอฟต์แวร์ แม้ว่าโดยทั่วไปจะใช้ UML เพื่อสร้างแบบจำลองระบบซอฟต์แวร์ แต่ก็ไม่ได้ จำกัด อยู่ในขอบเขตนี้ นอกจากนี้ยังใช้เพื่อจำลองระบบซอฟต์แวร์ที่ไม่ใช่เช่นขั้นตอนกระบวนการในหน่วยการผลิต
องค์ประกอบเป็นเหมือนส่วนประกอบที่สามารถเชื่อมโยงในรูปแบบต่างๆเพื่อสร้างภาพ UML ที่สมบูรณ์ซึ่งเรียกว่าไฟล์ diagram. ดังนั้นจึงเป็นเรื่องสำคัญมากที่จะต้องเข้าใจแผนภาพต่างๆเพื่อนำความรู้ไปใช้ในระบบชีวิตจริง เรามีแผนภาพสองประเภทกว้าง ๆ และยังแบ่งออกเป็นหมวดหมู่ย่อยอีก ได้แก่Structural Diagrams และ Behavioral Diagrams.
แผนภาพโครงสร้าง
แผนภาพโครงสร้างแสดงลักษณะคงที่ของระบบ ลักษณะคงที่เหล่านี้แสดงถึงส่วนต่างๆของแผนภาพซึ่งเป็นโครงสร้างหลักดังนั้นจึงมีเสถียรภาพ
ชิ้นส่วนคงที่เหล่านี้แสดงโดยคลาสอินเทอร์เฟซวัตถุส่วนประกอบและโหนด แผนภาพโครงสร้างแบ่งย่อยได้ดังนี้ -
- แผนภาพคลาส
- แผนภาพวัตถุ
- แผนภาพส่วนประกอบ
- แผนภาพการปรับใช้
- แผนภาพแพ็คเกจ
- โครงสร้างคอมโพสิต
ตารางต่อไปนี้ให้คำอธิบายสั้น ๆ ของไดอะแกรมเหล่านี้ -
ซีเนียร์ | แผนภาพและคำอธิบาย |
---|---|
1 | Class แสดงถึงการวางแนววัตถุของระบบ แสดงให้เห็นว่าคลาสมีความสัมพันธ์กันอย่างไร |
2 | Object แสดงถึงชุดของอ็อบเจ็กต์และความสัมพันธ์ที่รันไทม์และยังแสดงถึงมุมมองแบบคงที่ของระบบ |
3 | Component อธิบายส่วนประกอบทั้งหมดความสัมพันธ์ระหว่างกันปฏิสัมพันธ์และส่วนต่อประสานของระบบ |
4 | Composite structure อธิบายโครงสร้างภายในของส่วนประกอบรวมถึงคลาสทั้งหมดส่วนต่อประสานของส่วนประกอบ ฯลฯ |
5 | Package อธิบายโครงสร้างแพ็คเกจและองค์กร ครอบคลุมคลาสในแพ็คเกจและแพ็คเกจภายในแพ็คเกจอื่น |
6 | Deployment แผนภาพการทำให้ใช้งานได้คือชุดของโหนดและความสัมพันธ์ โหนดเหล่านี้เป็นเอนทิตีฟิสิคัลที่คอมโพเนนต์ถูกปรับใช้ |
แผนภาพพฤติกรรม
แผนภาพพฤติกรรมโดยพื้นฐานแล้วจะจับภาพลักษณะไดนามิกของระบบ แง่มุมแบบไดนามิกโดยพื้นฐานแล้วเป็นส่วนที่เปลี่ยนแปลง / เคลื่อนไหวของระบบ UML มีแผนภาพพฤติกรรมประเภทต่อไปนี้ -
- ใช้แผนภาพกรณี
- แผนภาพลำดับ
- แผนภาพการสื่อสาร
- แผนภาพแผนภูมิของรัฐ
- แผนภาพกิจกรรม
- ภาพรวมการโต้ตอบ
- แผนภาพลำดับเวลา
ตารางต่อไปนี้ให้คำอธิบายสั้น ๆ ของแผนภาพเหล่านี้ -
ซีเนียร์ | แผนภาพและคำอธิบาย |
---|---|
1 | Use case อธิบายความสัมพันธ์ระหว่างฟังก์ชันการทำงานและตัวควบคุมภายใน / ภายนอก ตัวควบคุมเหล่านี้เรียกได้ว่าเป็นนักแสดง |
2 | Activity อธิบายขั้นตอนการควบคุมในระบบ ประกอบด้วยกิจกรรมและการเชื่อมโยง โฟลว์อาจเป็นแบบลำดับพร้อมกันหรือแยกกลุ่มก็ได้ |
3 | State Machine/state chart แสดงถึงการเปลี่ยนแปลงสถานะของระบบที่ขับเคลื่อนด้วยเหตุการณ์ โดยพื้นฐานแล้วจะอธิบายถึงการเปลี่ยนแปลงสถานะของคลาสอินเทอร์เฟซ ฯลฯ ใช้เพื่อแสดงภาพปฏิกิริยาของระบบโดยปัจจัยภายใน / ภายนอก |
4 | Sequence แสดงภาพลำดับการโทรในระบบเพื่อดำเนินการทำงานเฉพาะ |
5 | Interaction Overview รวมแผนภาพกิจกรรมและลำดับเพื่อให้ภาพรวมขั้นตอนการควบคุมของระบบและกระบวนการทางธุรกิจ |
6 | Communication เช่นเดียวกับแผนภาพลำดับยกเว้นว่าจะเน้นที่บทบาทของวัตถุ การสื่อสารแต่ละครั้งจะเชื่อมโยงกับลำดับลำดับหมายเลขและข้อความในอดีต |
7 | Time Sequenced อธิบายการเปลี่ยนแปลงตามข้อความในสถานะเงื่อนไขและเหตุการณ์ |
แบบจำลองมุมมองสถาปัตยกรรม
โมเดลคือคำอธิบายที่สมบูรณ์พื้นฐานและเรียบง่ายของสถาปัตยกรรมซอฟต์แวร์ซึ่งประกอบด้วยหลายมุมมองจากมุมมองหรือมุมมองเฉพาะ
มุมมองคือการแสดงทั้งระบบจากมุมมองของชุดความกังวลที่เกี่ยวข้อง ใช้เพื่ออธิบายระบบจากมุมมองของผู้มีส่วนได้ส่วนเสียที่แตกต่างกันเช่นผู้ใช้ปลายทางนักพัฒนาผู้จัดการโครงการและผู้ทดสอบ
4 + 1 ดูโมเดล
แบบจำลองมุมมอง 4 + 1 ได้รับการออกแบบโดย Philippe Kruchten เพื่ออธิบายสถาปัตยกรรมของระบบที่ใช้ซอฟต์แวร์มากโดยอาศัยการใช้มุมมองที่หลากหลายและพร้อมกัน มันคือmultiple viewแบบจำลองที่เน้นคุณสมบัติและข้อกังวลต่างๆของระบบ เป็นมาตรฐานของเอกสารการออกแบบซอฟต์แวร์และทำให้ผู้มีส่วนได้ส่วนเสียทั้งหมดเข้าใจการออกแบบได้ง่าย
เป็นวิธีการตรวจสอบสถาปัตยกรรมสำหรับการศึกษาและจัดทำเอกสารการออกแบบสถาปัตยกรรมซอฟต์แวร์และครอบคลุมทุกแง่มุมของสถาปัตยกรรมซอฟต์แวร์สำหรับผู้มีส่วนได้ส่วนเสียทั้งหมด มีมุมมองที่สำคัญสี่ประการ -
The logical view or conceptual view - อธิบายรูปแบบวัตถุของการออกแบบ
The process view - อธิบายกิจกรรมของระบบจับภาพการทำงานพร้อมกันและการซิงโครไนซ์ของการออกแบบ
The physical view - อธิบายถึงการทำแผนที่ซอฟต์แวร์กับฮาร์ดแวร์และสะท้อนถึงแง่มุมที่กระจายออกไป
The development view - อธิบายองค์กรแบบคงที่หรือโครงสร้างของซอฟต์แวร์ในการพัฒนาสภาพแวดล้อม
โมเดลมุมมองนี้สามารถขยายได้โดยเพิ่มอีกหนึ่งมุมมองที่เรียกว่า scenario view หรือ use case viewสำหรับผู้ใช้ปลายทางหรือลูกค้าของระบบซอฟต์แวร์ มีความสอดคล้องกับมุมมองอื่น ๆ อีกสี่มุมมองและใช้เพื่อแสดงสถาปัตยกรรมที่ทำหน้าที่เป็นมุมมอง "บวกหนึ่ง", (4 + 1) มุมมอง รูปต่อไปนี้อธิบายสถาปัตยกรรมซอฟต์แวร์โดยใช้โมเดลมุมมองพร้อมกันห้ามุมมอง (4 + 1)
ทำไมถึงเรียกว่า 4 + 1 แทนที่จะเป็น 5?
use case viewมีความสำคัญเป็นพิเศษเนื่องจากมีรายละเอียดความต้องการระดับสูงของระบบในขณะที่มุมมองอื่น ๆ ให้รายละเอียดว่าข้อกำหนดเหล่านั้นรับรู้ได้อย่างไร เมื่อมุมมองอื่น ๆ ทั้งสี่มุมมองเสร็จสมบูรณ์มันซ้ำซ้อนอย่างมีประสิทธิภาพ อย่างไรก็ตามมุมมองอื่น ๆ ทั้งหมดจะเป็นไปไม่ได้หากไม่มี ภาพและตารางต่อไปนี้แสดงมุมมอง 4 + 1 โดยละเอียด -
ตรรกะ | กระบวนการ | การพัฒนา | ทางกายภาพ | สถานการณ์ | |
---|---|---|---|---|---|
คำอธิบาย | แสดงส่วนประกอบ (Object) ของระบบตลอดจนปฏิสัมพันธ์ | แสดงกระบวนการ / กฎเวิร์กโฟลว์ของระบบและวิธีการสื่อสารของกระบวนการโดยเน้นที่มุมมองแบบไดนามิกของระบบ | ให้มุมมอง Building Block ของระบบและอธิบายการจัดระเบียบแบบคงที่ของโมดูลระบบ | แสดงการติดตั้งการกำหนดค่าและการปรับใช้แอปพลิเคชันซอฟต์แวร์ | แสดงให้เห็นว่าการออกแบบเสร็จสมบูรณ์โดยดำเนินการตรวจสอบความถูกต้องและภาพประกอบ |
ผู้ดู / ผู้ถือหุ้น | ผู้ใช้ปลายทางนักวิเคราะห์และนักออกแบบ | ผู้รวมและนักพัฒนา | โปรแกรมเมอร์และผู้จัดการโครงการซอฟต์แวร์ | วิศวกรระบบผู้ปฏิบัติงานผู้ดูแลระบบและผู้ติดตั้งระบบ | มุมมองของมุมมองและผู้ประเมินทั้งหมด |
พิจารณา | ความต้องการการทำงาน | ข้อกำหนดที่ไม่ใช่หน้าที่ | องค์กรโมดูลซอฟต์แวร์ (การใช้การจัดการซอฟต์แวร์ซ้ำข้อ จำกัด ของเครื่องมือ) | ข้อกำหนดที่ไม่สามารถใช้งานได้เกี่ยวกับฮาร์ดแวร์พื้นฐาน | ความสอดคล้องและความถูกต้องของระบบ |
UML - แผนภาพ | คลาสสถานะวัตถุลำดับแผนภาพการสื่อสาร | แผนภาพกิจกรรม | ส่วนประกอบแผนภาพแพ็คเกจ | แผนภาพการปรับใช้ | ใช้แผนภาพกรณี |
ภาษาคำอธิบายสถาปัตยกรรม (ADL)
ADL เป็นภาษาที่จัดเตรียมไวยากรณ์และความหมายสำหรับการกำหนดสถาปัตยกรรมซอฟต์แวร์ เป็นข้อกำหนดสัญกรณ์ที่มีคุณลักษณะสำหรับการสร้างแบบจำลองสถาปัตยกรรมแนวคิดของระบบซอฟต์แวร์ซึ่งแตกต่างจากการนำไปใช้งานของระบบ
ADL ต้องสนับสนุนส่วนประกอบสถาปัตยกรรมการเชื่อมต่ออินเทอร์เฟซและการกำหนดค่าซึ่งเป็นส่วนประกอบของคำอธิบายสถาปัตยกรรม เป็นรูปแบบของนิพจน์สำหรับใช้ในคำอธิบายสถาปัตยกรรมและให้ความสามารถในการย่อยสลายส่วนประกอบรวมส่วนประกอบและกำหนดส่วนต่อประสานของส่วนประกอบ
ภาษาคำอธิบายสถาปัตยกรรมเป็นภาษาข้อกำหนดที่เป็นทางการซึ่งอธิบายคุณลักษณะของซอฟต์แวร์เช่นกระบวนการเธรดข้อมูลและโปรแกรมย่อยตลอดจนส่วนประกอบฮาร์ดแวร์เช่นโปรเซสเซอร์อุปกรณ์บัสและหน่วยความจำ
ยากที่จะจำแนกหรือแยกความแตกต่างของ ADL และภาษาโปรแกรมหรือภาษาโมเดล อย่างไรก็ตามมีข้อกำหนดต่อไปนี้สำหรับภาษาที่จะจัดประเภทเป็น ADL -
ควรเป็นเรื่องที่เหมาะสมสำหรับการสื่อสารสถาปัตยกรรมกับทุกฝ่ายที่เกี่ยวข้อง
ควรเหมาะสำหรับงานสร้างสถาปัตยกรรมการปรับแต่งและการตรวจสอบความถูกต้อง
ควรเป็นพื้นฐานสำหรับการนำไปใช้งานต่อไปดังนั้นจึงต้องสามารถเพิ่มข้อมูลลงในข้อกำหนด ADL เพื่อเปิดใช้งานข้อกำหนดสุดท้ายของระบบที่ได้มาจาก ADL
ควรมีความสามารถในการแสดงรูปแบบสถาปัตยกรรมทั่วไปส่วนใหญ่
ควรสนับสนุนความสามารถในการวิเคราะห์หรือจัดเตรียมการใช้งานต้นแบบอย่างรวดเร็ว
กระบวนทัศน์เชิงวัตถุ (OO) เกิดขึ้นจากแนวคิดเริ่มต้นของแนวทางการเขียนโปรแกรมใหม่ในขณะที่ความสนใจในการออกแบบและวิธีการวิเคราะห์ตามมามากในภายหลัง การวิเคราะห์ OO และกระบวนทัศน์การออกแบบเป็นผลลัพธ์เชิงตรรกะของการนำภาษาโปรแกรม OO มาใช้อย่างกว้างขวาง
ภาษาเชิงวัตถุแรกคือ Simula (การจำลองระบบจริง) ที่ได้รับการพัฒนาขึ้นในปี พ.ศ. 2503 โดยนักวิจัยของศูนย์คอมพิวเตอร์แห่งนอร์เวย์
ในปีพ. ศ. 2513 Alan Kay และกลุ่มวิจัยของเขาที่ Xerox PARC ได้สร้างคอมพิวเตอร์ส่วนบุคคลชื่อ Dynabook และภาษาการเขียนโปรแกรมเชิงวัตถุบริสุทธิ์ตัวแรก (OOPL) - Smalltalk สำหรับการเขียนโปรแกรม Dynabook
ในช่วงทศวรรษที่ 1980 Grady Boochตีพิมพ์บทความชื่อ Object Oriented Design ที่นำเสนอการออกแบบสำหรับภาษาโปรแกรมเป็นหลัก Ada ในรุ่นต่อ ๆ มาเขาได้ขยายแนวคิดของเขาไปสู่วิธีการออกแบบเชิงวัตถุที่สมบูรณ์
ในช่วงปี 1990 Coad รวมแนวคิดเชิงพฤติกรรมเข้ากับวิธีการเชิงวัตถุ
นวัตกรรมที่สำคัญอื่น ๆ ได้แก่ Object Modeling Techniques (OMT) โดย James Rum Baugh และวิศวกรรมซอฟต์แวร์เชิงวัตถุ (OOSE) โดย Ivar Jacobson.
รู้เบื้องต้นเกี่ยวกับ OO Paradigm
กระบวนทัศน์ OO เป็นวิธีการที่สำคัญสำหรับการพัฒนาซอฟต์แวร์ใด ๆ รูปแบบสถาปัตยกรรมส่วนใหญ่หรือรูปแบบเช่นไปป์และตัวกรองที่เก็บข้อมูลและองค์ประกอบตามสามารถนำไปใช้โดยใช้กระบวนทัศน์นี้
แนวคิดและคำศัพท์พื้นฐานของระบบเชิงวัตถุ -
วัตถุ
วัตถุเป็นองค์ประกอบของโลกแห่งความเป็นจริงในสภาพแวดล้อมเชิงวัตถุที่อาจมีอยู่จริงหรือมีอยู่ในแนวความคิด แต่ละวัตถุมี -
เอกลักษณ์ที่แยกความแตกต่างจากวัตถุอื่น ๆ ในระบบ
สถานะที่กำหนดคุณสมบัติลักษณะของอ็อบเจ็กต์ตลอดจนค่าคุณสมบัติที่อ็อบเจ็กต์เก็บไว้
พฤติกรรมที่แสดงถึงกิจกรรมที่มองเห็นได้จากภายนอกที่ดำเนินการโดยวัตถุในแง่ของการเปลี่ยนแปลงในสถานะของมัน
สามารถจำลองวัตถุได้ตามความต้องการของแอปพลิเคชัน วัตถุอาจมีอยู่จริงเช่นลูกค้ารถยนต์ ฯลฯ ; หรือการดำรงอยู่ในแนวความคิดที่จับต้องไม่ได้เช่นโครงการกระบวนการ ฯลฯ
คลาส
คลาสแสดงถึงกลุ่มของวัตถุที่มีคุณสมบัติลักษณะเดียวกันที่แสดงพฤติกรรมทั่วไป มันให้พิมพ์เขียวหรือคำอธิบายของวัตถุที่สามารถสร้างขึ้นจากมัน การสร้างวัตถุในฐานะสมาชิกของคลาสเรียกว่าการสร้างอินสแตนซ์ ดังนั้นวัตถุคือไฟล์instance ของชั้นเรียน
องค์ประกอบของคลาสคือ -
ชุดของแอ็ตทริบิวต์สำหรับอ็อบเจ็กต์ที่จะสร้างอินสแตนซ์จากคลาส โดยทั่วไปออบเจ็กต์ที่แตกต่างกันของคลาสจะมีความแตกต่างบางประการในค่าของคุณลักษณะ แอตทริบิวต์มักเรียกว่าข้อมูลคลาส
ชุดของการดำเนินการที่แสดงให้เห็นพฤติกรรมของออบเจ็กต์ของคลาส การดำเนินการเรียกอีกอย่างว่าฟังก์ชันหรือวิธีการ
Example
ให้เราพิจารณาคลาสง่ายๆ Circle ที่แสดงถึงวงกลมรูปเรขาคณิตในปริภูมิสองมิติ คุณสมบัติของคลาสนี้สามารถระบุได้ดังนี้ -
- x - พิกัดเพื่อแสดงพิกัด x ของจุดศูนย์กลาง
- y - พิกัดเพื่อแสดงพิกัด y ของศูนย์กลาง
- a เพื่อแสดงรัศมีของวงกลม
การดำเนินการบางอย่างสามารถกำหนดได้ดังนี้ -
- findArea () วิธีการคำนวณพื้นที่
- findCircumference () วิธีคำนวณเส้นรอบวง
- สเกล () วิธีการเพิ่มหรือลดรัศมี
การห่อหุ้ม
Encapsulation คือกระบวนการผูกแอตทริบิวต์และวิธีการเข้าด้วยกันภายในคลาส ด้วยการห่อหุ้มรายละเอียดภายในของคลาสสามารถซ่อนจากภายนอกได้ อนุญาตให้องค์ประกอบของคลาสสามารถเข้าถึงได้จากภายนอกผ่านทางอินเทอร์เฟซที่จัดเตรียมโดยคลาสเท่านั้น
ความแตกต่าง
Polymorphism เดิมเป็นคำภาษากรีกที่หมายถึงความสามารถในการมีหลายรูปแบบ ในกระบวนทัศน์เชิงวัตถุความหลากหลายหมายถึงการใช้การดำเนินการในรูปแบบต่างๆขึ้นอยู่กับอินสแตนซ์ที่พวกเขากำลังดำเนินการอยู่ ความหลากหลายช่วยให้วัตถุที่มีโครงสร้างภายในต่างกันมีส่วนต่อประสานภายนอกทั่วไป ความหลากหลายมีประสิทธิผลโดยเฉพาะอย่างยิ่งในขณะที่ใช้การถ่ายทอดทางพันธุกรรม
Example
ให้เราพิจารณาสองคลาส Circle และ Square โดยแต่ละคลาสมีวิธี findArea () แม้ว่าชื่อและวัตถุประสงค์ของวิธีการในคลาสจะเหมือนกัน แต่การใช้งานภายในเช่นขั้นตอนการคำนวณพื้นที่จะแตกต่างกันไปในแต่ละคลาส เมื่อออบเจ็กต์ของคลาส Circle เรียกใช้เมธอด findArea () การดำเนินการจะค้นหาพื้นที่ของวงกลมโดยไม่มีข้อขัดแย้งกับเมธอด findArea () ของคลาส Square
Relationships
ในการอธิบายระบบต้องจัดเตรียมข้อกำหนดทั้งแบบไดนามิก (เชิงพฤติกรรม) และแบบสแตติก (ตรรกะ) ของระบบ ข้อกำหนดแบบไดนามิกอธิบายความสัมพันธ์ระหว่างวัตถุเช่นการส่งผ่านข้อความ และข้อกำหนดแบบคงอธิบายความสัมพันธ์ระหว่างคลาสเช่นการรวมการเชื่อมโยงและการสืบทอด
ข้อความผ่าน
แอปพลิเคชันใด ๆ ต้องใช้วัตถุจำนวนมากที่โต้ตอบกันอย่างกลมกลืน ออบเจ็กต์ในระบบอาจสื่อสารกันได้โดยใช้การส่งผ่านข้อความ สมมติว่าระบบมีสองวัตถุ - obj1 และ obj2 วัตถุ obj1 ส่งข้อความไปยังวัตถุ obj2 หาก obj1 ต้องการให้ obj2 ดำเนินการวิธีใดวิธีหนึ่ง
องค์ประกอบหรือการรวม
การรวมหรือองค์ประกอบเป็นความสัมพันธ์ระหว่างคลาสที่คลาสสามารถประกอบขึ้นจากการรวมกันของอ็อบเจ็กต์ของคลาสอื่น ๆ อนุญาตให้วางวัตถุภายในเนื้อหาของคลาสอื่นได้โดยตรง การรวมเรียกว่าความสัมพันธ์ "ส่วนหนึ่งของ" หรือ "มี - a" โดยมีความสามารถในการนำทางจากทั้งหมดไปยังส่วนต่างๆ ออบเจ็กต์รวมคืออ็อบเจ็กต์ที่ประกอบด้วยอ็อบเจ็กต์อื่นอย่างน้อยหนึ่งอ็อบเจ็กต์
สมาคม
การเชื่อมโยงเป็นกลุ่มของลิงก์ที่มีโครงสร้างและพฤติกรรมร่วมกัน การเชื่อมโยงแสดงถึงความสัมพันธ์ระหว่างอ็อบเจ็กต์ของคลาสอย่างน้อยหนึ่งคลาส ลิงก์สามารถกำหนดเป็นอินสแตนซ์ของการเชื่อมโยง ระดับของการเชื่อมโยงหมายถึงจำนวนชั้นเรียนที่เกี่ยวข้องกับการเชื่อมต่อ ระดับอาจเป็นยูนารีไบนารี่หรือเทอร์นารี
- ความสัมพันธ์แบบยูนารีเชื่อมต่อออบเจ็กต์ของคลาสเดียวกัน
- ความสัมพันธ์แบบไบนารีเชื่อมต่อออบเจ็กต์ของสองคลาส
- ความสัมพันธ์แบบ ternary เชื่อมต่อออบเจ็กต์ที่มีตั้งแต่สามคลาสขึ้นไป
มรดก
เป็นกลไกที่อนุญาตให้สร้างคลาสใหม่จากคลาสที่มีอยู่โดยการขยายและปรับแต่งความสามารถ คลาสที่มีอยู่เรียกว่าคลาสพื้นฐาน / คลาสพาเรนต์ / ซูเปอร์คลาสและคลาสใหม่เรียกว่าคลาสที่ได้รับ / คลาสย่อย / คลาสย่อย
คลาสย่อยสามารถสืบทอดหรือรับคุณสมบัติและวิธีการของ super-class ได้โดยที่ super-class อนุญาต นอกจากนี้คลาสย่อยอาจเพิ่มแอตทริบิวต์และวิธีการของตนเองและอาจปรับเปลี่ยนวิธีการระดับสูง การถ่ายทอดทางพันธุกรรมกำหนดความสัมพันธ์“ คือ - a”
Example
จากสัตว์เลี้ยงลูกด้วยนมระดับชั้นสามารถได้มาหลายคลาสเช่นมนุษย์แมวสุนัขวัว ฯลฯ มนุษย์แมวสุนัขและวัวล้วนมีลักษณะที่แตกต่างกันของสัตว์เลี้ยงลูกด้วยนม นอกจากนี้แต่ละคนมีลักษณะเฉพาะของตัวเอง อาจกล่าวได้ว่าวัว“ เป็น -” สัตว์เลี้ยงลูกด้วยนม
การวิเคราะห์ OO
ในขั้นตอนการวิเคราะห์เชิงวัตถุของการพัฒนาซอฟต์แวร์ข้อกำหนดของระบบจะถูกกำหนดคลาสจะถูกระบุและยอมรับความสัมพันธ์ระหว่างคลาส จุดมุ่งหมายของการวิเคราะห์ OO คือการทำความเข้าใจโดเมนแอปพลิเคชันและข้อกำหนดเฉพาะของระบบ ผลลัพธ์ของระยะนี้คือข้อกำหนดข้อกำหนดและการวิเคราะห์เบื้องต้นของโครงสร้างตรรกะและความเป็นไปได้ของระบบ
เทคนิคการวิเคราะห์ทั้งสามที่ใช้ร่วมกันสำหรับการวิเคราะห์เชิงวัตถุ ได้แก่ การสร้างแบบจำลองวัตถุการสร้างแบบจำลองแบบไดนามิกและการสร้างแบบจำลองเชิงฟังก์ชัน
การสร้างแบบจำลองวัตถุ
การสร้างแบบจำลองวัตถุพัฒนาโครงสร้างคงที่ของระบบซอฟต์แวร์ในแง่ของวัตถุ ระบุอ็อบเจ็กต์คลาสที่สามารถจัดกลุ่มอ็อบเจ็กต์และความสัมพันธ์ระหว่างอ็อบเจ็กต์ นอกจากนี้ยังระบุคุณลักษณะหลักและการดำเนินการที่กำหนดลักษณะของแต่ละคลาส
กระบวนการสร้างแบบจำลองวัตถุสามารถมองเห็นได้ในขั้นตอนต่อไปนี้ -
- ระบุวัตถุและจัดกลุ่มเป็นชั้นเรียน
- ระบุความสัมพันธ์ระหว่างชั้นเรียน
- สร้างไดอะแกรมโมเดลวัตถุผู้ใช้
- กำหนดแอตทริบิวต์วัตถุผู้ใช้
- กำหนดการดำเนินการที่ควรดำเนินการกับคลาส
การสร้างแบบจำลองแบบไดนามิก
หลังจากวิเคราะห์พฤติกรรมคงที่ของระบบแล้วจะต้องมีการตรวจสอบพฤติกรรมตามเวลาและการเปลี่ยนแปลงภายนอก นี่คือจุดประสงค์ของการสร้างแบบจำลองแบบไดนามิก
การสร้างแบบจำลองแบบไดนามิกสามารถกำหนดได้ว่าเป็น "วิธีอธิบายว่าวัตถุแต่ละชิ้นตอบสนองต่อเหตุการณ์อย่างไรเหตุการณ์ภายในที่เรียกโดยวัตถุอื่นหรือเหตุการณ์ภายนอกที่ถูกกระตุ้นโดยโลกภายนอก"
กระบวนการสร้างแบบจำลองแบบไดนามิกสามารถมองเห็นได้ในขั้นตอนต่อไปนี้ -
- ระบุสถานะของแต่ละวัตถุ
- ระบุเหตุการณ์และวิเคราะห์ความเกี่ยวข้องของการกระทำ
- สร้างแผนภาพแบบจำลองไดนามิกซึ่งประกอบด้วยแผนภาพการเปลี่ยนสถานะ
- แสดงแต่ละสถานะในแง่ของคุณสมบัติของวัตถุ
- ตรวจสอบสถานะ - ไดอะแกรมการเปลี่ยนแปลงที่วาด
การสร้างแบบจำลองการทำงาน
Functional Modeling เป็นองค์ประกอบสุดท้ายของการวิเคราะห์เชิงวัตถุ แบบจำลองการทำงานจะแสดงกระบวนการที่ดำเนินการภายในออบเจ็กต์และการเปลี่ยนแปลงของข้อมูลเมื่อย้ายไปมาระหว่างวิธีการ ระบุความหมายของการดำเนินการของการสร้างแบบจำลองวัตถุและการดำเนินการของการสร้างแบบจำลองแบบไดนามิก แบบจำลองการทำงานสอดคล้องกับแผนภาพกระแสข้อมูลของการวิเคราะห์โครงสร้างแบบดั้งเดิม
กระบวนการสร้างแบบจำลองการทำงานสามารถมองเห็นได้ในขั้นตอนต่อไปนี้ -
- ระบุอินพุตและเอาต์พุตทั้งหมด
- สร้างแผนภาพกระแสข้อมูลที่แสดงการพึ่งพาการทำงาน
- ระบุวัตถุประสงค์ของแต่ละฟังก์ชัน
- ระบุข้อ จำกัด
- ระบุเกณฑ์การเพิ่มประสิทธิภาพ
การออกแบบเชิงวัตถุ
หลังจากขั้นตอนการวิเคราะห์โมเดลแนวความคิดจะถูกพัฒนาต่อไปเป็นโมเดลเชิงวัตถุโดยใช้การออกแบบเชิงวัตถุ (OOD) ใน OOD แนวคิดที่ไม่ขึ้นกับเทคโนโลยีในแบบจำลองการวิเคราะห์จะถูกจับคู่กับคลาสที่นำไปใช้งานมีการระบุข้อ จำกัด และอินเทอร์เฟซได้รับการออกแบบทำให้เกิดโมเดลสำหรับโดเมนโซลูชัน จุดมุ่งหมายหลักของการออกแบบ OO คือการพัฒนาสถาปัตยกรรมโครงสร้างของระบบ
ขั้นตอนสำหรับการออกแบบเชิงวัตถุสามารถระบุได้ว่า -
- การกำหนดบริบทของระบบ
- การออกแบบสถาปัตยกรรมระบบ
- การระบุวัตถุในระบบ
- การสร้างแบบจำลองการออกแบบ
- คุณสมบัติของอินเทอร์เฟซของอ็อบเจ็กต์
การออกแบบ OO สามารถแบ่งออกเป็นสองขั้นตอน - การออกแบบแนวคิดและการออกแบบรายละเอียด
Conceptual design
ในขั้นตอนนี้คลาสทั้งหมดจะถูกระบุที่จำเป็นสำหรับการสร้างระบบ นอกจากนี้ยังมีการกำหนดความรับผิดชอบเฉพาะให้กับแต่ละชั้นเรียน แผนภาพคลาสใช้เพื่อชี้แจงความสัมพันธ์ระหว่างชั้นเรียนและแผนภาพปฏิสัมพันธ์ใช้เพื่อแสดงการไหลของเหตุการณ์ เป็นที่รู้จักกันในชื่อhigh-level design.
Detailed design
ในขั้นตอนนี้คุณลักษณะและการดำเนินการจะถูกกำหนดให้กับแต่ละชั้นเรียนตามแผนภาพปฏิสัมพันธ์ แผนภาพเครื่องสถานะได้รับการพัฒนาเพื่ออธิบายรายละเอียดเพิ่มเติมของการออกแบบ เป็นที่รู้จักกันในชื่อlow-level design.
หลักการออกแบบ
หลักการออกแบบที่สำคัญมีดังต่อไปนี้ -
Principle of Decoupling
เป็นการยากที่จะรักษาระบบด้วยชุดของคลาสที่พึ่งพาซึ่งกันและกันสูงเนื่องจากการปรับเปลี่ยนในคลาสหนึ่งอาจส่งผลให้มีการอัปเดตแบบเรียงซ้อนของคลาสอื่น ๆ ในการออกแบบ OO การมีเพศสัมพันธ์แบบแน่นสามารถกำจัดได้โดยการแนะนำคลาสใหม่หรือการสืบทอด
Ensuring Cohesion
คลาสที่เหนียวแน่นทำหน้าที่ชุดของฟังก์ชันที่เกี่ยวข้องอย่างใกล้ชิด การขาดวิธีการทำงานร่วมกัน - คลาสทำหน้าที่ที่ไม่เกี่ยวข้องแม้ว่าจะไม่ส่งผลกระทบต่อการทำงานของทั้งระบบ ทำให้โครงสร้างทั้งหมดของซอฟต์แวร์ยากต่อการจัดการขยายบำรุงรักษาและเปลี่ยนแปลง
Open-closed Principle
ตามหลักการนี้ระบบควรสามารถขยายเพื่อให้เป็นไปตามข้อกำหนดใหม่ การใช้งานที่มีอยู่และรหัสของระบบไม่ควรแก้ไขอันเป็นผลมาจากการขยายระบบ นอกจากนี้ต้องปฏิบัติตามแนวทางต่อไปนี้ในหลักการเปิด - ปิด -
สำหรับแต่ละคลาสคอนกรีตจะต้องมีการบำรุงรักษาอินเตอร์เฟสและการใช้งานแยกกัน
ในสภาพแวดล้อมแบบมัลติเธรดเก็บแอตทริบิวต์ไว้เป็นส่วนตัว
ลดการใช้ตัวแปรส่วนกลางและตัวแปรคลาสให้น้อยที่สุด
ในสถาปัตยกรรมการไหลของข้อมูลระบบซอฟต์แวร์ทั้งหมดถูกมองว่าเป็นชุดของการเปลี่ยนแปลงบนชิ้นส่วนที่ต่อเนื่องกันหรือชุดของข้อมูลอินพุตโดยที่ข้อมูลและการดำเนินการเป็นอิสระจากกัน ด้วยวิธีนี้ข้อมูลจะเข้าสู่ระบบจากนั้นจึงไหลผ่านโมดูลทีละโมดูลจนกว่าจะถูกกำหนดให้กับปลายทางสุดท้าย (เอาต์พุตหรือที่เก็บข้อมูล)
การเชื่อมต่อระหว่างส่วนประกอบหรือโมดูลอาจใช้เป็นสตรีม I / O, บัฟเฟอร์ I / O, piped หรือการเชื่อมต่อประเภทอื่น ๆ ข้อมูลสามารถบินได้ในโทโพโลยีแบบกราฟด้วยวัฏจักรในโครงสร้างเชิงเส้นโดยไม่มีวัฏจักรหรือในโครงสร้างแบบต้นไม้
วัตถุประสงค์หลักของแนวทางนี้คือเพื่อให้บรรลุคุณสมบัติของการใช้ซ้ำและความสามารถในการปรับเปลี่ยน เหมาะสำหรับแอปพลิเคชันที่เกี่ยวข้องกับชุดของการแปลงข้อมูลอิสระหรือการคำนวณที่กำหนดไว้อย่างดีกับอินพุตและเอาต์พุตที่กำหนดไว้อย่างเป็นระเบียบเช่นคอมไพเลอร์และแอปพลิเคชันการประมวลผลข้อมูลทางธุรกิจ ลำดับการดำเนินการระหว่างโมดูลมีสามประเภท
- ลำดับแบทช์
- ท่อและตัวกรองหรือโหมดท่อส่งแบบไม่ต่อเนื่อง
- การควบคุมกระบวนการ
ลำดับแบทช์
Batch sequential เป็นรูปแบบการประมวลผลข้อมูลแบบคลาสสิกซึ่งระบบย่อยการแปลงข้อมูลสามารถเริ่มต้นกระบวนการได้หลังจากที่ระบบย่อยก่อนหน้าผ่าน -
การไหลของข้อมูลมีชุดข้อมูลโดยรวมจากระบบย่อยหนึ่งไปยังอีกระบบหนึ่ง
การสื่อสารระหว่างโมดูลดำเนินการผ่านไฟล์กลางชั่วคราวซึ่งสามารถลบออกได้โดยระบบย่อยที่ต่อเนื่องกัน
สามารถใช้ได้กับแอปพลิเคชันที่ข้อมูลเป็นแบตช์และแต่ละระบบย่อยจะอ่านไฟล์อินพุตที่เกี่ยวข้องและเขียนไฟล์เอาต์พุต
การประยุกต์ใช้สถาปัตยกรรมนี้โดยทั่วไปรวมถึงการประมวลผลข้อมูลทางธุรกิจเช่นการเรียกเก็บเงินธนาคารและสาธารณูปโภค
ข้อดี
จัดเตรียมการหารที่ง่ายกว่าบนระบบย่อย
ระบบย่อยแต่ละระบบสามารถเป็นโปรแกรมอิสระที่ทำงานกับข้อมูลอินพุตและสร้างข้อมูลเอาต์พุต
ข้อเสีย
ให้เวลาแฝงสูงและปริมาณงานต่ำ
ไม่มีอินเทอร์เฟซแบบพร้อมกันและแบบโต้ตอบ
จำเป็นต้องมีการควบคุมภายนอกสำหรับการนำไปใช้งาน
สถาปัตยกรรมท่อและตัวกรอง
แนวทางนี้ให้ความสำคัญกับการเปลี่ยนแปลงเพิ่มเติมของข้อมูลโดยส่วนประกอบที่ต่อเนื่องกัน ในแนวทางนี้การไหลของข้อมูลขับเคลื่อนโดยข้อมูลและระบบทั้งหมดจะถูกย่อยสลายเป็นส่วนประกอบของแหล่งข้อมูลตัวกรองท่อและอ่างข้อมูล
การเชื่อมต่อระหว่างโมดูลคือสตรีมข้อมูลซึ่งเป็นบัฟเฟอร์เข้าก่อน / ออกก่อนที่สามารถสตรีมไบต์อักขระหรือประเภทอื่น ๆ ได้ คุณสมบัติหลักของสถาปัตยกรรมนี้คือการดำเนินการพร้อมกันและเพิ่มขึ้น
กรอง
ตัวกรองคือตัวแปลงกระแสข้อมูลอิสระหรือตัวแปลงกระแสข้อมูล จะแปลงข้อมูลของสตรีมข้อมูลอินพุตประมวลผลและเขียนสตรีมข้อมูลที่แปลงแล้วบนไพพ์เพื่อให้ตัวกรองถัดไปประมวลผล ทำงานในโหมดเพิ่มหน่วยซึ่งจะเริ่มทำงานทันทีที่ข้อมูลมาถึงผ่านท่อที่เชื่อมต่อ ตัวกรองมีสองประเภท -active filter และ passive filter.
Active filter
ตัวกรองแบบแอคทีฟช่วยให้ท่อที่เชื่อมต่อดึงข้อมูลเข้าและดันข้อมูลที่แปลงแล้วออกมา ทำงานด้วยท่อแบบพาสซีฟซึ่งมีกลไกการอ่าน / เขียนสำหรับการดึงและผลักดัน โหมดนี้ใช้ในท่อ UNIX และกลไกการกรอง
Passive filter
ตัวกรองแบบพาสซีฟช่วยให้ท่อที่เชื่อมต่อสามารถดันข้อมูลเข้าและดึงข้อมูลออกได้ ทำงานด้วยท่อที่ใช้งานอยู่ซึ่งดึงข้อมูลจากตัวกรองและส่งข้อมูลไปยังตัวกรองถัดไป ต้องมีกลไกการอ่าน / เขียน
ข้อดี
ให้การทำงานพร้อมกันและปริมาณงานสูงสำหรับการประมวลผลข้อมูลที่มากเกินไป
ให้การใช้ซ้ำและลดความยุ่งยากในการบำรุงรักษาระบบ
ให้ความสามารถในการปรับเปลี่ยนและการมีเพศสัมพันธ์ต่ำระหว่างตัวกรอง
ให้ความเรียบง่ายด้วยการแบ่งส่วนที่ชัดเจนระหว่างตัวกรองสองตัวที่เชื่อมต่อด้วยท่อ
ให้ความยืดหยุ่นโดยรองรับทั้งการดำเนินการตามลำดับและแบบขนาน
ข้อเสีย
ไม่เหมาะสำหรับการโต้ตอบแบบไดนามิก
จำเป็นต้องมีตัวส่วนร่วมต่ำสำหรับการส่งข้อมูลในรูปแบบ ASCII
ค่าใช้จ่ายในการแปลงข้อมูลระหว่างตัวกรอง
ไม่มีวิธีสำหรับตัวกรองในการโต้ตอบแบบร่วมมือกันเพื่อแก้ปัญหา
ยากที่จะกำหนดค่าสถาปัตยกรรมนี้แบบไดนามิก
ท่อ
ไปป์ไม่มีสถานะและมีสตรีมไบนารีหรืออักขระที่มีอยู่ระหว่างสองตัวกรอง สามารถย้ายสตรีมข้อมูลจากตัวกรองหนึ่งไปยังอีกตัวกรอง ไพพ์ใช้ข้อมูลบริบทเล็กน้อยและไม่เก็บข้อมูลสถานะระหว่างอินสแตนซ์
สถาปัตยกรรมการควบคุมกระบวนการ
เป็นสถาปัตยกรรมการไหลของข้อมูลประเภทหนึ่งที่ข้อมูลไม่ได้เป็นแบบตามลำดับหรือสตรีมแบบไปป์ไลน์ การไหลของข้อมูลมาจากชุดของตัวแปรซึ่งควบคุมการดำเนินการของกระบวนการ มันสลายระบบทั้งหมดเป็นระบบย่อยหรือโมดูลและเชื่อมต่อเข้าด้วยกัน
ประเภทของระบบย่อย
สถาปัตยกรรมการควบคุมกระบวนการจะมี processing unit สำหรับการเปลี่ยนตัวแปรควบคุมกระบวนการและก controller unit สำหรับการคำนวณปริมาณการเปลี่ยนแปลง
ชุดควบคุมต้องมีองค์ประกอบดังต่อไปนี้ -
Controlled Variable- Controlled Variable ให้ค่าสำหรับระบบพื้นฐานและควรวัดโดยเซ็นเซอร์ ตัวอย่างเช่นความเร็วในระบบควบคุมความเร็วคงที่
Input Variable- วัดข้อมูลเข้าสู่กระบวนการ ตัวอย่างเช่นอุณหภูมิของอากาศไหลกลับในระบบควบคุมอุณหภูมิ
Manipulated Variable - Manipulated Variable value ถูกปรับหรือเปลี่ยนแปลงโดยคอนโทรลเลอร์
Process Definition - รวมถึงกลไกในการจัดการตัวแปรกระบวนการบางอย่าง
Sensor - รับค่าของตัวแปรกระบวนการที่เกี่ยวข้องกับการควบคุมและสามารถใช้เป็นข้อมูลอ้างอิงย้อนกลับเพื่อคำนวณตัวแปรที่จัดการใหม่
Set Point - เป็นค่าที่ต้องการสำหรับตัวแปรควบคุม
Control Algorithm - ใช้สำหรับการตัดสินใจว่าจะจัดการตัวแปรกระบวนการอย่างไร
พื้นที่การใช้งาน
สถาปัตยกรรมการควบคุมกระบวนการเหมาะสมในโดเมนต่อไปนี้ -
การออกแบบซอฟต์แวร์ระบบฝังตัวซึ่งระบบถูกจัดการโดยข้อมูลตัวแปรการควบคุมกระบวนการ
แอ็พพลิเคชันซึ่งมีจุดมุ่งหมายเพื่อรักษาคุณสมบัติที่ระบุของผลลัพธ์ของกระบวนการที่ค่าอ้างอิงที่กำหนด
ใช้ได้กับระบบควบคุมความเร็วรถและระบบควบคุมอุณหภูมิอาคาร
ซอฟต์แวร์ระบบเรียลไทม์เพื่อควบคุมเบรกป้องกันล้อล็อกรถยนต์โรงไฟฟ้านิวเคลียร์ ฯลฯ
ในสถาปัตยกรรมที่เน้นข้อมูลเป็นศูนย์กลางข้อมูลจะถูกรวมไว้ที่ส่วนกลางและเข้าถึงได้บ่อยโดยส่วนประกอบอื่น ๆ ซึ่งจะแก้ไขข้อมูล วัตถุประสงค์หลักของรูปแบบนี้คือเพื่อให้ได้ข้อมูลที่เป็นหนึ่งเดียว สถาปัตยกรรมที่เน้นข้อมูลเป็นศูนย์กลางประกอบด้วยส่วนประกอบต่าง ๆ ที่สื่อสารผ่านที่เก็บข้อมูลแบบแบ่งใช้ คอมโพเนนต์เข้าถึงโครงสร้างข้อมูลที่ใช้ร่วมกันและค่อนข้างเป็นอิสระจากนั้นจึงโต้ตอบผ่านที่เก็บข้อมูลเท่านั้น
ตัวอย่างที่รู้จักกันดีที่สุดของสถาปัตยกรรมที่เน้นข้อมูลเป็นศูนย์กลางคือสถาปัตยกรรมฐานข้อมูลซึ่งสคีมาฐานข้อมูลทั่วไปถูกสร้างขึ้นด้วยโปรโตคอลการกำหนดข้อมูลตัวอย่างเช่นชุดของตารางที่เกี่ยวข้องกับเขตข้อมูลและชนิดข้อมูลใน RDBMS
อีกตัวอย่างหนึ่งของสถาปัตยกรรมที่เน้นข้อมูลเป็นศูนย์กลางคือสถาปัตยกรรมเว็บที่มีสคีมาข้อมูลทั่วไป (เช่นโครงสร้างเมตาของเว็บ) และตามรูปแบบข้อมูลไฮเปอร์มีเดียและกระบวนการสื่อสารผ่านการใช้บริการข้อมูลบนเว็บที่ใช้ร่วมกัน
ประเภทของส่วนประกอบ
ส่วนประกอบมีสองประเภท -
ก central dataโครงสร้างหรือที่เก็บข้อมูลหรือที่เก็บข้อมูลซึ่งมีหน้าที่จัดเก็บข้อมูลถาวร แสดงถึงสถานะปัจจุบัน
ก data accessor หรือชุดส่วนประกอบอิสระที่ทำงานบนที่เก็บข้อมูลส่วนกลางทำการคำนวณและอาจนำผลลัพธ์กลับมา
การโต้ตอบหรือการสื่อสารระหว่างผู้เข้าถึงข้อมูลจะทำผ่านที่เก็บข้อมูลเท่านั้น ข้อมูลเป็นช่องทางเดียวในการสื่อสารระหว่างลูกค้า ขั้นตอนการควบคุมทำให้สถาปัตยกรรมแตกต่างออกเป็นสองประเภท -
- รูปแบบสถาปัตยกรรมพื้นที่เก็บข้อมูล
- สไตล์สถาปัตยกรรมกระดานดำ
รูปแบบสถาปัตยกรรมพื้นที่เก็บข้อมูล
ใน Repository Architecture Style ที่เก็บข้อมูลเป็นแบบพาสซีฟและไคลเอนต์ (ส่วนประกอบซอฟต์แวร์หรือเอเจนต์) ของที่เก็บข้อมูลแอ็คทีฟซึ่งควบคุมโฟลว์ตรรกะ ส่วนประกอบที่เข้าร่วมจะตรวจสอบที่เก็บข้อมูลเพื่อดูการเปลี่ยนแปลง
ไคลเอนต์ส่งคำร้องขอไปยังระบบเพื่อดำเนินการต่างๆ (เช่นแทรกข้อมูล)
กระบวนการคำนวณเป็นอิสระและถูกเรียกโดยการร้องขอที่เข้ามา
หากชนิดของธุรกรรมในสตรีมอินพุตของธุรกรรมทริกเกอร์การเลือกกระบวนการที่จะดำเนินการแสดงว่าเป็นฐานข้อมูลแบบดั้งเดิมหรือสถาปัตยกรรมที่เก็บหรือที่เก็บแบบพาสซีฟ
แนวทางนี้ใช้กันอย่างแพร่หลายใน DBMS, ระบบข้อมูลไลบรารี, ที่เก็บอินเทอร์เฟซในสภาพแวดล้อม CORBA, คอมไพเลอร์และ CASE (วิศวกรรมซอฟต์แวร์โดยใช้คอมพิวเตอร์ช่วย)
ข้อดี
ให้คุณสมบัติความสมบูรณ์ของข้อมูลสำรองและกู้คืน
ให้ความสามารถในการปรับขนาดและการนำกลับมาใช้ใหม่ของเอเจนต์เนื่องจากไม่มีการสื่อสารโดยตรงระหว่างกัน
ลดค่าใช้จ่ายของข้อมูลชั่วคราวระหว่างส่วนประกอบซอฟต์แวร์
ข้อเสีย
มีความเสี่ยงที่จะเกิดความล้มเหลวและการจำลองข้อมูลหรือการทำซ้ำเป็นไปได้
การพึ่งพาระหว่างโครงสร้างข้อมูลของที่เก็บข้อมูลและเอเจนต์สูง
การเปลี่ยนแปลงโครงสร้างข้อมูลส่งผลกระทบต่อลูกค้าอย่างมาก
วิวัฒนาการของข้อมูลเป็นเรื่องยากและมีราคาแพง
ค่าใช้จ่ายในการย้ายข้อมูลบนเครือข่ายสำหรับข้อมูลแบบกระจาย
สไตล์สถาปัตยกรรมกระดานดำ
ในรูปแบบสถาปัตยกรรมกระดานดำพื้นที่เก็บข้อมูลจะทำงานอยู่และลูกค้าจะอยู่เฉยๆ ดังนั้นโฟลว์ตรรกะจึงถูกกำหนดโดยสถานะข้อมูลปัจจุบันในที่เก็บข้อมูล มันมีส่วนประกอบกระดานดำทำหน้าที่เป็นที่เก็บข้อมูลส่วนกลางและการแสดงภายในถูกสร้างขึ้นและดำเนินการโดยองค์ประกอบการคำนวณที่แตกต่างกัน
ส่วนประกอบจำนวนหนึ่งที่ทำหน้าที่อย่างอิสระบนโครงสร้างข้อมูลทั่วไปจะถูกเก็บไว้ในกระดานดำ
ในรูปแบบนี้ส่วนประกอบจะโต้ตอบผ่านกระดานดำเท่านั้น ที่เก็บข้อมูลจะแจ้งเตือนลูกค้าเมื่อใดก็ตามที่มีการเปลี่ยนแปลงที่เก็บข้อมูล
สถานะปัจจุบันของโซลูชันจะถูกเก็บไว้ในกระดานดำและการประมวลผลจะถูกเรียกใช้โดยสถานะของกระดานดำ
ระบบจะส่งการแจ้งเตือนที่เรียกว่า trigger และข้อมูลให้กับลูกค้าเมื่อเกิดการเปลี่ยนแปลงในข้อมูล
แนวทางนี้พบได้ในแอปพลิเคชัน AI และแอพพลิเคชั่นที่ซับซ้อนเช่นการรู้จำเสียงการจดจำภาพระบบรักษาความปลอดภัยและระบบการจัดการทรัพยากรทางธุรกิจเป็นต้น
หากสถานะปัจจุบันของโครงสร้างข้อมูลกลางเป็นทริกเกอร์หลักในการเลือกกระบวนการที่จะดำเนินการที่เก็บอาจเป็นกระดานดำและแหล่งข้อมูลที่แบ่งใช้นี้เป็นเอเจนต์ที่ใช้งานอยู่
ความแตกต่างที่สำคัญกับระบบฐานข้อมูลแบบเดิมคือการเรียกใช้องค์ประกอบการคำนวณในสถาปัตยกรรมกระดานดำจะถูกทริกเกอร์โดยสถานะปัจจุบันของกระดานดำไม่ใช่จากอินพุตภายนอก
ชิ้นส่วนของโมเดลกระดานดำ
แบบจำลองกระดานดำมักจะนำเสนอด้วยสามส่วนหลัก -
Knowledge Sources (KS)
แหล่งความรู้หรือที่เรียกว่า Listeners หรือ Subscribersเป็นหน่วยที่แตกต่างและเป็นอิสระ พวกเขาแก้ปัญหาบางส่วนและรวบรวมผลลัพธ์บางส่วน การโต้ตอบระหว่างแหล่งความรู้เกิดขึ้นโดยไม่ซ้ำกันผ่านกระดานดำ
Blackboard Data Structure
ข้อมูลสถานะการแก้ปัญหาจะจัดเป็นลำดับชั้นขึ้นอยู่กับแอปพลิเคชัน แหล่งความรู้ทำการเปลี่ยนแปลงบนกระดานดำที่นำไปสู่วิธีการแก้ปัญหาที่เพิ่มขึ้น
Control
ควบคุมจัดการงานและตรวจสอบสถานะการทำงาน
ข้อดี
ให้ความสามารถในการปรับขนาดซึ่งทำให้ง่ายต่อการเพิ่มหรืออัปเดตแหล่งความรู้
จัดเตรียมการทำงานพร้อมกันที่ช่วยให้แหล่งความรู้ทั้งหมดทำงานควบคู่กันได้เนื่องจากเป็นอิสระจากกัน
รองรับการทดลองสำหรับสมมติฐาน
รองรับการใช้ซ้ำของตัวแทนแหล่งความรู้
ข้อเสีย
การเปลี่ยนแปลงโครงสร้างของกระดานดำอาจส่งผลกระทบอย่างมีนัยสำคัญต่อตัวแทนทั้งหมดเนื่องจากมีการพึ่งพาอย่างใกล้ชิดระหว่างกระดานดำและแหล่งความรู้
อาจเป็นเรื่องยากที่จะตัดสินใจว่าจะยุติการให้เหตุผลเมื่อใดเนื่องจากคาดว่าจะมีเพียงวิธีแก้ปัญหาโดยประมาณเท่านั้น
ปัญหาในการซิงโครไนซ์ของหลายตัวแทน
ความท้าทายที่สำคัญในการออกแบบและทดสอบระบบ
สถาปัตยกรรมแบบลำดับชั้นมองทั้งระบบเป็นโครงสร้างลำดับชั้นซึ่งระบบซอฟต์แวร์จะถูกย่อยสลายเป็นโมดูลลอจิคัลหรือระบบย่อยในระดับต่างๆในลำดับชั้น โดยทั่วไปแนวทางนี้จะใช้ในการออกแบบซอฟต์แวร์ระบบเช่นโปรโตคอลเครือข่ายและระบบปฏิบัติการ
ในการออกแบบลำดับชั้นของซอฟต์แวร์ระบบระบบย่อยระดับต่ำจะให้บริการกับระบบย่อยระดับบนที่อยู่ติดกันซึ่งเรียกใช้วิธีการในระดับล่าง ชั้นล่างมีฟังก์ชันการทำงานที่เฉพาะเจาะจงมากขึ้นเช่นบริการ I / O ธุรกรรมการตั้งเวลาบริการรักษาความปลอดภัยเป็นต้นชั้นกลางมีฟังก์ชันที่ขึ้นกับโดเมนมากขึ้นเช่นตรรกะทางธุรกิจและบริการประมวลผลหลัก และชั้นบนมีฟังก์ชันการทำงานที่เป็นนามธรรมมากขึ้นในรูปแบบของอินเทอร์เฟซผู้ใช้เช่น GUI สิ่งอำนวยความสะดวกการเขียนโปรแกรมเชลล์เป็นต้น
นอกจากนี้ยังใช้ในการจัดระเบียบไลบรารีคลาสเช่นไลบรารีคลาส. NET ในลำดับชั้นเนมสเปซ การออกแบบทุกประเภทสามารถใช้สถาปัตยกรรมลำดับชั้นนี้และมักจะรวมกับรูปแบบสถาปัตยกรรมอื่น ๆ
รูปแบบสถาปัตยกรรมตามลำดับชั้นแบ่งออกเป็น -
- Main-subroutine
- Master-slave
- เครื่องเสมือน
รูทีนย่อยหลัก
จุดมุ่งหมายของสไตล์นี้คือการนำโมดูลกลับมาใช้ใหม่และพัฒนาโมดูลหรือรูทีนย่อยแต่ละโมดูลอย่างอิสระ ในลักษณะนี้ระบบซอฟต์แวร์จะแบ่งออกเป็นรูทีนย่อยโดยใช้การปรับแต่งจากบนลงล่างตามฟังก์ชันการทำงานที่ต้องการของระบบ
การปรับแต่งเหล่านี้นำไปสู่แนวตั้งจนกว่าโมดูลที่ย่อยสลายจะง่ายพอที่จะมีความรับผิดชอบที่เป็นอิสระ แต่เพียงผู้เดียว ฟังก์ชันการทำงานอาจถูกใช้ซ้ำและใช้ร่วมกันโดยผู้โทรหลายคนในชั้นบน
มีสองวิธีในการส่งผ่านข้อมูลเป็นพารามิเตอร์ไปยังรูทีนย่อย ได้แก่ -
Pass by Value - รูทีนย่อยใช้เฉพาะข้อมูลในอดีต แต่ไม่สามารถแก้ไขได้
Pass by Reference - รูทีนย่อยใช้เช่นเดียวกับการเปลี่ยนแปลงค่าของข้อมูลที่อ้างอิงโดยพารามิเตอร์
ข้อดี
ง่ายต่อการย่อยสลายระบบตามการปรับแต่งลำดับชั้น
สามารถใช้ในระบบย่อยของการออกแบบเชิงวัตถุ
ข้อเสีย
มีช่องโหว่เนื่องจากมีข้อมูลที่แชร์ทั่วโลก
การมีเพศสัมพันธ์อย่างแน่นหนาอาจทำให้เกิดการกระเพื่อมของการเปลี่ยนแปลงมากขึ้น
มาสเตอร์ - ทาส
แนวทางนี้ใช้หลักการ 'แบ่งและพิชิต' และสนับสนุนการคำนวณผิดพลาดและความแม่นยำในการคำนวณ เป็นการปรับเปลี่ยนสถาปัตยกรรมรูทีนย่อยหลักที่ให้ความน่าเชื่อถือของระบบและความทนทานต่อข้อผิดพลาด
ในสถาปัตยกรรมนี้ทาสจะให้บริการที่ซ้ำกันกับมาสเตอร์และมาสเตอร์จะเลือกผลลัพธ์ที่เฉพาะเจาะจงในหมู่ทาสด้วยกลยุทธ์การเลือกบางอย่าง ทาสอาจทำภารกิจการทำงานเดียวกันโดยใช้อัลกอริทึมและวิธีการที่แตกต่างกันหรือฟังก์ชันการทำงานที่แตกต่างกันโดยสิ้นเชิง รวมถึงการประมวลผลแบบขนานซึ่งทาสทั้งหมดสามารถทำงานแบบขนานได้
การใช้รูปแบบ Master-Slave เป็นไปตามห้าขั้นตอน -
ระบุวิธีการคำนวณของงานที่สามารถแบ่งออกเป็นชุดของงานย่อยที่เท่ากันและระบุบริการย่อยที่จำเป็นในการประมวลผลงานย่อย
ระบุวิธีการคำนวณผลลัพธ์สุดท้ายของบริการทั้งหมดด้วยความช่วยเหลือของผลลัพธ์ที่ได้รับจากการประมวลผลงานย่อยแต่ละงาน
กำหนดอินเทอร์เฟซสำหรับบริการย่อยที่ระบุในขั้นตอนที่ 1 ซึ่งจะถูกนำไปใช้งานโดย Slave และใช้โดย Master เพื่อมอบหมายการประมวลผลของงานย่อยแต่ละงาน
ใช้ส่วนประกอบ Slave ตามข้อกำหนดที่พัฒนาในขั้นตอนก่อนหน้า
ใช้งานต้นแบบตามข้อกำหนดที่พัฒนาในขั้นตอนที่ 1 ถึง 3
การใช้งาน
เหมาะสำหรับการใช้งานที่ความน่าเชื่อถือของซอฟต์แวร์เป็นปัญหาสำคัญ
ใช้กันอย่างแพร่หลายในด้านการคำนวณแบบขนานและแบบกระจาย
ข้อดี
คำนวณได้เร็วขึ้นและปรับขนาดได้ง่าย
ให้ความแข็งแกร่งเนื่องจากทาสสามารถทำซ้ำได้
Slave สามารถใช้งานได้แตกต่างกันเพื่อลดข้อผิดพลาดทางความหมาย
ข้อเสีย
ค่าใช้จ่ายในการสื่อสาร
ปัญหาทั้งหมดไม่สามารถแบ่งออกได้
ใช้งานยากและปัญหาการพกพา
สถาปัตยกรรมเครื่องเสมือน
สถาปัตยกรรมเครื่องเสมือนจะแสร้งทำเป็นฟังก์ชันการทำงานบางอย่างซึ่งไม่ได้มาจากฮาร์ดแวร์และ / หรือซอฟต์แวร์ที่ใช้งาน เครื่องเสมือนถูกสร้างขึ้นจากระบบที่มีอยู่และจัดเตรียมสิ่งที่เป็นนามธรรมเสมือนชุดของคุณลักษณะและการดำเนินการ
ในสถาปัตยกรรมเครื่องเสมือนต้นแบบใช้ 'บริการย่อย' เดียวกันจากทาสและทำหน้าที่ต่างๆเช่นแยกงานเรียกทาสและรวมผลลัพธ์ ช่วยให้นักพัฒนาสามารถจำลองและทดสอบแพลตฟอร์มที่ยังไม่ได้สร้างขึ้นและจำลองโหมด "ภัยพิบัติ" ที่ซับซ้อนเกินไปมีค่าใช้จ่ายสูงหรือเป็นอันตรายต่อการทดสอบกับระบบจริง
ในกรณีส่วนใหญ่เครื่องเสมือนจะแยกภาษาโปรแกรมหรือสภาพแวดล้อมของแอปพลิเคชันออกจากแพลตฟอร์มการดำเนินการ วัตถุประสงค์หลักคือการให้portability. การตีความโมดูลเฉพาะผ่านเครื่องเสมือนอาจถูกมองว่า -
เอ็นจินการตีความจะเลือกคำสั่งจากโมดูลที่กำลังตีความ
ตามคำสั่งเครื่องยนต์จะอัปเดตสถานะภายในของเครื่องเสมือนและกระบวนการข้างต้นจะทำซ้ำ
รูปต่อไปนี้แสดงสถาปัตยกรรมของโครงสร้างพื้นฐาน VM มาตรฐานบนเครื่องจริงเครื่องเดียว
hypervisor, เรียกอีกอย่างว่า virtual machine monitorรันบนโฮสต์ OS และจัดสรรทรัพยากรที่ตรงกันให้กับระบบปฏิบัติการของแขกแต่ละคน เมื่อแขกทำการโทรระบบไฮเปอร์ไวเซอร์จะสกัดกั้นและแปลเป็นการเรียกระบบที่สอดคล้องกันที่โฮสต์ OS สนับสนุน ไฮเปอร์ไวเซอร์ควบคุมการเข้าถึงเครื่องเสมือนแต่ละเครื่องไปยัง CPU หน่วยความจำหน่วยเก็บข้อมูลถาวรอุปกรณ์ I / O และเครือข่าย
การใช้งาน
สถาปัตยกรรมเครื่องเสมือนเหมาะในโดเมนต่อไปนี้ -
เหมาะสำหรับการแก้ปัญหาโดยการจำลองหรือการแปลหากไม่มีวิธีแก้ปัญหาโดยตรง
แอปพลิเคชันตัวอย่าง ได้แก่ ล่ามของไมโครโปรแกรมการประมวลผล XML การเรียกใช้ภาษาคำสั่งสคริปต์การเรียกใช้ระบบตามกฎ Smalltalk และ Java ล่ามภาษาการเขียนโปรแกรมที่พิมพ์
ตัวอย่างทั่วไปของเครื่องเสมือน ได้แก่ ตัวแปลภาษาระบบอิงกฎไวยากรณ์เชลล์และตัวประมวลผลภาษาคำสั่ง
ข้อดี
ความเป็นอิสระในการพกพาและแพลตฟอร์มเครื่องจักร
ความเรียบง่ายของการพัฒนาซอฟต์แวร์
ให้ความยืดหยุ่นผ่านความสามารถในการขัดจังหวะและสอบถามโปรแกรม
การจำลองแบบจำลองการทำงานในภัยพิบัติ
แนะนำการปรับเปลี่ยนที่รันไทม์
ข้อเสีย
การดำเนินการของล่ามช้าเนื่องจากลักษณะของล่าม
มีต้นทุนประสิทธิภาพเนื่องจากการคำนวณเพิ่มเติมที่เกี่ยวข้องกับการดำเนินการ
สไตล์ชั้น
ด้วยวิธีนี้ระบบจะถูกย่อยสลายเป็นชั้นที่สูงขึ้นและต่ำลงตามลำดับชั้นและแต่ละชั้นมีหน้าที่รับผิดชอบของตัวเอง แต่เพียงผู้เดียวในระบบ
แต่ละเลเยอร์ประกอบด้วยกลุ่มของคลาสที่เกี่ยวข้องซึ่งถูกห่อหุ้มในแพ็กเกจในคอมโพเนนต์ที่ปรับใช้หรือเป็นกลุ่มของรูทีนย่อยในรูปแบบของไลบรารีเมธอดหรือไฟล์ส่วนหัว
แต่ละเลเยอร์จะให้บริการแก่เลเยอร์ที่อยู่ด้านบนและทำหน้าที่เป็นไคลเอนต์ไปยังเลเยอร์ด้านล่างเช่นการร้องขอเลเยอร์ i +1 จะเรียกใช้บริการที่เลเยอร์ i จัดเตรียมไว้ผ่านทางอินเทอร์เฟซของเลเยอร์ i คำตอบอาจกลับไปที่เลเยอร์ i +1 หากงานเสร็จสมบูรณ์ มิฉะนั้นเลเยอร์ฉันจะเรียกใช้บริการจากเลเยอร์ i -1 ด้านล่างอย่างต่อเนื่อง
การใช้งาน
สไตล์ชั้นเหมาะสำหรับพื้นที่ต่อไปนี้ -
แอปพลิเคชันที่เกี่ยวข้องกับคลาสของบริการที่แตกต่างกันซึ่งสามารถจัดระเบียบตามลำดับชั้น
แอปพลิเคชันใด ๆ ที่สามารถแยกย่อยออกเป็นส่วนเฉพาะแอปพลิเคชันและเฉพาะแพลตฟอร์ม
แอปพลิเคชันที่มีการแบ่งส่วนที่ชัดเจนระหว่างบริการหลักบริการสำคัญและบริการอินเทอร์เฟซผู้ใช้ ฯลฯ
ข้อดี
การออกแบบตามระดับที่เพิ่มขึ้นของนามธรรม
ให้ความเป็นอิสระในการเพิ่มประสิทธิภาพเนื่องจากการเปลี่ยนแปลงฟังก์ชันของเลเยอร์หนึ่งจะส่งผลต่อเลเยอร์อื่น ๆ มากที่สุดสองเลเยอร์
การแยกอินเทอร์เฟซมาตรฐานและการใช้งาน
ดำเนินการโดยใช้เทคโนโลยีส่วนประกอบซึ่งทำให้ระบบอนุญาตให้ใช้ส่วนประกอบใหม่แบบพลักแอนด์เพลย์ได้ง่ายขึ้น
แต่ละเลเยอร์สามารถเป็นเครื่องจักรนามธรรมที่ปรับใช้อย่างอิสระซึ่งรองรับการพกพา
ง่ายต่อการย่อยสลายระบบตามคำจำกัดความของงานในลักษณะการปรับแต่งจากบนลงล่าง
การใช้งานที่แตกต่างกัน (ที่มีอินเทอร์เฟซเหมือนกัน) ของเลเยอร์เดียวกันสามารถใช้แทนกันได้
ข้อเสีย
แอปพลิเคชันหรือระบบจำนวนมากไม่ได้มีโครงสร้างเป็นชั้น ๆ อย่างง่ายดาย
ประสิทธิภาพของรันไทม์ลดลงเนื่องจากคำขอของไคลเอ็นต์หรือการตอบกลับไปยังไคลเอนต์ต้องผ่านหลายชั้น
นอกจากนี้ยังมีข้อกังวลด้านประสิทธิภาพเกี่ยวกับค่าใช้จ่ายในการจัดเก็บข้อมูลและการบัฟเฟอร์ในแต่ละเลเยอร์
การเปิดการสื่อสารระหว่างชั้นอาจทำให้เกิดการหยุดชะงักและ "การเชื่อมต่อ" อาจทำให้เกิดการเชื่อมต่อที่แน่นหนา
ข้อยกเว้นและการจัดการข้อผิดพลาดเป็นปัญหาในสถาปัตยกรรมแบบเลเยอร์เนื่องจากข้อบกพร่องในเลเยอร์เดียวจะต้องกระจายขึ้นไปยังเลเยอร์การเรียกทั้งหมด
วัตถุประสงค์หลักของสถาปัตยกรรมที่เน้นการโต้ตอบคือการแยกปฏิสัมพันธ์ของผู้ใช้ออกจากข้อมูลที่เป็นนามธรรมและการประมวลผลข้อมูลทางธุรกิจ สถาปัตยกรรมซอฟต์แวร์ที่เน้นการโต้ตอบจะแยกย่อยระบบออกเป็นสามพาร์ติชันหลัก -
Data module - โมดูลข้อมูลให้ข้อมูลที่เป็นนามธรรมและตรรกะทางธุรกิจทั้งหมด
Control module - โมดูลควบคุมระบุขั้นตอนของการควบคุมและการดำเนินการกำหนดค่าระบบ
View presentation module - โมดูลการนำเสนอมุมมองมีหน้าที่ในการนำเสนอภาพหรือเสียงของเอาต์พุตข้อมูลและยังมีอินเทอร์เฟซสำหรับการป้อนข้อมูลของผู้ใช้
สถาปัตยกรรมที่เน้นปฏิสัมพันธ์มีสองรูปแบบใหญ่ ๆ - Model-View-Controller (MVC) และ Presentation-Abstraction-Control(PAC). ทั้ง MVC และ PAC เสนอการสลายองค์ประกอบสามส่วนและใช้สำหรับแอปพลิเคชันแบบโต้ตอบเช่นเว็บแอปพลิเคชันที่มีการพูดคุยหลายครั้งและการโต้ตอบกับผู้ใช้ พวกเขามีความแตกต่างกันในขั้นตอนการควบคุมและองค์กร PAC เป็นสถาปัตยกรรมลำดับชั้นแบบเอเจนต์ แต่ MVC ไม่มีโครงสร้างลำดับชั้นที่ชัดเจน
รุ่นดูคอนโทรลเลอร์ (MVC)
MVC แยกแอปพลิเคชันซอฟต์แวร์ที่กำหนดออกเป็นสามส่วนที่เชื่อมต่อกันซึ่งช่วยในการแยกการนำเสนอข้อมูลภายในออกจากข้อมูลที่นำเสนอหรือยอมรับจากผู้ใช้
โมดูล | ฟังก์ชัน |
---|---|
รุ่น | การห่อหุ้มข้อมูลพื้นฐานและตรรกะทางธุรกิจ |
ตัวควบคุม | ตอบสนองต่อการกระทำของผู้ใช้และกำหนดทิศทางการไหลของแอปพลิเคชัน |
ดู | จัดรูปแบบและนำเสนอข้อมูลจากแบบจำลองไปยังผู้ใช้ |
รุ่น
Model เป็นส่วนประกอบหลักของ MVC ที่จัดการข้อมูลตรรกะและข้อ จำกัด ของแอปพลิเคชันโดยตรง ประกอบด้วยส่วนประกอบข้อมูลซึ่งรักษาข้อมูลดิบของแอปพลิเคชันและตรรกะของแอปพลิเคชันสำหรับอินเทอร์เฟซ
เป็นอินเทอร์เฟซผู้ใช้ที่เป็นอิสระและจับพฤติกรรมของโดเมนปัญหาแอปพลิเคชัน
เป็นการจำลองซอฟต์แวร์เฉพาะโดเมนหรือการใช้โครงสร้างกลางของแอปพลิเคชัน
เมื่อมีการเปลี่ยนแปลงสถานะจะแจ้งเตือนไปยังมุมมองที่เกี่ยวข้องเพื่อสร้างเอาต์พุตที่อัปเดตและคอนโทรลเลอร์ให้เปลี่ยนชุดคำสั่งที่มีอยู่
ดู
มุมมองสามารถใช้เพื่อแสดงผลลัพธ์ของข้อมูลในรูปแบบกราฟิกเช่นแผนภาพหรือแผนภูมิ ประกอบด้วยส่วนประกอบการนำเสนอที่ให้การแสดงข้อมูลด้วยภาพ
ดูข้อมูลร้องขอจากโมเดลของพวกเขาและสร้างการแสดงผลลัพธ์ให้กับผู้ใช้
สามารถดูข้อมูลเดียวกันได้หลายมุมมองเช่นแผนภูมิแท่งสำหรับการจัดการและมุมมองตารางสำหรับนักบัญชี
ตัวควบคุม
คอนโทรลเลอร์ยอมรับอินพุตและแปลงเป็นคำสั่งสำหรับโมเดลหรือมุมมอง ประกอบด้วยส่วนประกอบการประมวลผลอินพุตซึ่งจัดการอินพุตจากผู้ใช้โดยการปรับเปลี่ยนโมเดล
ทำหน้าที่เป็นอินเทอร์เฟซระหว่างโมเดลและมุมมองที่เกี่ยวข้องและอุปกรณ์อินพุต
สามารถส่งคำสั่งไปยังโมเดลเพื่ออัปเดตสถานะของโมเดลและไปยังมุมมองที่เกี่ยวข้องเพื่อเปลี่ยนมุมมองการนำเสนอของโมเดล
MVC - ฉัน
เป็นสถาปัตยกรรม MVC เวอร์ชันที่เรียบง่ายซึ่งระบบแบ่งออกเป็นสองระบบย่อย -
The Controller-View - มุมมองตัวควบคุมทำหน้าที่เป็นอินเทอร์เฟซอินพุต / เอาต์พุตและการประมวลผลเสร็จสิ้น
The Model - โมเดลให้บริการข้อมูลและโดเมนทั้งหมด
MVC-I Architecture
โมดูลโมเดลจะแจ้งให้โมดูลมุมมองคอนโทรลเลอร์ทราบถึงการเปลี่ยนแปลงข้อมูลใด ๆ เพื่อให้การแสดงข้อมูลกราฟิกใด ๆ เปลี่ยนไปตามนั้น ผู้ควบคุมยังดำเนินการตามความเหมาะสมกับการเปลี่ยนแปลง
การเชื่อมต่อระหว่างคอนโทรลเลอร์ - มุมมองและโมเดลสามารถออกแบบในรูปแบบ (ดังแสดงในภาพด้านบน) ของการแจ้งเตือนการสมัครสมาชิกโดยที่มุมมองคอนโทรลเลอร์สมัครใช้โมเดลและโมเดลจะแจ้งให้คอนโทรลเลอร์ - มุมมองการเปลี่ยนแปลงใด ๆ
MVC - II
MVC – II เป็นการปรับปรุงสถาปัตยกรรม MVC-I ซึ่งโมดูลมุมมองและโมดูลควบคุมแยกจากกัน โมดูลโมเดลมีบทบาทในการทำงานเช่นเดียวกับ MVC-I โดยจัดเตรียมฟังก์ชันหลักและข้อมูลทั้งหมดที่ฐานข้อมูลสนับสนุน
โมดูลมุมมองจะแสดงข้อมูลในขณะที่โมดูลคอนโทรลเลอร์ยอมรับคำขออินพุตตรวจสอบความถูกต้องของข้อมูลอินพุตเริ่มโมเดลมุมมองการเชื่อมต่อและจัดส่งงาน
MVC-II Architecture
แอปพลิเคชั่น MVC
แอปพลิเคชัน MVC มีประสิทธิภาพสำหรับแอปพลิเคชันแบบโต้ตอบซึ่งจำเป็นต้องมีหลายมุมมองสำหรับโมเดลข้อมูลเดียวและง่ายต่อการเสียบมุมมองอินเทอร์เฟซใหม่หรือเปลี่ยน
แอปพลิเคชัน MVC เหมาะสำหรับแอปพลิเคชันที่มีการแบ่งส่วนที่ชัดเจนระหว่างโมดูลเพื่อให้ผู้เชี่ยวชาญที่แตกต่างกันสามารถมอบหมายให้ทำงานในแง่มุมต่างๆของแอปพลิเคชันดังกล่าวควบคู่กันไปได้
Advantages
มีชุดเครื่องมือเฟรมเวิร์กผู้ขาย MVC มากมาย
หลายมุมมองที่ซิงโครไนซ์กับโมเดลข้อมูลเดียวกัน
ง่ายต่อการเสียบใหม่หรือเปลี่ยนมุมมองอินเทอร์เฟซ
ใช้สำหรับการพัฒนาแอปพลิเคชันที่ผู้เชี่ยวชาญด้านกราฟิกผู้เชี่ยวชาญด้านการเขียนโปรแกรมและผู้เชี่ยวชาญด้านการพัฒนาฐานข้อมูลกำลังทำงานในทีมโครงการที่ออกแบบ
Disadvantages
ไม่เหมาะสำหรับแอปพลิเคชันที่มุ่งเน้นตัวแทนเช่นแอปพลิเคชันมือถือและหุ่นยนต์แบบโต้ตอบ
ตัวควบคุมและมุมมองหลายคู่ตามโมเดลข้อมูลเดียวกันทำให้โมเดลข้อมูลใด ๆ มีราคาแพง
การแบ่งระหว่าง View และ Controller ไม่ชัดเจนในบางกรณี
การนำเสนอ - นามธรรม - การควบคุม (PAC)
ใน PAC ระบบจะจัดเรียงเป็นลำดับชั้นของตัวแทนความร่วมมือจำนวนมาก (triads) ได้รับการพัฒนาจาก MVC เพื่อรองรับความต้องการใช้งานของตัวแทนหลายรายนอกเหนือจากข้อกำหนดแบบโต้ตอบ
ตัวแทนแต่ละคนมีสามองค์ประกอบ -
The presentation component - จัดรูปแบบการนำเสนอข้อมูลด้วยภาพและเสียง
The abstraction component - ดึงข้อมูลและประมวลผลข้อมูล
The control component - จัดการงานเช่นขั้นตอนการควบคุมและการสื่อสารระหว่างอีกสององค์ประกอบ
สถาปัตยกรรม PAC คล้ายกับ MVC ในแง่ที่โมดูลการนำเสนอเปรียบเสมือนโมดูลมุมมองของ MVC โมดูลนามธรรมดูเหมือนโมดูลโมเดลของ MVC และโมดูลควบคุมก็เหมือนกับโมดูลคอนโทรลเลอร์ของ MVC แต่แตกต่างกันในขั้นตอนการควบคุมและการจัดระเบียบ
ไม่มีการเชื่อมต่อโดยตรงระหว่างองค์ประกอบนามธรรมและองค์ประกอบการนำเสนอในแต่ละตัวแทน ส่วนประกอบการควบคุมในแต่ละตัวแทนทำหน้าที่สื่อสารกับตัวแทนอื่น ๆ
รูปต่อไปนี้แสดงแผนภาพบล็อกสำหรับเอเจนต์เดียวในการออกแบบ PAC
PAC กับตัวแทนหลายคน
ใน PAC ประกอบด้วยหลายตัวแทนเอเจนต์ระดับบนสุดจะจัดเตรียมข้อมูลหลักและโลจิสติกส์ทางธุรกิจ ตัวแทนระดับล่างสุดจะกำหนดข้อมูลและการนำเสนอโดยละเอียด ตัวแทนระดับกลางหรือระดับกลางทำหน้าที่เป็นผู้ประสานงานของตัวแทนระดับต่ำ
ตัวแทนแต่ละคนมีงานที่ได้รับมอบหมายเฉพาะของตนเอง
สำหรับตัวแทนระดับกลางบางคนไม่จำเป็นต้องใช้การนำเสนอแบบโต้ตอบดังนั้นจึงไม่มีองค์ประกอบการนำเสนอ
ส่วนประกอบการควบคุมจำเป็นสำหรับเอเจนต์ทั้งหมดซึ่งตัวแทนทั้งหมดสื่อสารกัน
รูปต่อไปนี้แสดงตัวแทนหลายตัวที่มีส่วนร่วมใน PAC
Applications
มีผลสำหรับระบบโต้ตอบที่ระบบสามารถแยกย่อยออกเป็นเอเจนต์ความร่วมมือจำนวนมากในลักษณะตามลำดับชั้น
มีผลเมื่อคาดว่าการมีเพศสัมพันธ์ระหว่างตัวแทนจะหลวมเพื่อให้การเปลี่ยนแปลงในตัวแทนไม่ส่งผลกระทบต่อผู้อื่น
มีประสิทธิภาพสำหรับระบบกระจายที่ตัวแทนทั้งหมดกระจายอยู่ห่าง ๆ และแต่ละคนมีฟังก์ชันการทำงานของตัวเองพร้อมข้อมูลและอินเทอร์เฟซแบบโต้ตอบ
เหมาะสำหรับแอปพลิเคชันที่มีส่วนประกอบ GUI มากมายซึ่งแต่ละส่วนจะเก็บข้อมูลปัจจุบันของตนเองและอินเทอร์เฟซแบบโต้ตอบและต้องการสื่อสารกับส่วนประกอบอื่น ๆ
ข้อดี
รองรับการทำงานหลายอย่างและหลายการดู
รองรับการใช้ซ้ำของตัวแทนและความสามารถในการขยาย
ง่ายต่อการเสียบตัวแทนใหม่หรือเปลี่ยนตัวแทนที่มีอยู่
รองรับการทำงานพร้อมกันโดยที่เอเจนต์หลายตัวทำงานพร้อมกันในเธรดที่แตกต่างกันหรืออุปกรณ์หรือคอมพิวเตอร์ที่แตกต่างกัน
ข้อเสีย
ค่าใช้จ่ายเนื่องจากสะพานควบคุมระหว่างการนำเสนอและนามธรรมและการสื่อสารของการควบคุมระหว่างตัวแทน
ยากที่จะระบุจำนวนตัวแทนที่ถูกต้องเนื่องจากการมีเพศสัมพันธ์หลวมและมีความเป็นอิสระสูงระหว่างตัวแทน
การแยกการนำเสนอและนามธรรมอย่างสมบูรณ์โดยการควบคุมในแต่ละตัวแทนทำให้เกิดความซับซ้อนในการพัฒนาเนื่องจากการสื่อสารระหว่างตัวแทนจะเกิดขึ้นระหว่างการควบคุมของตัวแทนเท่านั้น
ในสถาปัตยกรรมแบบกระจายส่วนประกอบจะถูกนำเสนอบนแพลตฟอร์มที่แตกต่างกันและส่วนประกอบต่างๆสามารถทำงานร่วมกันผ่านเครือข่ายการสื่อสารเพื่อให้บรรลุวัตถุประสงค์หรือเป้าหมายที่เฉพาะเจาะจง
ในสถาปัตยกรรมนี้การประมวลผลข้อมูลไม่ได้ จำกัด อยู่ที่เครื่องเดียว แต่จะกระจายไปยังคอมพิวเตอร์อิสระหลายเครื่อง
ระบบกระจายสามารถแสดงให้เห็นได้โดยสถาปัตยกรรมไคลเอนต์เซิร์ฟเวอร์ซึ่งเป็นฐานสำหรับสถาปัตยกรรมหลายชั้น ทางเลือกอื่นคือสถาปัตยกรรมนายหน้าเช่น CORBA และสถาปัตยกรรมเชิงบริการ (SOA)
มีเฟรมเวิร์กเทคโนโลยีหลายอย่างเพื่อสนับสนุนสถาปัตยกรรมแบบกระจาย ได้แก่ . NET, J2EE, CORBA, .NET Web services, AXIS Java Web services และ Globus Grid services
มิดเดิลแวร์เป็นโครงสร้างพื้นฐานที่รองรับการพัฒนาและการเรียกใช้แอปพลิเคชันแบบกระจายอย่างเหมาะสม มีบัฟเฟอร์ระหว่างแอปพลิเคชันและเครือข่าย
ตั้งอยู่ตรงกลางของระบบและจัดการหรือสนับสนุนส่วนประกอบต่างๆของระบบแบบกระจาย ตัวอย่าง ได้แก่ จอภาพการประมวลผลธุรกรรมตัวแปลงข้อมูลและตัวควบคุมการสื่อสารเป็นต้น
มิดเดิลแวร์เป็นโครงสร้างพื้นฐานสำหรับระบบกระจาย
พื้นฐานของสถาปัตยกรรมแบบกระจายคือความโปร่งใสความน่าเชื่อถือและความพร้อมใช้งาน
ตารางต่อไปนี้แสดงความโปร่งใสในรูปแบบต่างๆในระบบกระจาย -
ซีเนียร์ | ความโปร่งใสและคำอธิบาย |
---|---|
1 | Access ซ่อนวิธีการเข้าถึงทรัพยากรและความแตกต่างในแพลตฟอร์มข้อมูล |
2 | Location ซ่อนตำแหน่งของทรัพยากร |
3 | Technology ซ่อนเทคโนโลยีต่างๆเช่นภาษาโปรแกรมและระบบปฏิบัติการจากผู้ใช้ |
4 | Migration / Relocation ซ่อนทรัพยากรที่อาจถูกย้ายไปยังตำแหน่งอื่นที่ใช้งานอยู่ |
5 | Replication ซ่อนทรัพยากรที่อาจถูกคัดลอกในหลายตำแหน่ง |
6 | Concurrency ซ่อนทรัพยากรที่อาจแชร์กับผู้ใช้รายอื่น |
7 | Failure ซ่อนความล้มเหลวและการกู้คืนทรัพยากรจากผู้ใช้ |
8 | Persistence ซ่อนว่าทรัพยากร (ซอฟต์แวร์) อยู่ในหน่วยความจำหรือดิสก์ |
ข้อดี
Resource sharing - การแบ่งปันทรัพยากรฮาร์ดแวร์และซอฟต์แวร์
Openness - ความยืดหยุ่นในการใช้ฮาร์ดแวร์และซอฟต์แวร์ของผู้ขายที่แตกต่างกัน
Concurrency - การประมวลผลพร้อมกันเพื่อเพิ่มประสิทธิภาพ
Scalability - เพิ่มปริมาณงานโดยการเพิ่มทรัพยากรใหม่
Fault tolerance - ความสามารถในการทำงานต่อไปหลังจากเกิดข้อผิดพลาด
ข้อเสีย
Complexity - มีความซับซ้อนมากกว่าระบบรวมศูนย์
Security - ไวต่อการโจมตีจากภายนอกมากขึ้น
Manageability - ต้องใช้ความพยายามมากขึ้นในการจัดการระบบ
Unpredictability - การตอบสนองที่คาดเดาไม่ได้ขึ้นอยู่กับองค์กรของระบบและภาระของเครือข่าย
ระบบส่วนกลางเทียบกับระบบกระจาย
เกณฑ์ | ระบบรวมศูนย์ | ระบบกระจาย |
---|---|---|
เศรษฐศาสตร์ | ต่ำ | สูง |
ความพร้อมใช้งาน | ต่ำ | สูง |
ความซับซ้อน | ต่ำ | สูง |
ความสม่ำเสมอ | เรียบง่าย | สูง |
ความสามารถในการปรับขนาด | แย่ | ดี |
เทคโนโลยี | เป็นเนื้อเดียวกัน | ต่างกัน |
ความปลอดภัย | สูง | ต่ำ |
สถาปัตยกรรมไคลเอนต์เซิร์ฟเวอร์
สถาปัตยกรรมไคลเอนต์เซิร์ฟเวอร์เป็นสถาปัตยกรรมระบบแบบกระจายที่พบมากที่สุดซึ่งแยกย่อยระบบออกเป็นสองระบบย่อยหรือกระบวนการทางตรรกะที่สำคัญ -
Client - นี่เป็นกระบวนการแรกที่ส่งคำขอไปยังกระบวนการที่สองคือเซิร์ฟเวอร์
Server - นี่เป็นกระบวนการที่สองที่รับคำขอดำเนินการและส่งคำตอบกลับไปยังลูกค้า
ในสถาปัตยกรรมนี้แอ็พพลิเคชันถูกจำลองเป็นชุดของบริการที่จัดเตรียมโดยเซิร์ฟเวอร์และชุดของไคลเอ็นต์ที่ใช้บริการเหล่านี้ เซิร์ฟเวอร์ไม่จำเป็นต้องรู้เกี่ยวกับไคลเอนต์ แต่ไคลเอนต์ต้องทราบข้อมูลประจำตัวของเซิร์ฟเวอร์และการแมปโปรเซสเซอร์กับโปรเซสไม่จำเป็นต้องเป็น 1: 1
สถาปัตยกรรมไคลเอนต์เซิร์ฟเวอร์สามารถแบ่งออกเป็นสองรุ่นตามการทำงานของไคลเอนต์ -
รุ่น Thin-Client
ในรูปแบบไคลเอ็นต์แบบบางการประมวลผลแอปพลิเคชันและการจัดการข้อมูลทั้งหมดจะดำเนินการโดยเซิร์ฟเวอร์ ไคลเอนต์มีหน้าที่เพียงแค่เรียกใช้ซอฟต์แวร์การนำเสนอ
ใช้เมื่อระบบเดิมถูกโอนย้ายไปยังสถาปัตยกรรมเซิร์ฟเวอร์ไคลเอนต์ซึ่งระบบเดิมทำหน้าที่เป็นเซิร์ฟเวอร์ในสิทธิ์ของตนเองโดยมีอินเทอร์เฟซแบบกราฟิกที่ใช้กับไคลเอนต์
ข้อเสียที่สำคัญคือทำให้เกิดภาระการประมวลผลที่หนักหน่วงทั้งบนเซิร์ฟเวอร์และเครือข่าย
รุ่นลูกค้าหนา / อ้วน
ในรุ่นไคลเอนต์แบบหนาเซิร์ฟเวอร์มีหน้าที่จัดการข้อมูลเท่านั้น ซอฟต์แวร์บนไคลเอ็นต์ใช้ตรรกะของแอปพลิเคชันและการโต้ตอบกับผู้ใช้ระบบ
เหมาะสมที่สุดสำหรับระบบ C / S ใหม่ที่ทราบความสามารถของระบบไคลเอนต์ล่วงหน้า
ซับซ้อนกว่าแบบจำลองไคลเอ็นต์แบบบางโดยเฉพาะสำหรับการจัดการ ต้องติดตั้งแอปพลิเคชันเวอร์ชันใหม่บนไคลเอนต์ทั้งหมด
ข้อดี
การแยกความรับผิดชอบเช่นการนำเสนอส่วนติดต่อผู้ใช้และการประมวลผลตรรกะทางธุรกิจ
ความสามารถในการใช้ซ้ำของส่วนประกอบเซิร์ฟเวอร์และศักยภาพในการทำงานพร้อมกัน
ลดความยุ่งยากในการออกแบบและการพัฒนาแอปพลิเคชันแบบกระจาย
ทำให้ง่ายต่อการโยกย้ายหรือรวมแอปพลิเคชันที่มีอยู่เข้ากับสภาพแวดล้อมแบบกระจาย
นอกจากนี้ยังใช้ทรัพยากรอย่างมีประสิทธิภาพเมื่อลูกค้าจำนวนมากเข้าถึงเซิร์ฟเวอร์ที่มีประสิทธิภาพสูง
ข้อเสีย
ขาดโครงสร้างพื้นฐานที่แตกต่างกันเพื่อรับมือกับการเปลี่ยนแปลงข้อกำหนด
ภาวะแทรกซ้อนด้านความปลอดภัย
ความพร้อมใช้งานของเซิร์ฟเวอร์ที่ จำกัด และความน่าเชื่อถือ
ความสามารถในการทดสอบและความยืดหยุ่นที่ จำกัด
ลูกค้าอ้วนด้วยการนำเสนอและตรรกะทางธุรกิจร่วมกัน
สถาปัตยกรรมหลายชั้น (สถาปัตยกรรม n-tier)
สถาปัตยกรรมหลายชั้นเป็นสถาปัตยกรรมไคลเอนต์ - เซิร์ฟเวอร์ซึ่งฟังก์ชันต่างๆเช่นการนำเสนอการประมวลผลแอปพลิเคชันและการจัดการข้อมูลจะแยกออกจากกัน เมื่อแยกแอปพลิเคชันออกเป็นระดับผู้พัฒนาจะมีตัวเลือกในการเปลี่ยนหรือเพิ่มเลเยอร์เฉพาะแทนที่จะทำซ้ำแอปพลิเคชันทั้งหมด เป็นแบบจำลองที่นักพัฒนาสามารถสร้างแอปพลิเคชันที่ยืดหยุ่นและใช้ซ้ำได้
การใช้สถาปัตยกรรมหลายชั้นโดยทั่วไปมากที่สุดคือสถาปัตยกรรมสามชั้น โดยทั่วไปสถาปัตยกรรมสามชั้นประกอบด้วยระดับการนำเสนอระดับแอปพลิเคชันและระดับการจัดเก็บข้อมูลและอาจดำเนินการบนโปรเซสเซอร์แยกต่างหาก
ระดับการนำเสนอ
เลเยอร์การนำเสนอเป็นระดับบนสุดของแอปพลิเคชันที่ผู้ใช้สามารถเข้าถึงได้โดยตรงเช่นเว็บเพจหรือระบบปฏิบัติการ GUI (อินเทอร์เฟซผู้ใช้แบบกราฟิก) หน้าที่หลักของเลเยอร์นี้คือการแปลงานและผลลัพธ์เป็นสิ่งที่ผู้ใช้สามารถเข้าใจได้ มันสื่อสารกับระดับอื่น ๆ เพื่อให้ผลลัพธ์ไปยังระดับเบราว์เซอร์ / ไคลเอนต์และระดับอื่น ๆ ทั้งหมดในเครือข่าย
ระดับแอปพลิเคชัน (Business Logic, Logic Tier หรือ Middle Tier)
ระดับแอปพลิเคชันจะประสานแอปพลิเคชันประมวลผลคำสั่งตัดสินใจเชิงตรรกะประเมินผลและทำการคำนวณ ควบคุมการทำงานของแอปพลิเคชันโดยดำเนินการประมวลผลโดยละเอียด นอกจากนี้ยังย้ายและประมวลผลข้อมูลระหว่างสองชั้นโดยรอบ
ชั้นข้อมูล
ในเลเยอร์นี้ข้อมูลจะถูกจัดเก็บและเรียกใช้จากฐานข้อมูลหรือระบบไฟล์ จากนั้นข้อมูลจะถูกส่งกลับเพื่อประมวลผลและกลับไปยังผู้ใช้ ประกอบด้วยกลไกการคงอยู่ของข้อมูล (เซิร์ฟเวอร์ฐานข้อมูลการแชร์ไฟล์ ฯลฯ ) และจัดเตรียม API (Application Programming Interface) ให้กับระดับแอปพลิเคชันซึ่งมีวิธีการจัดการข้อมูลที่จัดเก็บไว้
Advantages
ประสิทธิภาพที่ดีกว่าวิธีการสำหรับลูกค้ารายย่อยและง่ายกว่าในการจัดการมากกว่าแนวทางลูกค้ารายใหญ่
ช่วยเพิ่มความสามารถในการนำกลับมาใช้ใหม่และความสามารถในการปรับขนาด - เมื่อความต้องการเพิ่มขึ้นสามารถเพิ่มเซิร์ฟเวอร์เพิ่มเติมได้
ให้การสนับสนุนมัลติเธรดและยังช่วยลดปริมาณการใช้งานเครือข่าย
ให้การบำรุงรักษาและความยืดหยุ่น
Disadvantages
ความสามารถในการทดสอบที่ไม่น่าพอใจเนื่องจากไม่มีเครื่องมือทดสอบ
ความน่าเชื่อถือและความพร้อมใช้งานของเซิร์ฟเวอร์ที่สำคัญยิ่งขึ้น
รูปแบบสถาปัตยกรรมนายหน้า
Broker Architectural Style เป็นสถาปัตยกรรมมิดเดิลแวร์ที่ใช้ในการประมวลผลแบบกระจายเพื่อประสานงานและเปิดใช้งานการสื่อสารระหว่างเซิร์ฟเวอร์ที่ลงทะเบียนและไคลเอนต์ ที่นี่การสื่อสารวัตถุเกิดขึ้นผ่านระบบมิดเดิลแวร์ที่เรียกว่านายหน้าคำขอวัตถุ (บัสซอฟต์แวร์)
ไคลเอนต์และเซิร์ฟเวอร์ไม่โต้ตอบกันโดยตรง ไคลเอนต์และเซิร์ฟเวอร์มีการเชื่อมต่อโดยตรงกับพร็อกซีซึ่งสื่อสารกับโบรกเกอร์คนกลาง
เซิร์ฟเวอร์ให้บริการโดยการลงทะเบียนและเผยแพร่อินเทอร์เฟซกับโบรกเกอร์และลูกค้าสามารถร้องขอบริการจากโบรกเกอร์แบบคงที่หรือแบบไดนามิกโดยการค้นหา
CORBA (Common Object Request Broker Architecture) เป็นตัวอย่างการใช้งานที่ดีของสถาปัตยกรรมนายหน้า
ส่วนประกอบของรูปแบบสถาปัตยกรรมนายหน้า
ส่วนประกอบของรูปแบบสถาปัตยกรรมนายหน้าจะกล่าวถึงผ่านหัวต่อไปนี้ -
Broker
นายหน้ามีหน้าที่ในการประสานงานการสื่อสารเช่นการส่งต่อและจัดส่งผลลัพธ์และข้อยกเว้น อาจเป็นได้ทั้งบริการที่มุ่งเน้นการร้องขอเอกสารหรือข้อความ - โบรกเกอร์ที่ลูกค้าส่งข้อความมา
มีหน้าที่รับผิดชอบในการนายหน้าคำขอบริการค้นหาเซิร์ฟเวอร์ที่เหมาะสมส่งคำขอและส่งคำตอบกลับไปยังลูกค้า
จะเก็บรักษาข้อมูลการลงทะเบียนของเซิร์ฟเวอร์รวมถึงฟังก์ชันการทำงานและบริการตลอดจนข้อมูลตำแหน่งที่ตั้ง
มี API สำหรับไคลเอ็นต์ในการร้องขอเซิร์ฟเวอร์เพื่อตอบสนองการลงทะเบียนหรือยกเลิกการลงทะเบียนส่วนประกอบเซิร์ฟเวอร์การถ่ายโอนข้อความและการระบุตำแหน่งเซิร์ฟเวอร์
Stub
Stubs ถูกสร้างขึ้นในเวลาคอมไพล์แบบสแตติกจากนั้นปรับใช้กับฝั่งไคลเอ็นต์ซึ่งใช้เป็นพร็อกซีสำหรับไคลเอ็นต์ พร็อกซีฝั่งไคลเอ็นต์ทำหน้าที่เป็นสื่อกลางระหว่างลูกค้าและนายหน้าและให้ความโปร่งใสเพิ่มเติมระหว่างพวกเขาและลูกค้า วัตถุระยะไกลจะดูเหมือนเป็นวัตถุในเครื่อง
พร็อกซีจะซ่อน IPC (การสื่อสารระหว่างกระบวนการ) ที่ระดับโปรโตคอลและดำเนินการจัดเก็บค่าพารามิเตอร์และยกเลิกการจัดเก็บผลลัพธ์จากเซิร์ฟเวอร์
Skeleton
Skeleton ถูกสร้างขึ้นโดยการคอมไพล์ส่วนต่อประสานบริการจากนั้นปรับใช้กับฝั่งเซิร์ฟเวอร์ซึ่งใช้เป็นพร็อกซีสำหรับเซิร์ฟเวอร์ พร็อกซีฝั่งเซิร์ฟเวอร์ห่อหุ้มฟังก์ชันเครือข่ายเฉพาะระบบระดับต่ำและจัดเตรียม API ระดับสูงเพื่อเป็นสื่อกลางระหว่างเซิร์ฟเวอร์และโบรกเกอร์
ได้รับการร้องขอ, คลายการร้องขอ, เปิดตัวอาร์กิวเมนต์ของเมธอด, เรียกใช้บริการที่เหมาะสมและจัดการผลลัพธ์ก่อนที่จะส่งกลับไปยังไคลเอนต์
Bridge
บริดจ์สามารถเชื่อมต่อเครือข่ายสองเครือข่ายที่แตกต่างกันโดยอาศัยโปรโตคอลการสื่อสารที่แตกต่างกัน เป็นสื่อกลางของโบรกเกอร์ต่างๆรวมถึงโบรกเกอร์ DCOM, .NET remote และ Java CORBA
บริดจ์เป็นส่วนประกอบที่เป็นทางเลือกซึ่งจะซ่อนรายละเอียดการใช้งานเมื่อโบรกเกอร์สองรายทำงานร่วมกันและรับคำขอและพารามิเตอร์ในรูปแบบเดียวและแปลเป็นรูปแบบอื่น
Broker implementation in CORBA
CORBA เป็นมาตรฐานสากลสำหรับ Object Request Broker ซึ่งเป็นตัวกลางในการจัดการการสื่อสารระหว่างอ็อบเจ็กต์แบบกระจายที่กำหนดโดย OMG (กลุ่มการจัดการอ็อบเจ็กต์)
สถาปัตยกรรมเชิงบริการ (SOA)
บริการเป็นองค์ประกอบหนึ่งของฟังก์ชันการทำงานทางธุรกิจที่กำหนดไว้อย่างดีมีอยู่ในตัวเป็นอิสระเผยแพร่และพร้อมใช้งานผ่านอินเทอร์เฟซการเขียนโปรแกรมมาตรฐาน การเชื่อมต่อระหว่างบริการจะดำเนินการโดยโปรโตคอลทั่วไปและแบบเน้นข้อความทั่วไปเช่นโปรโตคอลบริการเว็บ SOAP ซึ่งสามารถส่งคำขอและการตอบกลับระหว่างบริการได้อย่างหลวม ๆ
สถาปัตยกรรมเชิงบริการคือการออกแบบไคลเอนต์ / เซิร์ฟเวอร์ซึ่งสนับสนุนแนวทางด้านไอทีที่ขับเคลื่อนด้วยธุรกิจซึ่งแอปพลิเคชันประกอบด้วยบริการซอฟต์แวร์และผู้ใช้บริการซอฟต์แวร์ (หรือที่เรียกว่าไคลเอนต์หรือผู้ร้องขอบริการ)
คุณสมบัติของ SOA
สถาปัตยกรรมที่มุ่งเน้นการบริการมีคุณสมบัติดังต่อไปนี้ -
Distributed Deployment - เปิดเผยข้อมูลขององค์กรและตรรกะทางธุรกิจเป็นหน่วยการทำงานที่เรียกว่าบริการอย่างหลวมคู่ค้นพบโครงสร้างตามมาตรฐานหยาบหยาบไร้สัญชาติ
Composability - รวบรวมกระบวนการใหม่จากบริการที่มีอยู่ซึ่งเปิดเผยในรายละเอียดที่ต้องการผ่านอินเทอร์เฟซการร้องเรียนที่กำหนดไว้อย่างดีเผยแพร่และมาตรฐาน
Interoperability - แบ่งปันความสามารถและนำบริการที่ใช้ร่วมกันมาใช้ซ้ำในเครือข่ายโดยไม่คำนึงถึงโปรโตคอลหรือเทคโนโลยีการใช้งาน
Reusability - เลือกผู้ให้บริการและเข้าถึงทรัพยากรที่มีอยู่ซึ่งเปิดเผยเป็นบริการ
การทำงานของ SOA
รูปต่อไปนี้แสดงให้เห็นว่า SOA ทำงานอย่างไร -
Advantages
การเชื่อมต่อแบบหลวม ๆ ของการวางแนวบริการทำให้เกิดความยืดหยุ่นอย่างมากสำหรับองค์กรในการใช้ประโยชน์จากแหล่งบริการทั้งหมดที่มีอยู่โดยไม่คำนึงถึงข้อ จำกัด ของแพลตฟอร์มและเทคโนโลยี
ส่วนประกอบของบริการแต่ละส่วนไม่ขึ้นอยู่กับบริการอื่น ๆ เนื่องจากคุณลักษณะของบริการไร้สัญชาติ
การใช้บริการจะไม่ส่งผลกระทบต่อการใช้บริการตราบเท่าที่อินเทอร์เฟซที่เปิดเผยจะไม่เปลี่ยนแปลง
ลูกค้าหรือบริการใด ๆ สามารถเข้าถึงบริการอื่น ๆ ได้โดยไม่คำนึงถึงแพลตฟอร์มเทคโนโลยีผู้ขายหรือการใช้งานภาษา
การนำทรัพย์สินและบริการกลับมาใช้ใหม่ได้เนื่องจากลูกค้าของบริการจำเป็นต้องรู้จักอินเทอร์เฟซสาธารณะองค์ประกอบของบริการเท่านั้น
การพัฒนาแอปพลิเคชันทางธุรกิจที่ใช้ SOA นั้นมีประสิทธิภาพมากกว่าในแง่ของเวลาและต้นทุน
ช่วยเพิ่มความสามารถในการปรับขนาดและให้การเชื่อมต่อมาตรฐานระหว่างระบบ
การใช้ 'บริการทางธุรกิจ' อย่างมีประสิทธิภาพและประสิทธิผล
การรวมจะง่ายขึ้นมากและปรับปรุงความสามารถในการทำงานร่วมกันภายใน
ความซับซ้อนเชิงนามธรรมสำหรับนักพัฒนาและทำให้กระบวนการทางธุรกิจใกล้ชิดกับผู้ใช้มากขึ้น
สถาปัตยกรรมที่ใช้ส่วนประกอบมุ่งเน้นไปที่การย่อยสลายของการออกแบบให้เป็นส่วนประกอบเชิงหน้าที่หรือเชิงตรรกะที่แสดงถึงส่วนต่อประสานการสื่อสารที่กำหนดไว้อย่างดีซึ่งประกอบด้วยวิธีการเหตุการณ์และคุณสมบัติ ให้นามธรรมในระดับที่สูงขึ้นและแบ่งปัญหาออกเป็นปัญหาย่อยซึ่งแต่ละปัญหาจะเกี่ยวข้องกับพาร์ติชันส่วนประกอบ
วัตถุประสงค์หลักของสถาปัตยกรรมตามส่วนประกอบคือเพื่อให้แน่ใจว่า component reusability. ส่วนประกอบจะห่อหุ้มฟังก์ชันการทำงานและลักษณะการทำงานขององค์ประกอบซอฟต์แวร์ไว้ในหน่วยไบนารีที่ใช้ซ้ำได้และสามารถปรับใช้งานได้เอง มีกรอบคอมโพเนนต์มาตรฐานมากมายเช่น COM / DCOM, JavaBean, EJB, CORBA, .NET, บริการเว็บและบริการกริด เทคโนโลยีเหล่านี้ใช้กันอย่างแพร่หลายในการออกแบบแอปพลิเคชัน GUI บนเดสก์ท็อปเฉพาะที่เช่นคอมโพเนนต์ JavaBean กราฟิกคอมโพเนนต์ MS ActiveX และคอมโพเนนต์ COM ซึ่งสามารถใช้ซ้ำได้โดยการลากและวาง
การออกแบบซอฟต์แวร์เชิงองค์ประกอบมีข้อดีหลายประการเหนือวิธีเชิงวัตถุแบบเดิมเช่น -
ลดเวลาในตลาดและต้นทุนการพัฒนาโดยการนำส่วนประกอบที่มีอยู่กลับมาใช้ใหม่
เพิ่มความน่าเชื่อถือด้วยการนำส่วนประกอบที่มีอยู่กลับมาใช้ใหม่
ส่วนประกอบคืออะไร?
ส่วนประกอบคือชุดฟังก์ชันแบบแยกส่วนแบบพกพาถอดเปลี่ยนได้และนำกลับมาใช้ใหม่ได้ซึ่งจะห่อหุ้มการนำไปใช้งานและส่งออกเป็นอินเทอร์เฟซระดับสูงกว่า
ส่วนประกอบคือออบเจ็กต์ซอฟต์แวร์ซึ่งมีวัตถุประสงค์เพื่อโต้ตอบกับส่วนประกอบอื่น ๆ การห่อหุ้มฟังก์ชันการทำงานบางอย่างหรือชุดฟังก์ชันการทำงาน มีอินเทอร์เฟซที่กำหนดไว้อย่างชัดเจนและสอดคล้องกับพฤติกรรมที่แนะนำโดยทั่วไปสำหรับส่วนประกอบทั้งหมดภายในสถาปัตยกรรม
ส่วนประกอบซอฟต์แวร์สามารถกำหนดเป็นหน่วยขององค์ประกอบที่มีอินเทอร์เฟซที่ระบุตามสัญญาและการอ้างอิงบริบทอย่างชัดเจนเท่านั้น นั่นคือส่วนประกอบซอฟต์แวร์สามารถใช้งานได้โดยอิสระและอยู่ภายใต้การจัดองค์ประกอบโดยบุคคลที่สาม
มุมมองของส่วนประกอบ
ส่วนประกอบสามารถมีมุมมองที่แตกต่างกันได้สามมุมมอง - มุมมองเชิงวัตถุมุมมองทั่วไปและมุมมองที่เกี่ยวข้องกับกระบวนการ
Object-oriented view
องค์ประกอบถูกมองว่าเป็นชุดของคลาสที่ทำงานร่วมกันอย่างน้อยหนึ่งคลาส แต่ละระดับโดเมนของปัญหา (การวิเคราะห์) และคลาสโครงสร้างพื้นฐาน (การออกแบบ) ได้รับการอธิบายเพื่อระบุคุณลักษณะและการดำเนินการทั้งหมดที่ใช้กับการนำไปใช้งาน นอกจากนี้ยังเกี่ยวข้องกับการกำหนดอินเทอร์เฟซที่ช่วยให้คลาสสามารถสื่อสารและร่วมมือกันได้
Conventional view
มันถูกมองว่าเป็นองค์ประกอบที่ใช้งานได้หรือโมดูลของโปรแกรมที่รวมตรรกะการประมวลผลโครงสร้างข้อมูลภายในที่จำเป็นในการใช้ตรรกะการประมวลผลและอินเทอร์เฟซที่ทำให้สามารถเรียกใช้ส่วนประกอบและข้อมูลที่จะส่งผ่านไป
Process-related view
ในมุมมองนี้แทนที่จะสร้างแต่ละองค์ประกอบตั้งแต่เริ่มต้นระบบกำลังสร้างจากส่วนประกอบที่มีอยู่ซึ่งดูแลอยู่ในไลบรารี เนื่องจากสถาปัตยกรรมซอฟต์แวร์ถูกกำหนดส่วนประกอบจะถูกเลือกจากไลบรารีและใช้เพื่อเติมข้อมูลสถาปัตยกรรม
คอมโพเนนต์ส่วนติดต่อผู้ใช้ (UI) ประกอบด้วยกริดปุ่มที่อ้างถึงการควบคุมและส่วนประกอบยูทิลิตี้จะแสดงฟังก์ชันย่อยเฉพาะที่ใช้ในส่วนประกอบอื่น ๆ
คอมโพเนนต์ทั่วไปประเภทอื่น ๆ คือส่วนประกอบที่ใช้ทรัพยากรมากไม่ได้เข้าถึงบ่อยและต้องเปิดใช้งานโดยใช้วิธีการแบบทันเวลา (JIT)
ส่วนประกอบจำนวนมากมองไม่เห็นซึ่งกระจายอยู่ในแอปพลิเคชันทางธุรกิจขององค์กรและเว็บแอปพลิเคชันทางอินเทอร์เน็ตเช่น Enterprise JavaBean (EJB) ส่วนประกอบ. NET และส่วนประกอบ CORBA
ลักษณะของส่วนประกอบ
Reusability- ส่วนประกอบมักได้รับการออกแบบมาเพื่อใช้ซ้ำในสถานการณ์ที่แตกต่างกันในการใช้งานที่แตกต่างกัน อย่างไรก็ตามส่วนประกอบบางอย่างอาจได้รับการออกแบบมาสำหรับงานเฉพาะ
Replaceable - ส่วนประกอบสามารถทดแทนได้อย่างอิสระด้วยส่วนประกอบอื่น ๆ ที่คล้ายคลึงกัน
Not context specific - ส่วนประกอบได้รับการออกแบบให้ทำงานในสภาพแวดล้อมและบริบทที่แตกต่างกัน
Extensible - ส่วนประกอบสามารถขยายจากส่วนประกอบที่มีอยู่เพื่อให้เกิดพฤติกรรมใหม่
Encapsulated - ส่วนประกอบ AA แสดงถึงอินเทอร์เฟซซึ่งอนุญาตให้ผู้โทรใช้ฟังก์ชันการทำงานและไม่เปิดเผยรายละเอียดของกระบวนการภายในหรือตัวแปรหรือสถานะภายในใด ๆ
Independent - ส่วนประกอบได้รับการออกแบบให้มีการพึ่งพาส่วนประกอบอื่น ๆ น้อยที่สุด
หลักการออกแบบตามส่วนประกอบ −
การออกแบบระดับส่วนประกอบสามารถแสดงโดยใช้การแสดงตัวกลางบางอย่าง (เช่นกราฟิกตารางหรือตามข้อความ) ที่สามารถแปลเป็นซอร์สโค้ดได้ การออกแบบโครงสร้างข้อมูลอินเทอร์เฟซและอัลกอริทึมควรเป็นไปตามแนวทางที่กำหนดไว้อย่างดีเพื่อช่วยให้เราหลีกเลี่ยงข้อผิดพลาด
ระบบซอฟต์แวร์ถูกย่อยสลายเป็นหน่วยส่วนประกอบที่ใช้ซ้ำได้เหนียวและห่อหุ้ม
ส่วนประกอบแต่ละตัวมีอินเทอร์เฟซของตัวเองที่ระบุพอร์ตที่ต้องการและพอร์ตที่จัดเตรียมไว้ แต่ละองค์ประกอบซ่อนการใช้งานโดยละเอียด
ควรขยายส่วนประกอบโดยไม่จำเป็นต้องทำการแก้ไขโค้ดภายในหรือปรับเปลี่ยนการออกแบบกับส่วนที่มีอยู่ของส่วนประกอบ
ขึ้นอยู่กับองค์ประกอบนามธรรมไม่ได้ขึ้นอยู่กับส่วนประกอบคอนกรีตอื่น ๆ ซึ่งเพิ่มความยากลำบากในการใช้จ่าย
ตัวเชื่อมต่อส่วนประกอบที่เชื่อมต่อการระบุและพิจารณาการโต้ตอบระหว่างส่วนประกอบ ประเภทการโต้ตอบถูกระบุโดยอินเทอร์เฟซของคอมโพเนนต์
การโต้ตอบของคอมโพเนนต์สามารถอยู่ในรูปแบบของการเรียกใช้เมธอดการเรียกใช้แบบอะซิงโครนัสการแพร่ภาพการโต้ตอบที่ขับเคลื่อนด้วยข้อความการสื่อสารสตรีมข้อมูลและการโต้ตอบเฉพาะโปรโตคอลอื่น ๆ
สำหรับคลาสเซิร์ฟเวอร์ควรสร้างอินเทอร์เฟซเฉพาะเพื่อรองรับลูกค้าประเภทหลัก ๆ ควรระบุเฉพาะการดำเนินการที่เกี่ยวข้องกับไคลเอ็นต์ประเภทใดประเภทหนึ่งในอินเทอร์เฟซ
ส่วนประกอบสามารถขยายไปยังส่วนประกอบอื่น ๆ และยังคงมีจุดต่อขยายของตัวเอง เป็นแนวคิดของสถาปัตยกรรมที่ใช้ปลั๊กอิน สิ่งนี้ช่วยให้ปลั๊กอินสามารถเสนอปลั๊กอิน API อื่นได้
แนวทางการออกแบบระดับส่วนประกอบ
สร้างรูปแบบการตั้งชื่อสำหรับส่วนประกอบที่ระบุเป็นส่วนหนึ่งของแบบจำลองสถาปัตยกรรมจากนั้นปรับแต่งหรือทำให้ละเอียดเป็นส่วนหนึ่งของโมเดลระดับส่วนประกอบ
รับชื่อส่วนประกอบทางสถาปัตยกรรมจากโดเมนปัญหาและรับรองว่ามีความหมายต่อผู้มีส่วนได้ส่วนเสียทั้งหมดที่ดูแบบจำลองสถาปัตยกรรม
แยกเอนทิตีกระบวนการทางธุรกิจที่สามารถดำรงอยู่อย่างอิสระโดยไม่มีการพึ่งพาที่เกี่ยวข้องกับเอนทิตีอื่น
รับรู้และค้นพบเอนทิตีอิสระเหล่านี้เป็นส่วนประกอบใหม่
ใช้ชื่อองค์ประกอบโครงสร้างพื้นฐานที่แสดงถึงความหมายเฉพาะการนำไปใช้งาน
จำลองการอ้างอิงใด ๆ จากซ้ายไปขวาและการสืบทอดจากบนสุด (คลาสพื้นฐาน) ไปยังด้านล่าง (คลาสที่ได้รับ)
สร้างโมเดลการอ้างอิงคอมโพเนนต์ใด ๆ เป็นอินเทอร์เฟซแทนที่จะแสดงว่าเป็นการพึ่งพาคอมโพเนนต์โดยตรงกับคอมโพเนนต์
การดำเนินการออกแบบระดับส่วนประกอบ
รับรู้คลาสการออกแบบทั้งหมดที่สอดคล้องกับโดเมนปัญหาตามที่กำหนดไว้ในโมเดลการวิเคราะห์และโมเดลสถาปัตยกรรม
รับรู้คลาสการออกแบบทั้งหมดที่สอดคล้องกับโดเมนโครงสร้างพื้นฐาน
อธิบายคลาสการออกแบบทั้งหมดที่ไม่ได้รับมาเป็นส่วนประกอบที่ใช้ซ้ำได้และระบุรายละเอียดข้อความ
ระบุอินเทอร์เฟซที่เหมาะสมสำหรับแต่ละองค์ประกอบและอธิบายแอตทริบิวต์อย่างละเอียดและกำหนดชนิดข้อมูลและโครงสร้างข้อมูลที่จำเป็นในการใช้งาน
อธิบายขั้นตอนการประมวลผลภายในแต่ละการดำเนินการโดยละเอียดโดยใช้รหัสหลอกหรือแผนภาพกิจกรรม UML
อธิบายแหล่งข้อมูลถาวร (ฐานข้อมูลและไฟล์) และระบุคลาสที่จำเป็นในการจัดการ
พัฒนาและอธิบายการแสดงพฤติกรรมสำหรับชั้นเรียนหรือองค์ประกอบอย่างละเอียด สิ่งนี้ทำได้โดยการอธิบายแผนภาพสถานะ UML ที่สร้างขึ้นสำหรับโมเดลการวิเคราะห์อย่างละเอียดและโดยการตรวจสอบกรณีการใช้งานทั้งหมดที่เกี่ยวข้องกับคลาสการออกแบบ
ทำแผนภาพการปรับใช้อย่างละเอียดเพื่อให้รายละเอียดการใช้งานเพิ่มเติม
แสดงตำแหน่งของแพ็กเกจคีย์หรือคลาสของคอมโพเนนต์ในระบบโดยใช้คลาสอินสแตนซ์และกำหนดฮาร์ดแวร์และสภาพแวดล้อมระบบปฏิบัติการเฉพาะ
การตัดสินใจขั้นสุดท้ายสามารถทำได้โดยใช้หลักการและแนวทางการออกแบบที่กำหนดไว้ นักออกแบบที่มีประสบการณ์จะพิจารณาโซลูชันการออกแบบทางเลือกทั้งหมด (หรือเกือบทั้งหมด) ก่อนที่จะตัดสินใจเลือกรูปแบบการออกแบบขั้นสุดท้าย
ข้อดี
Ease of deployment - เมื่อมีเวอร์ชันที่เข้ากันได้ใหม่ ๆ การเปลี่ยนเวอร์ชันที่มีอยู่แล้วจึงง่ายขึ้นโดยไม่มีผลกระทบต่อส่วนประกอบอื่น ๆ หรือระบบโดยรวม
Reduced cost - การใช้ส่วนประกอบของบุคคลที่สามช่วยให้คุณสามารถกระจายต้นทุนในการพัฒนาและบำรุงรักษา
Ease of development - ส่วนประกอบใช้อินเทอร์เฟซที่รู้จักกันดีเพื่อจัดเตรียมฟังก์ชันการทำงานที่กำหนดไว้ทำให้สามารถพัฒนาได้โดยไม่ส่งผลกระทบต่อส่วนอื่น ๆ ของระบบ
Reusable - การใช้ส่วนประกอบที่ใช้ซ้ำได้หมายความว่าสามารถใช้เพื่อกระจายต้นทุนการพัฒนาและการบำรุงรักษาไปยังแอพพลิเคชั่นหรือระบบต่างๆ
Modification of technical complexity - ส่วนประกอบปรับเปลี่ยนความซับซ้อนผ่านการใช้คอนเทนเนอร์ส่วนประกอบและบริการต่างๆ
Reliability - ความน่าเชื่อถือของระบบโดยรวมเพิ่มขึ้นเนื่องจากความน่าเชื่อถือของแต่ละองค์ประกอบช่วยเพิ่มความน่าเชื่อถือของทั้งระบบผ่านการใช้ซ้ำ
System maintenance and evolution - ง่ายต่อการเปลี่ยนแปลงและอัปเดตการใช้งานโดยไม่ส่งผลกระทบต่อส่วนที่เหลือของระบบ
Independent- ความเป็นอิสระและการเชื่อมต่อที่ยืดหยุ่นของส่วนประกอบ การพัฒนาส่วนประกอบอย่างอิสระตามกลุ่มต่างๆแบบขนาน ผลผลิตสำหรับการพัฒนาซอฟต์แวร์และการพัฒนาซอฟต์แวร์ในอนาคต
อินเทอร์เฟซผู้ใช้เป็นความประทับใจแรกของระบบซอฟต์แวร์จากมุมมองของผู้ใช้ ดังนั้นระบบซอฟต์แวร์ใด ๆ ต้องเป็นไปตามความต้องการของผู้ใช้ UI ส่วนใหญ่ทำหน้าที่สองอย่าง -
ยอมรับการป้อนข้อมูลของผู้ใช้
กำลังแสดงผลลัพธ์
อินเทอร์เฟซผู้ใช้มีบทบาทสำคัญในระบบซอฟต์แวร์ใด ๆ อาจเป็นลักษณะเดียวที่มองเห็นได้ของระบบซอฟต์แวร์เช่น -
ในขั้นต้นผู้ใช้จะเห็นสถาปัตยกรรมของอินเทอร์เฟซผู้ใช้ภายนอกของระบบซอฟต์แวร์โดยไม่พิจารณาสถาปัตยกรรมภายใน
อินเทอร์เฟซผู้ใช้ที่ดีต้องดึงดูดผู้ใช้ให้ใช้ระบบซอฟต์แวร์โดยไม่ผิดพลาด ควรช่วยให้ผู้ใช้เข้าใจระบบซอฟต์แวร์ได้ง่ายโดยไม่มีข้อมูลที่ทำให้เข้าใจผิด UI ที่ไม่ดีอาจทำให้ตลาดล้มเหลวจากการแข่งขันของระบบซอฟต์แวร์
UI มีไวยากรณ์และความหมาย ไวยากรณ์ประกอบด้วยประเภทส่วนประกอบเช่นข้อความไอคอนปุ่ม ฯลฯ และความสามารถในการใช้งานสรุปความหมายของ UI คุณภาพของ UI นั้นโดดเด่นด้วยรูปลักษณ์ (ไวยากรณ์) และการใช้งาน (ความหมาย)
โดยทั่วไปมีอินเทอร์เฟซผู้ใช้สองประเภทหลัก ๆ คือ a) Textual b) แบบกราฟิก
ซอฟต์แวร์ในโดเมนต่างๆอาจต้องการอินเทอร์เฟซผู้ใช้ที่แตกต่างกันเช่นเครื่องคิดเลขต้องการเพียงพื้นที่เล็ก ๆ สำหรับการแสดงตัวเลข แต่มีพื้นที่ขนาดใหญ่สำหรับคำสั่งหน้าเว็บต้องการแบบฟอร์มลิงก์แท็บ ฯลฯ
อินเทอร์เฟซผู้ใช้แบบกราฟิก
อินเทอร์เฟซผู้ใช้แบบกราฟิกเป็นส่วนติดต่อผู้ใช้ที่พบมากที่สุดในปัจจุบัน เป็นมิตรกับผู้ใช้มากเนื่องจากใช้ประโยชน์จากรูปภาพกราฟิกและไอคอนดังนั้นจึงเรียกว่า 'กราฟิก'
เป็นที่รู้จักกันในชื่อ WIMP interface เพราะใช้ประโยชน์จาก -
Windows - พื้นที่สี่เหลี่ยมบนหน้าจอที่แอปพลิเคชันที่ใช้กันทั่วไปทำงาน
Icons - รูปภาพหรือสัญลักษณ์ที่ใช้เพื่อแสดงถึงแอปพลิเคชันซอฟต์แวร์หรืออุปกรณ์ฮาร์ดแวร์
Menus - รายการตัวเลือกที่ผู้ใช้สามารถเลือกสิ่งที่ต้องการได้
Pointers- สัญลักษณ์เช่นลูกศรที่เคลื่อนที่ไปรอบ ๆ หน้าจอเมื่อผู้ใช้เลื่อนเมาส์ ช่วยให้ผู้ใช้เลือกวัตถุ
การออกแบบส่วนต่อประสานผู้ใช้
เริ่มต้นด้วยการวิเคราะห์งานซึ่งเข้าใจภารกิจหลักของผู้ใช้และโดเมนปัญหา ควรได้รับการออกแบบในแง่ของคำศัพท์ของผู้ใช้และเริ่มต้นจากงานของผู้ใช้มากกว่าโปรแกรมเมอร์
ในการวิเคราะห์อินเทอร์เฟซผู้ใช้ผู้ประกอบวิชาชีพจำเป็นต้องศึกษาและทำความเข้าใจองค์ประกอบ 4 ประการ -
users ใครจะโต้ตอบกับระบบผ่านอินเทอร์เฟซ
tasks ที่ผู้ใช้ปลายทางต้องดำเนินการเพื่อทำงานของตน
content ที่นำเสนอเป็นส่วนหนึ่งของอินเทอร์เฟซ
work environment ซึ่งงานเหล่านี้จะดำเนินการ
การออกแบบ UI ที่เหมาะสมหรือดีทำงานจากความสามารถและข้อ จำกัด ของผู้ใช้ไม่ใช่เครื่องจักร ในขณะที่ออกแบบ UI ความรู้เกี่ยวกับลักษณะของงานและสภาพแวดล้อมของผู้ใช้ก็มีความสำคัญเช่นกัน
จากนั้นงานที่ต้องดำเนินการสามารถแบ่งออกได้ซึ่งกำหนดให้กับผู้ใช้หรือเครื่องจักรโดยอาศัยความรู้เกี่ยวกับความสามารถและข้อ จำกัด ของแต่ละคน การออกแบบส่วนต่อประสานผู้ใช้มักแบ่งออกเป็นสี่ระดับที่แตกต่างกัน -
The conceptual level - อธิบายเอนทิตีพื้นฐานโดยพิจารณาจากมุมมองของผู้ใช้ที่มีต่อระบบและการดำเนินการที่เป็นไปได้กับพวกเขา
The semantic level - อธิบายถึงฟังก์ชันที่ดำเนินการโดยระบบเช่นคำอธิบายข้อกำหนดการทำงานของระบบ แต่ไม่ได้ระบุถึงวิธีที่ผู้ใช้จะเรียกใช้ฟังก์ชัน
The syntactic level - อธิบายลำดับของอินพุตและเอาต์พุตที่จำเป็นในการเรียกใช้ฟังก์ชันที่อธิบายไว้
The lexical level - กำหนดว่าอินพุตและเอาต์พุตเกิดขึ้นจริงจากการทำงานของฮาร์ดแวร์แบบดั้งเดิมอย่างไร
การออกแบบอินเทอร์เฟซผู้ใช้เป็นกระบวนการซ้ำ ๆ ซึ่งการทำซ้ำทั้งหมดจะอธิบายและปรับแต่งข้อมูลที่พัฒนาในขั้นตอนก่อนหน้านี้ ขั้นตอนทั่วไปสำหรับการออกแบบส่วนต่อประสานผู้ใช้
กำหนดอ็อบเจ็กต์ส่วนติดต่อผู้ใช้และการดำเนินการ (การดำเนินการ)
กำหนดเหตุการณ์ (การกระทำของผู้ใช้) ที่จะทำให้สถานะของอินเทอร์เฟซผู้ใช้เปลี่ยนไป
ระบุวิธีที่ผู้ใช้ตีความสถานะของระบบจากข้อมูลที่ให้ผ่านอินเทอร์เฟซ
อธิบายสถานะของอินเทอร์เฟซแต่ละรายการตามที่ผู้ใช้ปลายทางเห็น
สร้างโดยผู้ใช้หรือวิศวกรซอฟต์แวร์ซึ่งสร้างโปรไฟล์ของผู้ใช้ปลายทางของระบบตามอายุเพศความสามารถทางกายภาพการศึกษาแรงจูงใจเป้าหมายและบุคลิกภาพ
พิจารณาความรู้ทางวากยสัมพันธ์และความหมายของผู้ใช้และจำแนกผู้ใช้เป็นมือใหม่ผู้ใช้งานที่มีความรู้ไม่ต่อเนื่องและมีความรู้บ่อยครั้ง
สร้างโดยวิศวกรซอฟต์แวร์ซึ่งรวมเอาข้อมูลสถาปัตยกรรมอินเทอร์เฟซและการแสดงขั้นตอนของซอฟต์แวร์
ได้มาจากรูปแบบการวิเคราะห์ข้อกำหนดและควบคุมโดยข้อมูลในข้อกำหนดข้อกำหนดซึ่งช่วยในการกำหนดผู้ใช้ระบบ
สร้างโดยผู้ติดตั้งซอฟต์แวร์ที่ทำงานเกี่ยวกับรูปลักษณ์ของอินเทอร์เฟซรวมกับข้อมูลสนับสนุนทั้งหมด (หนังสือวิดีโอไฟล์วิธีใช้) ที่อธิบายไวยากรณ์ของระบบและความหมาย
ทำหน้าที่แปลรูปแบบการออกแบบและพยายามที่จะเห็นด้วยกับแบบจำลองทางจิตใจของผู้ใช้เพื่อให้ผู้ใช้รู้สึกสบายใจกับซอฟต์แวร์และใช้งานได้อย่างมีประสิทธิภาพ
สร้างโดยผู้ใช้เมื่อโต้ตอบกับแอปพลิเคชัน มันมีภาพของระบบที่ผู้ใช้พกไว้ในหัว
มักเรียกว่าการรับรู้ระบบของผู้ใช้และความถูกต้องของคำอธิบายขึ้นอยู่กับโปรไฟล์ของผู้ใช้และความคุ้นเคยโดยรวมกับซอฟต์แวร์ในโดเมนแอปพลิเคชัน
- ระบุเป้าหมายสถาปัตยกรรมของคุณตั้งแต่เริ่มต้น
- ระบุผู้บริโภคสถาปัตยกรรมของเรา
- ระบุข้อ จำกัด
ทบทวนสถาปัตยกรรมบ่อยครั้งตามเหตุการณ์สำคัญของโครงการและเพื่อตอบสนองต่อการเปลี่ยนแปลงทางสถาปัตยกรรมที่สำคัญอื่น ๆ
วัตถุประสงค์หลักของการทบทวนสถาปัตยกรรมคือการกำหนดความเป็นไปได้ของสถาปัตยกรรมพื้นฐานและสถาปัตยกรรมของผู้สมัครซึ่งตรวจสอบสถาปัตยกรรมอย่างถูกต้อง
เชื่อมโยงข้อกำหนดด้านการใช้งานและคุณลักษณะด้านคุณภาพเข้ากับโซลูชันทางเทคนิคที่เสนอ นอกจากนี้ยังช่วยระบุปัญหาและรับรู้พื้นที่ที่ต้องปรับปรุง
กระบวนการพัฒนาส่วนต่อประสานผู้ใช้
เป็นไปตามกระบวนการเกลียวดังแสดงในแผนภาพต่อไปนี้ -
Interface analysis
โดยมุ่งเน้นหรือเน้นไปที่ผู้ใช้งานเนื้อหาและสภาพแวดล้อมการทำงานที่จะโต้ตอบกับระบบ กำหนดงานที่มุ่งเน้นมนุษย์และคอมพิวเตอร์ที่จำเป็นเพื่อให้บรรลุฟังก์ชันระบบ
Interface design
กำหนดชุดของอินเทอร์เฟซอ็อบเจ็กต์การดำเนินการและการแสดงหน้าจอที่ช่วยให้ผู้ใช้สามารถทำงานที่กำหนดไว้ทั้งหมดในลักษณะที่ตรงตามวัตถุประสงค์การใช้งานที่กำหนดไว้สำหรับระบบ
Interface construction
เริ่มต้นด้วยต้นแบบที่ช่วยให้สามารถประเมินสถานการณ์การใช้งานและดำเนินการต่อด้วยเครื่องมือในการพัฒนาเพื่อให้การก่อสร้างเสร็จสมบูรณ์
Interface validation
โดยมุ่งเน้นไปที่ความสามารถของอินเทอร์เฟซในการใช้งานทุกงานของผู้ใช้อย่างถูกต้องรองรับรูปแบบงานทั้งหมดเพื่อให้บรรลุความต้องการของผู้ใช้ทั่วไปและระดับที่อินเทอร์เฟซใช้งานง่ายและเรียนรู้ได้ง่าย
User Interface Models
เมื่อมีการวิเคราะห์และออกแบบอินเทอร์เฟซผู้ใช้ต่อไปนี้สี่รุ่น -
User profile model
Design model
Implementation model
User's mental model
ข้อควรพิจารณาในการออกแบบส่วนต่อประสานผู้ใช้
ผู้ใช้เป็นศูนย์กลาง
อินเทอร์เฟซผู้ใช้ต้องเป็นผลิตภัณฑ์ที่เน้นผู้ใช้เป็นศูนย์กลางซึ่งเกี่ยวข้องกับผู้ใช้ตลอดวงจรการพัฒนาผลิตภัณฑ์ ต้นแบบของอินเทอร์เฟซผู้ใช้ควรพร้อมใช้งานสำหรับผู้ใช้และข้อเสนอแนะจากผู้ใช้ควรรวมอยู่ในผลิตภัณฑ์ขั้นสุดท้าย
เรียบง่ายและใช้งานง่าย
UI ให้ความเรียบง่ายและใช้งานง่ายเพื่อให้สามารถใช้งานได้อย่างรวดเร็วและมีประสิทธิภาพโดยไม่ต้องมีคำแนะนำ GUI ดีกว่า UI แบบข้อความเนื่องจาก GUI ประกอบด้วยเมนูหน้าต่างและปุ่มต่างๆและใช้งานได้โดยใช้เมาส์
วางผู้ใช้ในการควบคุม
อย่าบังคับให้ผู้ใช้ทำตามลำดับที่กำหนดไว้ล่วงหน้า ให้ทางเลือกแก่พวกเขาเพื่อยกเลิกหรือบันทึกและกลับไปยังจุดที่ค้างไว้ ใช้คำศัพท์ตลอดทั้งอินเทอร์เฟซที่ผู้ใช้สามารถเข้าใจได้แทนที่จะใช้เงื่อนไขของระบบหรือนักพัฒนา
แจ้งให้ผู้ใช้ทราบว่ามีการดำเนินการใด ๆ ไม่ว่าจะโดยแสดงให้พวกเขาเห็นผลของการดำเนินการหรือยอมรับว่าการดำเนินการนั้นสำเร็จแล้ว
ความโปร่งใส
UI ต้องโปร่งใสที่ช่วยให้ผู้ใช้รู้สึกเหมือนกำลังเข้าถึงผ่านคอมพิวเตอร์และจัดการกับวัตถุที่ทำงานด้วยโดยตรง อินเทอร์เฟซสามารถทำให้โปร่งใสได้โดยให้อ็อบเจ็กต์ทำงานแก่ผู้ใช้แทนที่จะเป็นอ็อบเจ็กต์ระบบ ตัวอย่างเช่นผู้ใช้ควรเข้าใจว่ารหัสผ่านระบบต้องมีความยาวอย่างน้อย 6 อักขระไม่ใช่รหัสผ่านของพื้นที่เก็บข้อมูลต้องมีขนาดกี่ไบต์
ใช้การเปิดเผยแบบก้าวหน้า
ให้การเข้าถึงคุณสมบัติทั่วไปและการดำเนินการที่ใช้บ่อยได้อย่างง่ายดาย ซ่อนคุณสมบัติและการดำเนินการที่ไม่ค่อยพบบ่อยและอนุญาตให้ผู้ใช้นำทางได้ อย่าพยายามใส่ข้อมูลทุกชิ้นในหน้าต่างหลักเดียว ใช้หน้าต่างรองสำหรับข้อมูลที่ไม่ใช่ข้อมูลสำคัญ
ความสม่ำเสมอ
UI รักษาความสอดคล้องภายในและข้ามผลิตภัณฑ์รักษาผลลัพธ์การโต้ตอบเหมือนกันคำสั่ง UI และเมนูควรมีรูปแบบเดียวกันเครื่องหมายวรรคตอนคำสั่งควรคล้ายกันและควรส่งพารามิเตอร์ไปยังคำสั่งทั้งหมดในลักษณะเดียวกัน UI ไม่ควรมีพฤติกรรมที่ทำให้ผู้ใช้แปลกใจและควรมีกลไกที่ช่วยให้ผู้ใช้สามารถกู้คืนจากความผิดพลาดได้
บูรณาการ
ระบบซอฟต์แวร์ควรรวมเข้ากับแอปพลิเคชันอื่น ๆ เช่น MS notepad และ MS-Office ได้อย่างราบรื่น สามารถใช้คำสั่งคลิปบอร์ดโดยตรงเพื่อทำการแลกเปลี่ยนข้อมูล
เชิงส่วนประกอบ
การออกแบบ UI ต้องเป็นแบบแยกส่วนและรวมสถาปัตยกรรมที่เน้นส่วนประกอบเพื่อให้การออกแบบ UI มีความต้องการเช่นเดียวกับการออกแบบส่วนหลักของระบบซอฟต์แวร์ โมดูลสามารถแก้ไขและเปลี่ยนได้อย่างง่ายดายโดยไม่ส่งผลกระทบต่อส่วนอื่น ๆ ของระบบ
ปรับแต่งได้
สถาปัตยกรรมของระบบซอฟต์แวร์ทั้งหมดประกอบด้วยโมดูลปลั๊กอินซึ่งช่วยให้ผู้คนจำนวนมากสามารถขยายซอฟต์แวร์ได้อย่างอิสระ ช่วยให้ผู้ใช้แต่ละคนสามารถเลือกจากรูปแบบต่างๆที่มีอยู่เพื่อให้เหมาะกับความชอบและความต้องการส่วนบุคคล
ลดภาระหน่วยความจำของผู้ใช้
อย่าบังคับให้ผู้ใช้ต้องจำและทำซ้ำสิ่งที่คอมพิวเตอร์ควรทำเพื่อพวกเขา ตัวอย่างเช่นเมื่อกรอกแบบฟอร์มออนไลน์ระบบควรจดจำชื่อลูกค้าที่อยู่และหมายเลขโทรศัพท์เมื่อผู้ใช้ป้อนหรือเมื่อเปิดบันทึกลูกค้าแล้ว
อินเทอร์เฟซผู้ใช้รองรับการดึงข้อมูลหน่วยความจำระยะยาวโดยจัดเตรียมรายการให้ผู้ใช้รับรู้แทนที่จะต้องเรียกคืนข้อมูล
การแยก
UI ต้องแยกออกจากตรรกะของระบบผ่านการใช้งานเพื่อเพิ่มความสามารถในการใช้ซ้ำและการบำรุงรักษา
วิธีการทำซ้ำและเพิ่มหน่วย
เป็นแนวทางที่ทำซ้ำและเพิ่มขึ้นซึ่งประกอบด้วยห้าขั้นตอนหลักที่ช่วยในการสร้างโซลูชันสำหรับผู้สมัคร โซลูชันสำหรับผู้สมัครนี้สามารถปรับปรุงเพิ่มเติมได้โดยการทำซ้ำขั้นตอนเหล่านี้และสุดท้ายสร้างการออกแบบสถาปัตยกรรมที่เหมาะกับการใช้งานของเรามากที่สุด ในตอนท้ายของกระบวนการเราสามารถตรวจสอบและสื่อสารสถาปัตยกรรมของเราไปยังผู้สนใจทั้งหมดได้
เป็นเพียงแนวทางหนึ่งที่เป็นไปได้ มีแนวทางที่เป็นทางการอื่น ๆ อีกมากมายที่กำหนดตรวจสอบและสื่อสารสถาปัตยกรรมของคุณ
ระบุเป้าหมายสถาปัตยกรรม
ระบุเป้าหมายสถาปัตยกรรมที่สร้างสถาปัตยกรรมและกระบวนการออกแบบ วัตถุประสงค์ที่กำหนดไว้อย่างไม่มีที่ติจะเน้นที่สถาปัตยกรรมแก้ปัญหาที่เหมาะสมในการออกแบบและช่วยในการพิจารณาว่าเมื่อใดที่เฟสปัจจุบันเสร็จสมบูรณ์และพร้อมที่จะก้าวไปสู่เฟสถัดไป
ขั้นตอนนี้ประกอบด้วยกิจกรรมต่อไปนี้ -
ตัวอย่างของกิจกรรมสถาปัตยกรรม ได้แก่ การสร้างต้นแบบเพื่อรับข้อเสนอแนะเกี่ยวกับ UI การประมวลผลคำสั่งซื้อสำหรับเว็บแอปพลิเคชันการสร้างแอปพลิเคชันการติดตามใบสั่งซื้อของลูกค้าและการออกแบบการพิสูจน์ตัวตนและสถาปัตยกรรมการอนุญาตสำหรับแอปพลิเคชันเพื่อดำเนินการตรวจสอบความปลอดภัย
สถานการณ์สำคัญ
ขั้นตอนนี้ให้ความสำคัญกับการออกแบบที่สำคัญที่สุด สถานการณ์คือคำอธิบายที่ครอบคลุมและครอบคลุมเกี่ยวกับการโต้ตอบของผู้ใช้กับระบบ
สถานการณ์สำคัญคือสถานการณ์ที่ถือเป็นสถานการณ์ที่สำคัญที่สุดสำหรับความสำเร็จของแอปพลิเคชันของคุณ ช่วยในการตัดสินใจเกี่ยวกับสถาปัตยกรรม เป้าหมายคือการบรรลุความสมดุลระหว่างวัตถุประสงค์ของผู้ใช้ธุรกิจและระบบ ตัวอย่างเช่นการพิสูจน์ตัวตนผู้ใช้เป็นสถานการณ์ที่สำคัญเนื่องจากเป็นจุดตัดของแอตทริบิวต์คุณภาพ (ความปลอดภัย) ที่มีฟังก์ชันการทำงานที่สำคัญ (วิธีที่ผู้ใช้เข้าสู่ระบบของคุณ)
ภาพรวมแอปพลิเคชัน
สร้างภาพรวมของแอปพลิเคชันซึ่งทำให้สถาปัตยกรรมสัมผัสได้มากขึ้นเชื่อมต่อกับข้อ จำกัด และการตัดสินใจในโลกแห่งความเป็นจริง ประกอบด้วยกิจกรรมดังต่อไปนี้ -
ระบุประเภทแอปพลิเคชัน
ระบุประเภทแอปพลิเคชันไม่ว่าจะเป็นแอปพลิเคชันบนมือถือไคลเอนต์ที่หลากหลายแอปพลิเคชันอินเทอร์เน็ตที่สมบูรณ์บริการเว็บแอปพลิเคชันหรือการรวมกันของประเภทเหล่านี้
ระบุข้อ จำกัด ในการปรับใช้
เลือกโทโพโลยีการปรับใช้ที่เหมาะสมและแก้ไขข้อขัดแย้งระหว่างแอปพลิเคชันและโครงสร้างพื้นฐานเป้าหมาย
ระบุรูปแบบการออกแบบสถาปัตยกรรมที่สำคัญ
ระบุรูปแบบการออกแบบสถาปัตยกรรมที่สำคัญเช่นไคลเอนต์ / เซิร์ฟเวอร์เลเยอร์บัสข้อความการออกแบบที่ขับเคลื่อนด้วยโดเมนเป็นต้นเพื่อปรับปรุงการแบ่งพาร์ติชันและส่งเสริมการนำการออกแบบมาใช้ใหม่โดยการให้วิธีแก้ปัญหาที่เกิดขึ้นบ่อยครั้ง การใช้งานมักจะใช้รูปแบบผสมผสานกัน
ระบุเทคโนโลยีที่เกี่ยวข้อง
ระบุเทคโนโลยีที่เกี่ยวข้องโดยพิจารณาจากประเภทของแอปพลิเคชันที่เรากำลังพัฒนาตัวเลือกที่เราต้องการสำหรับโทโพโลยีการปรับใช้แอปพลิเคชันและรูปแบบสถาปัตยกรรม การเลือกใช้เทคโนโลยีจะถูกกำหนดโดยนโยบายขององค์กรข้อ จำกัด ด้านโครงสร้างพื้นฐานทักษะทรัพยากรและอื่น ๆ
ประเด็นสำคัญหรือจุดสำคัญ
ในขณะออกแบบแอปพลิเคชันฮอตสปอตเป็นโซนที่เกิดข้อผิดพลาดบ่อยที่สุด ระบุประเด็นสำคัญตามคุณลักษณะด้านคุณภาพและข้อกังวลด้านการตัดขวาง ปัญหาที่อาจเกิดขึ้น ได้แก่ การปรากฏตัวของเทคโนโลยีใหม่และข้อกำหนดทางธุรกิจที่สำคัญ
แอตทริบิวต์คุณภาพคือคุณลักษณะโดยรวมของสถาปัตยกรรมของคุณที่มีผลต่อพฤติกรรมรันไทม์การออกแบบระบบและประสบการณ์ของผู้ใช้ ข้อกังวลในการตัดขวางเป็นคุณสมบัติของการออกแบบของเราที่อาจนำไปใช้กับทุกชั้นส่วนประกอบและชั้น
สิ่งเหล่านี้เป็นส่วนที่เกิดความผิดพลาดในการออกแบบที่มีผลกระทบสูงบ่อยที่สุด ตัวอย่างของข้อกังวลในการตัดขวาง ได้แก่ การพิสูจน์ตัวตนและการอนุญาตการสื่อสารการจัดการการกำหนดค่าการจัดการข้อยกเว้นและการตรวจสอบความถูกต้องเป็นต้น
โซลูชั่นสำหรับผู้สมัคร
หลังจากกำหนดคีย์ฮอตสปอตแล้วให้สร้างสถาปัตยกรรมพื้นฐานเริ่มต้นหรือการออกแบบระดับสูงอันดับแรกจากนั้นเริ่มกรอกรายละเอียดเพื่อสร้างสถาปัตยกรรมผู้สมัคร
สถาปัตยกรรมของผู้สมัครประกอบด้วยประเภทของแอปพลิเคชันสถาปัตยกรรมการปรับใช้รูปแบบสถาปัตยกรรมทางเลือกของเทคโนโลยีคุณลักษณะด้านคุณภาพและข้อกังวลในการตัดขวาง หากสถาปัตยกรรมของผู้สมัครเป็นการปรับปรุงก็สามารถกลายเป็นพื้นฐานที่จะสร้างและทดสอบสถาปัตยกรรมผู้สมัครใหม่ได้
ตรวจสอบการออกแบบโซลูชันของผู้สมัครกับสถานการณ์สำคัญและข้อกำหนดที่กำหนดไว้แล้วก่อนที่จะทำตามวงจรซ้ำและปรับปรุงการออกแบบ
เราอาจใช้สไปค์ทางสถาปัตยกรรมเพื่อค้นหาพื้นที่เฉพาะของการออกแบบหรือเพื่อตรวจสอบแนวคิดใหม่ ๆ สไปค์ทางสถาปัตยกรรมเป็นต้นแบบการออกแบบซึ่งกำหนดความเป็นไปได้ของเส้นทางการออกแบบเฉพาะลดความเสี่ยงและกำหนดความเป็นไปได้ของแนวทางต่างๆอย่างรวดเร็ว ทดสอบการเพิ่มขึ้นอย่างรวดเร็วทางสถาปัตยกรรมกับสถานการณ์สำคัญและฮอตสปอต
รีวิวสถาปัตยกรรม
การทบทวนสถาปัตยกรรมเป็นงานที่สำคัญที่สุดเพื่อลดต้นทุนที่ผิดพลาดและค้นหาและแก้ไขปัญหาทางสถาปัตยกรรมโดยเร็วที่สุด เป็นวิธีที่ดีและคุ้มค่าในการลดต้นทุนโครงการและโอกาสที่โครงการจะล้มเหลว
การประเมินตามสถานการณ์เป็นวิธีการที่โดดเด่นในการทบทวนการออกแบบสถาปัตยกรรมซึ่งมุ่งเน้นไปที่สถานการณ์ที่มีความสำคัญที่สุดจากมุมมองทางธุรกิจและมีผลกระทบมากที่สุดต่อสถาปัตยกรรมต่อไปนี้เป็นวิธีการทบทวนทั่วไป -
วิธีการวิเคราะห์สถาปัตยกรรมซอฟต์แวร์ (SAAM)
เดิมถูกออกแบบมาเพื่อประเมินความสามารถในการปรับเปลี่ยน แต่ต่อมาได้ถูกขยายออกไปสำหรับการตรวจสอบสถาปัตยกรรมที่เกี่ยวกับคุณลักษณะด้านคุณภาพ
วิธีการวิเคราะห์การแลกเปลี่ยนทางสถาปัตยกรรม (ATAM)
เป็น SAAM เวอร์ชันที่ได้รับการขัดเกลาและได้รับการปรับปรุงซึ่งจะตรวจสอบการตัดสินใจทางสถาปัตยกรรมตามข้อกำหนดคุณลักษณะด้านคุณภาพและความพึงพอใจของเป้าหมายด้านคุณภาพที่เฉพาะเจาะจงได้ดีเพียงใด
การทบทวนการออกแบบที่ใช้งานอยู่ (ADR)
เหมาะที่สุดสำหรับสถาปัตยกรรมที่ยังไม่สมบูรณ์หรืออยู่ระหว่างดำเนินการซึ่งจะเน้นไปที่ชุดของปัญหาหรือแต่ละส่วนของสถาปัตยกรรมในแต่ละครั้งมากกว่าการตรวจสอบทั่วไป
บทวิจารณ์ที่ใช้งานอยู่ของการออกแบบระดับกลาง (ARID)
มันรวมแง่มุม ADR ของการตรวจสอบสถาปัตยกรรมที่กำลังดำเนินการโดยมุ่งเน้นไปที่ชุดของปัญหาและแนวทาง ATAM และ SAAM ของการทบทวนตามสถานการณ์โดยเน้นที่คุณลักษณะด้านคุณภาพ
วิธีการวิเคราะห์ต้นทุนผลประโยชน์ (CBAM)
มุ่งเน้นไปที่การวิเคราะห์ต้นทุนผลประโยชน์และผลกระทบของกำหนดการของการตัดสินใจทางสถาปัตยกรรม
Architecture Level Modifiability Analysis (ALMA)
ประมาณการความสามารถในการปรับเปลี่ยนสถาปัตยกรรมสำหรับระบบสารสนเทศทางธุรกิจ (BIS)
วิธีการประเมินสถาปัตยกรรมครอบครัว (FAAM)
โดยประมาณสถาปัตยกรรมตระกูลระบบสารสนเทศสำหรับการทำงานร่วมกันและความสามารถในการขยาย
การสื่อสารการออกแบบสถาปัตยกรรม
หลังจากเสร็จสิ้นการออกแบบสถาปัตยกรรมเราต้องสื่อสารการออกแบบกับผู้มีส่วนได้ส่วนเสียอื่น ๆ ซึ่งรวมถึงทีมพัฒนาผู้ดูแลระบบผู้ปฏิบัติงานเจ้าของธุรกิจและผู้ที่สนใจอื่น ๆ
มีหลายวิธีที่รู้จักกันดีในการอธิบายสถาปัตยกรรมให้กับผู้อื่นดังต่อไปนี้: -
4 + 1 รุ่น
แนวทางนี้ใช้ห้ามุมมองของสถาปัตยกรรมที่สมบูรณ์ สี่มุมมอง (ไฟล์logical view, ที่ process view, ที่ physical view, และ development view) อธิบายสถาปัตยกรรมจากแนวทางต่างๆ มุมมองที่ห้าแสดงสถานการณ์และกรณีการใช้งานสำหรับซอฟต์แวร์ ช่วยให้ผู้มีส่วนได้ส่วนเสียเห็นคุณสมบัติของสถาปัตยกรรมที่พวกเขาสนใจเป็นพิเศษ
ภาษาคำอธิบายสถาปัตยกรรม (ADL)
แนวทางนี้ใช้เพื่ออธิบายสถาปัตยกรรมซอฟต์แวร์ก่อนการติดตั้งระบบ กล่าวถึงข้อกังวลต่อไปนี้ - พฤติกรรมโปรโตคอลและตัวเชื่อมต่อ
ข้อได้เปรียบหลักของ ADL คือเราสามารถวิเคราะห์สถาปัตยกรรมเพื่อความสมบูรณ์ความสม่ำเสมอความคลุมเครือและประสิทธิภาพก่อนที่จะเริ่มใช้การออกแบบอย่างเป็นทางการ
การสร้างแบบจำลองที่คล่องตัว
แนวทางนี้เป็นไปตามแนวคิดที่ว่า“ เนื้อหาสำคัญกว่าการนำเสนอ” ช่วยให้มั่นใจได้ว่าแบบจำลองที่สร้างขึ้นนั้นเรียบง่ายและเข้าใจง่ายถูกต้องเพียงพอมีรายละเอียดและสอดคล้องกัน
เอกสารรุ่น Agile กำหนดเป้าหมายลูกค้าเฉพาะและตอบสนองความพยายามในการทำงานของลูกค้ารายนั้น ความเรียบง่ายของเอกสารช่วยให้มั่นใจได้ว่ามีการมีส่วนร่วมของผู้มีส่วนได้ส่วนเสียในการสร้างแบบจำลองของสิ่งประดิษฐ์
IEEE 1471
IEEE 1471 เป็นชื่อย่อของมาตรฐานที่รู้จักกันอย่างเป็นทางการในชื่อ ANSI / IEEE 1471-2000“ แนวทางปฏิบัติที่แนะนำสำหรับคำอธิบายสถาปัตยกรรมของ Software-Intensive Systems” IEEE 1471 ปรับปรุงเนื้อหาของคำอธิบายสถาปัตยกรรมโดยเฉพาะโดยให้ความหมายที่เฉพาะเจาะจงกับบริบทมุมมองและมุมมอง
ภาษาการสร้างแบบจำลองแบบรวม (UML)
แนวทางนี้แสดงถึงสามมุมมองของแบบจำลองระบบ functional requirements view (ข้อกำหนดการทำงานของระบบจากมุมมองของผู้ใช้รวมถึงกรณีการใช้งาน); the static structural view(วัตถุคุณลักษณะความสัมพันธ์และการดำเนินการรวมทั้งคลาสไดอะแกรม); และdynamic behavior view (การทำงานร่วมกันระหว่างอ็อบเจ็กต์และการเปลี่ยนแปลงสถานะภายในของอ็อบเจ็กต์รวมถึงลำดับกิจกรรมและไดอะแกรมสถานะ)