Chapter 1 Introduction to Software Engineering – Software Engineering Chaichan Kusoljittakorn 1
หัวข้อเรียน Software processes Project management Project planning Requirements engineering System modeling Architectural design Design and implementation UML Agile software development Software testing Dependability and security 2
สิ่งที่ต้องรู้ก่อนเรียน เคยเขียนโปรแกรมภาษา Java หรือ C++ สามารถอ่านและเขียนได้ เข้าใจการเขียนโปรแกรมแบบ OOP วิชานี้ ไม่ใช่ วิชาที่เรียนเกี่ยวกับการเขียนโปรแกรม พื้นฐานเกี่ยวกับ algorithm, logic และ set 3
หนังสือและเอกสารประกอบการ เรียน สามารถดาวน์โหลดเอกสารประกอบการเรียนได้ที่ 4
การประเมินผล คะแนนเข้าเรียน 10 คะแนน คะแนนงานในห้องเรียน 20 คะแนน คะแนนสอบกลางภาค 30 คะแนน คะแนนสอบปลายภาค 40 คะแนน น้อยกว่า 35 คะแนน => F 5
Software Engineering As defined in IEEE Standard : “ The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software. ” Software Engineering จะมีความเกี่ยวข้องกับ ทฤษฎี (Theories) วิธีการ (Methods) และ เครื่องมือ (Tools) เพื่อใช้ในการพัฒนาซอฟต์แวร์อย่างมืออาชีพ 6
Engineering Process Model ข้อกำหนด (Specification) กำหนดความต้องการ (requirements) และ ข้อจำกัด (constraints) ของระบบ ออกแบบ (Design) สร้างรูปแบบ (Model) ของ ระบบลงบนกระดาษ การผลิต (Manufacture) สร้างระบบ ทดสอบ (Test) ตรวจสอบระบบกับ ข้อกำหนดที่ต้องการ ติดตั้ง (Install) ส่งระบบให้กับลูกค้าและ ทำให้แน่ใจว่าระบบ สามารถทำงานได้ ดูแลรักษา (Maintain) ซ่อมแซมส่วนที่ผิดพลาด ของระบบ 7
Software Process Models โดยปกติ Requirement จะสิ้นสุดและไม่ชัดเจน และ สามารถเปลี่ยนแปลงได้ตลอดเวลาที่พัฒนา มีความแตกต่างระหว่าง Specification, Design และ Manufacture ไม่ได้ทดสอบระบบกับสภาพแวดล้อมจริง ๆ เมื่อต้องมีการซ่อมแซมระบบ จะไม่เหมือนการซ่อม Hardware ที่จะสามารถซื้ออะไหล่อันใหม่มาใส่แทนอันเก่าที่เสียได้ทันที 8
9
Software costs บ่อยครั้งที่ต้นทุนของการพัฒนาซอฟต์แวร์จะมี มากกว่าฮาร์ดแวร์ ต้นทุนในการดูแลรักษาซอฟท์แวร์มีมากกว่าการ พัฒนาระบบ ยิ่งระบบที่มีอายุนาน ค่าดูแลรักษาจะยิ่ง เพิ่มมากขึ้น Software engineering จำเป็นต้องควบคุมค่าใช้จ่าย ในระหว่างพัฒนาระบบด้วย นอกเหนือจากค่าใช้จ่ายของการพัฒนาและดูแล รักษาแล้ว ยังมีค่าใช้จ่ายที่เกิดจากความเสียหาย ระหว่างใช้งาน (Software bugs) “Cambridge University Study States Software Bugs Cost Economy $312 Billion Per Year” Cambridge, UK (PRWEB) January 08,
Why is Software Development so %$##% Hard? ความซับซ้อนของระบบ (Complexity) ไม่สามารถมองเห็นได้ (Invisibility) ความไม่แน่นอน (Changeability) ความสอดคล้อง (Conformity) 11
Failure in Hardware 12
Software Failure 13
How it Really Works 14
Efficiency Costs 15
Software As Product More than the executable Executable, installation manual, user manual, requirement documentation, design documentation, etc. User-friendly 16
Qualities Are in the Eyes of Beholders 17