System Modeling with UML2 : State machine

วันนี้ได้เรียนวิชา System Modeling with UML2 ในหัวข้อ State Machine เลยสรุปไว้ซ่ะหน่อย
จุดประสงค์

  • เพื่อให้เข้าใจและสามารถที่จะควบคุม :
    • Events (signal event, call event, time event และ change event)
    • Actions
    • Transitions
    • States (simple state, composite state and submachine state)
    • Pseudo-state
  • เพื่อทำให้ behavior ของส่วนต่างๆ ของระบบนั้นมีความชัดเจน..เข้าใจง่ายนั่นเอง
    • โดยเราสามารถที่จะแยก behavior นั้นออกเป็นส่วนๆ ด้วย finite(ขอบเขต) state transition systems
  • เพื่อให้เข้าใจ State machine diagram
    โดยมี 2 ชนิด คือ
    • Behavior state machines คือ สามารถใช้ เพื่อกำหนด inner behavior ของ model element ที่แตกต่างกัน
    • Protocol state machines จะถูกใช้เพื่อกำหนดขอบเขตการใช้งานของ Protocols  

[ad#ad-post-1]

รายละเอียดของ State machine diagram

  1. Diagram นี้จะถูกใช้เพื่ออธิบาย Finite state automate ให้อยู่ในรูปของ States graphs โดยจะมีเส้นโค้ง (arcs) ทำหน้าที่เป็นตัวอธิบาย การเปลี่ยนแปลง (Transition) ของ State ต่างๆ
  2. เมื่อมีการเปลี่ยน State ระหว่าง elements กับ elements หรือ elements กับ actor เจ้าตัว SMD เจ้าตัว SMD จะทำหน้าที่อธิบายการเปลี่ยนแปลงต่างๆ เหล่านั้นว่าเกิดจาก Event อะไรแล้วเปลี่ยน State เป็นอะไร
  3. State จะถูกกำหนดลักษณะ ด้วยช่วงเวลาและความสามารถ ในกรณีของ Object มันจะทำหน้าที่เป็นตัวเชื่อมโยง ระหว่าง Attributes และ Relationships.
  4. Transition นั้นจะถูกสั่งให้เปลี่ยน หรือ ทำงาน ด้วย event

ตัวอย่าง

State machine example

ที่มา : http://www.agilemodeling.com/images/models/stateMachineSeminarRegistration.jpg

Transition
       Transition คือความสัมพันธ์ระหว่าง 2 states ที่แสดงให้เห็นว่าเมื่อ State แรกนั้นทำงานหรือมี action ตามที่ได้กำหนดไว้..ก็ให้กระโดดเข้าไปยัง State ที่ 2 แล้วก็ไปทำงานตามที่กำหนดไว้ใน State ที่ 2 เช่นกัน ซึ่ง ไอ้ Transition นี่แบ่งออกเป็น 3 แบบดังนี้

  1. Internal : ก็เป็น Transition ที่เกิดขึ้นภายในของแต่ละ State นั้นๆ
  2. Local : คือในแต่ละ State นั้นสามารถที่จะมี Sub-State ได้ซึ่ง Transition แบบนี้นี่เองที่สามารถคุยกันระหว่าง State ที่เป็น Parent state กับ Child state
  3. External : ก็ตรงตัว ก็สามารถที่จะวิ่งออกไปยัง State ที่อยู่ใน Class/Object อื่นๆ ได้

Event
     Event คือ รายละเอียดของเหตุการณ์ที่จะเกิดขึ้นที่สามารถวัดหรือหาค่าได้ โดยมีความสัมพันธ์ ระหว่างตำแหน่งและเวลา
     Event มีด้วยกัน 4 แบบ คือ

  1. Call event : เกิดขึ้นเมื่อมี การดำเนินการ นั้นถูกร้องขอ
  2. Change event : จะถูกใช้เมื่อมีการเปลี่ยนแปลงค่าบางค่าใน ระบบ จนถึงค่าค่าหนึ่งที่ได้กำหนดไว้ ทำให้action ที่ได้กำหนดไว้ก็จะทำงาน
  3. Signal event : เมื่อได้รับสัญญาณนั้นๆ action ก็จะทำงาน
  4. Time event : นั้นจะแยกออกเป็น 2 แบบย่อยๆ คือ
    1. Relative time event คือเมื่อถึงช่วงเวลาที่กำหนดของ event ก็จะสั่งให้ action นั้นทำงาน เค้ามักจะใช้ after(time)
    2. Absolute time event คือ กำหนดเวลาที่แน่นอนในการที่จะสั่งให้ action นั้นทำงาน เค้ามักจะใช้ at(time)

State

    State คือ เงื่อนไขหรือสถานการณ์ ที่อยู่ในระหว่างช่วงเวลาที่ Object นั้นทำงาน โดยมันจะตอบสนองต่อบางเงื่อนไข (conditions), ทำงานตามบาง activity หรือ รอทำงานเมื่อมี event นั้นมาถึงหรือเกิดขึ้น โดย State นั้นแบ่งออกได้เป็น 3 แบบ ดังนี้

  1. Simple state คือ State ที่ไม่สามารถที่จะมี Sub-state ได้
  2. Composite state คือ มีการแบ่งเป็นส่วนๆของ State แล้วมีการรวม State ย่อยๆ เหล่านั้นให้กลายเป็น Sub-state
  3. Submanchine state คือ State ที่เหมือนกับ Composite state ทุกอย่างเพียงแต่ว่าจะยอมให้มีการ reuse state และสามารถที่จะแทรก submanchine เข้าไปยัง State machine ได้

 

Protocol state machine

    มักจะถูกกำหนดในสถาพแวดล้อมที่มีการจัดกลุ่ม มันจะถูกกำหนดด้วย Operations ของ classifier ที่สามารถที่จะเรียก State ภายใต้เงื่อนไขที่กำหนด ดังนั้น มันจึงถูกจำกัดให้เรียก Sequences ของการทำงาน ในกลุ่มเดียวกัน
     จุดเด่นคือ มีชื่อ event name ได้แต่ต้องไม่มี Action
   
พอเรียนเสร็จอาจารย์เค้าก็ให้ทำแบบฝึกหัด โจทย์คือ "ให้คุณออกแบบ state machine ชีวิตของมนุษย์" อาจารย์เค้าก็มี State มาให้ดังนี้

 

  • Alive
  • Child
  • Adult
  • Unmarried
  • Married
  • Windowed
  • Divorced
  • Deceased

เรียนเสร็จก็ได้ผล..ดังนี้

State machine : life cycle

[ad#post-image]