SlideShare ist ein Scribd-Unternehmen logo
1 von 34
Downloaden Sie, um offline zu lesen
1
Confidential
2
Confidential
Patterns in embedded SW design
Vasyl Golubenko
Lead Engineer
16-09-2021
3
Confidential
Agenda
1. Generic understandings of “Patterns”
2. Patterns benefits and concerns
3. Classification of embedded patterns
4. Commonly used patterns
5. Examples
4
Confidential
4
Generic understandings of “Patterns”
5
Confidential
Generic understandings of “Patterns”
a software design pattern is a general, reusable
solution to a commonly occurring problem
within a given context in software design.
It is not a finished design that can be
transformed directly into source or machine
code. Rather, it is a description or template for
how to solve a problem that can be used in
many different situations. Design patterns are
formalized best practices that the programmer
can use to solve common problems when
designing an application or system.
What is Patterns?
6
Confidential
Generic understandings of “Patterns”
• Intent of the pattern briefly describes both the
problem and the solution.
• Motivation further explains the problem and
the solution the pattern makes possible.
• Structure of classes shows each part of the
pattern and how they are related.
• Code example in one of the popular
programming languages makes it easier to
grasp the idea behind the pattern.
Some pattern catalogs list other useful details,
such as applicability of the pattern,
implementation steps and relations with other
patterns.
What does the pattern consist of?
Intent Motivation
Structure
Code Example
7
Confidential
Generic understandings of “Patterns”
• The concept of patterns was first described by Christopher
Alexander in 1977 A Pattern Language: Towns, Buildings,
Construction. The book describes a “language” for designing the urban
environment. The units of this language are patterns. They may
describe how high windows should be, how many levels a building
should have, how large green areas in a neighborhood are supposed
to be, and so on.
• Erich Gamma, John Vlissides, Ralph Johnson, and Richard Helm. In
1994, they published Design Patterns: Elements of Reusable Object-
Oriented Software, in which they applied the concept of design
patterns to programming. The book featured 23 patterns solving
various problems of design and became a best-seller very quickly. Due
to its lengthy name, people started to call it “the book by the gang of
four” which was soon shortened to simply “the GoF book”.
Some Historical notes :)
8
Confidential
Generic understandings of “Patterns”
• “Each pattern describes a problem which
occurs over and over again … and then
describes the core of the solution to that
problem, in such a way that you can use this
solution a million times over, without doing it
the same way twice.”
• – Christopher Alexander
• At the core […] is the idea people should
design their homes, streets, and communities.
This idea […] comes from the observation
most of the wonderful places of the world were
not made by architects, but by the people.
• — Christopher Alexander et al., A Pattern Language,
front bookflap
Nature and Abstraction
9
Confidential
9
Patterns benefits and concerns
10
Confidential
11
Confidential
12
Confidential
13
Confidential
Patterns benefits and concerns
• Design patterns use object-oriented and implement SOLID Principals.
• Make your lives easy - make possible you to get benefit from the experience of your predecessors
those have worked on the same type of project .True in backward direction.
• Make development fast and easily documented.
• Reusability and extensibility of the already developed applications.
• Design patterns are more sophisticated and advance approaches than basic data structures such as
arrays, linked lists, and binary trees.
• All design patterns use self-descriptive naming conventions and a design pattern based name of
program objects captures a basic idea about the working and use of that particular object.
• Design pattern utilize descriptive words such as proxy, adapter, iterator, visitor, and command in the
name of the objects.
• Design patterns improve software development process.
Benefits
14
Confidential
Patterns benefits and concerns
• Patterns do not lead to direct code reuse.
• Patterns are deceptively simple.
• Teams may suffer from patterns overload.
• Integrating patterns into a software development process is a human-intensive activity.
• Design patterns could been oversold.
• Some design patterns are unnecessarily difficult to learn
• Design pattern classifications are not yet useful for practitioners
Disadvantages
15
Confidential
Patterns benefits and concerns
• Unjustified use
• If all you have is a hammer, everything looks like a nail.
• This is the problem that haunts many novices who have just familiarized themselves with patterns.
Having learned about patterns, they try to apply them everywhere, even in situations where simpler
code would do just fine.
• Inefficient solutions
• Patterns try to systematize approaches that are already widely used. This unification is viewed by
many as a dogma and they implement patterns “to the point”, without adapting them to the context of
their project.
Disadvantages
16
Confidential
16
Classification of embedded patterns
17
Confidential
Classification of embedded patterns
• Creational patterns provide object creation
mechanisms that increase flexibility and reuse
of existing code.
• Structural patterns explain how to assemble
objects and classes into larger structures,
while keeping the structures flexible and
efficient.
• Behavioral patterns take care of effective
communication and the assignment of
responsibilities between objects.
• Architectural patterns take care of generic
project/solution organization.
Classification of Patterns
18
Confidential
19
Confidential
20
Confidential
Classification of embedded patterns
Specific of knowledge set required for
Embedded engineers; diverse environment on
different projects like BM, RTOS, Linux; safety
standards and recommendations like MISRA or
AutoSAR – dictate limitation, but nobody does
not keep us from exploitation of patterns
approach.
Software design patterns for Object oriented
languages bring us flexibility of High
abstractions aproaches, but core goal of
patterns – re-usage of solutions, but not limit us
how to do that and what particular patterns to
use.
Why Embedded Patterns specific
21
Confidential
Classification of embedded patterns
• Object design patterns – Half Call, Manager,
Resource manager, Message factory and Message
interface, Publish-subscriber
• State Design Patterns- Hierarchical State
Machine, State machine, Collector state, Parallel wait
state, Serial wait state
• Hardware Design Patterns – Serial port, High
speed Serial Port, Hardware, Synchronize
• Protocol Design Patterns – Transmit protocol
Handler, Receive protocol Handler, Protocol Packer,
Protocol layer, Protocol stack
• Architecture Design Patterns – Processor, Future
Coordination, Task, Resource Allocation, Timer
management
• Implementation Patterns – C++ header file
include, STL
Embedded Specific Patterns Types
Object Design Patterns
State Design Patterns
Hardware Design Patterns
Protocol Design Patterns
Architecture Design Patterns
Implementation Patterns
22
Confidential
22
Commonly used patterns
23
Confidential
Commonly used patterns
• In conventional state machine design, all states are
considered at the same level. The design does not
capture the commonality that exists among states.
In real life, many states handle most messages in
similar fashion and differ only in handling of few key
messages. Even when the actual handling differs,
there is still some commonality. Hierarchical state
machine design captures the commonality by
organizing the states as a hierarchy. The states at
the higher level in hierarchy perform the common
message handling, while the lower level states
inherit the commonality from higher level ones and
perform the state specific functions.
Hierarchical State Machine
State Design Patterns
Hierarchical State Machine
State Machine Inheritance
Collector State Pattern
Parallel Wait State Pattern
Serial Wait State Pattern
24
Confidential
Hierarchical State Machine Example
Hierarchical State Machine
Conventional State Machine
25
Confidential
• Conventional States Hierarchical States
• Awaiting First Digit Setup.CollectingDigits.AwaitingFirstDigit
• Collecting Digits Setup.CollectingDigits.AwaitingSubsequent
Digits
• Routing Call Setup.RoutingCall
• Switching Path Setup.SwitchingPath
• Conversation Conversation
• Awaiting Onhook Releasing.AwaitingOnhook
• Releasing Path Releasing.ReleasingPath
26
Confidential
Commonly used patterns
• State Machine inheritance provides a powerful way
of teaching new tricks to an old state machine.
Consider a IncomingCall and OutgoingCall objects in
a call processing implementation. A lot of functionality
between the two call types is shared. This common
functionality could be implemented in a common Call
object. IncomingCall and OutgoingCall can inherit
from the Call object. The inheritance tree can be
refined by defining call objects based on the
signaling type. This would result in objects like
IncomingCall, OutgoingCall etc.
State Machine Inheritance
State Design Patterns
Hierarchical State Machine
State Machine Inheritance
Collector State Pattern
Parallel Wait State Pattern
Serial Wait State Pattern
27
Confidential
Commonly used patterns
• The structure of this design pattern largely depends
upon the register programming model of the device
being programmed. In most cases, this design
pattern would be implemented as a single class
representing the device. In case of complex devices,
the device might be modeled as a main device class
and other subclasses modeling different parts of the
device.
• Hardware design pattern also known as:
 Device
 Hardware Interface
 Peripheral Interface
 Peripheral
