การพัฒนาซอฟต์แวร์ เขียนโปรแกรม จัดทำข้อมูล และวิจัย

ภาษาคอมพิวเตอร์ สำหรับการพัฒนาโปรแกรมให้มีคุณภาพ

ภาษาคอมพิวเตอร์ หมายถึง โปรแกรมหรือชุดคำสั่งที่มนุษย์เขียนขึ้นเพื่อสั่งงานให้คอมพิวเตอร์ทำงานตามความต้องการ ภาษาที่ใช้เขียนโปรแกรมคอมพิวเตอร์มีมากมาย แต่ละภาษาจะมีลักษณะโครงสร้างและกฎเกณฑ์ที่แตกต่างกัน โดยทั่วไปจะแบ่งภาษาคอมพิวเตอร์ได้ 3 ระดับคือ
1. ภาษาเครื่อง (Machine Language) ภาษาเครื่องเป็นภาษารหัสตัวเลข ที่เครื่องคอมพิวเตอร์สามารถรับรู้และปฏิบัติตามได้ทันที ผู้ใช้เครื่องคอมพิวเตอร์ยุคแรก ๆ ต้องเขียนโปรแกรมด้วยภาษาเครื่อง ซึ่งเป็นภาษาที่คนทำความเข้าใจยาก นอกจากนั้นเครื่องคอมพิวเตอร์แต่ละเครื่องยังใช้รหัสเลขที่ต่างกันด้วย ดังนั้นการใช้คอมพิวเตอร์ โดยใช้ภาษาเครื่องจึงเป็นเรื่องที่ยุ่งยาก และมักจะเกิดความผิดพลาดเสมอ แต่ก็เป็นภาษาที่เครื่องคอมพิวเตอร์สามารถเข้าใจและทำงานได้อย่างง่ายดาย
2. ภาษาระดับต่ำ (Low Level Language) ภาษาระดับต่ำเป็นภาษาที่ใกล้เคียงกับภาษาเครื่องมาก จึงเรียกได้ว่าเป็นภาษาอิงเครื่อง (Machine Oriented Language) เป็นภาษาที่ใช้รหัสตัวเลขประกอบกับอักขระภาษาอังกฤษด้วย เช่น ภาษาแอสเซมบลี (Assembly Language) ภาษาระดับต่ำนี้ เขียนได้ง่ายขึ้น แต่ภาษาแอสเซมบลี นี้ เครื่องคอมพิวเตอร์ไม่สามารถเข้าใจภาษาได้โดยตรง เวลาใช้งานจำเป็นต้องอาศัยโปรแกรมแปลภาษาเอสเซมเบลอ (Assembler Programme) และโปรแกรมเอสแซมเบลอที่ใช้กับคอมพิวเตอร์เครื่องหนึ่งจะใช้กับคอมพิวเตอร์เครื่องอื่น ๆ ไม่ได้
3. ภาษาระดับสูง (High Level Language) ภาษาระดับสูงเป็นภาษาที่อำนวยความสะดวก ให้กับคนเขียนโปรแกรมอย่างมาก ลักษณะคำสั่งใช้ภาษาอังกฤษที่ผู้อ่านเข้าใจได้ ซึ่งเป็นภาษาที่เขียนและเข้าใจง่ายกว่า ภาษาเอสแซมบลี แต่เครื่องคอมพิวเตอร์จะไม่เข้าใจได้ทันทีต้องอาศัยตัวแปลภาษา เช่น ภาษาฟอร์แทรน (FORTRAN) ภาษาโคบอล (COBOL) ภาษาเบสิค (BASIC) และภาษาอาร์พีจี (RPG) เป็นต้น

