7152305 ch 8

Page 1

บทที่ 8 การออกแบบเชิงสถาปัตยกรรม


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


บทนา ขั้นตอนกำรออกแบบซอฟต์แวร์ สถำปนิกซอฟต์แวร์ (Software Architect) จะต้องพิจำรณำลักษณะโครงสร้ำงของซอฟต์แวร์ ประกอบด้วย ส่วนประกอบ และ ควำมสัมพันธ์ระหว่ำงส่วนประกอบและคำนึงถึงรูปแบบเชิงสถำปัตยกรรมของ ซอฟต์แวร์ กำรออกแบบซอฟต์แวร์ แบ่งเป็น 2 ประเภท • กำรออกแบบเชิงสถำปัตยกรรม (Architectural Design) • กำรออกแบบเชิงละเอียด (Detailed Design)


การออกแบบเชิงสถาปัตยกรรม (Architectural Design) กำรออกแบบที่มองภำพรวมของซอฟต์แวร์ ซึ่งเกี่ยวข้องกับอุปกรณ์ ฮำร์ดแวร์ ซอฟต์แวร์ เครือข่ำยคอมพิวเตอร์ กำรออกแบบรำยงำน กำร ออกแบบส่วนต่อประสำนกับผู้ใช้ ฐำนข้อมูล และไฟล์ต่ำง ๆ


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


รูปแบบเชิงสถาปัตยกรรม กำรเลือกรูปแบบเชิงสถำปัตยกรรม (Architectural Style) ให้กับ ซอฟต์แวร์ มีหลำยรูปแบบ แตกต่ำงกันตำมลักษณะของโครงสร้ำง


การออกแบบเชิงสถาปัตยกรรมแบบ Pipe and Filters

Pipes Filter

Filter Filter

Filter

Filter

Filter

Filter

Filter

Filter

Pipe เป็นเสมือนท่อส่งข้อมูลนำเข้ำไปยังกระบวนกำรเปลี่ยนรูปข้อมูล Filter เหมือนตัวกรองข้อมูลจนได้ผลลัพธ์

Filter


การออกแบบเชิงสถาปัตยกรรมแบบ Call and Return Main Program Controller Subprogram Application Subprogram

Application Subprogram

Controller Subprogram Application Subprogram

Application Subprogram

Controller Subprogram Application Subprogram

กำรออกแบบที่มีลักษณะของโครงสร้ำงควบคุมแบบลำดับชั้นและบนลงล่ำง

Application Subprogram


การออกแบบเชิงสถาปัตยกรรมแบบ Client/Server เครื่องไคลเอนต์ที่อยู่บนเครื่องคอมพิวเตอร์เครื่องใดเครื่องหนึ่งส่งคำร้องขอ (Request) บริกำรไปยังเครื่องเซิร์ฟเวอร์ จำกนั้น เซิร์ฟเวอร์จะประมวลผลตำมควำมต้องกำรที่ได้รับ แล้วส่งผล (Replay ) ของบริกำรกลับไปยังเครื่องไคลเอนต์ที่ขอใช้บริกำร


การออกแบบเชิงสถาปัตยกรรมแบบ Client/Server กรณีมีเซิร์ฟเวอร์หลำยตัว Client A


การออกแบบเชิงสถาปัตยกรรมแบบ Model View Controller View 1

Controller 1

View 2

Controller 2

Model

เป็นกำรออกแบบที่แยกส่วนกำรทำงำนแต่ละส่วนให้เป็นอิสระต่อกัน คือ แบบจำลอง (Model) มุมมอง (View) ตัวควบคุม(Controller)


การออกแบบเชิงสถาปัตยกรรมแบบเลเยอร์ Java API OS API Kernel

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


การออกแบบเชิงสถาปัตยกรรมแบบฐานข้อมูลเป็นศูนย์กลาง

Client 1

Client 2 DB

Client 3

