วันพฤหัสบดีที่ 24 มีนาคม พ.ศ. 2554

ข้อสอบ 25 มีนาคม 2554



จากบทความที่ให้ในเว็บ ให้นักศึกษาออกแบบและพัฒนาโปรแกรมตามขั้นตอนพัฒนาระบบ ตามกรณีศึกษาดังต่อไปนี้
1. โปรแกรมตรวจสอบบุคคล (แสกนลายมือ) 20 คะแนน
2. โปรแกรมคำนวณเงินเดือน (รายได้) 20 คะแนน
* ศึกษาจากบทความที่ให้แล้วเขียนตามขั้นตอนว่าทำอะไรบ้าง

ขณะนี้เวลา 10.00 น. เวลาสอบ 1 วัน
*ศึกษาเพิ่มเติ่มจาก http://www.bcoms.net/system_analysis/lesson3.asp

กรุณาลงชื่อเข้าสอบด้วยนะครับ โดยไปคลิกที่คำว่า ติดตาม แล้วกรอก E-mail ก็ได้แล้วครับ

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

กำนดการสอบ




กำหนดการสอบ กลุ่ม ทบค21
-25 มีนาคม เวลา 00.01น. -อัพโหลดข้อสอบ
-25 มีนาคม เวลา 00.01น.- 23.59 น. -ทำข้อสอบ
- หากส่างไม่นันก้อจะหักคะแนนวันละ 5 คะแน
- 24 ซ.ม. คิดเป็น 1 วัน
- ส่งเข้าเมล์ panyar_16@hotmail.com (ดูเวลาตามที่ได้รับจดหมาย)
-เหมือนกันหารสอง
- เนื้อหาส่วนที่เหลือจะขึ้นให้อีกประมาณ 2 บทความ
*************ไม่สอบไม่มีคะแนน ไม่มีเกรด*****************
มีปัญหาถามต้อม

หลักการพัฒนาการเขียนโปรแกรมคอมพิวเตอร์ ตอนที่ 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 ดังนั้นการทดสอบระบบต้องทดสอบจนกว่าจะแน่ใจว่าสามารถกระทำแทนที่ระบบเก่าได้ จึงจะนำเอาการปฏิบัติงานของระบบเก่าออกไปได้

วันศุกร์ที่ 18 มีนาคม พ.ศ. 2554

หลักการออกแบบและพัฒนาโปรแกรม



