Presentation is loading. Please wait.

Presentation is loading. Please wait.

An Introduction to Embedded Software Architecture and Design

Similar presentations


Presentation on theme: "An Introduction to Embedded Software Architecture and Design"— Presentation transcript:

1 An Introduction to Embedded Software Architecture and Design
Class 1: Introduction to Embedded Software Architecture December 1, 2014 Jacob Beningo, CSDP

2 Course Overview Introduction to Embedded Software Architecture
Software Architecture using UML Understanding Embedded Software Architectures From Architecture to Implementation Software Architecture of a UAV and Review

3 Session Overview The Software Development Process
What is a Software Architecture? Why use an Architecture? Architecture Design Steps

4 Software Development Process
Requirements Design Construction Testing Maintenance IEEE Computer Society SWEBOK v3.0

5 Software Development Process
Design Architectural Structures and Viewpoints Architectural Styles Design Patterns Architecture Design Decisions Families of Programs and Frameworks IEEE Computer Society SWEBOK v3.0

6 What is a Software Architecture?
IEEE 1471 Architecture is the fundamental organization of a system embodied in its components, their relationship to each other, and to the environment, and the principles guiding its design and evolution. High Level Structure No implementation details! Language agnostic

7 What is a Software Architecture?
Architecture describes Fundamental organization and interaction of the system and subsystem components Describes features that persist throughout the “life” of the product Should not be easily changed! Does NOT have design details!

8 What is Software Architecture?
Documenting a Software Architecture Creating block diagrams Component interconnects Subsystem Level blocks Identifying models “Design” Patterns

9 What is Software Architecture?
Documenting a Software Architecture is NOT The nitty gritty details Function naming …. Variable definition and naming Task definition Classes, methods, interfaces API’s

10 What is a Software Architecture?
The core pieces of a software architecture Identifying system components Understand how components interact with Other components Their environment Organizing the components into a system that is Understandable Modular Maintainable

11 Why an Architecture? What can a software architecture really do?
It can speed up development It can help to reduce bugs It can ease software maintenance Simplify software testing Improve diagnostics Save company money Provide a long robust life for the software

12 Why an Architecture? Why use a software architecture?
Define the elements in the design Understand relationship of the components Describe the structure and behavior of the system Identify engineering decisions Review and hash out the design before implementation Identify holes in the requirements and implementation

13 Architecture Design Steps
Step 1 – Identify system components Drivers Microcontroller Peripherals External Sensors Application Driving a motor Filtering sensor data Configuration How peripherals and sensors need to be setup

14 Architecture Design Steps
Step 2 – Understand component relationships Which components interact? What layer does the component belong in? Create a component layer architecture Timer Digital I/O PWM ADC Sensor Filtering Motor

15 Architecture Design Steps
Step 3 – Define the Environmental Factors Hard Real-Time Constraints Soft Real-Time Constraints Sensors and hardware interfaces System Timing Human interactions Identify synchronous events Identify asynchronous events

16 Architecture Design Steps
Step 4 – Create a High Level Architecture Primary system states Interrupts System Tasks System State Machines System Events Concurrent States Entry/Exit Points

17 Architecture Design Steps
Step 5 – Implement Flowcharts and Sequences The devil is in the details Expand the state machines behavior Identify communication sequences Simulate the flowchart behavior Identify high risk areas Refactor and simplify Keep it language independent

18 Architecture Design Steps
Step 6 – Review the Architecture Let the architecture sit for a day or two Forget and come back to it with fresh eyes Review with a group of peers Flush out missing components, complications Identify potential areas of risk Verify system requirements Update and refactor Always remember to keep it simple!

19 Software Architecture Tips
Use it as a guide It will change during implementation! Testing will reveal flaws Helps wrap the mind around implementation Always do a group review of the architecture Keep it as general structure Keep it language independent Look for refactoring and simplification

20 Additional Resources Download Course Material for Edraw UML Templates
Updated C Doxygen Templates Misc Papers and Websites for further reading From under - Blog and Articles > Software Techniques > CEC Software Architecture Materials

21 Jacob Beningo Newsletters P.O. Box 400 Embedded Monthly
Linden, Michigan 48451 Newsletters Embedded Monthly Low Power Design Training Bootloaders Embedded Software C/C++ : : : Jacob_Beningo : Beningo Engineering : JacobBeningo : Embedded Basics Jacob Beningo Principal Consultant


Download ppt "An Introduction to Embedded Software Architecture and Design"

Similar presentations


Ads by Google