บทที่ 1 บทนำสู่วิศวกรรมซอฟต์แวร์

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
การบำรุงและปรับปรุงระบบ KKU-FMIS รายงานโครงการหมายเลข COE
Advertisements

การเลือกใช้ซอฟท์แวร์ในงาน สารสนเทศ และแนวโน้มของ การพัฒนาซอฟท์แวร์ใน อนาคต การออกแบบและพัฒนา ซอฟท์แวร์ บทที่ 10.
โดย สำนักหอสมุด มหาวิทยาลัยเทคโนโลยีพระจอม เกล้าธนบุรี
ซอฟต์แวร์พัฒนาระบบฐานข้อมูล บทที่ 9 การเลือกใช้ซอฟท์แวร์ในงานสารสนเทศ และแนวโน้มของการพัฒนาซอฟท์แวร์ในอนาคต ปริญญา น้อยดอนไพร สาขาวิชาวิทยาการคอมพิวเตอร์
การบริหารการพยาบาล เพื่อสร้างวัฒนธรรมความปลอดภัยในการบริการพยาบาล
CPE 332 Computer Engineering Mathematics II
Verification & Validation K.Mathiang. Objective สามารถอธิบายผังขั้นตอนการออกแบบระบบ ดิจิทัลได้ สามารถอธิบายความเกี่ยวข้องของการทวนสอบ (Verification) กับการออกแบบระบบดิจิทัลได้
1 Chapter 6 Artificial Intelligence (AI) Artificial Intelligence concepts Evolution of Artificial Intelligence.
Introduction to Information Techonology Fundamental วรวิทย์ พูลสวัสดิ์ : Information Technology Fundamental.
PHP FRAMEWORK – Web Programming and Web Database Asst. Prof. Dr. Choopan Rattanapoka.
ลักษณะงานของวิศวกร ซอฟต์แวร์ ● วิเคราะห์และจัดทำความ ต้องการซอฟต์แวร์ ● ออกแบบซอฟต์แวร์ ● พัฒนาซอฟต์แวร์ ● ทดสอบซอฟต์แวร์ ● บำรุงรักษาซอฟต์แวร์ ● จัดการองค์ประกอบ.
การบริหารโครงการ (Project Management) โครงการ คือ งาน (task) ซึ่งมีการ กำหนดเวลาเริ่มต้นและสิ้นสุด ที่ แน่นอนและมีความต้องการใช้ทรัพยากร ต่างๆใน แต่ละกิจกรรมโดย.
ส่งเสริมให้คำที่ปรึกษาและบริการความรู้และทักษะด้านเทคโนโลยีสารสนเทศ
หน่วยที่ 1 ซอฟต์แวร์.
บทที่ 1 ความรู้เบื้องต้นเกี่ยวกับระบบและการวิเคราะห์ระบบ
วิชา การพัฒนางานด้วยระบบคุณภาพและเพิ่ม ผลผลิต (Work Development with Quality Management.
Information Systems Development
เทคโนโลยีสารสนเทศเพื่อชีวิต
เอกสารประกอบการบรรยาย หลักสูตร Fundamental หัวข้อวิชา องค์กรและระบบงานตรวจสอบภายใน สำนักกำกับและพัฒนาการตรวจสอบภาครัฐ กรมบัญชีกลาง.
แนวทางการตรวจประเมินองค์กรด้วยตนเอง (Self-Assessment)
ยุทธศาสตร์ชาติ 20 ปี ประเทศไทย 4.0 Thailand 4.0 อุตสาหกรรม 4.0
13 October 2007
เทคนิคการแก้ไขปัญหาแบบ QCC (QC Circle Techniques)
การตลาดในเศรษฐกิจยุคใหม่ (Marketing in the New Economy)
บทที่ 14 กลวิธีการทดสอบซอฟต์แวร์ (TESTING STRATEGIES)
บทที่ 7 หลักการบริหารงานคุณภาพ
Road to the Future - Future is Now
การปฐมนิเทศนักศึกษาชั้นปีที่ ๔ และสูงกว่า
บทนำ 1 ความหมายของการตลาด แนวความคิดหลักทางการตลาด
บทที่ 6 วิศวกรรมระบบ (System Engineering)
บทที่ 7 ระบบสารสนเทศ.
วิทยาศาสตร์ และ กระบวนการทางวิทยาศาสตร์
Generic View of Process
การใช้ Big Data และ Artificial Intelligence (AI) ในงานสร้างสุขภาพ
13 October 2007
ธรรมาภิบาลในการบริหารจัดการ องค์การภาครัฐ
ปรัชญาเศรษฐกิจพอเพียง Sufficiency Economy
บทที่ 2 ซอฟต์แวร์ รายวิชา ทท101 เทคโนโลยีสารสนเทศและนวัตกรรมการสื่อสารทางการท่องเที่ยว อ.อภิพงศ์ ปิงยศ มหาวิทยาลัยแม่โจ้-แพร่ เฉลิมพระเกียรติ
Software Engineering ( )
ระบบเทคโนโลยีสารสนเทศ (Information Technology)
แนะนำรายวิชา การออกแบบระบบการจัดการเรียนรู้บนเครือข่าย
เทคโนโลยีสารสนเทศ เพื่อการศึกษา โดย อาจารย์สุวิสาข์ เหล่าเกิด
กฎหมายอาญา(Crime Law)
การประกวดสิ่งประดิษฐ์ ของคนรุ่นใหม่
ความสำคัญและประเภทของโครงงานคอมพิวเตอร์
สำนักบริการคอมพิวเตอร์ มหาวิทยาลัยเกษตรศาสตร์
หมู่บ้านอาสาพัฒนาและป้องกันตนเอง
วิศวกรรมซอฟต์แวร์ (Software Engineering)
การปรับยุทธศาสตร์ (Reprofiling) มหาวิทยาลัยกลุ่มใหม่
บทที่ 6 การบริหารและการวางแผนการผลิต
สังคมวิทยาอุตสาหกรรม
แนวคิด การจัดทำยุทธศาสตร์เศรษฐกิจภาค โดย ว่าที่ ร.อ.จิตร์ ศิรธรานนท์
ใบความรู้ที่ 2 เรื่อง ความหมายและประเภทของโครงงานคอมพิวเตอร์
การวิเคราะห์ข้อมูล เขตเศรษฐกิจพิเศษ เพื่อทบทวนยุทธศาสตร์จังหวัด
วิชา วิศวกรรมซอฟต์แวร์ (Software Engineering)
Activity-Based-Cost Management Systems.
ผู้สอนวิชากฎหมายธุรกิจและภาษีอากร(bus226)
รายงานความก้าวหน้า คณะทำงานธรรมาภิบาล (CGO) เขตสุขภาพที่ ธันวาคม 2561
ปัญหา อุปสรรคและแนวโน้มการพัฒนาทรัพยากรมนุษย์ เชิงกลยุทธ์
การตลาดในเศรษฐกิจยุคใหม่ (Marketing in the New Economy)
นายเกรียงไกร แก้วมีศรี ผู้อำนวยการโรงเรียนเมืองสุราษฎร์ธานี
ประเด็นการขับเคลื่อนองค์การไปสู่ระบบราชการ 4.0
เศรษฐกิจพอเพียง Sufficiency Economy.
อ.พรพนา ปัญญาสุข วิทยาลัยเทคโนโลยีพณิชยการเชียงใหม่ ผู้วิจัย
เขตพัฒนาเศรษฐกิจพิเศษหนองคาย
สิ่งสนับสนุน (ห้องต่าง ๆ เครื่องมืออุปกรณ์ สิ่งอำนวยความสะดวก)
กลยุทธ์การทดสอบซอฟต์แวร์ วิศวกรรมซอฟต์แวร์ (Software Engineering)
ธรรมาภิบาลในการบริหารจัดการ องค์การภาครัฐ
Introduction to Structured System Analysis and Design
CPU and I/O bursts.
ใบสำเนางานนำเสนอ:

บทที่ 1 บทนำสู่วิศวกรรมซอฟต์แวร์ บทที่ 1 บทนำสู่วิศวกรรมซอฟต์แวร์ เคยสังเกตบ้างไหมว่า การประดิษฐ์คิดค้นด้านเทคโนโลยีเรื่องหนึ่ง บางครั้งส่งผลที่ไม่คาดคิดต่อเรื่องอื่นที่อาจไม่เกี่ยวข้องกับเรื่องที่คิดค้นขึ้นนั้น เช่น การทำธุรกิจ ชีวิตความเป็นอยู่ของผู้คนหรือแม้แต่วัฒนธรรมโดยรวม ปรากฏการณ์ประเภทนี้เรียกว่าเป็น “กฎแห่งผลที่ไม่คาดหวัง(law of unintended consequences)” ทุกวันนี้ซอฟต์แวร์คอมพิวเตอร์เป็นเทคโนโลยีที่มีบทบาทสำคัญมาก ที่สุดในระดับโลกและเป็นตัวอย่างสำคัญของกฎแห่งผลที่ไม่ได้คาดหวัง ดังกล่าวข้างตันในราวทศวรรษ 1950 คงไม่มีใครคาดคิดว่าซอฟต์แวร์จะกลายเป็นเทคโนโลยีที่ขาดไม่ได้ทางธุรกิจ งานทางด้านวิทยาศาสตร์และวิศวกรรมศาสตร์ รวมถึงซอฟต์แวร์จะสามารถ ก่อให้เกิดเทคโนโลยีใหม่อื่นๆเช่น พันธุวิศวกรรม หรือเป็นส่วนขยาย เทคโนโลยีที่มีอยู่แล้วเช่น โทรคมนาคม หรือเป็นการผลัดใบของเทคโนโลยี เก่าเช่น อุตสาหกรรม การพิมพ์ นอกจากนี้ซอฟต์แวร์ยังเป็นแรงผลักดัน ให้เกิดการปรับโฉมหน้าของคอมพิวเตอร์จากที่มีขนาดใหญ่เทอะทะ มาสู่ยุค คอมพิวเตอร์ส่วนบุคคลแล้วต่อมาอีกไม่นานนักเราก็ได้รู้จักกับอินเตอร์เน็ต ระบบเครือข่ายใหญ่ที่มีซอฟต์แวร์เป็นตัวขับเคลื่อนซึ่งที่กำเนิดขึ้นมาเพื่อ นำไปสู่การเปลี่ยนแปลงครั้งใหญ่ในทุกๆเวดวงตั้งแต่ระบบสืบค้นข้อมูล ห้องสมุด การซื้อข้าวของไปจนถึงการติดต่อหาเพื่อนฝูง

ซอฟต์แวร์ได้กลายเป็นสิ่งที่แฝงอยู่ในทุกระบบเช่น การขนส่ง การทการ อุตสาหกรรม ความบันเทิง อุปกรณ์สำนักงานอื่นๆอีกมากมาย และหากเราเชื่อในกฎแห่งผลที่ไม่ได้คาดหวังก็จะมีผลกระทบอื่นๆที่ยังไมได้คาดการณ์ได้ในเวลานี้อีกด้วย ในปัจจุบันเพื่อให้เหมาะสมกับเทคโนโลยีและความต้องการที่เปลี่ยนแปลงไปตามกาลเวลา โปรแกรมคอมพิวเตอร์ต้องถูกปรับปรุงให้ทันสมัยอยู่เสมอ โดยกิจกรรมที่เกี่ยวข้องกับการดูแลรักษาโปรแกรมคอมพิวเตอร์ต้องทันสมัยอยู่เสมอนี้ เป็นกิจกรรมที่ต้องใช้คนและทรัพยากรอื่นๆมากกว่าตอนที่สร้างซอฟต์แวร์ใหม่เสียอีก แนวแความคิดและการค้นพบเทคโนโลยีเป็นแนวขับเคลื่อนเติบโตทางเศรษฐกิจ จาก The Wall Street journal

ในขณะที่ความสำคัญของซอฟต์แวร์มีเพิ่มมากขั้น ประชาคม ซอฟต์แวร์ได้พยายามที่จะพัฒนาเทคโนโลยีที่จะช่วยการสร้างและดุแล โปรแกรมคอมพิวเตอร์นั้นง่ายขึ้นเร็วขึ้นและเสียค่าใช้จ่ายน้อยลง โดยบาง เทคโนโลยีเน้นไปที่แอพพลิเคชั่นโดเมนเฉพาะเช่น การออกแบบและการ สร้างเว็บไซต์ บางเทคโนโลยีเน้นไปด้านเทคนิคเช่น ระบบเชิงวัตถุ หรือ การโปรแกรมเชิงแง่มุม และบางเทคโนโลยีสามารถนำไปใช้ได้อย่าง กว้างขวางเช่น ระบบปฏิบัติการ Linuxอย่างไรก็ตามยังไม่มีเทคโนโลยีด้าน ซอฟต์แวร์ใดที่ทำได้ทุกสิ่งทุกอย่างและโอกาสที่เกิดขึ้นดังกล่าวก็มีเพียงน้อย นิด ในขณะเดียวกันผู้คนส่วนใหญ่ก็ได้ฝากชีวิตหน้าที่การงาน ความ ปลอดภัย และทุกๆสิ่งไว้กับซอฟต์แวร์คอมพิวเตอร์ไปเรียบร้อยแล้ว ดังนั้น เราได้แต่หวังซอฟต์แวร์เหล่านั้นควรจะทำงานได้อย่างถูกต้อง หนังสือเล่มนี้จะนำเสนอให้กรอบแนวคิดกับผู้พัฒนาซอฟต์แวร์ คอมพิวเตอร์ ซึ่งครอบคลุมทุกกระบวนการ(Process)วิธีการ(Method)และ เครื่องมือ(Tool) ต่างๆที่จะนำมาใช้ในการพัฒนาซอฟต์แวร์ ศาสตร์ที่ เกี่ยวข้องกับเรื่องดังกล่าวนี้เรียกว่า วิศวกรรมซอฟต์แวร์ ในสังคมสมัยใหม่ บทบาทของวิศวกรรมคือจัดหาระบบและผลิตภัณฑ์ซึ่งช่วยยกระดับความเป็นอยู่ทางวัตถุของมนุษย์ อันจะนำไปสู่ชีวิตที่สะดวกสบายขึ้นมีความปลอดภัยและมั่นคงมากขึ้น

1.1บทบาทของซอฟแวร์ที่ไม่หยุดนิ่ง ปัจจุบันนี้ซอฟต์แวร์มีสองบทบาท ในด้านหนึ่งตัวมันเองคือตัว ผลิตภัณฑ์ในขณะที่อีกด้านหนึ่ง ซอฟต์แวร์เป็นเครื่องมือที่ก่อให้เกิด ผลิตภัณฑ์ ในฐานะผลิตภัณฑ์ ซอฟต์แวร์เป็นตัวดึงเอาความสามารถ ทางการประมวลผลของฮาร์ดแวร์คอมพิวเตอร์ออกมา ไม่ว่าจะเป็นซอฟต์แวร์ ที่อยู่ในโทรศัพท์เคลื่อนที่หรือในคอมพิวเตอร์เมนเฟรม มันจะเป็นเหมือนกับ ตัวแปลงข้อมูลข่าวสาร (Imformation Trnsformen)โดนมันอาจจะผลิต จัดการ จัดหา ปรับเปลี่ยน แสดงผล หรือส่งต่อข้อมูล ซึ่งอาจะเป็นเพียง ข้อมูลที่เล็กมากเช่น หนึ่งบิท หรืออาจะเป็นข้อมูลที่ซับซ้อนเช่น การ นำเสนอแบบมัลติมีเดีย ส่วนอีกในบทบาทหนึ่งของซอฟต์แวร์ซึ่งเป็นเครื่องมือ ในการก่อให้เกิดผลิตภัณฑ์ ซอฟต์แวร์จะทำงานเหมือนกับเป็นตัวควบคุม คอมพิวเตอร์เช่น ระบบปฏิบัติการหรือเป็นตัวสื่อสารข้อมูลทางสารสนเทศเช่น เครือข่ายหรือเป็นส่วนที่ช่วยในการสร้างและควบคุมโปรแกรมอื่นๆเช่น ซอฟต์แวร์เครื่องมือและสภาพแวดล้อม

ซอฟต์แวร์เป็นตัวช่วยก่อให้เกิดผลิตภัณฑ์ที่มีคุณค่ามากที่สุดในยุคนี้ นั้นคือข้อมูลสารสนเทศ โดยช่วยแปลงข้อมูลส่วนบุคคลเช่น ข้อมูล ทางด้านการเงินให้ข้อมูลที่เป็นประโยชน์มากขึ้น ช่วยจัดการสารสนเทศ ทางธุรกิจเพื่อประโยชน์ด้านการแข่งขัน อีกทั้งยังเป็นเหมือนประตูที่นำไปสู่ เครือข่ายสารสนเทศทั่วโลก โดยผ่านระบบอินเตอร์เน็ต รวมถึงช่วยให้ ได้มาซึ่งข้อมูลสารสนเทศทุกรูปแบบ บทบาทสำคัญซอฟต์แวร์คอมพิวเตอร์ ได้ผ่านเวลาแห่งการเปลี่ยนแปลงที่สำคัญๆมาแล้วนานกว่า 50 ปี ประสิทธิภาพของฮาร์ดแวร์ที่ดีขึ้นอย่างมากทั้งในทางด้านสถาปัตยกรรม เครื่องขนาดความจำ และพื้นที่เก็บข้อมูลที่หลายหลาย ส่งผลให้ระบบงาน ที่มีคอมพิวเตอร์เข้ามาเกี่ยวข้องซับซ้อนมากขึ้น ระบบที่ซับซ้อนแต่ทันสมัย อาจช่วยให้เกิดผลลัพธ์ที่ยอดเยี่ยมถ้าหากเราสร้างให้ระบบนั้นเกิดเป็น ผลสำเร็จได้ ในขณะเดียวกันก็อาจจะทำให้ผู้ที่ต้องสร้างระบบที่ซับซ้อนนั้น เผชิญกับปัญหามากมายเช่นกัน

ปัจจุบันนี้ อุตสาหกรรมซอฟต์แวร์ขนาดใหญ่ได้กลายเป็นปัจจัยสำคัญ ของทางธุรกิจยุคของโปรแกรมเมอร์คนเดียวได้ถูกแทนที่โดยผู้เชี่ยวชาญด้าน ซอฟต์แวร์จำนวนมาก โดยแต่ละทีมก็จะมุ่งเน้นไปเพียงเทคโนโลยีเดียว โดยมีเป้าหมายร่วมกันอยู่มี่การสร้างหนึ่งแอพพลิเคชั่น อย่างไรก็ตามสิ่งที่ เป็นคำถามในยุคโปรแกรมเมอร์คนเดียวนั้นยังคงอยู่ซึ้งได้แก่ ทำไมการสร้างซอฟต์แวร์จึงใช้เวลานาน ทำไมต้นทุนการพัฒนาซอฟต์แวร์จึงสูง ทำไมเราไม่อาจหาข้อผิดพลาดทั้งหมดเจอ ก่อนส่งมอบซอฟต์แวร์ให้ลุกค้า ทำไมเราจึงใช้เวลาและพยายามอย่างมากในการบำรุงรักษาซอฟต์แวร์ที่ใช้ งานอยู่ ทำไมการประเมินความก้าวหน้าในการสร้างและบำรุงการรักษาซอฟต์แวร์จึง เป็นเรื่องยาก คำถามเหล่านี้เป็นตัวแสดงถึงความกังวลเกี่ยวกับซอฟต์แวร์และแนว ทางการพัฒนาซอฟต์แวร์ อันเป็นที่มาของการศึกษาเรื่องวิศวกรรม ซอฟต์แวร์

1.2 ซอฟแวร์ (Software) นิยามซอฟต์แวร์ของหนังสือส่วนใหญ่จะกล่าวในทำนองที่ว่า (1)ชุดคำสั่ง(โปรแกรมคอมพิวเตอร์) (2)โครงสร้างข้อมูลซึ่งทำให้โปรแกรม จัดการสารสนเทศได้และ (3)ชุดเอกสารที่บรรยายการปฏิบัติงานและการใช้ โปรแกรม เนื่องจากซอฟต์แวร์ไม่ใช่สิ่งที่จับต้องได้ซึ่งเป็นลักษณะตรงกัน ข้ามกับฮาร์ดแวร์อันได้แก่ ซอฟต์แวร์ถูกพัฒนาหรือจัดการให้เกิดขึ้นไม่ได้เกิดจากการผลิตในโรงงาน เหมือนสินค้าทั่วไปแม้ว่าการพัฒนาซอฟต์แวร์จะมีส่วนคล้ายกับการผลิต ฮาร์ดแวร์อยู่บ้าง แต่ทั้งสองกิจกรรมมีความแตกต่างกันอยู่เช่น เพื่อให้ได้ คุณภาพที่ดีทั้งสองกิจกรรมต่างต้องมีการออกแบบที่ดี แต่ปัญหาบางอย่างที่ อาจเกิดในสายการผลิตฮาร์ดแวร์ นอกจากนี้แม้ว่าสองกิจกรรมต้องเกี่ยวข้อง กับคน แต่ความสัมพันธ์ระหว่างคนและงานที่ต้องทำต่างกันโดยสิ้นเชิง ดังนั้นเราไม่อาจจัดการงานด้านซอฟต์แวร์ในแบบเดียวกับผลิตฮาร์ดแวร์ได้ ซอฟต์แวร์มาสึกหรอ ซึ่งในรูป 1.1 แสดงถึงอัตราความล้มเหลว (Failure Rate) ที่ขึ้นอยู่กับเวลาสำหรับฮาร์ดแวร์ความสัมพันธ์แบบกราฟอ่าง น้ำ (Bathtub Curve)นี้อธิบายได้ว่าในช่วงต้นของวงจรชีวิต ฮาร์ดแวร์จะมี อัตราการล้มเหลวสูง ทั้งนี้สาเหตุมาจากการบกพร่องของการออกแบบหรือ หารผลิตต่อข้อบกพร่องเหล้านี้ได้รับการแก้ไขจึงทำให้อัตราการล้มเหลว น้อยลงแล้วเข้าสู่สถานะคงตัว(Steady State)

รูปที่ 1.1 กราฟแสดงอัตราการล้มเหลวของฮาร์ตแวร์ ในช่วยท้ายของชีวิตฮาร์ดแวร์ อัตราความล้มเหลวนี้เพิ่มขึ้นอีกเนื่องจากฮาร์ดแวร์ที่ใช้เป็นเวลานานนี้อาจมีฝุ่นไปสะสม ถูกกระทบกระเทือนหรือถูกใช้งานอย่างผิดๆกล่าวง่ายๆฮาร์ดแวร์ก็คือ ฮาร์ดแวร์เริ่มมีการสึกหรอ (Wear Out) รูปที่ 1.1 กราฟแสดงอัตราการล้มเหลวของฮาร์ตแวร์

ในทางตรงกันข้าม ซอฟแวร์ไม่ได้อยู่กับเหตุปัจจัยทางกายภาพเหมือนกับฮาร์ดแวร์ดังนั้น ในทางทฤษฏีกราฟแสดงอัตราการล้มเหลวของซอฟต์แวร์ควรจะเป็นในแบบอุดมคติ (Idealized Curve) ดังแสดงในรูป 1.2

ความแตกต่างอีกอย่างหนึ่งของฮาร์ดแวร์และซอฟแวร์ในเรื่องการสึก หรอนี้ก็คือ เมื่อฮาร์ดแวร์สึกหรอเราสามารถเปลี่ยนตัวใหม่ได้แต่เราไม่มี ซอฟต์แวร์อะไหล่ จึงทำให้ยากต่อการบำรุงรักษาความล้มเหลวของ ซอฟต์แวร์แต่ละครั้งแสดงให้เห็นข้อบกพร่องในการออกแบบ ต้นเหตุสำคัญ ที่ทำให้เกิดความล้อมเหลวทางด้านซอฟต์แวร์ก็คือการออกแบบและการ เปลี่ยนแปลงการออกแบบนั้น ไปสู่รหัสที่เครื่องคอมพิวเตอร์สามารถเข้าใจได้ นั้นเอง 3. แม้ว่าอุตสาหกรรมซอฟต์แวร์กำลังมุ่งไปสู่การสร้างองค์ประกอบย่อย (Component-based Custom build) แต่ซอฟต์แวร์ส่าวนใหญ่ยังคงถูก สร้างตามแบบที่ลุกค้าแต่ละคนต้องการ(Custom Build) ลองพิจารณารูปแบบ ที่ฮาร์ดแวร์สำหรับควบคุมผลิตภัณฑ์ทางด้านคอมพิวเตอร์ได้รับการออกแบบ และสร้างขึ้น วิศวกรผู้ออกแบบเริ่มร่างแบบวงจรดิจิตอล จากนั้นจึงวิเคราะห์ เบื้องต้นเพื่อให้แน่ใจว่าจะทำงานได้อย่างถูกต้อง จากนั้นเข้าจึงเดินไปชั้นที่ เก็บแค็ตตาล็อกของส่วนประกอบดิจิตอลที่ต้องการ แต่ละแผงวงจรรวมมีรหัส ชิ้นส่วนบ่งบอกอยู่ มีอินเตอร์เฟสมาตรฐานและมีคู่มือบอกการต่อเชื่อมกับ ชิ้นส่วนอื่นหลังจากเลือกชิ้นส่วนที่มาประกอบกันเสร็จแล้วก็สามารถประกอบ ตามคำสั่งซื้อได้ทันที

1.3 ลักษณะที่กำลังเปลี่ยนไปของซอฟต์แวร์ ในปัจจุบันเราสามารถแบ่งลักษณะของซอฟแวร์ออกเป็น 7 แบบ ดังนี้ ซอฟต์แวร์ระบบ(System Software) ซอฟแวร์ระบบเป็นชุดโปรแกรมที่ เขียนขึ้นเพื่อบริการโปรอแกรมอื่นๆซอฟต์แวร์ระบบบางประเภทเช่น ตัว แปลภาษา ตัวแก้ไขข้อความและตัวช่วยจัดการไฟล์ มีโครงสร้าง สารสนเทศที่ซับซ้อนแต่กำหนดได้ ซอฟต์แวร์ประยุกต์ (Application Software) ซอฟต์แวร์ประยุกต์ ประกอบไปด้วยโปรแกรมเฉพาะทางที่ใช้ปัญหาเฉพาะกิจ นอกจาก ประมวลผลข้อมูลซึ่งเป็นงานหลังของซอฟต์แวร์ประยุกต์แล้วยังใช้ไว้ควบคุม หน้าที่ทางธุรกิจในเวลาตามจริงเช่น การประมวล ณ จุดขาย การ ควบคุมกระบวนการผลิตตามเวลาจริง ซอฟต์แวร์เชิงวิศวกรรม/วิทยาศาสตร์ (Engineering/Scientific Software)ซอฟต์แวร์ในกลุ่มนี้มักเป็นขั้นตอนวิธีที่ช่วยในการคำนวณ มีการ ใช้งานกว้าตั้งแต่งานทางด้านดาราศาสตร์ ชีววิทยา ฟิสิกส์ และอื่นๆ ปัจจุบันยังมีซอฟต์แวร์ที่ช่วยในการออกแบบในการจำลองระบบ และในงาน อินเตอร์เน็ตแอคทีฟอื่นๆ

ซอฟแวร์ฝังตัว(Embedded software)เป็นซอฟต์แวร์ที่ฝั่งอยู่ในตัวผลิตภัณฑ์หรือตัวระบบ มีไว้เพื่อให้สามารถควบคุมลักษณะและหน้าที่ต่างๆเพื่อผู้ใช้งานสุดท้าย และเพื่อตัวระบบเองซอฟต์แวร์ฝังตัวอาจทำงานเฉพาะอย่างเช่น การควบคุมปุ่มต่างๆบนเครื่องไมโครเวฟ ซอฟต์แวร์การผลิต(Product-time Software)เป็นซอฟต์แวร์ที่มีความสามารถเฉพาะเพื่อให้ใช้ได้กับลูกค้าที่แตกต่างกันซอฟต์แวร์ตัวนี้เน้นไปที่ตลาดเฉพาะ เว็บแอพพลิเคชั้น(Web-Applications)หรือเรียกสั้นๆว่าเว็ปแอพส์(Web Apps)ครอบคลุมงานประยุกต์เกือบทุกด้านในรูปแบบที่ง่ายที่สุด เว็บแอพส์อาจเป็นไฟล์ข้อมูลหลายมิติที่เชื่อมกันหลายข้อความซึ่งนำเสนอสารสนเทศโดยใช้ข้อความและกราฟิกที่จำกัด ซอฟต์แวร์ปัญญาดิษฐ์(Artificial Intelligence Software)ซอฟต์แวร์ประเภทนี้ใช้ประโยชน์จากอัลกอลิทึมที่ไม่ใช่เชิงการค้า เพื่อแก้ปัญหาที่ยากและซับซ้อนกว่าการวิเคราะห์คำนวณแบบตรงๆงานประยุกต์ในซอฟต์แวร์หมวดนี้รวมถึงวิทยาการหุ่นยนต์ ระบบผู้เชี่ยวชาญ การรู้จักแบบโครงข่ายประสาทเทียม การพิสูจน์ทฤษฏี และการเล่นเกมส์

อย่างไรก็ตาม ความท้าทายในเรื่องใหม่ๆก็ได้บังเกิดขึ้นอยู่สม่ำเสมอเช่น การประมวลผลได้ทุกที่(Ubiquitous Computing) จากการพัฒนาไป อย่างรวดเร็วของเครือข่ายไร้สายนำมาสู่การคอมพิวเตอร์แบบกระจายอย่าง แท้จริงนักวิศวกรรมซอฟต์แวร์ต้องสร้างซอฟต์แวร์ที่ใช้งานได้บนเครื่องมือ เล็กๆ โอเพนซอร์ส(Open Sourcing)ในปัจจุบันนี้มีการเปิดเผยรหัสต้นฉบับ สำหรับซอฟต์แวร์ระบบ ทำให้ผู้สามารถปรับเปลี่ยนระบบให้ตรงกับความ ต้องการของงานตนเอง เศรษฐกิจยุคใหม่(The new Economy)ธุรกิจดอทคอมซึ่งควบคุมตลาด การเงินในช่วงปลายทศววรษ 1990 แล้วตามมาด้วยความพินาศในช่วง ต้นทศวรรษ 2000 ทำให้ผู้คนส่วนใหญ่เชื่อว่าเศรษฐกิจยุคใหม่ได้ตายไป แล้ว แต่อันที่จริงมันเป็นแต่การเริ่มต้นของยุคใหม่เท่านั้นและมันจะค่อย วิวัฒนาการอย่างช้าๆแล้วปรับให้เข้าไปการสื่อสารและการกระจายในระดับ กว้าง ความท้าทายสำหรับนักวิศวกรรมซอฟต์แวร์คือ จะต้องหาวิธีที่จะ สร้างแอพพลิเคชั่นที่จะอำนวยความสะดวกในการติดต่อสื่อสารและการ กระจายสินค้าระดับมวลชนใช้แนวคิดใหม่ที่พึ่งจะเป็นรูปเป็นร่างขึ้นมา ความท้าทายใหม่ๆที่กล่าวมานี้ สอดคล้องกับกฎแห่งผลที่ไม่ได้ คาดหวังเป้นอย่างดีเรายังคาดถึงผลกระทบอย่างไม่ได้วันนี้ หากนัก วิศวกรรมซอฟต์แวร์สามารถที่จะเตรียมพร้อมได้โดยการร่วมกระบวนการซึ่ง ว่องไวและปรับเปลี่ยนให้เข้ากับเทคโนโลยีเปลี่ยนแปลงไปในอนาคต ข้างหน้า

1.4 ซอฟต์แวร์ลายคราม (Legacy Software) โปรแกรมคอมพิวเตอร์ทั้ง 7 แบบที่ได้กล่าวมาในหัวข้อที่แล้วนั้น บางโปรแกรมถูกสร้างขึ้นด้วยเทคนิคอันทันสมัยที่เพิ่งเกิดขึ้นบางโปรแกรมที่เก่าแล้วและโปรแกรมก็เก่ามากขึ้นไปอีกโปรแกรมที่เก่าๆเหล่านี้อาจเรียกได้ว่า ซอฟต์แวร์ลายคราม (Legacy Software)ดังนั้นซอฟต์แวร์ลายครามมีลักษณะพิเศษคือ มีอายุอันยาวนานแล้วมีความสำคัญอย่างอุกฤษฏ์ต่อธุรกิจ 1.4.1. คุณภาพซอฟต์แวร์ลายคราม โดยส่วนใหญ่ซอฟต์แวร์ลายครามจะมีคุณภาพต่ำ เมื่อเปรียบเทียบกับนักวิศวกรรมซอฟต์แวร์ในปัจจุบันมีการออกแบบที่ขายไม่ได้การเขียนโปรแกรมที่ยุ่งยากไม่มีคู่มือการใช้หรือมีแต่ไม่ได้เรื่องแต่เมื่อเวลาผ่านไประบบซอฟต์แวร์ลายครามนี้ต้องการการปรับเปลี่ยนโดยมีสาเหตุเป็นไปได้ต่างๆดังนี้ ซอฟต์แวร์ต้องถูกปรับให้เข้ากับเทคโนโลยีใหม่หรือสภาพแวดล้อมใหม่

ซอฟต์แวร์ต้องได้รับการเปลี่ยนแปลงคุณสมบัติกับความต้องการด้านธุรกิจ ใหม่ ซอฟต์แวร์ต้องได้รับการขายสอดคล้องกับระบบและฐานข้อมูลที่ทันสมัยขึ้น ซอฟต์แวร์ต้องได้รับการออกแบบสถาปัตยกรรมใหม่เพื่อให้ต่อชีวิตในสภาพ เครือข่ายที่เปลี่ยนไปได้ เมื่อวิวัฒนาการต่างๆเหล่านี้ค่อยเกิดขึ้นทำให้ระบบซอฟต์แวร์ลายครามต้อง ได้รับการรีเอ็จิเนียร์ในท้ายที่สุด เป้า ซอฟต์แวร์หมายของวิศวกรรม ซอฟต์แวร์สมัยใหม่อย่างหนึ่งก็คือ เพื่อคิดระเบียนวิธีซึ่งพบได้ในการ วิวัฒนาการ นั้นคือความคิดที่ว่าซอฟต์แวร์เปลี่ยนแปลงอยู่ทุกขณะระบบ ซอฟต์แวร์ใหม่ได้รับการสร้างขึ้นจากระบบเก่าๆและระบบทั้งหมดต้อง สอดคล้องและทำงานร่วมกันอย่างมีประสิทธิภาพ 1.4.2. วิวัฒนาการของซอฟต์แวร์(Software Evolution) ซอฟต์แวร์มีการเปลี่ยนแปลงอยู่เสมอการเปลี่ยนแปลงเกิดขึ้นเมื่อมีสิ่ง ผิดพลาดที่ต้องการแก้ไขหรือ เกิดขึ้นเมื่อต้องการปรับใช้ซอฟต์แวร์เดิมใน สภาพแวดล้อมใหม่หรือเมื่อลูกค้าต้องการให้มีหน้าที่ใหม่ๆ ในช่วง30ปีที่ ผ่านมา Manny Lehman และคณะได้ทำการวิเคราะห์ซอฟต์แวร์เชิง พาณิชย์เพื่อที่จะสร้าง ทฤษฏีการวิวัฒนาการซอฟต์แวร์ (Theory for software Evolution)และได้พบกฎต่างๆที่น่าสนใจดังกล่าวถึงพอสังเขปคือ

กฎแห่งการเปลี่ยนแปลงอย่างต่อเนื่อง(Law of Continuing: 1974)ระบบ ซอฟต์แวร์แบบ E[E- tape System ระบบซอฟต์แวร์แบบEเป็น ซอฟต์แวร์ที่ได้รับการสร้างขึ้นในสภาพการประมวลผลตามสถานการณ์จริง กฎแห่งความซับซ้อนที่เพิ่มขึ้น(Law of Increasing Complexity: 1974)ใน ระหว่างมี่ระบบแบบeได้รับการปรับเปลี่ยนไปนั้น ความซับซ้อนของ ซอฟต์แวร์ก็เพิ่มมากขึ้นตาม จึงต้องมีการดูแลรักษาให้ความซับซ้อนอยู่ใน ระดับที่ไม่สูงมาก กฎแห่งการว่างระเบียนตัวเอง (Law of Self-regulation: 1974) กระบวนการวิวัฒนาการของระบบeนี้มีการวางแผนวางระเบียบได้ด้วย ตนเอง โดยการกระจายของตัววัดผลิตภัณฑ์ และกระบวนการมีค่าเข้า ใกล้การแจกแจงแบบปกติ กฎการอนุรักษ์สภาพเสถียรเชิงการจัดการระเบียบ(Law of Conservation Organizational Stability: 1980)อัตราการทำงานองค์รวมโดยเฉลี่ยนใน ระบบeค่อนข้างคงที่ตลอดอายุงานของผลิตภัณฑ์ กฎการคงไว้ซึ่งความคุ้นเคย(Law of Conservation of Familiarity: 1980) ในขณะที่ระบบeวิวัฒน์ไปนั้นทุกคนที่เกี่ยวข้องตั้งแต่ผู้พัฒนาฝ่ายขายและ ผู้ใช้ต้องรักษาความชำนาญการเกี่ยวกับซอฟต์แวร์นั้นๆในส่วนที่ตัวเอง รับผิดชอบอยู่การเปลี่ยนแปลงเร็วเกินไปของซอฟแวร์อาจทำให้ ความคุ้นเคยตรงส่วนนี้หายไปดังนั้นการเติบโตโดยเฉลี่ยควรเป็นไปอย่าง พอดี

กฎแห่งการเจริญเติบโตไปอย่างต่อเนื่อง(Law of Continuing Growth: 1980)หน้าที่และระบบแบบeต้องเพิ่มขึ้นอย่างต่อเนื่อง เพ่อรักษาความพึง พอใจของผู้ใช้งานตลอดอายุการใช้งาน กฎแห่งการลดลงซึ่งคุณภาพ(Law of Declining Quality: 1996)ระบบแบบ eมีคุณภาพลดลงนอกจากมันได้รับการดูแลอย่างเข้มงวดเพื่อให้ปรับตัวได้ กับการเปลี่ยนแปลงภายใต้สภาพแวดล้อมที่ทำงานอยู่ ระบบย้อนกลับ(Freedback System Law)กระบวนการวิวัฒนาการของ ระบบeประกอบกันขึ้นเป็นระบบย้อนกลับที่มีหลายระดับ หลายรูป และ หลายตัวเอเจนต์ ดังนั้นจึงต้องได้รับการปฏิบัติในรูปแบบของระบบ ดังกล่าวเพื่อให้ได้การปรับปรุงที่ดีขึ้นอย่างเห็นได้ชัดภายใต้มูลฐานที่ สมเหตุสมผล

1.5 ความเชี่ยวชาญกับซอฟต์แวร์(Software Myths) ความเชี่ยวเกี่ยวกับซอฟแวร์และกระบวนการที่ใช้สร้างในซอฟต์แวร์ ขึ้นมานี้อาจย้อนกลับไปถึงจั้งแต่ยุคต้นๆของคอมพิวเตอร์มันมีองค์ประกอบ หลายอย่างที่ทำให้ดูน่าเชื่อถือโดยส่วนใหญ่ความเชื่อเหล่านี้เกิดจากผู้ที่งาน จริง ซึ่งปัจจุบันหลายๆความเชื่อได้รับการพิสูจน์แล้วว่าเป็นความเชื่อที่ผิด ความเชื่อของผู้บริหาร(Management Myths)ผู้บริหารงานด้านซอฟต์แวร์ หรือผู้บริหารสาขาอื่นๆมักได้รับความกดดันทางด้านงบประมาณตารางเวลา ที่จำกัด ผู้บริหารที่มักจะยึดในความเชื่อเก่าๆถึงแม้ว่าจะเป็นที่ยอมรับมาแล้ว ว่าไม่ถูกต้อง ทั้งนี้เพื่อบรรเทาความรู้สึกที่กดดันของตัวเองนั้นเอง ความเชื่อ เรามีคู่มือที่บอกถึงมาตรฐานและขั้นตอนการปฏิบัติงานในการ พัฒนาซอฟต์แวร์อยู่แล้วก็เพียงแค่ให้ผู้ปฏิบัติงานรับทราบในทุกเรื่องที่เขา ควรรู้ไม่ใช่เช่นนั้นหรือ? ความจริง คู่มือมาตรฐานอาจมีอยู่จริงแต่มันใช้ได้จริงๆหรือ? ผู้ที่ เกี่ยวข้องทราบหรือไม่ว่ามีคู่มือเช่นนั้นอยู่? มันสะท้อนถึงแนวทางปฏิบัติ ทางด้านวิศวกรรมซอฟต์แวร์สมัยใหม่ได้หรือไม่? มันสามารถถูก ปรับเปลี่ยนได้หรือไม่? มันมุ่งไปที่การทำงานให้เสร็จในเวลาอันสั้นในขณะที่ ยังคงในเรื่องคุณภาพไว้ได้ด้วยหรือไม่? คำตอบต่อคำถามทั้งหมดนี้ คือ ไม่

ความเชื่อของลูกค้า(Customer Myths)ลูกค้าในที่นี้อาจหมายถึงบุคคล ภายในองค์กรเดียวกันเช่น ฝ่ายเทคนิค หรือฝ่ายการตลาด ที่มีความ ต้องการซอฟต์แวร์ประเภทต่างๆ ความเชื่อที่ผิดๆของลูกค้าที่เกี่ยวกับงาน ด้านซอฟต์แวร์นี้มาจากการที่ผู้รับผิดชอบโครงการไม่พยายามแก้ไขความ เชื่อที่ผิดเหล่านั้น และสุดท้ายก็นำมาสู่ความไม่พึงพอใจในผู้พัฒนา ซอฟต์แวร์ ความเชื่อ การบอกความต้องการเพียงคร่าวๆเพียงพอต่อการสั่งให้เริ่มเขียน โปรแกรม เราสามารถบอกรายละเอียดต่างๆได้ภายหลัง ความจริง แม้ว่าเป็นเรื่องยากที่จะวิเคราะห์ความต้องการอย่างละเอียด หากแต่ความต้องการไม่ชัดเจนนี้อาจนำไปสู่หายนะที่ยากกว่าจะแก้ไขได้ การได้มาซึ่งความต้องการที่ชัดเจนไม่คลุมเครือนี้มาจากการสื่อสารอย่าง ต่อเนื่อง ระหว่างลูกค้าและผู้พัฒนาซอฟต์แวร์ ความเชื่อของผู้ประกอบการ(Practitioner’s Myths)หมายถึงความเชื่อที่ ผิดๆของผู้ประกอบการที่ดำเนินมาเป็นเวลา 50 ปีแล้ว การเขียน โปรแกรมในสมัยก่อนถูกมองว่าเป็นงานศิลป์ ทัศนะคติแบบเก่านี้ยากที่จะ ล้มเลิก

ความเชื่อ ทันทีที่เราเขียนโปรแกรมเสร็จ และมันทำงานได้ งานเราก็ เสร็จ ความจริง มีคนพูดไว้ว่า ยิ่งเริ่มการเขียนโปรแกรมเร็วเท่าใด ก็ยิ่งทำให้ เสร็จช้าขึ้นเท่านั้น ข้อมูลจากอุตสาหกรรมจริงบ่งบอกว่า 60-80% ของ ความพยายามที่ใช้ไปกับซอฟต์แวร์ถูกใช้หลังจากที่ได้ส่งมอบซอฟต์แวร์ ให้แก่ลูกค้าไปแล้ว ความเชี่ยวชาญทางด้านซอฟต์แวร์จำนวนมากตระหนังถึงความเข้าใจผิด ต่างๆเหล้านี้เป็นเรื่องน้าเศร้าที่ความเคยชินทำให้การบริหารโครงการ ซอฟต์แวร์แบบผิดๆ นี้ยังคงอยู่แม้ว่าความเป็นจริงนี้ก็เป็นด่านแรกของการ วางกฎเกณฑ์เพื่อหาคำตอบที่ปฏิบัติได้จริงสำหรับวิศวกรรมซอฟต์แวร์

สรุป ซอฟต์แวร์ได้กลายเป็นปัจจัยหลักในการปฏิวัติระบบผลิตภัณฑ์ที่มีคอมพิวเตอร์เป็นองค์ประกอบ และยังเป็นหนึ่งในเทคโนโลยีที่สำคัญที่สุดอันหนึ่งของโลก ในเวลา 50 ปี ที่ผ่านมา ซอฟต์แวร์ได้พัฒนาจากเครื่องมือในการวิเคราะห์ข้อมูลมาเป็นอุตสาหกรรมโดยตัวเอง และสิ่งที่ยังเป็นปัญหาก็คือ การสร้างซอฟต์แวร์ให้เสร็จภาพในเวลาและงบประมาณที่วางไว้ ซอฟต์แวร์----ซึ่งหมายถึงรวมโปรแกรม ข้อมูล เอกสาร ครอบคลุมเทคโนโลยีและแอพพลิเคชั่นหลายๆสาขา แต่ซอฟต์แวร์ยังคงค่อยๆแปรเปลี่ยนไปตามกฎเกณฑ์ต่างๆที่ได้กล่าวมาในบทนี้ เป้าหมายของวิศวกรรมซอฟต์แวร์คือการให้แนวทางในการสร้างซอฟต์แวร์ที่มีคุณภาพมากขึ้น