Page 20 - วิศวกรรมซอฟต์แวร์
P. 20
7-10 วิศวกรรมซอฟต์แวร์
แนวคิดเชิงวัตถุมีพื้นฐานก�ำเนิดมาจากปัญหาหรือข้อจ�ำกัดของการพัฒนาเชิงโครงสร้าง (structured
approach) หรอื เชงิ กระบวนการ (procedural approach) เชน่ มคี วามเสยี่ งสงู ในการพฒั นาซอฟตแ์ วรเ์ ชงิ กระบวนการ
ส�ำหรับโครงการท่ีมีการเปล่ียนแปลงความต้องการจากผู้ใช้บ่อยครั้ง และการพัฒนาเชิงโครงสร้างน้ัน โปรแกรมท่ีได้
จะให้ผลที่ดีกับงานเฉพาะด้านเท่านั้น ไม่สามารถน�ำไปใช้กับงานประเภทอ่ืน ๆ ได้ หรือเรียกว่า ระดับการน�ำกลับมาใช้
ใหม่ (reuse) อยู่ในระดับต่�ำ ดังน้ัน จึงท�ำให้แนวคิดเชิงวัตถุ เข้ามามีบทบาทมากขึ้น ท�ำให้สามารถใช้งานได้อย่าง
เหมาะสมกับโลกแห่งความจริง โดยใช้ได้กับงานหลากหลายประเภท แนวคิดการพัฒนาเชิงวัตถุ เริ่มจากการศึกษา
ความเป็นไปได้ และการวิเคราะห์ระบบเดิมท่ีมีอยู่ด้วยการมองในเชิงวัตถุ
เอลัน เคย์ (Alan Kay) เป็นผู้หน่ึงท่ีพัฒนาภาษา Small talk ซ่ึงเป็นภาษาต้นแบบของการเขียนโปรแกรม
เชิงวัตถุตามแนวทางการพัฒนาซอฟต์แวร์เชิงวัตถุ ได้ให้นิยามของภาษาเชิงวัตถุไว้ดังน้ี
- ทุก ๆ สิ่งเป็นวัตถุ
- โปรแกรม คือ กลุ่มของวัตถุท่ีส่งสารบอกกันเพ่ือท�ำงาน
- วัตถุแต่ละวัตถุมีหน่วยความจ�ำ
- วัตถุต้องมีชนิด
- วัตถุท่ีจัดอยู่ในประเภทเดียวกันย่อมได้รับข่าวสารเหมือนกัน
4. ความหมายของวัตถุ
ค�ำว่า อ็อบเจ็กต์ (object) ถูกน�ำมาใช้อย่างเป็นทางการคร้ังแรกในภาษา Simula เป็นการจ�ำลองส่วนประกอบ
ในโลกจริงขึ้น มีผู้ให้นิยามของวัตถุหรืออ็อบเจ็กต์ ไว้ดังน้ี
- นิยามโดยโค้ดและยอร์ดอน (Coad and Yourdon) (ค.ศ. 1990) กล่าวว่า อ็อบเจ็กต์เป็นรูปแบบท่ีน�ำเสนอ
ส่ิงต่าง ๆ สะท้อนถึงความสามารถของระบบที่จะเก็บข้อมูล และมีการส่ือสารถึงกันระหว่างอ็อบเจ็กต์
- แรมเบิร์ก (Rumbaugh) และคณะ (ค.ศ. 1991) อธิบายอ็อบเจ็กต์ว่า หมายถึง การรวมกันของข้อมูล และ
กฎเกณฑ์การท�ำงาน (logic) ที่แสดงส่วนประกอบที่สนใจในโลกจริง
ดังนั้น วัตถุหรืออ็อบเจ็กต์ คือ หน่วยสนใจของระบบท่ีท�ำให้เกิดเหตุการณ์บางอย่าง สิ่งส�ำคัญที่ต้องรู้ใน
การพัฒนาระบบเชิงวัตถุ คือต้องตอบค�ำถามส�ำคัญ 2 ข้อ ต่อไปน้ี
- มีอ็อบเจ็กต์ใดบ้างที่จ�ำเป็นส�ำหรับระบบที่ก�ำลังพิจารณา
- อ็อบเจ็กต์เหล่าน้ันเมื่ออยู่ในระบบแล้วต้องท�ำหน้าท่ีใดได้บ้าง
โดยท่ัวไป วัตถุบนโลก สามารถแบ่งได้เป็น 2 กลุ่ม คือ
1) วัตถุที่สามารถมองเห็นได้และจับต้องได้ (tangible object) เช่น หนังสือ คอมพิวเตอร์ รถยนต์ เป็นต้น
2) วัตถุท่ีมีอยู่จริงแต่จับต้องไม่ได้ (intangible object) เช่น กฎหมาย เวลา ความรู้ต่าง ๆ เป็นต้น
สิ่งท่ีเกิดขึ้นจากวัตถุต่าง ๆ คือ กิจกรรม (activity) ความเคลื่อนไหว (movement) หรือการกระท�ำ (action)
เช่น คนรับประทานอาหาร คนเล่นกับแมว เป็นต้น
เม่ือได้รู้จักกับความหมายของอ็อบเจ็กต์แล้ว ในกระบวนการพัฒนาซอฟต์แวร์เชิงวัตถุ สิ่งที่นักพัฒนาต้อง
ด�ำเนินการคือ การค้นหาวัตถุจากขอบเขตของปัญหาท่ีถูกก�ำหนดจากผู้ใช้งานซอฟต์แวร์ ซ่ึงวิธีการในการค้นหาวัตถุ
นั้นจะได้กล่าวถึงต่อไป