ภาษาคอมพิวเตอร์สำหรับการพัฒนาโปรแกรมมีอยู่มากมาย แต่ละภาษามีโครงสร้างของโปรแกรม ไวยากรณ์ และความสามารถ ใช้สภาพแวดล้อมของคอมพิวเตอร์ที่แตกต่างกัน ภาษาคอมพิวเตอร์ที่นิยมใช้ในการเขียนโปรแกรมได้แก่
1. ภาษาฟอร์แทรน (FORTRAN) พัฒนาขึ้นใน พ.ศ. 2497 สร้างขึ้นสำหรับแก้ปัญหาทางด้านคณิตศาสตร์และวิศวกรรมศาสตร์ และสามารถใช้กับงานด้านกราฟิก ทางด้านฐานข้อมูล และทางด้านเวิร์ดโพรเซสซิ่งได้เช่นกัน
2. ภาษาเบสิก (BASIC) พัฒนาขึ้นใน พ.ศ. 2508 โดยออกแบบให้เป็นภาษาที่ง่าย ๆ แต่มีความสามารถของภาษาฟอร์แทรน รวมกับภาษาโคบอลเข้าด้วยกัน สามารถนำไปใช้งานได้อย่างกว้างขวาง สามารถใช้โต้ตอบได้ ผู้ใช้สามารถได้รับการตอบสนองเพื่อสั่งพิมพ์เข้าเครื่องคอมพิวเตอร์ นิยมใช้กับเครื่องไมโครคอมพิวเตอร์ ภาษาเบสิกเป็นทั้งตัวอินเตอร์พรีเตอร์ และคอมไพเลอร์ในตัว เหมาะสำหรับงานทางด้านวิทยาศาสตร์และธุรกิจการค้า
3. ภาษาโคบอล (COBOL) พัฒนาขึ้นใน พ.ศ. 2502 เพื่อใช้งานด้านธุรกิจและพาณิชยการ ลักษณะภาษาโคบอลเป็นธรรมชาติ เขียนได้รวบรัดอ่านง่าย ความสำคัญของภาษาโคบอลคือ ขีดความสามารถในการจัดและการปรับแต่งไฟล์ข้อมูลที่ยาวได้สะดวก ข้อมูลสั้นก็สะดวกเช่นกัน รวมทั้งการสร้างไฟล์รายงานข้อมูลด้วย
4. ภาษาปาสคาล (Pascal) พัฒนาขึ้นใน พ.ศ. 2514 เป็นภาษาโครงสร้างที่สร้างเสริมความคิดที่เป็นระบบได้ดี ภาษาปาสคาลเป็นภาษาที่คล้ายกับภาษาอัลกอ แต่เป็นภาษาที่เล็กกว่า นิยมใช้กับไมโครคอมพิวเตอร์ เป็นภาษาที่ใช้งานง่ายโดยใช้ภาษาอังกฤษง่าย ๆ
5. ภาษาซี (C) พัฒนาขึ้นใน พ.ศ. 2517 พัฒนาเป็นภาษาที่มีโครงสร้างเรียบร้อยมาก เป็นภาษาที่มีประสิทธิภาพใกล้เคียงกับภาษาเครื่อง แต่ใช้งานได้ง่ายกว่า ถูกนำไปใช้งานโปรแกรมระบบ (System Programming) ภาษาซีที่ใช้กับคอมพิวเตอร์จะเป็นภาษาที่ง่ายกะทัดรัด เนื่องจากภาษาซีเป็นภาษาอิสระจากสถาปัตยกรรมคอมพิวเตอร์รุ่นใด ๆ ทั้งนั้น ใช้โปรแกรมร่วมกับคอมพิวเตอร์รุ่นใดก็ได้
6. ภาษาอัลกอล (ALGOL) พัฒนาขึ้นใน พ.ศ. 2503 เป็นภาษาที่มีความสามารถสูง รูปลักษณะคล้ายภาษาฟอร์แทรน แต่เป็นภาษาที่มีความยืดหยุ่นในการใช้งาน ข้อความรวบรัด สร้างขึ้นเพื่อเป็นภาษาเอนกประสงค์ สำหรับการแสดงกระบวนการแก้ปัญหาทางอัลกอริทึม เป็นภาษาที่มีโครงสร้างเป็นทางการ อ่านง่าย
7. ภาษาลิสฟ์ (LISP) พัฒนาขึ้นใน พ.ศ. 2503 เช่นกัน เป็นภาษาที่มีความสามารถสูงทางด้านงานแบบลิสฟ์
โพรเซสซิ่ง นักวิจัยคอมพิวเตอร์ศึกษาเกี่ยวกับปัญหาเทียมหรือสมองเทียม (Artificial Intelligent) เลือกใช้ภาษาลิสฟ์ ซึ่งสามารถเปลี่ยนแปลงความยาว หรือโครงสร้างในขณะที่คอมพิวเตอร์กำลังทำงานอยู่ได้ นิยมใช้แสดงรูปประโยคภาษาอังกฤษ หรือสูตรทางคณิตศาสตร์ วิทยาศาสตร์และเลียนแบบกระบวนการแก้ปัญหาของมนุษย์ด้วย
8. ภาษาอาร์ พี จี (RPG) พัฒนาขึ้นใน พ.ศ. 2507 เป็นภาษาที่ใช้กับมินิคอมพิวเตอร์ สำหรับงานทางด้านธุรกิจ สามารถสร้างรายงานจากข้อมูล โดยการเขียนภาษาอาร์ พี จี สามารถเขียนและใช้งานเป็นส่วน ๆ ไม่จำเป็นต้องเขียนเป็นโปรแกรมยาว ๆ
9. ภาษาพี แอล วัน (PL/1) พัฒนาขึ้นใน พ.ศ. 2508 เป็นภาษาที่ออกแบบไว้ใช้งานทางธุรกิจและวิทยาศาสตร์ เป็นภาษาที่นำเอาขีดความสามารถของภาษาฟอร์แทรน และภาษาโคบอลไว้ด้วยกัน เป็นภาษาที่ง่าย รวบรัด สามารถรวบไฟล์หรือเรคคอร์ดทั้งทางด้าน Input และ Output ได้ สามารถแสดงข้อมูลในรูปของอาร์เรย์ได้ง่าย
10. ภาษาเอ พี เอล (APL) พัฒนาขึ้นใน พ.ศ. 2510 เป็นภาษาที่มีชุดตัวกระทำพื้นฐาน (Primitive Operators)
ที่ใช้ทำหน้าที่ต่าง ๆ เช่น สร้างเลขดัชนี สร้างเลขแบบสุ่ม เป็นภาษายอดนิยมของนักสถิติ สามารถใช้งานทางด้านธุรกิจได้เช่นกัน เช่น การผลิตเอกสาร ด้านวิเคราะห์ ด้านกราฟิก การจัดการระบบฐานข้อมูล ลักษณะภาษาคล้ายภาษาสนทนา เข้าใจง่าย แต่สามารถทำงานได้เร็ว
11. ภาษาสมอลท้อค (SMALL TALK) พัฒนาขึ้นใน พ.ศ. 2515 เพื่อใช้ในวงการศึกษา สามารถช่วยครูแก้ปัญหาทางการสอนได้ ใช้สร้างกราฟิก และการอธิบายทางการศึกษาได้ดี แต่ก็สามารถนำมาใช้งานด้านธุรกิจได้ด้วย จึงมีลักษณะเป็นภาษาเอนกประสงค์
12. ภาษาไพล็อท (PILOT) พัฒนาขึ้นใน พ.ศ. 2516 เป็นภาษาที่พัฒนาขึ้นสำหรับใช้สอนเด็กเกี่ยวกับการทำงานของคอมพิวเตอร์ นิยมนำไปเขียนโปรแกรมการสอน เพื่อใช้เป็นคอมพิวเตอร์ช่วยสอน (CAI) ภาษาที่ใช้ควบคู่กับไพล็อทคือภาษาโลโก้ (LOGO) ซึ่งพัฒนาขึ้นมาด้วยจุดมุ่งหมายเดียวกัน
13. ภาษาฟอร์ท (FORTH) พัฒนาขึ้นใน พ.ศ. 2518 มีลักษณะคล้ายภาษาแอสแซมบลี ระดับสูง ออกแบบไว้ใช้งาน System Promgramming ผู้ใช้สามารถพิมพ์คำสั่งใหม่ ๆ เข้าไปได้ และสามารถเก็บคำสั่งและเรียกออกมาใช้งานได้ ดังนั้น ผู้ใช้สามารถนำไปใช้สร้างโปรแกรมให้เหมาะสมกับความต้องการของตนได้ มักใช้ในงานสถิติ ธุรกิจการเงิน และด้านไฟลิ่ง

