670 likes | 851 Views
มาตรฐาน SEEK. 19/01/10. The Software Engineering Discipline. หัวข้อนี้จะกล่าวถึงธรรมชาติของวิศวกรรมซอฟต์แวร์และประวัติความเป็นมา ที่มีความสัมพันธ์เกี่ยวข้องต่อการพัฒนาหลักสูตรวิศวกรรมซอฟต์แวร์
E N D
มาตรฐาน SEEK 19/01/10
The Software Engineering Discipline • หัวข้อนี้จะกล่าวถึงธรรมชาติของวิศวกรรมซอฟต์แวร์และประวัติความเป็นมา ที่มีความสัมพันธ์เกี่ยวข้องต่อการพัฒนาหลักสูตรวิศวกรรมซอฟต์แวร์ • จุดประสงค์ของการทำความเข้าใจในระเบียบวินัย กฏบังคับของวิศวกรรมซอฟต์แวร์ก็เพื่อให้ทราบถึงที่มาที่ไปและเหตุผลสำหรับปัจจัยต่างๆของหลักสูตรของสาขาวิชานี้
The Discipline of Software Engineering • เนื่องจากปัจจุบันมีการนำซอฟต์แวร์มาใช้เหมือนเป็นสิ่งสำคัญในชีวิตประจำวัน ไม่ว่าจะใช้ในงานการบริหารประเทศ งานธนาคารและการเงิน การศึกษา การคมนาคม บันเทิง การแพทย์ การเกษตรและกฎหมาย ซึ่งเหล่านี้ล้วนส่งผลให้มีการเพิ่มทั้ง จำนวน ขนาด และส่วนของแอพพลิเคชันจำนวนมากตามไปด้วย ทำให้ต้องใช้เงินหลายแสนล้านเหรียญในการพัฒนาซอฟต์แวร์ และชีวิตความเป็นอยู่ของประชากรส่วนใหญ่จึงขึ้นอยู่กับประสิทธิภาพของการพัฒนาซอฟต์แวร์เหล่านี้ด้วย
สิ่งที่ตามมาคือ ปัญหาสำคัญในเรื่องของ ค่าใช้จ่าย (cost) กำหนดการ (timeliness) และคุณภาพของผลิตภัณฑ์ซอฟต์แวร์จำนวนมาก เหตุผลที่ทำให้เกิดปัญหาเหล่านี้อาจมาจาก • ผลิตภัณฑ์ซอฟต์แวร์นั้นเป็นสิ่งประดิษฐ์ของมนุษย์ที่ซับซ้อนที่สุด ไม่สามารถมองเห็นได้ และมีการเปลี่ยนแปลงตลอด ซึ่งยากต่อการจะระบุได้แน่นอน • เทคนิคและกระบวนการในการโปรแกรมที่มีประสิทธิภาพในทีมสร้างขนาดเล็กที่จะสร้างโปรแกรมนั้นไม่เพียงพอที่จะพัฒนาระบบขนาดใหญ่และซับซ้อน เช่นระบบที่มี LOC เป็นล้านบรรทัด ต้องใช้เวลาสร้างหลายปีและต้องการผู้พัฒนาจำนวนมาก
ความก้าวหน้าในเทคโนโลยีด้านซอฟต์แวร์และคอมพิวเตอร์ทำให้ต้องการของใหม่และผลิตภัณฑ์ซอฟต์แวร์ใหม่ๆเสมอ ทำให้ลูกค้ามีความคาดหวัง และเกิดการแข่งขันผลักดันให้จะต้องผลิตซอฟต์แวร์ที่มีคุณภาพ และอยู่ในตารางการพัฒนาซอฟต์แวร์ที่ยอมรับได้
Definitions of Software Engineering • “การสร้างและใช้หลักการ(วิธีการ)ทางวิศวกรรมเพื่อให้ได้ซอฟต์แวร์ที่คุ้มค่า มีความน่าเชื่อถือและทำงานบนเครื่องได้จริง” [Bauer 1972] • "Software engineering คือรูปแบบของวิศวกรรมซึ่งประยุกต์หลักการของวิทยาการคอมพิวเตอร์และคณิตศาสตร์เพื่อให้ได้ผลลัพธ์ทางซอฟต์แวร์ที่มีประสิทธิภาพคุ้มค่า [CMU/SEI-90-TR-003] • “การประยุกต์ใช้ แบบแผน ที่เป็นไปตามระเบียบ และวิธีการกำหนดปริมาณ เพื่อให้ได้การพัฒนา การทำงาน และการบำรุงรักษาของซอฟต์แวร์ " [IEEE 1990].
Software Engineering as a Computing Discipline • ระเบียบแบบแผนของ software engineering มีความแตกต่างจากระเบียบแบบแผนของวิศวกรรมสาขาอื่น เนื่องจากทั้ง ไม่สามารถเห็นได้จริงและมีลักษณะไม่ปะติดปะต่อกันของการทำงานด้านซอฟต์แวร์ ด้วยเหตุนี้จึงต้องการ การรวมหลักการทางคณิตศาสตร์และวิทยาการคอมพิวเตอร์ด้วยหลักการทางวิศวกรรมที่พัฒนาขึ้นเพื่อให้ได้สิ่งประดิษฐ์ทางกายภาพ และเป็นสิ่งที่จับต้องได้ • การใช้พื้นฐานด้านคณิตศาสตร์มาใช้ด้านวิศวกรรมซอฟต์แวร์ก็เพื่อให้ได้มาซึ่งการพัฒนาการจำลองระบบและเทคนิคที่น่าเชื่อถือ เพื่อผลิตซอฟต์แวร์ที่มีคุณภาพสูง
Software Engineering as an Engineering Discipline • กฎระเบียบของวิศวกรรมซอฟต์แวร์อาจมองได้ว่าเป็นด้านวิศวกรรมที่มีการเชื่อมต่อกับกฎระเบียบของวิทยาการคอมพิวเตอร์มากกว่างานด้านวิศวกรรมด้านอื่น ในกระบวนการการสร้างนั้น จะให้ความสนใจด้านการรวมกันของการปฏิบัติของวิศวกรรมในด้านการพัฒนาของซอฟต์แวร์ ซึ่งสิ่งนี้จะเป็นความแตกต่างจากหลักสูตรวิทยาการคอมพิวเตอร์ • แม้ว่าจะมีความคล้ายกันอย่างมากระหว่างวิศวกรรมซอฟต์แวร์และวิศวกรรมด้านอื่นๆแต่ก็ยังมีความแตกต่างที่สามารถเห็นได้ดังต่อไปนี้ • มีรากฐานหลักมาจากวิทยาการคอมพิวเตอร์ ไม่ใช่วิทยาศาตร์ธรรมชาติ (natural sciences) • มุ่งเน้นไปที่ discrete mathematics มากกว่า continuous mathematics
ลงลึกในด้าน abstract/logical entities แทนด้านสิ่งประดิษฐ์ที่จับต้องได้ (concrete/physical artifacts) • เหมือนเป็นงานที่ไม่มีเฟสในด้านการประดิษฐ์ (manufacturing phase) • การบำรุงรักษาซอฟต์แวร์ จะหมายถึงการพัฒนาอย่างต่อเนื่อง หรือการวิวัฒนาการ และไม่ใช่รูปแบบเก่าๆที่เคยเป็นมา
SWEBOK (Software Engineering Body of Knowledge) • สิ่งท้าทายหลักในการเป็นแนวทางในการทำหลักสูตร เพื่อการหาและระบุข้อจำกัดของระเบียบ เมื่อการหาข้อระเบียบที่เป็นทั้งของใหม่และมีการเปลี่ยนแปลงตลอดเวลา ดังนั้นจึงต้องการมีการหาองค์ความรุ้ (body of knowledge) ต่อไปนี้เป็นการอธิบายถึง efforts ชนิดต่างๆ • SWEBOK คือ การอธิบายโดยรวมถึงความรู้ต่างๆที่เป็นที่ต้องการเพื่อใช้ในการปฏิบัติของวิศวกรรมซอฟต์แวร์ เพื่อให้เป็นไปตามวัตถูประสงค์ของรายงานนี้นั่นคือ “เพื่อให้พื้นฐานสำหรับการพัฒนาหลักสูตร ” เพื่อให้ตรงตามวัตถุประสงค์ SWEBOK ได้รวมเอาระบบการจัด rating สำหรับหัวข้อของความรู้บนพื้นฐานแนวคิดด้านการศึกษาของ Bloom [Bloom 1956]
แม้ว่า ไม่ใช่ปัจจัยหลักที่ใช้ในการพัฒนาของ SEEK และมีการสื่อสารแบบปิดระหว่าง SWEBOK และ SE2004 projects ซึ่งสามารถเห็นความแตกต่างของสองหลักการนี้ ดังนี้ The SWEBOK ใช้ในการอธิบายถึงการคลอบคลุมความรู้หลังจากได้มีการปฏิบัติได้สี่ปี • The SWEBOK จะไม่คลอบคลุมความรู้ที่ไม่ใช่วิศวกรรมซอฟต์แวร์ที่ซึ่งวิศวกรรมซอฟต์แวร์จะต้องมี • The SE2004 จะรองรับเฉพาะการศึกษาวิศวกรรมซอฟต์แวร์ ระดับปริญญาตรีเท่านั้น
The PMBOK (แนวทางขององค์ความรู้ในด้านการจัดการโครงการ) [PMI 2000] จะอธิบายความรู้เกี่ยวกับการจัดการโครงการ(ไม่ใช่แค่ software projects) นอกจากความสัมพันธ์โดยตรงกับการจัดการโครงการซอฟต์แวร์แล้ว รูปแบบและองค์รวมของ PMBOK's มีอิทธิพลคล้ายกันกับระเบียบวิธีทางคอมพิวเตอร์ด้วย
The IS'97 report (Model Curriculum and Guidelines for Undergraduate Degree Programs in Information Systems) [Davis, 1997] อธิบายถึงแบบจำลองทางการศึกษาสำหรับระดับปริญญาตรีในด้าน Information Systems เอกสารนั้นได้รวมถึงการอธิบาย IS body of knowledge ซึ่งรวม SE knowledge และ การวัดที่คล้ายคลึงกับ Bloom's levels สำหรับการกำหนดเงื่อนไขที่จำเป็นในความรู้ระดับปริญญาตรี
Guiding Principles • จะกล่าวถึงแนวคิดพื้นฐานและความเชื่อที่นำไปสู่การพัฒนา SE2004 : แนวทางหลักสำหรับ SE2004 และผลลัพธ์ด้านผู้เรียนที่ได้ออกแบบไว้สำหรับหลักสูตรระดับปริญญาตรีในสาขาวิศวกรรมซอฟต์แวร์
SE2004 Principles จะกล่าวถึงหลักการที่มีอิทธิลอย่างมากต่อการสร้างหลักสูตร โดยหลักการที่เขียนไว้ใน CCCS บางกรณีจะต้องมีการแปลงถ้อยคำที่ไม่ได้เป็นคำหลักของหลักการชนิดนี้ • คอมพิวเตอร์เป็นฟิลด์ที่กว้างซึ่งสามารถขยายไปในขอบเขตของแบบแผนคอมพิวเตอร์ได้ SE2004 จะเน้นไปที่ความรู้และวิชาครู (pedagogy) ที่สัมพันธ์กับหลักสูตรวิศวกรรมซอฟต์แวร์ หากมีความเหมาะสม จะมีการแบ่งหรือคาบเกี่ยวกับหลักสูตรด้านคอมพิวเตอร์อื่น และอาจให้แนวทางบนการร่วมมือกันภายในระเบียบวิธีอื่นๆได้
SE2004 Principles (cont.) • Software Engineering การศึกษาระดับปริญญาตรีสาขาวิศวกรรมซอฟต์แวร์นั้นอาศัยหลักการทางทฤษฎีและพื้นฐานแนวทางจากสาขาวิทยาการคอมพิวเตอร์หลายอย่าง แต่ยังต้องการให้ผู้เรียนนั้นได้ประโยชน์จากฟิลด์อื่นๆเช่น คณิตศาสตร์ วิศวกรรม และการจัดการโครงการซอฟต์แวร์ และแอพพลิเคชันด้านต่างๆ ผู้เรียนด้านวิศวกรรมซอฟต์แวร์จะต้องเรียนทั้งทฤษฏีและปฏิบัติเพื่อสร้างแนวคิดและการจำลองที่สำคัญเพื่อให้ได้ความรู้ที่พิเศษที่เป็นระเบียบวิธีด้านคอมพิวเตอร์ เพื่อรองรับการพัฒนาด้านซอฟต์แวร์ในด้านการสร้างแอพพลิเคชันและเพื่อให้ได้มาซึ่งการออกแบบที่ดี
การวิวัฒนาการที่รวดเร็วและธรรมชาติในด้านอาชีพของวิศวกรรมซอฟต์แวร์นั้นต้องการการทบทวนพิจารณาของหลักสูตรให้ตรงกัน สมาคมผู้เชี่ยวชาญในระเบียบวิธีนี้ต้องสร้างและดำเนินการทบทวนพิจารณากระบวนการซึ่งมีการพิจารณาหลักสูตรต่างๆ ต้องได้รับการยอมรับหลักสูตรว่าเป็นไปตามเกณฑ์เสมอนอกจากนั้นเนื่องจากหน้าที่ของ professional พิเศษของวิศวกรรมซอฟต์แวร์อีกหย่างคือจะต้องทำให้หลักสูตรปรากฏสู่สาธารณะ นั่นคือแนวทางหลักสูตรต้องรองรับการประเมินจากภายนอกว่ามีประสิทธิผลและได้รับวิทยฐานะในด้านโปรแกรมวิศวกรรมซอฟต์แวร์จริง
การพัฒนาหลักสูตรด้านวิศวกรรมซอฟต์แวร์จะต้องสามารถเปลี่ยนแปลง ได้ตลอดทั้งในด้านเทคโนโลยี การปฏิบัติ และด้านแอพพลิเคชัน การพัฒนาวิชาด้านครูอยู่เสมอ และการให้ความสำคัญในการเรียนรู้ตลอดชีวิต ในด้านที่เกี่ยวกับวิศวกรรมซอฟต์แวร์นั้น สถาบันการศึกษาจะต้องยอมรับและตอบสนองต่อการเปลี่ยนแปลงการศึกษาหลักสูตรวิศวกรรมซอฟต์แวร์นั้นจะต้องทำการเตรียมผู้เรียนให้รู้จักเรียนรู้ตลอดชีวิต ซึ่งจะทำให้ผู้เรียนสามารถเรียนรู้เทคโนโลยีปัจจุบันเพื่อพบความท้าทายใหม่ๆในอนาคต
SE2004 ต้องดำเนินไปมากว่าความรู้ต่างๆ เพื่อให้ได้แนวทางสำคัญในเทอมของส่วนที่เป็นหลักสูตรที่แยกออกมารูปแบบหลักสูตร SE2004 ควรจะรวบรวมความรู้ต่างๆตามหลักเหตุผล ทำให้ง่ายต่อการนำไปใช้ในการเรียนรู้ กล่าวคือหลักสูตรนี้จะต้องทำให้สถาบันนั้นสามารถใช้ยุทธวิธีหรือเครื่องมือต่างๆด้านคุณครูได้สะดวก และยังสามารถให้เฟรมเวิร์คเพื่อการนำเสนอ e-book หรือเครื่องมืออื่นๆได้
SE2004 ต้องรองรับการพิสูจน์พื้นฐานด้านทักษะและความรู้ซึ่งผู้สำเร็จหลักสูตรวิศวกรรมซอฟต์แวร์ต้องมีคุณสมบัติตรงตามนั้น • SE2004 ต้องช่วยกำหนดหัวใจหลักของระเบียบของวิศวกรรรมซอฟต์แวร์และแน่ใจว่าผู้เรียนระดับปริญญาตรีสาขานี้ทั้งหมดมีสิ่งเหล่านี้
แนวทางของหลักสูตรวิศวกรรมซอฟต์แวร์ต้องอยู่บนพื้นฐานนิยามที่เหมาะสมของความรู้ด้านวิศวกรรมซอฟต์แวร์ ระเบียบของความรู้นี้ควรมีความรัดกุม เหมาะสมกับระดับปริญญาตรี และควรใช้การทำงานของการศึกษาที่มีมาก่อนหน้าบนองค์ความรู้ด้านวิศวกรรมซอฟต์แวร์ ซึ่งแก่นสารของหลักสูตรควรได้รับการยอมรับอย่างกว้างขวางจากสมาคมการศึกษาด้านวิศวกรรมซอฟต์แวร์ การคลอบคลุมของแก่นสารเริ่มจากคอร์สการแนะนำต่างๆ และขยายเพิ่มจนเข้าสู่หลักสูตรและถูกผนวกจากการเพิ่มคอร์สต่างๆซึ่งเปลี่ยนไปตามสถาบันการศึกษา โปรแกรม หรือ ผู้เรียน
SE2004 จะต้องฝ่าฟันเพื่อให้ได้ความเป็นสากล แม้ว่าจะมีปัจจัยด้านความแตกต่างในด้านความต้องการหลักสูตรของแต่ละประเทศ • SE2004 ต้องเป็นประโยชน์เพื่อผู้ศึกษาด้านคอมพิวเตอร์ทั่วทั้งโลก หากเป็นไปตามนี้แล้วทุกๆมาตรฐานควรได้สร้างขึ้นเพื่อให้มั่นใจว่าหลักสูตรที่ได้รับการยอมรับนั้นมีประโยชน์ต่อชาติและวัฒนธรรมที่มีความแตกต่างเพื่อที่จะสามารถประยุกต์ไช้ได้อย่างกว้างขวางทั้งโลกจากความเกี่ยวเนื่องในด้านสังคมคอมพิวเตอร์ในแต่ละชาตินั้น จึงควรรับอาสาสมัครจากต่างประเทศให้เข้าร่วมกิจกรรมหลักสูตรนี้ด้วย
การพัฒนาของ SE2004 ต้องอยู่บนพื้นฐานสากล ในการที่สำเร็จได้นั้น กระบวนการการสร้างการยอมรับด้านการศึกษาสาขาวิศวกรรมซอฟต์แวร์ต้องรวมผู้เข้าร่วมจำนวนมากที่เป็นตัวแทนจากผู้ศึกษาสาขาวิศวกรรมซอฟต์แวร์และจากอุตสาหกรรม การค้า และผู้เชี่ยวชาญจากทางรัฐบาล • SE2004 ต้องมีการลงมือปฏิบัติทางวิชาชีพที่รวมเอาองค์ประกอบของหลักสูตรระดับปริญญาตรีมาใช้ การฝึกวิชาชีพทางวิศวกรรมซอฟต์แวร์นั้นรวมทั้งกิจกรรมที่มีการแก้ปัญหา การจัดการ ที่มีจรรยาบรรณและถูกต้องตามกฎหมาย ทั้งการสื่อสารด้วยการเขียนหรือการพูด เป็นการทำงานแบบทีมและเป็นปรับเปลี่ยนให้เป็นปัจจุบันอยู่เสมอ
SE2004 ต้องมีการถกประเด็นทางยุทธวิธีและแทคติกในการนำไปใช้ให้เป็นไปตามการรับรองระดับสูง แม้ว่า SE2004 จะต้องบอกชัดเจนถึงวิสัยทัศน์สากล ของการศึกษาด้านวิศวกรรมซอฟต์แวร์ ความสำเร็จของหลักสูตรใดก็ตามขึ้นอยู่กับรายละเอียดในการนำใช้ที่จริงจัง • SE2004 ต้องให้การแนะนำในทางปฏิบัติกับสถาบันที่จัดตั้งหลักสูตรนี้ด้วย
Student Outcomes ต่อไปนี้จะกล่าวถึงผลลัพธ์สำหรับหลักสูตรปริญญาตรีที่ได้สร้างขึ้นเพื่อใช้กับหลักสูตรวิศวกรรมซอฟต์แวร์ ซึ่งผู้จบการศึกษาโปรแกรมนี้ • ต้องแสดงให้เห็นถึงความรู้และทักษะด้านวิศวกรรมซอฟต์แวร์และความรู้ทางวิชาชีพที่จำเป็นที่จะสามารถปฏิบัติในการเป็นวิศวกรรมซอฟต์แวร์ ผู้เรียนต้องผ่านการส่งเสริมและปฏิบัติ เพื่อให้ได้ความเชื่อมั่นในความรู้ความสามารถตามหลักสูตรวิศวกรรมซอฟต์แวร์ ซึ่งได้แก่ ความรู้ต่างๆ ทักษะ ทั้งนี้เป็นไปตามขั้นตอนที่มีระดับต่างกันที่จะสำเร็จได้ในแต่ละสถาบันการศึกษา นอกจากนั้นผู้สำเร็จยังต้องการได้ความเข้าใจและความพอใจในวิชาชีพที่เป็นไปตามจริยธรรม และความต้องการในการปฏิบัติในทางวิชาชีพ เศรษฐกิจ และสังคม
[2] การทำงานที่แยกตัวนั้นจะต้องเป็นส่วนหนึ่งของการทำงานเป็นทีมเพื่อพัฒนาและสามารถผลิตภัณฑ์ซอฟต์แวร์ที่มีคุณภาพ ผู้เรียนต้องการการปฏิบัติที่สมบูรณ์ซึ่งอาจต้องทำงานเดี่ยวแต่ต้องอยู่ในเงื่อนไขว่าจะต้องได้การทำงานเป็นทีมในท้ายสุด สำหรับการทำงานเป็นทีมนั้น ผู้เรียนควรจะทราบถึงธรรมชาติการทำงานเป็นกลุ่มและกิจกรรมกลุ่ม บทบาทต่างๆอย่างชัดเจน ซึ่งอาจรวมถึงการเน้นหนักไปที่ความสำคัญของสาระเนื้อหาที่เป็นไปตามระเบียบของหลักสูตร ความต้องการนั้นต้องยืดมั่นใน การตรงต่อเวลา การสื่อสาร และการทำงานเดี่ยวที่สามารถสร้างศักยภาพของความเป็นทีมได้ดี
[3] แก้ไขปัญหาความขัดแย้งในแนวคิดทางโครงการ หาข้อตกลงที่ยอมรับได้ภายใต้ข้อจำกัด ค่าใช้จ่าย เวลา ความรู้ความเข้าใจ ระบบที่ใช้ และองค์กร • ผู้เรียนควรได้ทำแบบฝึกหัดซึ่งทำให้เขาได้พบปัญหาในด้าน การเปลี่ยนแปลง และความต้องการต่างๆ ผู้เรียน จึงควรได้เรียนรู้รับประสบการณ์จริง หน่วยของหลักสูตรควรระบุสิ่งสำคัญเหล่านี้ด้วยการพุ่งเป้าในเรื่องความต้องการด้านคุณภาพ และความเป็นไปได้ในการออกแบบซอฟต์แวร์
[4] การออกแบบให้เหมาะสมกับปัญหาในด้านแอพพลิเคชันจากการใช้วิธีการทางวิศวกรรมซอฟต์แวร์ซึ่งได้รวมเอาจรรยาบรรณ สังคม กฎหมายและเศรษฐกิจ • ตลอดการศึกษาหลักสูตร ผู้เรียนต้องมีความรู้ที่เหมาะสมเพื่อสร้างการออกแบบที่ถูกต้องและระบุการแก้ไขปัญหาในชนิดของแอพพลิเคชันที่มีความหลากหลายของซอฟต์แวร์ผู้เรียน ต้องสามารถเข้าใจถึงจุดอ่อนจุดแข็งแกร่ง ของงานที่มีความแตกต่างกัน และแสดงให้เห็นถึงทางเลือกของวิธีที่เหมาะสมในการแก้ไขปัญหาในงานที่ได้มอบหมาย การแก้ไขปัญหาด้านการออกแบบที่จะนำเสนอนั้นจะต้องทำภายใต้ของเขตของ จริยธรรม สังคม กฎหมาย ความปลอดภัยและด้านเศรษฐกิจ
[5]แสดงให้เห็นถึงความเข้าใจของการประยุกต์ใช้ทฤษฎีปัจจุบัน รูปแบบและเทคนิคซึ่งให้พื้นฐานเพื่อการระบุปัญหาและวิเคราะห์ การออกแบบซอฟต์แวร์ การพัฒนา การสร้าง การทวนสอบ และเอกสาร • ความสำคัญของกิจกรรมสุดท้ายในการจบหลักสูตรวิศวกรรมซอฟต์แวร์ คือ การพิจารณาถึงความเอาใจใส่ ให้ผู้เรียนได้มีโอกาสในการขบคิดโครงการหลักและทำให้เห็นถึงความสามารถในการนำความรู้ด้านต่างๆที่เรียนมาประยุกต์ใช้ให้เกิดประสิทธิผล ซึ่งกลไกเหล่านี้ทำให้ผู้เรียนได้แสดงถึงความรู้อย่างกว้างขวางด้านวิศวกรรมซอฟต์แวร์ และมีความสามารถที่จะประยุกต์ทักษะเหล่านั้นให้เกิดประสิทธิผลแท้จริง ซึ่งควรรวมความสามารถที่จะสะท้อนความสำเร็จของพวกเขาด้วย
[6]แสดงให้เห็นถึงความเข้าใจและความพอใจในความสำคัญของข้อตกลงมีการลงมือทำงานที่เกิดประสิทธิผล มีความเป็นผู้นำ และการติดต่อสื่อสารที่ดีกับstakeholders ในด้านการพัฒนาซอฟต์แวร์ที่สำคัญ • จำเป็นที่จะต้องมีการศึกษาอย่างน้อยหนึ่งกิจกรรมหลักซึ่งเกี่ยวข้องกับการสร้างผลิตภัณฑ์ให้กับ client วิศวกรรมซอฟต์แวร์ต้องทำให้เห็นว่าพวกเขาได้สร้างซอฟต์แวร์ที่มีประโยชน์ หากเป็นไปได้ควรรวบรวมภายในโปรแกรมการสอนที่ว่าด้วยประสบการณ์เชิงอุตสาหกรรม หรือควรเชิญผู้บรรยายที่มีประสบการณ์ในงานด้านวิศวกรรมซอฟต์แวร์มาบรรยายให้ความรู้ หรือ มีประสบการณ์ในงานด้านธุรกิจซอฟต์แวร์จากภายนอก ซึ่งเหล่านี้จะเพิ่มพูลประสบการณ์และช่วยให้สามารถสร้างสรรค์สิ่งต่างๆที่มีประโยชน์ทำให้ได้ผู้สำเร็จการศึกษาที่มีคุณภาพสูง
[7] เรียนรู้โมเดล เทคนิคและเทคโนโลยีใหม่ๆ ให้ผู้เรียนสามารถนำออกมาและเห็นถึงความสำคัญเพื่อที่จะนำมาพัฒนาในเชิงวิชาชีพได้อย่างต่อเนื่อง • เมื่อถึงเวลาจบโปรแกรมการเรียน ผู้เรียนควรแสดงให้เห็นถึงมีความสามารถที่จะเป็นผู้ที่เรียนรู้ตลอดชีวิตด้วยตัวเอง ในช่วงการศึกษาสุดท้าย ผู้เรียนควรพร้อมที่จะเรียนรู้สิ่งใหม่ๆอยู่เสมอ นั่นคือผู้เรียนจะต้องได้บทเรียนที่ดีที่สุดในช่วงการศึกษาก่อนหน้า
Overview of Software Engineering EducationKnowledge (SEEK) • จะกล่าวถึงองค์ความรู้ซึ่งเหมาะสมสำหรับโปรแกรมระดับปริญญาตรีในสาขาวิศวกรรมซอฟต์แวร์ ความรู้เหล่านี้เรียกว่า SEEK (Software Engineering Education Knowledge).
การพัฒนาโมเดล SE2004 นั้นจะอยู่บนพื้นฐานโมเดลที่ใช้สร้าง CCCS (the Computer Science Volume) การเลือกแต่แรกเริ่มของ SEEK อยู่บนพื้นฐานของความรู้ SWEBOK และ การนำความรู้ การแลกเปลี่ยนความคิดเห็นหลายๆครั้งจากอาสาสมัครในงาน SEEK โดยอาสาสมัคร SEEK จะต้องแบ่งออกเป็นกลุ่มที่เป็นตัวแทนและส่วนของ SEEK แต่ละกลุ่มต้องประกอบด้วยอาสาสมัครไม่ต่ำกว่าเจ็ดคน ซึ่งกลุ่มเหล่านั้นถูกกำหนดให้ทำหน้าที่ในการให้รายละเอียดของหน่วยต่างๆซึ่งประกอบด้วยความรู้ทางการศึกษาแบบพิเศษและทำการปรับแต่งแต่ละหน่วยให้เป็นที่ยอมรับ • เพื่อความสะดวกในงาน จะอ้างองค์ความรู้ด้านวิศวกรรมซอฟต์แวร์แบบต่างๆเช่น SWEBOK, CSDP Exam, and SEI และเซ็ตของรูปแบบเพื่อใช้สร้างหน่วยกิตและชื่อวิชา
Knowledge Areas, Units, and Topics • ความรู้เป็นเทอมที่ใช้ในการอธิบายระเบียบข้อบังคับซึ่งประกอบด้วย ข่าวสาร การใช้ถ้อยคำ สิ่งประดิษฐ์ ข้อมูล บทบาท วิธีการ โมเดล ขั้นตอน เทคนิค การปฏิบัติ กระบวนการ และเรื่องของการทำเป็นลายลักษ์อักษร SEEK ถูกสร้างเป็นลักษณะลำดับขั้นทั้งหมดสามขั้น • ชั้นสูงสุดคือการศึกษาในเนื้อหาความรู้ การแทนแบบแผนย่อยแบบพิเศษของวิศวกรรมซอฟต์แวร์ซึ่งถูกสร้างเป็นส่วนสำคัญขององค์ความรู้ด้านวิศวกรรมซอฟต์แวร์ซึ่งผู้ศึกษาระดับปริญญาตรีต้องทราบ
ส่วนของความรู้ที่เป็นโครงสร้างระดับสูง ที่ใช้เพื่อสร้าง แบ่ง และอธิบายความรู้ด้านวิศวกรรมซอฟต์แวร์ แต่ละด้านจะถูกเรียบแบบย่อด้วยตัวอักษรเช่น PRF คือ professional practices • แต่ละด้านจะถูกแตกออกเป็นส่วนเล็กๆที่เรียกว่าหน่วย (units) ต่างๆ และเพิ่มด้วยตัวอักษรสองหรือสามตัวเพื่อบอกถึงชนิดของหน่วยการเรียนนั้นๆ PRF.com คือหน่วยของทักษะด้านการการสื่อสาร (communication skills.)
Core Material • จะกล่าวถึงความสำคัญที่ชัดเจน SEEK และ ขั้นตอนการดำเนินให้เป็นไปตามเป้าหมายของคณะกรรมการ ในการให้คำรับรองหลักสูตรวิศวกรรมซอฟต์แวร์ระดับปริญญาตรี • วิชาหลักไม่ใช่หลักสูตรที่สมบูรณ์ เนื่องจากวิชาหลักกำหนดได้ถูกกำหนดไว้เป็นอย่างน้อย ทุกๆโปรแกรมระดับปริญญาตรีจะต้องรวมหน่วยวิชาอื่นทั้งภายในและภายนอกองค์ความรู้วิศวกรรมซอฟต์แวร์ • หน่วยวิชาหลักไม่จำเป็นต้องถูกจำกัดแค่เซ็ตของคอร์สที่ได้กำหนดไว้ก่อนหน้าแล้วในหลักสูตรปริญญาตรี มีหน่วยวิชาหลักบางตัวซึ่งต้องถูกควบเข้ากับวิชาอื่นๆหลังจากที่ผู้เรียนได้มีพื้นฐานในฟิลด์ที่สำคัญไว้แล้ว เช่น ชื่อวิชาในส่วนของการจัดการโครงงาน การเฟ้นหาความต้องการ และ abstract high-level modeling เหล่านี้ต้องการความรู้ซึ่งผู้เรียนระดับต่ำกว่านี้ไม่เข้าใจ คล้ายกันนี้คอร์สแนะนำจะต้องรวมหน่วยวิชาเลือกไว้ 1 วิชาตลอดหลักสูตรที่สำคัญ
Unit of Time • SEEK ต้องกำหนดหน่วยการวัดซึ่งสร้างมาตรฐานในการวัด เพื่อตัดสินผลรวมของเวลาที่ต้องใช้เพื่อให้คลอบคลุมหน่วยการเรียนพิเศษ การเลือกหน่วยการวัดนี้จะยากเนื่องจากไม่มีมาตรฐานการวัดที่เป็นที่ยอมรับระดับโลก เพื่อให้ตรงกับรายงานหลักสูตรที่มีมาก่อนแล้ว โดยเฉพาะสาขาวิชาด้านคอมพิวเตอร์ที่สัมพันธ์กัน ดังนั้นจะกำหนดเวลาเป็น ชั่วโมง • ชั่วโมงการสอนที่ได้กำหนดไว้นั้นไม่ได้รวมถึงเวลาที่นอกเหนือคลาสสอน • ชั่วโมงที่ได้ลงไว้ในหลักสูตรสำหรับหนึ่งหน่วยการเรียนจะแทนระดับต่ำสุดที่จะต้องมี การวัดเวลาที่ได้กำหนดไว้แต่ละหน่วยควรได้อธิบายให้เป็นเวลารวมต่ำสุดที่จำเป็นที่จะสามารถให้ผู้เรียนสร้างการเรียนรู้ในหน่วยการเรียนนั้นๆ
Relationship of the SEEK to the Curriculum • SEEK ไม่ได้เป็นการแทนหลักสูตร แต่ให้รากฐานสำหรับการออกแบบ การนำไปใช้และการส่งมอบของหน่วยการศึกษาซึ่งสร้างหลักสูตรวิศวกรรมซอฟต์แวร์ บทอื่นๆของ SE2004 ให้แนวทางและการรองรับในการใช้ SEEK เพื่อพัฒนาหลักสูตร ที่สำคัญคือองค์รวมและขอบเขตของความรู้และหน่วยความรู้ไม่ควรถูกลงความเห็นให้เป็นนัยถึงวิธีที่ความรู้นั้นควรถูกรวบรวมไว้ในหน่วยของการศึกษาหรือกิจกรรม
Selection of Knowledge Areas • SWEBOK Guide จะให้จุดเริ่มต้นสำหรับการหาขอบเขตความรู้ เนื่องจากทั้งผู้ที่เกี่ยวข้องในด้าน SE2004 และ SEEK ต้องทราบเป็นอย่างดีเกี่ยวกับความสำคัญของระเบียบการศึกษาของวิศวกรรมซอฟต์แวร์ ขอบเขตที่ถูกเลือกเพื่อแทนในทางทฤษฏีและพื้นฐานด้านวิทยาศาสตร์ของการพัฒนาชิ้นงานซอฟต์แวร์ ซึ่งจะถูกเตรียมพร้อมเพื่อการปรับปรุงเปลี่ยนแปลงเสมอ ไม่ว่าเป้าหมายดั้งเดิมตามกฎระเบียบต่างๆที่ได้มีไว้จะสำเร็จหรือไม่ก็ตาม ผลลัพธ์ของส่วนของความรู้ต่างๆนั้นจะต้องถูกนำมาทำให้สมดุล อีกครั้งเพื่อรองรับเป้าหมายต่างๆ ผลลัพธ์นั้นต้องยืนยันได้ถึงหลักการพื้นฐาน ความรู้ และการปฏิบัติซึ่งอยู่ภายใต้กฎระเบียบวิศวกรรมซอฟต์แวร์ในรูปแบบที่เหมาะสมสำหรับการศึกษาระดับปริญญาตรี
SE Education Knowledge Areas ในส่วนนี้จะกล่าวถึง ขอบเขตความรู้ 10 ประการในการสร้าง SEEK ประกอบด้วย • Computing Essentials (CMP), • Mathematical & Engineering Fundamentals (FND), • Professional Practice (PRF), • Software Modeling & Analysis (MAA), • Software Design (DES), Software Verification & Validation (VAV), • Software Evolution (EVL), • Software Process (PRO), • Software Quality (QUA), • Software Management (MGT)
ซึ่งขอบเขตความรู้เหล่านี้จะไม่ร่วมเนื้อหาเกี่ยวกับ continuous mathematics หรือ natural sciences แต่ละความรู้นั้นจะมีการอธิบายสั้นๆและตารางซึ่งจะจำแนกหน่วยและชื่อของแต่ละขอบเขต สำหรับแต่ละหน่วยความรู้นั้นจะใช้เป็นชั่วโมง แต่ละชื่อวิชานั้นจะใช้ระดับการแบ่งหมวดหมู่ของ Bloom (เป็นการแสดงถึงความสามารถที่ผู้จบการศึกษาจะต้องได้) และจะต้องกำหนดความสัมพันธ์ของขื่อวิชาด้วย (แสดงถึงความสำคัญหรือไม่ จำเป็นหรือไม่ หรือ เป็นแค่ทางเลือกเท่านั้น) ตารางที่ 1 จะสรุปขอบเขตความรู้ของ SEEK พร้อมบอกถึงเซ็ตของหน่วยความรู้และรายการของชั่วโมงต่ำสุดของการเรียนที่เป็นที่ยอมรับของแต่ละหน่วยและขอบเขตวิชา
Bloom's attributes จะใช้อักษร k, c, หรือ a แทนความหมายต่างๆดังนี้ • Knowledge (k) – การจดจำระลึกถึงวิชาที่ได้เรียนไปก่อน เช่นวันที่ เหตุการณ์ สถานที่ ความรู้ที่เป็นแนวคิดหลัก วิชา สาระสำคัญของเนื้อหารายวิชา เป็นต้น • Comprehension (c) – ความเข้าใจในข้อมูลและความหมายของวิชาที่ได้นำเสนอ เช่น สามารถแปลความรู้นั้นเป็นคำอธิบายได้ แปลได้ตรง เปรียบเทียบ เทียบเคียง จัดกลุ่มได้ เป็นต้น • Application (a) – ความสามารถในการใช้วิชาที่ได้เรียนไปใช้ในการแก้ปัญหาสถานการณ์ หรืองานต่างๆได้
ความสัมพันธ์ของชื่อวิชาที่เป็นส่วนหลักมีดังต่อไปนี้ความสัมพันธ์ของชื่อวิชาที่เป็นส่วนหลักมีดังต่อไปนี้ • Essential (E) - วิชานี้เป็นวิชาหลัก • Desirable (D) – วิชานี้ไม่ใช่วิชาหลักแต่ควรรวมให้เป็นโปรแกรมพิเศษที่เป็นเนื้อหาหลักหรือวิชาหลักสำคัญที่สามารถเลือกได้ • Optional (O) - วิชานี้ควรเป็นวิชาเลือกเท่านั้น
Computing Essentials Description • Computing essentials ได้รวมพื้นฐานด้าน computer science ซึ่งรองรับการออกแบบและโครงสร้างของซอฟต์แวร์ และยังรวมถึงความรู้ด้านการแปลงการออกแบบให้เป็นการสร้างโปรแกรมให้สามารถทำงานได้ เครื่องมือที่ใช้ในระหว่างกระบวนการสร้าง และวิธีการสร้างซอฟต์แวร์แบบ formal software ดังภาพตัวอย่างนี้
Mathematical and Engineering Fundamentals • คณิตศาสตร์และพื้นฐานวิศวกรรมของวิศวกรรมซอฟต์แวร์เป็นการให้ทฤษฎีและสนับหนุนทางวิทยาศาสตร์เพื่อการสร้างซอฟต์แวร์ที่ได้ออกแบบไว้ หัวใจสำคัญคือการออกแบบในเชิงวิศวกรรม กระบวนการตัดสินใจในการคำนวณ คณิตศาสตร์ และวิทยาศาสตร์เชิงวิศวกรรมจะถูกประยุกต์ใช้เพื่อการจัดการทรัพยากรที่มีอยู่ให้เกิดประสิทธิผลและเป็นไปตามเป้าหมาย
Professional Practice • การปฏิบัติเชิงวิชาชีพ (Professional Practice) เกี่ยวข้องกับความรู้ ทักษะ และความประพฤติซึ่งนักวิศวกรรมซอฟต์แวร์จะต้องมีเพื่อปฏิบัติงานด้านวิศวกรรมซอฟต์แวร์เชิงวิชาชีพ ความรับผิดชอบ และจริยธรรม ซึ่งรวมถึงการสื่อสารทางเทคนิค การทำงานเป็นกลุ่มและความรับผิดชอบทางสังคม
Software Modeling and Analysis • การออกแบบจำลองและการวิเคราะห์เป็นส่วนสำคัญหลักของระเบียบวิศวกรรมเนื่องจากเป็นสาระสำคัญในการสร้างเอกสารและการประเมินการตัดสินใจในการออกแบบและประเมินทางเลือกต่างๆ เป็นวิชาที่นำมาประยุกต์ในการออกแบบ การระบุรายละเอียดและความถูกต้องของ requirement ซึ่ง requirements จะแทนถึงความต้องการที่แท้จริงของ users, customers และ stakeholders อื่นๆที่มีผลต่อระบบที่สร้าง ซึ่งโครงสร้างของ requirements นั้นจะรวมการวิเคราะห์ความเป็นไปได้ของระบบที่ได้รับการออกแบบไว้ การวิเคราะห์และการล้วงนำเอาความต้องการของ stakeholders ได้ การสร้างการอธิบายอย่างละเอียดถึงสิ่งที่ระบบควรทำหรือไม่ควรตลอดการทำงานและการสร้าง และการทวนสอบการอธิบายเหล่านี้หรือการระบุรายละเอียดจาก stakeholders.