วันเสาร์ที่ 19 มีนาคม พ.ศ. 2554


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

ทำความรู้จักกับภาษาที่ใช้เขียนโปรแกรมคอมพิวเตอร์

1) ชนิดของภาษาที่ใช้เขียนโปรแกรม

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


ภาษาโปรแกรมคอมพิวเตอร์ สามารถแบ่งได้เป็น 4 ชนิดหลักๆ คือ

1.ภาษาเครื่อง (Machine Language)
2.ภาษาแอสแซมบลี (Assembler Language)
3.ภาษาระดับสูง (High-Level Language)
4.ภาษาในยุคที่ 4 (Fourth-generation Language)
ซึ่งภาษาโปรแกรมทั้ง 4 ชนิดนี้มีความสัมพันธ์กันเป็นระดับชั้น ซึ่งภาษาโปรแกรมต่างๆ เหล่านี้ต้องผ่านการแปลในแต่ละลำดับชั้น ซึ่งผลของการแปลจะได้ microinstructions หรือ machine language instruction codes ที่สามารถทำงาน (execute) โดยวงจรตรรก ของซีพียู

1. ภาษาเครื่อง (Machine Languages)

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

2. ภาษาแอสแซมบลี (Assembler Languages)

เป็นภาษา ที่อยู่ในลำดับขั้นที่สูงกว่าภาษาเครื่อง ซึ่งพัฒนาให้เขียนง่ายกว่าภาษาเครื่อง อาจเรียกว่า ภาษาสัญลักษณ์ (Symbolic Language) ก็ได้ เพราะใช้สัญลักษณ์ แทน คำสั่งปฏิบัติงานและตำแหน่งที่เก็บข้อมูล เช่น ใช้ ST แทน 1100 ซึ่ง 1100 เป็นคำสั่งให้เก็บค่าของข้อมูลโดยแทนให้เป็น ST ในภาษาแอสแซมบลี ซึ่งภาษาแอสแซมบลีจะแทนคำสั่งปฏิบัติงานต่างๆ ด้วยตัวอักษร ซึ่งเรียกว่า mnemonics (memory aids) ดังนั้น โปรแกรมเมอร์ที่เขียนคำสั่งด้วยภาษาแอสแซมบลี ไม่สามารถสื่อสารกับคอมพิวเตอร์ได้โดยตรง ต้องมีล่ามในการแปลตัวอักษรต่างๆ เหล่านี้ให้เป็นภาษาเครื่องอีกที ตัวล่ามที่ว่านี้ เป็นโปรแกรมแปลภาษา ซึ่งเรียกว่า แอสแซมเบอร์ (assemblers)

3. ภาษาระดับสูง (High Lavel Language)

ภาษาระดับสูง หรือเรียกอีกอย่างว่า compiler languages คำสั่งของภาษาะระดับสูง เรียกว่า statements ซึ่งลักษณะการแทนคำสั่งต่างๆจะใกล้เคียงกับภาษาอังกฤษที่เข้าใจได้ง่าย การคำนวณจะมีรูปแบบการแทนค่าเป็นมาตรฐาน ที่เห็นใช้กันโดยทั่วไป ซึ่งคำสั่งของภาษาระดับสูง คือคำสั่งมาโคร ซึ่งเมื่อทำการแปล โดย compilers หรือ interpreters แล้วจะเกิดเป็นคำสั่งเครื่องหลายคำสั่ง ภาษาระดับสูงส่วนมากได้มีการออกแบบให้เป็น machine indendent คือสามารถประมวลผลกับคอมพิวเตอร์ซึ่งผลิตจากผู้ผลิตที่แตกต่างกันได้ โดยขึ้นอยู่กับ compiler เป็นต้น

4. ภาษาในยุคที่ 4 (Fourth Generation Languages)

สามารถเรียกได้หลายชื่อ เช่น very high level language (VHLL) , non procedural language , avtoral language application oriented language , user oriented language การสร้างโปรแกรมและงานประยุกต์ของภาษาในยุคที่ 4 จะเกี่ยวข้องกับ การสอบถาม (query) การสร้างรายงาน (report generator) และการจัดการข้อมูล (data manipulation) โดยผู้ใช้และโปรแกรมเมอร์สามารถประมวลผลฐานข้อมูลและระบบโดยใช่คำสั่งที่เหมือนภาษาอังกฤษที่ใช้พูดหรือเขียน ซึ่งเป็นภาษาธรรมชาตินั้นเอง

