อ่าน 2 นาที
การสร้างแบบจำลองเชิงวัตถุแบบเรียลไทม์
ROOM ได้รับการพัฒนาในช่วงต้นทศวรรษ 1990 เพื่อจำลองระบบเรียลไทม์ ในตอนแรกเน้นไปที่การสื่อสารโทรคมนาคมแม้ว่า ROOM จะสามารถนำไปใช้กับระบบเรียลไทม์ที่ขับเคลื่อนด้วยเหตุการณ์ใดๆ ก็ได้
การสร้างแบบจำลองเชิงวัตถุแบบเรียลไทม์
การสร้างแบบจำลองเชิงวัตถุแบบเรียลไทม์ ( ROOM ) เป็นภาษาเฉพาะโดเมน
ROOM ได้รับการพัฒนาในช่วงต้นทศวรรษ 1990 เพื่อจำลองระบบเรียลไทม์ [ 1 ] ในตอนแรกเน้นไปที่การสื่อสารโทรคมนาคมแม้ว่า ROOM จะสามารถนำไปใช้กับระบบเรียลไทม์ที่ขับเคลื่อนด้วยเหตุการณ์ใดๆ ก็ได้
ROOM ได้รับการสนับสนุนโดยObjecTime Developer (เชิงพาณิชย์) และปัจจุบันถูกนำไปใช้โดยโครงการ Eclipse อย่างเป็นทางการ eTrice [ 2 ]
เมื่อ มีการกำหนดนิยามของ UML2 (เวอร์ชัน 2 ของUMLที่มีส่วนขยายสำหรับการทำงานแบบเรียลไทม์) องค์ประกอบหลายอย่างของ ROOM ก็ได้รับการนำมาใช้ด้วย
แนวคิดและใจความสำคัญของ ROOM
ROOM เป็นภาษาสร้างแบบจำลองสำหรับการกำหนดระบบซอฟต์แวร์ ช่วยให้สามารถสร้างโค้ดทั้งหมดสำหรับระบบจากแบบจำลองได้ ROOM มีทั้งรูปแบบข้อความและรูปแบบกราฟิก โดยทั่วไปแล้ว โค้ดที่สร้างขึ้นจะมาพร้อมกับโค้ดที่เขียนด้วยมือ เช่น สำหรับส่วนติดต่อผู้ใช้แบบกราฟิก ( GUI ) โค้ดจะถูกคอมไพล์และเชื่อมโยงกับไลบรารีรันไทม์ซึ่งมีคลาสพื้นฐานและบริการพื้นฐาน (เช่น การส่งข้อความ)
ROOM อธิบายระบบซอฟต์แวร์ในสามมิติ ได้แก่ โครงสร้าง พฤติกรรม และการสืบทอด คุณสมบัติทั้งสามส่วนต่อไปนี้จะอธิบายรายละเอียดเพิ่มเติมในส่วนถัดไป
โครงสร้าง
โครงสร้างใน ROOM ประกอบด้วยแอคเตอร์หรือแคปซูลแอคเตอร์สามารถสื่อสารกันได้โดยใช้พอร์ตพอร์ตเหล่านั้นเชื่อมต่อกันด้วยไบน์ดิงแอคเตอร์จะแลกเปลี่ยนข้อความแบบอะซิง โครนัส ผ่านพอร์ตและไบน์ดิง แต่ละพอร์ต จะถูกกำหนด โปรโตคอล เฉพาะ โปรโตคอลใน ROOM กำหนดชุดข้อความขาออกและชุดข้อความขาเข้า พอร์ตสามารถเชื่อมต่อกันด้วยไบน์ดิงได้หากพอร์ตเหล่านั้นอยู่ในโปรโตคอลเดียวกันและเป็นคอนจูเกตกัน นั่นหมายความว่าพอร์ตหนึ่งส่งข้อความขาออกของโปรโตคอลและรับข้อความขาเข้า พอร์ตนี้เรียกว่า พอร์ต ปกติพอร์ตคู่ของมันซึ่งเรียกว่าพอร์ตคอนจูเกตจะรับข้อความขาออกและส่งข้อความขาเข้าของโปรโตคอล กล่าวอีกนัยหนึ่ง พอร์ตคือการรวมกันของอินเทอร์เฟซที่จำเป็นและอินเทอร์เฟซที่จัดให้ในบทบาทหนึ่ง (เนื่องจากโปรโตคอลเดียวกันสามารถใช้ได้โดยหลายพอร์ตของแอคเตอร์)

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

