370 likes | 912 Views
วิชา ITSC2301 วิศวกรรมซอฟต์แวร์ (Software Engineering). อาจารย์ผู้สอน อ. พรภัทรา ภัทรจารี วท.ม. (เทคโนโลยีสารสนเทศและการสื่อสาร : Data communication & Network ) สถาบันเทคโนโลยีพระจอมเกล้า พระนครเหนือ วท.บ. (วิทยาการคอมพิวเตอร์) มหาวิทยาลัยเกษตรศาสตร์. แนะนำรายวิชา.
E N D
วิชา ITSC2301วิศวกรรมซอฟต์แวร์ (Software Engineering) อาจารย์ผู้สอน อ. พรภัทรา ภัทรจารี วท.ม. (เทคโนโลยีสารสนเทศและการสื่อสาร :Data communication & Network) สถาบันเทคโนโลยีพระจอมเกล้า พระนครเหนือ วท.บ. (วิทยาการคอมพิวเตอร์) มหาวิทยาลัยเกษตรศาสตร์
แนะนำรายวิชา • เนื้อหาวิชาครอบคลุมพื้นฐานทางวิทยาศาสตร์สำหรับวิศวกรรมซอฟต์แวร์โดยเรียนรู้กระบวนการพัฒนาและ วัฏจักรในการพัฒนาซอฟต์แวร์ ซึ่งมุ่งเน้นไปที่การนำหลักการเชิงวัตถุมาใช้กับรูปแบบการพัฒนาซอฟต์แวร์ รวมทั้งครอบคลุมถึงกลยุทธ์ต่างๆ ที่ใช้ในการพัฒนาซอฟต์แวร์
ข้อตกลงในชั้นเรียน • เวลาเข้าเรียนไม่ต่ำกว่าร้อยละ 80 • ขาดได้ไม่เกิน 3 ครั้ง • มาสายกว่าเวลาเรียนครึ่งชั่วโมง 2 ครั้ง ถือว่าขาด 1 ครั้ง • ส่งงานที่ได้รับมอบหมายทั้งหมดครบและตรงตามระยะเวลาที่กำหนด • การแต่งกาย ให้เป็นไปตามระเบียบมหาวิทยาลัยกำหนด หากฝ่าฝืนจะไม่ได้รับอนุญาตให้เข้าชั้นเรียน
ข้อตกลงในชั้นเรียน • หากนักศึกษาผู้ใดไม่ได้เข้าสอบกลางภาค และมาติดต่อผู้สอนหลังจากสัปดาห์ที่ 12 ไปแล้ว จะไม่ได้รับอนุญาตให้สอบกลางภาค ยกเว้นกรณี • ป่วย,ได้รับอุบัติเหตุ • มีกิจธุระสำคัญทางราชการ โดยจะต้องทำจดหมายลาหรือมีหนังสือชี้แจงล่วงหน้า ทั้งนี้ขึ้นอยู่กับดุลยพินิจของผู้สอน
ข้อตกลงในการกำหนดคะแนนข้อตกลงในการกำหนดคะแนน • ระหว่างภาค (70%) แบ่งเป็น • ความสนใจ (การเข้าเรียน จริยธรรม และ การแต่งกาย) 15% • งานที่ได้รับมอบหมาย 25% • สอบกลางภาค 30% • ปลายภาค (30%) • สอบปลายภาค 30%
ระดับการประเมินผล (อิงเกณฑ์) • 80-100 A • 75-79 B+ • 70-74 B • 65-69 C+ • 60-64 C • 55-59 D+ • 50-54 D • 0-49 E
เรียนอะไรในวิชา • บทนำ-วิศวกรรมซอฟต์แวร์ (Introduction to Software Engineering) • ภาพรวมของกระบวนการ (A Generic View of Process) • แบบจำลองกระบวนการพัฒนาระบบ (Process Model) • การประมาณการซอฟต์แวร์ (Software Estimation) • วิศวกรรมความต้องการ (Requirement Engineering) • การสร้างแบบจำลองการวิเคราะห์ (Analysis Model) • การวิเคราะห์เชิงวัตถุ (Object Oriented Analysis) • วิศวกรรมการออกแบบ (Design Engineering) • การออกแบบส่วนต่อประสานผู้ใช้ (User Interface Design) • การทดสอบซอฟต์แวร์ (Testing) สอบกลางภาค สอบปลายภาค
หนังสือที่ใช้ในการทบทวนหนังสือที่ใช้ในการทบทวน • วิศวกรรมซอฟต์แวร์ (Software Engineering) Roger S. Pressman แปลโดย ผศ.ดร.พรฤดี เนติโสภากุล • การวางแผนโครงการพัฒนาซอฟต์แวร์ (Software Project Planning) เมสินี นาคมณี
Introduction • วิศวกรรมซอฟต์แวร์ (Software Engineering) มุมมองทางการศึกษาในแง่ของสาขาวิชา ในปี ค.ศ. 1968 คำว่า”วิศวกรรมซอฟต์แวร์(software engineering)” ถูกใช้อย่างแพร่หลายเพื่อแสดงถึงกิจกรรมต่างๆที่รวมถึงการเขียนโปรแกรม (programming) และการรหัส(coding) [Macro, 1987]. ก่อนปี ค.ศ. 1974 สาขาวิชาวิศวกรรมซอฟต์แวร์ยังไม่ปรากฏ [Barnes, 1998]. สถาบันเทคโนโลยีโรเชสเตอร์ (The Rochester Institute of Technology (RIT)) ในประเทศสหรัฐอเมริกาได้อ้างว่าเป็นสถาบันแรกที่แนะนำหลักสูตรปริญญาตรีสาขาวิศวกรรมซอฟต์แวร์ [Lutz, 1999].
วิศวกรรมซอฟต์แวร์ (Software Engineering) • วิศวกรรมซอฟต์แวร์ คือกระบวนการสร้างสรรค์โปรแกรมโดยใช้หลักทางวิศวกรรมเข้ามาช่วยในการดำเนินการสร้าง (อ.สมหมาย สุขคำ) • “Software Engineering is systematic approach to the development operation , maintenance , retirement of software” (IEEE 83b) • “วิชาการว่าด้วยการออกแบบโปรแกรมคอมพิวเตอร์ ตลอดจนการบริหารงานการพัฒนาเพื่อที่จะได้มาซึ่ง ผลิตผลซอฟต์แวร์ที่มีคุณภาพสูง ราคาถูก และภายในเวลาที่กำหนดให้” (สุชาย ธนวเสถียร)
วิทยาการคอมพิวเตอร์และวิศวกรรมซอฟต์แวร์วิทยาการคอมพิวเตอร์และวิศวกรรมซอฟต์แวร์ • วิทยาการคอมพิวเตอร์ (Computer Science) อยู่บนรากฐานของวิทยาศาสตร์ ซึ่งเน้นการทำความเข้าใจและค้นหาความจริงเกี่ยวกับความรู้ทางคอมพิวเตอร์ เพื่อสร้างแนวคิด/ทฤษฎีใหม่ หรือ ปฏิเสธแนวคิด/ทฤษฎีเดิม และขยายวงความรู้ให้กว้างขึ้นจากแนวคิด/ทฤษฎีที่มีอยู่ * ผลงานถูกพิจารณา หรือ ตัดสินโดยกลุ่มนักวิทยาศาสตร์
วิทยาการคอมพิวเตอร์และวิศวกรรมซอฟต์แวร์วิทยาการคอมพิวเตอร์และวิศวกรรมซอฟต์แวร์ • วิศวกรรมซอฟต์แวร์ (Software Engineering) อยู่บนรากฐานของวิธีการทางวิศวกรรมศาสตร์ ซึ่งประยุกต์แนวคิด/ทฤษฎีทางวิทยาศาสตร์ คณิตศาสตร์และเทคโนโลยีขณะนั้นในการสร้างผลิตภัณฑ์ที่เป็นประโยชน์และปลอดภัยต่อสาธารณะ * ผลงานถูกพิจารณา หรือ ตัดสินโดยกลุ่มผู้ใช้
ลักษณะของวิศวกรรมซอฟต์แวร์ • เกี่ยวข้องกับการสร้างโปรแกรมขนาดใหญ่ • สามารถจัดการเกี่ยวกับความซ้ำซ้อนได้ • เน้นการทำงานร่วมกันของบุคลากร • สามารถเปลี่ยนแปลงได้ง่ายเมื่อจำเป็น • เน้นการพัฒนาให้มีประสิทธิภาพ • สนองความต้องการของผู้ใช้
องค์ประกอบของการวิศวกรรมซอฟต์แวร์องค์ประกอบของการวิศวกรรมซอฟต์แวร์ • การวิศวกรรมซอฟต์แวร์เป็นกระบวนการผลิต (production) ที่ประกอบด้วยกิจกรรมช่วงต่างๆ เพื่อสร้างผลิตภัณฑ์ซอฟต์แวร์ (software products) การทำกิจกรรมในแต่ละช่วงอาศัยเทคนิคและเครื่องมือช่วยต่างๆ (support tools) ที่นักวิชาการคอมพิวเตอร์และนักวิจัยได้เสนอไว้
องค์ประกอบของการวิศวกรรมซอฟต์แวร์องค์ประกอบของการวิศวกรรมซอฟต์แวร์ Software production processes Software products Support tools /Environments Market places / users
คุณลักษณะของกระบวนการวิศวกรรมซอฟต์แวร์คุณลักษณะของกระบวนการวิศวกรรมซอฟต์แวร์ • Understandability : มีการนิยามขอบเขตของกระบวนการที่ชัดแจ้งและง่ายต่อการเข้าใจ • Visibility : ทำให้กิจกรรมกระบวนการชัดเจนที่สุดเพื่อสามารถมองเห็นจากภายนอกได้ชัดเจน • Supportability : เครื่องมือช่วยการวิศวกรรมซอฟต์แวร์ (CASE)สามารถช่วยสนับสนุนกิจกรรมกระบวนการในขอบเขตใด
คุณลักษณะของกระบวนการวิศวกรรมซอฟต์แวร์คุณลักษณะของกระบวนการวิศวกรรมซอฟต์แวร์ • Acceptability : กระบวนการที่กำหนดสามารถยอมรับและใช้โดยวิศวกรซอฟต์แวร์ในการผลิตผลิตภัณฑ์ซอฟต์แวร์ • Reliability : กระบวนการถูกออกแบบในแนวทางซึ่งความผิดพลาดของกระบวนการถูกหลีกเลี่ยงก่อนที่จะส่งผลต่อความผิดพลาดของผลิตภัณฑ์ซอฟต์แวร์ • Robustness : กระบวนการสามารถทำงานต่อได้แม้นว่ามีปัญหาที่ไม่คาดการณ์เกิดขึ้น
คุณลักษณะของกระบวนการวิศวกรรมซอฟต์แวร์คุณลักษณะของกระบวนการวิศวกรรมซอฟต์แวร์ • Maintainability : กระบวนการสามารถวิวัฒนาการเพื่อตอบสนองการเปลี่ยนแปลงความต้องการขององค์กร • Rapidity : กระบวนการสามารถทำให้ส่งมอบผลิตภัณฑ์ได้เร็วนับจากที่รูปแบบคุณลักษณะของซอฟต์แวร์(Software specifications) ถูกกำหนด
Introduction • ซอฟต์แวร์ (software) หมายถึงชุดคำสั่งหรือโปรแกรมที่ใช้สั่งงานให้คอมพิวเตอร์ทำงาน ซอฟต์แวร์จึงหมายถึงลำดับขั้นตอนการทำงานที่เขียนขึ้นด้วยคำสั่งของคอมพิวเตอร์ คำสั่งเหล่านี้เรียงกันเป็นโปรแกรมคอมพิวเตอร์ • ซอฟต์แวร์ หมายรวมถึงโปรแกรมคอมพิวเตอร์ทุกประเภทที่ทำให้คอมพิวเตอร์ทำงานได้
Introduction • คุณสมบัติของซอฟต์แวร์ • ซอฟต์แวร์ถูกพัฒนาหรือจัดการให้เกิดขึ้น • ซอฟต์แวร์ไม่สึกหรอ • ถูกสร้างตามแบบที่ลูกค้าต้องการ (Custom build)
การเสื่อมสภาพของฮาร์ดแวร์ ความผิดพลาด เวลา
การเสื่อมสภาพของซอฟต์แวร์ (อุดมคติ) ความผิดพลาด เวลา
การเสื่อมสภาพของซอฟต์แวร์การเสื่อมสภาพของซอฟต์แวร์ ความผิดพลาด เวลา
ซอฟต์แวร์ (software) • ชนิดของซอฟต์แวร์ หากแบ่งแยกชนิดของซอฟต์แวร์ตามสภาพการทำงาน แบ่งแยกซอฟต์แวร์ได้เป็น 2 ประเภท คือ • ซอฟต์แวร์ระบบ (system software) • ซอฟต์แวร์ประยุกต์ (application software)
ซอฟต์แวร์ (software) • ซอฟต์แวร์ระบบ คือ ซอฟต์แวร์ที่บริษัทผู้ผลิตสร้างขึ้นมาเพื่อใช้จัดการกับระบบ หน้าที่การทำงานของซอฟต์แวร์ระบบคือดำเนินงานพื้นฐานต่าง ๆ ของระบบคอมพิวเตอร์ เช่น รับข้อมูลจากแผงแป้นอักขระแล้วแปลความหมายให้คอมพิวเตอร์เข้าใจ นำข้อมูลไปแสดงผลบนจอภาพหรือนำออกไปยังเครื่องพิมพ์ จัดการข้อมูลในระบบแฟ้มข้อมูลบนหน่วยความจำรอง
ซอฟต์แวร์ (software) • ซอฟต์แวร์ประยุกต์ เป็นซอฟต์แวร์ที่ใช้กับงานด้านต่าง ๆ ตามความต้องการของผู้ใช้ ที่สามารถนำมาใช้ประโยชน์ได้โดยตรง ปัจจุบันมีผู้พัฒนาซอฟต์แวร์ใช้งานทางด้านต่าง ๆ ออกจำหน่ายมาก การประยุกต์งานคอมพิวเตอร์จึงกว้างขวางและแพร่หลาย เราอาจแบ่งซอฟต์แวร์ประยุกต์ออกเป็นสองกลุ่มคือ ซอฟต์แวร์สำเร็จ และซอฟต์แวร์ที่พัฒนาขึ้นใช้งานเฉพาะ
ซอฟต์แวร์ (software) • ชนิดของซอฟต์แวร์ ในปัจจุบัน สามารถแบ่งลักษณะของซอฟต์แวร์ออกเป็น 7 ประเภท ดังนี้ 1. ซอฟต์แวร์ระบบ (System Software) 2. ซอฟต์แวร์ประยุกต์ (Application Software) 3. ซอฟต์แวร์เชิงวิศวกรรม/วิทยาศาสตร์ (Engineering/Scientific Software) 4. ซอฟต์แวร์ฝังตัว (Embedded Software)
ซอฟต์แวร์ (software) 5. ซอฟต์แวร์สายการผลิต (Product-line Software) 6. เว็บแอพพลิเคชั่น (Web-application) 7. ซอฟต์แวร์ปัญญาประดิษฐ์ (Artificial Intelligence Softwear)
วิวัฒนาการของซอฟต์แวร์ (Software Evolution) • กฎแห่งการเปลี่ยนแปลงอย่างต่อเนื่อง (Law of Continuing Change) • กฎแห่งความซับซ้อนที่เพิ่มขึ้น (Law of Increasing Complexity) • กฎแห่งการวางระเบียบตัวเอง (Law of Self-regulation) • กฎแห่งอนุรักษ์สภาพเสถียรการจัดระเบียบ (Law of Conservation of Organizational Stability) • กฎการคงไว้ซึ่งความคุ้นเคย (Law of Conservation of Familiarity)
วิวัฒนาการของซอฟต์แวร์ (Software Evolution) • กฎแห่งการเติบโตอย่างต่อเนื่อง (Law of Continuing Growth) • กฎแห่งการลดลงซึ่งคุณภาพ (Law of Declining Quality) • กฎระบบย้อนกลับ (Feedback System Law)
THE END • นักศึกษาสามารถดาวน์โหลด เอกสารประกอบการเรียน ได้ที่ http://dearnan.wordpress.com • จะนำPowerPoint ประกอบการเรียนขึ้นเว็บภายในวันอาทิตย์