บทบาทของซอฟต์แวร์กับการประมวลผลข้อมูล

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

แผนภูมิองค์ประกอบระบบประมวลผลข้อมูล

  1. ตัวคอมพิวเตอร์และอุปกรณ์ที่มาต่อรอบข้าง (อุปกรณ์ Peripheral) เป็นส่วนที่จับต้องได้ ใช้พลังงานไฟฟ้า เรียกส่วนนี้ว่า Hardware
  2. ชุดคำสั่ง หรือ ซอฟต์แวร์ (Software) หรือบางทีเรียกว่าโปรแกรม เป็นส่วนที่จับต้องไม่ได้ แต่มีพลัง มีอำนาจที่ใช้เป็นคำสั่งให้คอมพิวเตอร์ทำงาน บางครั้งเราจะบันทึกซอฟต์แวร์นี้ไว้ในหน่วยความจำสำรอง ในรูปสื่อประเภทต่าง ๆ เช่น แผ่นจานแม่เหล็ก แผ่น CD หรือ Hard Disc เป็นต้น ซึ่งสื่อต่าง ๆ เหล่านี้สามารถจับต้องได้
  3. บุคลากร เรียกส่วนนี้ว่า People ware หมายถึงเจ้าหน้าที่หรือผู้ดูแล ผู้ใช้ ผู้ดำเนินการให้ระบบดำเนินการไปได้
  4. ข้อมูลและหรือ ฐานข้อมูล (Data and Database)
  5. กระบวนและวิธีการ (Procedure)

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

อาณาจักรซอฟต์แวร์

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

  1. ซอฟต์แวร์ระบบ (System Software) ซอฟต์แวร์ประเภทนี้จะเป็นประเภทคำสั่งควบคุมการทำงานระบบเครื่อง และอุปกรณ์ให้สามารถทำงานได้ตามจุดประสงค์ที่ประดิษฐ์ขึ้นมา เช่น CPU เป็นอุปกรณ์ที่ทำหน้าที่ประมวลผล แต่ละรุ่นก็จะต้องมีซอฟต์แวร์ที่เรียกว่าระบบปฏิบัติการที่สอดคล้องทำหน้าที่ควบคุมการทำงาน หรือเช่นเมื่อเราต้องการติดตั้งโมเด็มเข้ากับเครื่องเพื่อใช้งานทางด้านสื่อสาร ก็ต้องติดตั้งซอฟต์แวร์ที่ทำหน้าที่ควบคุมให้โมเด็มทำงานได้ เป็นต้น ส่วนใหญ่ซอฟต์แวร์ที่มากับอุปกรณ์เรามักจะเรียกว่า Driver ของอุปกรณ์ตัวนั้น ๆ นอกจากนี้ซอฟต์แวร์ประเภทนี้ยังหมายรวมไปถึง ซอฟต์แวร์ที่ทำประโยชน์อื่น ๆ ที่เกี่ยวกับระบบเครื่อง และอุปกรณ์ เช่น ซอฟต์แวร์แปลภาษา (แปลคำสั่งที่เป็นภาษาระดับสูงให้เป็นภาษาเครื่อง ที่เครื่องสามารถเข้าใจ) ที่เราเรียกว่า Compiler และ Interpreter และซอฟต์แวร์ ที่ช่วยเอื้อประโยชน์ต่อการจัดการด้านฮาร์ดแวร์อื่น ๆ รวมเรียกว่า Utility Program เช่น ซอฟต์แวร์ป้องกันไวรัส ซอฟต์แวร์ตรวจสอบสถานะเครื่อง เป็นต้น
  2. ซอฟต์แวร์ประยุกต์งาน (Application Software) เป็นซอฟต์แวร์ที่ทำหน้าที่สั่งการให้คอมพิวเตอร์ประมวลผลข้อมูลตามจุดประสงค์ของงานนั้น ๆ ซึ่งมีมากมายอย่างไม่จำกัดขอบเขต ตามที่ความคิดสร้างสรรค์ของมนุษย์จะสร้างสิ่งใหม่ขึ้นมา สิ่งนั้นก็จะได้รับการพัฒนาให้เป็นซอฟต์แวร์ใช้งานได้ต่อไป เมื่อจัดกลุ่มย่อยซอฟต์แวร์ ประเภทนี้ จะได้เป็นประเภทย่อย ดังนี้

แสดงอาณาจักรซอฟต์แวร์

