หนังสือระบบสมองกลฝังตัวที่นักพัฒนาญี่ปุ่นอ่าน

ผศ.ดร.ศุภชัย วรพจน์พิศุทธิ์
ภาควิชาวิศวกรรมไฟฟ้าและคอมพิวเตอร์
มหาวิทยาลัยธรรมศาสตร์
 
เทคโนโลยีระบบสมองกลฝังตัวคืออะไร
Embedded Systems Technology หรือ (ธนารักษ์ ธีระมั่นคง, 2549) คือการประยุกต์ไมโครโปรเซสเซอร์ร่วมกับซอฟต์แวร์ฝังตัว (Embedded Software) ในการสร้างหน่วยควบคุมของอุปกรณ์/เครื่องใช้ไฟฟ้า  ตัวอย่างของผลิตภัณฑ์ที่ใช้เทคโนโลยีด้านนี้และมักพบอยู่ในชีวิตประจำวัน ได้แก่ กล้องดิจิตอล โทรทัศน์แอลซีดี โทรศัพท์มือถือ และเครื่องดูดฝุ่น ซึ่งต่างเป็นอุปกรณ์หรือเครื่องใช้ที่อาศัยวงจรอิเล็กทรอนิกส์ในการควบคุมการทำงาน   การปรับปรุงให้ผลิตภัณฑ์เหล่านี้สามารถตอบสนองต่อความต้องการของผู้บริโภคในยุคนี้ เช่น มีขนาดเล็ก เบา หลากหลายฟังก์ชัน ประหยัดพลังงาน และราคาถูก ก็ต้องพึ่งพาเทคโนโลยีระบบสมองกลฝังตัวในการสร้างหน่วยควบคุมที่มีความสามารถเพิ่มขึ้น   เทคโนโลยีด้านนี้จึงมีความสำคัญอย่างมากต่อภาคอุตสาหกรรมการผลิต โดยภาคอุตสาหกรรมที่ถูกจัดเป็นยุทธศาสตร์สำคัญของประเทศไทย ได้แก่ อุตสาหกรรมรถยนต์ อุตสาหกรรมฮาร์ดดิสค์ และอุตสาหกรรมเครื่องใช้ไฟฟ้า ต่างก็มีการประยุกต์ใช้เทคโนโลยีระบบสมองกลฝังตัวในผลิตภัณฑ์อย่างกว้างขวาง
 
รูปที่ 1 ตัวอย่างของผลิตภัณฑ์ที่ใช้เทคโนโลยีระบบสมองกลฝังตัวจากเว็บไซต์ kumikomi.net
 
คุณลักษณะเด่นของเทคโนโลยีระบบสมองกลฝังตัวที่ผู้ผลิตชั้นนำต่างก็ตระหนักดีคือ การเพิ่มความฉลาดในส่วนซอฟต์แวร์จะทำให้เกิดมูลค่าเพิ่มของผลิตภัณฑ์ได้อย่างมาก ในขณะที่ต้นทุนของฮาร์ดแวร์อาจไม่ได้ปรับเปลี่ยนมากนัก จึงเป็นแนวทางที่แต่ละผู้ผลิตได้ดำเนินการมาตลอดในช่วงหลายปีที่ผ่านมา   การบรรยายรายละเอียดของผลิตภัณฑ์ในยุคนี้จึงได้มีสัดส่วนของคุณลักษณะทางซอฟต์แวร์ (Software Features) ที่มากขึ้นเมื่อเปรียบเทียบกับข้อกำหนดทางฮาร์ดแวร์ (Hardware Specification) โดยเฉพาะกลุ่มผลิตภัณฑ์ที่ผู้บริโภคคาดหวังความสะดวกสบายในการใช้งาน   กล้องดิจิตอลเป็นตัวอย่างที่ชัดเจนของผลิตภัณฑ์ที่ผู้ผลิตได้เปลี่ยนแปลงจุดขายจากความสามารถของฮาร์ดแวร์ เช่น ความละเอียดของเซ็นเซอร์ภาพและความจุของแบตเตอรี ไปสู่ความสามารถในเชิงการประมวลผล เช่น การตรวจจับหน้าและการปรับแต่งภาพ
 
หัวใจหลักของเทคโนโลยีระบบสมองกลฝังตัวคือ ซอฟต์แวร์ฝังตัวหรือที่มักเรียกว่า “เฟิร์มแวร์” (Firmware) ซึ่งเป็นองค์ประกอบที่ควบคุมการทำงานของทั้งระบบ   เฟิร์มแวร์จะมีความแตกต่างจากซอฟต์แวร์ของระบบคอมพิวเตอร์ขององค์กรหรือส่วนบุคคลสรุปได้เป็น 3 ประเด็นคือ  
1.       เฟิร์มแวร์ถูกออกแบบให้ทำงานจำเพาะหน้าที่ โดยปรับเปลี่ยนได้ยากหรือไม่ได้เลย ในขณะที่ตัวอุปกรณ์อาจถูกใช้งานตลอด 24 ชั่วโมงเป็นเวลาต่อเนื่องหลายปี ทำให้เฟิร์มแวร์ต้องมีความน่าเชื่อถือสูงมาก
2.       เฟิร์มแวร์จะทำหน้าที่ควบคุมการเชื่อมต่อกับฮาร์ดแวร์ต่างๆ เช่น เซ็นเซอร์วัดอุณหภูมิ มอเตอร์ ทำให้นักพัฒนาต้องมีความเข้าใจเกี่ยวกับคุณลักษณะและหลักการทำงานขององค์ประกอบเหล่านั้น ซึ่งเป็นกรอบความรู้ที่กว้างและคลอบคลุมไปยังสาขาต่างๆนอกเหนือจากคอมพิวเตอร์
3.       การพัฒนาเฟิร์มแวร์มีข้อจำกัดมากเมื่อเทียบกับการพัฒนาซอฟต์แวร์ทั่วไป ทั้งในแง่ของทรัพยากรของหน่วยประมวลผลที่จำกัด เช่น ความเร็วในการประมวลผล ขนาดหน่วยความจำ และความยุ่งยากในขั้นตอนการพัฒนาแบบข้ามแพลตฟอร์ม (Cross-platform Development) ที่ต้องสั่งการแบบรีโมทไปยังบอร์ดประมวลผลในขณะพัฒนาซอฟต์แวร์
การทำงานในฐานะนักพัฒนาซอฟต์แวร์ฝังตัวจึงต้องการความรู้และทักษะที่นอกเหนือจากองค์ความรู้ทางด้านคอมพิวเตอร์ (Joint Task Force for Computing Curricula, 2005) ซึ่งได้เปิดสอนเป็นหลักสูตรต่างๆในสถาบันการศึกษา   การศึกษาในระดับปริญญาตรีหรือประกาศนียบัตรวิชาชีพจึงไม่ใช่แนวทางหลักของการพัฒนาบุคลากรในสายอาชีพนี้ ส่งผลกระทบให้จำนวนบุคลากรที่เหมาะสมกับตำแหน่งงานนี้มีจำกัด รวมทั้งมีช่วงเวลาในการฝึกอบรมยาวหรือเรียนรู้ที่นานกว่าตำแหน่งงานอื่นๆ
 
เนื้อความของบทความต่อไปนี้จะเกี่ยวข้องกับความรู้และทักษะที่จำเป็นสำหรับบุคลากรในสายอาชีพนักพัฒนาซอฟต์แวร์ฝังตัว   ผู้เขียนจึงได้อ้างอิงหมวดหมู่ตามมาตรฐานทักษะทางด้านเทคโนโลยีระบบสมองกลฝังตัว (Embedded Technology Skills Standard) หรือ ETSS (SEC, 2552) ของหน่วยงาน Software Engineering Center (SEC)[1] ภายใต้องค์กร Information-technology Promotion Agency (IPA) ซึ่งแบ่งพื้นความรู้ที่จำเป็นออกเป็น 5 กลุ่มได้แก่
1.       กลุ่มเทคโนโลยีที่เกี่ยวข้อง คลอบคลุมองค์ความรู้และทักษะของเทคโนโลยีต่างๆที่ใช้ในการพัฒนาซอฟต์แวร์ฝังตัว เช่น แพลตฟอร์มฮาร์ดแวร์/ซอฟต์แวร์ การสื่อสารข้อมูล เทคโนโลยีมัลติมีเดีย ฯลฯ
2.       กลุ่มทักษะในการพัฒนา คลอบคลุมองค์ความรู้และทักษะที่เป็นพื้นฐานของกิจกรรมต่างๆในกระบวนการพัฒนาระบบสมองกลฝังตัว เช่น การออกแบบระบบ การออกแบบซอฟต์แวร์ ฯลฯ
3.       กลุ่มความรู้และทักษะในการบริหารจัดการ แบ่งออกเป็น 2 หมวดย่อย ได้แก่ การบริหารจัดการโครงการ และการบริหารกระบวนการซอฟต์แวร์
4.       กลุ่มทักษะส่วนบุคคล เป็นทักษะพื้นฐานของการทำงานในองค์กร เช่น การสื่อสาร การแก้ปัญหา ฯลฯ
5.       กลุ่มทักษะในด้านธุรกิจ เป็นความรู้และทักษะในการดำเนินธุรกิจ เช่น หลักการตลาด หลักการบัญชี ฯลฯ
ตัวเอกสาร ETSS เองเป็นเพียงกรอบในการจำแนกกลุ่มความรู้/ทักษะที่จำเป็นสำหรับหน้าที่ความรับผิดชอบของนักพัฒนา   บางหัวข้อที่จำเป็นสำหรับบางอุตสาหกรรม เช่น ความรู้เกี่ยวกับแบตเตอรี จึงไม่ได้ถูกระบุอยู่ในตัวเอกสาร แต่บุคลากรที่รับผิดชอบการพัฒนาซอฟต์แวร์ฝังตัวสำหรับอุปกรณ์ในระบบพลังงานทางเลือกก็สามารถที่จะระบุเพิ่มในกลุ่มเทคโนโลยีที่เกี่ยวข้องได้
 