Hardware Design Pattern
Hardware Design Patterns
Serial Port Design Pattern
HS Serial Port Design Pattern
Hardware Design Pattern
Synchronize Pattern
28
Confidential
Commonly used patterns
• Different layers of the protocol are structured
(network layer, data-link layer, Physical layer).
Communication between layers takes place using
standard interfaces defined by the Protocol Layer
base class. All implementations of the protocol layer
inherit from this class. The inheriting layer classes
should implement the standard interfaces. The
standard interfaces are:
• Transmit is invoked by the upper layer to transfer a
packet to the lower layer.
• Handle Receive is invoked by the lower layer to
transfer a packet to the upper layer.
Protocol Layer
Protocol Design Patterns
Transmit Protocol Handler
Receive Protocol Handler
Protocol Packet
Protocol Layer
Protocol Stack
29
Confidential
29
Conclusion & question
30
Confidential
Useful links
• https://www.researchgate.net/publication/220424606_The_Pros_and_Cons_of_Adopting_and_Applyin
g_Design_Patterns_in_the_Real_World
• https://www.jobsity.com/blog/design-pattern-software
• https://www.gofpatterns.com/design-patterns/module2/design-pattern-benefits.php
• https://www.techrepublic.com/article/reap-the-benefits-of-design-patterns-in-software-development/
• https://www.eventhelix.com/design-patterns/
• https://i.imgur.com/PYsvgTz.png
• https://refactoring.guru/design-patterns/why-learn-patterns
• https://en.wikipedia.org/wiki/Software_design_pattern
• http://www.algorithmforum.com/2018/08/design-patterns-software-design-pattern.html
• https://falconcoder.com/2019/12/03/design-patterns-in-mobile-application-development/
• https://www.script-tutorials.com/design-patterns-in-php/
• https://towardsdatascience.com/10-common-software-architectural-patterns-in-a-nutshell-
a0b47a1e9013
31
Confidential
Books :0
32
Confidential
33
Confidential
33
Thank You!
34
Confidential

Weitere ähnliche Inhalte

Was ist angesagt?

Introduction to dev ops
Introduction to dev opsIntroduction to dev ops
Introduction to dev opsLen Bass
 
Conquering Chaos: Helix & DevOps
Conquering Chaos: Helix & DevOpsConquering Chaos: Helix & DevOps
Conquering Chaos: Helix & DevOpsPerforce
 
Securing deployment pipeline
Securing deployment pipelineSecuring deployment pipeline
Securing deployment pipelineLen Bass
 
Devops online training ppt
Devops online training pptDevops online training ppt
Devops online training pptKhalidQureshi31
 
Continuous delivery with Jenkins Enterprise and Deployit
Continuous delivery with Jenkins Enterprise and DeployitContinuous delivery with Jenkins Enterprise and Deployit
Continuous delivery with Jenkins Enterprise and DeployitXebiaLabs
 
Automating the build and deployment of legacy applications
Automating the build and deployment of legacy applicationsAutomating the build and deployment of legacy applications
Automating the build and deployment of legacy applicationsCachet Software Solutions Ltd
 
Foundational Design Patterns for Multi-Purpose Applications
Foundational Design Patterns for Multi-Purpose ApplicationsFoundational Design Patterns for Multi-Purpose Applications
Foundational Design Patterns for Multi-Purpose ApplicationsChing-Hwa Yu
 
Packaging tool options
Packaging tool optionsPackaging tool options
Packaging tool optionsLen Bass
 
CloudFest 2018 Hackathon Project Results Presentation - CFHack18
CloudFest 2018 Hackathon Project Results Presentation - CFHack18CloudFest 2018 Hackathon Project Results Presentation - CFHack18
CloudFest 2018 Hackathon Project Results Presentation - CFHack18Jeffrey J. Hardy
 
Build automation best practices
Build automation best practicesBuild automation best practices
Build automation best practicesCode Mastery
 
Java Webinar #12: "Java Versions and Features: Since JDK 8 to 16"
Java Webinar #12: "Java Versions and Features: Since JDK 8 to 16"Java Webinar #12: "Java Versions and Features: Since JDK 8 to 16"
Java Webinar #12: "Java Versions and Features: Since JDK 8 to 16"GlobalLogic Ukraine
 
Microservices (msa) insights with comments
Microservices (msa) insights with commentsMicroservices (msa) insights with comments
Microservices (msa) insights with commentsLior Bar-On
 
Developer Productivity Engineering with Gradle
Developer Productivity Engineering with GradleDeveloper Productivity Engineering with Gradle
Developer Productivity Engineering with GradleAll Things Open
 