์ความสัมพันธ์ระหว่างฮาร์ดแวร์ ซอฟต์แวร์ และ Users

    ในการใช้งานคอมพิวเตอร์ ซอฟต์แวร์ที่เกี่ยวข้องกับการใช้งานขณะนั้น จะต้องนำเข้า (Load) ไว้ในหน่วยความจำหลัก (Main Memory) ของเครื่อง (ซอฟต์แวร์บางส่วนที่ยังไม่ถึงเวลาทำงานอาจยังไม่ได้รับการอ่านเข้าหน่วยความจำ ก็จะอยู่ที่ หน่วยความจำสำรอง เช่น ในสื่อ Hard Disc แผ่น Floppy Diskette หรือซอฟต์แวร์ อาจจะเก็บไว้ในแผ่น CD (Compact Disc) เป็นต้น ซึ่งระบบปฏิบัติการจะจัด การในเรื่องนี้) ระบบปฏิบัติการ (Operating System Software: OS) จะทำหน้าที่เป็นตัวกลางประสานการทำงานระหว่างซอฟต์แวร์ประยุกต์ กับตัวเครื่อง (Chip CPU) ให้การประมวลผลดำเนินไปตามขั้นตอนในซอฟต์แวร์ และทำงานอย่างมีประสิทธิภาพ นั่นคือผู้ใช้งาน (Users) จะใช้งานโดยผ่านซอฟต์แวร์ทั้งสองประเภทในขณะทำงาน บางช่วงเวลาของการทำงานผู้ใช้งานกำลังทำงานกับซอฟต์แวร์ประยุกต์ ขณะนั้นซอฟต์แวร์ประยุกต์จะเป็นซอฟต์แวร์ที่อยู่เบื้องหน้า (Foreground) ซอฟต์แวร์ ส่วนระบบปฏิบัติการก็จะอยู่เบื้องหลัง (Background) ดังรูปข้างล่าง หน้าจอก็จะแสดงผลภายใต้โปรแกรมประยุกต์นั้น แต่ในบางช่วงเวลาผู้ใช้อาจต้องการติดต่อกับ ระบบปฏิบัติการเพื่อทำงานบางอย่างที่ต้องการ ก็จะต้องออกจากซอฟต์แวร์ ประยุกต์นั้น จะเหลือซอฟต์แวร์ระบบปฏิบัติการอย่างเดียวและเป็นเบื้องหน้า (Foregground) แสดงที่หน้าจอ ให้ผู้ใช้ได้เห็นและใช้คำสั่ง ติดต่อสั่งการซึ่งเป็นคำสั่งของระบบปฏิบัติการตัวนั้น

แสดงความสัมพันธ์ระหว่าง Hardware, Software และ Users

    หน้าที่ของซอฟต์แวร์ระบบปฏิบัติการมีหน้าที่หลัก 3 ประการ ดังนี้

  1. เป็นตัวกลางระหว่างผู้ใช้ หรือซอฟต์แวร์ประยุกต์กับฮาร์ดแวร์ (Users Interface)
  2. ควบคุมการทำงานของระบบฮาร์ดแวร์ทั้งหมด (Control System)
  3. บริหารทรัพยากรในระบบให้ได้ประสิทธิภาพสูงสุด (Resource Management)

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

แสดงผู้ใช้ (Users) จะใช้ซอฟต์แวร์ทั้งสองประเภท

intro5.jpg (160150 bytes)