การศึกษาวิจัยด้านการสื่อสารภายในองค์กร

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

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

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

การพัฒนาโปรแกรมระบบปฏิบัติการของโปรแกรมที่ใช้ควบคุมและติดต่อกับอุปกรณ์ต่าง ๆ ในซอฟต์แวร์

8

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

โปรแกรมระบบปฏิบัติการเป็นโปรแกรมที่ใช้ควบคุมและติดต่อกับอุปกรณ์ต่าง ๆ ของเครื่องคอมพิวเตอร์ โดยเฉพาะการจัดการระบบของดิสก์ การบริหารหน่วยความจำของระบบ กล่าวโดยสรุปคือ หากจะทำงานใดงานหนึ่งโดยใช้คอมพิวเตอร์เป็นเครื่องมือในการทำงานแล้วจะต้องติดต่อกับซอฟต์แวร์ระบบก่อน ถ้าขาดซอฟต์แวร์ชนิดนี้จะทำให้เครื่องคอมพิวเตอร์ไม่สามารถทำงานได้ ตัวอย่างของซอฟต์แวร์ประเภทนี้ได้แก่ โปรแกรมระบบปฏิบัติการ DOS Unix Windows Sun OS/2 Warp Netware และ Linux ตัวแปลภาษาจาก Source Code ให้เป็น Object Code เป็นซอฟต์แวร์ที่ใช้ในการแปลภาษาแบ่งออกเป็น 2 ประเภทคือ คอมไพเลอร์ และอินเตอร์พรีเตอร์ คอมไพเลอร์จะแปลคำสั่งในโปรแกรมทั้งหมดก่อนแล้วทำการลิ้ง (Link) เพื่อให้ได้คำส่งที่เครื่องคอมพิวเตอร์เข้าใจ ส่วนอินเตอร์พีทเตอร์จะแปลทีละประโยคคำสั่งแล้วทำงานตามประโยคคำสั่งนั้น การจะเลือกใช้ตัวแปลภาษาแบบใดนั้นจะขึ้นอยู่กับภาษาที่ใช้ในการเขียนโปรแกรม เช่น ภาษาเบสิก (Basic) ภาษาปาสคาล (Pascal) ภาษาซี (C) ภาษาจาวา (Java) ภาษาโคบอล (Cobol) ภาษา SQL ภาษา HTML เป็นต้น

