องค์ประกอบของวิศวกรรมซอฟต์แวร์ - มหาวิทยาลัยบูรพา วิทยาเขตจันทบุรี

Download Report

Transcript องค์ประกอบของวิศวกรรมซอฟต์แวร์ - มหาวิทยาลัยบูรพา วิทยาเขตจันทบุรี

290342
Software Development Process
บทที่ 1
แนะนาวิศวกรรมซอฟต์ แวร์ เบือ้ งต้ น
อ.ธารารัตน์ พวงสุ วรรณ
คณะวิทยาศาสตร์ และศิลปศาสตร์
มหาวิทยาลัยบูรพา วิทยาเขตสารสนเทศจันทบุรี
นิยามของซอฟต์ แวร์

หมายถึง ชุดคำสัง่ หรื อโปรแกรมที่ใช้สงั่ งำนให้คอมพิวเตอร์
ทำงำน ซอฟต์แวร์จึงหมำยถึง ลำดับขั้นตอนกำรทำงำนที่เขียน
ขึ้นด้วยคำสัง่ ของคอมพิวเตอร์ คำสัง่ เหล่ำนี้เรี ยงกันเป็ น
โปรแกรมคอมพิวเตอร์
(ที่มำ : http://www.navy34.com/index.php/com-software/206-what-hardware-is)
ซอฟต์แวร์ (Software)




A Program
A Programming Product
A Programming System
A Programming System Product
Brooks, F. P. Jr, The Mythical Man-Month, 1975
A Program

มีสองแนวทางในการปรับเปลีย่ น


Programming Product
Programming System Product
ซอฟต์ แวร์ คืออะไร
A Program
A Programming
Product
A
Programming
System
A Programming
System Product
A Programming Product

Brooks ประมำณว่ำจะต้องใช้ตน้ ทุนมำกกว่ำโปรแกรมที่ผำ่ นกำร
ตรวจสอบแล้วประมำณ 3 เท่ำ
A Programming System

Brooks ประมำณว่ำจะต้องใช้ตน้ ทุนมำกกว่ำโปรแกรมเดี่ยวๆ
(a stand-alone program) ประมำณ 3 เท่ำ
A Programming Systems Product
ใช้ควำมพยำยำมในกำรพัฒนำมำกกว่ำเดิม 9 เท่ำ
 แต่เป็ นสิ่ งที่มีประโยชน์ใช้สอยอย่ำงแท้จริ ง และเป็ นเป้ ำหมำย
ของกำรพัฒนำโปรแกรมอย่ำงแท้จริ ง

การแบ่ งประเภทซอฟต์ แวร์
สำมำรถแบ่งออกได้เป็ นหลำยแบบ เช่น
 กำรแบ่งตำมวัตถุประสงค์กำรใช้งำน
 กำรแบ่งเชิงเทคนิ ค
 กำรแบ่งตำมรู ปแบบกำรส่ งมอบ
 แบ่งตำมอุตสำหกรรมกำรผลิตซอฟต์แวร์
ประเภทของซอฟต์ แวร์
แบ่ งตามวัตถุประสงค์ การใช้ งาน







ซอฟต์แวร์ระบบ (System Software)
ซอฟต์แวร์แอปพลิเคชัน่ (Application Software)
ซอฟต์แวร์ดำ้ นวิทยำศำสตร์และวิศวกรรม (Scientific Software/
Engineering)
ซอฟต์แวร์แบบฝัง (Embedded Software)
ซอฟต์แวร์แบบสำยกำรผลิต (Product-Line Software)
เว็บแอปพลิเคชัน่ (Web Application)
ซอฟต์แวร์ปัญญำประดิษฐ์ (Artificial Intelligence Software)
ประเภทของซอฟต์ แวร์
แบ่ งเชิงเทคนิค
1.ซอฟต์แวร์ระบบ (System Software)
2. ซอฟต์แวร์ประยุกต์ (Application Software)
3. โปรแกรมอรรถประโยชน์ (Tools/Utilities)
ประเภทของซอฟต์ แวร์
แบ่ งตามรู ปแบบการส่ งมอบ
1.ซอฟต์แวร์สำเร็ จรู ป (Package software)
2. ซอฟต์แวร์ วำ่ จ้ำงพัฒนำ (Outsources software)
ประเภทของซอฟต์ แวร์
- แบ่งตำมอุตสำหกรรมกำรผลิตซอฟต์แวร์ ได้ 2 ประเภท ดังนี้
1. Generic Product
2. Customized Product
- ข้อแตกต่ำง Generic Product และ Customized Product คืออะไร
ลักษณะเฉพำะของซอฟต์แวร์



ซอฟต์แวร์มีลกั ษณะเป็ นองค์ประกอบทำงตรรก (logical)
ซอฟต์แวร์ตอ้ งผ่ำนกำรพัฒนำ (developed) ไม่ใช่ผำ่ นกำรผลิต ตำม
ควำมรู ้สึกทัว่ ไป
ซอฟต์แวร์ไม่มีกำรเสื่ อมสภำพ
Pressman R. S., Software Engineering Apractitioner’s Approach 5th Edition, 2001
การเสื่ อมสภาพของ Hardware
ื่ มสภาพ
เสอ
เวลา
กราฟแสดงความถีข
่ องความผิดพลาดของ Hardware
“Bathtub curve”
การเสื่ อมสภาพของ Software (อุดมคติ)
คงทีจ
่ นกระทง่ ั ล้าสม ัย
เวลา
กราฟแสดงความถีข
่ องความผิดพลาดของ Software (อุดมคติ)
“Idealized curve”
การเสื่ อมสภาพของ Software (ความเป็ นจริง)
Increased failure rate
due to side effect
change
เวลา
กราฟแสดงความถีข
่ องความผิดพลาดของ Software (ความเป็นจริง)
“Actual curve”
ลักษณะของซอฟต์ แวร์ ที่ดี




บำรุ งรักษำได้ง่ำย (Maintainability)
เชื่อถือได้ (Dependability)
มีประสิ ทธิภำพ (Efficiency)
นำไปใช้งำนได้ (Usability)
วิกฤตการณ์ ซอฟต์ แวร์
เป็ นเหตุกำรณ์ที่บริ ษทั พัฒนำซอฟต์แวร์จำนวนมำกพัฒนำ
โปรแกรมขึ้นมำอย่ำงไม่มีคุณภำพ
 กำรผลิตมีควำมล่ำช้ำ
 มีปัญหำเกิดขึ้นบ่อยและ มีขอ
้ ผิดพลำดมำก

วิกฤตการณ์ ซอฟต์ แวร์





ค่ำใช้จ่ำยในกำรพัฒนำโปรแกรมปัจจุบนั มีแนวโน้มสู งขึ้น
ผูใ้ ช้ยงั ไม่พอใจในโปรแกรมที่ใช้อยู่
แนวทำงในกำรพัฒนำชุดคำสัง่ มีให้เลือกหลำยทำง
ควำมต้องกำรโปรแกรมเพื่อใช้ประยุกต์งำนมีกำรขยำยจำนวนมำก กำร
ตอบสนองในกำรพัฒนำไม่ทนั
โปรแกรมที่ใช้อยูแ่ ล้วผูใ้ ช้มกั ปรับเปลี่ยนอยูเ่ สมอ
ผลเสี ยของการพัฒนาชุดคาสั่ งทีไ่ ม่ ตรงกับ
ความต้ องการ


ค่ำใช้จ่ำยที่เกิดกับผูใ้ ช้โดยตรง
ค่ำใช้จ่ำยที่เกิดจำกกำรปรับปรุ งแก้ไขโปรแกรม
ผลกระทบจากวิกฤตการณ์ ซอฟต์ แวร์





ทาไมซอฟต์ แวร์ ที่ใช้ จึงมีปัญหามากมาย
โอ้ย! มีบักอีกแล้ว
ผมไม่ พฒ
ั นาโปรแกรมต่ อจากเขาหรอก.. เขียนใหม่ สะดวกกว่ า
โครงงานนีไ้ ปไม่ รอดแล้ว ทายังไงก็เสร็จไม่ ทัน
ทาเสร็จจนได้ .. บักนิดบักหน่ อย คนอืน่ เอาไปพัฒนาต่ อไม่ ได้ ก็คงไม่
เป็ นไรหรอก ทาทันเวลาก็พอ
 ส่ วนของผมเสร็จแล้ว ที่ทาไม่ เสร็จน่ ะส่ วนของเค้ า งานไม่ สาเร็จไม่
เกีย่ วกับผม
“Software Crisis”
ความสาคัญและที่มาของวิศวกรรมซอฟต์ แวร์
ช่องว่ำงระหว่ำง users และ programmers
 กำรเปลี่ยนแปลง(change)
 กำรพัฒนำฮำร์ ดแวร์ ที่มีประสิ ทธิ ภำพมำก ทำให้ซอฟต์แวร์ ที่
ต้องใช้ มีควำมซับซ้อนมำกตำมไปด้วย
 ซอฟต์แวร์ ลำ้ สมัยกลำยเป็ นซอฟต์แวร์ เก่ำ
 กำรตอบสนองต่อวิกฤตกำรณ์ The responses to the crisis

วิศวกรรรมซอฟต์ แวร์
ถูกเสนอขึน้ ในปี 1968 ในการประชุ มทีจ่ ัดโดยคณะอนุกรรมการ
ด้ านวิทยาศาสตร์ ขององค์ การ NATO
ปัจจัยการเปลีย่ นแปลงทีท่ าให้ วศิ วกรรม
ซอฟต์ แวร์ มีความสาคัญ
เทคโนโลยีเชิงวัตถุ
เครือข่ ายคอมพิวเตอร์
การเปลีย่ นแปลงในวิศวกรรมซอฟต์ แวร์
ระยะเวลาเปิ ดตัวผลิตภัณฑ์
อานาจในการจัดหา
เครื่องคอมพิวเตอร์ มาใช้
เศรษฐกิจทีเ่ จริญเติบโตขึน้
Graphic User Interface
ปัญหาทีพ่ บใน WaterFall Model
รู ปแสดงปัจจัยทีท่ าให้ เกิดการเปลีย่ นแปลงไปสู่ วศิ วกรรมซอฟต์ แวร์
ความหมายของวิศวกรรมซอฟต์ แวร์
วิศวกรรมซอฟต์แวร์ คือกระบวนกำรสร้ำงสรรค์โปรแกรมโดยใช้หลักทำง
วิศวกรรม
เข้ำมำช่วยในกำรดำเนินกำรสร้ำง (อ.สมหมำย สุ ขคำ)


“Software Engineering is systematic approach to the development operation ,
maintenance , retirement of software” (IEEE 83b)
“วิชำกำรว่ำด้วยกำรออกแบบโปรแกรมคอมพิวเตอร์ ตลอดจนกำรบริ หำรงำน
กำรพัฒนำเพื่อที่จะได้มำซึ่ง ผลิตผลซอฟต์แวร์ที่มีคุณภำพสูง รำคำถูก และภำยใน
เวลำที่กำหนดให้” (สุ ชำย ธนวเสถียร)

ความหมายของวิศวกรรมซอฟต์ แวร์

กำรพัฒนำซอฟท์แวร์ให้ได้ผลลัพธ์ใกล้เคียงเป้ ำหมำยหรื อ
บรรลุเป้ ำหมำยของกำรพัฒนำ อันได้แก่
 ซอฟท์แวร์ ที่มีคุณภำพ
 สำมำรถส่ งมอบได้ตรงเวลำ
่ ำยใต้งบประมำณที่คำดกำรณ์
 อยูภ
 มีคุณสมบัติตรงตำมควำมต้องกำรของผูใ้ ช้
(ผศ.ดร.สมนึก คีรีโต)
ความหมายของวิศวกรรมซอฟต์ แวร์
วิศวกรรมซอฟต์ แวร์ (อังกฤษ: software engineering) เป็ นศำสตร์
เกี่ยวกับวิศวกรรมด้ำนซอฟต์แวร์มีเนื้อหำเกี่ยวข้องกับกำรใช้กระบวนกำร
ทำงวิศวกรรมในกำรดูแลกำรผลิต ตั้งแต่กำรเริ่ มเก็บควำมต้องกำร
กำรตั้งเป้ ำหมำยของระบบ กำรออกแบบ กระบวนกำรพัฒนำ
กำรตรวจสอบ กำรประเมินผล กำรติดตำมโครงกำร กำรประเมินต้นทุน
กำรรักษำควำมปลอดภัย ไปจนถึงกำรคิดรำคำซอฟต์แวร์ เป็ นต้น
(วิกิพีเดีย)
ความหมายของวิศวกรรมซอฟต์ แวร์

วิศวกรรมซอฟต์ แวร์ หมำยถึง กำรนำแนวทำงที่เป็ นระบบ มีระเบียบ
กฎเกณฑ์ และสำมำรถวัดผลในเชิงปริ มำณได้ มำประยุกต์ใช้ในกำร
พัฒนำ ปฏิบตั ิกำร และบำรุ งรักษำซอฟต์แวร์ ซึ่งก็คือ เพื่องำนด้ำน
วิศวกรรมกำรผลิตซอฟต์แวร์ หรื อกล่ำวอีกนัยหนึ่งคือ เป็ นกำรศึกษำ
วิธีกำรผลิตซอฟต์แวร์นนั่ เอง [IEEE, 2004]
ความหมายของวิศวกรรมซอฟต์ แวร์

วิศวกรรมซอฟต์ แวร์ หมำยถึงกำรนำหลักวิชำกำรด้ำนวิศวกรรมมำดูแล
กระบวนกำรผลิตซอฟต์แวร์ ตั้งแต่ข้นั ตอนแรกจนถึงขั้นตอนบำรุ งรักษำ
หลังกำรใช้งำน เพื่อให้ซอฟต์แวร์ที่ได้มีคุณภำพสูงสุ ดภำยใต้ขอ้ จำกัด
ด้ำนเวลำและต้นทุน (กิตติ ภักดีวฒั นะกุล)
สรุปความหมายของ วิศวกรรมซอฟต์ แวร์

วิศวกรรมซอฟต์แวร์ (Software Engineering) หมำยถึง กำรนำ
หลักวิชำกำรด้ำนวิศวกรรมมำดูแลกระบวนกำรผลิตซอฟต์แวร์
ตั้งแต่ข้ นั แรกจนถึงขั้นตอนบำรุ งรักษำหลังกำรใช้งำน เพื่อให้
ซอฟต์แวร์ ที่ได้มีคุณภำพสูงสุ ดภำยใต้ขอ้ จำกัดด้ำนเวลำและ
ต้นทุน
วิวฒ
ั นาการของวิศวกรรมซอฟต์ แวร์
1945-1965
จุดเริ่ มต้นของวิศวกรรม
ซอฟต์แวร์
-กล่ำวขำนและนำมำใช้จริ งครั้ง
แรกในปลำยปี 1950-1960
-องค์กำรนำโต้ (Nato) ได้มีกำร
จัดสัมมนำวิศวกรรมซอฟต์แวร์
ในปี 1968
-จุดประกำยทำให้เป็ นที่รู้จกั กัน
อย่ำงแพร่ หลำย
1965-1985
วิกฤติซอฟต์แวร์
-มีปัญหำเรื่ องของต้นทุน
ค่ำใช้จ่ำย
-ระยะกำรดำเนินกำรโครงกำร
ไม่เหมำะสม เกิดควำมล้มเหลว
-จ้ำงวิศวกรซอฟต์แวร์มืออำชีพ
ที่สำมำรถผลิตซอฟต์แวร์ให้มี
คุณภำพสูง
1985-present
ฟองสบู่แตก
แก้ปัญหำวิกฤติซอฟต์แวร์อย่ำง
แท้จริ ง ไม่วำ่ จะเป็ นเครื่ องมือ
เทคนิค และกระบวนกำรต่ำงๆ ซึ่ ง
นำไปสู่ กำรพัฒนำซอฟต์แวร์อย่ำง
มืออำชีพ และถูกแบบแผน
- เน้นให้วศิ วกรซอฟต์แวร์คำนึงถึง
คุณภำพของซอฟต์แวร์ ด้วยกำร
ปรับปรุ งกระบวนกำรผลิต
ซอฟต์แวร์อย่ำงสม่ำเสมอ เพื่อ
ไม่ให้เกิดควำมผิดพลำดต่อไป
ลักษณะของวิศวกรรมซอฟต์ แวร์


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)
วิศวกรรมซอฟต์แวร์

