|

เทคนิคในการศึกษา Design Pattern ในการออกแบบซอฟท์แวร์ สิ่งที่ช่วยให้เราออกแบบซอฟท์แวร์ได้ง่าย เร็ว ดี คือ การรู้ที่จะนำ Pattern ที่มีการคิดวิธีแก้ปัญหาต่างๆ ที่มักพบในการพัฒนาซอฟท์แวร์มาช่วยเป็นแนวทางในการออกแบบซอฟท์แวร์แบบไม่ต้องคิดเองทั้งหมดให้เสียเวลา เพียงรู้จักเลือก Pattern ที่เหมาะสมมาใช้ก็เพียงพอแล้ว
0. อย่าจำ
- แนะนำให้ใช้สมองซีกขวา คิดในเชิงกลยุทธ์
- GoF ที่เขียนตั้งแต่ 1994 มีประโยชน์ แต่เก่าไปแล้ว
- หัวใจของ Architecture คือต้องมองแก่นให้ออก ว่าอะไรเป็นแก่น อะไรเป็นเปลือก
- ต้องเลือกใช้ Pattern ให้เหมาะสมกับสถานการณ์ แม้ว่าเป็นปัญหาเดียวกัน แต่ในเวลาที่ต่างไปอาจจะใช้วิธีการแก้ปัญหาที่ต่างกัน
- ศิลปะ -> การคิดนอกกรอบ (Lateral Thinking) + การคิดเชิงกลยุทธ์ (Strategic Thinking)
- การเลือกใช้ Pattern ได้อย่างเหมาะสม ลงตัวกับสกถานการณ์ (คนเก่ง Pattern ต้องวิเคราะห์สถานการณ์เป็น)
- แนะนำให้หาหนังสือเกี่ยวกับการฝึกความคิดมาเพิ่มเติม
- ศิลปะ ผ่านมุมมอง ทัศนคติ รสนิยม
1. Problem + Domain Knowledge
- ต้องเป็นนักวิเคราะห์ปัญหาที่ดีก่อน
- Context = บริบท ต้องดูให้ออกว่าอะไรเป็นตัวหลอก อะไรเป็นตัวจริง
- บริบท ประกอบด้วยอะไรก็ได้ที่เกี่ยวข้องกับปัญหา เช่น โครงสร้างองค์กร นโยบายองค์กร รวมถึงภายนอกองค์กร
- ต้องเข้าใจว่าองค์ความรู้หลักของปัญหาคือเรื่องอะไร รู้ว่าอะไรเป็นองค์ความรู้รอง
- ต้องยอมรับว่าไม่มีใครเก่งไปทุกด้าน ถ้าเราชำนาญหรือาเข้าใจในเรื่องใดเป็นพิเศษ เราจะแก้ปัญหาในเรื่องนั้นได้เร็ว ต้องยอมรับในจุดอ่อนของเราให้ได้ เรื่องที่เราไม่รู้ให้หา Domain Expert มาช่วย หรือไปศึกษาเรียนรู้เพิ่มเติม
2. Context
- ตัวอย่าง เช่น เรามีโจทย์ยาวๆ 4-5 บรรทัด ต้องเข้าใจว่าเค้าถามอะไร อะไรเป็นองค์ความรู้หลัก อะไรเป็นองค์ความรู้ข้างเคียง (เปรียบเทียบ ดวงอาทิตย์เป็นองค์ความรู้หลัก ที่มีดาวเป็นองค์ความรู้รอง) เมื่อรู้โจทย์แล้ว จึงนำมาเลือกใช้วิธีในการแก้ปัญหา
3. Pattern Name
- ความจำปรกติเก็บไว้ที่สมอง อีกที่หนึ่งคือจิตใต้สำนึก ซึ่งจะถ่ายโอนจากสมองไปที่จิตใต้สำนัก (กระบวนการหยั่งรู้เพื่อให้เกิดปัญญา) โดยการใช้อยู่อย่างสม่ำเสมอ จนมีความชำนาญ (ต้องนึกชื่อ Pattern ให้ออก จากนั้นเปิดหนังสือดูเพื่อนำมาใช้ต่อ)
4. Related Pattern
- มักใช้ร่วมกับ Pattern อะไร
- ประยุกต์มาจาก Pattern อะไร ดูว่ามาจาก Pattern อะไร เพิ่มเติมอะไร ต่างจากเดิมตรงไหน
5. สร้าง Pattern เอง
- Pattern แต่ละตัวมีข้อจำกัดของมันอยู่ ซึ่งอาจจะไม่ตรงกับความต้องการของเรา
- สิ่งที่อยู่ใน Framework ประกอบด้วย Pattern ต่างๆ มารวมกัน
- Output ของ Pattern (Pattern มักเรียกว่า Solution กึ่งสำเร็จรูป) คือการออกแบบกลไก (Architectural Mechanism) เช่น กลไก Connector Data, Trace Control, Database Connection Pooling Management,...
- Framework ใช้ในการแก้ปัญหาระดับใหญ่ (Domain problem) ประกอบด้วย Solution ต่างๆ มารวมกัน
- Framework มีความหมายใกล้เคียงพิมพ์เขียว (Reference Architecture) ไม่ได้เอาไว้ใช้ เอาไว้ให้อ้างอิง, Framework ต้องปรับก่อนใช้
- ปัญหาที่พบในบ้านเรา เราควรเน้น What ก่อน How ถ้าเราเน้น How-To โดยไม่รู้ทฤษฎี จะทำให้เราตัน
|