ยูทิลิตี้โปรแกรม คือ ซอฟต์แวร์เสริมช่วยให้เครื่องทำงานมีประสิทธิภาพมากขึ้น เช่น ช่วยในการตรวจสอบดิสก์ ช่วยในการจัดเก็บข้อมูลในดิสก์ ช่วยสำเนาข้อมูล ช่วยซ่อมอาการชำรุดของดิสก์ ช่วยค้นหาและกำจัดไวรัส ฯลฯ เป็นต้น โปรแกรมในกลุ่มนี้ได้แก่โปรแกรม Norton WinZip Scan virus Sidekick Scandisk Screen Saver ฯลฯ เป็นต้น ติดตั้งและปรับปรุงระบบ เป็นซอฟต์แวร์ที่ใช้ในการติดตั้งระบบเพื่อให้คอมพิวเตอร์สามารถติดต่อและใช้งานอุปกรณ์ต่าง ๆ ที่นำมาติดตั้งระบบ ได้แก่ โปรแกรม Setup และ Driver ต่าง ๆ เช่น โปรแกรม Setup Windows Setup Microsoft Office โปรแกรม Driver Sound Driver CD-ROM Driver Printer Driver Scanner ฯลฯ เป็นต้น

การใช้ซอฟต์แวร์ในภาคอุตสาหกรรมการศึกษา

130709_06

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

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

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

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

5 ปัญหาหลักในการพัฒนาซอฟต์แวร์พบบ่อยในปัจจุบัน

34

5 ปัญหาหลักในการพัฒนาซอฟต์แวร์ หรือจะว่าเป็น 5 ปัญหาคลาสสิกเลยก็ว่าได้ ถึงจะไม่เคยได้พัฒนาซอฟต์แวร์อย่างเต็มรูปแบบก็ตาม แต่ในช่วงเรียนปี 3 ก็พอมีอยู่บ้างเป็นโปรเจคใหญ่ที่ต้องนำมาพัฒนามีกระบวนการการทำงานต่างๆ เหมือนกับว่าเราทำงานจริงๆเลย และ อาจารย์ก็มักจะตรวจสอบความคืบหน้าของโปรเจคเราอยู่ทุกๆสัปดาห์เลย เพื่อให้อาจารย์มองเห็นปัญหาต่างๆ ในการทำงานของเรา …และในช่วงสอบ Final เทอมหนึ่งของปีที่ 3 ก็ได้มีข้อสอบของรายวิชานึงวิชานี้จะเป็นจะมีการเรียนการสอนที่คล้ายกับ Team Software Process ข้อสอบรายวิชานี้จะเป็นปัญหาต่างๆของเราในการพัฒนาโปรเจค ซึ่งก็คือปัญหาหลักๆ หรือปัญหาคลาสสิกของนักพัฒนาซอฟต์แวร์นั่นเองความต้องการจากผู้ใช้ ที่ไม่ชัดเจน คลุมเคลือขาดความสมบูรณ์ เรียบง่ายจนเกินไป จนไม่สามารถวิเคราะห์ได้ว่าต้องการอะไรและอื่นๆ อาจมีต้นเหตุมาจากความต้องการอีกมาก