หลักการออกแบบและพัฒนาโปรแกรม
1. ความหมายของโปรแกรม
โปรแกรมคอมพิวเตอร์ หมายถึง คำสั่งหรือชุดคำสั่ง ที่เขียนขึ้นมาเพื่อสั่งให้เครื่องคอมพิวเตอร์ทำงานตามที่เราต้องการ เราจะให้คอมพิวเตอร์ทำอะไรก็เขียนเป็นคำสั่ง ซึ่งต้องสั่งเป็นขั้นตอนและแต่ละขั้นตอนต้องทำอย่างละเอียดและครบถ้วน ซึ่งจะเกิดเป็นงานชิ้นหนึ่งขึ้นมามีชื่อเรียกว่า "โปรแกรม" ซอฟต์แวร์จะแบ่งออกเป็นประเภทใหญ่ ๆ ได้ 2 ประเภท คือ
1.1 ซอฟต์แวร์ระบบ (System Software)
1.2 ซอฟต์แวร์ประยุกต์ (Application Software)
1.1 ซอฟต์แวร์ระบบ (System Software)
ซอฟต์แวร์ระบบ หมายถึงโปรแกรมที่ทำหน้าที่ควบคุมการทำงานของฮาร์ดแวร์ทุกอย่างและอำนวยความสะดวกให้กับผู้ใช้เครื่องคอมพิวเตอร์ ซึ่งแบ่งแต่ละโปรแกรมตามหน้าที่การทำงานดังนี้
1.1.1 OS (Operating System)
คือโปรแกรมระบบที่ทำหน้าที่ควบคุมการใช้งานส่วนต่างๆของเครื่องคอมพิวเตอร์เช่นควบคุมหน่วยความจำควบคุมหน่วยประมวลผลควบคุมหน่วยรับและควบคุมหน่วยแสดงผล ตลอดจนแฟ้มข้อมูลต่าง ๆ ให้มีประสิทธิภาพสูงที่สุด และสามารถใช้อุปกรณ์ทุกส่วนของคอมพิวเตอร์มาทำงานได้อย่างเต็มที่ นอกจากนั้นยังเข้ามาช่วยจัดสรรการใช้ทรัพยากรในเครื่องและช่วยจัดการกระบวนการพื้นฐานที่สำคัญ ๆ ภายในเครื่องคอมพิวเตอร์ เช่น การเปิดหรือปิดไฟล์การสื่อสารกันระหว่างชิ้นส่วนต่าง ๆ ภายในเครื่อง การส่งข้อมูลออกสู่เครื่องพิมพ์หรือจอภาพ เป็นต้น ก่อนที่เครื่องคอมพิวเตอร์แต่ละเครื่องจะสามารถอ่านไฟล์ต่าง ๆ หรือสามารถใช้ซอฟต์แวร์ต่าง ๆ ได้จะต้องผ่านการดึงระบบปฏิบัติการออกมาฝังตัวอยู่ในหน่วยความจำก่อน ปัจจุบันนี้มีโปรแกรมระบบอยู่หลายตัวด้วยกัน ซึ่งแต่ละตัวนั้นก็เป็นโปรแกรมระบบปฏิบัติการเหมือนกัน แต่ต่างกันที่ลักษณะการทำงานจะไม่เหมือนกัน ดังนี้
- DOS (Disk Operating System) เป็นระบบปฏิบัติการที่นิยมใช้กันมาตั้งแต่ในอดีตออกมาพร้อมกับเครื่องพีซีของไอบีเอ็มรุ่นแรก ๆ จากนั้นก็มีการพัฒนารุ่นใหม่ออกมาเรื่อย ๆ จนกระทั่งถึงเวอร์ชั่นสุดท้ายคือ เวอร์ชั่น 6.22 หลังจากที่มีการประกาศใช้วินโดวส์ 95 ก็คงจะไม่ผลิต DOS เวอร์ชั่นใหม่ออกมาแล้ว โดยทั่วไปจะนิยมใช้วินโดวส์ 3.x ซึ่งถือว่าเป็นโปรแกรมเสริมชนิดหนึ่งที่ใช้ในดอส
- UNIX เป็นระบบ ปฏิบัติการที่สามารถใช้ร่วมกันได้หลายคน (Multiuser) หรือเป็นระบบปฏิบัติการแบบเครือข่ายโดยที่ผู้ใช้แต่ละคนจะต้องมีชื่อและพาสเวิร์ดส่วนตัวและสามารถเชื่อมโยงถึงกันได้ถึงทั่วโลกโดยผ่านทางสายโทรศัพท์และมี Modem เป็นตัวกลางในการรับส่งข้อมูลหรือโอนย้ายข้อมูลนิยมใช้แพร่หลายในมหาวิทยาลัยหน่วยงานรัฐบาลหรือบริษัทเอกชนที่มีระบบคอมพิวเตอร์ใหญ่ๆใช้ในระบบยูนิกซ์เองก็มีวินโดวส์อีกชนิดหนึ่งใช้เรียกว่า X Windows สำหรับผู้ที่ต้องการใช้ระบบยูนิกซ์ในเครื่องพีซีที่บ้านก็มีเวอร์ชั่นสำหรับพีซีเรียกว่า Linux ซึ่งจะมีคำสั่งพื้นฐานคล้าย ๆ กับระบบยูนิกซ์
- Linux เป็นระบบปฏิบัติการตัวหนึ่งเช่นเดียวกับ DOS,Windows และ Unix แต่ Linux นั้นจัดว่าเป็นระบบปฏิบัติการ Unix ประเภทหนึ่งในปัจจุบันนี้มีการใช้ Linux กันมากเนื่องจากความสามารถของตัวระบบปฏิบัติการและโปรแกรมประยุกต์ที่ทำงานบนระบบ Linux ได้พัฒนาขึ้นมามากมายโดยเฉพาะอย่างยิ่งโปรแกรมในตระกูลของGNU (GNU's Not UNIX) และสิ่งที่สำคัญที่สุดคือระบบ Linux เป็นระบบปฏิบัติการประเภทฟรีแวร์ (Free Ware) คือไม่เสียค่าใช้จ่ายในการซื้อโปรแกรมระบบ Linux และนอกจากนั้น Linux ยังสามารถทำงานได้บน CPU ทั้ง 3 ตระกูลคือบน CPU ของอินเทล (PCIntel) ดิจิตอลอัลฟาคอมพิวเตอร์ (Digital Alpha Computer) และซันสปาร์ (SUNSPARC) ปัจจุบันนี้ได้มีการนำระบบปฏิบัติการ Linux ไปประยุกต์ใช้เป็นระบบปฏิบัติการแบบเครือข่ายสำหรับงานด้านต่างๆ เช่นงานด้านการคำนวณสถานีงานสถานีบริการต่างๆ ระบบอินเทอร์เน็ตภายในองค์กรใช้ในการเรียนการสอน การทำวิจัยทางคอมพิวเตอร์ การพัฒนาโปรแกรม เป็นต้น
- LAN เป็นระบบปฏิบัติการแบบเครือข่ายเช่นเดียวกัน แต่จะใช้เชื่อมโยงกันใกล้ ๆ เช่น ในอาคารเดียวกันหรือระหว่างอาคารที่อยู่ใกล้กัน โดยใช้สาย Lan เป็นตัวเชื่อมโยง
- WINDOWS เป็นระบบปฏิบัติการที่กำลังนิยมใช้กันมากในปัจจุบัน ซึ่งพัฒนามาถึงรุ่นแล้ว Windows 2000 แล้ว บริษัทไม่โครซอฟต์ได้เริ่มประกาศใช้ MS Windows 95 ครั้งแรกเมื่อ 24 สิงหาคม ค.ศ. 1995 โดยมีความคิดที่ว่าจะออกมาแทน MS-DOS และ วินโดวส์ 3.x ที่ใช้ร่วมกันอยู่ลักษณะของวินโดวส์ 95 จึงคล้ายกับระบบโอเอสที่มีทั้งดอสและวินโดวส์อยู่ในตัวเดียวกันแต่เป็นวินโดวส์ที่มีลักษณะพิเศษกว่าวินโดวส์เดิม เช่น มีคุณสมบัติเป็น Plug and Play ซึ่งสามารถจะรู้จักฮาร์ดแวร์ต่าง ๆ ที่ติดตั้งอยู่ในเครื่องได้โดยอัตโนมัติ มีลักษณะเป็นระบบ 32 บิต ในขณะที่วินโดวส์เดิมเป็นระบบ 16 บิต เป็น
- WINDOWS NT เป็นระบบ OS ที่ผลิตมาจากบริษัท IBM เป็นระบบ 32 บิต ที่มีรูปลักษณ์เป็นกราฟิกที่ต้องใช้เม้าส์ คล้ายกับวินโดวส์ทั่วไปเช่นกัน
1.1.2 Translation Program
คือ โปรแกรมระบบที่ทำหน้าที่ในการแปลโปรแกรม หรือชุดคำสั่งที่เขียนด้วยภาษาที่ไม่ใช่ภาษาเครื่องหรือภาษาเครื่องที่ไม่เข้าใจให้เป็นภาษาที่เครื่องเข้าใจ และนำไปปฏิบัติได้ เช่น ภาษาBASIC,COBOL,C,PASCAL, FORTRAN,ASSEMBLY เป็นต้น สำหรับตัวแปลนั้นจะมีอยู่ 3 แบบคือ
- Assembler เป็นโปรแกรมที่ใช้แปลภาษาแอสแซมบลี ซึ่งมีลักษณะการแปรทีละคำสั่ง เมื่อทำตามคำสั่งนั้นเสร็จแล้ว ก็จะแปลคำสั่งถัดไปเรื่อย ๆ จนจบ
- อินเตอร์พรีเตอร์ (Interpreter) เป็นตัวแปลภาษาระดับสูงเช่นเดียวกับคอมไพล์เลอร์แต่จะแปลพร้อมกับทำงานตามคำสั่งทีละคำสั่งตลอดไปทั้งโปรแกรม ทำให้การแก้ไขโปรแกรมทำได้ง่ายปละรวดเร็ว การแปลโดยใช้อินเตอร์พรีเตอร์จะไม่สร้างโปรแกรมเรียกใช้งาน ดังนั้นจะต้องทำการแปลใหม่ทุกครั้งที่มีการเรียกใช้งาน ตัวอย่างตัวแปลภาษาที่ใช้ตัวแปลอินเตอร์พรีเตอร์ เช่น ภาษาเบสิก (BASIC)
- คอมไพเลอร์ (Compiler) เป็นตัวแปลภาษาระดับสูง เช่น ภาษาปาสคาล ภาษาโคบอลและภาษาฟอร์เเทรน การทำงานจะใช้หลักการแปลโปรแกรมต้นฉบับทั้งโปรแกรมให้เป็นโปรแกรมเรียกใช้งาน (executable program) ซึ่งจะถูกบันทึกไว้ในลักษณะของแฟ้มข้อมูลหรือไฟล์ เมื่อต้องการเรียกใช้งานโปรแกรมก็สามารถเรียกใช้จากไฟล์เรียกใช้งานโดยไม่ต้องทำการแปลหรือคอมไพล์อีก ทำให้การทำงานเป็นไปอย่างรวดเร็ว ขณะที่คอมไพล์โปรแกรมต้นฉบับที่เขียนขึ้นด้วยภาษาระดับสูง คอมไพล์เลอร์จะตรวจสอบโครงสร้างไวยกรณ์ของคำสั่งและข้อมูลที่ใช้ในการคำนวณและเปรียบเทียบต่อจากนั้นคอมไพล์เลอร์จะสร้างรายการข้อผิดพลาดของโปรแกรม (Program Listing) เพื่อใช้เก็บโปรแกรมต้นฉบับและคำสั่งที่เขียนไม่ถูกต้องตามกฎหรือโครงสร้างของภาษานั้น ๆ ไฟล์นั้นมีประโยชน์ในการช่วยโปรแกรมเมอร์ในการแก้ไขโปรแกรม (Debug)
1.1.3 Utility Program
คือโปรแกรมระบบที่ทำหน้าที่ในการอำนวยความสะดวกให้กับผู้ใช้เครื่องคอมพิวเตอร์ ให้สามารถทำงานได้สะดวก รวดเร็วและง่ายขึ้น เช่น โปรแกรมที่ใช้ในการเรียงลำดับข้อมูล โปรแกรมโอนย้ายข้อมูลจากชนิดหนึ่งไปยังอีกชนิดหนึ่ง โปรแกรมรวบรวมข้อมูล 2 ชุดด้วยกัน โปรแกรมคัดลอกข้อมูล เป็นต้น สำหรับโปรแกรมที่ทำงานในด้านนี้ ได้แก่ Pctools,Sidekick,PKZIP,PKUNZIP Norton Utility เป็นต้น
1.1.4 Diagnostic Program
คือโปรแกรมระบบที่ทำหน้าที่ตรวจสอบข้อผิดพลาด ในการทำงานของอุปกรณ์ต่าง ๆ ของเครื่องคอมพิวเตอร์ ได้แก่ โปรแกรม QAPLUS โปรแกรม NORTON เป็นต้น และเมื่อพบข้อผิดพลาดก็จะแจ้งขึ้นมาบนจอภาพให้ทราบ เช่น ถ้ามีการตรวจสอบแล้วปรากฏว่า Keyboard บางปุ่มเสียไปก็จะแจ้งบอกขึ้นมาเป็นรหัสให้ผู้ใช้ทราบ หรือในกรณีที่ Card จอปกติไม่สามารถแสดงภาพได้ ก็จะบอกในลักษณะของเสียงแทน เช่นเดียวกับ RAM ถ้าเสียก็จะมีเสียงบอกขึ้นมา
1.2 ซอฟต์แวร์ประยุกต์ (Application Software)
หมายถึง โปรแกรมที่ผู้ใช้คอมพิวเตอร์เป็นผู้เขียนขึ้นมาใช้เองเพื่อสั่งให้เครื่องคอมพิวเตอร์ทำงานอย่างใดอย่างหนึ่งตามที่ต้องการ ซึ่งแบ่งได้ดังนี้
1.2.1 User Program
คือโปรแกรมที่ผู้ใช้เขียนขึ้นมาใช้เองโดยใช้ภาษาระดับต่างๆทางคอมพิวเตอร์เช่นภาษาBASICCOBOL,PASCAL,C,ASSEMBLY,FORTRAN ฯลฯ ซึ่งจะใช้ภาษาใดขึ้นอยู่กับความเหมาะสมของงานเหล่านั้น เช่น โปรแกรมระบบบัญชี,โปรแกรมควบคุมสต็อกสินค้า,โปรแกรมแฟ้มทะเบียนประวัติ,โปรแกรมคำนวณภาษี,โปรแกรมคอดเงินเดือน เป็นต้น
1.2.2 Package Program
คือโปรแกรมสำเร็จรูป ซึ่งเป็นโปรแกรมที่ถูกสร้างหรือเขียนขึ้นมาโดยบริษัทต่าง ๆ เสร็จเรียบร้อยแล้วพร้อมที่จะนำมาใช้งานต่าง ๆ ได้ทันที ตัวอย่างเช่น
- Word Processer โปรแกรมที่ช่วยในการทำเอกสาร พิมพ์งานต่าง ๆ เช่น เวิร์ดจุฬา,เวิร์ดราชวิถี,Microsoft Word,WordPerfect,Amipro เป็นต้น
- Spreadsheet โปรแกรมที่ใช้ในการคำนวณข้อมูล มีลักษณะเป็นตาราง เช่น Lotus 1-2-3,Microsoft Excel เป็นต้น
- Database โปรแกรมที่ใช้ในการทำงานทางด้านฐานข้อมูลจะใช้เก็บรวบรวมข้อมูล ต่าง ๆ ที่มีขนาดใหญ่ และมีข้อมูลเป็นจำนวนมาก เช่นdBASEIIIPlus, Foxbase, Microsoft Access Foxpro, Visual Foxpro, Pracle, Infomix, DB2 เป็นต้น
- Graphic โปรแกรมที่ใช้ในการทำงานทางด้านสร้างรูปภาพและกราฟิกต่าง ๆ รวมทั้งงานทางด้านสิ่งพิมพ์ การทำโบรชัวร์ แผ่นพับ นามบัตร เช่น CorelDraw, Photoshop, Harvard Graphic, Freelance Graphic, PowerPoint, PageMaker เป็นต้น
- Internet โปรแกรมที่ใช้งานบน Internet เท่านั้น โดนจะต้องเรียกใช้ผ่านทาง Browser ซึ่งอาจจะเป็น Netscape Communicator หรือ Internet Explorer โดยการติดตั้งผ่านทางแผ่น CD-Rom หรือ Download ขึ้นมาติดตั้งก็ได้ สำหรับโปรแกรมที่นิยมใช้ในปัจจุบัน
2. ขั้นตอนการพัฒนาระบบ
วัฏจักรในการพัฒนาระบบ แบ่งออกเป็น 6 ขั้นตอนคือ
2.1 System investigation
เป็นขั้นตอนในการศึกษาความต้องการของผู้ใช้ซึ่งจะนำข้อมูลต่าง ๆ ที่ได้มากำหนดความต้องการของระบบและศึกษาความเป็นไปได้ของการพัฒนาระบบ กรณีที่สามารถพัฒนาระบบงานได้ตามความต้องการของผู้ใช้ จะดำเนินงานตามขั้นตอนขั้นต่อไป
2.2 System analysis
เป็นขั้นตอนในการวิเคราะห์ในรายละเอียดถึงความต้องการต่างๆ ของผู้ใช้ระบบรวมทั้งความต้องการของหน่วยงานและระบบอื่นๆ ที่ใช้อยู่ในปัจจุบันในด้านการประมวลผลทางด้านข้อมูลเข้า (input) ข้อมูลออก (output) หน่วยความจำ (storage) และควบคุมให้ได้ตรงตามความต้องการซึ่งเป็นจุดมุ่งหมายของระบบ
2.3 System design
เป็นขั้นตอนในการพัฒนาโปรแกรม โดยระบุถึงฮาร์ดแวร์ที่ใช้ในระบบ เช่น อุปกรณ์และสื่อต่างๆ ที่ใช้ รวมทั้งซอฟต์แวร์ เช่น โปรแกรมและวิธีการดำเนินงาน (procedure) เป็นต้น บุคลากรในระบบ เช่น ผู้ใช้และผู้เชี่ยวชาญ รวมทั้งออกแบบโครงสร้างของข้อมูลทั้งในด้านข้อมูลเข้าข้อมูลออก การประมวลผลข้อมูล หน่วยเก็บข้อมูล (storage) และฟังก์ชันควบคุมของระบบใหม่
2.4 Software development
เป็นขั้นตอนในการพัฒนาโปรแกรม โดยสร้างโปรแกรมขึ้นมาเพื่อให้สามารถทำงานได้ตามที่ได้ออกแบบระบบไว้
2.5 System implementation
เป็นขั้นตอนของการใช้งาน โดยการนำเอาโปรแกรมที่พัฒนาสมบูรณ์ไปติดตั้งทำการทดสอบระบบรวมทั้งฝึกฝนให้ผู้ใช้ระบบสามารถปฏิบัติงานโดยใช้ระบบใหม่นี้ได้
2.6 System maintenance
เป็นขั้นตอนในการบำรุงรักษาระบบ โดยตรวจสอบหรือควบคุมการทำงานของระบบคอมพิวเตอร์และแก้ไขระบบเมื่อต้องการ

3. ระยะต่าง ๆ ของการเขียนโปรแกรม (The Stages of the Programming Process)
การเขียนโปรแกรมคอมพิวเตอร์ คือ วิธีการในการพัฒนาโปรแกรมคอมพิวเตอร์ซึ่งประกอบด้วยกลุ่มของคำสั่งซึ่งสั่งให้เครื่องคอมพิวเตอร์ประมวลผลหรือกิจกรรมต่างๆซึ่งเกี่ยวของกับการเขียนคำสั่งในภาษาโปรแกรมต่าง ๆ ซึ่งสามารถแบ่งได้เป็นหลายระยะคือ
3.1 Program analysis
เป็นระยะของการวิเคราะห์ถึงจุดประสงค์ของงานประยุกต์ โดยกำหนดถึงหน้าที่ต่าง ๆ ที่จะให้โปรแกรมทำงานได้
3.2 Program design
เป็นระยะของการวางแผนและออกแบบถึงคุณลักษณะของข้อมูลเข้า (input) ข้อมูลออก (output) หน่วยเก็บข้อมูล วิธีดำเนินการประมวลผล
3.3 Program coding
เป็นระยะของการเขียนคำสั่งภาษาโปรแกรมซึ่งเปลี่ยนจาก Program design เป็นโปรแกรมคอมพิวเตอร์ที่สมบูรณ์
3.4 Program verification
เป็นระยะของการตรวจทานทดสอบโปรแกรมที่เขียนขึ้นให้ถูกต้องและสมบูรณ์ตรงตามความต้องการของระบบ ซึ่งเรียกว่า debugging และ testing
3.5 Program documentation
เป็นระยะของการบันทึกรายละเอียดของการออกแบบและรายละเอียดของโปรแกรม โดยจัดทำเป็นคู่มือและเอกสารของระบบ
3.6 Program maintenance
เป็นระยะของการปรับปรุงหรือสร้างโปรแกรมคอมพิวเตอร์ เพื่อพัฒนาให้ดีขึ้นซึ่งอาจจะขยายขีดความสามารถหรือปรับปรุงให้ถูกต้องยิ่งขึ้น

4. การวิเคราะห์โปรแกรม (Program analysis)
การวิเคราะห์โปรแกรมเป็นขั้นตอนแรกในการเขียนโปรแกรมคอมพิวเตอร์โดยการวิเคราะห์ถึงหน้าที่ต่างๆ ของโปรแกรมโดยแบ่งเป็นงานหรือฟังก์ชันฟังก์ชันหนึ่งอาจปฏิบัติการได้ก็ต่อเมื่อปฏิบัติงานอีกฟังก์ชันหนึ่งเสร็จก่อน การวิเคราะห์ปัญหาต่างๆ ของโปรแกรมอาจเป็นปัญหาสั้นๆ พื้นฐานหรือปัญหาทางคณิตศาสตร์ซับซ้อน ซึ่งจะต้องกำหนดปัญหา (Problem Definition) และกำหนดรายละเอียดของปัญหา (Problem Specification) ในการปฏิบัติงานให้ชัดเจน ในกรณีที่งานประยุกต์เป็นงานประมวลผลข้อมูลการวิเคราะห์โปรแกรมควรวิเคราะห์ถึงข้อกำหนดรายละเอียดของซอฟต์แวร์ (Software Specification) ในระยะของการออกแบบ (Design Stage) หรือความต้องการในรายละเอียดของโปรแกรม (Program Specification) อย่างเช่น
1. Output โดยวิเคราะห์ว่าผลลัพธ์ที่ต้องการคืออะไรบ้าง
2. Input โดยวิเคราะห์ว่าข้อมูลที่สามารถเรียกหาได้มีอะไรได้บ้าง
3. Storage โดยวิเคราะห์ว่าข้อมูลจะเก็บ (store) หรือดึง (retrieved) หรือแก้ไขในหน่วยเก็บข้อมูลอะไร
4. Processing โดยวิเคราะห์ถึงวิธีการประมวลผลต่าง ๆ ซึ่งอาจเป็นการคำนวณทางคณิตศาสตร์ การเปรียบเทียบและกรรมวิธีอื่น ๆ
5. Control procedure โดยวิเคราะห์วิธีการควบคุมการทำงานของโปรแกรม

5. การออกแบบโปรแกรม (Program design)
ระยะของการออกแบบโปรแกรมเป็นระยะของการวางแผนและออกแบบโดยระบุคุณลักษณะของข้อมูลเข้า (Input) ข้อมูลออก (Output) กรรมวิธีการประมวลกำหนดรายละเอียดของหน่วยเก็บข้อมูลและวิธีการควบคุมซึ่งค่าของความพยายาม (effort) ในการวิเคราะห์และออกแบบโปรแกรมขึ้นอยู่กับความซับซ้อนของงานประยุกต์และจำนวนของงานในระบบโดยปกติจะเป็นการกำหนดกฎเกณฑ์ทงตรรกะและคำสั่งที่ระบุถึงการปฏิบัติงานซึ่งเรียกว่าโมดุล (modules หรือ subdivisions) โดยแต่ละโมดุลจะมีส่วนของการกำหนดค่าเริ่มต้น (initialization) ข้อมูลเข้า (input) ประมวลผล (processing) และส่วนแสดงผล (output) และส่วนของการสิ้นสุดหรือเลิกใช้ (termination) โมดุลโปรแกรมส่วนมากมีโมดุลควบคุมใช้สำหรับตรวจสอบและควบคุมการทำงานต่าง ๆ เช่น
1. ลำดับของการประมวลผล (order of processing)
2. ขั้นตอนการทำงานซ้ำ ๆ (looping)
3. เงื่อนไขยกเว้น เช่น ข้อผิดพลาดต่าง ๆ (errors)
4. สิ่งเบี่ยงเบนจากการประมวลผลปกติ (other deviations form normal processing require)

6. การเขียนคำสั่งโปรแกรม (Program coding)
การเขียนคำสั่งโปรแกรมเป็นขั้นตอนในการแปลง (convert) ตรรกะที่ได้ออกแบบในระยะการออกแบบโปรแกรมให้เป็นกลุ่มของคำสั่งโปรแกรมภาษาเพื่อสั่งให้คอมพิวเตอร์ปฏิบัติตามโปรแกรมภาษาในปัจจุบันมีมากมายหลายภาษา ซึ่งเหมาะกับงานด้านต่าง ๆ ซึ่งแต่ละภาษามีการเขียนที่แตกต่างกัน ทั้งรูปแบบ กฎเกณฑ์ต่างๆ ดังนั้นผู้เขียนควรศึกษารูปแบบและกฎเกณฑ์ต่างๆ เหล่านี้ก่อนโปรแกรมใดๆ ที่นิยมใช้ในปัจจุบัน จะประกอบด้วยคำสั่งโครงสร้างพื้นฐาน 3 อย่างคือ
1. แบบลำดับ (Sequence)
2. แบบทางเลือก (Selection)
3. แบบวนรอบ (Loop หรือ Repetition)
ซึ่งเป็นส่วนสำคัญในการเขียนโปรแกรมโครงสร้างแบบบนลงล่าง (top-down structure) จะช่วยให้การเขียนโปรแกรมเป็นมาตรฐาน (standardizes) และเข้าใจได้ง่าย รวมทั้งการแก้ไขง่ายอีกด้วย
Sequence Structure
เป็นโครงสร้างลำดับ ซึ่งแสดงถึงลำดับของคำสั่งหรือการปฏิบัติงานกล่าวคือคำสั่งซึ่งอยู่ก่อนจะถูกปฏิบัติงานก่อนดังนั้นคำสั่งโปรแกรมซึ่งเก็บไว้ในคอมพิวเตอร์ก่อนถูกทำงานก่อน
Selection Structure
โครงสร้างทางเลือก หรือเรียกว่า decision หรือ IF-THEN-ELSE ก็ได้ เป็นโครงสร้างซึ่งแสดงทางเลือกของการทำงาน โดยขึ้นกับผลของเงื่อนไข โดยเงื่อนไขนี้ผลลัพธ์มี 2 ทางคือ จริง (True) และเท็จ (False) ถ้าเงื่อนไขเป็นจริงจะกระทำอย่างหนึ่ง ถ้าเงื่อนไขเป็นเท็จจะกระทำอีกอย่างหนึ่ง
Repetition (Loop) Structure
โครงสร้างวนรอบ หรือเรียกว่า DO-WHILE หรือ DO-UNTIL ก็ได้ เป็นโครงสร้างที่กระทำหน้าที่หรือคำสั่งซึ่งขึ้นกับเงื่อนไข โดยการทำงานจะเป็นการทำงานซ้ำ ๆ กัน ซึ่งจะหยุดการทำงานวนรอบก็ต่อเมื่อเงื่อนไขเป็นเท็จ (False)

7. การตรวจสอบความถูกต้องของโปรแกรม (Program Verification)
การตรวจทานโปรแกรมโดยทั่วไปเรียกว่าdebuggingซึ่งเป็นระยะหนึ่งในการเขียนโปรแกรมรวมถุงการตรวจสอบ (checking) การทดสอบ (testing) และการทำให้ถูกต้อง (correction) เหราะการเขียนคำสั่งโปรแกรมใหม่ ๆ อาจเกิดข้อผิดพลาด (bugs) ได้ง่าย
7.1 ข้อผิดพลาดในการเขียนโปรแกรม (Programming Error)
ข้อผิดพลาดในการเขียนโปรแกรมสามารถแบ่งเป็น 3 ชนิดคือsyntaxerrors,logicerrors แล ะsystem design errors
Syntax errors เป็นข้อผิดพลาดที่เกิดจากการเขียนคำสั่งโปรแกรมผิดรูปแบบไวยกรณ์ของภาษา
Logic errors เป็นข้อผิดพลาดที่เกิดจากการใช้ตรรกะผิดในโปรแกรม ซึ่งเงื่อนไขผิดมีผลให้การกระทำตามเงื่อนไขผิดไปด้วย
System design errors เป็นข้อผิดพลาดจากการออกแบบระบบทำให้ผลของการทำงานไม่เป็นที่ยอมรับของผู้ใช้ซึ่งความผิดพลาดนี้ อาจเกิดจากการสื่อสารระหว่างโปรแกรมเมอร์กับผู้วิเคราะห์ระบบหรือผู้ใช้ระบบไม่ดี
Syntax errors เป็นความผิดพลาดที่ค้นพบได้ง่ายกว่า logic errors เพราะสามารถตรวจพบได้ในระหว่างการทำการแปลภาษา ส่วน logic errors จะตรวจพบเมื่อโปรแกรมทำงานจนได้ผลลัพธ์ไม่ถูกต้องเท่านั้น
7.2 การตรวจสอบ (checking)
การตรวจสอบโปรแกรมต้องมีขึ้นระหว่างการออกแบบโปรแกรม,การเขียนโปรแกรม,การตรวจทานโปรแกรมเพื่อให้แน่ใจว่าสามารถแก้ปัญหาได้ตรงตามความต้องการตามวัตถุประสงค์ที่ได้ตั้งไว้เครื่องมือที่ใช้ในการออกแบบถูกต้องตามตรรกะในการประมวลผลรวมทั้งคำสั่งโปรแกรมที่เขียนขึ้นสามารถแปลได้โดยปราศจากข้อผิดพลาดต่างๆและสามารถทำงานได้อย่างถูกต้องสมบูรณ์
7.3 Structured walkthroughs
เป็นเครื่องมือของการออกแบบ,เขียนคำสั่ง,ตรวจสอบข้อผิดพลาดของการเขียนโปรแกรมที่ดีซึ่งเป็นวิธีการที่ผู้เขียนโปรแกรมแสดงผลงานให้โปรแกรมเมอร์อื่นๆตรวจสอบดูซึ่งการทำงานนี้เป็นแนวคาวมคิดของการเขียนโปรแกรมเป็นทีมงานซึ่งมีการกำหนดให้พัฒนาโปรแกรมเดียวกันภายใต้การควบคุมของหัวหน้าโปรแกรมเมอร์ (chiefprogrammer) โดยสมาชิกในทีมงานจะช่วยกันตรวจดูถึงการออกแบบและการเขียนคำสั่งเป็นช่วงๆ เป็นประจำของแต่ละโมดุล ซึ่งทำให้ค่าใช้จ่ายของการทวนสอบ (Verification) น้อยลง โดยสามารถพบข้อผิดพลาดได้ในระยะเริ่มแรกของการเขียนโปรแกรม โดยไม่ต้องคอยจนกระทั่งตรวจพบในระยะของการทดสอบโปรแกรม ซึ่งเป็นการทราบที่จะทราบว่าจุดใดที่เกิดข้อผิดพลาด ซึ่งมีผลทำให้ค่าใช้จ่ายสูงตามไปด้วย
7.4 การทดสอบ (testing)
การทดสอบเป็นการตรวจสอบการทำงานของโปรแกรมโดยใช้ข้อมูลทดสอบ (testdata) เพื่อดูผลลัพธ์จากการทำงานการทดสอบที่ดีนั้นควรใช้ข้อมูลที่แตกต่างกันเพื่อให้สามารถกระทำได้ในทุกๆ เงื่อนไขในการทำงานของโปรแกรมรวมทั้งควรทดลองข้อมูลที่ไม่ถูกต้องด้วยโปรแกรมที่ดีเมื่อใส่ข้อมูลผิดๆ จะไม่เกิด error แต่จะแสดงข้อความเพื่อเตือนเท่านั้นในการเขียนโปรแกรมโครงสร้างที่ใช้โปรแกรมภาษาระดับสูงนั้นผู้ทำการทดสอบโปรแกรมสามารถแบ่งการทดสอบโปรแกรมออกเป็นส่วนๆ ซึ่งเรียกว่า โมดุล เพื่อสะดวกในการทดสอบซึ่งง่ายต่อการค้นหาข้อผิดพลาดและง่ายต่อการแก้ไขให้ถูกต้องด้วยเมื่อทดสอบโมดุลย่อยๆ เหล่านี้จนไม่มีข้อผิดพลาดจึงนำมาเป็นโปรแกรมหลักอีกครั้งหนึ่ง การทดสอบโปรแกรมกรณีที่ต้องให้โปรแกรมที่พัฒนาขึ้นมาแทนที่การประมวลผลเก่าซึ่งกำลังดำเนินอยู่การทดสอบต้องกระทำขนานกันไปกับระบบเก่าซึ่งเรารียกการประมวลผลนี้ว่า parallel processing ดังนั้นการทดสอบระบบต้องทดสอบจนกว่าจะแน่ใจว่าสามารถกระทำแทนที่ระบบเก่าได้จึงจะนำเอาการปฏิบัติงานของระบบเก่าออกไปได้

8. เอกสารโปรแกรม (Program documentation)
เป็นเอกสารซึ่งบันทึกรายละเอียดของการออกแบบการเขียนคำสั่งซึ่งมีประโยชน์ต่อการวิเคราะห์ความผิดพลาดของโปรแกรม การแก้ไขปรับปรุงโปรแกรมหรือการรวมโปรแกรมกรณีเกิดการสูญหาย โดยเฉพาะโปรแกรมเมอร์หลักที่เขียนโปรแกรมเกิดลาออกไป ดังนั้นควรเก็บรวบรวมข้อมูลต่างๆ เอาไว้

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