4.1 ภาษาธรรมชาติ (Natural Language)

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

ภาษาโปรแกรมที่นิยมใช้ (Popular Programming Language)

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

1) ภาษาเบสิค (BASIC)

คำว่า BASIC ย่อมาจาก Beginner’s All purpose Symbolic Instruction Code เป็นภาษาที่เคยได้รับความนิยมเนื่องจากเป็นภาษาที่ง่ายต่อการเรียนรู้ เหมาะสมสำหรับใช้กับเครื่องคอมพิวเตอร์ขนาดเล็ก สามารถแก้ปัญหากับงานที่มีขนาดเล็ก ถูกพัฒนาขึ้นในปี ค.ศ. 1960 ที่ Dartmouth College เพื่อฝึกให้นักศึกษาสามารถสนทนาโดยโต้ตอบกับเครื่องคอมพิวเตอร์ได้ โดยใช้ระบบแบ่งเวลา (time sharing) ต่อจากนั้นได้พัฒนาต่อมาอีกหลายรุ่น เพื่อให้สามารถแก้ปัญหาได้ทั้งการประมวลผลแบบกลุ่ม (batch) และการประมวลผลแบบทันทีทันใด (realtime) ซึ่งความสามารถต่างๆที่ได้ขยายเพิ่มขึ้น ทำให้ภาษา BASIC ไม่มีมาตรฐาน ดังนั้นในปี ค.ศ. 1978 จึงได้ระบุถึงความสามารถที่เป็นมาตรฐานของภาษา ซึ่งถ้ามีความสามารถสูงกว่า จะเรียกว่า Extend BASIC

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

2) ภาษาโคบอล (COBOL)

คำว่า COBOL ย่อมาจาก Common Business Oriented Language ซึ่งเป็นภาษาที่ใช้สำหรับประมวลผลข้อมูลทางธุรกิจ ภาษานี้คล้ายภาษาอังกฤษ มีการออกแบบให้สามารถประมวลผลได้หลายแฟ้มข้อมูล ถูกพัฒนาและบำรุงรักษาโดย CODASYL (Conference On Data System Language) ซึ่งประกอบด้วย ตัวแทนของผู้ใช้เครื่องขนาดใหญ่ ตัวแทนของรัฐบาล และผู้ผลิตเครื่องคอมพิวเตอร์ โดยพัฒนา ANSI (American National Standard Institute) เป็นมาตรฐานของภาษาโคบอล

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

3) ภาษาฟอร์แทรน (FORTRAN)

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

หลายๆรุ่นของภาษานี้ ได้พัฒนาจุดเด่นเพิ่มขึ้น เช่น WATFOR , WATFIV , XTRAN และ FASTRAN สามารถนำไปสอนที่โรงเรียน เป็นโปรแกรมในลักษณะของการโต้ตอบ (interactive) คล้ายๆกับภาษาเบสิค ทำให้ภาษานี้มีมาตรฐาน 2 รูปแบบ คือ FORTRAN และ BASIC FORTRAN ถูกกำหนดโดย American National Standards Institute in cooperation และผู้ผลิตคอมพิวเตอร์ โดย Basic FORTRAN จะเป็นรุ่นที่เป็นมาตรฐานโดยทั่วๆไป ที่ใช้ได้กับคอมพิวเตอร์โดยทั่วไป ส่วน FORTRAN จะเพิ่มจุดเด่นโดยบรรจุคำสั่งต่างๆที่ใช้งานที่มากขึ้น

4) ภาษา PL/1

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

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

5) ภาษาปาสคาล (PASCAL)

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

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

ความเปลี่ยนแปลงในการเขียนโปรแกรมคอมพิวเตอร์ (Changes in Computer Programming)

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

(1) Programmer productivity

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

(2) Programming quality

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

(3) Programming cost

ค่าใช้จ่ายในการพัฒนาโปรแกรม การทดสอบ การบำรุงรักษา และการทำให้ถูกต้อง สูงเพิ่มขึ้นเรื่อยๆ

วัฏจักรในการพัฒนาระบบ (The Systems Development Cycle)




วิธีการในการพัฒนาระบบประมวลผลข้อมูล เรียกว่า system development หรือ application development หรือ system analysis and design แบ่งออกเป็น 6 ขั้นตอน

(1) System investigation

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

(2) System analysis

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

(3) System design

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

(4) Software development

เป็นขั้นตอนในการพัฒนาโปรแกรม โดยสร้างโปรแกรมขึ้นมาเพื่อให้สามารถทำงานได้ ตามที่ได้ออกแบบระบบไว้

(5) System implementation

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

(6) System maintenance

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

เป็นตอนสุดท้ายสำหรับการศึกษา หลักการพัฒนาการเขียนโปรแกรมคอมพิวเตอร์

ระยะต่างๆของการเขียนโปรแกรม (The Stages of the Programming Process)

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

(1) Program analysis

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

(2) Program design

เป็นระยะของการวางแผน และออกแบบ ถึงคุณลักษณะของข้อมูลเข้า ข้อมูลออก หน่วยเก็บข้อมูล วิธีดำเนินการประมวลผล

(3) Program coding

เป็นระยะของการเขียนคำสั่งภาษาโปรแกรม ซึ่งเปลี่ยนจาก Program design เป็นโปรแกรมคอมพิวเตอร์ที่สมบูรณ์

(4) Program verification

เป็นระยะของการตรวจทาน ทดสอบ โปรแกรมที่เขียนขึ้น ให้ถูกต้องและสมบูรณ์ ตรงความต้องการของระบบ ซึ่งเรียกว่า debugging และ testing

(5) Program documentation

เป็นระยะของการบันทึกรายละเอียดของการออกแบบ และรายละเอียดของโปรแกรม โดยจัดทำเป็นคู่มือ และเอกสาร ของระบบ

(6) Program maintenance

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

การตรวจสอบความถูกต้องของโปรแกรม (Program Verification)



การตรวจทานโปรแกรม โดยทั่วไปเรียกว่า debugging ซึ่งเป็นระยะหนึ่งในการเขียนโปรแกรม ซึ่งรวมถึงการตรวจสอบ (checking) การทดสอบ (testing) และ การทำให้ถูกต้อง (correction) เพราะการเขียนคำสั่งโปรแกรมใหม่ๆ อาจเกิดข้อผิดพลาด (bogs) ได้ง่าย

1. ข้อผิดพลาดในการเขียนโปรแกรม (Programming Error)

ข้อผิดพลาดในการเขียนโปรแกรม สามารถแบ่งเป็น 3 ชนิดคือ syntax , logic และ system design errors

Syntax error เป็นข้อผิดพลาดที่เกิดจากการเขียนคำสั่งโปรแกรมผิดรูปแบบ ไวยากรณ์ของภาษา

Logic error เป็นข้อผิดพลาดที่เกิดจากการใช้ตรรกผิดในโปรแกรม ซึ่งเงื่อนไขผิดมีผลให้การกระทำตามเงื่อนไขผิดไปด้วย

System design error เป็นข้อผิดพลาดจากการออกแบบระบบ ทำให้ผลของทำงานไม่เป็นที่ยอมรับของผู้ใช้ ซึ่งความผิดพลาดนี้ อาจเกิดจากการสื่อสารระหว่างโปรแกรมเมอร์กับผู้วิเคราะห์ระบบ หรือผู้ใช้ระบบ ไม่ดี

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

2. การตรวจสอบ (Checking)

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

3. Structured walkthroughs

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

การทดสอบ (Testing)




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

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

การทดสอบโปรแกรมกรณีที่ต้องการให้โปรแกรมที่พัฒนาขึ้นมา แทนที่การประมวลผลข้อมูลเก่าซึ่กำลังดำเนินอยู่ การทดสอบต้องกระทำขนานกันไปกับระบบเก่า ซึ่งเรียกการประมวลผลแบบนี้ว่า parallel processing ดังนั้นการทดสอบระบบต้องทดสอบจนกว่าจะแน่ใจว่าสามารถกระทำแทนที่ระบบเก่าได้ จึงจะนำเอาการปฏิบัติงานของระบบเก่าออกไปได้

ไม่มีความคิดเห็น:

แสดงความคิดเห็น