แผนงานโครงการไม่ดี มีลัษกณะเป็นแผนงานที่เพ้อฝัน การวางแผนไม่ได้ตั้งอยู่บนข้อมูลที่แท้จริง ทำแบบเพ้อฝันไม่คิด ขาดข้อมูลที่ได้จากการปรึกษาหารือสมาชิกในทีม ไม่ว่าจะเกิดจากสาเหตุใดๆ ก็ตาม ขาดการประสานงานย่อยที่สำคัญกับผู้ใช้หรือลูกค้า การจัดทำแผนอาศัพเพียงความรู้ความเข้าใจของตนเองเป็นหลักการทำสอบซอฟต์แวร์ไม่เพียงพอ มักจะพบปัญหาในลักษณะที่ว่าซอฟต์แวร์นี้ผ่านการทดสอบมาได้อย่างไร ปัญหามากมาย ไม่มีคุณภาพทั้งในระดับระหว่างการทำงานร่วมกันในทีม หรือหลังส่งมอบให้ลูกค้าแล้ว หรือมีการทดสอบซอฟต์แวร์ที่ขาดความรอบคอบเวลาในการทดสอบไม่เพียงพอ และอื่นๆ อีกมากมีการเปลี่ยนแปลงไม่จบสิ้น (Always Change) ในระหว่างที่พัฒนาซอฟต์แวร์ มักจะขอให้มีการเปลี่ยนแปลง Features หรือ Functions ไม่ว่าจะเพิ่มขึ้นหรือตัดออก มั้กจะสร้างปัญหาให้กับทีมพัฒนาบ่อยครั้งที่กระทบกระเทือนถึง Solution Design ทำให้ต้องทำงานเพิ่มหรือทำงานใหม่เกือบทั้งหมด หรือในบางครั้งถึงกับต้องออกแบบใหม่ก็มีการขาดการติดต่อสื่อสารที่ดี ปัญหาหลายอย่างเกิดขึ้นจากการไม่เข้าใจกันและมีการติดต่อสื่สารกันอย่างผิดๆ หรือไม่มีการติดต่อสื่อสารกันเลย ปัญหาเช่นว่านี้เกิดขึั้นได้ในทุกๆระดับ ทั้งระหว่างทีมพัฒนาซอฟต์แวร์ด้วยกันเอง หรือปัญหาที่ไปเกิดกับผู้ใช้

ปัจจุบันพบว่ามีเทคโนโลยีใหม่ ๆ เกิดขึ้นมากมายไม่ว่าจะเป็นเทคโนโลยีคอมพิวเตอร์

34

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

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

การพัฒนาซอฟต์แวร์สำเร็จรูปที่ใช้สร้างสรรค์งาน


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

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