รูปที่ 2 ความรู้และทักษะที่จำเป็นสำหรับการพัฒนาระบบสมองกลฝังตัวในมุมมอง ETSS
 
ทรัพยากรบุคคลในอุตสาหกรรมซอฟต์แวร์ฝังตัว
ความต้องการบุคลากรมาทำหน้าที่พัฒนาซอฟต์แวร์ฝังตัวให้กับผลิตภัณฑ์ได้เพิ่มขึ้นอย่างต่อเนื่องตามสภาพการแข่งขันในตลาด ส่งผลกระทบให้เกิดความขาดแคลนในตลาดงานของนักพัฒนาซอฟต์แวร์ฝังตัวของประเทศชั้นนำต่างๆ เช่น ภาคอุตสาหกรรมซอฟต์แวร์ฝังตัวของประเทศญี่ปุ่นยังขาดแคลนนักพัฒนาอีกถึงเกือบ 70,000 ตำแหน่งในปี 2552 (IPA, 2552) ทำให้เกิดการขยายการลงทุนไปยังประเทศต่างๆ เช่น จีน อินเดีย ไทย และเวียดนาม ที่คาดว่ายังมีทรัพยากรบุคคลทางด้านนี้อยู่
 
รูปที่ 3 ผลการสำรวจจำนวนนักพัฒนาซอฟต์แวร์ฝังตัวของประเทศญี่ปุ่น
 
เมื่อพิจารณาถึงการลงทุนในภาคอุตสาหกรรมต่างๆของประเทศไทย เช่น ยานยนต์ ไฟฟ้าและอิเล็กทรอนิกส์ เราอาจกล่าวได้ว่าประเทศญี่ปุ่นมีแนวโน้มสูงในการขยายการลงทุนมายังอุตสาหกรรมซอฟต์แวร์ฝังตัว เนื่องจากจะได้รับประโยชน์จากการที่หน่วยวิจัยและพัฒนาและสายการผลิตอยู่ภายในบริเวณเดียวกัน   ตัวอย่างของการลงทุนในรูปแบบการพัฒนานอกประเทศ (Offshore Development) ของกลุ่มบริษัทชั้นนำ เช่น โตโยตาที่ได้ก่อตั้งหน่วยวิจัยและพัฒนาซอฟต์แวร์ฝังตัวในประเทศไทย   อย่างไรก็ตาม ภาคอุตสาหกรรมโดยรวมของประเทศญี่ปุ่นก็ยังไม่ได้ส่งมอบงานหรือเข้ามาลงทุนในประเทศไทย   สาเหตุหลักประการหนึ่งคือ กระบวนการพัฒนาซอฟต์แวร์แบบญี่ปุ่นต้องการความน่าเชื่อถืออย่างสูงในทุกขั้นตอน จึงต้องการความมั่นใจในแง่ของคุณภาพของวิศวกร/นักพัฒนาก่อนที่จะส่งมอบงานมาให้ดำเนินการ   ดังนั้น คำถามที่น่าสนใจในมุมมองของผู้เขียนคือ “นักพัฒนาซอฟต์แวร์ฝังตัวของประเทศญี่ปุ่นมีทักษะและความเชี่ยวชาญในระดับใด” คำตอบที่ได้ก็อาจนำมาเป็นข้อมูลเพื่อกำหนดแนวทางของการพัฒนาบุคลากรของประเทศไทยต่อไป  
 
แหล่งข้อมูลอ้างอิงหนึ่งที่อาจใช้พิจารณาคำตอบของปัญหาความเชี่ยวชาญของนักพัฒนาญี่ปุ่นได้คือ รายงานผลการสำรวจอุตสาหกรรมซอฟต์แวร์ฝังตัว ซึ่งเป็นการสรุปผลการสำรวจประจำปีโดยองค์กร IPA  ข้อมูลในรายงานฉบับนี้เป็นข้อมูลเชิงปริมาณที่รวบรวมจากแบบสอบถามที่แจกจ่ายไปยังฝ่ายธุรกิจ ผู้จัดการโครงการ และนักพัฒนาในภาคอุตสาหกรรมต่างๆที่เกี่ยวข้อง
 
รูปที่ 4 ระดับของความเชี่ยวชาญในปัจจุบันของบุคลากรในอุตสาหกรรมซอฟต์แวร์ฝังตัว
 
                รูปที่ 4 แสดงถึงผลการสำรวจในปี 2552 ในหัวข้อระดับของความเชี่ยวชาญในปัจจุบัน   ทักษะในการพัฒนาซอฟต์แวร์ฝังตัวจะเพิ่มขึ้นจากประสบการณ์ในหน้าที่การงาน   หากเป็นกลุ่มทักษะที่จำเป็นสำหรับตำแหน่งงานก็น่าจะมีบุคลากรที่เชี่ยวชาญในทักษะกลุ่มนั้นมาก   เมื่อเราพิจารณากราฟในกลุ่มความรู้ของเทคโนโลยีที่เกี่ยวข้องก็จะพบว่าการประมวลผลข้อมูล (Information Processing) ร้อยละ 27.9 การวัดคุม (Control & Measurement) ร้อยละ 25.0 และส่วนติดต่อผู้ใช้ (User Interface) ร้อยละ 24.9 มีสัดส่วนของจำนวนบุคลากรในความเชี่ยวชาญระดับ 3 มากกว่าทักษะอื่นๆ   ในขณะที่กลุ่มทักษะทางการพัฒนาจะเอียงไปที่การสร้างซอฟต์แวร์ (Software Construction) ร้อยละ 50.5 การประกอบซอฟต์แวร์ (Software Integration) ร้อยละ 50.2 และการออกแบบซอฟต์แวร์ (Software Design) ร้อยละ 48.2   ดังนั้นเราจึงอนุมานได้ว่าหน้าที่ความรับผิดชอบของตำแหน่งงานนักพัฒนาซอฟต์แวร์ฝังตัวของประเทศญี่ปุ่นส่วนใหญ่จะเกี่ยวข้องกับองค์ความรู้/ทักษะทั้ง 6 ด้านนี้  
 
ในอีกมุมมองหนึ่ง การเปรียบเทียบสัดส่วนของกลุ่มทักษะที่มีจำนวนผู้ตอบโดยรวมมากที่สุดก็จะพบว่ากลุ่มทักษะส่วนบุคคล ได้แก่ การสื่อสาร (Communication) การต่อรอง (Negotiation) ความเป็นผู้นำ (Leadership) และการแก้ปัญหา (Problem Solving) มีจำนวนผู้ตอบในทุกระดับความเชี่ยวชาญสูงถึงร้อยละ 86.6 โดยเฉลี่ย แสดงถึงการให้ความสำคัญต่อทักษะที่จำเป็นสำหรับการทำงานเป็นทีม ซึ่งเป็นแนวทางของภาคอุตสาหกรรมของประเทศญี่ปุ่นที่ได้รับรู้ทั่วไป
รูปที่ 5 ความคิดเห็นเกี่ยวกับกลุ่มความรู้และทักษะ
               
                รูปที่ 5 แสดงถึงผลการสำรวจความคิดเห็นของนักพัฒนาซอฟต์แวร์ฝังตัวว่าความรู้และทักษะในหัวข้อใดที่มีอยู่ก่อนเริ่มทำงาน หัวข้อใดที่คิดว่าควรได้เรียนจากสถาบันการศึกษา และหัวข้อใดที่คิดว่าจะศึกษาต่อไปในอนาคต  ข้อมูลของความคิดเห็นทั้งสามส่วนนี้สามารถใช้วิเคราะห์ถึงสถานะของหลักสูตรการศึกษา จุดอ่อนของหลักสูตร และสิ่งที่จำเป็นสำหรับการเติบโตในหน้าที่การงาน   ผู้เขียนได้วิเคราะห์ข้อมูลความคิดเห็นนี้ด้วยการพิจารณาใน 2 ประเด็น ได้แก่
1.       การเพิ่มขึ้นของสัดส่วนความคิดเห็นที่แสดงถึงความจำเป็นของหัวข้อนั้นในการได้เรียนรู้อย่างต่อเนื่อง ซึ่งเป็นข้อมูลสำคัญในการกำหนดแนวทางการพัฒนาทรัพยากรบุคคล
2.       สัดส่วนความคิดเห็นของความรู้ก่อนเริ่มทำงานที่เป็นตัวบ่งชี้ถึงสถานะของหลักสูตรการศึกษาว่ามีความโดดเด่นในหัวข้อใด และสอดคล้องกับการทำงานในตำแหน่งนักพัฒนาซอฟต์แวร์ฝังตัวหรือไม่
ผู้เขียนได้แยกพิจารณาทั้ง 2 ประเด็นออกเป็น 3 กลุ่ม ได้แก่ เทคโนโลยีที่เกี่ยวข้อง ทักษะการพัฒนา และความรู้และทักษะเพื่อการทำงานในองค์กร
 
