FlowScript 0.1 ภาษาเชิงความหมายสำหรับออกแบบแอป
Erland Kjensli เปิดตัว FlowScript 0.1 ฉบับร่างทดลองบน GitHub เพื่ออธิบายโมเดลความหมายและพฤติกรรมของแอปก่อนเริ่มลงมือเขียนโค้ด

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง
- FlowScript 0.1 เป็นภาษาเชิงความหมายสำหรับอธิบายแอปก่อนเขียนโค้ด
- แยกโครงสร้าง หน้าที่ การนำทาง และสถานะออกจากกันอย่างชัดเจน
- ออกแบบให้ไวยากรณ์เรียบง่ายแต่มีความเข้มงวดทางความหมายสูง
- เปิดให้ชุมชนนักพัฒนาทดลองใช้งานและร่วมให้ข้อเสนอแนะบน GitHub
การออกแบบสถาปัตยกรรมซอฟต์แวร์และการสร้างโมเดลแอปพลิเคชันมักเผชิญกับโจทย์ที่ซับซ้อนเสมอ โดยเฉพาะการทำความเข้าใจภาพรวมของระบบก่อนที่จะเริ่มกระบวนการพัฒนาจริง Erland Kjensli จึงได้พัฒนาโปรเจกต์ทดลองในชื่อ FlowScript 0.1 ซึ่งเป็นภาษาเชิงความหมายหรือ Semantic Language ที่ถูกออกแบบมาเพื่ออธิบายโครงสร้างและพฤติกรรมของแอปพลิเคชันในรูปแบบที่มนุษย์อ่านเข้าใจง่ายและมีความกะทัดรัด
แนวคิดเบื้องหลังภาษาดังกล่าวเริ่มต้นจากปัญหาคลาสสิกที่ว่า แผนผังกระบวนการหรือ Flowcharts แบบดั้งเดิมมีความเหมาะสมกับการแสดงลำดับขั้นตอน การตัดสินใจ และการเปลี่ยนผ่าน แต่แอปพลิเคชันสมัยใหม่มีองค์ประกอบที่ซับซ้อนเกินกว่าจะแสดงผลเป็นเพียงกล่องและลูกศรเชื่อมโยงกันได้ การพยายามยัดเยียดทุกอย่างลงในแผนผังแบบเดิมจึงมักทำให้เกิดความยุ่งยากและไม่ครอบคลุม

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง
ด้วยเหตุนี้ FlowScript จึงถูกพัฒนาขึ้นโดยมีแนวคิดว่าแผนภาพเป็นเพียงการฉายภาพแบบหนึ่งจากโมเดลแอปพลิเคชันที่ลึกซึ้งกว่า ภาษาดังกล่าวจึงมุ่งเน้นไปที่การอธิบายแก่นแท้ของแอปพลิเคชันว่าคืออะไรและมีพฤติกรรมอย่างไร โดยยังไม่ผูกติดกับเทคโนโลยีการลงมือปฏิบัติจริง เช่น ไม่จำเป็นต้องระบุว่าแอปจะใช้ React, เฟรมเวิร์ก UI ตัวใด, แบ็คเอนด์ระบบไหน หรือฐานข้อมูลรูปแบบใด ทำให้เอกสารยังคงมีความหมายแม้เทคโนโลยีเบื้องหลังจะเปลี่ยนไปก็ตาม
แนวคิดการแยกโมเดลเชิงความหมายออกจากเทคโนโลยีการใช้งานจริง (Separation of Concerns) ถือเป็นแนวทางที่มีประโยชน์อย่างมากในทางวิศวกรรมซอฟต์แวร์ เพราะช่วยลดการผูกมัดที่แน่นหนาเกินไประหว่างการออกแบบระบบและการเลือกใช้เครื่องมือ ช่วยให้ทีมพัฒนาสามารถปรับเปลี่ยนสแต็กเทคโนโลยีได้ในอนาคตโดยไม่ต้องออกแบบโครงสร้างตรรกะของแอปใหม่ทั้งหมด
ในเวอร์ชัน 0.1 นี้ ภาษาได้ทำการแยกแนว concepts สำคัญออกจากกันอย่างเด็ดขาดเพื่อให้โมเดลมีความแม่นยำและไม่คลุมเครือ ประกอบด้วย:
- โครงสร้างลำดับชั้น (Hierarchy) เช่น หน้าจอและรายการข้อมูลภายใน
- กราฟการนำทาง (Navigation graph) ที่แยกระหว่างการมีโครงสร้างกับการอนุญาตให้ผู้ใช้ข้ามไปมาระหว่างหน้า
- กราฟสถานะ (State graph) เช่น สถานะ Active หรือ Archived
- การจัดการการแสดงผลแบบ Responsive ที่มองความแตกต่างของหน้าจอเป็นเพียงการฉายภาพจากโมเดลเดียวกัน
- การแยกระหว่างการกระทำของผู้ใช้ (User Action) และระบบ
เป้าหมายการออกแบบของ FlowScript คือความเรียบง่ายทางไวยากรณ์ผ่านการเยื้องบรรทัดเพื่อแสดงความสัมพันธ์แบบซ้อนทับ แต่มีความเข้มงวดทางความหมายขั้นสูง (Syntactic simplicity, semantic strictness) เพื่อให้ตัวประมวลผลในอนาคตสามารถตรวจสอบความถูกต้องของความสัมพันธ์ เงื่อนไข และการอ้างอิงต่างๆ ได้อย่างแม่นยำ
แม้ว่าโครงการนี้จะยังอยู่ในระยะเริ่มต้นที่เป็นฉบับร่างสำหรับการทำงานร่วมกัน (Experimental working draft) แต่เป้าหมายระยะยาวคือการที่ซอร์สโค้ดชุดเดียวสามารถรองรับการฉายภาพได้หลากหลายรูปแบบ ทั้งแผนภาพโครงสร้าง เอกสาร กรณีทดสอบ และโครงสร้างพื้นฐานสำหรับการพัฒนาซอฟต์แวร์ในอนาคต โดยผู้สนใจสามารถเข้าไปศึกษาและร่วมทดลองได้ผ่านช่องทาง GitHub ของโปรเจกต์
ที่มา: Dev.to
พบข้อมูลผิดพลาดในบทความนี้? แจ้งปัญหาบทความนี้
ความคิดเห็น
แสดงความคิดเห็น