ซอฟต์แวร์ ชุดคำสั่งที่สั่งงานคอมพิวเตอร์เป็นลำดับขั้นตอนของการทำงาน ชุดคำสั่งเหล่านี้ได้จัดเตรียมไว้ในหน่วยความจำของคอมพิวเตอร์ คอมพิวเตอร์อ่านชุดคำสั่งแล้วทำงานตาม ซอฟต์แวร์จึงเป็นสิ่งที่มนุษย์จัดทำขึ้น และคอมพิวเตอร์จะทำงานตามคุณลักษณะของซอฟต์แวร์ที่วางไว้แล้วเท่านั้น ชนิดของซอฟต์แวร์ ในบรรดาซอฟต์แวร์หรือโปรแกรมคอมพิวเตอร์ ที่มีผู้พัฒนาขึ้นเพื่อใช้งานกับคอมพิวเตอร์มีมากมาย ซอฟต์แวร์เหล่านี้อาจได้รับการพัฒนาโดยผู้ใช้งานเอง หรือผู้พัฒนาระบบ หรือผู้ผลิตจำหน่ายหากแบ่งแยกชนิดของซอฟต์แวร์ตามสภาพการทำงาน พอแบ่งแยกซอฟต์แวร์ไว้เป็นสองประเภท คือ ซอฟต์แวร์ระบบ และซอฟต์แวร์ประยุกต์ (application software)
1. ซอฟต์แวร์ระบบ หมายถึง ชุดคำสั่งหรือโปรแกรมที่บริษัทผู้ผลิตสร้างขึ้นมาเพื่อใช้จัดการกับระบบ ซึ่งจะทำหน้าที่ควบคุมการทำงานของคอมพิวเตอร์ และอุปกรณ์ต่าง ๆ เช่น การนำเข้าข้อมูลของอุปกรณ์นำเข้า การประมวลผลของหน่วยประมวลผล การจัดสรรหน่วยความจำสำรอง และการแสดงผลของอุปกรณ์แสดงผล เป็นต้น เมื่อผู้ใช้เริ่มเปิดเครื่องคอมพิวเตอร์ การทำงานจะเป็นไปตามชุดคำสั่งที่เขียนขึ้น ชุดคำสั่งนั้นก็คือ ซอฟต์แวร์ระบบ
2. ซอฟต์แวร์ประยุกต์ เป็นซอฟต์แวร์ที่ใช้กับงานด้านต่าง ๆ ตามความต้องการของผู้ใช้ ที่สามารถใช้ประโยชน์ได้โดยตรง ปัจจุบันมีผู้พัฒนาซอฟต์แวร์ใช้งานทางด้านต่าง ๆ ออกจำหน่ายมาก การประยุกต์งานคอมพิวเตอร์จึงกว้างขวางและแพร่หลาย เราอาจแบ่งซอฟต์แวร์ประยุกต์ออกเป็นสองกลุ่ม คือ ซอฟต์แวร์สำเร็จ และซอฟต์แวร์ที่พัฒนาขึ้นใช้เฉพาะงาน

การใช้งานคอมพิวเตอร์ต้องมีซอฟต์แวร์ประยุกต์

การที่เทคโนโลยีคอมพิวเตอร์ได้พัฒนาก้าวหน้าอย่างรวดเร็ว โดยเฉพาะการที่มีคอมพิวเตอร์ขนาดเล็ก ทำให้มีการใช้งานคล่องตัวขึ้น จนในปัจจุบันสามารถนำคอมพิวเตอร์ขนาดเล็ก ติดตัวไปใช้งานในที่ต่าง ๆ ได้สะดวก

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

ในบรรดาซอฟต์แวร์ประยุกต์ที่มีใช้กันทั่วไป ซอฟต์แวร์สำเร็จ (package) เป็นซอฟต์แวร์ที่มีความนิยมใช้กันสูงมาก ซอฟต์แวร์สำเร็จเป็นซอฟต์แวร์ที่บริษัทพัฒนาขึ้น แล้วนำออกมาจำหน่าย เพื่อให้ผู้ใช้งานซื้อไปใช้ได้โดยตรง ไม่ต้องเสียเวลาในการพัฒนาซอฟต์แวร์อีก ซอฟต์แวร์สำเร็จที่มีจำหน่ายในท้องตลาดทั่วไป และเป็นที่นิยมของผู้ใช้มี 5 กลุ่มใหญ่ ได้แก่ ซอฟต์แวร์ประมวลคำ (word processing software) ซอฟต์แวร์ตารางทำงาน (spread sheet software) ซอฟต์แวร์จัดการฐานข้อมูล (data base management software) ซอฟต์แวร์นำเสนอ (presentation software) และซอฟต์แวร์สื่อสารข้อมูล (data communication software)

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

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