OO software engineering
 Plan for change, ease change
 reuse of higher level components
 new ways of decomposition
องค์ ประกอบของวิศวกรรมซอฟต์ แวร์
วิธก
ี าร
การบริหาร
โครงการ
สงิ่ แวดล ้อม
การพ ัฒนา
ซอฟต์แวร์
เทคนิค
ประโยชน์ ของวิศวกรรมซอฟต์ แวร์
กระบวนการผลิตซอฟต์ แวร์ มีประสิ ทธิภาพ เป็ นระบบ
 มีมาตรฐานในการกาหนดวิธีการทางานอย่ างชั ดเจน
 มีการตรวจสอบคุณภาพของซอฟต์ แวร์
 มีเอกสารควบคุมกากับการทางานตลอดทั้งกระบวนการ
 มีการตรวจสอบและประกันคุณภาพของซอฟต์ แวร์ ทผ
ี่ ลิตก่อนส่ งถึงมือ
ผู้บริโภค
 สามารถทางานได้ ถึงแม้ ว่าจะเปลีย
่ นทีมงาน

Three P’s
People
Processes
Products
Three P’s

 Product
People
 requirements
 education
 design
 skills
 source code
 communication
 executable
 style
 user
 etc.
documentation




test cases
test results
change request
etc.
 Process
 planning
 coordination
 management
 measuring
 analysing
 designing
 coding
 etc.