ภาษาคอมพิวเตอร์ (Computer Programming Language)

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

  1. ภาษาระดับต่ำ (Low Level Language) เป็นภาษาเครื่อง (Machine Language) ใช้สัญลักษณ์ 0, 1 ดังที่กล่าวมาข้างต้น
  2. ภาษาสัญลักษณ์ (Symbol Language) เป็นภาษาที่เริ่มพัฒนาสัญลักษณ์ ใหม่เข้ามาแทน 0 และ 1 ในคำสั่งที่ต้องใช้บ่อย ๆ เพื่อลดความยาก และประหยัดเวลา มากขึ้น ภาษาในประเภทนี้ คือ ภาษา Assembly เมื่อมีการใช้สัญลักษณ์ก็ต้องมีการแปลภาษาจากสัญลักษณ์ให้เป็นภาษาเครื่อง ตัวแปลภาษามีชื่อว่า Assembler
  3. ภาษาระดับสูง (High Level Language) เป็นภาษาที่ใช้สัญลักษณ์เต็มรูปแบบโดยมีวัตถุประสงค์เพื่อให่ง่ายต่อมนุษย์ที่จะนำไปเขียนโปรแกรม วิธีการสร้างภาษาระดับสูงก็คือผู้ประดิษฐ์ภาษาจะนำตัวเลข ตัวอักษร และเครื่องหมายต่าง ๆ ของภาษาลาตินมาสร้างเป็นภาษาคอมพิวเตอร์โดยจะสร้างองค์ประกอบของภาษาอย่างครบถ้วน รวมทั้งองค์ประกอบที่ช่วยในการเขียนโปรแกรมในภาษานั้น ๆ ให้สะดวก และง่ายในแต่ละภาษาที่สร้างไม่ว่าภาษาใด จะมีองค์ประกอบหลักที่คล้าย ๆ กัน คือ

    การแปลภาษามีหลายลักษณะ สามารถแบ่งตัวแปลภาษาตามลักษณะการแปลได้ 3 แบบ

  1. แอสเซมเบลอ (Assembler) เป็นตัวแปลภาษาแอสเซมบลี ซึ่งเป็น ภาษาระดับต่ำให้เป็นภาษาเครื่อง
  2. อินเทอพรีเตอร์ (Interpreter) เป็นตัวแปลภาษาระดับสูงให้เป็น ภาษาเครื่อง โดยใช้หลักการแปลในขณะทำงานเป็นการแปลทีละประโยค มีข้อดีที่สามารถแก้ไขประโยค ได้ง่าย ได้ทันที่ถ้าพบจุดที่ผิดหรือต้องการปรับปรุง แต่มีข้อเสียที่ต้องมีการแปลกันทุกครั้งที่มีการใช้งานไม่สามารถเก็บส่วนที่แปลแล้วมาใช้ได้อีก เป็นจุดเสียของการแปลแบบนี้ที่ทำให้การทำงานล่าช้า และโปรแกรมที่ใช้งานจะเป็นต้นฉบับทำให้ไม่ปลอดภัยต่อการใช้งานในกรณี ที่ต้องการปกปิดหรือป้องกันการแก้ไขโดยไม่หวังดี
  3. คอมไพเลอร์ (Compiler) เป็นตัวแปลภาษาระดับสูงเช่นเดียวกับแบบ อินเทอพรีเตอร์ แต่เป็นการแปลทั้งโปรแกรม ผลการแปลทั้งฉบับที่ได้เราเรียกว่า ออบเจ็คโคด (Object Code) ภาษาระดับสูงที่เคยมีบทบาทและที่ยังเป็นที่นิยมใช้
  1. ภาษาระดับสูงมาก (Very High Level Language) เป็นภาษายุคที่ 4 (Fourth Generation Language = 4GLs) เป็นภาษาที่ไม่ได้ใช้หลักการเขียนแบบโพรซีเยอร์ (Nonprocedural Language) ผู้เขียนเพียงกำหนดความต้องการว่าจะ ให้โปรแกรมทำอะไรบ้าง โดยไม่ต้องรู้ว่าทำอย่างไร การเขียนโปรแกรมจะง่ายและรวดเร็ว มีผู้กล่าวว่าถ้าใช้ภาษายุคที่ 4 เขียนโปรแกรมจะได้งานมากกว่าที่เขียนด้วยภาษาระดับสูงถึงสิบเท่าตัว ในยุคนี้ยังมีภาษาที่เรียกค้นข้อมูลได้ เช่น ภาษา SQL (Structured Query Language) และภาษา QBE (Query By Example) ที่ได้รับความนิยมในการใช้งานมาก