3) ซอฟต์แวร์จัดการฐานข้อมูล การใช้คอมพิวเตอร์อย่างหนึ่งคือการใช้เก็บข้อมูล และจัดการกับข้อมูลที่จัดเก็บในคอมพิวเตอร์ จึงจำเป็นต้องมีซอฟต์แวร์จัดการข้อมูล การรวบรวมข้อมูลหลาย ๆ เรื่องที่เกี่ยวข้องกันไว้ในคอมพิวเตอร์ เราก็เรียกว่าฐานข้อมูล ซอฟต์แวร์จัดการฐานข้อมูลจึงหมายถึงซอฟต์แวร์ที่ช่วยในการเก็บ การเรียกค้นมาใช้งาน การทำรายงาน การสรุปผลจากข้อมูล ซอฟต์แวร์จัดการฐานข้อมูลที่นิยมใช้ เช่น เอกเซส ดีเบส พาราด็อก ฟ๊อกเบส

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

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

การพัฒนาซอฟต์แวร์ให้ประสบความสำเร็จนั้นไม่ใช่เรื่องง่าย

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

1. ปัญหาด้านการตลาด

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

2. ปัญหาด้านการวิจัยและพัฒนาเทคโนโลยี

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

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

3. ปัญหาด้านคุณภาพ

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

สาเหตุอื่นๆ ที่ทำให้ซอฟต์แวร์ของไทยขาดคุณภาพ ได้แก่ การขาดการบริหารโครงการที่ดีการขาดบุคลากรที่มีทักษะทันสมัยในด้านการพัฒนาและทดสอบซอฟต์แวร์ การขาดวิธีการกำหนดคุณลักษณะซอฟต์แวร์ที่เหมาะสม ฯลฯ

หากจะมีการเพิ่มคุณภาพของซอฟต์แวร์ไทย ก็จำเป็นอย่างยิ่งที่จะต้องปรับปรุงเรื่องของกระบวนการพัฒนาซอฟต์แวร์ (ซึ่งรวมถึงการกำหนดคุณลักษณะซอฟต์แวร์ และการประเมินคุณภาพของซอฟต์แวร์) และการพัฒนาบุคลากรด้านซอฟต์แวร์ไปพร้อมกันด้วย

การพัฒนาโปรแกรมภาษาคอมพิวเตอร์เพื่อช่วยในการแก้ปัญหา

การให้คอมพิวเตอร์แก้ปัญหาต่างๆให้เรา

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

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

การพัฒนาโปรแกรมคอมพิวเตอร์ให้กับระบบงานขนาดใหญ่

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

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

การพัฒนาซอฟต์แวร์และโปรแกรมอินเตอร์เน็ตให้ทันสมัยในปัจจุบัน

6

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

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

การพัฒนาระบบเทคโนโลยีสารสนเทศที่เป็นประโยชน์สูงสุด

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

การที่นำระบบคอมพิวเตอร์มาประยุกต์ในการดำเนินงานทางธุรกิจ

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

ระบบสารสนเทศทางธุรกิจ

1. ระบบสารสนเทศด้านการบัญชี (Accounting Information System)
2. ระบบสารสนเทศด้านการเงิน (Financial Information System)
3. ระบบสารสนเทศด้านการตลาด (Marketing Information System)
4. ระบบสารสนเทศด้านการผลิตและการดำเนินงาน (Production and Operations Information System)
5. ระบบสารสนเทศด้านทรัพยากรบุคคล (Human Resource Information System)

การพัฒนาระบบระบบสารสนเทศ

1)กระบวนการทางธุรกิจ เกี่ยวข้องกับวัตถุประสงค์ เป้าหมาย และขั้นตอนการดำเนินธุรกิจขององค์การ
2)บุคลากร
3)วิธีการและเทคนิค การเลือกใช้วิธีการและเทคนิคที่เหมาะสมกับลักษณะของระบบเป็นสิ่งสำคัญ
4)เทคโนโลยี มีการเปลี่ยนแปลงอย่างรวดเร็วจึงต้องมีการพิจารณาอย่างรอบคอบในการเลือกใช้เทคโนโลยีสารสนเทศให้มีความเหมาะสมกับลักษณะขอบเขตของระบบสารสนเทศและงบประมาณที่กำหนด  5)งบประมาณ
6)ข้อมูลและโครงสร้างพื้นฐานภายในองค์การ
7)การบริหารโครงการ

การพัฒนาซอฟต์แวร์ เพื่อการเขียนโปรแกรมที่มีคุณภาพ

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

รูปภาพ1

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

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

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

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

การพัฒนาระบบและซอฟต์แวร์ในการใช้งานในด้านต่างๆ

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

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

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