บุคคลทีเ่ กีย่ วข้ องกับงานวิศวกรรมซอฟต์ แวร์
•
ผู้ใช้ (User)
•
ลูกค้ า (Customer)
•
บุคคลทีเ่ กีย่ วข้ องกับการพัฒนาซอฟต์ แวร์




Project Manager
System Analyst
Programmer
Software Engineer
วิศวกรซอฟต์ แวร์ (Software
Engineer)

เป็ นงำนที่รวมบทบำทของบุคลำกรทั้งสำมกลุ่ม
Software
Engineer
ความสั มพันธ์ ระหว่ างกลุ่มบุคคลทีเ่ กีย่ วข้ อง
กับงานวิศวกรรมซอฟต์ แวร์
ลูกค้ า (Customer)
ให้ เงินสนับสนุนการผลิตซอฟต์ แวร์
ความต้ องการ
ใช้ งานซอฟต์ แวร์ (ระบบ)
ความต้ องการ
สร้ างซอฟต์ แวร์
(ระบบ)
ซอฟต์ แวร์ (ระบบ)
ผู้ใช้ (User)
นักพัฒนา (Developer) วิศวกรซอฟต์ แวร์ (Software Engineer)
รูปแสดงความสัมพันธ์ ระหว่างกลุ่มบุคคลที่เกีย่ วข้ องกับงานวิศวกรรมซอฟต์ แวร์
วิศวกรซอฟต์ แวร์ (Software
Engineer)




