แนวคิด "STEE" กับการพัฒนาโปรแกรมเชิงวัตถุ

ปัญหาและความต้องการ
    การนำแนวคิดการออกแบบเชิงวัตถุ หรือ Object Oriented Design (OOD)  มาใช้ในการออกแบบซอฟต์แวร์ มีปัญหาที่ต้องการคำตอบหลายประการ เช่น
  • มีวัตถุอะไรบ้างที่ต้องนำมาทำงานร่วมกัน เพื่อให้บรรลุตามวัตถุประสงค์ที่กำหนดไว้
  • คลาสของวัตถุในระบบมีอะไรบ้าง มีการสืบทอดพันธุกรรมในลักษณะใดบ้าง
      MVC (Model View Controller)  เป็นแนวคิดหนึ่งที่ได้รับความนิยมในการออกแบบเชิงวัตถุ ที่ถูกพัฒนาขึ้นเพื่อตอบคำถามข้างต้นได้ 

      STEE (System Task Event Entity)  ก็เป็นอีกแนวคิดหนึ่งในการออกแบบเชิงวัตถุ ที่ถูกพัฒนาขึ้นเพื่อตอบคำถามข้างต้นเช่นเดียวกัน

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

แนวคิด "STEE" คืออะไร?
      มองว่าองค์ประกอบของโปรแกรมประกอบด้วยวัตถุ 4 ประเภทหลัก ทำงานอยู่ร่วมกัน คือ
  • System Object (วัตถุระบบ)  -  Business logic layer
  • Task Object (วัตถุงาน) - Business logic layer
  • Event Object (วัตถุเหตุการณ์)  - Presentation layer
  • Entity Object (วัตถุปัจจัย) - Data Layer
    
ทุกสรรพสิ่งล้วนเป็นไปตามเหตุและปัจจัย
    มองวิเคราะห์ทุกสรรพสิ่ง โดยสมมติเป็นตัวระบบหรือวัตถุระบบ (System Object) ประกอบอยู่รวมกันในลักษณะระบบซ้อนระบบเป็นชั้นๆ อยู่ที่ว่าเรากำลังสนใจในเรื่องอะไร ระดับใดเมื่อเรากำหนดขอบเขตความสนใจได้แล้ว ก็พิจารณาต่อว่า มีปัจจัยอะไรเป็นส่วนประกอบอยู่ภายในระบบอีกบ้าง ซึ่งในที่นี้แต่ละระบบจะประกอบด้วยวัตถุ 4 กลุ่มคือ 
  • วัตถุระบบ (System Object)  หรือ ระบบย่อย
  • วัตถุงาน (Task Object) 
  • วัตถุเหตุการณ์  (Event Object)  และ
  • วัตถุปัจจัย (Entity Object)
    หากมองในลักษณะของระบบซ้อนระบบ เราจะพบว่าวัตถุระบบเองก็คือวัตถุงานชนิดหนึ่งที่อยู่ภายในอีกระบบหนึ่ง ที่เรียกว่า ระบบแม่ (Parent System)
เกิดมาให้บริการแล้วจากไป
    การสร้างวัตถุต่างๆ มีแนวคิดว่า "เกิดมาให้บริการแล้วจากไป" เพราะทุกสรรพสิ่งไม่มีอะไรที่จีรังยั่งยืน หรือเป็นอนิจจัง (เกิดขึ้น ตั้งอยู่ ดับไป) การเกิดขึ้นของวัตถุ เมื่อสร้างขึ้นมาแล้วก็ต้องทำงานเพื่อให้บริการบางสิ่งบางอย่างในระบบ หรือมีหน้าที่รับผิดชอบบางอย่าง หรือทำประโยชน์บางอย่าง หรือมีคุณค่าบางอย่างเสมอ และเมื่อทำหน้าที่เสร็จแล้วก็ต้องตายจากไป

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

Create -> Services -> Destroy

แนวคิด STEE มีประโยชน์อย่างไร?
  1. ช่วยให้การวิเคราะห์และออกแบบระบบทำได้ง่ายขึ้น
  2. ช่วยให้การเขียน ปรับปรุง พัฒนาและบำรุงรักษาโปรแกรมทำได้ง่ายรวดเร็ว 
  3. ช่วยประหยัดค่าใช้จ่ายและลดต้นทุนการผลิตซอฟต์แวร์
  4. นำมาประยุกต์ใช้กับชีวิตประจำวัน ให้มีสติ ใช้สติ ทุกวัน