Was ist angesagt? (19)

Writing S.O.L.I.D Code
Writing S.O.L.I.D CodeWriting S.O.L.I.D Code
Writing S.O.L.I.D Code
 
Introduction to dev ops
Introduction to dev opsIntroduction to dev ops
Introduction to dev ops
 
Conquering Chaos: Helix & DevOps
Conquering Chaos: Helix & DevOpsConquering Chaos: Helix & DevOps
Conquering Chaos: Helix & DevOps
 
Securing deployment pipeline
Securing deployment pipelineSecuring deployment pipeline
Securing deployment pipeline
 
Devops online training ppt
Devops online training pptDevops online training ppt
Devops online training ppt
 
Continuous delivery with Jenkins Enterprise and Deployit
Continuous delivery with Jenkins Enterprise and DeployitContinuous delivery with Jenkins Enterprise and Deployit
Continuous delivery with Jenkins Enterprise and Deployit
 
Serverless design with Fn project
Serverless design with Fn projectServerless design with Fn project
Serverless design with Fn project
 
Dev ops using Jenkins
Dev ops using JenkinsDev ops using Jenkins
Dev ops using Jenkins
 
Automating the build and deployment of legacy applications
Automating the build and deployment of legacy applicationsAutomating the build and deployment of legacy applications
Automating the build and deployment of legacy applications
 
Foundational Design Patterns for Multi-Purpose Applications
Foundational Design Patterns for Multi-Purpose ApplicationsFoundational Design Patterns for Multi-Purpose Applications
Foundational Design Patterns for Multi-Purpose Applications
 
Packaging tool options
Packaging tool optionsPackaging tool options
Packaging tool options
 
CloudFest 2018 Hackathon Project Results Presentation - CFHack18
CloudFest 2018 Hackathon Project Results Presentation - CFHack18CloudFest 2018 Hackathon Project Results Presentation - CFHack18
CloudFest 2018 Hackathon Project Results Presentation - CFHack18
 
Into The Box 2018 CI Deep Dive
Into The Box 2018   CI Deep DiveInto The Box 2018   CI Deep Dive
Into The Box 2018 CI Deep Dive
 
Build automation best practices
Build automation best practicesBuild automation best practices
Build automation best practices
 
Java Webinar #12: "Java Versions and Features: Since JDK 8 to 16"
Java Webinar #12: "Java Versions and Features: Since JDK 8 to 16"Java Webinar #12: "Java Versions and Features: Since JDK 8 to 16"
Java Webinar #12: "Java Versions and Features: Since JDK 8 to 16"
 
Deploying at will - SEI
 Deploying at will - SEI Deploying at will - SEI
Deploying at will - SEI
 
Microservices (msa) insights with comments
Microservices (msa) insights with commentsMicroservices (msa) insights with comments
Microservices (msa) insights with comments
 
Continuous Testing With Terraform
Continuous Testing With TerraformContinuous Testing With Terraform
Continuous Testing With Terraform
 
Developer Productivity Engineering with Gradle
Developer Productivity Engineering with GradleDeveloper Productivity Engineering with Gradle
Developer Productivity Engineering with Gradle
 

Ähnlich wie Online TechTalk  "Patterns in Embedded SW Design"

Design Patterns - General Introduction
Design Patterns - General IntroductionDesign Patterns - General Introduction
Design Patterns - General IntroductionAsma CHERIF
 
Applying design patterns
Applying design patternsApplying design patterns
Applying design patternsYogeshwaranT
 
Module 2 design patterns-2
Module 2   design patterns-2Module 2   design patterns-2
Module 2 design patterns-2Ankit Dubey
 
Foundation Models in Recommender Systems
Foundation Models in Recommender SystemsFoundation Models in Recommender Systems
Foundation Models in Recommender SystemsAnoop Deoras
 
Solid Principles Of Design (Design Series 01)
Solid Principles Of Design (Design Series 01)Solid Principles Of Design (Design Series 01)
Solid Principles Of Design (Design Series 01)Heartin Jacob
 
CS101- Introduction to Computing- Lecture 45
CS101- Introduction to Computing- Lecture 45CS101- Introduction to Computing- Lecture 45
CS101- Introduction to Computing- Lecture 45Bilal Ahmed
 
Design pattern
Design patternDesign pattern
Design patternOmar Isaid
 
Design patterns through refactoring
Design patterns through refactoringDesign patterns through refactoring
Design patterns through refactoringGanesh Samarthyam
 
Excavating the knowledge of our ancestors
Excavating the knowledge of our ancestorsExcavating the knowledge of our ancestors
Excavating the knowledge of our ancestorsUwe Friedrichsen
 
Domain Driven Design Big Picture Strategic Patterns
Domain Driven Design Big Picture Strategic PatternsDomain Driven Design Big Picture Strategic Patterns
Domain Driven Design Big Picture Strategic PatternsMark Windholtz
 
Cleaning Code - Tools and Techniques for Large Legacy Projects
Cleaning Code - Tools and Techniques for Large Legacy ProjectsCleaning Code - Tools and Techniques for Large Legacy Projects
Cleaning Code - Tools and Techniques for Large Legacy ProjectsMike Long
 
Domain-Driven Design
Domain-Driven DesignDomain-Driven Design
Domain-Driven DesignBradley Holt
 
Refactoring to Design Patterns
Refactoring to Design PatternsRefactoring to Design Patterns
Refactoring to Design PatternsEric De Carufel
 
Design patterns
Design patternsDesign patterns
Design patternsDivanshu N
 

Ähnlich wie Online TechTalk  "Patterns in Embedded SW Design" (20)

Design Patterns - General Introduction
Design Patterns - General IntroductionDesign Patterns - General Introduction
Design Patterns - General Introduction
 
Software Design
Software DesignSoftware Design
Software Design
 
Applying design patterns
Applying design patternsApplying design patterns
Applying design patterns
 
Module 2 design patterns-2
Module 2   design patterns-2Module 2   design patterns-2
Module 2 design patterns-2
 
Code Inspection
Code InspectionCode Inspection
Code Inspection
 
Design Patterns.ppt
Design Patterns.pptDesign Patterns.ppt
Design Patterns.ppt
 
Foundation Models in Recommender Systems
Foundation Models in Recommender SystemsFoundation Models in Recommender Systems
Foundation Models in Recommender Systems
 
CBD.pptx
CBD.pptxCBD.pptx
CBD.pptx
 
Solid Principles Of Design (Design Series 01)
Solid Principles Of Design (Design Series 01)Solid Principles Of Design (Design Series 01)
Solid Principles Of Design (Design Series 01)
 