ความรู้ ด้านการผลิตซอฟต์ แวร์ เกี่ยวกับทักษะ เครื่ องมือ และกระบวนกำร
จัดกำรที่ช่วยสนับสนุนให้กำรผลิตซอฟต์แวร์ประสบควำมสำเร็ จจนได้
ความรู้ ด้านการบริหารโครงการ เกี่ยวกับกำรวำงแผน กำรกำหนดกิจกรรม
กำรจัดสรรทรัพยำกร กำรติดตำมและควบคุมกำรดำเนินกำรต่ำงๆ ให้เป็ นไป
ตำมจุดมุ่งหมำยภำยใต้ขอบเขตของเวลำ ต้นทุนและ คุณภำพ
ความรู้ ด้านการจัดการ เกี่ยวกับกระบวนกำรนำทรัพยำกรกำรบริ หำรมำใช้ให้
บรรลุวตั ถุประสงค์ตำมขั้นตอนกำรบริ หำร คือ กำรวำงแผน กำรจัดองค์กร
กำรชี้นำและกำรควบคุมงำนให้สมั ฤทธิ์ผล
ความรู้ ด้านธุรกิจ เกี่ยวกับกิจกรรมต่ำงๆ ของกำรซื้อขำยสิ นค้ำ กำรผลิตสิ นค้ำ
หรื อกำรจัดหำบริ กำรตำมควำมต้องกำรของผูบ้ ริ โภค
วิศวกรซอฟต์ แวร์ (Software Engineer)