พื้นความรู้ของเทคโนโลยีที่เกี่ยวข้อง
การพิจารณากลุ่มความรู้ทางด้านเทคโนโลยีพบว่าการสื่อสารข้อมูล (Communication) และแพลตฟอร์มฮาร์ดแวร์/ซอฟต์แวร์ (Hardware/Software Platform) แสดงว่าแนวโน้มของการพัฒนาซอฟต์แวร์สำหรับผลิตภัณฑ์ยังคงต้องการความเข้าใจในแง่องค์ประกอบของระบบและการสื่อสารข้อมูล ซึ่งเป็นสิ่งที่สอดคล้องกับความก้าวหน้าของเทคโนโลยีวงจรรวมและซอฟต์แวร์ และแนวโน้มของตลาดที่ต้องการอุปกรณ์ที่สามารถสื่อสารข้อมูลได้ทั้งระหว่างอุปกรณ์เองหรืออินเตอร์เน็ต   หัวข้อสามลำดับแรกที่มีจำนวนผู้ตอบมากที่สุดสำหรับความรู้/ทักษะที่มีก่อนทำงานประกอบด้วยการประมวลผลข้อมูล (ร้อยละ 56.8) หลักการวัดคุม (ร้อยละ 41.6) และการสื่อสารข้อมูล (ร้อยละ 34.3) แสดงว่าหลักสูตรการศึกษาทางด้านคอมพิวเตอร์และไฟฟ้า/อิเล็กทรอนิกส์น่าจะเป็นแกนหลักที่ป้อนกำลังคนเข้าสู่ภาคอุตสาหกรรมของประเทศญี่ปุ่น
 
ทักษะในการพัฒนา
การพิจารณากลุ่มทักษะในการพัฒนาพบว่าการสร้างซอฟต์แวร์ที่คลอบคลุมทั้งการเขียนโค้ดและการทดสอบยังคงเป็นพื้นความรู้หลักที่มีสอนอยู่ในหลักสูตรการศึกษา ดังแสดงในสัดส่วนของจำนวนผู้ตอบถึงร้อยละ 51.6 ที่มากกว่าจำนวนผู้ตอบในหัวข้อการออกแบบซอฟต์แวร์ (ร้อยละ 37.8) และการประกอบซอฟต์แวร์ (ร้อยละ 37.8) อย่างมีนัย   อย่างไรก็ตาม นักพัฒนากลับแสดงความคิดเห็นว่าหัวข้อทั้งสามนี้ที่มีความโดดเด่นในแง่ระดับความเชี่ยวชาญในปัจจุบัน ไม่ได้เป็นกลุ่มความรู้/ทักษะที่มีความจำเป็นอย่างเร่งด่วน พิจารณาได้จากจำนวนของความคิดเห็นในอีก 2 ส่วนไม่ได้มากกว่าหัวข้ออื่น   หัวข้อที่นักพัฒนาส่วนใหญ่คิดว่าต้องมีการปรับปรุงอย่างเร่งด่วนกลับเป็นกลุ่มความรู้/ทักษะในเฟสการพัฒนาระดับต้นน้ำ ได้แก่ การวิเคราะห์ความต้องการของระบบ (System Requirement Analysis) การออกแบบระบบ (System Design) และการวิเคราะห์ความต้องการของซอฟต์แวร์ (Software Requirement Analysis) แสดงถึงแนวโน้มของธุรกิจการพัฒนาซอฟต์แวร์ฝังตัวของประเทศญี่ปุ่นที่ต้องการยกระดับไปสู่เฟสการดำเนินการในระดับภาพรวมที่มีมูลค่าเพิ่มมากกว่าเฟสอื่นๆ
 
ความรู้และทักษะเพื่อการทำงานในองค์กร
การพิจารณากลุ่มหัวข้อของการบริหารจัดการ ทักษะส่วนบุคคล และทักษะด้านธุรกิจ ซึ่งต่างก็เป็นความรู้/ทักษะที่มักถูกละเลยจากหลักสูตรการศึกษาทางวิศวกรรมศาสตร์พบว่า แนวโน้มของความคิดเห็นจะมีความคล้ายคลึงกันกล่าวคือ ควรที่จะพัฒนาอย่างต่อเนื่องหลังจากทำงานแล้ว พิจารณาได้จากสัดส่วนของคำตอบที่ต้องการศึกษาเองในอนาคตจะมากกว่าอีก 2 ส่วนอย่างมีนัย   ประเด็นที่น่าสนใจคือ สัดส่วนของจำนวนคำตอบในกลุ่มของทักษะส่วนบุคคลจะมีสัดส่วนที่สูงมากเมื่อเทียบกับกลุ่มอื่นๆ โดยเฉพาะจำนวนคำตอบในส่วน “มีทักษะอยู่ก่อนเริ่มทำงาน” ที่ขัดแย้งกับสถานการณ์ของหลักสูตรการศึกษาทางด้านวิศวกรรมศาสตร์ของประเทศไทย ซึ่งบุคลากรในภาคอุตสาหกรรมของประเทศไทยมักออกมาระบุว่าวิศวกรที่จบการศึกษามีข้อจำกัดในแง่การสื่อสารและการแก้ปัญหาเมื่อเข้าทำงาน
 
ประสบการณ์ของผู้เขียนที่จบการศึกษามาจากประเทศญี่ปุ่นและการได้พูดคุยกับนักพัฒนาญี่ปุ่นในอุตสาหกรรมซอฟต์แวร์ฝังตัว ทำให้ทราบว่าภาคอุตสาหกรรมซอฟต์แวร์ฝังตัวของประเทศญี่ปุ่นยังคงพึ่งพาแหล่งความรู้ภายในองค์กร ดังที่ผู้เขียนมักจะได้ยินแนวคิดจากนักพัฒนาชาวญี่ปุ่นว่า “เราไม่สนใจว่าคุณจะเรียนอะไรมา แต่เราจะฝึกฝนคุณให้ทำงานเพื่อเราได้”   แนวคิดนี้ถูกยืนยันได้จากการเปรียบเทียบสัดส่วนระหว่างจำนวนคำตอบของการเรียนรู้ด้วยตนเองและคำตอบที่ต้องการให้เพิ่มความรู้ในหลักสูตรการศึกษา โดยพบว่าสัดส่วนโดยเฉลี่ยเมื่อคิดแยกตามกลุ่มเท่ากับ 1.41 เท่า แสดงว่านักพัฒนาได้ให้ความสำคัญต่อการเรียนรู้ในสถานที่ทำงานมากกว่าการเรียนรู้ในสถาบันการศึกษา  
 
สัดส่วนของจำนวนคำตอบของการเพิ่มเติมความรู้ในหลักสูตรและการมีความรู้ก่อนเริ่มทำงานเท่ากับ 1.06 เท่า เป็นตัวบ่งชี้ว่านักพัฒนายังคงต้องการให้มีการปรับปรุงหลักสูตรการศึกษาอยู่   กลุ่มของความรู้/ทักษะที่นักพัฒนาต้องการให้อยู่ในหลักสูตรมากที่สุดคือ ทักษะในด้านการบริหารจัดการด้วยสัดส่วนโดยเฉลี่ยเท่ากับ 1.70 เท่า ในขณะที่กลุ่มของความรู้/ทักษะทางด้านเทคนิค ได้แก่ เทคโนโลยีที่เกี่ยวข้องและทักษะการพัฒนา กลับมีสัดส่วนของคำตอบคือ 1.05 เท่าและ 1.30 เท่า จึงอาจตีความได้ว่ามีความจำเป็นในปรับปรุงเนื้อหาของหลักสูตรในระดับหนึ่งแต่ยังไม่เร่งด่วน   ทั้งนี้หัวข้อของความรู้/ทักษะที่ความคิดเห็นของนักพัฒนาสะท้อนว่าควรมีการเพิ่มเติมในหลักสูตรการศึกษามากที่สุด 5 ลำดับแรก ได้แก่ การบริหารคุณภาพ (Quality Management) การบริหารองค์รวม (Integration Management) การวิเคราะห์ความต้องการของระบบ (System Requirement Analysis) การบริหารความเสี่ยง (Risk Management) และการบริหารจัดการความรู้ (Knowledge Management) ตามลำดับ
 
หนังสือการพัฒนาระบบสมองกลฝังตัว
                การวิเคราะห์ข้อมูลจากรายงานผลการสำรวจอุตสาหกรรมซอฟต์แวร์ฝังตัวขององค์กร IPA ทำให้ทราบถึงภาพรวมของทักษะและความเชี่ยวชาญของนักพัฒนาญี่ปุ่น ซึ่งต้องการยกระดับไปสู่หน้าที่ความรับผิดชอบในเฟสต้นน้ำของกระบวนการพัฒนา ได้แก่ การวิเคราะห์ความต้องการและการออกแบบ   ความพยายามในการเปลี่ยนตำแหน่งงานและปัญหาการขาดแคลนนักพัฒนานี้ ทำให้มีความเป็นไปได้ที่จะเกิดการส่งมอบงานต่างๆในเฟสการสร้างและทดสอบซอฟต์แวร์ไปสู่อุตสาหกรรมซอฟต์แวร์ฝังตัวนอกประเทศญี่ปุ่น   อย่างไรก็ตาม ข้อมูลของรายงานฉบับนี้ยังไม่ได้ให้ภาพที่ชัดเจนของทักษะที่จำเป็นเพื่อการรับมอบงานพัฒนาซอฟต์แวร์ฝังตัว เนื่องจากไม่มีรายละเอียดของแนวคิด หลักการ และเทคนิคที่จะเป็นแนวทางในการเรียนรู้ต่อไป
 
