วิศวกรรมซอฟต์แวร์เบื้องต้น Introduction to Software Engineering
อาจารย์ สุพิชฌาย์ จันทร์เรือง
แนะนารายวิชา รหัสรายวิชา : 7152305 ชื่อรายวิชา : วิศวกรรมซอฟต์แวร์เบื้องต้น หน่วยกิต : 3(2-2-5) ผู้สอน : อาจารย์สุพิชฌาย์ จันทร์เรือง
คาอธิบายรายวิชา แนะน ากระบวนการพั ฒ นาซอฟต์ แ วร์ และวงจรชี วิ ต การ พัฒนาซอฟต์แวร์ โดยเฉพาะแบบจาลองการพัฒนาแบบวนรอบและ เพิ่มพูนโดยใช้วิธีพัฒนาโปรแกรมเชิงอ็อบเจกต์ หัวข้อที่มีการสอนได้แก่ การเก็บรวบรวมความต้องการของผู้ ใ ช้ การวิเ คราะห์และออกแบบ ระบบโดยใช้ยูเอ็มแอล (UML) การทดสอบระบบ เฟรมเวิร์คและเอพีไอ สถาปัตยกรรมแบบ client-server การวิเคราะห์ ออกแบบและพัฒนา ระบบ client-server อย่างง่าย และเทคโนโลยีที่เกี่ยวข้องกับส่วนต่อ ประสานกั บ ผู้ ใ ช้ นอกจากนี้ ยั ง แนะน ากลยุ ท ธ์ ก ารพั ฒ นาซอฟต์ แ วร์ สมัยใหม่
เนื้อหาทั้งหมด กลางภาค บทที่ 1 ความรู้เบื้องต้นเกี่ยวกับวิศวกรรมซอฟต์แวร์ บทที่ 2 กระบวนการพัฒนาซอฟต์แวร์ บทที่ 3 การพัฒนาซอฟต์แวร์แบบแอจายล์ บทที่ 4 การบริหารโครงการซอฟต์แวร์ บทที่ 5 วิศวกรรมความต้องการ ปลายภาค บทที่ 6 การวิเคราะห์ซอฟต์แวร์ บทที่ 7 การออกแบบซอฟต์แวร์ บทที่ 8 การออกแบบเชิงสถาปัตยกรรม บทที่ 9 การออกแบบส่วนต่อประสานกับผู้ใช้ บทที่ 10 การทดสอบซอฟต์แวร์
บทที่ 1 ความรู้เบื้องต้นเกี่ยวกับวิศวกรรมซอฟต์แวร์
วัตถุประสงค์ บทที่ 1 ความรู้เบื้องต้นเกี่ยวกับวิศวกรรมซอฟต์แวร์ • เพื่อทาความรู้จักกับซอฟต์แวร์และชนิดของซอฟต์แวร์ • เพื่อให้เรียนรู้วิวัฒนาการและวัฏจักรชีวิตของการพัฒนาซอฟต์แวร์ • เพื่อให้เรียนรู้หลักการของวิศวกรรมซอฟต์แวร์
บทที่ 1 ความรู้เบื้องต้นเกี่ยวกับวิศวกรรมซอฟต์แวร์ • • • •
คอมพิวเตอร์เป็นสิ่งที่มีประโยชน์และโทษต่อมนุษย์ ชีวิตประจาวันเราใช้คอมพิวเตอร์ในทุกด้าน ผู้ใช้ต้องป้อนคาสั่งให้กับคอมพิวเตอร์ คาสั่งที่ใช้ควบคุม เรียกว่า ซอฟต์แวร์
เป้าหมายหลักของการพัฒนาซอฟต์แวร์ เพื่อให้ได้ซอฟต์แวร์ที่มีประสิทธิภาพ ถูกต้อง เชื่อถือได้ รวดเร็ว ปลอดภัย ทันสมัย ง่ายต่อการใช้งาน ง่ายต่อการปรับเปลี่ยน เคลื่อนย้ายง่าย มีส่วน ต่อประสานกับระบบอื่น สามารถนากลับมาใช้ใหม่ได้
ซอฟต์แวร์ (Software) • 1957 ถูกใช้ครั้งแรกโดย จอห์น ดับเบิลยู. เทอร์กีย์
• แนวคิดของซอฟต์แวร์ปรากฏครั้งแรกใน บทความของ แอลัน แมธิสัน ทัวริง
ซอฟต์แวร์ (Software) • • • • •
ชุดคาสั่ง ที่เรียงกันเป็นโปรแกรมคอมพิวเตอร์ สั่งงานให้คอมพิวเตอร์ทางาน โครงสร้างข้อมูล เช่น ระบบการจัดการฐานข้อมูล มีการจัดทาเอกสาร ใช้งานบนคอมพิวเตอร์และอุปกรณ์อิเล็กทรอนิกส์อื่น
ธรรมชาติของซอฟต์แวร์ • • • • • •
มองไม่เห็น จับต้องไม่ได้ (Intangible Product) ทาสาเนา นากลับมาใช้ใหม่ได้ (Reuse) ไม่ใช้เครื่องจักรในการผลิต ยากต่อการเปลี่ยนแปลง เพราะระบบซับซ้อนสูง สร้างตามข้อกาหนดที่ลูกค้าและผู้ใช้ต้องการ ซอฟต์แวร์ที่ดีต้องไม่ล้าสมัย
ประเภทของซอฟต์แวร์
software
System software Operating system
Compiler
Application software Utility Program
Device Driver
Package Software
Specific software
ซอฟต์แวร์ระบบ ( System Software) สร้างขึ้น เพื่อบริการโปรแกรมอื่นให้ติดต่อกับฮาร์ดแวร์ และใช้ จัดการกับระบบ หน้าที่ดาเนินการขั้นพื้นฐานของระบบคอมพิวเตอร์ แบ่งเป็น 4 ประเภท
ระบบปฏิบัติการ (Operating System: OS) ตัวแปลภาษา (Compiler) โปรแกรมอรรถประโยชน์ (Utility Program) โปรแกรมขับอุปกรณ์ (Device Driver)
ซอฟต์แวร์ประยุกต์ ( Application Software) เขียนตามความต้องการของผู้ใช้ แบ่งเป็น 2 ประเภท ซอฟต์แวร์สาเร็จ (Package Software) บริษัทต่าง ๆ พัฒนา มาขายเพื่อให้ ผู้ใช้ซื้อไปใช้งาน ซอฟต์แวร์ใช้งานเฉพาะ (Specific Software) พัฒนาสาหรับงานแต่ละ ชนิดเพื่อให้ตรงตามความต้องการของผู้ใช้
เทคโนโลยีคอมพิวเตอร์ แบ่งเป็น 5 ยุค • • • • •
ยุคแรก (ปี ค.ศ. 1950-1965) ยุคที่สอง (ปี ค.ศ. 1960-1975) ยุคที่สาม (ปี ค.ศ. 1975-1985) ยุคที่สี่ (ปี ค.ศ. 1985-2000) ยุคบริการซอฟต์แวร์ (ปี ค.ศ. 2000 ถึง ปัจจุบัน)
วิวัฒนาการของการพัฒนาซอฟต์แวร์ • • • •
ยุคทอง (Golden Age) ยุคธุรกิจช่วงต้น (The Early Business Era) ยุคธุรกิจช่วงปลาย (The Late Business Era) ยุคการออกแบบผลิตภัณฑ์ (The Product Design Era)
วัฏจักรชีวิตของการพัฒนาซอฟต์แวร์ Software Development Life Cycle : SDLC คือ กระบวนการเชิงตรรกะ (Logical Process) ในการพัฒนา ซอฟต์แวร์หรือระบบ เพื่อแก้ไขปัญหา และ พัฒนาการทางานแบ่งเป็น 6 ขั้นตอน
6 กระบวนการ ความต้องการ การวิเคราะห์ซอฟต์แวร์ การออกแบบซอฟต์แวร์ การเขียนโปรแกรม การส่งมอบและการติดตั้ง การสนับสนุนและการบารุงรักษา
Key Success Factor • • • •
การสื่อสารที่ดี ความต้องการของผู้ใช้ชัดเจน การสนับสนุนค่าตอบแทน การวางแผนโครงการที่ดี
สิ่งที่ทาให้โครงการซอฟต์แวร์ ล้มเหลว • • • • • • • • •
ความต้องการของลูกค้าไม่ชัดเจน ลูกค้าบอกความต้องการไม่ได้ วิเคราะห์ ออกแบบระบบ และ ทดสอบซอฟต์แวร์ไม่ดี เทคโนโลยีมีการเปลี่ยนแปลง การลาออก เปลี่ยนงาน ส่งมอบช้ากว่ากาหนด ใช้งบประมาณเกิน ซอฟต์แวร์ไม่เข้ากับสภาพแวดล้อม บารุงรักษายาก ค่าใช้จ่ายสูง
องค์ประกอบของวิศวกรรมซอฟต์แวร์
ระเบียบวิธี เทคนิค
สภาพแวดล้อม
ประโยชน์ของวิศวกรรมซอฟต์แวร์ มีมาตรฐานในการกาหนดวิธีการทางานอย่างชัดเจน กระบวนการพัฒนาซอฟต์แวร์เป็นระบบและมีประสิทธิภาพ มีเอกสารควบคุมการทางานของทุกกระบวนการ หากมีการเปลี่ยนแปลงทีมงาน คนอื่นสามารถทางานได้ต่อ มีการตรวจสอบและรับประกันคุณภาพซอฟต์แวร์ ก่อนส่งมอบ
คุณลักษณะของกระบวนการทางวิศวกรรมซอฟต์แวร์ • • • • • • • •
ความสามารถในการเข้าใจ ความสามารถในการมองเห็น ความสามารถในการสนับสนุน ความสามารถในการยอมรับ ความเชื่อถือได้ สภาพทนทาน ความสามารถในการบารุงรักษา ความรวดเร็ว
วิทยาการคอมพิวเตอร์ & วิศวกรรมซอฟต์แวร์ วิทยาการคอมพิวเตอร์ • บนรากฐานทางวิทยาศาสตร์ • ทาความเข้าใจและค้นหาความจริงเกี่ยวกับความรู้ทางคอมพิวเตอร์ • เพื่อสร้างแนวคิดทฤษฏีใหม่ • ขยายความรู้จากทฤษฏีเดิม
วิทยาการคอมพิวเตอร์ & วิศวกรรมซอฟต์แวร์ วิศวกรรมซอฟต์แวร์ • ตั้งบนรากฐานด้านวิศวกรรมศาสตร์ • ใช้ความรู้ทางวิทยาศาสตร์ คณิตศาสตร์ และเทคโนโลยี เพื่อพัฒนา ซอฟต์แวร์ที่ตรงความต้องการของผู้ใช้ และเกิดประโยชน์สูงสุด
ความแตกต่าง CS & SE เกณฑ์ ความซับซ้อนของระบบ จานวนของนักพัฒนาซอฟต์แวร์ เวลาในการพัฒนาซอฟต์แวร์ ค่าใช้จ่ายในการบารุงรักษาซอฟต์แวร์ ความสามารถนากลับมาใช้ใหม่
CS ต่า น้อย สั้น ต่า น้อย
SE สูง มาก นาน สูง มาก
บุคคลที่เกี่ยวข้องกับการพัฒนาซอฟต์แวร์
ลูกค้า
ผู้ใช้
ผู้จัดการโครงการ
นักวิเคราะห์ ระบบ
นักออกแบบ ระบบ
นักพัฒนา ซอฟต์แวร์
ผู้จัดการฝ่าย พัฒนาซอฟต์แวร์
นักเขียน โปรแกรม
นักวิศวกร ซอฟต์แวร์
นักทดสอบระบบ
นักบารุงรักษา ระบบ
ความสัมพันธ์ระหว่างบุคคลกับคุณภาพซอฟต์แวร์ User
Developer
Software Quality
Developm ent Manager
Customer
8 หลักจริยธรรมที่ หน่วยงาน ACM/IEEE 1. นักวิศวกรซอฟต์แวร์ต้องปฏิบัติหน้าที่ โดยคานึงถึงประโยชน์ส่วนรวม เป็นหลัก 2. นักวิศวกรซอฟต์แวร์ต้องคานึงถึงความต้องการของลูกค้าและนายจ้าง โดยสอดคล้องกับประโยชน์ส่วนรวม 3. นักวิศวกรซอฟต์แวร์ต้องผลิตซอฟต์แวร์ตามหลักการมาตรฐาน วิชาชีพ 4. นักวิศวกรซอฟต์แวร์ต้องตัดสินใจอย่างอิสระและรวมเป็นอันหนึ่งอัน เดียวกัน โดยประเมินตามหลักการของมาตรฐานวิชาชีพ
8 หลักจริยธรรมที่ หน่วยงาน ACM/IEEE 1. ผู้จัดการโครงการและผู้นาสนับสนุนและเผยแพร่แนวคิดด้าน จริยธรรม เพื่อบริหารโครงการซอฟต์แวร์และบารุงรักษาซอฟต์แวร์ 2. นักวิศวกรซอฟต์แวร์ต้องยึดมั่นในคุณธรรมและรักษาชื่อเสียงใน วิชาชีพ โดยคานึงถึงประโยชน์ส่วนรวม 3. นักวิศวกรซอฟต์แวร์ต้องมีความเป็นธรรมและให้การสนับสนุนเพื่อน ร่วมงาน 4. นักวิศวกรซอฟต์แวร์ต้องมีการเรียนรู้เกี่ยวกับวิชาชีพตลอดชีวิต และ ให้การสนับสนุนแนวคิดด้านจริยธรรม เพื่อนาไปสู่การเป็นมืออาชีพ
คาถามท้ายบท • • • • •
วิศวกรรมซอฟต์แวร์คืออะไร และสาคัญอย่างไร อธิบายคุณลักษณะของซอฟต์แวร์ที่มีคุณภาพ อธิบายบุคคลที่เกี่ยวข้องกับการพัฒนาซอฟต์แวร์และความเกี่ยวข้อง อธิบายคุณลักษณะของกระบวนการทางวิศวกรรมซอฟต์แวร์ วัฏจักรชีวิตของการพัฒนาซอฟต์แวร์คืออะไร สาคัญอย่างไร