ความรู้ ด้านประชาสั มพันธ์ เกี่ยวกับกำรติดต่อสื่ อสำรกับผูร้ ับข่ำวสำร ไม่วำ่ จะ
เป็ นลูกค้ำหรื อผูร้ ่ วมงำนในองค์กร
ความน่ าเชื่อถือ เกี่ยวข้องกับกำรสร้ำงควำมน่ำเชื่อถือให้กบั ลูกค้ำ ทีมงำน และ
บุคคลทุกฝ่ ำยที่เกี่ยวข้องให้ยอมรับในศักยภำพของตน เช่น ควำมสำมำรถ
ผลิตซอฟต์แวร์ให้ประสบควำมสำเร็ จตำมเป้ ำหมำยที่วำงไว้ได้
ความรู้ สึกไว เกี่ยวกับควำมรู ้ และกำรคำดคะเนผลกระทบของปัญหำที่จะ
เกิดขึ้นระหว่ำงตนกับผูอ้ ื่น
ความเป็ นผู้นา เกี่ยวกับกำรใช้อำนำจหน้ำที่และจูงใจให้ผอู ้ ื่นปฎิบตั ิตำม
ความอดทนต่ อภาวะกดดัน เกี่ยวกับควำมตึงเครี ยด ซึ่งจะส่ งผลกระทบต่อกำร
ปฎิบตั ิโครงกำร และเมื่อต้องเผชิญปัญหำต่ำงๆ ที่ถำโถมเข้ำมำ ก็สำมำรถหำ
วิธีจดั กำรกับปัญหำเหล่ำนี้ได้เป็ นอย่ำงดี
วิศวกรซอฟต์ แวร์ (Software Engineer)



