Course Hive
Search

Welcome

Sign in or create your account

Continue with Google
or
#41 State Machines Part-7:Automatic Code Generation
Play lesson

Modern Embedded Systems Programming Course - #41 State Machines Part-7:Automatic Code Generation

4.0 (6)
56 learners

What you'll learn

This course includes

  • 22.3 hours of video
  • Certificate of completion
  • Access on mobile and TV

Summary

Keywords

Full Transcript

This lesson continues the subject of STATE MACHINES. Today you will see how automatic code generation works in practice. Graphical modeling and automatic code generation do not seem to be mainstream yet, but they are very much parts of the *modern* approach and I believe they are the future of embedded software development. 1:38 Downloading and installing QP-bundle with the free QM modeling tool 3:30 Launching the QM modeling tool & opening model files 4:00 Viewing state diagrams in QM 4:53 Adding actions in C to the state machine 6:15 Adding attributes to the state machine class 6:38 Adding operations (functions) to the state machine class 7:35 Logical Design vs. Physical Design 9:03 Doing Physical Design in QM 9:18 Adding code directories to the model 9:57 Adding code files to the model 10:30 Editing the file content in QM 11:06 The $declare code generation directive 11:30 The $define code generation directive 11:50 Generating code in QM 14:10 Compiling and running the generated code 15:30 Why should you bother with modeling and code generation? 16:30 Effective and ineffective visual representations 17:39 The UML visual notation 18:00 The intuitive nature of state diagrams (David Harel's story) 19:20 Code generation as critical for the success of modeling 19:48 Concerns about correctness and efficiency of the generated code 20:30 The real challenges of automatic code generation 20:40 The problem of "fighting the tool" 21:10 A quick overview of other modeling tools 21:30 "Fighting the tool" example of the State Machine Compiler (SMC) 22:18 Complete code generation in QM 23:48 Generating code for parts of the model (packages, operations) 24:25 Generating code for individual states 24:41 The non-recursive $define1 directive 24:56 Traceability from the code to model 25:55 Traceability from the model to code (e.g., debugging the model) 26:30 Bi-directional traceability between model and code 27:26 Model differencing and merging 29:30 Scaling models for big teams 29:53 External packages 30:02 Conclusion ------- Resources: Companion web page for this video course: https://www.state-machine.com/quickstart GitHub repository for projects for this video course: https://github.com/QuantumLeaps/modern-embedded-programming-course Transcript of this lesson: https://www.state-machine.com/course/lesson41.txt Recommended Reading: "The Pragmatics of Model-Driven Development" by Bran Selic, IEEE Computer Society 2003 (https://www.computer.org/software-magazine) PDF (https://www.state-machine.com/doc/Selic-Pragmatics.pdf) "Statecharts in the Making: A Personal Account" by David Harel, Communications of the ACM 2010 (https://www.wisdom.weizmann.ac.il/~harel/papers/Statecharts.History.CACM.pdf) "Large Scale C++ Software Design" by John Lakos, Addison Wesley Longman, Inc. 1996 ISBN 0-201-63362-0 Music credits: The background music comes from: https://www.bensound.com/royalty-free-music/track/straight

Course Hive

Continue this lesson in the app

Install CourseHive on Android or iOS to keep learning while you move.

Related Courses

FAQs

Course Hive
Download CourseHive
Keep learning anywhere