กำรออกแบบที่มีฐำนข้อมูลเป็นศูนย์กลำง และผู้ใช้สำมำรถเข้ำถึงข้อมูลในฐำนข้อมูลได้โดยตรง


การออกแบบเชิงสถาปัตยกรรมแบบ Three Tier

Client 1

DB

Business Tier

Client 2

Client 3

กำรออกแบบที่มีลักษณะคล้ำยกันแบบฐำนข้อมูลเป็นศูนย์กลำง และสำมำรถ ปรับเปลี่ยนกำรออกแบบให้มีลักษณะเป็น n-tier ได้


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


การออกแบบเชิงสถาปัตยกรรม ควำมสัมพันธ์ระหว่ำงควำมต้องกำร กำรออกแบบเชิงสถำปัตยกรรมและกำรออกแบบเชิงละเอียด Requirements

Architectural Design

R1

R2

R3

Detailed Design

M1

M2

M3


ตัวอย่างการออกแบบเชิงสถาปัตยกรรมของบ้าน

Customer Requirements Four bedrooms, three baths,

Architectural Design

...


การออกแบบเชิงละเอียด (Detailed Design) กำรออกแบบเชิงนำไปปฏิบัติ (Implementation Design) คือ กำรอธิบำยรำยละเอียดแต่ละ ส่วนประกอบของซอฟต์แวร์ เพื่อเป็นประโยชน์สำหรับกำรเขียนโปรแกรมให้มำกที่สุด • กำรแตกฟังก์ชันเป็นส่วนย่อย (Functional Decomposition) คือ กำรแบ่งมอดูลออกเป็น มอดูลย่อย ในปัจจุบัน นิยมใช้ในโปรแกรมประยุกต์บนเว็บ


การแตกฟังก์ชันของมอดูล 0.Main

1.Main

2.Course

3.Section

4. Registration

1.1 Add

1.1 Add

1.1 Add

1.2 Modify

1.2 Modify

1.2 Modify

4.1 Register

1.3 Delete

1.3 Delete

1.3 Delete

4.2 Drop


การแตกฟังก์ชันของมอดูลอีกรูปแบบ 0.Main

1. Student

2.Course

3.Section

4. Registration

5.Database

5.1 Add

5.2 Modify

5.3 Delete


การเกาะกลุ่มกัน กำรเกำะกลุ่มกัน ( Cohesion) คือ กำรเกำะกลุ่มกันระหว่ำงมอดูล วัตถุ หรือ ส่วนประกอบ ต่ำง ๆ โดยคำนึงถึงดีกรีของควำมสัมพันธ์ (Degree of Relatedness) ภำยในมอดูล วัตถุ หรือ ส่วนประกอบนั้น ๆ Functional Cohesion

Communicational Cohesion Procedural Cohesion Temporal Cohesion

Levels of Cohesion

Sequential Cohesion

Higher the Better

Logical Cohesion Coincidental Cohesion


การพึ่งพากัน (Coupling) กำรติดต่อระหว่ำงข้อมูลมอดูล โดยมอดูลจะส่งผ่ำนพำรำมิเตอร์ไปยังมอดูลอื่น เรียกกว่ำ Function Call เมื่องำนสิ้นสุด มอดูลที่ถูกเรียกจะส่งค่ำกลับคืนมำ เรียกกว่ำ Function Return M1 M11 content coupling with M21

M11

M12

M21

M22



คาถามท้ายบท • รูปแบบเชิงสถำปัตยกรรมคืออะไร และมีควำมสำคัญอย่ำงไร • กำรออกแบบเชิงสถำปัตยกรรมแบบ MVC คืออะไร และมีควำมสำคัญ อย่ำงไร • กำรออกแบบมอดูลที่ดีควรมีลักษณะอย่ำงไร พร้อมทั้งยกตัวอย่ำง ประกอบและมีประโยชน์ต่อกำรพัฒนำซอฟต์แวร์อย่ำงไร


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.