310313 Software Engineering วิศวกรรมซอฟต์แวร์ ึ ษา 2550 ภาคปลาย ปี การศก 1 คำอธิบำยรำยวิชำ วัฏจักรซอฟต์แวร์ ้ กการวิศวกรรมในการพัฒนาซอฟต์แวร์ การใชหลั ั ซอนของซอฟต์ ้ ความซบ แวร์ การวางแผนการพัฒนาซอฟต์แวร์ เทคนิคการออกแบบซอฟต์แวร์ ้ การใชงานและการบ ารุงรักษาซอฟต์แวร์ 310313 -2 จุดม่งหมำยของวิชำ ิ เห็นความสาคัญและเข ้าใจหลักการของ เพือ ่ ให ้นิสต ้ ้ วิศวกรรมซอฟต์แวร์และสามารถนาไปใชได สามารถพัฒนาซอฟต์แวร์อย่างมีระบบมากขึน ้ สามารถพัฒนาซอฟต์แวร์ทม ี่ ค ี ณ ุ ภาพมากขึน ้ เข ้าใจหลักการของการบริหารโครงงานวิศวกรรม ซอฟต์แวร์พอสมควร ้ สามารถพัฒนาระบบงานโดยใชเทคโนโลยี เชงิ วัตถุได ้ 310313 -3 ล ักษณะกำรเรียนกำรสอน บรรยายโดยโปรแกรมนาเสนอ สาธิตด ้วยคอมพิวเตอร์ ั ถาม อภิปราย และซก ึ ษาค ้นคว ้าด ้วยตนเอง การศก ปฏิบต ั ก ิ ารด ้วยคอมพิวเตอร์ ทาแบบฝึ กหัด และโครงงาน อาจมีเอกสารแจกให ้อ่านเพิม ่ เติมก่อนเข ้าเรียน กรุณาตรงต่อเวลา สามารถ download เอกสารได ้ที่ http://course.buu.ac.th/ 310313 -4 ล ักษณะกำรเรียนกำรสอน โครงงำน (งำนกลุม ่ 4-5 คน) พัฒนาระบบงาน 1 ระบบ เอกสารประกอบ โปรแกรมและการนาเสนอ แบบฝึ กห ัด (งานเดีย ่ ว) รายงาน แบบฝึ กหัด 310313 -5 เอกสำรประกอบกำรเรียน ื หล ัก หน ังสอ Bernd Bruegge andAllen H. Dutoit Object-Oriented Software Engineering: Using UML,Pattern, and Java ,2nd Edition, Prentice Hall,2004 310313 -6 เอกสำรประกอบกำรเรียน ื ประกอบ หน ังสอ Pressman, R. S ,Sofware Engineering : a practioner's approach 5th ed., McGraw-Hill, 2001. Fowler, Scott ,UML Distilled 2nd ed., - (Addison Wesley) Stephen R. Schach: Classical and Object-Oriented Software Engineering With UML and Java, McGraw Hill, 1999 G. Booch, J. Rumbaugh, I. Jacobson The Unified Modeling Language User Guide - (Addison Wesley) 310313 -7 กำรปฏิบ ัติกำร เนือ ่ งจำกรำยวิชำนีไ้ ม่มช ี ว่ ั โมงปฏิบ ัติกำร แต่จะ ิ ต้องปฏิบ ัติ โดยนิสต ิ จะต้องไป มีกจ ิ กรรมทีน ่ ส ิ ต หำเวลำในกำรฝึ กปฏิบ ัติกำรด้วย Rational Rose 2000(CASE Tool)หรือ starUML หรือ ArgoUML ั ดาห์ การประชุมประจาสป เขียนโปรแกรมโดยใช ้ Java, Servlet, Jsp , .NET 310313 -8 310313 -9 310313 -10 ่ งำน กำรสง ต้องตรงต่อเวลำ ่ ชำ้ ห ักว ันละ 10 % สง 310313 -11 เกณฑ์กำรให้คะแนน ึ ษำค้นคว้ำด้วยตนเอง และทำกำรบ้ำน 1.ทำกิจกรรม/ศก 15 % 2. ทำโครงงำนเป็นกลุม ่ กลุม ่ ละ 4 - 5 คน 25 % ้ หำวิชำ 3. ว ัดควำมรูค ้ วำมเข้ำใจในเนือ 60 % โดยแบ่งเป็น สอบย่อย สอบกลำงภำค สอบปลำยภำค 15 % 20 % 25 % 310313 -12 กำรประเมินผล อิงกลุม ่ 310313 -13 กำหนดกำรสอบ สอบกลำงภำคเรียน ตามกาหนดการของมหาวิทยาลัย สอบปลำยภำคเรียน ตามกาหนดการของมหาวิทยาลัย 310313 -14 สงิ่ ทีค ่ ำดว่ำผูเ้ รียนจะได้ร ับ ความเข ้าใจในการพัฒนาซอฟต์แวร์ ความเข ้าใจเบือ ้ งต ้นในการบริหารโครงงาน วิศวกรรมซอฟต์แวร์ ้ สามารถพัฒนาซอฟต์แวร์โดยใชเทคโนโลยี เชงิ วัตถุได ้ ผู ้เรียนน่าจะนาหลักการต่างๆ ทีเ่ รียนไปในวิชานี้ ้ ไปใชในการจั ดทาโครงงานคอมพิวเตอร์ในภาค ึ ษาหน ้าได ้ การศก 310313 -15 Contents Week# 1 2,3 PowerPoint file Introduction and Overview Ch(s) 1 Object-oriented Modeling with UML 2,9 4 Software Development process 15.4 5, 6 System Requirements Capture 4 7 System Analysis 5 8 System Analysis Midterm 5 9 System Design 10 Database design, Implementation 11, 12 Testing, Cost Estimation 6, 7 8,9,10 11 13 Software Quality Assurance 13, 15 14 Managing Software Development 14,16 310313 -16 Team Project Your Client: BUCC Campus Foods Your Goal: Design a web-based architecture to… Extend an existing product catalog Support flexible, dynamic pricing rules for sales promotions Provide web interface(s) for sales manager and customers Provide a web services API for B2B transactions 310313 -17 BUCC Campus Today… Forms-Based Interface Batch Typeset Product DB Print Catalog BUCC CampusTomorrow HTTP Web Interface (Sales Mgr) HTTP Web Interface (Customer) Application Server Business Rules Product DB WS Order DB 3rd-Party Applications 310313 -18 Possible Team Tasks (subject to further refinement) 1. 2. 3. 4. 5. 6. 7. Write concept document, sketch architecture, list requirements questions Draft requirements document, list use cases, specify user interface Write use cases, model domain classes Model solution classes & behavior Model package structure, database design, and interface design Draft project plan (tasks, milestones, schedule, resource allocation, risk plan) Initial prototype implementation of a subset of the critical functional requirements on the course web development server 310313 -19 Alternative Projects Students with a well-formed idea for a team project may petition the instructors for permission to work on an alternative topic 310313 -20 Project Grade Task Task name Value Date out 0 Group Formation, Group Management and Personal Time-log 10% June 1 Initial System Prototype Development 15% 2 System Requirements Specification 15% 3 System Analysis & User Interface 4 System Design Specification & Implementation Specification Due date Weekly 30% 30% 310313 -21 วิกฤตกำรณ์ซอฟต์แวร์ ้ งึ มีปญ ทำไมซอฟต์แวร์ทใี่ ชจ ั หำมำกมำย โอ้ย! มีบ ักอีกแล้ว ผมไม่พ ัฒนำโปรแกรมต่อจำกเขำหรอก.. เขียนใหม่สะดวกกว่ำ โครงงำนนีไ้ ปไม่รอดแล้ว ทำย ังไงก็เสร็จไม่ท ัน ทำเสร็จจนได้ .. บ ักนิดบ ักหน่อย คนอืน ่ เอำไป พ ัฒนำต่อไม่ได้ ก็คงไม่เป็นไรหรอก ทำ ท ันเวลำก็พอ ่ นของผมเสร็จแล้ว ทีท ่ นของ สว ่ ำไม่เสร็จน่ะสว เค้ำ งำนไม่สำเร็จไม่เกีย ่ วก ับผม 310313 -22 วิกฤตกำรณ์ชุดคำสง่ ั (ต่อ) ้ ำ ค่ำใชจ ่ ยในกำรพ ัฒนำโปรแกรมปัจจุบ ันมี ้ แนวโน้มสูงขึน ต ัวเงิน เวลำ กำล ังคน ้ ังไม่พอใจในโปรแกรมทีใ่ ชอ ้ ยู่ ผูใ้ ชย แนวทำงในกำรพ ัฒนำชุดคำสง่ ั มีให้เลือกหลำย ทำง ้ ระยุกต์งำนมีกำร ควำมต้องกำรโปรแกรมเพือ ่ ใชป ขยำยจำนวนมำก กำรตอบสนองในกำรพ ัฒนำไม่ ท ัน ้ ยูแ ้ ักปร ับเปลีย โปรแกรมทีใ่ ชอ ่ ล้วผูใ้ ชม ่ นอยูเ่ สมอ 310313 -23 ี ของกำรพ ัฒนำชุดคำสง่ ั ทีไ่ ม่ตรงก ับ ผลเสย ควำมต้องกำร ้ ำ ค่ำใชจ ่ ยทีเ่ กิดก ับผูใ้ ชโ้ ดยตรง ้ ำ ค่ำใชจ ่ ยทีเ่ กิดจำกกำรปร ับปรุงแก้ไข โปรแกรม 310313 -24 ซอฟต์แวร์(Software) A Program A Programming Product A Programming System A Programming System Product Brooks, F. P. Jr, The Mythical Man-Month, 1975 310313 -25 A Program ้ เพือ สงิ่ ทีผ ่ เู ้ ขียน(น ักโปรแกรม)เขียนขึน ่ ใชง้ ำน เอง สำมำรถพ ัฒนำให้เป็นสงิ่ ทีม ่ ป ี ระโยชน์มำกกว่ำ ้ ำ่ ใชจ ้ ำ แต่ใชค ่ ยมำกกว่ำได้ มีสองแนวทำงในกำรปร ับเปลีย ่ น Programming Product Programming System Product 310313 -26 A Program A Program X3 A Programming System (Interfaces, System Interaction) X3 A Programming Product A Programming Systems Product (Generalization, Testing Documentation Maintenance) 310313 -27 A Programming Product เป็นโปรแกรมทีใ่ ครก็ได้ สำมำรถนำไปใชง้ ำน ทดสอบ แก้ไข และ เพิม ่ เติมควำมสำมำรถได้ โปรแกรมจะต้องเขียนในรูปทว่ ั ไป, ต้องผ่ำน กำรทดสอบ, และมีเอกสำรประกอบอย่ำง ละเอียด ้ น Brooks ประมำณว่ำจะต้องใชต ้ ทุนมำกกว่ำ โปรแกรมทีผ ่ ำ ่ นกำรตรวจสอบแล้วประมำณ 3 เท่ำ 310313 -28 A Programming System ระบบของโปรแกรมทีท ่ ำงำนประสำนก ัน จะต้องมีกำรติดต่อระหว่ำงโปรแกรม ้ อ โปรแกรมจะต้องได้ร ับกำรพ ัฒนำเพือ ่ ใชข ้ มูล Input และ Output สอดคล้องตำมรูปแบบทีไ่ ด้กำหนดไว้ ้ ร ัพยำกรภำยในขอบเขตที่ โปรแกรมจะต้องใชท กำหนด ่ นประกอบอืน โปรแกรมจะต้องถูกทดสอบก ับสว ่ ๆใน ระบบ ้ น Brooks ประมำณว่ำจะต้องใชต ้ ทุนมำกกว่ำโปรแกรม เดีย ่ วๆ (a stand-alone program) ประมำณ 3 เท่ำ 310313 -29 A Programming Systems Product ้ วำมพยำยำมในกำรพ ัฒนำมำกกว่ำเดิม 9 ใชค เท่ำ ้ อยอย่ำงแท้จริง แต่เป็นสงิ่ ทีม ่ ป ี ระโยชน์ใชส และเป็นเป้ำหมำยของกำรพ ัฒนำโปรแกรม อย่ำงแท้จริง 310313 -30 ซอฟต์แวร์ ชุดคำสง่ ั ทีก ่ ระทำงำนทีต ่ อ ้ งกำร เอกสำรทีแ ่ สดงวิธก ี ำรใช ้ 310313 -31 ล ักษณะเฉพำะของซอฟต์แวร์ ซอฟต์แวร์มล ี ักษณะเป็นองค์ประกอบทำงตรรก (logical) ซอฟต์แวร์ตอ ้ งผ่ำนกำรพ ัฒนำ (developed) ่ ำรผ่ำนกำรผลิต ตำมควำมรูส ึ ทว่ ั ไป ไม่ใชก ้ ก ื่ มสภำพ ซอฟต์แวร์ไม่มก ี ำรเสอ Pressman R. S., Software Engineering Apractitioner’s Approach 5th Edition, 2001 310313 -32 ื่ มสภำพ กำรเสอ เสื่อมสภาพ เวลา กรำฟแสดงควำมถีข ่ องควำมผิดพลำดของ Hardware 310313 -33 ื่ มสภำพ กำรเสอ คงทีจ ่ นกระทง่ ั ล้ำสม ัย เวลำ กรำฟแสดงควำมถีข ่ องควำมผิดพลำดของ Software (อุดมคติ) 310313 -34 ื่ มสภำพ กำรเสอ เวลา กราฟแสดงความถี่ของความผิดพลาดของ Software (ความเป็ นจริง) 310313 -35 ล ักษณะของซอฟต์แวร์ทด ี่ ี บำรุงร ักษำได้งำ ่ ย (maintainability) ื่ ถือได้ (dependability) เชอ ิ ธิภำพ (efficiency) มีประสท นำไปใชง้ ำนได้ (usability) 310313 -36 ทำไมต้องวิศวกรรมซอฟต์แวร์? ...to get away from ad hoc and unpredictable software development towards a systematic, understood one... 310313 -37 Management myths State-of-the-art tools are the solution “A fool with a tool is still a fool” Getting behind schedule resolved by hiring additional programmers “adding people to a late software project makes it later” 310313 -38 310313 -39 สำเหตุสำค ัญของวิกฤตกำรณ์ของชุดคำสง่ ั ่ งว่ำงระหว่ำง users และ programmers ชอ กำรเปลีย ่ นแปลง(change) ิ ธิภำพมำก ทำให้ กำรพ ัฒนำฮำร์ดแวร์ทม ี่ ป ี ระสท ั อ ้ นมำกตำมไป ซอฟต์แวร์ท ี่ ต้องใช ้ มีควำมซบซ ด้วย กำรตอบสนองต่อวิกฤตกำรณ์ The responses to the crisis : วิศวกรรมซอฟต์แวร์ paradigmsใหม่สำหร ับ decomposition ของ ซอฟต์แวร์และกำรออกแบบและวิเครำะห์ปญ ั หำ 310313 -40 วิศวกรรมซอฟต์แวร์ illustration of software engineering rationale Maintenance Testing Implementation Maintenance Testing Implementation Design 310313 -41 วิศวกรรมซอฟต์แวร์ “art of computer programming” แบบเดิม ถูกแทนด้วย engineering design และ planning techniques เพือ ่ ใชใ้ นกำรพ ัฒนำ โปรแกรม สน ับสนุนโดยซอฟต์แวร์ CASE (Computer Aided Software Engineering) Early software engineering ้ ำรหำ ไม่ให้เกิดกำรเปลีย ่ นแปลงโดยพยำยำมใชก requirementsและ design สน ับสนุนกำรใช ้ re-use of components (programs, functions, objects) management of complexity of software (decomposition) 310313 -42 วิศวกรรมซอฟต์แวร์ OO software engineering Plan for change, ease change reuse of higher level components new ways of decomposition 310313 -43 ผลกระทบทีเ่ กิดจำกำรเปลีย ่ นแปลง Cost to change 60 - 100 x 1.5 - 6 x 1x Definition Development After release 310313 -44 ควำมหมำยของ วิศวกรรมซอฟต์แวร์ Fritz Bauerr ้ ล ักกำรของ “กำรพ ัฒนำชุดคำสง่ ั โดยใชห วิศวกรรม เพือ ่ ให้ได้ชุดคำสง่ ั ทีท ่ ำได้อย่ำง ื่ ถือและให้ผลงำน ประหย ัด มีควำมหน้ำเชอ ิ ธิภำพจำกเครือ อย่ำงมีประสท ่ งมือเครือ ่ งใช”้ ื Software Engineering ปี 1984 หน ังสอ Concepts ของ R. Fairley “ด้วยหล ักเทคนิคและกำรจ ัดกำรอย่ำงเป็นระบบ พ ัฒนำชุดคำสง่ ั ให้ใชไ้ ด้ในเวลำและอยูใ่ น ้ ำ ค่ำใชจ ่ ยทีป ่ ระมำณไว้” 310313 -45 ควำมหมำยของวิศวกรรมซอฟต์แวร์ เป็นเรือ ่ งทีเ่ กีย ่ วข้องก ับกำรพ ัฒนำ กำร ดำเนินกำร กำรบำรุงร ักษำ และกำรยกเลิกใช ้ ชุดคำสง่ ั อย่ำงมีคณ ุ ภำพ เป็นเรือ ่ งเกีย ่ วก ับกำรทำงำนเป็นทีมอย่ำงมี ิ ธิภำพของน ักเขียนโปรแกรมทีพ ประสท ่ ัฒนำ ้ ำ ได้ท ันเวลำและอยูใ่ นค่ำใชจ ่ ยทีก ่ ำหนด ้ ล ักกำรของวิศวกรรม คือหล ักกำรทำง ใชห สร้ำงและกำรควบคุมตำมกระบวนกำรทำง วิทยำศำสตร์ 310313 -46 สรุปควำมหมำย Software Engineering คือ กำรนำหล ักกำรทำง ่ ยพ ัฒนำ วิทยำศำสตร์และคณิตศำสตร์มำชว ชุดคำสง่ ั ในเรือ ่ งสำมประกำรคือ ื่ ถือได้ของชุดคำสง่ ั ควำมถูกต้องเชอ กำรจ ัดกำรเกีย ่ วก ับชุดคำสง่ ั อย่ำงมีคณ ุ ภำพ กำรเพิม ่ ผลผลิตให้ก ับน ักพ ัฒนำชุดคำสง่ ั 310313 -47 วิศวกรรมซอฟต์แวร์ กำรนำหล ักกำรทำงวิศวกรรมมำใชใ้ นกำร พ ัฒนำซอฟต์แวร์ กำรพ ัฒนำซอฟต์แวร์อย่ำงมีระบบ 310313 -48 วิศวกรรมซอฟต์แวร์ พัฒนา ใช้ งาน บารุ งรั กษา ปลดระวาง 310313 -49 ควำมสำค ัญของวิศวกรรมซอฟต์แวร์ กำรพ ัฒนำซอฟต์แวร์ขนำดใหญ่จะกระทำได้ ลำบำก ถ้ำไม่มก ี ำรพ ัฒนำอย่ำงมีระบบ 310313 -50 วิศวกรซอฟต์แวร์ ผูท ้ น ี่ ำควำมรูเ้ กีย ่ วก ับกำรพ ัฒนำซอฟต์แวร์มำ ใชใ้ นกำรพ ัฒนำซอฟต์แวร์อย่ำงมีระบบ 310313 -51 Three P’s People Processes Products 310313 -52 People, processes, products People • Products education – requirements skills – design communication – source code style – executable ..... – user documentation – test cases – test results – change request – .... • Processes – planning – coordination – management – measuring – analysing – designing – coding – ..... 310313 -53 บุคลำกรทีเ่ กีย ่ วข้องก ับกำรพ ัฒนำ ซอฟต์แวร์ Project Manager System Analyst Programmer Software Engineer 310313 -54 ผูจ ้ ัดกำรโครงงำน (Project Manager) ้ วำมรูใ้ นด้ำนกำรบริหำรและกำร เป็นผูท ้ ใี่ ชค จ ัดกำร เพือ ่ ทีจ ่ ะทำให้โครงงำนนนส ั้ ำเร็จ หน้ำที่ วางแผนโครงงาน จัดการเกีย ่ วกับบุคลากร ควบคุมและตรวจสอบการดาเนินงาน 310313 -55 น ักวิเครำะห์ระบบ (System Analyst) เป็นผูว้ เิ ครำะห์ควำมต้องกำรของลูกค้ำ และ ออกแบบระบบเพือ ่ สนองควำมต้องกำรของ ลูกค้ำ หน้ำที่ วิเคราะห์ความต ้องการ (Requirement Analysis) ออกแบบระบบทีต ่ อบสนองความต ้องการของลูกค ้า 310313 -56 น ักโปรแกรม (Programmer) ั เป็นผูพ ้ ัฒนำโปรแกรม โดยอำศยควำมรู ท ้ ำง เทคนิค หน้ำที่ ออกแบบ และ เขียนโปรแกรม 310313 -57 วิศวกรซอฟต์แวร์ (Software Engineer) เป็นงำนทีร่ วมบทบำทของบุคลำกรทงสำมกลุ ั้ ม ่ Software Engineer 310313 -58