450 likes | 829 Views
SCE - 4 דינמיקה בדגם הייררכי: StateCharts דר’ יעקב אקסמן תשס"ו. הנדסת מרכיבי תוכנה. דרישות תוכנה. דגם הייררכי. דגם פיזיקלי. מרכיבים. קוד להרצה = exe. מדידות. StateCharts ספרות. [Harel- 1987] David Harel “Statecharts: A visual formalism for complex systems”
E N D
SCE-4 דינמיקה בדגם הייררכי: StateCharts דר’ יעקב אקסמן תשס"ו
הנדסת מרכיבי תוכנה דרישות תוכנה דגםהייררכי דגםפיזיקלי מרכיבים קוד להרצה = exe מדידות
StateCharts ספרות [Harel- 1987] David Harel “Statecharts: A visual formalism for complex systems” Sci. Comput. Program. 8, 231-274 (June 1987). [Harel-1988] David Harel “On Visual Formalisms” Comm. ACM 31, 514-530 (May 1988). [HG- 1997] D. Harel and E. Gery “Executable Object Modeling with Statecharts” IEEE Computer 30, 31-42 (July 1997).
תרשים מצבים רגיל A e f B g(c) f C h • מצבים: A, B, C • מעברים: e, f, g, h • תנאי:g(c)
תרשים מצבים חסרונות • שטוח – חסר עומק/הייררכיה/מודולריות • אין פיתוח הדרגתי (e.g. top-down) • סידרתי – ללא דרך טבעית למיקבול (concurrency) • בזבזני • במעברים – אירוע גלובלי (למשל פסיקה) • מצוייר מכל מצב ומצב. • במצבים – מספרם גדל באופן מעריכי • עם גודל המערכת
StateCharts הגדרה תרשים מיצוב = StateCharts הרחבה של מכונת מצבים סופית (Finite State Machine) כדי לכלול הייררכיה ומקבול.
StateCharts גישה • עומק/הייררכיה – מצבים בתוך מצבים. • מקבילי – בו-זמניות של מצבים אורתוגונליים. • חסכון במעברים – רק ממצב עליון. • חסכון במצבים – מכפלה של מצבים • אורתוגונליים
Statecharts הרכבת מצבים D A e B g(c) f C h • מצבים: A, B, C, D • מעברים: e, f, g, h • תנאי:g(c) = XORהכלה ללא חפיפה מצבים A, C לא חופפים ומוכלים לגמרי ב- D להיות ב-D משמע להיות ב-A או ב-C, אך לא בשניהם.
Statecharts השוואה D A A e e f B B g(c) g(c) f f C C h h • מצב נוסף: D • מעבר הצטמצם וקוצר:f • מעבר קוצר: h • מעבר חדש: ברירת מחדל (אל C)
Statecharts להרכבת מצבים Y A D k B E e h g F f [in(G)] e G C m H I n n e p e = ANDחלוקה (ע"י קו ) מצבים A, Dאורתוגונליים: מחלקים את מצב Y להיות ב-Y משמע להיות גם ב-A וגם ב-D.
Statecharts השוואה עם תרשים מצבים רגיל תנאי in(G) מתבטא כאן במעבר f רק בין CG לבין BG. מעבר p למצב I מופיע 6פעמים! = AND שקול למכפלה קרטזית של המצבים.
Statecharts השוואה f [in(G)] H I Y A D k B E e h g F e G C m n n e p e AND צמצום מצבים ומעברים
Statecharts להרכבת מצבים Output &Broadcast m/e = מעבר m גורר תוצאה e מצב התחלתי:BFJ מצב סופי: CGI מפני המעברים e
Statecharts שעון ספרתי • 4 כפתורים: a, b, c, d
Statecharts תצוגת שעון מעברים סידרתיים
StateCharts מינוח וסימון H
StateCharts מינוח וסימון
תרשים מיצוב history רמה פנימית אחת בלבד
תרשים מיצוב היסטוריה עמוקה 2 רמות פנימיות
תרשים מיצוב Connective junction • הדגשת הכוונה • פשטות תרשים
תרשים מיצוב OnEntry
תרשים מיצוב צומת לבחירה צומת כמו Switch
תרשים מיצוב צומת עבור לולאה
StateCharts-Aspects ספרות [MBEA-2004] M. Mahoney, A. Bader, T. Elrad & O. Aldawud “Using Aspects to Abstract and Modularize Statecharts” 5th Aspect-Oriented Modeling Workshop – Lisbon Portugal – (October 2004).
StateCharts-Aspects גישה איך לייצג היבטים(aspects)? מימד רוחבי במפת מצבים. • היבטים – מצבים אורתוגונליים למחלקות. • קישור – קובע סדר האירועים • (before, after, around)
StateCharts-Aspects דוגמה: זיכרון זמני • מחלקה: • זיכרון חסום (Bounded Buffer) – • פעולות: קריאה (מחיקה), כתיבה • היבטים: • תיזמון (synchronization) – • ע"פ תפוסת הזיכרון: מלא, חלקי, ריק • הקצאה (scheduling) – • ע"פ תור: קוראים, כותבים בזיכרון
StateCharts-Aspects דוגמת Bounded Buffer Bounded Buffer Class Synchronization Aspect Scheduling Aspect
StateCharts-Aspects מחלקת Bounded Buffer BoundedBuffer evGET / DONE קריאה evNoMoreReaders evGET לא-פעיל evPUT evDONE / DONE כתיבה
StateCharts-Aspects דוגמה: היבט תזמון Synchronization Aspect Get/ NumOf Items-- :GET Get/ NumOf Items-- :GET Get/ Error: buffer empty Get/ Last Item :GET Put/ Error: buffer full ריק חלקי מלא Put/ NumOf Items++ :PUT Put/ Last Item :PUT Put/ NumOf Items++ :PUT
StateCharts-Aspects דוגמה: היבט הקצאה Scheduling Aspect GET/ NumOf Readers++ :evGET GET/ NumOf Readers++ :evGET PUT/ Wait: In WQueue DONE/ NumOf Writers- - יש קוראים לא פעיל יש כותבים DONE/ NumOf Readers- - DONE/ Last Reader/ evNoMoreReaders PUT/ NumOf Writers++ :evPUT GET/ Wait: In RQueue PUT/ Wait: In WQueue
StateCharts-Aspects דוגמה: שידור אירועים כאשר מתרחש אירוע GET בהיבט SchedulingAspect משודר אירוע evGET למחלקה BoundedBuffer
StateCharts-Aspects רמת הפשטה נוספת Class t X Y Aspect e A B לפרש אירוע: אםtמתרחש כאילו e קרה (לפניו או אחריו)
StateCharts-Aspects דוגמה: תקשורת והצפנה Communication Class שלח קבל מקבל לא פעיל שולח קבלה הושלמה משלוח הושלם EncryptionAspect מצפין IP מרוחק קשר מקומי קשר מרוחק IP מקומי מפענח
StateCharts-Aspects דוגמה: תקשורת והצפנה Communication Class שלח קבל מקבל לא פעיל שולח קבלה הושלמה משלוח הושלם Encryption Aspect מצפין IP מרוחק קשר מקומי קשר מרוחק IP מקומי מפענח
StateCharts-Aspects דוגמה: פירוש מחדש Communication.crosscutBy(Encryption) reinterpretEvent(Communication,”IDLE”,”send”, “REMOTE_CONNECTION”,”encrypt”, Statechart.PREHANDLE)
UML-VHDL ספרות [BL-2002] D. Bjorklund & J. Lilius “From UML Behavioral Descriptions to Efficient Synthesizable VHDL” CREST – 2002. VHDL = VHSIC Hardware Description Language VHSIC = Very High Speed Integrated Circuits
UML-VHDL תהליך SMDL = StateChart Description Language aUML = כלי תוכנה מתרגם XMI ל- SMDL
UML-VHDL SMDL SMDL = StateChart Description Language מושגים מצב – יחידת תוכנה מעבר – בדיקת אירוע: if ופקודת: goto בוזמניות – פקודת par(parallelism) לכל פקודה תווית יחידה.
UML-VHDL דוגמה: StateChart Top state e2/e1
UML-VHDL דוגמה: קודSDML 1 sys: top_state 2 event e1; queue q; 3 policy interleaving; 4 l1: par(A,B) • מצב על - כל המערכת נמצאת במצבtop state • מדיניות - interleaving = מריצה תווית אחת בכל מחזור • בוזמניות – שני תת-מצבים A ו-B רצים במקביל.
UML-VHDL דוגמה: קודSDML עבור A A e2/e1 5 A: state 6 queue qA; event e2; 7 policy rtc; 8 a1: state 9 l2: if qA.e2 then 10 l3: emit(q.e1); l4: goto(a2) endif; 11 l5: endstate a1 12 a2: state l6: endstate a2 13 l7: endstate A מדיניות – rtc = run-to-completion = בכל מחזור
UML-VHDL דוגמה: קודSDML עבור B B 14 B: state 15 policy rtc; 16 l8: par(B1,B2) 17 B1: state 18 b1: state 19 l9: if q.e1 then l10: goto(b2) endif; 20 l11: endstate b1 21 b2: state 22 l12: if q.e1 then l13: goto(b1) endif; 23 l14: endstate b2 24 l15: endstate B1 25 B2: state 26 b3: state 27 l16: if q.e1 then l17: goto(b4) endif; 28 l18: endstate b3 29 b4: state l19: endstate b4 30 l20: endstate B2 31 l21: endstate B
1 B: process(clk,reset ) 2 variable uml event : EventType; 3 variable state : StateType := B1b1 B2b3; 4 begin 5 if reset = ’0’ then 6 state := B1b1 B2b3; 7 elsif clk’event and clk = ’1’ then 8 if state = B1b1 B2b3 or state = B1b1 B2b4 then 9 queue q get event( uml event ); 10 if uml event = e1 then 11 state := B1b2 B2b4; 12 end if; 13 elsif state = B1b2 B2b4 then 14 queue q get event( uml event ); 15 if uml event = e1 then 16 state := B1b1 B2b4; 17 end if; 18 end if; 19 end if; 20 end process B; UML-VHDL דוגמה: קודVHDL עם אופטימיזציה