บทความนี้จึงได้นำเสนอการตอบคำถามเกี่ยวกับทักษะและระดับความเชี่ยวชาญของนักพัฒนาซอฟต์แวร์ฝังตัวในอีกแนวทางหนึ่ง โดยอาศัยการวิเคราะห์เนื้อหาของหนังสือที่นักพัฒนาญี่ปุ่นอ่านว่ามีคุณลักษณะโดดเด่นอย่างไร   การพิจารณาเนื้อหาของหนังสือที่เป็นข้อมูลเชิงคุณภาพนี้ สามารถให้รายละเอียดได้ถึงความรู้และประสบการณ์ของผู้เชี่ยวชาญในวงการนั้นๆ และยังสะท้อนถึงสิ่งที่บุคคลอื่นๆในสายงานที่เกี่ยวข้องคาดหวังที่จะเรียนรู้จากหนังสือ   ข้อมูลที่จะสังเคราะห์จากการพิจารณาเนื้อหาของหนังสือประกอบด้วย 2 ส่วน ได้แก่
1.       ความรู้ที่นักพัฒนาต้องการทราบ ซึ่งจะสังเคราะห์ด้วยการจำแนกหัวข้อจากส่วนที่เป็นเนื้อหาหลักของหนังสือ
2.       ความรู้ที่นักพัฒนามีพื้นฐานอยู่แล้ว ซึ่งจะสังเคราะห์ด้วยการจำแนกหัวข้อที่เป็นความรู้พื้นฐาน แต่กลับมีการอ้างถึงอย่างจำกัดในส่วนเนื้อหา หรืออีกนัยหนึ่งเป็นส่วนของเนื้อหาที่ผู้อ่านส่วนใหญ่น่าจะรับรู้อยู่แล้ว
สำหรับบทความนี้ ผู้เขียนจะจำกัดขอบเขตการวิเคราะห์เฉพาะประเด็นที่เกี่ยวข้องกับบทบาทในเฟสการสร้างซอฟต์แวร์เท่านั้น ซึ่งเป็นเฟสที่ยังมีความเป็นไปได้ที่อุตสาหกรรมซอฟต์แวร์ฝังตัวจะส่งมอบงานมาดำเนินการในประเทศไทย และยังเป็นเฟสที่เนื้องานมีมูลค่าเพิ่มที่สูงกว่าการทดสอบซอฟต์แวร์
 
กลุ่มประชากรของหนังสือที่จะพิจารณาในบทความนี้เป็นหนังสือทางด้านการพัฒนาซอฟต์แวร์ฝังตัวที่สั่งซื้อได้จากเว็บไซต์ Amazon Japan ซึ่งเป็นเว็บไซต์ขายหนังสือออนไลน์ที่ได้รับความนิยมในประเทศญี่ปุ่น   การคัดเลือกหนังสือกลุ่มตัวอย่างจะดำเนินการด้วยการสืบค้นด้วยคำหลัก 組込み” และ “開発” ซึ่งมีความหมายว่า “ระบบสมองกลฝังตัว” และ “การพัฒนา” ตามลำดับ ใช้ระบบเกณฑ์ของเว็บไซต์ในการเรียงรายการของหนังสือ จากนั้นจึงคัดเลือกเฉพาะหนังสือที่ผู้แต่งเป็นนักพัฒนาญี่ปุ่น  เกณฑ์ที่ใช้ในการเรียงรายการของหนังสือแบ่งเป็น 2 รูปแบบที่สอดคล้องกับวัตถุประสงค์ของการศึกษาครั้งนี้ ได้แก่
1.       หนังสือที่มียอดจำหน่ายสูงสุด ซึ่งเป็นตัวบ่งชี้ว่าหนังสือเล่มนั้นมีความเกี่ยวข้องกับเนื้อหาที่ผู้อ่านให้ความสนใจและตัดสินใจที่จะซื้อ
2.       หนังสือที่มีผู้ให้คะแนนนิยมสูงสุด ซึ่งเป็นตัวบ่งชี้ว่าหนังสือเล่มนั้นมีเนื้อหาที่สอดคล้องกับระดับความรู้และความคาดหวังของผู้อ่าน
อนึ่ง ระบบการให้คะแนนของเว็บไซต์ทำให้กลุ่มตัวอย่างของหนังสือที่เรียงด้วยเกณฑ์ทั้งสองข้อนี้มีการแปรตามกันในแง่สถิติกล่าวคือ หนังสือที่มีคะแนนนิยมสูงก็ย่อมมียอดจำหน่ายที่ดี   ดังนั้นผู้เขียนจึงคัดเลือกกลุ่มตัวอย่างจากรายการของหนังสือที่ถูกเรียงด้วยเกณฑ์ทั้ง 2 ข้อนี้โดยไม่แบ่งแยกเป็น 2 กรณี
 
ผู้เขียนได้ทำการสืบค้นจากเว็บไซต์ Amazon Japan เมื่อวันที่ 2 พฤษภาคม 2553 โดยเรียงรายการของหนังสือด้วยเกณฑ์ละ 3 หน้าเว็บ (1 หน้าเว็บมีหนังสือ 12 รายการ) เท่ากับ 72 รายการ จากนั้นจึงใช้เทคนิคการสุ่มแบบเจาะจงเพื่อคัดเลือกหนังสือจากรายการออกมา 4 เล่ม ได้แก่
1.        “組込みプレス Startup Issue” วางจำหน่ายเมื่อเดือนสิงหาคม 2548 มียอดขายในลำดับที่ 158,811
2.        “「C」プログラミング for Embedded Systems 標準コーディングガイドライン” วางจำหน่ายเมื่อเดือนตุลาคม 2550 มียอดขายในลำดับที่ 55,046
3.       “組込みソフトウェア開発のための構造化モデリング” วางจำหน่วยเมื่อเดือนมกราคม 2549 มียอดขายในลำดับที่ 51,074
4.       “組込みソフトエンジニアを極める” วางจำหน่ายเมื่อเดือนเมษายน 2549 มียอดขายในลำดับที่ 98,279
หนังสือทั้ง 4 เล่มนี้ถูกคัดเลือกจากการมีเนื้อหาที่เกี่ยวข้องกับกิจกรรมต่างๆในกระบวนการพัฒนาซอฟต์แวร์ฝังตัว โดยแต่ละเล่มมีคะแนนนิยมจากผู้อ่านในระดับ 4.5 หรือ 5 ดาว  
 
 組込みプレス Startup Issue
เนื้อหาของหนังสือ “Embedded Software Press ฉบับเริ่มต้น” นี้เป็นหนังสือในสไตล์ของการรวบรวมบทความในนิตยสารมาเรียบเรียงและจัดพิมพ์เป็นหนังสือ ทำให้ส่วนเนื้อหามีการแยกออกเป็นบทย่อยและมีผู้แต่งสำหรับแต่ละบทย่อย   เป้าหมายของหนังสือต้องการสื่อให้เห็นถึงภาพรวมสำหรับการเริ่มต้นทำงานในฐานะนักพัฒนาซอฟต์แวร์ฝังตัว จึงแบ่งเนื้อหาออกเป็น 4 ส่วนประกอบด้วยการแนะนำเกี่ยวกับเทคโนโลยีระบบสมองกลฝังตัว (คืออะไร องค์ประกอบ พัฒนาอย่างไร ความรู้พื้นฐาน) การโปรแกรมด้วยภาษา C การแนะนำการโปรแกรมเชิงวัตถุ และการแนะนำเทคโนโลยีซอฟต์แวร์ฝังตัวขั้นสูง (ลินุกซ์ฝังตัว BREW สำหรับโทรศัพท์มือถือ)
 
เนื้อหาหลักของหนังสือเล่มนี้คือ เกร็ดความรู้ของการโปรแกรมด้วยภาษา C และการออกแบบ โดยแบ่งออกเป็น 14 หัวข้อย่อย   แต่ละหัวข้อย่อยเริ่มจากชื่อหัวข้อที่เป็นข้อความกล่าวถึงหลักการอย่างสั้น และอธิบายสาเหตุ เสนอแนะแนวทาง และยกตัวอย่างประกอบหลักการนั้นในส่วนเนื้อหา   เกร็ดความรู้แบ่งออกเป็น 2 กลุ่มคือ
1.       เกร็ดความรู้ในส่วนการเขียนโค้ดมีจำนวน 7 ข้อเน้นไปที่หลักการในการยกระดับคุณภาพของโค้ด เช่น เกร็ดที่ 1 จงกำหนดสไตล์การเขียนโค้ด ได้อธิบายว่าการเขียนโค้ดในทีมพัฒนาควรกำหนดตำแหน่งและรูปแบบการเขียนคอมเมนต์ สไตล์ของส่วนโค้ด (กั้นหน้า วงเล็บปีกกา) และการใช้ตัวอักษรนำหน้าด้วยรูปแบบที่เหมาะสม เพื่อให้อ่านและเข้าใจความหมายได้ง่าย
2.       เกร็ดความรู้ในส่วนการออกแบบมีจำนวน 7 ข้อเน้นไปที่แนวคิดการออกแบบโครงสร้างของซอฟต์แวร์ในรูปแบบของโมดูล เช่น เกร็ดที่ 7 จงวิเคราะห์ซอฟต์แวร์ ได้เน้นความจำเป็นในการวิเคราะห์โครงสร้างของซอฟต์แวร์ ด้วยการใช้โมเดลผังการไหลข้อมูล (Data Flow Diagram) เพื่ออธิบายถึงองค์ประกอบ หน้าที่ และการเชื่อมโยงของแต่ละส่วน ซึ่งเป็นขั้นตอนสำคัญในการเชื่อมโยงจากข้อกำหนดของซอฟต์แวร์ไปยังโครงสร้างของส่วนโค้ด
ภาพรวมของเนื้อหาและความเกี่ยวข้องกับหน้าที่ของนักพัฒนาในกระบวนการพัฒนาซอฟต์แวร์ฝังตัวสรุปได้ดังในตารางที่ 1  
 