แนวทางการเขียนโปรแกรม

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

  1. การเขียนโปรแกรมเชิงโครงสร้าง (Structured Paradigm หรือ Function Oriented Paradigm) เป็นการเขียน โปรแกรมโดยยึดหลักการเขียนโปรแกรมแบบแยกเป็นหน่วยย่อย (Module) ตามหน้าที่แล้ว รวบรวมหน่วยย่อยเหล่านั้นเข้าด้วยกันเป็นโครงสร้างสอดคล้องสัมพันธ์กัน เราเรียกขั้นนี้ว่า ขั้น Integration โครงสร้างที่ได้ก็คือโปรแกรมที่ต้องการ ภาษาที่ใช้พัฒนาโปรแกรมในแนวนี้ จัดเป็นภาษาประเภทที่เรียกว่า Procedural Language การเขียนโปรแกรมแนวนี้ได้ถูกใช้มา นานตั้งแต่ยุคก่อนจนถึงยุคปัจจุบันก็ยังใช้อยู่ โดยเฉพาะโปรแกรมที่มีขนาดเล็ก
  2. การเขียนโปรแกรมเชิงวัตถุ (Object Oriented Paradigm) หลักการก็คือ จะมองงานแต่ละอย่างเป็นวัตถุ (Object) เช่น กล่องโต้ตอบ (Dialog Box) รูปภาพหนึ่งเฟรม กล่องข้อความ (Text Box) หรือ ไอคอนบนจอภาพ เป็นต้น โดยออบเจ็คหนึ่งจะทำงานเฉพาะตามที่กำหนดเสมือนเป็นชิ้นส่วน (Component) เป็นหน่วยอิสระ ถ้าผู้ใช้ต้องการใช้ที่ใดก็สามารถคัดลอกไปใช้ได้ตามที่ต้องการได้ทันที แนวทางการเขียนโปรแกรมเชิงวัตถุนี้จะเหมาะกับการเขียนโปรแกรมขนาดใหญ่ เพราะสามารถนำเอาชิ้นส่วนที่มีอยู่แล้วกลับมาใช้ใหม่จะสร้าง ออบเจ็คใหม่เฉพาะชิ้นส่วน ที่ยังไม่มี ทำให้ประหยัดเวลา และลดแรงงานไปได้มาก สามารถพัฒนาโปรแกรมได้อย่างรวดเร็ว และนอกจากนี้มันยังเป็นประโยชน์สำหรับซอฟต์แวร์ ในอนาคตเพราะสามารถนำออปเจ็คไปใช้ซ้ำ (Reuse) ลดค่าใช้จ่ายในการพัฒนาไปได้มาก และบำรุงรักษาง่ายและประหยัดกว่า ความแตกต่างระหว่างการพัฒนาตามแนว Structured Paradigm กับ Object–Oriented Paradigm ดูได้จากตาราง

เปรียบเทียบวงจรชีวิตของซอฟต์แวร์ที่พัฒนาตามแนว Structured Paradigm กับ Ojbect-oriented Paradigm

Structured Paradigm   Object-Oriented Paradigm
  1. ขั้นศึกษาความต้องการ
    (Requirement)
  1. ขั้นศึกษาความต้องการ
    (Requirement)
  1. กำหนดคุณลักษณะซอฟต์แวร์
    (Specification)
  • ระบุรายการที่ซอฟต์แวร์ต้องกระทำ
    (Determine What the Product Does) 
  1. วิเคราะห์เชิงวัตถุ
    (Object Oriented analysis)
  • ระบุรายการที่ซอฟต์แวร์ต้องทำ
    (Determine What the Product Does)
  • วิเคราะห์ออปเจ็คที่ต้องการ
    (Extract the Objects)
  1. วางแผน
    (Planning)
  1. วางแผน
    (Planning)
  1. ออกแบบ
    (Design)
  • ออกแบบโครงสร้างหน่วยย่อย
    [Architectural Design (Extract the Modules)]
  • ออกแบบรายละเอียดแต่ละหน่วยย่อย
    (Detialed Design)
  1. ออกแบบเชิงวัตถุ
    (Object Oriented Design)
  • ออกแบบในรายละเอียดแต่ละออปเจ็ก
    (Detailed Design)
  1. เข้ารหัส
    (Implementation)    
  • เขียนรหัสคำสั่งด้วยภาษาคอมพิวเตอร์แนว
    Structuted Paradigm
  1. เขียนโปรแกรมเชิงวัตถุ
    (Object OrientedProgramming)
  • เขียนรหัสคำสั่งด้วยภาษาที่สามารถเขียนแนว Object Oriented Paradigm
  1. รวบรวมหน่วยย่อยเป็นซอฟต์แวร์
    (Integration)
  1. รวบรวมออปเจ็คเป็นซอฟต์แวร์
    (Integration)
  1. บำรุงรักษาซอฟต์แวร์
    (Maintenance)
  1. บำรุงรักษาซอฟต์แวร์
    (Maintenance)
  1. หมดอายุการใช้งาน
    (Retirement)

  1. หมดอายุการใช้งาน
    (Retirement)

ศึกษาเนื้อหาโดยละเอียดได้จากหนังสือเสริม ....