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

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

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

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) เสียก่อนจึงจะได้เป็นโปรแกรมที่พร้อมใช้งาน

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

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

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

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

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