ความยืดหยุ่นสู ง เกี่ยวกับควำมสำมำรถในกำรปรับตัวให้เข้ำกับกำร
เปลี่ยนแปลงของสภำพแวดล้อม โดยอยูบ่ นพื้นฐำนของผลประโยชน์ร่วมกัน
ทุกๆ ฝ่ ำย
ความรับผิดชอบสู ง เกี่ยวกับกำรรับมอบหมำยงำนหรื อหน้ำที่ ซึ่งจะต้อง
บริ หำรโครงกำรผลิตซอฟต์แวร์ให้ประสบควำมสำเร็ จตำมเจตนำรมณ์ของ
องค์กร
ความยุตธิ รรม เกี่ยวกับควำมถูกต้ง และจริ ยธรรมอันดีงำม ปรำศจำกกำร
เลือกปฎิบตั ิหรื อเอนเอียงไปด้ำนใดด้ำนหนึ่งโดยขำดเหตุผลอันสมควร
ความแตกต่ างของวิศวกรรมซอฟต์ แวร์ และวิทยาการ
คอมพิวเตอร์
วิทยาการคอมพิวเตอร์ (Computer Science)
อยูบ่ นรำกฐำนของวิทยำศำสตร์ ซึ่ งเน้นกำรทำควำมเข้ำใจและค้นหำ
ควำมจริ งเกี่ยวกับควำมรู ้ทำงคอมพิวเตอร์ เพื่อสร้ำงแนวคิด/ทฤษฎี
ใหม่ หรื อ ปฏิเสธแนวคิด/ทฤษฎีเดิม และขยำยวงควำมรู ้ให้กว้ำงขึ้น
จำกแนวคิด/ทฤษฎีที่มีอยู่
* ผลงำนถูกพิจำรณำ หรื อ ตัดสิ นโดยกลุ่มนักวิทยำศำสตร์
ความแตกต่ างของวิศวกรรมซอฟต์ แวร์ และวิทยาการ
คอมพิวเตอร์
วิศวกรรมซอฟต์ แวร์ (Software Engineering)
อยูบ่ นรำกฐำนของวิธีกำรทำงวิศวกรรมศำสตร์ ซึ่ งประยุกต์แนวคิด/
ทฤษฎีทำงวิทยำศำสตร์ คณิ ตศำสตร์และเทคโนโลยีขณะนั้นในกำร
สร้ำงผลิตภัณฑ์ที่เป็ นประโยชน์และปลอดภัยต่อสำธำรณะ
* ผลงำนถูกพิจำรณำ หรื อ ตัดสิ นโดยกลุ่มผูใ้ ช้
ความสั มพันธ์ ระหว่ างวิทยาการคอมพิวเตอร์ และ
วิศวกรรมซอฟต์ แวร์
ทฤษฎี
(Theories)
วิทยำกำรคอมพิวเตอร์
วิทยาการคอมพิวเตอร์
วิธีกำรทำงคอมพิวเตอร์
วิศวกรรมซอฟต์แวร์
(Computer Function)
(Software Engineering)
ปัญหำ
(Problem)
ลูกค้ า
ใช้เครื่ องมือและ
เทคนิคเพื่อ
แก้ปัญหำ
องค์ ประกอบของวิศวกรรมซอฟต์ แวร์
ส่ วนที่ 1 วิศวกรรมระบบ (System Engineering)
 ส่ วนที่ 2 วิศวกรรมกำรผลิต (Development Engineering)

วิศวกรรมระบบ