ตารางที่ 1 การจำแนกเนื้อหาหลักของหนังสือ “Embedded Software Press ฉบับเริ่มต้น”
หน้าที่ในการพัฒนา
เนื้อหาในหนังสือ
ออกแบบซอฟต์แวร์
ความจำเป็นของโมเดลของซอฟต์แวร์ การกำหนดหน้าที่จำเพาะให้โค้ดแต่ละส่วน แนวคิดของเรียลไทม์ เครื่องมือสำหรับสร้างโมเดลของซอฟต์แวร์ แนวทางการออกแบบควบคู่กับการสร้างโค้ด การวิเคราะห์โครงสร้างของซอฟต์แวร์
กำหนดโครงสร้างส่วนโค้ด
แนวทางของโครงสร้างไฟล์ ประสิทธิภาพของลำดับการประมวลผล การนำซอฟต์แวร์กลับมาใช้ โมดูลของซอฟต์แวร์และโครงสร้างไฟล์
เขียนโค้ด
สไตล์การเขียนโค้ด การกำหนดชื่อตัวแปร
ดีบักส่วนโค้ด
ปัญหาของหน่วยความจำ
ทดสอบส่วนโค้ด
หลักการทดสอบส่วนโค้ด
 
                เนื้อหาในหนังสือเล่มนี้แม้ว่าจะตั้งกลุ่มเป้าหมายเป็นผู้เริ่มต้นในตำแหน่งนักพัฒนาซอฟต์แวร์ฝังตัว แต่ก็ได้เรียบเรียงเนื้อหาเอียงไปที่กิจกรรมการออกแบบซอฟต์แวร์และโครงสร้างของส่วนโค้ด ซึ่งจัดเป็นขั้นตอนในการพัฒนาซอฟต์แวร์ที่ต้องการความรู้/ทักษะ/ความเข้าใจมากกว่าการเขียนโค้ดทั่วไป   เนื้อหาส่วนใหญ่ถูกอธิบายในระดับหลักการ โดยไม่มีโค้ดที่เจาะจงกับไมโครคอนโทรลเลอร์กล่าวคือ มุ่งเป้าหมายที่จะสร้างความเข้าใจในหลักการมากกว่าการสอนให้ปฏิบัติตาม   นอกจากนี้ เนื้อหาภายในหนังสือเล่มนี้ยังไม่มีการอธิบายรายละเอียดของไมโครคอนโทรลเลอร์ ไวยากรณ์ของภาษา C และวิธีการเขียนโค้ดสั่งการไมโครคอนโทรลเลอร์ จึงอาจสรุปได้ว่าสำนักพิมพ์เองไม่ได้ให้ความสำคัญกับกลุ่มบุคคลที่ไม่มีพื้นฐานทางด้านการเขียนโปรแกรมภาษา C และไมโครโพรเซสเซอร์
 
C」プログラミングfor Embedded Systems標準コーディングガイドライン
               
การโปรแกรมภาษา C สำหรับระบบสมองกลฝังตัว ฉบับแนวทางของมาตรฐานการเขียนโค้ด” เป็นหนังสือที่ออกมาเสริมหนังสือ “การโปรแกรมภาษา C สำหรับระบบสมองกลฝังตัว ฉบับการแนะนำอย่างละเอียดตั้งแต่พื้นฐาน” ซึ่งได้อธิบายหลักการและเทคนิคการเขียนโค้ดภาษา C สำหรับงานทางด้านซอฟต์แวร์ฝังตัว   เป้าหมายของหนังสือเล่มนี้ได้เจาะจงไปที่ประเด็นของการเขียนโค้ดภาษา C สำหรับซอฟต์แวร์ฝังตัวอย่างมีคุณภาพ ซึ่งเป็นปัจจัยสำคัญที่ก่อให้เกิดความน่าเชื่อถือของส่วนเฟิร์มแวร์   ทั้งนี้การกำหนดแนวทางการเขียนโค้ด (Coding Guidelines) หรือกฎการเขียนโค้ด (Coding Rules) ให้โปรแกรมเมอร์ในทีมพัฒนาได้ปฏิบัติตาม มักเป็นส่วนหนึ่งในแผนงานขององค์กรที่ดำเนินธุรกิจพัฒนาซอฟต์แวร์ฝังตัว เพื่อให้ส่วนโค้ดที่เกิดจากแต่ละโปรแกรมเมอร์สอดคล้องกัน ง่ายในการตรวจสอบ และลดโอกาสในการเกิดบั๊ก   ตัวอย่างของกฎการเขียนโค้ดที่วงการพัฒนาซอฟต์แวร์ฝังตัวมักอ้างถึง ได้แก่ MISRA C ซึ่งเป็นข้อกำหนดในการโค้ดภาษา C สำหรับงานที่ต้องการความน่าเชื่อถือสูงมาก
 
เนื้อหาของหนังสือเล่มนี้กล่าวถึงแนวทางในการเขียนโค้ดภาษา C สำหรับซอฟต์แวร์ฝังตัวจำนวน 66 ข้อ โดยแบ่งแนวทางออกเป็น 2 กลุ่ม ได้แก่
1.       แนวทางเพื่อป้องกันบั๊กในส่วนโค้ดจำนวน 42 ข้อ มีเนื้อหาเกี่ยวข้องกับการกำหนดรายละเอียดของตัวแปร ข้อมูลประเภทตัวอักษรและข้อความ การใช้งานตัวชี้ การคำนวณเลขทศนิยม การเขียนวงรอบ และโครงสร้างของไฟล์เฮดเดอร์
2.       แนวทางเพื่อให้อ่านและเข้าใจง่ายจำนวน 24 ข้อ มีเนื้อหาเกี่ยวข้องกับการตั้งชื่อตัวแปร สไตล์ในการเขียนโค้ด และการเขียนคอมเมนต์
การอธิบายแนวทางแต่ละข้อเริ่มต้นด้วยส่วนของจุดเช็คที่เป็นคำถามเพื่อให้ผู้อ่านได้ทบทวนว่าส่วนโค้ดเกี่ยวข้องกับแนวทางนั้นหรือไม่ จากนั้นจึงเป็นเนื้อหาของเหตุผลและการแจกแจงผลกระทบ และตัวอย่างของโค้ดที่แตกต่างและสอดคล้องกับแนวทาง ดังตัวอย่างในตารางที่ 2 
 
