วิศวกรรมซอฟต์แวร์
วิศวกรรมซอฟต์แวร์
(อังกฤษ: software
engineering) เป็นศาสตร์เกี่ยวกับวิศวกรรมด้านซอฟต์แวร์
มีเนื้อหาเกี่ยวข้องกับการใช้กระบวนการทางวิศวกรรมใน การดูแลการผลิต
ตั้งแต่การเริ่มเก็บความต้องการ การตั้งเป้าหมายของระบบ การออกแบบ กระบวนการพัฒนา
การตรวจสอบ การประเมินผล การติดตามโครงการ การประเมินต้นทุน การรักษาความปลอดภัย
ไปจนถึงการคิดราคาซอฟต์แวร์เป็นต้น
วิศวกรรมซอฟต์แวร์ประยุกต์ความรู้และเทคโนโลยีทางด้านวิศวกรรมศาสตร์
วิศวกรรมคอมพิวเตอร์ วิทยาการคอมพิวเตอร์ เทคโนโลยีสารสนเทศ
การบริหารจัดการโครงการ และสาขาอื่น ๆ ที่เกี่ยวข้องเข้าด้วยกัน
เพื่อสร้างซอฟต์แวร์ที่สามารถปฏิบัติงานตามเป้าหมาย ภายใต้เงื่อนไขที่กำหนด
วิศวกรรมซอฟต์แวร์เป็นศาสตร์ที่ทวีความสำคัญเพิ่มขึ้นเรื่อย
ๆ เนื่องจากในปัจจุบัน ซอฟต์แวร์มีความซับซ้อนเพิ่มขึ้น
จำเป็นต้องมีการวิศวกรรมที่จะควบคุมและดำเนินการผลิต ที่มีประสิทธิภาพ
สามารถวัดผลได้ และ สามารถตรวจหาข้อผิดพลาดพร้อมสาเหตุได้ อย่างสะดวกและรวดเร็ว
เพื่อให้สามารถปรับปรุงแก้ไขซอฟต์แวร์ตั้งแต่อยู่ในระหว่างการผลิตได้อีก
ทั้งยังมีการทบทวนและตรวจสอบ
วิศวกรรมซอฟต์แวร์
วิศวกรรมซอฟต์แวร์
คือ การประยุกต์ใช้ระบบ กฎเกณฑ์ การเข้าถึงซึ่งสามารถวัดประเมินได้ในการพัฒนา
การปฏิบัติการ และการบำรุงรักษาซอฟต์แวร์ และในการศึกษาสิ่งเหล่านี้
ก็คือการประยุกต์ใช้งานทางด้านวิศวกรรมมาจัดการกับซอฟต์แวร์
ข้อตกลงทางวิศวกรรมซอฟต์แวร์
ปรากฏขึ้นครั้งแรกในการประชุมวิศวกรรมซอฟต์แวร์นาโต ที่จัดขึ้นในปี ค.ศ. 1968
และได้ให้ความสำคัญกับเหตุการณ์ "วิกฤติการณ์ซอฟต์แวร์" ในขณะนั้น ตั้งแต่นั้นเป็นต้นมา
วิศวกรรมซอฟต์แวร์ก็ได้กลายมาเป็นศาสตร์และแขนงของการศึกษาเฉพาะ
ในการสร้างซอฟต์แวร์ที่มีคุณภาพสูงขึ้น มีราคาถูกลงเป็นที่ยอมรับได้
ดูแลรักษาได้ง่าย และพัฒนาได้อย่างรวดเร็วขึ้น
ตั้งแต่นั้นก็ยังคงมีการเปรียบเทียบวิศวกรรมซอฟต์แวร์กับวิศวกรรมแขนงอื่น
ยังคงมีการถกเถียงกันว่าวิศวกรรมซอฟต์แวร์ที่แท้จริงคืออะไร
และวิศวกรรมซอฟต์แวร์สมควรเป็นหนึ่งในสาขาวิศวกรรมหรือไม่
วิศวกรรมซอฟต์แวร์ได้ขยายวงกว้างอย่างไร้ขีดจำกัดไปยังผู้ที่มีส่วนเกี่ยว
ข้องกับซอฟต์แวร์ เช่น โปรแกรมเมอร์ การพัฒนาซอฟแวร์ในบางครั้งข้อตกลงอาจขึ้นอยู่กับผู้ที่มีส่วนสำคัญใน
อุตสาหกรรมซอฟต์แวร์ในการเปลี่ยนแปลงกระบวนการสร้างซอฟต์แวร์
แต่กระนั้นวิศวกรรมซอฟต์แวร์ก็ยังเป็นที่ใฝ่ฝันของวัยรุ่นในการประกอบอาชีพ
ในนิตยสาร Money Magazine ได้กล่าวว่า
อาชีพในแขนงวิศวกรรมซอฟต์แวร์มีแนวโน้มอนาคตที่สดใส[1] และในเว็บไซต์
Salary.com ได้กล่าวว่าอัตราเงินเดือนในอาชีพวิศวกรรมซอฟต์แวร์มีอัตราสูงที่สุดในประเทศสหรัฐอเมริกาในปี
ค.ศ. 2006[2]
วิชาชีพ
ในบางสาขาอาชีพ
ยกตัวอย่างเช่น ในมลรัฐออนตาริโอ ประเทศแคนาดา ใบอนุญาตของวิศวกรทางด้านซอฟแวร์
ในหลาย ๆ พื้นที่ในโลก ไม่มีกฎหมายควบคุมอาชีพวิศวกรทางด้านซอฟแวร์
แต่มีข้อกำหนดบางอย่างจาก สถาบันวิศวกรไฟฟ้าและอิเลคโทรนิค(Institute of
Electrical and Electronics Engineers: IEEE)และสมาคมคอมพิวเตอร์ (ACM)
ซึ่งเป็นองค์กรหลักในด้านวิศวกรรมซอฟแวร์ ใน IEEE ได้กำหนดแนวทางไว้ในองค์ความรู้ด้านวิศวกรรมซอฟแวร์เมื่อปี ๒๕๔๗
ได้กำหนดแนวทางและกำหนดกรอบความรู้ที่วิศวกรด้านซอฟแวร์ควรรู้
และยังกำหนดจรรยาบรรณของวิศวกรซอฟแวร์ และนอกจากนี้ IEEE ยังมีการตีพิมพ์พจนานุกรมว่าด้วยวิศวกรรมซอฟแวร์และวิศวกรรมระบบ
การจ้างงาน
ในปี 2004
ในสหรัฐอเมริกา สำนักแรงงานสถิติ นับ 760840 ซอฟต์แวร์วิศวกร
ถืองานในสหรัฐอเมริกา; ในช่วงเวลาเดียวกันมีบาง 1.4 ล้านประกอบทำงานในสหรัฐอเมริกาในอื่นๆทั้งหมดรวมวิศวกรรมฝึกหัด
เนื่องจากความญาติเป็นความแปลกฟิลด์การศึกษาทางการศึกษาในวิศวกรรมซอฟต์แวร์
นั้นมักจะสอนเป็นส่วนหนึ่งของหลักสูตรด้านวิทยาศาสตร์คอมพิวเตอร์และเป็นผล
มากที่สุดซอฟต์แวร์วิศวกรถือด้านวิทยาศาสตร์คอมพิวเตอร์องศา
ส่วนใหญ่
ซอฟต์แวร์วิศวกร ทำงานเป็นพนักงานหรือผู้รับเหมา
วิศวกรซอฟต์แวร์ที่ทำงานร่วมกับธุรกิจหน่วยงานราชการ (พลเรือนหรือทหาร)
และองค์กรที่ไม่แสวงหาผลกำไร บางซอฟต์แวร์วิศวกรสามารถทำงานด้วยตนเองได้
บางองค์กรมีผู้เชี่ยวชาญแต่ละดำเนินงานใน กระบวนการพัฒนาซอฟต์แวร์ องค์กรอื่น ๆ
ต้องทำวิศวกรซอฟต์แวร์จำนวนมากหรือทั้งหมดของพวกเขา
มากในโครงการคนอาจชำนาญในเดียวบทบาท
โครงการขนาดเล็กคนอาจกรอกหลายหรือทั้งหมดบทบาทในเวลาเดียวกัน Specializations ประกอบด้วย: ในอุตสาหกรรม (นักวิเคราะห์ สถาปนิก นักพัฒนา ทดสอบ
การสนับสนุนทางเทคนิค ผู้จัดการ) และในด้านวิชาการ (นักวิชาการศึกษา นักวิจัย)
มีความถกเถียงในอนาคตโอกาสการจ้างงานสำหรับวิศวกรและซอฟต์แวร์อื่นๆ
ไอที ผู้เชี่ยวชาญด้าน ตัวอย่างเช่นออนไลน์ล่วงหน้าตลาดที่เรียกว่า "อนาคตของ
ITJOBS ไอทีงานในอเมริกา"
พยายามตอบว่าจะมีเพิ่มเติมไอทีงานรวมทั้งซอฟต์แวร์วิศวกรในกว่า 2012 มีใน ค.ศ. 2002
การรับรอง
การรับรองวิชาชีพของ
วิศวกรซอฟต์แวร์ ยังเป็นเรื่องโต้แย้งกันอยู่
บ้างก็เห็นว่าใบรับรองเป็นเครื่องมือสำหรับยกระดับหลักปฏิบัติของมืออาชีพ และ
วัตถุประสงค์ของการให้ใบรับรองวิชาชีพวิศวกรซอฟต์แวร์ เป็นการปกป้องสาธารณะ[1] สมาคมคอมพิวเตอร์หรือ
ACM มีการรับรองวิชาชีพในปี 1980
และถูกยกเลิกไปเนื่องจากขาดความสนใจ ACM ได้มีการตรวจสอบความเป็นไปได้ของการรับรองวิชาชีพ
วิศวกรรมซอฟต์แวร์ในปี 1990
แต่ในที่สุดการรองดังกล่าวก็ถูกตัดสินว่าไม่เหมาะสมในเรื่องการรับรอง
วิชาชีพในอุตสาหกรรมของวิศวกรรมซอฟต์แวร์ ในปี 2006 สมาคม IEEE
ได้มีการรับรองวิชาชีพซอฟต์แวร์เกิน 575 ราย
ในประเทศแคนาดา Canadian Information Processing Society ได้สร้างกฎหมายที่รู้จักเพื่อรองรับอาชีพข้อมูลระบบผู้เชี่ยวชาญ
สถาบันวิศวกรรม ซอฟต์แวร์ได้ให้การรับรองที่ระบุหัวข้อขึ้น เช่นความปลอดภัย
การปรับปรุงกระบวนการของสถาปัตยกรรมซอฟต์แวร์
การรับรองโปรแกรมส่วนใหญ่ในอุตสาหกรรมไอทีเป็นการรับรองเชิงเฉพาะด้าน เทคโนโลยี
และมีการจัดการโดยผู้ขายเทคโนโลยีเหล่านี้
โปรแกรมเหล่านี้มีการรับรองที่เหมาะสมกับสถาบันที่จะว่าจ้างให้บุคคลที่ใช้
กับเทคโนโลยีนั้น
ผลกระทบของโลกาภิวัตน์
นักศึกษาหลายคนในประเทศที่พัฒนาแล้ว
มีความกลัวและได้หลีกเลี่ยงที่จะมีวุฒิการศึกษาระดับปริญญาเกี่ยวข้องกับวิศวกรรมซอฟต์แวร์เนื่องจากเกิดความกลัวเรื่องการจ้างงานจากภายนอกประเทศ
offshore
outsourcing (การนำเข้าผลิตภัณฑ์ซอฟต์แวร์หรือบริการจากต่างประเทศ)
และการย้ายที่อยู่ การต้องเดินทางไปทำงานต่างชาติ ทั้งๆ ที่รัฐบาล
ไม่ได้แสดงสถิติการคุกคามถึงวิศวกรรมซอฟต์แวร์ อาชีพที่เกี่ยวข้อง
กระบวนการเขียนโปรแกรมทางคอมพิวเตอร์ ดูเหมือนว่าจะไม่ปรากฏให้เห็น
บ่อยครั้งมีจำนวนหนึ่งคาดว่าจะเริ่มต้นเป็นโปรแกรมเมอร์คอมพิวเตอร์ก่อนที่ จะมีการ
เลื่อนขั้นให้เป็นวิศวกรซอฟต์แวร์ดังนั้น อาชีพทางวิศวกรรมซอฟต์แวร์มีความยากลำบาก
โดยเฉพาะอย่างยิ่ง ในระหว่างช่วงที่เศรษฐกิจตกต่ำ
บางครั้งที่ปรึกษามักแนะนำนักศึกษาให้สนใจในเรื่องของ
"ทักษะบุคคล" และทักษะองค์กร มากกว่าทักษะด้านเทคนิคเพียงอย่างเดียว เพราะ
"ทักษะเบื้องต้น" นี้ จะถูกนำไปใช้มากกว่าทักษะในระดับที่ยากมากขึ้น
มันมีมุมมองด้านวิศวกรรมซอฟต์แวร์
ดูเหมือนจะเริ่มต้นการจำกัดโดยโลกาภิวัฒน์มากยิ่งขึ้น
การศึกษา
ความรู้ทางด้านการเขียนโปรแกรมคอมพิวเตอร์เป็นความรู้พื้นฐานสำหรับอาชีพของวิศวกรซอฟต์แวร์
แต่เท่านั้นยังไม่เพียงพอ
ส่วนใหญ่วิศวกรซอฟต์แวร์มีวุฒิการศึกษาในสาขาวิทยาการคอมพิวเตอร์
เนื่องจากอดีตยังไม่ค่อยมีหลักสูตรการเรียนการสอนระดับอุดมศึกษาในสาขาวิศวกรรมซอฟต์แวร์
อย่างไรก็ตามได้มีการเริ่มมีหลักสูตรสาขาวิศวกรรมซอฟต์แวร์ เปิดสอนมากขึ้น
โดยเฉพาะอย่างยิ่งระดับปริญญาโทและปริญญาเอก ในช่วงปี ค.ศ. 2001-2004 ได้คณะวิชาการกลุ่มหนึ่งได้พัฒนาหลักสูตรต้นแบบ (อังกฤษ: Model
Curriculum) สำหรับวิศวกรรมซอฟต์แวร์ระดับปริญญาตรี เรียกว่า SE2004 เพื่อให้เป็นมาตรฐานสากล
การพัฒนาหลักสูตรต้นแบบดังกล่าวได้รับการสนับสนุนจากสมาคม ACM และสมาคมคอมพิวเตอร์แห่ง IEEE[2]
ในปี
ค.ศ. 1998 มหาวิทยาลัยบัณฑิตศึกษาแห่งนาวาล (Naval Postgraduate School) ในสหรัฐอเมริกา
ได้ริเริ่มหลักสูตรปริญญาเอกสาขาวิศวกรรมซอฟต์แวร์เป็นครั้งแรกในโลก[ต้องการอ้างอิง]
Steve McConnell ได้ให้ความเห็นว่า เป็นเพราะมหาวิทยาลัยส่วนใหญ่มีการเรียนการสอนวิทยาการคอมพิวเตอร์มากกว่า
วิศวกรรมซอฟต์แวร์ จึงทำให้ขาดแคลนวิศวกรซอฟต์แวร์ที่แท้จริง ในปี ค.ศ. 2004 สมาคมคอมพิวเตอร์แห่ง IEEE ได้พัฒนา องค์ความรู้
สำหรับสาขาวิศวกรรมซอฟต์แวร์ หรือเรียกว่า Software Engineering Body of Knowledge
จนได้รับการรับรองมาตรฐานสากล ISO (ISO/IEC TR
19759:2005)[3]
European Commission ภายในโปรแกรม Erasmus Mundus สำหรับนักศึกษาจากยุโรป
และประเทศอื่นๆ. นี่เป็นการร่วมกันของ4มหาวิทยาลัยในยุโรป [4]
สาขาวิชาย่อย
วิศวกรรมซอฟต์แวร์สามารถแบ่งออกไปได้อีก
10 สาขาวิชาย่อย คือ[4]
การวิเคราะห์ความต้องการของซอฟต์แวร์:
การศึกษาวิเคราะห์ข้อกำหนดและข้อกำหนดสำหรับการตรวจสอบความถูกต้องของซอฟต์แวร์.
การออกแบบซอฟต์แวร์:
การออกแบบซอฟต์แวร์มักใช้เครื่องมือช่วยในการออกแบบ Computer-Aided
Software Engineering (CASE) และใช้การออกแบบที่เป็นมาตรฐานที่เป็นที่ยอมรับโดยทั่วไปเช่น
การออกแบบโดยใช้ภาษายูเอ็มแอล (UML) เป็นต้น
การพัฒนาซอฟต์แวร์:
การพัฒนาซอฟต์แวร์ด้วยภาษาการเขียนโปรแกรมคอมพิวเตอร์ต่างๆ
การทดสอบซอฟต์แวร์:
การทดสอบการทำงานของซอฟต์แวร์
การบำรุงรักษาซอฟต์แวร์:
ระบบซอฟต์แวร์ต่างๆ มักมีปัญหาหลายๆ อย่าง
หลังจากพัฒนาเสร็จแล้วยังจำเป็นต้องมีการเพิ่มเติมเรื่อยๆ เป็นเวลาอีกยาวนาน
การจัดการการตั้งค่าซอฟต์แวร์:
เนื่องจากซอฟต์แวร์เป็นระบบที่มีคววมซับซ้อนสูง การกำหนดค่า
(เช่นการควบคุมเวอร์ชันและการควบคุมซอร์ซโค๊ด) ต้องได้รับการจัดการตามมาตรฐานและกรรมวิธีที่ถูกต้อง
การจัดการวิศวกรรมซอฟต์แวร์:
การบริหารจัดการระบบซอฟต์แวร์เรียนแบบมาจากการบริหารโครงการ
แต่มีข้อแตกต่างกันเล็กน้อย ซึ่งจะพบแค่ในสาขาของซอฟต์แวร์
กระบวนการพัฒนาซอฟต์แวร์:
กระบวนการพัฒนาซอฟต์แวร์เป็นหัวข้อที่มีผู้พูดถึงเป็นอย่างมาก เช่น
กระบวนการพัฒนาซอฟต์แวร์แบบเอจายล์ (อังกฤษ: Agile) หรือ
กระบวนการพัฒนาซอฟต์แวร์แบบน้ำตก (Waterfall)
เครื่องมือในวิศวกรรมซอฟต์แวร์
คุณภาพซอฟต์แวร์:
การควบคุมคุณภาพซอฟต์แวร์ และการประกันคุณภาพให้กับการพัฒนาซอฟต์แวร์
ซอฟต์แวร์ท้องถิ่น:
เป็นหนึ่งสาขาของอุตสาหกรรมนี้ที่เกี่ยวกับภาษาท้องถิ่น
ไม่มีความคิดเห็น:
แสดงความคิดเห็น
แสดงความคิดเห็น