290 likes | 596 Views
UML Based Automated Code Generation IEEE Computer Society Phoenix. Haseeb Ahmed Motorola Inc. November 7, 2007. Agenda. UML and Modeling Auto-Coding Unifying Modeling & Auto-Code Generation Applicability. Demonstration with Telelogic’s Tau G2. Open Forum. UML and Modeling. Why UML?
E N D
UML Based Automated Code GenerationIEEE Computer Society Phoenix Haseeb Ahmed Motorola Inc. November 7, 2007
Agenda • UML and Modeling • Auto-Coding • Unifying Modeling & Auto-Code Generation • Applicability. • Demonstration with Telelogic’s Tau G2. • Open Forum
UML and Modeling • Why UML? • Late 80s and early 90s saw a quantum leap in software development (and revenues). • Industry needed a Standardized view of representation. • Answer: The Unified Modeling Language
UML – Simply put… • Served as a unifying ‘language’ for software. • Standardized • Agnostic to platform, OS and programming language • The ‘Language’ consisted of pictorial representations for various software artifacts: • Classes • State Machines • Sequence Diagrams • An excellent reference: • The Unified Modeling Language - http://www-306.ibm.com/software/rational/uml/
UML in Pictures: Use Cases Source: http://www.telelogic.com/campaigns/2003/global/taug22_launch/iuseuml1x.cfm
UML in Pictures: Class Diagrams Source: http://www.telelogic.com/campaigns/2003/global/taug22_launch/iuseuml1x.cfm
UML in Pictures: State Chart Diagram Source: http://www.telelogic.com/campaigns/2003/global/taug22_launch/iuseuml1x.cfm
UML in Pictures: Architecture Diagram Source: http://www.telelogic.com/campaigns/2003/global/taug22_launch/iuseuml1x.cfm
UML in Pictures: Sequence Diagrams Source: http://www.telelogic.com/campaigns/2003/global/taug22_launch/iuseuml1x.cfm
Modeling • More precisely: ‘Model Driven Architecture’. • Definition: A representation that focuses on the functionality and behavior of an application (or system) and is agnostic to the underlying platform, OS or programming language used. • This is really a tall order given the spectrum of choices for platforms, OSs and languages today! • For this presentation, I’ll limit myself to Modeling with UML.
Modeling • In practice, modeling relies on UML for abstracting everything from a small application to a complex system. • A typical Model may consists of: • Classes, Objects Diagrams • State Machine Diagrams • Sequence/Activity Diagrams • Architecture Diagrams • Deployment Diagrams • … even Use Cases
Modeling • Typically, a software engineer will use a GUI or CASE tool to represent the application or system. • The tool largely facilitates this by enforcing sanity of the application or system design. • For example: • Verifying valid state transitions • Automating message transmission and reception • UML is a natural fit.
UML+Modeling = ? • Once an application or system is fully modeled in UML, the next self-evident step is to generate the source code. • Also known as… • Most modern modeling tools provide this capability ‘built-in’. Auto-Code Generation!
Auto-Coding • Strictly speaking: ‘Automated Code Generation’ • Definition: A way to automagically synthesize code for an application or system from a model, following UML and Modeling constructs.
UML Modeling Tool OS Platform Modeling & Auto-Code Generation: A High Level View UML Models 1. Create UML Model 2. Model Sanity Checked Auto Code Generator 3. Auto-Code Generation 4. Source Code ‘Ready to Build’ 5. Compile & Build into Application Binary 6. Application Binary executing on Target OS/Platform
Auto-Coding: The Silent Sidekick • Auto-coding not so new in software development. • Often used for things which are tedious and repetitive, e.g.; • Generating ASN.1 code. • Lex/YACC/Bison suite of tools for generating customized code for Unix based platforms. • Usage generally ‘invisible’ because the auto-coding syntax used is quite cryptic and not very exciting to the broader engineering community.
Auto-Coding: Unleashed • With higher level abstractions (UML, Modeling etc.) available, auto-coding can now generate full applications. • From the 50,000 ft Level: • However, tool offerings may be more or less compliant than what you would expect. C/C++ : Assembly Code :: Modeling : Handwritten Code
Auto-Coding: Unleashed • Many UML Model artifacts are just what we expect: • UML Class C++ Class/C Structure • UML Operation C/C++ Function • Some are a bit more abstract: • UML Signals C/C++ Function calls. • Think Callbacks for Input Signals and Function calls for Outbound signals.
Auto-Coding: Unleashed • And some may be surprising: • Item widget[45] May Generate a simple Array of 45 elements. May Generate a Linked List of 45 ‘Item’ nodes each with 1 widget. • Timers Set/Expire implementation based on tool and code generator. Timer ticks or TimeOfDay()
Auto-Coding: Challenges • This brings new challenges and concerns: • Performance of the generated code. • Perfection of generated code to model. • Accurate conversion of model to code? • Implementation quirks: • Auto-code generation is not standardized. • Remember the ‘Agnostic to the platform, OS and language’ requirement – what is the cost of portability? • Hard to compete (read: beat) hand written code in the short term.
Higher Level Modeling emphasizes Design & Architectural Discipline. Design • Many Tools provide built-in simulators. • Execute the Model to see how it flows right from your Desktop. • Rapid Prototyping possible for feature rich models. Test • Auto-coding follows a set of rules for generating code. • Quality is consistent. • Avoids some egregious human errors (e.g., null pointers). Quality • Cycle Time Reduction • Cost of Poor Quality Containment • (Hopefully) Better Software Design & Architecture. Overall Modeling & Auto-Code Key Benefits
Applicability • Well suited for Applications which lend nicely to State Machine Architectures. • Protocols – Network, Telephony… Request/Reply, Transactional. • Simulation • Rapid Prototyping Picture Source: http://www.omg.org/mda
Caveats • UML and Object Oriented Design: They are not the same. • In Modeling, easy to make big mistakes. (mostly easy to correct too, but not always!) • Auto-coding best when it’s impacts are invisible. • Performance and Portability must be carefully weighed.
Demo • Tool: Telelogic’s Tau G2. • Example: • Construction of a request/response system within a non-trivial model. • Miscellaneous: • Highlight the simulation capabilities. • Injection of messages, auto generation of sequence diagrams.
Tau G2 App. Architecture Middleware ‘glue’ for specialized services. Application plus Tau G2 ‘kernel’ The Application/System ‘Glue’ MW API UML Model Auto Generated Code Middleware Services Operating System Middleware to Interface generated code with custom libraries. The ‘environment’
Open Forum • Q & A
References • The Unified Modeling Language - http://www-306.ibm.com/software/rational/uml/ • Tau G2 – Telelogic – http://www.telelogic.com • The Object Management Group - http://www.omg.org/mda • Automatic Code Generation from Design Patterns - http://www.research.ibm.com/designpatterns/pubs/codegen.pdf • UML Forum (Modeling Tool Comparisons) - http://www.uml-forum.com/tools.htm