INTRODUCTION SOFTWARE ARCHITECTURE AND DESIGN WATTANAPON G SUTTAPAK Software Engineering, School of Information Communication Technology, University of PHAYAO 1
จุดประสงค์การเรียนรู้ เข้าใจถึงความหมายของสถาปัตยกรรม เข้าใจถึงความหมายของสถาปัตยกรรม ซอฟต์แวร์ เข้าใจถึงที่มาและความสำคัญของ สถาปัตยกรรมซอฟต์แวร์ เข้าใจถึงจุดสำคัญในการออกแบบระบบ ด้วยสถาปัตยกรรมซอฟต์แวร์ 2
ARCHITECTURE หมายถึง ศิลปะและวิทยาเกี่ยวกับงานก่อสร้างที่ประกอบ ด้วยศิลปะลักษณะ อ้างอิง พจนานุกรม ฉบับราชบัณฑิตยสถาน พ. ศ. ๒๕๔๒ 3
ARCHITECTURE Durability( ความทนทาน ) ต้องคงทน ไม่ล้มพังทลายง่าย Utility( มีประโยชน์ ) เอื้ออำนวยความสะดวกให้กับผู้อยู่อาศัย Beautiful( สวยงาม ) มีความสวยงาม 4
ARCHITECTURE 5
6
7 การสร้างสถาปัตยกรรมเกิดขึ้นมานานมาก เก่ามากตั้งแต่มนุษย์เริ่มมีการเข้าสังคม และจะเกิดขึ้นไปจนถึงการล่มสลายของระบบสุริย จักรวาล
ARCHITECTURE ขนาดเล็ก โมเดลเล็ก กระบวนการสร้างง่ายๆ ใช้เครื่องมือไม่เยอะ 8
ARCHITECTURE ขนาดกลาง มีการวางแผนสร้างโมเดล กระบวนการสร้างรัดกุม มีประสบการณ์ ใช้เครื่องมือและเครื่องจักรขนาดใหญ่ 9
ARCHITECTURE ขนาดใหญ่ สถาปนิกและวิศวกร 10
SOFTWARE ARCHITECTURE เกิดขึ้นในกรณีที่ซอฟต์แวร์มีขนาดใหญ่ How large? time? people? cost? และเมื่อซอฟต์แวร์มีขนาดใหญ่ ยากต่อการประเมินการ สร้าง LOC? Deployment size? 11
HOW LARGE? ขั้นตอนในการประเมินคือ ดูว่าระบบใหญ่แค่ไหน 12
HOW LARGE? วัดจากเวลาและคนพัฒนา 13 งานจำนวน คน เวลาในการพัฒนา A3 1 เทอม B5 2 เดือน C1 6 เดือน D1 3 เดือน E5 COST
SYSTEM Software Engineering Programming Languages Algorithm and Complexity Database 14 Software Architecture Component-based Software Engineering การสร้าง องค์ประก อบขึ้นมา เอง การออกแบบ ระบบโดยนำ องค์ประกอบ ซอฟต์แวร์มา ใช้
SYSTEM 15 size compl exity softwar e design & global structure specific algorithm & data structure
ABSTRACTION ควรให้ความสำคัญกับจุดไหนของซอฟต์แวร์ 16 usabili ty Reliabil ity (security) performa nce availabilit y (toleranc e) interoper ability Modifiabil ity scalabilit y flexibility enhance ability
DEFINING SOFTWARE ARCHITECTURE 17
IT IS ALL IN MY HEAD. 18 ©Copy right
19 ©copy right
VALUE OF ARCHITECTURE 20 อ้างอิง
ROLE OF SOFTWARE ARCHITECTURE 1.software Engineering Lead 2.Facilitate Communicate 3.Technology Expert 4.Risk Management 21
ROLE OF SOFTWARE ARCHITECTURE 1.software Engineering Lead มีความชำนาญทักษะทาง SE แสดงตัวอย่างให้กับทีมพัฒนาได้ แก้ปัญหายากๆ ได้ สามารถตัดสินใจในทางเลือกยากๆ ได้ แสดงเหตุผลถึงโครงสร้าง Software architecture ได้ 2.Facilitate Communicate 3.Technology Expert 4.Risk Management 22
ROLE OF SOFTWARE ARCHITECTURE 1.software Engineering Lead 2.Facilitate Communicate 3.Technology Expert 4.Risk Management 23 ©Copy right
ROLE OF SOFTWARE ARCHITECTURE 1.software Engineering Lead 2.Facilitate Communicate 3.Technology Expert เข้าใจถึงเทคโนโลยีที่มีความสัมพันธ์กัน ประเมินและโน้มน้าวทีมในการใช้ framework,componet หรือ platform ติดตามการพัฒนาเทคโนโลยี รู้ในสิ่งที่ตัวเองไม่รู้ 4.Risk Management 24
ROLE OF SOFTWARE ARCHITECTURE 1.software Engineering Lead 2.Facilitate Communicate 3.Technology Expert 4.Risk Management ประมาณการและประเมินความเสี่ยงที่เกิดจากการออกแบบ มีการทำเอกสารและมีการจัดการกับความเสี่ยง โดยทำให้ทั้งทีม ตระหนักถึงความสำคัญ ป้องกันความเสียหาย ( หายนะ ) ที่อาจจะเกิดขึ้น 25