CS101- Introduction to Computing- Lecture 45
CS101- Introduction to Computing- Lecture 45CS101- Introduction to Computing- Lecture 45
CS101- Introduction to Computing- Lecture 45
 
Design pattern
Design patternDesign pattern
Design pattern
 
Design patterns through refactoring
Design patterns through refactoringDesign patterns through refactoring
Design patterns through refactoring
 
Excavating the knowledge of our ancestors
Excavating the knowledge of our ancestorsExcavating the knowledge of our ancestors
Excavating the knowledge of our ancestors
 
Designing and prototyping
Designing and prototypingDesigning and prototyping
Designing and prototyping
 
Domain Driven Design Big Picture Strategic Patterns
Domain Driven Design Big Picture Strategic PatternsDomain Driven Design Big Picture Strategic Patterns
Domain Driven Design Big Picture Strategic Patterns
 
Cleaning Code - Tools and Techniques for Large Legacy Projects
Cleaning Code - Tools and Techniques for Large Legacy ProjectsCleaning Code - Tools and Techniques for Large Legacy Projects
Cleaning Code - Tools and Techniques for Large Legacy Projects
 
CHAPTER12.ppt
CHAPTER12.pptCHAPTER12.ppt
CHAPTER12.ppt
 
Domain-Driven Design
Domain-Driven DesignDomain-Driven Design
Domain-Driven Design
 
Refactoring to Design Patterns
Refactoring to Design PatternsRefactoring to Design Patterns
Refactoring to Design Patterns
 
Design patterns
Design patternsDesign patterns
Design patterns
 

Mehr von GlobalLogic Ukraine

GlobalLogic JavaScript Community Webinar #18 “Long Story Short: OSI Model”
GlobalLogic JavaScript Community Webinar #18 “Long Story Short: OSI Model”GlobalLogic JavaScript Community Webinar #18 “Long Story Short: OSI Model”
GlobalLogic JavaScript Community Webinar #18 “Long Story Short: OSI Model”GlobalLogic Ukraine
 
Штучний інтелект як допомога в навчанні, а не замінник.pptx
Штучний інтелект як допомога в навчанні, а не замінник.pptxШтучний інтелект як допомога в навчанні, а не замінник.pptx
Штучний інтелект як допомога в навчанні, а не замінник.pptxGlobalLogic Ukraine
 
Задачі AI-розробника як застосовується штучний інтелект.pptx
Задачі AI-розробника як застосовується штучний інтелект.pptxЗадачі AI-розробника як застосовується штучний інтелект.pptx
Задачі AI-розробника як застосовується штучний інтелект.pptxGlobalLogic Ukraine
 
Що треба вивчати, щоб стати розробником штучного інтелекту та нейромереж.pptx
Що треба вивчати, щоб стати розробником штучного інтелекту та нейромереж.pptxЩо треба вивчати, щоб стати розробником штучного інтелекту та нейромереж.pptx
Що треба вивчати, щоб стати розробником штучного інтелекту та нейромереж.pptxGlobalLogic Ukraine
 
GlobalLogic Java Community Webinar #16 “Zaloni’s Architecture for Data-Driven...
GlobalLogic Java Community Webinar #16 “Zaloni’s Architecture for Data-Driven...GlobalLogic Java Community Webinar #16 “Zaloni’s Architecture for Data-Driven...
GlobalLogic Java Community Webinar #16 “Zaloni’s Architecture for Data-Driven...GlobalLogic Ukraine
 
JavaScript Community Webinar #14 "Why Is Git Rebase?"
JavaScript Community Webinar #14 "Why Is Git Rebase?"JavaScript Community Webinar #14 "Why Is Git Rebase?"
JavaScript Community Webinar #14 "Why Is Git Rebase?"GlobalLogic Ukraine
 
GlobalLogic .NET Community Webinar #3 "Exploring Serverless with Azure Functi...
GlobalLogic .NET Community Webinar #3 "Exploring Serverless with Azure Functi...GlobalLogic .NET Community Webinar #3 "Exploring Serverless with Azure Functi...
GlobalLogic .NET Community Webinar #3 "Exploring Serverless with Azure Functi...GlobalLogic Ukraine
 
Страх і сила помилок - IT Inside від GlobalLogic Education
Страх і сила помилок - IT Inside від GlobalLogic EducationСтрах і сила помилок - IT Inside від GlobalLogic Education
Страх і сила помилок - IT Inside від GlobalLogic EducationGlobalLogic Ukraine
 
GlobalLogic .NET Webinar #2 “Azure RBAC and Managed Identity”
GlobalLogic .NET Webinar #2 “Azure RBAC and Managed Identity”GlobalLogic .NET Webinar #2 “Azure RBAC and Managed Identity”
GlobalLogic .NET Webinar #2 “Azure RBAC and Managed Identity”GlobalLogic Ukraine
 
GlobalLogic QA Webinar “What does it take to become a Test Engineer”
GlobalLogic QA Webinar “What does it take to become a Test Engineer”GlobalLogic QA Webinar “What does it take to become a Test Engineer”
GlobalLogic QA Webinar “What does it take to become a Test Engineer”GlobalLogic Ukraine
 
“How to Secure Your Applications With a Keycloak?
“How to Secure Your Applications With a Keycloak?“How to Secure Your Applications With a Keycloak?
“How to Secure Your Applications With a Keycloak?GlobalLogic Ukraine
 
GlobalLogic Machine Learning Webinar “Advanced Statistical Methods for Linear...
GlobalLogic Machine Learning Webinar “Advanced Statistical Methods for Linear...GlobalLogic Machine Learning Webinar “Advanced Statistical Methods for Linear...
GlobalLogic Machine Learning Webinar “Advanced Statistical Methods for Linear...GlobalLogic Ukraine
 
GlobalLogic Machine Learning Webinar “Statistical learning of linear regressi...
GlobalLogic Machine Learning Webinar “Statistical learning of linear regressi...GlobalLogic Machine Learning Webinar “Statistical learning of linear regressi...
GlobalLogic Machine Learning Webinar “Statistical learning of linear regressi...GlobalLogic Ukraine
 
GlobalLogic C++ Webinar “The Minimum Knowledge to Become a C++ Developer”
GlobalLogic C++ Webinar “The Minimum Knowledge to Become a C++ Developer”GlobalLogic C++ Webinar “The Minimum Knowledge to Become a C++ Developer”
GlobalLogic C++ Webinar “The Minimum Knowledge to Become a C++ Developer”GlobalLogic Ukraine
 
Embedded Webinar #17 "Low-level Network Testing in Embedded Devices Development"
Embedded Webinar #17 "Low-level Network Testing in Embedded Devices Development"Embedded Webinar #17 "Low-level Network Testing in Embedded Devices Development"
Embedded Webinar #17 "Low-level Network Testing in Embedded Devices Development"GlobalLogic Ukraine
 
GlobalLogic Webinar "Introduction to Embedded QA"
GlobalLogic Webinar "Introduction to Embedded QA"GlobalLogic Webinar "Introduction to Embedded QA"
GlobalLogic Webinar "Introduction to Embedded QA"GlobalLogic Ukraine
 
C++ Webinar "Why Should You Learn C++ in 2021-22?"
C++ Webinar "Why Should You Learn C++ in 2021-22?"C++ Webinar "Why Should You Learn C++ in 2021-22?"
C++ Webinar "Why Should You Learn C++ in 2021-22?"GlobalLogic Ukraine
 
GlobalLogic Test Automation Live Testing Session “Android Behind UI — Testing...
GlobalLogic Test Automation Live Testing Session “Android Behind UI — Testing...GlobalLogic Test Automation Live Testing Session “Android Behind UI — Testing...
GlobalLogic Test Automation Live Testing Session “Android Behind UI — Testing...GlobalLogic Ukraine
 
GlobalLogic Test Automation Online TechTalk “Test Driven Development as a Per...
GlobalLogic Test Automation Online TechTalk “Test Driven Development as a Per...GlobalLogic Test Automation Online TechTalk “Test Driven Development as a Per...
GlobalLogic Test Automation Online TechTalk “Test Driven Development as a Per...GlobalLogic Ukraine
 
GlobalLogic Azure TechTalk ONLINE “Marketing Data Lake in Azure”
GlobalLogic Azure TechTalk ONLINE “Marketing Data Lake in Azure”GlobalLogic Azure TechTalk ONLINE “Marketing Data Lake in Azure”
GlobalLogic Azure TechTalk ONLINE “Marketing Data Lake in Azure”GlobalLogic Ukraine
 

Mehr von GlobalLogic Ukraine (20)

GlobalLogic JavaScript Community Webinar #18 “Long Story Short: OSI Model”
GlobalLogic JavaScript Community Webinar #18 “Long Story Short: OSI Model”GlobalLogic JavaScript Community Webinar #18 “Long Story Short: OSI Model”
GlobalLogic JavaScript Community Webinar #18 “Long Story Short: OSI Model”
 
Штучний інтелект як допомога в навчанні, а не замінник.pptx
Штучний інтелект як допомога в навчанні, а не замінник.pptxШтучний інтелект як допомога в навчанні, а не замінник.pptx
Штучний інтелект як допомога в навчанні, а не замінник.pptx
 
Задачі AI-розробника як застосовується штучний інтелект.pptx
Задачі AI-розробника як застосовується штучний інтелект.pptxЗадачі AI-розробника як застосовується штучний інтелект.pptx
Задачі AI-розробника як застосовується штучний інтелект.pptx
 
Що треба вивчати, щоб стати розробником штучного інтелекту та нейромереж.pptx
Що треба вивчати, щоб стати розробником штучного інтелекту та нейромереж.pptxЩо треба вивчати, щоб стати розробником штучного інтелекту та нейромереж.pptx
Що треба вивчати, щоб стати розробником штучного інтелекту та нейромереж.pptx
 
GlobalLogic Java Community Webinar #16 “Zaloni’s Architecture for Data-Driven...
GlobalLogic Java Community Webinar #16 “Zaloni’s Architecture for Data-Driven...GlobalLogic Java Community Webinar #16 “Zaloni’s Architecture for Data-Driven...
GlobalLogic Java Community Webinar #16 “Zaloni’s Architecture for Data-Driven...
 
JavaScript Community Webinar #14 "Why Is Git Rebase?"
JavaScript Community Webinar #14 "Why Is Git Rebase?"JavaScript Community Webinar #14 "Why Is Git Rebase?"
JavaScript Community Webinar #14 "Why Is Git Rebase?"
 
GlobalLogic .NET Community Webinar #3 "Exploring Serverless with Azure Functi...
GlobalLogic .NET Community Webinar #3 "Exploring Serverless with Azure Functi...GlobalLogic .NET Community Webinar #3 "Exploring Serverless with Azure Functi...
GlobalLogic .NET Community Webinar #3 "Exploring Serverless with Azure Functi...
 
Страх і сила помилок - IT Inside від GlobalLogic Education
Страх і сила помилок - IT Inside від GlobalLogic EducationСтрах і сила помилок - IT Inside від GlobalLogic Education
Страх і сила помилок - IT Inside від GlobalLogic Education
 
GlobalLogic .NET Webinar #2 “Azure RBAC and Managed Identity”
GlobalLogic .NET Webinar #2 “Azure RBAC and Managed Identity”GlobalLogic .NET Webinar #2 “Azure RBAC and Managed Identity”
GlobalLogic .NET Webinar #2 “Azure RBAC and Managed Identity”
 
GlobalLogic QA Webinar “What does it take to become a Test Engineer”
GlobalLogic QA Webinar “What does it take to become a Test Engineer”GlobalLogic QA Webinar “What does it take to become a Test Engineer”
GlobalLogic QA Webinar “What does it take to become a Test Engineer”
 
“How to Secure Your Applications With a Keycloak?
“How to Secure Your Applications With a Keycloak?“How to Secure Your Applications With a Keycloak?
“How to Secure Your Applications With a Keycloak?
 
GlobalLogic Machine Learning Webinar “Advanced Statistical Methods for Linear...
GlobalLogic Machine Learning Webinar “Advanced Statistical Methods for Linear...GlobalLogic Machine Learning Webinar “Advanced Statistical Methods for Linear...
GlobalLogic Machine Learning Webinar “Advanced Statistical Methods for Linear...
 
GlobalLogic Machine Learning Webinar “Statistical learning of linear regressi...
GlobalLogic Machine Learning Webinar “Statistical learning of linear regressi...GlobalLogic Machine Learning Webinar “Statistical learning of linear regressi...
GlobalLogic Machine Learning Webinar “Statistical learning of linear regressi...
 
GlobalLogic C++ Webinar “The Minimum Knowledge to Become a C++ Developer”
GlobalLogic C++ Webinar “The Minimum Knowledge to Become a C++ Developer”GlobalLogic C++ Webinar “The Minimum Knowledge to Become a C++ Developer”
GlobalLogic C++ Webinar “The Minimum Knowledge to Become a C++ Developer”
 
Embedded Webinar #17 "Low-level Network Testing in Embedded Devices Development"
Embedded Webinar #17 "Low-level Network Testing in Embedded Devices Development"Embedded Webinar #17 "Low-level Network Testing in Embedded Devices Development"
Embedded Webinar #17 "Low-level Network Testing in Embedded Devices Development"
 
GlobalLogic Webinar "Introduction to Embedded QA"
GlobalLogic Webinar "Introduction to Embedded QA"GlobalLogic Webinar "Introduction to Embedded QA"
GlobalLogic Webinar "Introduction to Embedded QA"
 
C++ Webinar "Why Should You Learn C++ in 2021-22?"
C++ Webinar "Why Should You Learn C++ in 2021-22?"C++ Webinar "Why Should You Learn C++ in 2021-22?"
C++ Webinar "Why Should You Learn C++ in 2021-22?"
 
GlobalLogic Test Automation Live Testing Session “Android Behind UI — Testing...
GlobalLogic Test Automation Live Testing Session “Android Behind UI — Testing...GlobalLogic Test Automation Live Testing Session “Android Behind UI — Testing...
GlobalLogic Test Automation Live Testing Session “Android Behind UI — Testing...
 
GlobalLogic Test Automation Online TechTalk “Test Driven Development as a Per...
GlobalLogic Test Automation Online TechTalk “Test Driven Development as a Per...GlobalLogic Test Automation Online TechTalk “Test Driven Development as a Per...
GlobalLogic Test Automation Online TechTalk “Test Driven Development as a Per...
 
GlobalLogic Azure TechTalk ONLINE “Marketing Data Lake in Azure”
GlobalLogic Azure TechTalk ONLINE “Marketing Data Lake in Azure”GlobalLogic Azure TechTalk ONLINE “Marketing Data Lake in Azure”
GlobalLogic Azure TechTalk ONLINE “Marketing Data Lake in Azure”
 

Kürzlich hochgeladen

Videogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdfVideogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdfinfogdgmi
 
Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )Brian Pichman
 
AI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity WebinarAI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity WebinarPrecisely
 
UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8DianaGray10
 
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve DecarbonizationUsing IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve DecarbonizationIES VE
 
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfJamie (Taka) Wang
 
UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6DianaGray10
 
Computer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsComputer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsSeth Reyes
 
AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesAI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesMd Hossain Ali
 
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdfIaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdfDaniel Santiago Silva Capera
 
Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™Adtran
 
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Will Schroeder
 
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...Aggregage
 
Designing A Time bound resource download URL
Designing A Time bound resource download URLDesigning A Time bound resource download URL
Designing A Time bound resource download URLRuncy Oommen
 
Nanopower In Semiconductor Industry.pdf
Nanopower  In Semiconductor Industry.pdfNanopower  In Semiconductor Industry.pdf
Nanopower In Semiconductor Industry.pdfPedro Manuel
 
Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1DianaGray10
 
Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.YounusS2
 
9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding Team9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding TeamAdam Moalla
 
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UbiTrack UK
 
Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Commit University
 

Kürzlich hochgeladen (20)

Videogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdfVideogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdf
 
Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )
 
AI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity WebinarAI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity Webinar
 
UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8
 
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve DecarbonizationUsing IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
 
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
 
UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6
 
Computer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsComputer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and Hazards
 
AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesAI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
 
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdfIaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
 
Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™
 
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
 
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
 
Designing A Time bound resource download URL
Designing A Time bound resource download URLDesigning A Time bound resource download URL
Designing A Time bound resource download URL
 
Nanopower In Semiconductor Industry.pdf
Nanopower  In Semiconductor Industry.pdfNanopower  In Semiconductor Industry.pdf
Nanopower In Semiconductor Industry.pdf
 
Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1
 
Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.
 
9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding Team9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding Team
 
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
 
Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)
 

Online TechTalk  "Patterns in Embedded SW Design"

  • 2. 2 Confidential Patterns in embedded SW design Vasyl Golubenko Lead Engineer 16-09-2021
  • 3. 3 Confidential Agenda 1. Generic understandings of “Patterns” 2. Patterns benefits and concerns 3. Classification of embedded patterns 4. Commonly used patterns 5. Examples
  • 5. 5 Confidential Generic understandings of “Patterns” a software design pattern is a general, reusable solution to a commonly occurring problem within a given context in software design. It is not a finished design that can be transformed directly into source or machine code. Rather, it is a description or template for how to solve a problem that can be used in many different situations. Design patterns are formalized best practices that the programmer can use to solve common problems when designing an application or system. What is Patterns?
  • 6. 6 Confidential Generic understandings of “Patterns” • Intent of the pattern briefly describes both the problem and the solution. • Motivation further explains the problem and the solution the pattern makes possible. • Structure of classes shows each part of the pattern and how they are related. • Code example in one of the popular programming languages makes it easier to grasp the idea behind the pattern. Some pattern catalogs list other useful details, such as applicability of the pattern, implementation steps and relations with other patterns. What does the pattern consist of? Intent Motivation Structure Code Example
  • 7. 7 Confidential Generic understandings of “Patterns” • The concept of patterns was first described by Christopher Alexander in 1977 A Pattern Language: Towns, Buildings, Construction. The book describes a “language” for designing the urban environment. The units of this language are patterns. They may describe how high windows should be, how many levels a building should have, how large green areas in a neighborhood are supposed to be, and so on. • Erich Gamma, John Vlissides, Ralph Johnson, and Richard Helm. In 1994, they published Design Patterns: Elements of Reusable Object- Oriented Software, in which they applied the concept of design patterns to programming. The book featured 23 patterns solving various problems of design and became a best-seller very quickly. Due to its lengthy name, people started to call it “the book by the gang of four” which was soon shortened to simply “the GoF book”. Some Historical notes :)
  • 8. 8 Confidential Generic understandings of “Patterns” • “Each pattern describes a problem which occurs over and over again … and then describes the core of the solution to that problem, in such a way that you can use this solution a million times over, without doing it the same way twice.” • – Christopher Alexander • At the core […] is the idea people should design their homes, streets, and communities. This idea […] comes from the observation most of the wonderful places of the world were not made by architects, but by the people. • — Christopher Alexander et al., A Pattern Language, front bookflap Nature and Abstraction
  • 13. 13 Confidential Patterns benefits and concerns • Design patterns use object-oriented and implement SOLID Principals. • Make your lives easy - make possible you to get benefit from the experience of your predecessors those have worked on the same type of project .True in backward direction. • Make development fast and easily documented. • Reusability and extensibility of the already developed applications. • Design patterns are more sophisticated and advance approaches than basic data structures such as arrays, linked lists, and binary trees. • All design patterns use self-descriptive naming conventions and a design pattern based name of program objects captures a basic idea about the working and use of that particular object. • Design pattern utilize descriptive words such as proxy, adapter, iterator, visitor, and command in the name of the objects. • Design patterns improve software development process. Benefits
  • 14. 14 Confidential Patterns benefits and concerns • Patterns do not lead to direct code reuse. • Patterns are deceptively simple. • Teams may suffer from patterns overload. • Integrating patterns into a software development process is a human-intensive activity. • Design patterns could been oversold. • Some design patterns are unnecessarily difficult to learn • Design pattern classifications are not yet useful for practitioners Disadvantages
  • 15. 15 Confidential Patterns benefits and concerns • Unjustified use • If all you have is a hammer, everything looks like a nail. • This is the problem that haunts many novices who have just familiarized themselves with patterns. Having learned about patterns, they try to apply them everywhere, even in situations where simpler code would do just fine. • Inefficient solutions • Patterns try to systematize approaches that are already widely used. This unification is viewed by many as a dogma and they implement patterns “to the point”, without adapting them to the context of their project. Disadvantages
  • 17. 17 Confidential Classification of embedded patterns • Creational patterns provide object creation mechanisms that increase flexibility and reuse of existing code. • Structural patterns explain how to assemble objects and classes into larger structures, while keeping the structures flexible and efficient. • Behavioral patterns take care of effective communication and the assignment of responsibilities between objects. • Architectural patterns take care of generic project/solution organization. Classification of Patterns
  • 20. 20 Confidential Classification of embedded patterns Specific of knowledge set required for Embedded engineers; diverse environment on different projects like BM, RTOS, Linux; safety standards and recommendations like MISRA or AutoSAR – dictate limitation, but nobody does not keep us from exploitation of patterns approach. Software design patterns for Object oriented languages bring us flexibility of High abstractions aproaches, but core goal of patterns – re-usage of solutions, but not limit us how to do that and what particular patterns to use. Why Embedded Patterns specific
  • 21. 21 Confidential Classification of embedded patterns • Object design patterns – Half Call, Manager, Resource manager, Message factory and Message interface, Publish-subscriber • State Design Patterns- Hierarchical State Machine, State machine, Collector state, Parallel wait state, Serial wait state • Hardware Design Patterns – Serial port, High speed Serial Port, Hardware, Synchronize • Protocol Design Patterns – Transmit protocol Handler, Receive protocol Handler, Protocol Packer, Protocol layer, Protocol stack • Architecture Design Patterns – Processor, Future Coordination, Task, Resource Allocation, Timer management • Implementation Patterns – C++ header file include, STL Embedded Specific Patterns Types Object Design Patterns State Design Patterns Hardware Design Patterns Protocol Design Patterns Architecture Design Patterns Implementation Patterns
  • 23. 23 Confidential Commonly used patterns • In conventional state machine design, all states are considered at the same level. The design does not capture the commonality that exists among states. In real life, many states handle most messages in similar fashion and differ only in handling of few key messages. Even when the actual handling differs, there is still some commonality. Hierarchical state machine design captures the commonality by organizing the states as a hierarchy. The states at the higher level in hierarchy perform the common message handling, while the lower level states inherit the commonality from higher level ones and perform the state specific functions. Hierarchical State Machine State Design Patterns Hierarchical State Machine State Machine Inheritance Collector State Pattern Parallel Wait State Pattern Serial Wait State Pattern
  • 24. 24 Confidential Hierarchical State Machine Example Hierarchical State Machine Conventional State Machine
  • 25. 25 Confidential • Conventional States Hierarchical States • Awaiting First Digit Setup.CollectingDigits.AwaitingFirstDigit • Collecting Digits Setup.CollectingDigits.AwaitingSubsequent Digits • Routing Call Setup.RoutingCall • Switching Path Setup.SwitchingPath • Conversation Conversation • Awaiting Onhook Releasing.AwaitingOnhook • Releasing Path Releasing.ReleasingPath
  • 26. 26 Confidential Commonly used patterns • State Machine inheritance provides a powerful way of teaching new tricks to an old state machine. Consider a IncomingCall and OutgoingCall objects in a call processing implementation. A lot of functionality between the two call types is shared. This common functionality could be implemented in a common Call object. IncomingCall and OutgoingCall can inherit from the Call object. The inheritance tree can be refined by defining call objects based on the signaling type. This would result in objects like IncomingCall, OutgoingCall etc. State Machine Inheritance State Design Patterns Hierarchical State Machine State Machine Inheritance Collector State Pattern Parallel Wait State Pattern Serial Wait State Pattern
  • 27. 27 Confidential Commonly used patterns • The structure of this design pattern largely depends upon the register programming model of the device being programmed. In most cases, this design pattern would be implemented as a single class representing the device. In case of complex devices, the device might be modeled as a main device class and other subclasses modeling different parts of the device. • Hardware design pattern also known as:  Device  Hardware Interface  Peripheral Interface  Peripheral Hardware Design Pattern Hardware Design Patterns Serial Port Design Pattern HS Serial Port Design Pattern Hardware Design Pattern Synchronize Pattern
  • 28. 28 Confidential Commonly used patterns • Different layers of the protocol are structured (network layer, data-link layer, Physical layer). Communication between layers takes place using standard interfaces defined by the Protocol Layer base class. All implementations of the protocol layer inherit from this class. The inheriting layer classes should implement the standard interfaces. The standard interfaces are: • Transmit is invoked by the upper layer to transfer a packet to the lower layer. • Handle Receive is invoked by the lower layer to transfer a packet to the upper layer. Protocol Layer Protocol Design Patterns Transmit Protocol Handler Receive Protocol Handler Protocol Packet Protocol Layer Protocol Stack
  • 30. 30 Confidential Useful links • https://www.researchgate.net/publication/220424606_The_Pros_and_Cons_of_Adopting_and_Applyin g_Design_Patterns_in_the_Real_World • https://www.jobsity.com/blog/design-pattern-software • https://www.gofpatterns.com/design-patterns/module2/design-pattern-benefits.php • https://www.techrepublic.com/article/reap-the-benefits-of-design-patterns-in-software-development/ • https://www.eventhelix.com/design-patterns/ • https://i.imgur.com/PYsvgTz.png • https://refactoring.guru/design-patterns/why-learn-patterns • https://en.wikipedia.org/wiki/Software_design_pattern • http://www.algorithmforum.com/2018/08/design-patterns-software-design-pattern.html • https://falconcoder.com/2019/12/03/design-patterns-in-mobile-application-development/ • https://www.script-tutorials.com/design-patterns-in-php/ • https://towardsdatascience.com/10-common-software-architectural-patterns-in-a-nutshell- a0b47a1e9013

Hinweis der Redaktion

  1. The lowest-level patterns are known as idioms - they typically describe how to implement specific aspects of components or the relationship between them, within the framework of just one programming language (e.g. writing an infinite loop). Another way to think of idioms is as the competent or elegant use of a programming language. If you master French vocabulary but still construct phrases in an English style, you won’t be using the language optimally. The same logic applies if you’re working with C++ and Python. Programming idiomatically is key to making code more readable and accessible to others. At the other end of the spectrum are architectural patterns, which guide the development of an entire application. Again, the basic purpose is the same: to reuse and adapt basic design patterns - or in this case a sequence of them - that have been proven to work rather than try to reinvent the wheel every time you start a new software project. The term is sometimes used interchangeably with ‘architecture style’, and while there are overlaps, the key difference is that a pattern aims to solve a recurring problem (a style doesn’t necessarily need to solve anything). Common examples of architectural patterns include Microkernel, Microservices, Layered, and Space-Based Architecture (SBA). As we have previously written here, decisions over software architecture are typically made at the start of a project and influence everything from performance to security and scalability. Understanding which architectural patterns are best-suited to a certain business requirement - as well as how to apply and customize them for the specific situation at hand - is therefore crucial to successful software development.
  2. The lowest-level patterns are known as idioms - they typically describe how to implement specific aspects of components or the relationship between them, within the framework of just one programming language (e.g. writing an infinite loop). Another way to think of idioms is as the competent or elegant use of a programming language. If you master French vocabulary but still construct phrases in an English style, you won’t be using the language optimally. The same logic applies if you’re working with C++ and Python. Programming idiomatically is key to making code more readable and accessible to others. At the other end of the spectrum are architectural patterns, which guide the development of an entire application. Again, the basic purpose is the same: to reuse and adapt basic design patterns - or in this case a sequence of them - that have been proven to work rather than try to reinvent the wheel every time you start a new software project. The term is sometimes used interchangeably with ‘architecture style’, and while there are overlaps, the key difference is that a pattern aims to solve a recurring problem (a style doesn’t necessarily need to solve anything). Common examples of architectural patterns include Microkernel, Microservices, Layered, and Space-Based Architecture (SBA). As we have previously written here, decisions over software architecture are typically made at the start of a project and influence everything from performance to security and scalability. Understanding which architectural patterns are best-suited to a certain business requirement - as well as how to apply and customize them for the specific situation at hand - is therefore crucial to successful software development.
  3. The lowest-level patterns are known as idioms - they typically describe how to implement specific aspects of components or the relationship between them, within the framework of just one programming language (e.g. writing an infinite loop). Another way to think of idioms is as the competent or elegant use of a programming language. If you master French vocabulary but still construct phrases in an English style, you won’t be using the language optimally. The same logic applies if you’re working with C++ and Python. Programming idiomatically is key to making code more readable and accessible to others. At the other end of the spectrum are architectural patterns, which guide the development of an entire application. Again, the basic purpose is the same: to reuse and adapt basic design patterns - or in this case a sequence of them - that have been proven to work rather than try to reinvent the wheel every time you start a new software project. The term is sometimes used interchangeably with ‘architecture style’, and while there are overlaps, the key difference is that a pattern aims to solve a recurring problem (a style doesn’t necessarily need to solve anything). Common examples of architectural patterns include Microkernel, Microservices, Layered, and Space-Based Architecture (SBA). As we have previously written here, decisions over software architecture are typically made at the start of a project and influence everything from performance to security and scalability. Understanding which architectural patterns are best-suited to a certain business requirement - as well as how to apply and customize them for the specific situation at hand - is therefore crucial to successful software development.
  4. The lowest-level patterns are known as idioms - they typically describe how to implement specific aspects of components or the relationship between them, within the framework of just one programming language (e.g. writing an infinite loop). Another way to think of idioms is as the competent or elegant use of a programming language. If you master French vocabulary but still construct phrases in an English style, you won’t be using the language optimally. The same logic applies if you’re working with C++ and Python. Programming idiomatically is key to making code more readable and accessible to others. At the other end of the spectrum are architectural patterns, which guide the development of an entire application. Again, the basic purpose is the same: to reuse and adapt basic design patterns - or in this case a sequence of them - that have been proven to work rather than try to reinvent the wheel every time you start a new software project. The term is sometimes used interchangeably with ‘architecture style’, and while there are overlaps, the key difference is that a pattern aims to solve a recurring problem (a style doesn’t necessarily need to solve anything). Common examples of architectural patterns include Microkernel, Microservices, Layered, and Space-Based Architecture (SBA). As we have previously written here, decisions over software architecture are typically made at the start of a project and influence everything from performance to security and scalability. Understanding which architectural patterns are best-suited to a certain business requirement - as well as how to apply and customize them for the specific situation at hand - is therefore crucial to successful software development.
  5. The lowest-level patterns are known as idioms - they typically describe how to implement specific aspects of components or the relationship between them, within the framework of just one programming language (e.g. writing an infinite loop). Another way to think of idioms is as the competent or elegant use of a programming language. If you master French vocabulary but still construct phrases in an English style, you won’t be using the language optimally. The same logic applies if you’re working with C++ and Python. Programming idiomatically is key to making code more readable and accessible to others. At the other end of the spectrum are architectural patterns, which guide the development of an entire application. Again, the basic purpose is the same: to reuse and adapt basic design patterns - or in this case a sequence of them - that have been proven to work rather than try to reinvent the wheel every time you start a new software project. The term is sometimes used interchangeably with ‘architecture style’, and while there are overlaps, the key difference is that a pattern aims to solve a recurring problem (a style doesn’t necessarily need to solve anything). Common examples of architectural patterns include Microkernel, Microservices, Layered, and Space-Based Architecture (SBA). As we have previously written here, decisions over software architecture are typically made at the start of a project and influence everything from performance to security and scalability. Understanding which architectural patterns are best-suited to a certain business requirement - as well as how to apply and customize them for the specific situation at hand - is therefore crucial to successful software development.