วิศวกรรมระบบ (System Engineering
เกี่ยวข้องกับกำรพัฒนำฮำร์ดแวร์ นโยบำย ออกแบบ พัฒนำกระบวนกำรและ
ระบบไปพร้อมๆ กับกำรวิศวกรรมซอฟต์แวร์
ก่อให้เกิดกำรกำหนดระบบ กำรระบุถึงสถำปัตยกรรมทั้งระบบ แล้วนำ
ส่ วนประกอบที่แตกต่ำงกันมำประสำนเข้ำด้วยกันจนกลำยเป็ น 1 ระบบ
วิศวกรรมระบบ
ประกอบด้วยงำนหลัก ๆ ดังนี้
1. กำหนดวัตถุประสงค์ของระบบ
2. กำหนดขอบเขตของระบบ
3. แบ่งระบบออกเป็ นส่ วน ๆ ตำมฟังก์ชนั งำนหรื อคุณสมบัติของระบบ
4. พิจำรณำควำมสัมพันธ์ของส่ วนประกอบต่ำง ๆ ที่เกี่ยวข้องทั้งหมด
5. กำหนดควำมสัมพันธ์ของปัจจัยนำเข้ำ ประมวลผล และผลลัพธ์
6. พิจำรณำปัจจัยที่มีส่วนเกี่ยวข้องในระบบ
7. กำหนดควำมต้องกำรในส่ วนของปฏิบตั ิกำร (Operation) และฟังก์ชนั
งำน (Function) ทั้งระบบ
วิศวกรรมระบบ
8. สร้ำงแบบจำลองระบบ (System Model) เพื่อใช้วิเครำะห์และ
พัฒนำให้สอดคล้องกับแบบจำลองซอฟต์แวร์ (Software Model) ที่
สร้ำงขึ้น
9. นำเสนอและแลกเปลี่ยนข้อคิดเห็นกับผูท้ ี่เกี่ยวข้องกับระบบ
 ผูใ้ ช้ระบบ
 เจ้ำของระบบ
 ผูท
้ ี่เกี่ยวข้องกับผลประโยชน์ที่มีต่อระบบ
วิศวกรรมการผลิต

วิศวกรรมกำรผลิต (Development Engineering) เป็ น
กระบวนกำรแปรสภำพควำมต้องกำรของระบบ (System
Requirements) ให้กลำยเป็ นซอฟต์แวร์อนั เป็ นเป้ ำหมำยสำคัญ
ทำงด้ำนวิศวกรรมซอฟต์แวร์
ความแตกต่ างของวิศวกรรมซอฟต์ แวร์ และการวิเคราะห์
และออกแบบระบบ


กำรวิเครำะห์และออกแบบระบบ (System Analysis and Design) เป็ น
กำรศึกษำ วิเครำะห์ และแยกแยะปัญหำที่เกิดขึ้นในระบบ แล้วทำกำร
ออกแบบ และกำหนดคุณสมบัติทำงเทคนิค โดยนำระบบคอมพิวเตอร์มำ
ประยุกต์ใช้เพื่อแก้ปัญหำที่ได้ทำกำรวิเครำะห์มำแล้ว
วิศวกรรมซอฟต์แวร์ จะทำหน้ำที่เกี่ยวกับกำรผลิตซอฟต์แวร์เพื่อกำรค้ำ แม้วำ่
กระบวนกำรที่นำมำใช้พฒั นำซอฟต์แวร์หรื อระบบจะคล้ำยคลึงกันก็ตำม แต่
ขั้นตอนกำรวิเครำะห์ระบบเป็ นเพียงกิจกรรมหนึ่งในวิศวกรรมซอฟต์แวร์
เท่ำนั้น
ระเบียบวิธีปฎิบัติของวิศวกรรมซอฟต์ แวร์

วิศวกรรมซอฟต์แวร์ เป็ นงำนที่แทรกซึมอยูท่ ุกขั้นตอนของกำรผลิต
ซอฟต์แวร์ เป็ นไปตามแนวทางการพัฒนาซอฟต์ แวร์ (Software
Development Approach) ซึ่งมี 2 แนวทำงที่เป็ นที่รู้จกั กันอย่ำง
กว้ำงขวำง คือ
 แนวทำงเชิงโครงสร้ำง (Structured Approach)
 แนวทำงเชิงวัตถุ (Object-Oriented Approach)
ระเบียบวิธีปฏิบัติของวิศวกรรมซอฟต์ แวร์
แนวทางเชิงโครงสร้ าง (Structured Approach)
ระเบียบวิธีปฏิบต
ั ิชนิดหนึ่งที่นิยมนำมำใช้ในขั้นตอนกำรวิเครำะห์และ
ออกแบบระบบ คือ “กำรวิเครำะห์และออกแบบระบบเชิงโครงสร้ำง
(Structured System Analysis and Design: SSAD)” คิดค้นโดย Yourdan &
Demarco ปี ค.ศ. 1978

ระเบียบวิธีปฏิบัติของวิศวกรรมซอฟต์ แวร์
ตัวอย่ างการวิเคราะห์ และออกแบบระบบเชิงโครงสร้ าง
ระบบวางบิล
ตรวจสอบการจัดส่ งสิ นค้ า
จัดทาใบส่ งสิ นค้ า
ตรวจสอบสถานะการสั่ งซื้อ
ปรับปรุงสถานะคลังสิ นค้ า
จัดทารายการยอดขาย
ปรับปรุงยอดสั่ งซื้อ
จัดทาภาษีซื้อ - ขาย
แก้ไขสถานะวิเคราะห์ การขาย
จัดทาใบวางบิล
แสดงตัวอย่ างการวิเคราะห์ และออกแบบระบบเชิงโครงสร้ าง
ระเบียบวิธีปฏิบัติของวิศวกรรมซอฟต์ แวร์
แนวทางเชิงวัตถุ (Object – Oriented Approach)
คิดค้ นโดย Grady Booch, James Rumbaugh และ Ivar Jacobson
 การวิเคราะห์ และออกแบบระบบเชิ งวัตถุ (Object-Oriented System
Analysis and Design)


แนวทางเชิงวัตถุ (Object-Oriented
Approach)

เป็ นแนวทำงกำรวิเครำะห์ระบบโดยมองทุกอย่ำงในระบบเป็ น Object
PERSON
Age
Gender
Name
myArms
myLegs
Jump()
Walk()
Talk()
Dance()
ShakeMyArms()
Object
Age = 25
Gender = Male
Name = Tim
myArms = Arms
myLegs = Legs
Attribute
can Jump
can Walk
can Talk
can Dance
can ShakeMyArms
Method
Object “Tim”
สรุป




วิศวกรรมซอฟต์แวร์ เกิดจำกกำรเปลี่ยนแปลง หลังยุคปฎิวตั ิอุตสำหกรรม
เพื่อนำมำประยุกต์ใช้กบั กระบวนกำรผลิตซอฟต์แวร์ เพื่อต้องกำรให้
ผลิตภัณฑ์ซอฟต์แวร์มีคุณภำพสู งสุ ด
ควำมหมำยของ “วิศวกรรมซอฟต์แวร์ ” คือ กำรนำหลักวิชำกำรด้ำน
วิศวกรรมมำดูแลกระบวนกำรผลิตซอฟต์แวร์ ตั้งขั้นตอนแรกจนถึงกำร
บำรุ งรักษำ เพื่อให้ซอฟต์แวร์มีคุณภำพสู งสุ ดให้ตำมคุณสมบัติซอฟต์แวร์ที่ดี
ด้วยข้อจำกัดด้ำนเวลำและต้นทุน
วิศวกรรมซอฟต์แวร์ มีองค์ประกอบ 2 ส่ วน คือ วิศวกรรมระบบและ
วิศวกรรมกำรผลิต
ระเบียบวิธีปฎิบตั ิมี 2 แนวทำงที่ได้รับควำมนิยมอย่ำงแพร่ หลำย คือ แนวทำง
เชิงโครงสร้ำง และแนวทำงเชิงวัตถุ
คาถาม
1. การผลิตซอฟต์ แวร์ ด้วยหลักการวิศวกรรมซอฟต์ แวร์
ดีกว่ าการผลิตซอฟต์ แวร์ แบบไม่ ใช้ หลักวิศวกรรมซอฟต์ แวร์
อย่ างไร
2. ผู้เรียนคิดว่ า การทีผ่ ้ ูเรียนไม่ สามารถทาโครงงานได้ เสร็จ
ตามระยะเวลาทีก่ าหนด เกิดจากสาเหตุใดบ้ าง
3. จากสาเหตุดงั กล่ าว ผู้เรียนคิดว่ า ควรจะแก้ ปัญหาอย่ างไร