ตารางที่ 2 ตัวอย่างของแนวทางในการเขียนโค้ดภาษา C
แนวทาง
หลักการ
จุดเช็ค
คำอธิบาย
1
ให้ตัวแปรหนึ่งมีหน้าที่เดียวเท่านั้น
ð มีการใช้ตัวแปรเพื่อทำงานในหลายหน้าที่หรือไม่
ð มีการนำตัวแปรนับหรืออาร์กิวเมนท์กลับมาใช้เพื่อวัตถุประสงค์อื่นหรือไม่
ð มีคำอธิบายสั้นๆของตัวแปรหรือไม่
ชื่อของแต่ละตัวแปรจะสื่อถึงหน้าที่การใช้งานที่แตกต่างจากตัวแปรอื่น   หากมีการนำตัวแปรชื่อเดิมมาใช้ซ้ำในหน้าที่อื่นอาจทำให้เกิดความสับสนในค่าของตัวแปรนั้น
ตัวอย่างไม่เหมาะสม
for (i=0;i<studentNum;i++){
 if (student[i].id == key){
    break;
 }
}
if(i<studentNum){ ใช้ตัวแปร i ซ้ำซ้อน
 found = FALSE;
} else {
 found = TRUE;
}
ตัวอย่างเหมาะสม
found = FALSE;
for (i=0;i<studentNum;i++){
 if (student[i].id == key){
    found = TRUE;
    break;
 }
}
18
ใช้กรอบในการเปรียบเทียบค่าทศนิยม
ð มีการเปรียบเทียบตัวแปรค่าทศนิยมด้วย == หรือ != หรือไม่
หน่วยประมวลผลจัดเก็บเลขทศนิยมด้วยตัวเลขฐานสองที่จำนวนบิตคงที่ จึงมีปัญหาของเศษเหลือจากการแทนตัวเลขและการคำนวณ   ดังนั้นการเปรียบเทียบด้วยตัวกระทำ == หรือ != จึงได้ผลลัพธ์ที่ผิดจากโปรแกรมเมอร์คิด
ตัวอย่างเหมาะสม
#define EPS (0.0001)
#define EQUAL(x,y) (fabs((x)-(y) < EPS)
if ( EQUAL(delta,0.0) ) {
   …
}
47
ใส่ชื่อที่มีความหมายให้กับตัวเลข
ð มีการตั้งชื่อให้กับค่าคงที่หรือไม่
ð ชื่อของค่าคงที่สื่อถึงความหมายหรือไม่
การเขียนค่าคงที่ในรูปของตัวเลขภายในโค้ด มักทำให้ผู้อื่นสับสนถึงแหล่งที่มาและความหมายของตัวเลขนั้น   นอกจากนี้หากมีการใช้ค่าคงที่นั้นในหลายส่วนของโค้ดก็จะทำให้เกิดปัญหาค่าคงที่ไม่สอดคล้องกัน เมื่อได้มีการเปลี่ยนแปลงบางตัวเลข
ตัวอย่างไม่เหมาะสม
int score[50;
for (i=0;i<50;i++) {
 score[i] = 0;
}
ตัวอย่างเหมาะสม
#define SCORE_ARY_SIZE 50
int score[SCORE_ARY_SIZE];
for(i=0;i<SCORE_ARY_SIZE;i++){
 score[i] = 0;
}
การอธิบายแนวทางต่างๆโดยภาพรวมอิงอยู่บนรูปแบบของภาษา C ตามไวยากรณ์มาตรฐานและไม่มีเนื้อหาที่เจาะจงถึงส่วนฮาร์ดแวร์ จึงสามารถนำไปประยุกต์กับการพัฒนาซอฟต์แวร์ทั่วไปด้วยภาษา C ได้   ทั้งนี้แนวทางบางข้อเป็นกรณีเฉพาะที่มักเกิดในสถานการณ์การพัฒนาซอฟต์แวร์ฝังตัวเท่านั้น เช่น แนวทางที่ 12 ใช้โครงสร้างแบบบิตฟิลด์ (bitfield) เมื่อคอมไพเลอร์รองรับ เพราะระบบสมองกลฝังตัวมีหน่วยความจำที่จำกัดจึงควรรวมตัวแปรที่มีสถานะ 0 หรือ 1 เท่านั้นด้วยบิตเดียวของตัวแปรที่ประกาศด้วยโครงสร้างแบบบิตฟิลด์ รวมทั้งการใช้โครงสร้างของบิตฟิลด์ยังทำให้ส่วนโค้ดง่ายต่อการเข้าใจเมื่อเทียบกับการใช้เทคนิคบิตมาสค์กิง (bit masking) ด้วย
 
組込みソフトウェア開発のための構造化モデリング
 
                “การสร้างโมเดลเชิงโครงสร้างสำหรับการพัฒนาซอฟต์แวร์ฝังตัว” เป็นหนังสือที่เน้นกลุ่มเป้าหมายที่มีความสนใจหรือทำงานเกี่ยวข้องกับเฟสการวิเคราะห์และออกแบบซอฟต์แวร์ เน้นไปที่วิธีการสร้างโมเดลสำหรับอธิบายซอฟต์แวร์ในมุมมองต่างๆ   ภาพรวมของหนังสือแบ่งออกเป็น 3 ส่วน ได้แก่ การเกริ่นนำถึงความจำเป็นและปัญหา การสร้างโมเดลของซอฟต์แวร์ และเนื้อหาเสริมในประเด็นการประเมินโมเดลและการเขียนโค้ด   การดำเนินเนื้อหาภายในหนังสืออิงอยู่บนสถานการณ์ตัวอย่างของการออกแบบซอฟต์แวร์ฝังตัวสำหรับกาต้มน้ำดิจิตอล โดยตัวอย่างนี้ยังได้ใช้สำหรับหนังสืออีก 2 เล่มในหัวเรื่องของการสร้างโมเดลเชิงวัตถุและการทำวิศวกรรมย้อนรอยของซอฟต์แวร์ฝังตัว




 
 
รูปที่ 6 โจทย์การพัฒนากาต้มน้ำดิจิตอลที่เป็นตัวอย่างในหนังสือ
 
หนังสือเล่มนี้เริ่มต้นด้วยการยกประเด็นของปัญหาความสับสนของส่วนโค้ดที่เขียนขึ้นโดยไม่มีการวางแผน หรือที่รู้จักในชื่อปัญหาสปาเกตตีโค้ด (Spaghetti Code) จึงมีความจำเป็นที่จะสร้างโมเดลเพื่ออธิบายภาพรวมในแต่ละส่วนของซอฟต์แวร์ก่อนที่จะเริ่มเขียนโค้ด   เนื้อหาหลักของหนังสือคือ การอธิบายนิยาม หลักการ และขั้นตอนในการสร้างโมเดลของซอฟต์แวร์อิงตามเทคนิคเชิงโครงสร้าง โดยโมเดลหลัก 4 รูปแบบที่กล่าวถึงในเนื้อหา ได้แก่
1.       รายการเหตุการณ์ (Event List) เป็นตารางแสดงรายการของความเกี่ยวเนื่องในการประมวลผลตั้งแต่ประเภทของเหตุการณ์ (Event) ข้อมูล/สถานะที่รับรู้ (Stimulus) กิจกรรมที่ดำเนินการ (Action) ผลลัพธ์ที่ได้ (Response) และผลกระทบต่อระบบ (Effect)
2.       ผังการไหลของข้อมูล (Data Flow Diagram) เป็นแผนภาพที่แสดงการไหลของข้อมูลจากแหล่งข้อมูลภายนอก อินพุตและเอาต์พุตของการประมวลผลในแต่ละลำดับ และผลลัพธ์ที่เป็นข้อมูลส่งออกไปยังหน่วยรับข้อมูลภายนอก
3.       ผังการเปลี่ยนสถานะ (State Transition Diagram) เป็นแผนภาพอธิบายตรรกะของการประมวลผลในรูปของผลกระทบของเหตุการณ์ (Event) ที่ทำให้เกิดการเปลี่ยนแปลงสถานะ (State) และการดำเนินกิจกรรม (Action) ที่ตอบสนองต่อเหตุการณ์นั้น 
4.       แผนผังโครงสร้าง (Structure Chart) เป็นแผนภาพแสดงลำดับชั้นและความสัมพันธ์ของโค้ดส่วนต่างๆ
กลุ่มผู้เขียนได้ใช้โมเดลข้างต้นนี้ในการอธิบายองค์ประกอบและการทำงานของซอฟต์แวร์ที่สัมพันธ์กับความสามารถของกาต้มน้ำในแง่ส่วนติดต่อผู้ใช้ (ปุ่มกด จอแสดงผล) เซ็นเซอร์ (ฝาถูกเปิด อุณหภูมิ ระดับน้ำ) และโหมดการควบคุมอุณหภูมิ (อุ่นนม อุ่น เดือด)
 
 
รูปที่ 7 โมเดลของซอฟต์แวร์กาต้มน้ำดิจิตอลจากหนังสือ
 
จุดเด่นของหนังสือเล่มนี้อยู่ที่การอธิบายหลักการและข้อแนะนำในการแปลงข้อมูลที่มีอยู่ให้กลายเป็นองค์ประกอบภายในตัวโมเดล เริ่มต้นด้วยการแปลงจากข้อกำหนดของโจทย์การพัฒนาเป็นโมเดลความต้องการ (รายการเหตุการณ์) พิจารณาเหตุการณ์และผลลัพธ์ที่ต้องการจากโมเดลความต้องการแล้วแปลงเป็นโมเดลโครงสร้าง (ผังการไหลข้อมูล ผังการเปลี่ยนสถานะ) สุดท้ายจึงจำแนกองค์ประกอบต่างๆในโมเดลโครงสร้างเพื่อสร้างโมเดลส่วนโค้ด (แผนผังโครงสร้าง)   เมื่อผู้อ่านได้อ่านเนื้อหาตามลำดับก็จะรับรู้ถึงการใช้โมเดลเป็นสิ่งส่งมอบ (Deliverables) ในระหว่างขั้นตอนของกระบวนการพัฒนา   ทั้งนี้ ผู้เขียนหนังสือได้แทรกแนวคิดเกี่ยวกับการพิจารณาส่วนฮาร์ดแวร์ในขั้นตอนการสร้างโมเดล เช่น การพิจารณาฮาร์ดแวร์ในฐานะของแหล่งกำเนิดเหตุการณ์มากระตุ้นซอฟต์แวร์ รวมทั้งให้คำถามที่เป็นแนวทางสำหรับการทบทวนโมเดลที่กำลังสร้างอยู่ ซึ่งเป็นเนื้อหาที่แตกต่างจากหนังสือเกี่ยวกับการวิเคราะห์และออกแบบซอฟต์แวร์ทั่วไป
 
組込みソフトエンジニアを極める
สู่สุดยอดวิศวกรซอฟต์แวร์ฝังตัว” เป็นหนังสือที่ต้องการเจาะไปที่กลุ่มเป้าหมายที่มีประสบการณ์ในด้านการพัฒนาซอฟต์แวร์ฝังตัวอยู่แล้ว จึงกำหนดให้เนื้อหาอิงอยู่บนแนวคิดของซอฟต์แวร์คอมโพเนนท์   จุดแข็งของหนังสือเล่มนี้คือการนำเสนอแนวคิดในการออกแบบซอฟต์แวร์เชิงวัตถุบนพื้นฐานของระบบปฏิบัติการทันเวลา (Real-time Operating Systems, RTOS)   ตัวอย่างที่ใช้อธิบายประกอบคือ ส่วนซอฟต์แวร์สำหรับการพิมพ์ใบเสร็จของเครื่องบริการ ณ จุดขาย (Point-Of-Sale, POS) ที่จำเป็นต้องมีการควบคุมหัวพิมพ์ความร้อนในการเคลื่อนที่ไปสร้างข้อความตัวอักษรตามที่ได้รับข้อมูลจากซอฟต์แวร์ส่วนอื่น จึงมีเงื่อนไขแบบทันเวลาสำหรับทั้งการควบคุมหัวพิมพ์และการรับข้อมูล
 
                หนังสือเล่มนี้เริ่มต้นด้วยการแนะนำหลักการพื้นฐานของระบบปฏิบัติการทันเวลา ได้แก่ แทสค์ การจัดลำดับงานด้วยระดับความสำคัญ และกลไกสื่อสารระหว่างแทสค์   จากนั้นผู้เขียนหนังสือได้อธิบายแนวคิดของการใช้แทสค์ทำหน้าที่เป็นแอกทีฟออปเจคต์ (Active Object) กล่าวคือออปเจคต์ที่สามารถกระตุ้นตัวเองให้ขึ้นมาทำงานโดยไม่ต้องมีส่วนโค้ดมาทำการเรียกใช้เมธอด โดยอาศัยกลไกของระบบปฏิบัติการทันเวลาเพื่อกระตุ้นแทสค์ให้มาจัดการกับเหตุการณ์ต่างๆ เช่น ประมวลผลเมื่อมีการส่งข้อมูลมาทางคิวข้อมูล   เนื้อหาหลักของหนังสือคือการอธิบายการประยุกต์หลักการโปรแกรมเชิงวัตถุเพื่อการพัฒนาซอฟต์แวร์ฝังตัว เรียบเรียงออกเป็น 4 ส่วนตามอุปสรรคที่นักพัฒนาจะได้พบในสายอาชีพ ได้แก่
1.       ความท้าทายของการทำตามเงื่อนไขทันเวลา   เนื้อหาส่วนนี้ได้อธิบายถึงหลักการของการกำหนดตัวจัดการอินเตอร์รัพต์ (Interrupt Handler) ควบคู่กับการกำหนดระดับความสำคัญของแทสค์ เพื่อให้สามารถควบคุมจังหวะการให้ความร้อนแก่หัวพิมพ์ในขณะเคลื่อนที่ได้ตามข้อกำหนดของเวลา และไม่มีข้อมูลจากคิวที่สูญหาย
2.       ความท้าทายของการแบ่งแยกฟังก์ชันการทำงาน   เนื้อหาส่วนนี้เริ่มต้นด้วยมุมมองของความเกี่ยวข้องระหว่างแทสค์และคลาส หลักการของออปเจคต์แบบแอกทีฟและพาสซีฟ และการจัดกลุ่มของข้อมูลและเมธอดในระดับไฟล์   จากนั้นจึงอธิบายขั้นตอนและแนวทางในการแบ่งแยกฟังก์ชันการทำงานออกเป็นองค์ประกอบต่างๆของซอฟต์แวร์ในรูปของคลาส และได้อภิปรายประเด็นของรูปแบบของการพัฒนาแบบเฉพาะกิจ (Customized) หรือแบบประกอบ (Composition) ในช่วงสุดท้าย
3.       ปัญหาของการนำโค้ดกลับมาใช้   เนื้อหาส่วนนี้เริ่มต้นด้วยการยกประเด็นของการมีโรดแมปการพัฒนาผลิตภัณฑ์เข้าสู่ตลาด ทำให้มีความจำเป็นที่ต้องนำโค้ดบางส่วนกลับมาใช้ เพื่อให้สามารถลดเวลาและค่าใช้จ่ายในการพัฒนา   จากนั้นผู้เขียนหนังสือได้อธิบายหลักการของการวิเคราะห์โดเมนเพื่อจำแนกโครงสร้างของซอฟต์แวร์ออกตามลำดับชั้น ได้แก่ ชั้นแหล่งข้อมูล (การเชื่อมต่อระบบ/ฮาร์ดแวร์) ชั้นโดเมน (รูปแบบการประมวลผล) และชั้นนำเสนอ (ส่วนติดต่อผู้ใช้)  ช่วงสุดท้ายจึงเป็นการแนะนำเกี่ยวกับขั้นตอนและข้อปฏิบัติในการจัดการส่วนโค้ดของโครงการ
4.       ปัญหาของคุณภาพ   เนื้อหาส่วนนี้เริ่มต้นด้วยการยกความจำเป็นของคุณภาพเฟิร์มแวร์ที่ส่งผลกระทบต่อความน่าเชื่อถือของระบบสมองกลฝังตัว จากนั้นจึงเป็นการแนะนำเกี่ยวกับเครื่องมือต่างๆที่ยกระดับคุณภาพของซอฟต์แวร์ ได้แก่ กฎการเขียนโค้ด การทดสอบระดับหน่วย (Unit Testing) ขั้นตอนการยืนยันในกระบวนการพัฒนา
ผู้เขียนหนังสือได้ใช้แผนภาพ UML (Unified Modeling Language) เป็นโมเดลในการอธิบายแนวคิดและโครงสร้างของซอฟต์แวร์ตลอดทั้งเล่ม
 
รูปที่ 8 ภาพอธิบายโครงสร้างซอฟต์แวร์ที่ใช้บริการของ RTOS จากหนังสือ
 
                จุดเด่นของหนังสือเล่มนี้คือ การนำเสนอให้ประยุกต์หลักการเชิงวัตถุมาใช้ในกระบวนการพัฒนาซอฟต์แวร์ฝังตัว ผ่านทางกลไกแทสค์และการสื่อสารของระบบปฏิบัติการทันเวลา หรืออีกนัยหนึ่งยังคงสามารถโปรแกรมได้ด้วยภาษา C ที่เป็นภาษาเชิงโครงสร้าง   การยกกรณีส่วนพิมพ์ใบเสร็จของเครื่องบริการ ณ จุดขายมาเป็นตัวอย่างประกอบเองก็สอดคล้องกับสถานการณ์ในการพัฒนาจริง ซึ่งทีมพัฒนามักรับผิดชอบเฉพาะส่วนเดียวของซอฟต์แวร์ฝังตัวของตัวผลิตภัณฑ์ และต่อเนื่องไปสู่ผลิตภัณฑ์ในรุ่นต่อไป ทำให้ประเด็นของการแบ่งแยกฟังก์ชันการทำงานและการนำโค้ดกลับมาใช้ได้กลายเป็นแรงจูงใจในการนำหลักการเชิงวัตถุมาใช้   ทั้งนี้ การพยายามยกประเด็นของฮาร์ดแวร์และเงื่อนไขทันเวลามาอภิปรายประกอบแนวคิดของซอฟต์แวร์ เป็นเนื้อหาที่หาอ่านได้ยากจากหนังสืออื่นๆในหัวข้อการวิเคราะห์และออกแบบซอฟต์แวร์เชิงวัตถุทั่วไป      
 
รู้จักคนจากหนังสือที่อ่าน
หนังสือทางด้านการพัฒนาระบบสมองกลฝังตัวทั้ง 4 เล่มข้างต้นและอีกหลายเล่มในรายการสืบค้นต่างเป็นผลงานของบุคคลที่มีความเกี่ยวข้องกับสมาคมวิชาชีพ SESSAME (Society of Embedded Software Skill Acquisition for Managers and Engineers) ที่ก่อตั้งด้วยการรวมตัวของคณาจารย์ของสถาบันการศึกษาและผู้เชี่ยวชาญจากภาคอุตสาหกรรมที่ต่างมีความเห็นร่วมกันว่าซอฟต์แวร์ฝังตัวเป็นแกนหลักของเทคโนโลยีคอมพิวเตอร์สำหรับประเทศญี่ปุ่น   การตีพิมพ์หนังสือหลายเล่มนี้ก็สอดคล้องกับช่วงเวลาที่ภาคอุตสาหกรรมของประเทศญี่ปุ่นเกิดปัญหาความขาดแคลนบุคลากรที่เป็นนักพัฒนา จึงอาจกล่าวได้ว่าหนังสือหลายเล่มนี้เป็นความพยายามของคนในวงการที่พยายามยกระดับบุคคลที่เริ่มต้นในสายอาชีพ ให้ตระหนักและรับรู้ถึงสภาพการทำงานของนักพัฒนาซอฟต์แวร์ฝังตัว
 
เนื้อหาของหนังสือทั้ง 4 เล่มข้างต้นได้สะท้อนให้เห็นว่าเนื้องานส่วนใหญ่ในขั้นตอนการสร้างซอฟต์แวร์ของนักพัฒนาซอฟต์แวร์ฝังตัว ไม่ได้เป็นการเขียนโค้ดเพื่อเชื่อมต่อหรือสั่งการฮาร์ดแวร์ กลับเป็นการประมวลผลข้อมูลที่ได้รับก่อนจะส่งไปแสดงผล   การถ่ายทอดแนวคิดและหลักการภายในเนื้อหาจึงเน้นไปที่เทคนิคและเกร็ดความรู้ในเชิงปฏิบัติมากกว่า เช่น สไตล์การเขียนโค้ด โดยองค์ความรู้ทางด้านการประมวลผลข้อมูลที่มักสอนในสถาบันการศึกษา เช่น โครงสร้างข้อมูลหรืออัลกอริธึม กลับไม่รวมอยู่ภายในเนื้อหาเลย ซึ่งอาจตีความได้เป็น 2 แนวกล่าวคือ นักพัฒนาส่วนใหญ่มีความรู้พื้นฐานเกี่ยวกับองค์ความรู้นี้เพียงพอแล้ว (หลักสูตรมีความเข้มแข็งในจุดนี้) หรือองค์ความรู้ดังกล่าวไม่ได้เป็นสิ่งจำเป็นสำหรับการพัฒนาซอฟต์แวร์ฝังตัว (ต้องการระเบียบมากกว่าโค้ดฉลาด) 
 
เนื้อหาของขั้นตอนการวิเคราะห์และออกแบบซอฟต์แวร์ฝังตัวที่เป็นกิจกรรมในเฟสต้นน้ำได้ถูกยกเป็นจุดขายหลักของหนังสือเมื่อเปรียบเทียบกับเนื้อหาในส่วนการเขียนโค้ด   การใช้โมเดลเชิงโครงสร้างเพื่ออธิบายโครงสร้างและฟังก์ชันของซอฟต์แวร์ยังคงเป็นสิ่งที่ใช้กันอยู่ภายในอุตสาหกรรมซอฟต์แวร์ฝังตัวของประเทศญี่ปุ่น แตกต่างจากประเทศสหรัฐอเมริกาและเครือสหภาพยุโรปที่เน้นการใช้ UML และการโปรแกรมเชิงวัตถุดังที่เห็นได้จากเนื้อหาของหนังสือส่วนใหญ่ที่ตีพิมพ์ออกมา   นอกจากนี้เนื้อหาของหนังสือทุกเล่มจะอ้างคำหลัก “คุณภาพ” ในแง่ความน่าเชื่อถือของซอฟต์แวร์ฝังตัว และได้แบ่งเนื้อหาส่วนหนึ่งเพื่ออธิบายความจำเป็นและสิ่งที่ควรตระหนักเพื่อให้ได้คุณภาพของตัวเฟิร์มแวร์
 
นอกจากหนังสือแล้ว นิตยสารก็เป็นสื่อสิ่งพิมพ์อีกประเภทหนึ่งที่สามารถสะท้อนถึงความสนใจในด้านศาสตร์หรือเทคโนโลยีด้านใดด้านหนึ่งได้ เนื้อหาของบทความในนิตยสารจะมีความกว้างในแง่เนื้อหามากกว่าหนังสือ   การตรวจสอบนิตยสารรายเดือนที่ตีพิมพ์จากสำนักพิมพ์ CQ Publishing พบว่ามีการออกนิตยสารหลายปกที่เกี่ยวข้องกับเทคโนโลยีระบบสมองกลฝังตัวในมุมมองของเทคโนโลยีที่ต่างกัน เช่น นิตยสาร “トランジスタ技術” (เทคโนโลยีทรานซิสเตอร์) เน้นบทความที่อธิบายหลักการออกแบบฮาร์ดแวร์ในเชิงอุตสาหกรรม เช่น หัวใจในการออกแบบวงจรจ่ายกำลัง  นิตยสาร “インターフェース” (อินเตอร์เฟส) เน้นบทความที่ติดตามแนวโน้มของเทคโนโลยีแพลตฟอร์มระบบสมองกลฝังตัว เช่น การสร้าง PCI Express ด้วย FPGA และนิตยสาร “ディジタル・デザイン・テクノロジ” (เทคโนโลยีการออกแบบดิจิตอล) เน้นบทความเกี่ยวกับการออกแบบวงจรดิจิตอลด้วย FPGA และ IP Core เช่น ความรู้พื้นฐานเกี่ยวกับเครื่องมือพัฒนาสำหรับหน่วยประมวลผลและ FPGA   เราจึงอาจกล่าวได้ว่าวงการพัฒนาระบบสมองกลฝังตัวของประเทศญี่ปุ่นนี้มีขอบเขตของหน้าที่ความรับผิดชอบที่หลากหลายมาก คลอบคลุมทั้งในด้านฮาร์ดแวร์ ซอฟต์แวร์ หรือการสร้างทรัพย์สินทางปัญญาในรูปแบบ IP Core
 
                หากภาคอุตสาหกรรมซอฟต์แวร์ฝังตัวของประเทศไทยต้องการที่จะเพิ่มโอกาสในการรับมอบงานจากประเทศญี่ปุ่น เราควรที่จะให้ความสนใจต่อทั้งพื้นความรู้และการตระหนักในประเด็นที่สอดคล้องกับความต้องการของผู้ว่าจ้าง  แนวคิดของ คุณภาพ” จากมุมมองของการเขียนโค้ดและการออกแบบ และความสามารถในการทำงานภายในองค์กร จึงเป็นสิ่งที่นักพัฒนาไทยควรที่จะพัฒนาตัวเองอย่างเร่งด่วน
 
แล้วหันมามองตัวเรา
เมื่อผู้เขียนย้อนกลับมาสำรวจหนังสือภาษาไทยที่เกี่ยวข้องกับเทคโนโลยีระบบสมองกลฝังตัว กลับพบว่า หนังสือที่มีขายในท้องตลาดยังคงเน้นไปที่การติดต่อกับส่วนฮาร์ดแวร์ของหน่วยประมวลผล  เนื้อหาส่วนใหญ่ของหนังสือมักเป็นการแปลหรือสรุปรายละเอียดของรีจิสเตอร์ต่างๆจากคู่มือของหน่วยประมวลผล และอาศัยโค้ดตัวอย่างแสดงวิธีตั้งค่า/เข้าถึง/สั่งการองค์ประกอบฮาร์ดแวร์ของตัวชิพเป็นจุดขาย   การสืบค้นหนังสือที่เกี่ยวกับการพัฒนาซอฟต์แวร์ฝังตัวจากเว็บไซต์ Amazon Japan กลับไม่พบหนังสือที่มีเนื้อหาในกลุ่มนี้ โดยไปพบในการสืบค้นด้วยคำหลัก “マイコン” (ไมโครคอนโทรลเลอร์) ที่มีความจำเพาะในเชิงฮาร์ดแวร์มากกว่า  
 
                ทำไมหนังสือที่มีขายในประเทศไทยจึงยังคงมีเฉพาะหนังสือในกลุ่มนี้   ความคิดเห็นของผู้เขียนคือ “ตลาดต้องการหนังสือประเภทนี้” กล่าวคือ กลุ่มเป้าหมายของหนังสือยังคงเป็นนักศึกษาหรือผู้ที่เริ่มต้นทำงานในอาชีพนี้   ประสบการณ์ที่ได้ช่วยงานของสมาคมสมองกลฝังตัวไทยหรือ TESA ทำให้ทราบว่าบุคลากรในตำแหน่งงานนี้มักจะจบการศึกษาจากสาขาวิศวกรรมไฟฟ้าและอิเล็กทรอนิกส์ จึงมีข้อได้เปรียบในแง่พื้นความรู้เกี่ยวกับวงจรไฟฟ้า แต่จะพบข้อจำกัดหากต้องมีการเขียนโค้ดที่ซับซ้อนหรือทำงานเป็นทีม   หนังสือที่นักพัฒนากลุ่มนี้ต้องการจึงเน้นไปที่การมีตัวอย่างโค้ดที่เกี่ยวข้องกับฮาร์ดแวร์ของไมโครคอนโทรลเลอร์ โดยอาจมองว่าการเข้าถึงและสั่งการฮาร์ดแวร์ได้คือเนื้องานหลักในความรับผิดชอบ
 
หากพิจารณาโครงสร้างซอฟต์แวร์ด้วยการแบ่งออกเป็น 3 ลำดับชั้นได้แก่ ส่วนติดต่อฮาร์ดแวร์ (เช่น ดีไวซ์ไดรเวอร์) ส่วนประมวลผลข้อมูล (เช่น วงจรกรอง ตัวควบคุม PID ส่วนควบคุมบัฟเฟอร์ ฯลฯ) และส่วนตรรกะของเฟิร์มแวร์ (เช่น โหมดการทำงาน)  เนื้อหาของหนังสือในประเทศไทยได้สะท้อนให้เห็นว่าขอบเขตงานของการพัฒนาซอฟต์แวร์ฝังตัวยังคงเป็นส่วนด้านล่างสุด ซึ่งเป็นส่วนเนื้องานที่มีมูลค่าเพิ่มน้อยที่สุด   ในขณะที่ส่วนโค้ดสำหรับการประมวลผลและส่วนตรรกะกลับเป็นปัจจัยหลักที่ส่งผลกระทบต่อความหลากหลายและความน่าเชื่อถือของฟังก์ชันการทำงานของตัวเฟิร์มแวร์เอง
 
ถึงแม้ว่าภาพใหญ่ของการพัฒนาซอฟต์แวร์ฝังตัวในประเทศไทยเองยังคงเน้นไปที่แอพพลิเคชันที่ไม่ซับซ้อน เช่น ตู้ควบคุมจากระบบหยอดเหรียญ โดยอาจมีจำนวนนักพัฒนาเพียง 1 – 2 คนเท่านั้นในทีม   แต่หากวงการพัฒนาซอฟต์แวร์ฝังตัวของประเทศไทยยังไม่เรียนรู้จากประเทศชั้นนำ ผลิตภัณฑ์ส่วนใหญ่ที่ออกแบบและพัฒนาโดยคนไทยก็จะยังคงมีฟังก์ชันการใช้งานที่จำกัด เน้นจุดขายที่ราคาถูก และไม่มีความต่อเนื่องในการพัฒนาผลิตภัณฑ์ไปเรื่อยๆ ถึงเวลาหรือยังที่เราจะเริ่มเรียนรู้ก้าวต่อไปในฐานะนักพัฒนาซอฟต์แวร์ฝังตัว
 
เอกสารอ้างอิง
1. ธนารักษ์ ธีระมั่นคง และคณะ. (2549). เทคโนโลยีสมองกลฝังตัว. สำนักพิมพ์ ส.ส.ท.
2. The Joint Task Force for Computing Curricula 2005. (2548). Computing Curricula 2005 The Overview Report. แหล่งข้อมูล: เอกสารออนไลน์ ดาวน์โหลดจากhttp://www.acm.org/education/education/curric_vols/ CC2005-March06Final.pdf
3. Information-technology Promotion Agency. (2552). รายงานผลการสำรวจอุตสาหกรรมซอฟต์แวร์ฝังตัว ปี 2009. แหล่งข้อมูล: เอกสารออนไลน์ ดาวน์โหลดจาก http://sec.ipa.go.jp/reports/20090807.html
 
ประวัติผู้เขียน
ผู้ช่วยศาสตราจารย์ ดร.ศุภชัย วรพจน์พิศุทธิ์จบการศึกษาในระดับ วศ.บ. (ไฟฟ้า) และ วศ.ม. (ไฟฟ้า) จากจุฬาลงกรณ์มหาวิทยาลัย และ D.Eng (Control Engineering) จากสถาบัน Tokyo Institute of Technology ประเทศญี่ปุ่น   ปัจจุบันรับราชการเป็นอาจารย์ประจำภาควิชาวิศวกรรมไฟฟ้าและคอมพิวเตอร์ มหาวิทยาลัยธรรมศาสตร์ โดยเป็นผู้รับผิดชอบในรายวิชาการพัฒนาระบบสมองกลฝังตัว วิศวกรรมซอฟต์แวร์ การ และเครือข่ายเซ็นเซอร์ไร้สาย  งานวิจัยที่ดำเนินการอยู่ในปัจจุบันประกอบด้วยการพัฒนาแพลตฟอร์ม Android เพื่องานโลจิสติกส์ การประยุกต์เครือข่ายเซ็นเซอร์ไร้สายเพื่อการเกษตร และการประยุกต์ใช้ลินุกซ์ฝังตัวเพื่อการท่องเที่ยวและโลจิสติกส์   
 
 



 
 
รายละเอียดของกิจกรรมต่างๆสามารถดูย้อนหลังได้จากเว็บไซต์ของห้องวิจัยและปฏิบัติการที่ http://tensai-lab.engr.tu.ac.th


[1] หน่วยงาน Software Engineering Center ถูกก่อตั้งด้วยวัตถุประสงค์ที่จะดำเนินกิจกรรมยกระดับความสามารถของอุตสาหกรรมซอฟต์แวร์ของประเทศญี่ปุ่นในการผลิตซอฟต์แวร์ที่มีคุณภาพ รองรับการพัฒนาโครงการซอฟต์แวร์ขนาดใหญ่ และสร้างตัวชี้วัดความเชี่ยวชาญของบุคลากร   

 

Back to E-magazine List
 

ECTI Association
99 M.18 Paholyothin Rd., Klong Luang, Pathumthani 12120, THAILAND
E-mail: ecti.secretary@gmail.com
Find us on: