SlideShare a Scribd company logo
1 of 22
Software Evolution 
วิศวกรรมซอฟต์แวร์ (Software Engineering) : 
เป็นรายวิชาที่เน้นการออกแบบ และพัฒนาซอฟต์แวร์ให้มีคุณภาพสูง 
โดยหาวิธีการในการแก้ปัญหาเพื่อทาให้ซอฟต์แวร์ที่พัฒนาขึ้นมี 
คุณลกัษณะที่ดีตรงตามความต้องการของลูกค้า ผู้ใช้ระบบ และผู้พฒันา 
ระบบ 
เพราะทุกวนันี้ ซอฟต์แวร์คอมพิวเตอร์เป็นเทคโนโลยีที่มีบทบาทสา คญั 
มากที่สุดระดบัโลกและขาดไม่ได้ในการทา ธุรกิจ นอกจากนี้ ซอฟต์แวร์ 
ยงัเป็นแรงผลกัดนัให้เกิดการปรบัโฉมหน้าของคอมพิวเตอร์จากระบบที่ 
มีขนาดใหญ่ (Mainframe) มาสู่ยุคของระบบที่มีขนาดเล็ก 
(Micro/Personal Computer) จนกระท่งัเกิดอินเทอร์เน็ตขึ้นใน 
ปัจจุบนั 
Asst.Prof.Paijit Suksomboon SoftwareEvolution 1 / 1 LPRU
Software Evolution 
ความแตกต่างของวิทยาการคอมพิวเตอร์และวิศวกรรมซอฟต์แวร์ 
วิศวกรรมซอฟต์แวร์ (Software Engineering) 
อ ยู่บ น ร า ก ฐ า น ข อ ง วิธีก า ร ท า ง วิศ ว ก ร ร ม ศ า ส ต ร์ ซึ่ง 
ประยุกต์แนวคิด/ทฤษฎีทางวิทยาศาสตร์ คณิตศาสตร์และ 
เทคโนโลยีขณะนั้นในการสร้างผลิตภณัฑ์ที่เป็นประโยชน์ 
และปลอดภยัต่อสาธารณะ 
* ผลงานถูกพิจารณา หรือ ตดัสินโดยกล่มุผู้ใช้ 
Asst.Prof.Paijit Suksomboon SoftwareEvolution 1 / 2 LPRU
วิศวกรรมซอฟต์แวร์ 
Software Engineering 
(SE) 
Software Evolution 
SE’s main goal is to develop systematic 
models and reliable techniques for 
producing high-quality software on time and 
within budget and 
SE people are interested in designing and 
developing information systems that are 
appropriate to the client organization 
Asst.Prof.Paijit Suksomboon SoftwareEvolution 1 / 3 LPRU
Software Evolution 
ลกัษณะของวิศวกรรมซอฟต์แวร์ 
 เกี่ยวข้องกบัการสร้างโปรแกรมขนาดใหญ่ 
 สามารถจดัการเกี่ยวกบัความซา้ซ้อนได้ 
 เน้นการทา งานร่วมกนัของบุคลากร 
 สามารถเปลี่ยนแปลงได้ง่ายเมื่อจาเป็น 
 เน้นการพฒันาให้มีประสิทธิภาพ 
 สนองความต้องการของผู้ใช้ 
Asst.Prof.Paijit Suksomboon SoftwareEvolution 1 / 4 LPRU
Software Evolution 
องค์ประกอบของการวิศวกรรมซอฟต์แวร์ 
ก า ร วิศ ว ก ร ร ม ซ อ ฟ ต์แ ว ร์เ ป็ น ก ร ะ บ ว น ก า ร ผ ลิต (production)ที่ 
ป ร ะ ก อ บ ด้ว ย กิจ ก ร ร ม ช่ว ง ต่า ง ๆ เ พื่อ ส ร้า ง ผ ลิต ภัณฑ์ซ อ ฟ ต์แ ว ร์ 
(software products) การทา กิจกรรมในแต่ละช่วงอาศยัเทคนิคและ 
เครื่องมือช่วยต่างๆ (support tools) ที่นักวิชาการคอมพิวเตอร์และ 
นกัวิจยัได้เสนอไว้ 
Software production 
processes 
Software products 
Support tools 
/Environments 
Market places / 
users 
Asst.Prof.Paijit Suksomboon SoftwareEvolution 1 / 5 LPRU
Software Evolution 
 กระบวนการ หมายถึง ข้นัตอนต่าง ๆ ที่เกี่ยวข้องกนั และนาไปปฏิบตัิ 
เพ่อืให้บรรลวุตัถปุระสงค์ที่กา หนดไว้ 
 กระบวนการมีความหมายรวมถึง ทรัพยากร เช่น คน , วิธีการ และ 
เครื่องมือที่จา เป็นสา หรบันาไปใช้ปฏิบตัิตามข้นัตอนวิธีการที่กา หนดไว้ 
ในกระบวนการด้วย 
 กระบวนการที่ดีย่อมสามารถปฏิบตัิซา้ และได้ผลลพัธ์แบบเดียวกนัเสมอ 
 กระบวนการทางวิศวกรรมซอฟต์แวร์ ช่วยให้เห็นกิจกรรมต่าง ๆที่จา เป็น 
สา หรบัการพฒันา SW ที่กา หนดให้ ต้งัแต่ต้นจนจบและประสบผลสา เร็จ 
ดี 
 กระบวนการดงักล่าว ไม่ใช่ SDLC (System Development Life 
Cycle) ที่นกัพฒันาร้จูกัเท่าน้นั เพราะ SDLC มีแต่เพียงเฟส (phase) 
สา คญัเท่านั้น และ SDLC ก็เน้นแต่เพียงกิจกรรมที่เกี่ยวข้องกบัการ 
พัฒนาเท่านั้น ไม่ได้กล่าวถึงกิจกรรมอื่น ๆ เช่น การวางแผน , การ 
ประมาณการ , การสอบทานผลงาน เป็นต้น 
Asst.Prof.Paijit Suksomboon SoftwareEvolution 1 / 6 LPRU
Software Evolution 
ลกัษณะของกระบวนการวิศวกรรมซอฟต์แวร์ 
o Understandability : มีการนิยามขอบเขตของกระบวนการที่ชดั 
แจ้งและง่ายต่อการเข้าใจ 
o Visibility : ทา ให้กิจกรรมกระบวนการชดัเจนที่สุดเพื่อสามารถ 
มองเห็นจากภายนอกได้ชดัเจน 
o Supportability : เครื่องมือช่วยการวิศวกรรมซอฟต์แวร์ (CASE) 
สามารถช่วยสนบัสนุนกิจกรรมกระบวนการในขอบเขตใด 
o Acceptability : กระบวนการที่กา หนดสามารถยอมรบัและใช้โดย 
วิศวกรซอฟต์แวร์ในการผลิตผลิตภณัฑ์ซอฟต์แวร์ 
o Reliability : กระบวนการถูกออกแบบในแนวทางซึ่งความผิดพลาด 
ของกระบวนการถูกหลีกเลี่ยงก่อนที่จะส่งผลต่อความผิดพลาดข อง 
ผลิตภณัฑ์ซอฟต์แวร์ 
Asst.Prof.Paijit Suksomboon SoftwareEvolution 1 / 7 LPRU
Software Evolution 
ลกัษณะของกระบวนการวิศวกรรมซอฟต์แวร์ 
o Robustness : กระบวนการสามารถทางานต่อได้แม้นว่ามีปัญหาที่ 
ไม่คาดการณ์เกิดขึ้น 
o Maintainability : กระบวนการสามารถวิวฒันาการเพื่อตอบสนอง 
การเปลี่ยนแปลงความต้องการขององค์กร 
o Rapidity : กระบวนการสามารถทา ให้ส่งมอบผลิตภณัฑ์ได้เร็วนับ 
จ า ก ที่ รูป แ บ บ คุ ณ ลัก ษ ณ ะ ข อ ง ซ อ ฟ ต์ แ ว ร์ (Software 
specifications) ถูกกาหนด 
Asst.Prof.Paijit Suksomboon SoftwareEvolution 1 / 8 LPRU
Introduction 
5 ปัจจยัที่ต้องคา นึงในเชิงวิศวกรรมซอฟต์แวร์ 
(Five Different Aspects) 
บางปัญหาด้านวิศวกรรมซอฟต์แวร์สามารถแก้ไขโดยหลกัการ 
ทางคณิตศาสตร์และวิทยาการคอมพิวเตอร์ แต่ก็มีหลายที่ไม่สาม ารถ 
ดาเนินการได้ อาทิ เศรษฐศาสตร์ (Economics) การจัดการ 
(Management) หรือปรชัญา (Psychology) จึงต้องแสดงให้เห็นถึง 
ขอบเขตที่วิศวกรรมซอฟต์แวร์จะต้องพิจารณา 
1. ด้านประวตัิศาสตร์ (Historical Aspects) 
2. ด้านเศรษฐกิจ (Economic Aspects) 
3. ด้านการบา รงุรกัษา (Maintenance Aspects) 
4. ด้านการวิเคราะห์และออกแบบ (Specification and Design 
Aspects) 
5. ด้านทีมเขียนโปรแกรม (Team Programming Aspects) 
Asst.Prof.Paijit Suksomboon SoftwareEvolution 1 / 9 LPRU
Introduction 
1. ปัจจยัด้านประวตัิศาสตร์ (Historical Aspects) 
- !Fact ระบบไฟฟ้าสามารถล่มได้ แต่ยงัไม่บ่อยเท่าระบบเงินเดือนล่ม 
- !True สะพานสามารถพงัได้ แต่ยงัไม่เท่ากบัที่ระบบปฏิบตัิการพงั แม้กระท่งั 
การพิพากษาผู้ผลิต 
- NATO Study group in 1967 coined the term “Software 
Engineering” A conclusion : Software engineering should use the 
philosophies and paradigms of established engineering 
disciplines to solve “Software Crisis” 
- Software Crisis : Quality of software ware generally unacceptably 
low and deadlines and cost limits were not being met. 
- Why then cannot bridge-building techniques be used to build 
operating System ????? 
Asst.Prof.Paijit Suksomboon SoftwareEvolution 1 / 10 LPRU
Introduction 
1. ปัจจยัด้านประวตัิศาสตร์ (Historical Aspects) 
- First major difference. 
คุณสมบตัิของวิศวกรรมด้านอื่น ๆ กบัวิศวกรรมซอฟต์แวร์ ยงัมีผลกระทบที่เกิดการ 
การล้มเหลวของสงิ่ดา เนินการต่างกนั เช่น 
Civil 
- การออกแบบจะคา นึงถึงความปลอดภยัของมนุษย์ 
- ผลกระทบจากการล้มเหลวจะคงอยู่และจะเสมือนบทเรียนที่สอนให้ร้ถูึงความ 
เสียหายที่เกิดจากโครงสร้างสะพาน 
Software 
- ระบบปฏิบตัิการล่ม จะไม่ถูกนาไปพิจารณาเรื่องการลงทุนใด ๆ 
- เมื่อเกิดการล่ม, ก็ไม่มีหลกัฐานใด ๆ บ่งบอกถึงสาเหตุการล่มได้ 
- ถ้า วิศ ว ก ร ซ อ ฟ ต์แ ว ร์เ อ า จ ริง เ อ า จัง กัด เ พื่อ ไ ม่ใ ห้เ กิด ก า ร ล่ม ข อ ง 
ระบบปฏิบตัิการเหมือนกบัวิศวกรโยธาเอาจริงเอาจงัป้องกนัไม่ได้เกิดการพงั 
ของสะพานได้ ก็จะ ส า ม า ร ถ ย ก ร ะ ดับ ค ว า ม เ ชี่ย ว ช า ญ ด้า น วิศ ว ก ร ร ม 
ซอฟต์แวร์เทียบเท่ากบัวิศวกรรมด้านอื่นๆ ได้ 
Asst.Prof.Paijit Suksomboon SoftwareEvolution 1 / 11 LPRU
Introduction 
1. ปัจจยัด้านประวตัิศาสตร์ (Historical Aspects) 
- Second major difference. 
ระหว่างการปรบัปรุง/บา รุงรกัษาเพื่อให้สะพานกบัระบบปฏิบตัิการมีประสิทธิภาพ 
- การบา รุงรกัษาสะพาน มกัดา เนินการเพียง ทาสีใหม่, ซ่อมแซมรอยร้าวเล็ก ๆ 
น้อย ๆ , ปรบัพื้นถนน เป็นต้น ซึ่งไม่ทา ให้โครงสร้างเดิมเปลี่ยนแปลง 
- แต่ด้านวิศวกรซอฟต์แวร์ต้องปรบัเปลี่ยนการประมวลผลระบบปฏิบตัิการ 
แบบ time sharing จากหลายระบบที่สถาปัตยกรรมแตกต่างกนัได้ ซึ่งอาจมี 
ผลทา ให้เกิดการเปลี่ยนแปลงโครงสร้างได้ 
Asst.Prof.Paijit Suksomboon SoftwareEvolution 1 / 12 LPRU
Introduction 
2. ปัจจยัด้านเศรษฐกิจ (Economic Aspects) 
- ความสมัพนัธ์ระหว่างวิศวกรรมซอฟต์แวร์ และวิทยาการคอมพิวเตอร์เหมือนกบั 
ความสมัพนัธ์ระหว่างวิศวกรรมเคมี และเคมี โดยที่ 
> วิทยาการคอมพิวเตอร์ และเคมี อยู่ในสายวิทยาศาสตร์ ซึ่งมีท้งัทฤษฎีและการ 
ปฏิบตัิ 
> เคมี ปฏิบตัิโดยการเข้าเล็ปทา งาน ส่วนวิทยาการคอมพิวเตอร์ ปฏิบตัิโดยการ 
เขียนโปรแกรม 
ตวัอย่างเช่น “กระบวนการสกดัน้ามนัเบนซินจากถ่ายหิน” 
- นกัเคมี-> หาวิธีการท่จีะสามารถแปลงถ่านหินให้กลายเป็นน้ามนัเบนซิน 
- วิศวกรเคมี 
-> พินิจและวิเคราะห์เพื่อจะเลอืกกลไกเพียง 1 เดียวที่จะสกดัน้ามนัเบนซินจาก 
ถ่านหิน 
-> ประเมินผลในทุกทางที่จะสร้างความชดัเจนในทางเลือกและหาต้นทุน 
ค่าใช้จ่ายต่อลิตรที่น้อยที่สุด 
Asst.Prof.Paijit Suksomboon SoftwareEvolution 1 / 13 LPRU
Introduction 
2. ปัจจยัด้านเศรษฐกิจ (Economic Aspects) 
- เช่นเดียวกบัความสมัพนัธ์ระหว่างวิศวกรรมซอฟต์แวร์และวิทยาการคอมพิวเตอร์ 
> วิทยาการคอมพิวเตอร์ลงทุนในการผลิตซอฟต์แวร์ที่หลากหลาย ซึ่งอาจดีบางไม่ 
ดีบางเพื่อให้ได้ผลลพัธ์ที่ต้องการ 
> วิศวกรรมซอฟต์แวร์จะลงทุนโดยเลือกเทคนิคหนึ่ง ๆ และหาวิธีการให้ประหยดั 
ค่าใช้จ่ายมากที่สุด 
Example!! Currently using CTold discovery that CTnew produced in 
nine-tenths (10%) of the time. Common sense seems to dictate 
that CTnew is appropriate techniques to use. 
But!! The economics of software engineering may imply the 
opposites. 
- One reason : Cost of introducing new technology 
- Second reason : Economics of Maintenance 
Asst.Prof.Paijit Suksomboon SoftwareEvolution 1 / 14 LPRU
Introduction 
3. ปัจจยัด้านการบา รงุรกัษา (Maintenance Aspects) 
- Life cycle : (waterfall model, 1970s) : seven broad phases. 
1) Requirements : clients ‘s requirement 
2) Specification (analysis) : the clients ’s requirement are analyzed 
and presented in the form of “specification document”. 
proposed software development . 
3) Design : design 2 process 
> architectural design - broken down into component (module) 
> detailed design – designed each module . 
(resulting design document) 
4) Implementation : coded and tested. 
5) Integration : combined and tested as a whole. 
Asst.Prof.Paijit Suksomboon SoftwareEvolution 1 / 15 LPRU
Introduction 
3. ปัจจยัด้านการบา รงุรกัษา (Maintenance Aspects) 
6) Maintenance : includes all changes to the product 
-> specification document. Maintenance includes : 
- Corrective maintenance (or software repair) 
specification unchanged. 
- Enhancement maintenance (or software update) 
specification and implementation of those changes. 
Two types of enhancement. 
(1) perfective maintenance : changes that client thinks 
will improve the effectiveness of the product. 
(2) adaptive maintenance : change that environment in 
with product operates, new government regulations. 
7) Retirement : product is removed from service. 
Asst.Prof.Paijit Suksomboon SoftwareEvolution 1 / 16 LPRU
Introduction 
3. ปัจจยัด้านการบา รงุรกัษา (Maintenance Aspects) 
Approximate relative costs of the phases of the software life cycle. 
(Stephen R. Schach, 1996, P.11) 
integration 
8% 
Module 
testing 
7% 
Maintenance 
67% 
Module 
Coding 
Design 5% 
6% 
Specification 
(Analysis) 
5% 
Requirement 
2% 
Maintenance is so important, 
a major aspect of software 
engineering consists of those 
techniques, tools, and 
practices the lead to a 
reduction in maintenance 
cost. 
Asst.Prof.Paijit Suksomboon SoftwareEvolution 1 / 17 LPRU
Introduction 
4. ปัจจยัด้านการวิเคราะหแ์ละออกแบบ 
(Specification and Design Aspects) 
- Software Professional : HUMAN 
Larger Software Projects 
Requirement 
and specification 
Design 
Implementation 
Smaller Software Projects 
Integration 
Acceptance 
Test 
Maintenance 
ค่าใช้จ่ายในการ 
จดัการข้อผิดพลาด 
(Relative cost 
to fix fault) 
500 
100 
50 
20 
Asst.Prof.Paijit Suksomboon SoftwareEvolution 1 / 18 LPRU
Introduction 
4. ปัจจยัด้านการวิเคราะหแ์ละออกแบบ 
(Specification and Design Aspects) 
- ถ้าเกิดความผิดพลาดในระหว่าง requirement phase ก็จะมีผลทาให้เกิด 
ข้อผิดพลาดตามมาใน specification, design and the code. 
- อย่างไรก็ตาม ไม่ควรให้ความสาคญัเฉพาะการวิเคราะห์และออกแบบ เพราะ 
ข้อผิดพลาดอาจเกิดได้ในส่วนงานก่อนและหลงัได้ 
- หากวิเคราะห์และออกแบบได้ดี จะสามารถลดค่าใช้จ่ายของการบารุงรกัษาได้ 
10% และสามารถลดค่าใช้จ่ายโดยรวมได้ถึง 7% 
ซึ่งหมายถึง หากลดข้อผิดพลาดในการวิเคราะห์และออกแบบได้ จะสามารถลด 
จานวนข้อผิดพลาดโดยรวมได้ 6% -7% 
Asst.Prof.Paijit Suksomboon SoftwareEvolution 1 / 19 LPRU
Introduction 
5. ปัจจยัด้านทีมเขยีนโปรแกรม 
(Team Programming Aspects) 
- ปัจจยัที่มีผลต่อประสิทธิภาพและค่าใช้จ่าย (Performance-price factor) 
= เวลาที่ใช้ปฏิบตัิการในล้านคา ส่งั x ค่าใช้จ่าย CPU และหน่วยความจา หลกั 
- หากพิจารณาถึงค่าผลลพัธ์ จะสามารถลดลงได้ในยุคคอมพิวเตอร์ที่เปลี่ยนแปลงไป 
ซึ่ง ถ้าด้านฮาร์ดแวร์มีประสิทธิภาพดีขึ้น ลงทุนน้อยลง อย่างไรก็ตาม องค์กร 
สามารถจดัหาฮาร์ดแวร์ในการรนัผลิตภณัฑ์ของตนได้ แต่ผลิตภณัฑ์นั้นอย่างไรก็ 
ต้องถูกเขียนโดยบุคคลในเวลาที่กา หนด ดงัน้นัปัจจยัที่ต้องคา นึงประการสุดท้ายคือ 
ทีมเขียนโปรแกรม ว่าควรจะพฒันาโดยคนเดียว หรือกี่คน จึงจะเหมาะสม 
Example: ถ้าผลิตภณัฑ์น้นัจะถกูส่งมอบภายใน 8 เดือน แต่ถ้าพฒันาโดยนกัเขียน 
โปรแกรมเพียง 1 คน จะต้องใช้เวลาถึง 15 ปีจึงจะสมบูรณ์ 
Ans ควรต้องพฒันากนัเป็นทีมจึงเหมาะสม. 
Asst.Prof.Paijit Suksomboon SoftwareEvolution 1 / 20 LPRU
Introduction 
5. Team Programming Aspects (ต่อ) 
- อย่างไรก็ตาม ผู้บริหารโครงการก็ต้องการทีมผู้พัฒนาให้เหมาะสมในแต่ละ 
กระบวนการพฒันาโดยอาจใช้เทคนิคในการกา หนดความสมัพนัธ์ระหว่างคน/งาน/ 
เวลาหรือค่าใช้จ่าย 
- รวมถึงหวัหน้าทีมเขียนโปรแกรมต้องสามารถรบัปัญหาด้าน interface and 
communication. 
- Example: 
> Somchai and Somsri code modules P and Q respectively, where 
module P calls module Q. 
> When Somchai codes P he writes a call to Q with five arguments 
in the argument list. Somsri codes Q with five arguments, but in a 
difference order from those of Somchai. 
Ans Fault or error result. 
Asst.Prof.Paijit Suksomboon SoftwareEvolution 1 / 21 LPRU
Introduction 
5. Team Programming Aspects (ต่อ) 
- ปัญหาที่พบ : 
- Design problem 
- Often changed after coding commences 
- Notification of a change is sometimes not distributed to all 
members of the development team. 
- Poor communication 
- Tip of the iceberg 
- However, considerable proportion of today’s software engineering 
must also include techniques for ensuring that teams are properly 
organized and managed. 
Asst.Prof.Paijit Suksomboon SoftwareEvolution 1 / 22 LPRU

More Related Content

Similar to ..

การพัฒนาซอฟแวร์
การพัฒนาซอฟแวร์การพัฒนาซอฟแวร์
การพัฒนาซอฟแวร์Watinee Poksup
 
System development life cycle sdlc
System development life cycle  sdlcSystem development life cycle  sdlc
System development life cycle sdlcKapook Moo Auan
 
System Development Life Cycle S D L C
System  Development  Life  Cycle   S D L CSystem  Development  Life  Cycle   S D L C
System Development Life Cycle S D L CKapook Moo Auan
 
การแก้ปัญหาการออกแบบและพัฒนาขั้นตอนวิธี
การแก้ปัญหาการออกแบบและพัฒนาขั้นตอนวิธีการแก้ปัญหาการออกแบบและพัฒนาขั้นตอนวิธี
การแก้ปัญหาการออกแบบและพัฒนาขั้นตอนวิธีSaranyu Srisrontong
 
วงจรการพัฒนาโปรแกรม
วงจรการพัฒนาโปรแกรมวงจรการพัฒนาโปรแกรม
วงจรการพัฒนาโปรแกรมdraught
 
กิจกรรมที่ 4 วงจรการพัฒนาโปรแกรม
กิจกรรมที่ 4 วงจรการพัฒนาโปรแกรมกิจกรรมที่ 4 วงจรการพัฒนาโปรแกรม
กิจกรรมที่ 4 วงจรการพัฒนาโปรแกรมdraught
 

Similar to .. (20)

Lesson 4 (misson)2
Lesson 4 (misson)2Lesson 4 (misson)2
Lesson 4 (misson)2
 
Lesson 4 (misson)2
Lesson 4 (misson)2Lesson 4 (misson)2
Lesson 4 (misson)2
 
Lesson 4 (misson)
Lesson 4 (misson)Lesson 4 (misson)
Lesson 4 (misson)
 
Tools
ToolsTools
Tools
 
Soft were
Soft wereSoft were
Soft were
 
การพัฒนาซอฟแวร์
การพัฒนาซอฟแวร์การพัฒนาซอฟแวร์
การพัฒนาซอฟแวร์
 
System development life cycle sdlc
System development life cycle  sdlcSystem development life cycle  sdlc
System development life cycle sdlc
 
System Development Life Cycle S D L C
System  Development  Life  Cycle   S D L CSystem  Development  Life  Cycle   S D L C
System Development Life Cycle S D L C
 
การแก้ปัญหาการออกแบบและพัฒนาขั้นตอนวิธี
การแก้ปัญหาการออกแบบและพัฒนาขั้นตอนวิธีการแก้ปัญหาการออกแบบและพัฒนาขั้นตอนวิธี
การแก้ปัญหาการออกแบบและพัฒนาขั้นตอนวิธี
 
คอม
คอมคอม
คอม
 
Ch8
Ch8Ch8
Ch8
 
Ch8
Ch8Ch8
Ch8
 
Software
SoftwareSoftware
Software
 
วงจรการพัฒนาโปรแกรม
วงจรการพัฒนาโปรแกรมวงจรการพัฒนาโปรแกรม
วงจรการพัฒนาโปรแกรม
 
กิจกรรมที่ 4 วงจรการพัฒนาโปรแกรม
กิจกรรมที่ 4 วงจรการพัฒนาโปรแกรมกิจกรรมที่ 4 วงจรการพัฒนาโปรแกรม
กิจกรรมที่ 4 วงจรการพัฒนาโปรแกรม
 
ระบบสารสนเทศ
ระบบสารสนเทศระบบสารสนเทศ
ระบบสารสนเทศ
 
08
0808
08
 
08
0808
08
 
Unit01
Unit01Unit01
Unit01
 
08
0808
08
 

..

  • 1. Software Evolution วิศวกรรมซอฟต์แวร์ (Software Engineering) : เป็นรายวิชาที่เน้นการออกแบบ และพัฒนาซอฟต์แวร์ให้มีคุณภาพสูง โดยหาวิธีการในการแก้ปัญหาเพื่อทาให้ซอฟต์แวร์ที่พัฒนาขึ้นมี คุณลกัษณะที่ดีตรงตามความต้องการของลูกค้า ผู้ใช้ระบบ และผู้พฒันา ระบบ เพราะทุกวนันี้ ซอฟต์แวร์คอมพิวเตอร์เป็นเทคโนโลยีที่มีบทบาทสา คญั มากที่สุดระดบัโลกและขาดไม่ได้ในการทา ธุรกิจ นอกจากนี้ ซอฟต์แวร์ ยงัเป็นแรงผลกัดนัให้เกิดการปรบัโฉมหน้าของคอมพิวเตอร์จากระบบที่ มีขนาดใหญ่ (Mainframe) มาสู่ยุคของระบบที่มีขนาดเล็ก (Micro/Personal Computer) จนกระท่งัเกิดอินเทอร์เน็ตขึ้นใน ปัจจุบนั Asst.Prof.Paijit Suksomboon SoftwareEvolution 1 / 1 LPRU
  • 2. Software Evolution ความแตกต่างของวิทยาการคอมพิวเตอร์และวิศวกรรมซอฟต์แวร์ วิศวกรรมซอฟต์แวร์ (Software Engineering) อ ยู่บ น ร า ก ฐ า น ข อ ง วิธีก า ร ท า ง วิศ ว ก ร ร ม ศ า ส ต ร์ ซึ่ง ประยุกต์แนวคิด/ทฤษฎีทางวิทยาศาสตร์ คณิตศาสตร์และ เทคโนโลยีขณะนั้นในการสร้างผลิตภณัฑ์ที่เป็นประโยชน์ และปลอดภยัต่อสาธารณะ * ผลงานถูกพิจารณา หรือ ตดัสินโดยกล่มุผู้ใช้ Asst.Prof.Paijit Suksomboon SoftwareEvolution 1 / 2 LPRU
  • 3. วิศวกรรมซอฟต์แวร์ Software Engineering (SE) Software Evolution SE’s main goal is to develop systematic models and reliable techniques for producing high-quality software on time and within budget and SE people are interested in designing and developing information systems that are appropriate to the client organization Asst.Prof.Paijit Suksomboon SoftwareEvolution 1 / 3 LPRU
  • 4. Software Evolution ลกัษณะของวิศวกรรมซอฟต์แวร์  เกี่ยวข้องกบัการสร้างโปรแกรมขนาดใหญ่  สามารถจดัการเกี่ยวกบัความซา้ซ้อนได้  เน้นการทา งานร่วมกนัของบุคลากร  สามารถเปลี่ยนแปลงได้ง่ายเมื่อจาเป็น  เน้นการพฒันาให้มีประสิทธิภาพ  สนองความต้องการของผู้ใช้ Asst.Prof.Paijit Suksomboon SoftwareEvolution 1 / 4 LPRU
  • 5. Software Evolution องค์ประกอบของการวิศวกรรมซอฟต์แวร์ ก า ร วิศ ว ก ร ร ม ซ อ ฟ ต์แ ว ร์เ ป็ น ก ร ะ บ ว น ก า ร ผ ลิต (production)ที่ ป ร ะ ก อ บ ด้ว ย กิจ ก ร ร ม ช่ว ง ต่า ง ๆ เ พื่อ ส ร้า ง ผ ลิต ภัณฑ์ซ อ ฟ ต์แ ว ร์ (software products) การทา กิจกรรมในแต่ละช่วงอาศยัเทคนิคและ เครื่องมือช่วยต่างๆ (support tools) ที่นักวิชาการคอมพิวเตอร์และ นกัวิจยัได้เสนอไว้ Software production processes Software products Support tools /Environments Market places / users Asst.Prof.Paijit Suksomboon SoftwareEvolution 1 / 5 LPRU
  • 6. Software Evolution  กระบวนการ หมายถึง ข้นัตอนต่าง ๆ ที่เกี่ยวข้องกนั และนาไปปฏิบตัิ เพ่อืให้บรรลวุตัถปุระสงค์ที่กา หนดไว้  กระบวนการมีความหมายรวมถึง ทรัพยากร เช่น คน , วิธีการ และ เครื่องมือที่จา เป็นสา หรบันาไปใช้ปฏิบตัิตามข้นัตอนวิธีการที่กา หนดไว้ ในกระบวนการด้วย  กระบวนการที่ดีย่อมสามารถปฏิบตัิซา้ และได้ผลลพัธ์แบบเดียวกนัเสมอ  กระบวนการทางวิศวกรรมซอฟต์แวร์ ช่วยให้เห็นกิจกรรมต่าง ๆที่จา เป็น สา หรบัการพฒันา SW ที่กา หนดให้ ต้งัแต่ต้นจนจบและประสบผลสา เร็จ ดี  กระบวนการดงักล่าว ไม่ใช่ SDLC (System Development Life Cycle) ที่นกัพฒันาร้จูกัเท่าน้นั เพราะ SDLC มีแต่เพียงเฟส (phase) สา คญัเท่านั้น และ SDLC ก็เน้นแต่เพียงกิจกรรมที่เกี่ยวข้องกบัการ พัฒนาเท่านั้น ไม่ได้กล่าวถึงกิจกรรมอื่น ๆ เช่น การวางแผน , การ ประมาณการ , การสอบทานผลงาน เป็นต้น Asst.Prof.Paijit Suksomboon SoftwareEvolution 1 / 6 LPRU
  • 7. Software Evolution ลกัษณะของกระบวนการวิศวกรรมซอฟต์แวร์ o Understandability : มีการนิยามขอบเขตของกระบวนการที่ชดั แจ้งและง่ายต่อการเข้าใจ o Visibility : ทา ให้กิจกรรมกระบวนการชดัเจนที่สุดเพื่อสามารถ มองเห็นจากภายนอกได้ชดัเจน o Supportability : เครื่องมือช่วยการวิศวกรรมซอฟต์แวร์ (CASE) สามารถช่วยสนบัสนุนกิจกรรมกระบวนการในขอบเขตใด o Acceptability : กระบวนการที่กา หนดสามารถยอมรบัและใช้โดย วิศวกรซอฟต์แวร์ในการผลิตผลิตภณัฑ์ซอฟต์แวร์ o Reliability : กระบวนการถูกออกแบบในแนวทางซึ่งความผิดพลาด ของกระบวนการถูกหลีกเลี่ยงก่อนที่จะส่งผลต่อความผิดพลาดข อง ผลิตภณัฑ์ซอฟต์แวร์ Asst.Prof.Paijit Suksomboon SoftwareEvolution 1 / 7 LPRU
  • 8. Software Evolution ลกัษณะของกระบวนการวิศวกรรมซอฟต์แวร์ o Robustness : กระบวนการสามารถทางานต่อได้แม้นว่ามีปัญหาที่ ไม่คาดการณ์เกิดขึ้น o Maintainability : กระบวนการสามารถวิวฒันาการเพื่อตอบสนอง การเปลี่ยนแปลงความต้องการขององค์กร o Rapidity : กระบวนการสามารถทา ให้ส่งมอบผลิตภณัฑ์ได้เร็วนับ จ า ก ที่ รูป แ บ บ คุ ณ ลัก ษ ณ ะ ข อ ง ซ อ ฟ ต์ แ ว ร์ (Software specifications) ถูกกาหนด Asst.Prof.Paijit Suksomboon SoftwareEvolution 1 / 8 LPRU
  • 9. Introduction 5 ปัจจยัที่ต้องคา นึงในเชิงวิศวกรรมซอฟต์แวร์ (Five Different Aspects) บางปัญหาด้านวิศวกรรมซอฟต์แวร์สามารถแก้ไขโดยหลกัการ ทางคณิตศาสตร์และวิทยาการคอมพิวเตอร์ แต่ก็มีหลายที่ไม่สาม ารถ ดาเนินการได้ อาทิ เศรษฐศาสตร์ (Economics) การจัดการ (Management) หรือปรชัญา (Psychology) จึงต้องแสดงให้เห็นถึง ขอบเขตที่วิศวกรรมซอฟต์แวร์จะต้องพิจารณา 1. ด้านประวตัิศาสตร์ (Historical Aspects) 2. ด้านเศรษฐกิจ (Economic Aspects) 3. ด้านการบา รงุรกัษา (Maintenance Aspects) 4. ด้านการวิเคราะห์และออกแบบ (Specification and Design Aspects) 5. ด้านทีมเขียนโปรแกรม (Team Programming Aspects) Asst.Prof.Paijit Suksomboon SoftwareEvolution 1 / 9 LPRU
  • 10. Introduction 1. ปัจจยัด้านประวตัิศาสตร์ (Historical Aspects) - !Fact ระบบไฟฟ้าสามารถล่มได้ แต่ยงัไม่บ่อยเท่าระบบเงินเดือนล่ม - !True สะพานสามารถพงัได้ แต่ยงัไม่เท่ากบัที่ระบบปฏิบตัิการพงั แม้กระท่งั การพิพากษาผู้ผลิต - NATO Study group in 1967 coined the term “Software Engineering” A conclusion : Software engineering should use the philosophies and paradigms of established engineering disciplines to solve “Software Crisis” - Software Crisis : Quality of software ware generally unacceptably low and deadlines and cost limits were not being met. - Why then cannot bridge-building techniques be used to build operating System ????? Asst.Prof.Paijit Suksomboon SoftwareEvolution 1 / 10 LPRU
  • 11. Introduction 1. ปัจจยัด้านประวตัิศาสตร์ (Historical Aspects) - First major difference. คุณสมบตัิของวิศวกรรมด้านอื่น ๆ กบัวิศวกรรมซอฟต์แวร์ ยงัมีผลกระทบที่เกิดการ การล้มเหลวของสงิ่ดา เนินการต่างกนั เช่น Civil - การออกแบบจะคา นึงถึงความปลอดภยัของมนุษย์ - ผลกระทบจากการล้มเหลวจะคงอยู่และจะเสมือนบทเรียนที่สอนให้ร้ถูึงความ เสียหายที่เกิดจากโครงสร้างสะพาน Software - ระบบปฏิบตัิการล่ม จะไม่ถูกนาไปพิจารณาเรื่องการลงทุนใด ๆ - เมื่อเกิดการล่ม, ก็ไม่มีหลกัฐานใด ๆ บ่งบอกถึงสาเหตุการล่มได้ - ถ้า วิศ ว ก ร ซ อ ฟ ต์แ ว ร์เ อ า จ ริง เ อ า จัง กัด เ พื่อ ไ ม่ใ ห้เ กิด ก า ร ล่ม ข อ ง ระบบปฏิบตัิการเหมือนกบัวิศวกรโยธาเอาจริงเอาจงัป้องกนัไม่ได้เกิดการพงั ของสะพานได้ ก็จะ ส า ม า ร ถ ย ก ร ะ ดับ ค ว า ม เ ชี่ย ว ช า ญ ด้า น วิศ ว ก ร ร ม ซอฟต์แวร์เทียบเท่ากบัวิศวกรรมด้านอื่นๆ ได้ Asst.Prof.Paijit Suksomboon SoftwareEvolution 1 / 11 LPRU
  • 12. Introduction 1. ปัจจยัด้านประวตัิศาสตร์ (Historical Aspects) - Second major difference. ระหว่างการปรบัปรุง/บา รุงรกัษาเพื่อให้สะพานกบัระบบปฏิบตัิการมีประสิทธิภาพ - การบา รุงรกัษาสะพาน มกัดา เนินการเพียง ทาสีใหม่, ซ่อมแซมรอยร้าวเล็ก ๆ น้อย ๆ , ปรบัพื้นถนน เป็นต้น ซึ่งไม่ทา ให้โครงสร้างเดิมเปลี่ยนแปลง - แต่ด้านวิศวกรซอฟต์แวร์ต้องปรบัเปลี่ยนการประมวลผลระบบปฏิบตัิการ แบบ time sharing จากหลายระบบที่สถาปัตยกรรมแตกต่างกนัได้ ซึ่งอาจมี ผลทา ให้เกิดการเปลี่ยนแปลงโครงสร้างได้ Asst.Prof.Paijit Suksomboon SoftwareEvolution 1 / 12 LPRU
  • 13. Introduction 2. ปัจจยัด้านเศรษฐกิจ (Economic Aspects) - ความสมัพนัธ์ระหว่างวิศวกรรมซอฟต์แวร์ และวิทยาการคอมพิวเตอร์เหมือนกบั ความสมัพนัธ์ระหว่างวิศวกรรมเคมี และเคมี โดยที่ > วิทยาการคอมพิวเตอร์ และเคมี อยู่ในสายวิทยาศาสตร์ ซึ่งมีท้งัทฤษฎีและการ ปฏิบตัิ > เคมี ปฏิบตัิโดยการเข้าเล็ปทา งาน ส่วนวิทยาการคอมพิวเตอร์ ปฏิบตัิโดยการ เขียนโปรแกรม ตวัอย่างเช่น “กระบวนการสกดัน้ามนัเบนซินจากถ่ายหิน” - นกัเคมี-> หาวิธีการท่จีะสามารถแปลงถ่านหินให้กลายเป็นน้ามนัเบนซิน - วิศวกรเคมี -> พินิจและวิเคราะห์เพื่อจะเลอืกกลไกเพียง 1 เดียวที่จะสกดัน้ามนัเบนซินจาก ถ่านหิน -> ประเมินผลในทุกทางที่จะสร้างความชดัเจนในทางเลือกและหาต้นทุน ค่าใช้จ่ายต่อลิตรที่น้อยที่สุด Asst.Prof.Paijit Suksomboon SoftwareEvolution 1 / 13 LPRU
  • 14. Introduction 2. ปัจจยัด้านเศรษฐกิจ (Economic Aspects) - เช่นเดียวกบัความสมัพนัธ์ระหว่างวิศวกรรมซอฟต์แวร์และวิทยาการคอมพิวเตอร์ > วิทยาการคอมพิวเตอร์ลงทุนในการผลิตซอฟต์แวร์ที่หลากหลาย ซึ่งอาจดีบางไม่ ดีบางเพื่อให้ได้ผลลพัธ์ที่ต้องการ > วิศวกรรมซอฟต์แวร์จะลงทุนโดยเลือกเทคนิคหนึ่ง ๆ และหาวิธีการให้ประหยดั ค่าใช้จ่ายมากที่สุด Example!! Currently using CTold discovery that CTnew produced in nine-tenths (10%) of the time. Common sense seems to dictate that CTnew is appropriate techniques to use. But!! The economics of software engineering may imply the opposites. - One reason : Cost of introducing new technology - Second reason : Economics of Maintenance Asst.Prof.Paijit Suksomboon SoftwareEvolution 1 / 14 LPRU
  • 15. Introduction 3. ปัจจยัด้านการบา รงุรกัษา (Maintenance Aspects) - Life cycle : (waterfall model, 1970s) : seven broad phases. 1) Requirements : clients ‘s requirement 2) Specification (analysis) : the clients ’s requirement are analyzed and presented in the form of “specification document”. proposed software development . 3) Design : design 2 process > architectural design - broken down into component (module) > detailed design – designed each module . (resulting design document) 4) Implementation : coded and tested. 5) Integration : combined and tested as a whole. Asst.Prof.Paijit Suksomboon SoftwareEvolution 1 / 15 LPRU
  • 16. Introduction 3. ปัจจยัด้านการบา รงุรกัษา (Maintenance Aspects) 6) Maintenance : includes all changes to the product -> specification document. Maintenance includes : - Corrective maintenance (or software repair) specification unchanged. - Enhancement maintenance (or software update) specification and implementation of those changes. Two types of enhancement. (1) perfective maintenance : changes that client thinks will improve the effectiveness of the product. (2) adaptive maintenance : change that environment in with product operates, new government regulations. 7) Retirement : product is removed from service. Asst.Prof.Paijit Suksomboon SoftwareEvolution 1 / 16 LPRU
  • 17. Introduction 3. ปัจจยัด้านการบา รงุรกัษา (Maintenance Aspects) Approximate relative costs of the phases of the software life cycle. (Stephen R. Schach, 1996, P.11) integration 8% Module testing 7% Maintenance 67% Module Coding Design 5% 6% Specification (Analysis) 5% Requirement 2% Maintenance is so important, a major aspect of software engineering consists of those techniques, tools, and practices the lead to a reduction in maintenance cost. Asst.Prof.Paijit Suksomboon SoftwareEvolution 1 / 17 LPRU
  • 18. Introduction 4. ปัจจยัด้านการวิเคราะหแ์ละออกแบบ (Specification and Design Aspects) - Software Professional : HUMAN Larger Software Projects Requirement and specification Design Implementation Smaller Software Projects Integration Acceptance Test Maintenance ค่าใช้จ่ายในการ จดัการข้อผิดพลาด (Relative cost to fix fault) 500 100 50 20 Asst.Prof.Paijit Suksomboon SoftwareEvolution 1 / 18 LPRU
  • 19. Introduction 4. ปัจจยัด้านการวิเคราะหแ์ละออกแบบ (Specification and Design Aspects) - ถ้าเกิดความผิดพลาดในระหว่าง requirement phase ก็จะมีผลทาให้เกิด ข้อผิดพลาดตามมาใน specification, design and the code. - อย่างไรก็ตาม ไม่ควรให้ความสาคญัเฉพาะการวิเคราะห์และออกแบบ เพราะ ข้อผิดพลาดอาจเกิดได้ในส่วนงานก่อนและหลงัได้ - หากวิเคราะห์และออกแบบได้ดี จะสามารถลดค่าใช้จ่ายของการบารุงรกัษาได้ 10% และสามารถลดค่าใช้จ่ายโดยรวมได้ถึง 7% ซึ่งหมายถึง หากลดข้อผิดพลาดในการวิเคราะห์และออกแบบได้ จะสามารถลด จานวนข้อผิดพลาดโดยรวมได้ 6% -7% Asst.Prof.Paijit Suksomboon SoftwareEvolution 1 / 19 LPRU
  • 20. Introduction 5. ปัจจยัด้านทีมเขยีนโปรแกรม (Team Programming Aspects) - ปัจจยัที่มีผลต่อประสิทธิภาพและค่าใช้จ่าย (Performance-price factor) = เวลาที่ใช้ปฏิบตัิการในล้านคา ส่งั x ค่าใช้จ่าย CPU และหน่วยความจา หลกั - หากพิจารณาถึงค่าผลลพัธ์ จะสามารถลดลงได้ในยุคคอมพิวเตอร์ที่เปลี่ยนแปลงไป ซึ่ง ถ้าด้านฮาร์ดแวร์มีประสิทธิภาพดีขึ้น ลงทุนน้อยลง อย่างไรก็ตาม องค์กร สามารถจดัหาฮาร์ดแวร์ในการรนัผลิตภณัฑ์ของตนได้ แต่ผลิตภณัฑ์นั้นอย่างไรก็ ต้องถูกเขียนโดยบุคคลในเวลาที่กา หนด ดงัน้นัปัจจยัที่ต้องคา นึงประการสุดท้ายคือ ทีมเขียนโปรแกรม ว่าควรจะพฒันาโดยคนเดียว หรือกี่คน จึงจะเหมาะสม Example: ถ้าผลิตภณัฑ์น้นัจะถกูส่งมอบภายใน 8 เดือน แต่ถ้าพฒันาโดยนกัเขียน โปรแกรมเพียง 1 คน จะต้องใช้เวลาถึง 15 ปีจึงจะสมบูรณ์ Ans ควรต้องพฒันากนัเป็นทีมจึงเหมาะสม. Asst.Prof.Paijit Suksomboon SoftwareEvolution 1 / 20 LPRU
  • 21. Introduction 5. Team Programming Aspects (ต่อ) - อย่างไรก็ตาม ผู้บริหารโครงการก็ต้องการทีมผู้พัฒนาให้เหมาะสมในแต่ละ กระบวนการพฒันาโดยอาจใช้เทคนิคในการกา หนดความสมัพนัธ์ระหว่างคน/งาน/ เวลาหรือค่าใช้จ่าย - รวมถึงหวัหน้าทีมเขียนโปรแกรมต้องสามารถรบัปัญหาด้าน interface and communication. - Example: > Somchai and Somsri code modules P and Q respectively, where module P calls module Q. > When Somchai codes P he writes a call to Q with five arguments in the argument list. Somsri codes Q with five arguments, but in a difference order from those of Somchai. Ans Fault or error result. Asst.Prof.Paijit Suksomboon SoftwareEvolution 1 / 21 LPRU
  • 22. Introduction 5. Team Programming Aspects (ต่อ) - ปัญหาที่พบ : - Design problem - Often changed after coding commences - Notification of a change is sometimes not distributed to all members of the development team. - Poor communication - Tip of the iceberg - However, considerable proportion of today’s software engineering must also include techniques for ensuring that teams are properly organized and managed. Asst.Prof.Paijit Suksomboon SoftwareEvolution 1 / 22 LPRU