Cargando…

Practical UML statecharts in C/C++ : event-driven programming for embedded systems /

Practical UML Statecharts in C/C++ Second Edition bridges the gap between high-level abstract concepts of the Unified Modeling Language (UML) and the actual programming aspects of modern hierarchical state machines (UML statecharts). The book describes a lightweight, open source, event-driven infras...

Descripción completa

Detalles Bibliográficos
Clasificación:Libro Electrónico
Autor principal: Samek, Miro
Formato: eBook
Idioma:Inglés
Publicado: Amsterdam ; Boston : Newnes/Elsevier, ©2009.
Edición:2nd ed.
Temas:
Acceso en línea:Texto completo (Requiere registro previo con correo institucional)

MARC

LEADER 00000cam a2200000 a 4500
001 OR_ocn281592325
003 OCoLC
005 20231017213018.0
006 m o d
007 cr cn|||||||||
008 081212s2009 ne a ob 001 0 eng d
040 |a OPELS  |b eng  |e pn  |c OPELS  |d OPELS  |d OCLCQ  |d N$T  |d YDXCP  |d IDEBK  |d E7B  |d UMI  |d CDX  |d CEF  |d NHM  |d DEBSZ  |d QE2  |d B24X7  |d OCLCQ  |d AU@  |d MYPMP  |d OCLCF  |d OCLCQ  |d COO  |d NNO  |d OCLCQ  |d D6H  |d WYU  |d UAB  |d OL$  |d S9I  |d VT2  |d VLY  |d BRF  |d EYM  |d DST  |d OCLCQ  |d UKAHL  |d OCLCQ  |d OCLCO 
015 |a GBA848302  |2 bnb 
016 7 |a 014567162  |2 Uk 
019 |a 315430398  |a 319430061  |a 610168022  |a 646767315  |a 731210280  |a 851410264  |a 999655953  |a 1044222172  |a 1056385723  |a 1060196108  |a 1060197626  |a 1060870498  |a 1064122726  |a 1074429883  |a 1096217618  |a 1105859660  |a 1129348046  |a 1153022416  |a 1162070146  |a 1179705869  |a 1192351757  |a 1194734046  |a 1194814168  |a 1262684964  |a 1295609661  |a 1300576348  |a 1303324178 
020 |a 9780750687065 
020 |a 0750687061 
020 |a 9780080569789  |q (electronic bk.) 
020 |a 0080569781  |q (electronic bk.) 
020 |a 1282285130 
020 |a 9781282285132 
020 |a 9786612285134 
020 |a 6612285133 
029 1 |a AU@  |b 000047155963 
029 1 |a DEBSZ  |b 355427796 
029 1 |a DEBSZ  |b 367757567 
029 1 |a HEBIS  |b 29149904X 
029 1 |a NZ1  |b 13068813 
035 |a (OCoLC)281592325  |z (OCoLC)315430398  |z (OCoLC)319430061  |z (OCoLC)610168022  |z (OCoLC)646767315  |z (OCoLC)731210280  |z (OCoLC)851410264  |z (OCoLC)999655953  |z (OCoLC)1044222172  |z (OCoLC)1056385723  |z (OCoLC)1060196108  |z (OCoLC)1060197626  |z (OCoLC)1060870498  |z (OCoLC)1064122726  |z (OCoLC)1074429883  |z (OCoLC)1096217618  |z (OCoLC)1105859660  |z (OCoLC)1129348046  |z (OCoLC)1153022416  |z (OCoLC)1162070146  |z (OCoLC)1179705869  |z (OCoLC)1192351757  |z (OCoLC)1194734046  |z (OCoLC)1194814168  |z (OCoLC)1262684964  |z (OCoLC)1295609661  |z (OCoLC)1300576348  |z (OCoLC)1303324178 
037 |a 152626:152780  |b Elsevier Science & Technology  |n http://www.sciencedirect.com 
050 4 |a QA76.9.S88  |b S26 2009eb 
072 7 |a COM  |x 051210  |2 bisacsh 
082 0 4 |a 005.117  |2 22 
049 |a UAMI 
100 1 |a Samek, Miro. 
245 1 0 |a Practical UML statecharts in C/C++ :  |b event-driven programming for embedded systems /  |c Miro Samek. 
250 |a 2nd ed. 
260 |a Amsterdam ;  |a Boston :  |b Newnes/Elsevier,  |c ©2009. 
300 |a 1 online resource (xxxi, 712 pages) :  |b illustrations 
336 |a text  |b txt  |2 rdacontent 
337 |a computer  |b c  |2 rdamedia 
338 |a computer disc  |b cd  |2 rdacarrier 
347 |a data file 
520 |a Practical UML Statecharts in C/C++ Second Edition bridges the gap between high-level abstract concepts of the Unified Modeling Language (UML) and the actual programming aspects of modern hierarchical state machines (UML statecharts). The book describes a lightweight, open source, event-driven infrastructure, called QP that enables direct manual coding UML statecharts and concurrent event-driven applications in C or C++ without big tools. This book is presented in two parts. In Part I, you get a practical description of the relevant state machine concepts starting from traditional finite state automata to modern UML state machines followed by state machine coding techniques and state-machine design patterns, all illustrated with executable examples. In Part II, you find a detailed design study of a generic real-time framework indispensable for combining concurrent, event-driven state machines into robust applications. Part II begins with a clear explanation of the key event-driven programming concepts such as inversion of control ("Hollywood Principle"), blocking versus non-blocking code, run-to-completion (RTC) execution semantics, the importance of event queues, dealing with time, and the role of state machines to maintain the context from one event to the next. This background is designed to help software developers in making the transition from the traditional sequential to the modern event-driven programming, which can be one of the trickiest paradigm shifts. The lightweight QP event-driven infrastructure goes several steps beyond the traditional real-time operating system (RTOS). In the simplest configuration, QP runs on bare-metal microprocessor, microcontroller, or DSP completely replacing the RTOS. QP can also work with almost any OS/RTOS to take advantage of the existing device drivers, communication stacks, and other middleware. The accompanying website to this book contains complete open source code for QP, ports to popular processors and operating systems, including 80x86, ARM Cortex-M3, MSP430, and Linux, as well as all examples described in the book. *Focuses on core concepts rather than tools which are always changing allowing the reader to continue to use this information with various projects *Provides a complete, ready-to-use, open source software architecture for small and large embedded systems *Includes an extensive example using the ARM Cortex-M3 throughout the book highlighting issues programmers and architects encounter in everyday life 
505 0 |a Preface -- PART I STATECHARTS -- Chapter 1 Whirlwind Tour of Programming with Statecharts -- 1.1 Why Bother? -- 1.2 The Traditional Event-Action Paradigm -- 1.3 State Machines? A Better Way of Programming -- 1.3.1 The Time Bomb Example -- 1.3.2 The Calculator Example -- 1.5 Object-Oriented Analogy -- 1.6 The Event-driven Framework -- 1.6 Summary -- Chapter 2 A Crash Course in Statecharts -- 2.1 The Essence of Finite State Machines -- 2.2 The Essence of UML Statecharts -- 2.3 Examples of State Models -- 2.4 Summary -- Chapter 3 Standard State Machine Implementations -- 3.1 State Machine Interface -- 3.2 Nested switch Statement -- 3.3 State Table -- 3.4 State Design Pattern -- 3.5 Optimal FSM Implementation -- 3.6 State Machines and C++ Exception Handling -- 3.7 Role of Pointer-to-Member Functions -- 3.8 Implementing Guards, Junctions, and Choice Points -- 3.9 Implementing Entry and Exit Actions -- 3.10 Dealing with State Hierarchy -- 3.11 Summary -- Chapter 4 QEP: A Minimal Hierarchical Event Processor -- 4.1 General Structure of the QEP Event Processor -- 4.2 An Annotated Example (QHsm) -- 4.3 QEP Structure -- 4.3.1 QEP Source Code Structure -- 4.3.2 Internal Representation of a State Machine -- 4.3.3 Initialization of a State Machine -- 4.3.4 Dispatching Events to a FSM -- 4.3.5 Executing a Transition in a FSM -- 4.3.6 Dispatching Events to a HSM -- 4.3.7 Executing a Transition in a HSM -- 4.3.8 Static Transition Optimization in a HSM -- 4.4 Porting and Configuring QEP -- 4.5 Caveats -- 4.6 Summary -- Chapter 5 Implementing State Machines with QEP -- 5.1 Implementing a HSM with QEP -- 5.1.1 Step 1: Enumerating Signals -- 5.1.2 Step 2: Defining Events -- 5.1.3 Step 3: Defining the QCalc State Machine -- 5.1.4 Step 4: Declaring the QCalc States -- 5.1.5 Step 5: Initializing the HSM -- 5.1.6 Step 6: Implementing the State Handler Functions -- 5.2 Implementing a FSM with QEP -- 2.5 Pitfalls to Avoid While Coding State Machines with QEP -- 2.5.1 Incomplete State Handlers2-37 -- 2.5.2 Confusing Statecharts with Flowcharts2-38 -- 2.5.3 Ill-Formed State Handlers2-39 -- 2.5.4 Suboptimal Signal Granularity2-42 -- 2.5.5 Violating the Run To Completion Semantics2-42 -- 4.6 Summary -- Chapter 6 State Patterns -- 6.1 Ultimate Hook -- 6.2 Reminder -- 6.3 Deferred Event -- 6.4 Orthogonal Component -- 6.5 Transition to History -- 6.6 Summary -- PART II EVENT-DRIVEN FRAMEWORK -- Chapter 7 QF: A Minimal Event-Driven Embedded Framework -- 7.1 Conventional Approach to Multithreading -- 7.2 Computing Model of QF -- 7.3 Annotated Example -- 7.3.1 The?Airplane in the Tunnel? Game -- 7.3.2 The Active Object Design -- 7.3.3 The Implementation -- 7.3.4 The Port for ARM Cortex-M3 -- 7.3.5 Testing -- 7.4 Summary -- Chapter 8 Design of QF -- 8.1 Handling Errors and Exceptional Conditions -- 8.2 Memory Management -- 8.3 Mutual Exclusion and Blocking -- 8.4 Active Objects -- 8.5 Event Management in QF -- 8.6 Event Delivery Mechanisms in QF -- 8.9 Deferring and Recalling Events in QF -- 8.7 Time Events -- 8.8 Summary -- Chapter 9 Implementation of QF -- 9.1 Code Organization -- 9.2 Critical Section in QF -- 9.3 General QF Policies Enforced by Assertions -- 9.4 Active Object class -- 9.5 Native QF Event Queue -- 9.6 Native QF Memory Pool -- 9.7 Native QF Priority Set -- 9.8 Native QF Scheduler -- Chapter 10 Porting QF -- 10.1 QF Porting Guide -- 10.2 QF on Bare-Metal Targets (the Vanilla Port) -- 10.3 Using QF with a preemptive Real-Time Kernel (æC/OS-II) -- 10.4 QF port to a POSIX-Compliant OS (Linux) -- 10.5 Summary -- Chapter 11 Conclusion -- 11.2 Rules for Developing Event-Driven Embedded Applications -- 11.3 Heuristics -- 11.4 Sizing Event Queues and Event Pools -- 11.5 System Integration -- 11.6 Summary of Key Elements -- 11.7 An Invitation -- Appendix A QK: A Single-Stack Preemptive Kernel -- A.2 Run-to-Completion Processing -- A.3 Synchronous and Asynchronous Preemptions -- A.4 Stack Utilization -- A.4 Comparison with a Traditional RTOS -- A.5 Summary -- Appendix B QS: Software Tracing for Event Driven Systems -- B.1 Software Tracing Concepts -- B.2 Structure of QS Trace Records -- B.3 QS Filters -- B.4 QS Data Protocol -- B.5 QS Trace Buffer -- B.6 Configuring and Porting QS -- B.7 Summary -- Appendix C Inheriting Entire State Models in C++ -- C.1 Statechart Refinement Example in C++ -- C.3 Caveats -- C.4 Summary -- Appendix D Guide to Notation -- D.1 Class Diagrams -- D.2 Statechart Diagrams -- D.3 Sequence Diagrams -- D.4 Timing Diagrams -- Appendix E CD-ROM -- E.1 Source Code Structure -- E.2 Installation -- E.3 Licensing -- E.4 Answers to the Exercises -- E.5 QP Reference Guide (Doxygen) -- E.6 Resources -- Bibliography -- Index. 
504 |a Includes bibliographical references (pages 693-697) and index. 
588 0 |a Print version record. 
546 |a English. 
590 |a O'Reilly  |b O'Reilly Online Learning: Academic/Public Library Edition 
650 0 |a System design. 
650 0 |a Computer software  |x Development. 
650 0 |a Formal methods (Computer science) 
650 0 |a Statecharts (Computer science) 
650 0 |a UML (Computer science) 
650 0 |a Object-oriented programming (Computer science) 
650 6 |a Conception de systèmes. 
650 6 |a Méthodes formelles (Informatique) 
650 6 |a Statecharts (Informatique) 
650 6 |a UML (Informatique) 
650 6 |a Programmation orientée objet (Informatique) 
650 7 |a COMPUTERS  |x Programming  |x Object Oriented.  |2 bisacsh 
650 7 |a System design.  |2 blmlsh 
650 7 |a Computer software  |x Development.  |2 blmlsh 
650 7 |a Formal methods (Computer science)  |2 blmlsh 
650 7 |a Statecharts (Computer science)  |2 blmlsh 
650 7 |a UML (Computer science)  |2 blmlsh 
650 7 |a Object-oriented programming (Computer science)  |2 blmlsh 
650 7 |a Computer software  |x Development  |2 fast 
650 7 |a Formal methods (Computer science)  |2 fast 
650 7 |a Object-oriented programming (Computer science)  |2 fast 
650 7 |a Statecharts (Computer science)  |2 fast 
650 7 |a System design  |2 fast 
650 7 |a UML (Computer science)  |2 fast 
776 0 8 |i Print version:  |a Samek, Miro.  |t Practical UML statecharts in C/C.  |b 2nd ed.  |d Amsterdam ; Boston : Newnes/Elsevier, ©2009  |z 9780750687065  |z 0750687061  |w (OCoLC)214307694 
856 4 0 |u https://learning.oreilly.com/library/view/~/9780750687065/?ar  |z Texto completo (Requiere registro previo con correo institucional) 
938 |a Askews and Holts Library Services  |b ASKH  |n AH23088842 
938 |a Books 24x7  |b B247  |n bks00032188 
938 |a ebrary  |b EBRY  |n ebr10254600 
938 |a EBSCOhost  |b EBSC  |n 248110 
938 |a YBP Library Services  |b YANK  |n 2907521 
994 |a 92  |b IZTAP