ในระหว่างการเปลี่ยนแปลงสถานะ จะมีการเรียกใช้โค้ดบางส่วน โปรแกรมเมอร์ (หรือผู้สร้างแบบจำลอง) สามารถแนบโค้ดเหล่านี้เข้ากับสถานะและการเปลี่ยนสถานะได้ ใน ROOM โค้ดเหล่านี้เขียนด้วยภาษาที่เรียกว่าภาษาในระดับรายละเอียดซึ่งโดยปกติจะเป็นภาษาเป้าหมายของการสร้างโค้ด สถานะหนึ่งๆ สามารถมีโค้ดเริ่มต้นและโค้ดสิ้นสุดได้ในระหว่างการเปลี่ยนแปลงสถานะ โค้ดสิ้นสุดของสถานะต้นทางจะถูกเรียกใช้ก่อน จากนั้นโค้ดการกระทำของการเปลี่ยนสถานะจะถูกเรียกใช้ และสุดท้ายโค้ดเริ่มต้นของสถานะเป้าหมายจะถูกเรียกใช้ ส่วนหนึ่งของโค้ดเหล่านี้โดยทั่วไปคือการส่งข้อความผ่านพอร์ตของแอคเตอร์
เครื่องสถานะใน ROOM ยังมีสัญลักษณ์กราฟิกที่คล้ายกับแผนผังสถานะ UMLด้วย ตัวอย่างแสดงอยู่ในแผนภาพในส่วนนี้
เครื่องสถานะยังสามารถมีลำดับชั้นได้ในแง่ที่ว่าสถานะต่างๆ สามารถมีเครื่องสถานะย่อยได้ โครงสร้างที่คล้ายกันนี้สามารถขยายได้ในระดับความลึกตามอำเภอใจ สำหรับรายละเอียดเกี่ยวกับความหมายของเครื่องสถานะแบบลำดับชั้น โปรดดูหนังสือต้นฉบับ[ 3 ]
แนวคิดสำคัญในบริบทของเครื่องสถานะคือโมเดลการทำงานแบบ " ทำงานจนเสร็จสมบูรณ์ " (run-to-completion) นั่นหมายความว่าตัวประมวลผลจะประมวลผลข้อความจนเสร็จสมบูรณ์ก่อนที่จะรับข้อความถัดไป เนื่องจากความหมายของการทำงานแบบ "ทำงานจนเสร็จสมบูรณ์" นั้นได้รับการรับประกันโดยสภาพแวดล้อมการทำงาน โปรแกรมเมอร์/ผู้สร้างโมเดลจึงไม่ต้องจัดการกับการซิงโครไนซ์เธรดแบบดั้งเดิม และนี่เป็นเช่นนั้นแม้ว่าระบบ ROOM ทั่วไปจะมีการทำงานพร้อมกันสูงมากเนื่องจากการสื่อสารแบบอะซิงโครนัส และอาจคุ้มค่าที่จะเน้นว่าลักษณะอะซิงโครนัสของระบบ ROOM นั้นไม่ได้เกิดขึ้นโดยบังเอิญ แต่สะท้อนถึงความเป็นอะซิงโครนัสโดยธรรมชาติของเครื่องจักรที่ถูกควบคุมโดยซอฟต์แวร์ แน่นอนว่าสิ่งนี้ต้องการความคิดที่แตกต่างจากที่จำเป็นสำหรับการเขียนโปรแกรมเชิงฟังก์ชันของระบบซิงโครนัส แต่หลังจากที่คุ้นเคยได้ไม่นานก็จะเห็นได้ชัดว่าเครื่องสถานะที่สื่อสารแบบอะซิงโครนัสเหมาะอย่างยิ่งสำหรับซอฟต์แวร์ควบคุม
มรดก
เช่นเดียวกับ ภาษาการเขียนโปรแกรมเชิงวัตถุอื่นๆROOM ใช้แนวคิดของคลาส Actor คือคลาสที่สามารถสร้างเป็นวัตถุได้หลายครั้งในระบบ แน่นอนว่าแต่ละอินสแตนซ์ของคลาส Actor จะติดตามสถานะของตนเองและสามารถสื่อสารกับอินสแตนซ์อื่นๆ ของคลาสเดียวกัน (และคลาสอื่นๆ) ได้
เช่นเดียวกับภาษาโปรแกรมสมัยใหม่อื่นๆ ROOM อนุญาตให้สืบทอดคลาส Actor ได้ โดยเป็นการสืบทอดแบบเดี่ยว เนื่องจากคลาส Actor สามารถสืบทอดมาจากคลาส Actor อื่น ( คลาสพื้นฐาน ) ได้ คลาสที่สืบทอดมาจะรับคุณสมบัติทั้งหมดของคลาสพื้นฐาน เช่น พอร์ตและ Actor Ref รวมถึง State Machine ด้วย คลาส Actor ที่สืบทอดมาสามารถเพิ่มสถานะและการเปลี่ยนสถานะเพิ่มเติมให้กับคลาสที่สืบทอดมาได้
การซ้อนชั้น
แนวคิดสำคัญสุดท้ายของ ROOM คือการแบ่งชั้น (Layering ) แนวคิดนี้หมายถึงชั้นแนวตั้งของระบบซอฟต์แวร์ที่ประกอบด้วยบริการและไคลเอ็นต์ ROOM นำเสนอแนวคิดของจุดเข้าถึงบริการ (SAP)สำหรับฝั่งไคลเอ็นต์และจุดจัดเตรียมบริการ (SPP)สำหรับฝั่งเซิร์ฟเวอร์ จากมุมมองของการใช้งาน Actor นั้น SAP และ SPP ทำงานเหมือนพอร์ต เช่นเดียวกับพอร์ต พวกมันเชื่อมโยงกับโปรโตคอล แต่แตกต่างจากพอร์ตตรงที่พวกมันไม่จำเป็นต้อง (และไม่สามารถ) ถูกผูกมัดอย่างชัดเจน แต่ Actor จะผูกติดกับบริการที่เฉพาะเจาะจงโดยการเชื่อมต่อระดับชั้นและการผูกติดของบริการนี้จะถูกส่งต่อแบบวนซ้ำไปยัง Actor ย่อยทั้งหมดของ Actor นี้ แนวคิดนี้คล้ายคลึงกับการฉีดการพึ่งพา (Dependency Injection ) มาก
วรรณกรรม
- Bran Selic, Garth Gullekson, Paul T. Ward: "การสร้างแบบจำลองเชิงวัตถุแบบเรียลไทม์", นิวยอร์ก, John Wiley & Sons Inc, 1994, ISBN 978-0-471-59917-3[ 1 ]
- ฉบับพิมพ์ใหม่: Bran Selic, Garth Gullekson, Paul T. Ward: "การสร้างแบบจำลองเชิงวัตถุแบบเรียลไทม์", ฮัมบูร์ก, MBSE4U, 2023, ISBN 978-3911081016[ 4 ]
ลิงก์ภายนอก
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ การสร้างแบบจำลองเชิงวัตถุแบบเรียลไทม์
ROOM ได้รับการพัฒนาในช่วงต้นทศวรรษ 1990 เพื่อจำลองระบบเรียลไทม์ ในตอนแรกเน้นไปที่การสื่อสารโทรคมนาคมแม้ว่า ROOM จะสามารถนำไปใช้กับระบบเรียลไทม์ที่ขับเคลื่อนด้วยเหตุการณ์ใดๆ ก็ได้
แนวคิดและใจความสำคัญของ ROOM
ROOM เป็นภาษาสร้างแบบจำลองสำหรับการกำหนดระบบซอฟต์แวร์ ช่วยให้สามารถ สร้างโค้ด ทั้งหมดสำหรับระบบจากแบบจำลองได้ ROOM มีทั้งรูปแบบข้อความและรูปแบบกราฟิก โดยทั่วไปแล้ว โค้ดที่สร้างขึ้นจะมาพร้อมกับโค้ดที่เขียนด้วยมือ เช่น สำหรับส่วนติดต่อผู้ใช้แบบกราฟิก ( GUI )...
โครงสร้าง
โครงสร้างใน ROOM ประกอบด้วย แอคเตอร์ หรือ แคปซูล แอคเตอร์สามารถสื่อสารกันได้โดยใช้ พอร์ต พอร์ตเหล่านั้นเชื่อมต่อกันด้วย ไบน์ดิง แอคเตอร์จะ แลกเปลี่ยนข้อความ แบบอะซิง โครนัส ผ่านพอร์ตและไบน์ดิง แต่ละพอร์ต จะถูกกำหนด โปรโตคอล เฉพาะ โปรโตคอลใน ROOM...
พฤติกรรม
ตัวละครแต่ละตัวใน ROOM มีพฤติกรรมซึ่งถูกกำหนดโดยใช้ เครื่องสถานะจำกัด แบบลำดับชั้น หรือเรียกสั้น ๆ ว่าเครื่องสถานะ เครื่องสถานะเป็น กราฟแบบมีทิศทาง ประกอบด้วยโหนดที่เรียกว่า สถานะ และขอบที่เรียกว่า การเปลี่ยนสถานะ...