1 / 28

วิศวกรรมซอฟแวร์

วิศวกรรมซอฟแวร์. อ.วิวัฒน์ ชินนาทศิริกุล. แนะนำรายวิชา.

kory
Download Presentation

วิศวกรรมซอฟแวร์

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. วิศวกรรมซอฟแวร์ อ.วิวัฒน์ ชินนาทศิริกุล

  2. แนะนำรายวิชา เนื้อหาวิชาครอบคลุมพื้นฐานทางวิทยาศาสตร์สำหรับวิศวกรรมซอฟต์แวร์โดยเรียนรู้กระบวนการพัฒนาและ วัฏจักรในการพัฒนาซอฟต์แวร์ ซึ่งมุ่งเน้นไปที่การนำหลักการเชิงวัตถุมาใช้กับรูปแบบการพัฒนาซอฟต์แวร์ รวมทั้งครอบคลุมถึงกลยุทธ์ต่างๆ ที่ใช้ในการพัฒนาซอฟต์แวร์

  3. วิศวกรรมซอฟต์แวร์ (Software Engineering)คืออะไร • การวางรากฐานโดยใช้หลักการทางวิศวกรรมเพื่อให้ซอฟท์แวร์มีความน่าเชื่อถือและสามารถใช้งานได้อย่างมีประสิทธิภาพ ในราคาต่ำที่สุด • วิศวกรรมซอฟต์แวร์ คือกระบวนการสร้างสรรค์โปรแกรมโดยใช้หลักทางวิศวกรรมเข้ามาช่วยในการดำเนินการสร้าง (อ.สมหมาย สุขคำ) • “Software Engineering is systematic approach to the development operation , maintenance , retirement of software” (IEEE 83b)

  4. วิศวกรรมซอฟต์แวร์ (Software Engineering)คืออะไร • “วิชาการว่าด้วยการออกแบบโปรแกรมคอมพิวเตอร์ ตลอดจนการบริหารงานการพัฒนาเพื่อที่จะได้มาซึ่ง ผลิตผลซอฟต์แวร์ที่มีคุณภาพสูง ราคาถูก และภายในเวลาที่กำหนดให้”(สุชาย ธนวเสถียร)

  5. ปัจจัยที่ทำให้เกิด Software Engineering • ความก้าวหน้าของเทคโนโลยี • ราคาของฮาร์ดแวร์ และซอฟท์แวร์ - เป็นค่าใช้จ่ายหลักของระบบ - ราคาของซอฟท์แวร์จะสูงกว่าฮาร์ดแวร์เสมอ - ค่าบำรุงรักษาซอฟท์แวร์จะสูงกว่าค่าใช้จ่ายในการพัฒนา • ความสำคัญของการบำรุงรักษา • ความต้องการในการใช้งานที่เพิ่มมากขึ้น • ขนาดและความซับซ้อนของระบบงานที่เพิ่มขึ้น

  6. Software Engineering VS Software Programming • Software Programming • จำนวนโปรแกรมเมอร์น้อย ใช้เวลาในการพัฒนาและใช้งานสั้นๆ • นักพัฒนาทำหน้าที่หลายอย่าง - เป็นโปรแกรมส่วนใดส่วนของระบบงานที่มีอยู่ - พัฒนาจากจุดเริ่มต้นเสมอ - ค่าบำรุงรักษาน้อย

  7. Software Engineering VS Software Programming • Software Engineering - ทำงานเป็นทีม ทำหน้าที่แตกต่างกัน - ระบบงานที่มีความซับซ้อนสูง - มีอายุการใช้งานยาวนาน - Reusability - ค่าบำรุงรักษาจะสูงกว่าค่าใช้จ่ายในการพัฒนาคิดได้เป็น 60% ของค่าใช้จ่ายทั้งหมด

  8. ทำไมต้องมี Software Engineering ? • โปรเจคขนาดใหญ่ที่ประสบความสำเร็จโดยไม่ได้ใช้วิธีทางวิศวกรรมซอฟท์แวร์ - ซอฟท์แวร์ที่จำหน่ายออกมาแล้วไม่มีการนำมาแก้ไขใหม่ • โปรเจคที่ประสบความล้มเหลวเนื่องจากไม่ได้ใช้วิธีทางวิศวกรรมซอฟท์แวร์ - โปรแกรมเมอร์เปลี่ยนงาน - ขาดความเข้าใจกับระบบที่ถูกต้อง - โปรเจคสามารถส่งมอบได้แต่ขาดคุณภาพ - การเปลี่ยนแปลงทางเทคโนโลยีในระหว่างการพัฒนา

  9. ทำไมต้องมี Software Engineering ? • ซอฟท์แวร์มีราคาแพง • ความสามารถของซอฟท์แวร์ที่ต่ำกว่าที่คาดหวัง • การส่งมอบช้ากว่ากำหนด • เอกสารประกอบที่ไม่ชัดเจน ขาดความสมบูรณ์ • ใช้งานไม่ตรงความต้องการของผู้ใช้ • บำรุงรักษาได้ยาก • อาจเกิดความไม่เข้ากันของซอฟท์แวร์กับสภาพแวดล้อมเมื่อทำการติดตั้งใช้งาน • การใช้งานที่ไม่น่าเชื่อถือ

  10. ทำไมต้องมี Software Engineering ? • สถิติต่างที่เกี่ยวข้อง • หนึ่งในสี่ของระบบที่พัฒนาไม่สามารถส่งมอบงานได้ • การเปลี่ยน Staff จำนวน 20% เป็นเรืองปกติ • งานหลักๆ ใช้เวลาพัฒนาเกินกว่า 30 เดือน • โปรเจคขนาดใหญ่ใช้เวลา 3-5 ปี • บริษัททั่วไปจะใช้งบปริมาณเกี่ยวกับการพัฒนา IT ถึง 20% ของงบประมาณทั้งหมด • 25% พัฒนาไม่เสร็จ • 100% เกินงบประมาณทั้งสิ้น

  11. ทำไมต้องมี Software Engineering ? • สถิติต่างที่เกี่ยวข้อง • หนึ่งในสี่ของระบบที่พัฒนาไม่สามารถส่งมอบงานได้ • การเปลี่ยน Staff จำนวน 20% เป็นเรืองปกติ • งานหลักๆ ใช้เวลาพัฒนาเกินกว่า 30 เดือน • โปรเจคขนาดใหญ่ใช้เวลา 3-5 ปี • บริษัททั่วไปจะใช้งบปริมาณเกี่ยวกับการพัฒนา IT ถึง 20% ของงบประมาณทั้งหมด • 25% พัฒนาไม่เสร็จ • 100% เกินงบประมาณทั้งสิ้น

  12. ความเป็นจริง ? • ทำไมซอฟท์แวร์ถึงใช้เวลานานในการพัฒนา ? • ทำไมค่าใช้จ่ายในการพัฒนาซอฟท์แวร์จึงสูง ? • ทำไมข้อผิดพลาดของซอฟท์แวร์จึงไม่พบก่อนที่จะส่งมอบให้แก่ผู้ใช้ ? • ทำไมค่าใช้จ่าย เวลา และคุณภาพของซอฟท์แวร์ในการพัฒนาจึงไม่สามารถประมาณการได้ ? • ทำไมจึงเกิดผลกระทบอย่างมากเมื่อมีการเปลี่ยนแปลงของซอฟท์แวร์ ?

  13. ความเป็นจริง ? • Development Life Cycle • งบที่บานปลาย • ความล่าช้าในการส่งมอบ • คุณภาพของนักพัฒนา • Operation Life Cycle • ค่าใช้จ่ายในการบำรุงรักษาที่สูงมาก • ความลมเหลวจากการทำงานที่เกิดขึ้นจาก • System Down Time • Poor Quality

  14. หนทางข้างหน้า... • อุตสาหกรรมซอฟท์แวร์ที่มีขนาดใหญ่ขึ้น ขยายขอบเขตไปทุกส่วนงาน มีผลให้วิถีชีวิตเปลี่ยนไป • Software Crisis • แนวโน้มในการพัฒนาเน้นที่ • คุณภาพของ Product • ความสำเร็จในการพัฒนาโดยอาศัย Process

  15. Product and Process • เป็นหัวใจหลักของวิศวกรรมซอฟท์แวร์ • การเปลี่ยนแนวความคิดจาก Product ไปเน้นที่ Process • Structure Programming – Product • Structure Analysis and Design – Process • Data Encapsulation (OO Language) – Product • Capability Maturity Model/ISO9000 – Process • Software Product จะต้องมีคุณภาพ โดยผ่านการจัดการที่ดีมีการทำงานถูกต้อง สามารถแข่งขันในตลาดได้

  16. Software Product • ความแตกต่างกับ Hardware Product • การพัฒนาซอฟท์แวร์ต่างจากอุสาหกรรมการผลิตอื่นๆ • ซอฟท์แวร์ไม่มีการเสียหายและอายุการใช้งาน • ซอฟท์แวร์สร้างแบบ Custom-Built ไม้ได้เกิดจากการประกอบของชิ้นส่วนต่างๆ • Software Product ต้องมีคุณสมบัติดังนี้ • ทำงานถูกต้องตามกำหนด มีคามน่าเชื่อถือ • มีประสิทธิภาพ บำรุงรักษาง่าย • มีส่วนติดต่อผู้ใช้ที่เหมาสม • มีอายุการใช้งานที่เหมาะสม

  17. Software Product ประกอบไปด้วย • โปรแกรม • ข้อมูล • เอกสารประกอบการใช้งาน • Product สามารถแบ่งได้เป็น 2 แบบคือ • Generic – ระบบที่ใช้งานทั่วไปซึ่งถือเป็นซอฟท์แวร์ที่พบเห็นส่วนใหญ่ • Bespoke – ระบบที่ออกแบบมาเฉพาะการทำงานตามความต้องการของลูกค้า

  18. นิยามของซอฟแวร์ • ในปทานุกรมศัพท์การประมวลผลสารสนเทศตามาตรฐาน JIS (JIS X 001-1987)ได้นิยามคำว่าซอฟแวร์ว่า “ซอฟต์แวร์เป็นสิ่งสร้างสรรค์เชิงปัญญา เพื่อทำให้ระบบทำการประมวลผลข้อมูล ซอฟต์แวร์ประกอบจากโปรแกรม กระบวนการ ข้อกำหนด และเอกสารที่เกี่ยวข้อง”

  19. ซอฟแวร์ที่ดี เป็นอย่างไร ?? • ขึ้นอยู่กับมุมมองของผู้ใช้งาน หรือ ผู้พัฒนาโปรแกรม มุมมองของ ผู้พัฒนาซอฟต์แวร์และผู้ใช้ มุมมองของ ผู้พัฒนาซอฟต์แวร์

  20. วงจรชีวิตของซอฟแวร์ • วงจรชีวิต ของซอฟแวร์ มี 3 ขั้นตอนใหญ่ๆคือ 1. วางแผน -> สรุปความต้องการ ออกแบบภายนอก 2. พัฒนา -> ออกแบบภายใน ลงรหัส ทดสอบ 3. ใช้งาน บำรุงรักษา -> ใช้งาน บำรุงรักษา การบำรุงรักษา หมายถึง งานปรับแก้ซอฟต์แวร์เพื่อแก้ไขข้อบกพร่องที่พบระหว่างการใช้งาน เพื่อป้องกันความผิดพลาดที่อาจเกิดขึ้น และให้ตอบสนองความต้องการใหม่

  21. สัดส่วนต้นทุนของซอฟแวร์สัดส่วนต้นทุนของซอฟแวร์

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

  23. องค์ประกอบของการวิศวกรรมซอฟต์แวร์องค์ประกอบของการวิศวกรรมซอฟต์แวร์ • ประกอบด้วย 1. วิธีการ (Methodology) เป็นตัวกำหนดว่าจะต้องใช้วิธีใดในการพัฒนาซอฟแวร์ ผู้เกี่ยวข้องแต่ละคนมีบทบาท หน้าที่อย่างไร ทำอย่างไรจึงจะทราบความคืบหน้าในการพัฒนาซอฟแวร์ 2. เทคนิค (Technique) ประกอบด้วยเทคนิคในการวางแผน และเทคนิคในขั้นตอนการออกแบบและพัฒนา

  24. องค์ประกอบของการวิศวกรรมซอฟต์แวร์ (ต่อ) 3. สิ่งแวดล้อม (Environment) หรืออาจเรียกว่า ทูล (Tool) หรือเครื่องมือในการพัฒนา หากเลือกใช้ภาษาและเครื่องมือที่เหมาะสมการพัฒนาก็จะมีประสิทธิภาพ

  25. องค์ประกอบของการวิศวกรรมซอฟต์แวร์ (ต่อ) • แบบน้ำตก • แบบเกลียว • แบบสตรักเจอร์ • แบบ Object Oriented วิธีการ การบริหาร โครงการ การพัฒนา ซอฟต์แวร์ สิ่งแวดล้อม เทคนิค • พีซี • ระบบปฏิบัติการ • ระบบไคลเอนต์เซิร์ฟเวอร์ • สิ่งแวดล้อมในการพัฒนา • อินเทอร์เน็ต • OS • เทคนิคแบบ Object Oriented • อัลกอริทึม • ภาษาที่ใช้เขียนโปรแกรม • CASE Tool

  26. คุณลักษณะของกระบวนการวิศวกรรมซอฟต์แวร์คุณลักษณะของกระบวนการวิศวกรรมซอฟต์แวร์ • Understandability : มีการนิยามขอบเขตของกระบวนการที่ชัดแจ้งและง่ายต่อการเข้าใจ • Visibility : ทำให้กิจกรรมกระบวนการชัดเจนที่สุดเพื่อสามารถมองเห็นจากภายนอกได้ชัดเจน • Supportability : เครื่องมือช่วยการวิศวกรรมซอฟต์แวร์ (CASE)สามารถช่วยสนับสนุนกิจกรรมกระบวนการในขอบเขตใด

  27. คุณลักษณะของกระบวนการวิศวกรรมซอฟต์แวร์คุณลักษณะของกระบวนการวิศวกรรมซอฟต์แวร์ • Acceptability : กระบวนการที่กำหนดสามารถยอมรับและใช้โดยวิศวกรซอฟต์แวร์ในการผลิตผลิตภัณฑ์ซอฟต์แวร์ • Reliability : กระบวนการถูกออกแบบในแนวทางซึ่งความผิดพลาดของกระบวนการถูกหลีกเลี่ยงก่อนที่จะส่งผลต่อความผิดพลาดของผลิตภัณฑ์ซอฟต์แวร์ • Robustness : กระบวนการสามารถทำงานต่อได้แม้นว่ามีปัญหาที่ไม่คาดการณ์เกิดขึ้น

  28. คุณลักษณะของกระบวนการวิศวกรรมซอฟต์แวร์คุณลักษณะของกระบวนการวิศวกรรมซอฟต์แวร์ • Maintainability : กระบวนการสามารถวิวัฒนาการเพื่อตอบสนองการเปลี่ยนแปลงความต้องการขององค์กร • Rapidity : กระบวนการสามารถทำให้ส่งมอบผลิตภัณฑ์ได้เร็วนับจากที่รูปแบบคุณลักษณะของซอฟต์แวร์(Software specifications) ถูกกำหนด

More Related