SlideShare a Scribd company logo
1 of 198
Download to read offline
'Unembedding' embedded systems
with TDD
Benefits of going beyond the
Make It Work phase
About Me & Talk Objectives
• Telecommunication Engineer, majoring in electronics.
• 16 years surviving from the trenches:
• Hardware (trying to domain the ‘Black magic’).
• Firmware & Software.
• DevOps & Agile Coach.
• Helping organizations to improve their development processes
• ...
• Sectors: automotive, microelectronics, defense, railway, renewable energies, fishery…
@fraclipe
@FranciscoClimentPerez
www.francliment.com
.francliment.com
.francliment.com
Peripheral
MCUx
IC1
IC2
Peripheral
Embedded System: Hardware, Firmware and … Software?
HARDWARE
.francliment.com
Peripheral
MCUx
IC1
IC2
Peripheral
Embedded System: Hardware, Firmware and … Software?
HARDWARE
.francliment.com
Peripheral
MCUx
IC1
IC2
Peripheral
?
Embedded System: Hardware, Firmware and … Software?
HARDWARE
.francliment.com
Peripheral
IC1
IC2
Peripheral
MCUx
ADCs
SFRs
SPECIAL
FUNCTION
REGISTERS
GPIOs
SFRs
TMRs
SFRs
I2Cs
SFRs
SPIs
SFRs
Embedded System: Hardware, Firmware and … Software?
.francliment.com
Special Function Registers (SFRs): The Hardware interface
.francliment.com
Nothing happens ‘outside’
if it doesn’t change an SFR bit
Embedded System: Hardware, Firmware and … Software?
.francliment.com
Embedded System: Hardware, Firmware and … Software?
.francliment.com
Peripheral
IC1
IC2
Peripheral
MCUx
Embedded
CODE
(SW // FW)
ADCs
SFRs
SPECIAL
FUNCTION
REGISTERS
GPIOs
SFRs
TMRs
SFRs
I2Cs
SFRs
SPIs
SFRs
Embedded System: Hardware, Firmware and … Software?
“Software is this thing that can have a long
useful life, but firmware will become
obsolete as hardware evolves”
Updated definition:
.francliment.com
(Re)Definition of Firmware
Software engineer and author. Co-author of the Agile
Manifesto. Author of ‘Test Driven Development for
Embedded C’.
― James W. Greening, Clean Architecture
[Robert C. Martin]
“Software is this thing that can have a long
useful life, but firmware will become
obsolete as hardware evolves”
Updated definition:
.francliment.com
(Re)Definition of Firmware
Software engineer and author. Co-author of the Agile
Manifesto. Author of ‘Test Driven Development for
Embedded C’.
“Firmware is firmware because of what it
depends on and how hard is to change
those dependencies”.
― James W. Greening, Clean Architecture
[Robert C. Martin]
“Software is this thing that can have a long
useful life, but firmware will become
obsolete as hardware evolves”
Updated definition:
.francliment.com
(Re)Definition of Firmware
Software engineer and author. Co-author of the Agile
Manifesto. Author of ‘Test Driven Development for
Embedded C’.
“Firmware is firmware because of what it
depends on and how hard is to change
those dependencies”.
― James W. Greening, Clean Architecture
[Robert C. Martin]
“Software is this thing that can have a long
useful life, but firmware will become
obsolete as hardware evolves”
Updated definition:
.francliment.com
(Re)Definition of Firmware
Software engineer and author. Co-author of the Agile
Manifesto. Author of ‘Test Driven Development for
Embedded C’.
― James W. Greening, Clean Architecture
[Robert C. Martin]
“Firmware is firmware because of what it
depends on and how hard is to change
those dependencies”.
“… Non-embedded developers also write
firmware whenever they bury SQL in their code
or when they spread platform dependencies
throughout their code and business logic …”
1. Make It Work
.francliment.com
Development as 3 strategic steps
3. Make It Fast
2. Make It Right
https://www.eetindia.co.in/engineers-in-the-covid-19-era/
https://www.ee,tindia.co.in/engineers-in-the-covid-19-era/
― Kent Beck, Test-Driven Development By Example, 2003
― Butler W. Lampson, ’Hints for Computer System Design’, 1983
― Stephen C. Johnson & Brian W. Kernighan, ’The C Language and Models for Systems Programming’, 1983
1. Make It Work
.francliment.com
Development as 3 strategic steps
3. Make It Fast
2. Make It Right
https://www.eetindia.co.in/engineers-in-the-covid-19-era/
https://www.ee,tindia.co.in/engineers-in-the-covid-19-era/
― Kent Beck, Test-Driven Development By Example, 2003
― Butler W. Lampson, ’Hints for Computer System Design’, 1983
― Stephen C. Johnson & Brian W. Kernighan, ’The C Language and Models for Systems Programming’, 1983
Focused in understanding how to solve the problem, not about
engineering the code right
1. Make It Work
.francliment.com
Development as 3 strategic steps
3. Make It Fast
2. Make It Right
https://www.eetindia.co.in/engineers-in-the-covid-19-era/
https://www.ee,tindia.co.in/engineers-in-the-covid-19-era/
― Kent Beck, Test-Driven Development By Example, 2003
― Butler W. Lampson, ’Hints for Computer System Design’, 1983
― Stephen C. Johnson & Brian W. Kernighan, ’The C Language and Models for Systems Programming’, 1983
Focused in understanding how to solve the problem, not about
engineering the code right
Engineer and craft the code right to make it easy to
understand, maintain and evolve
1. Make It Work
.francliment.com
Development as 3 strategic steps
3. Make It Fast
2. Make It Right
https://www.eetindia.co.in/engineers-in-the-covid-19-era/
https://www.ee,tindia.co.in/engineers-in-the-covid-19-era/
― Kent Beck, Test-Driven Development By Example, 2003
― Butler W. Lampson, ’Hints for Computer System Design’, 1983
― Stephen C. Johnson & Brian W. Kernighan, ’The C Language and Models for Systems Programming’, 1983
Focused in understanding how to solve the problem, not about
engineering the code right
Engineer and craft the code right to make it easy to
understand, maintain and evolve
Fulfill system timing requirements (if any)
.francliment.com
Fallacies & Mantras
.francliment.com
“Right solution at first iteration”
THE BIGGEST LIE EVER
.francliment.com
https://www.eetindia.co.in/engineers-in-the-covid-19-era/
Making It Work: Embedded is harder
Focused in understanding how to solve the problem, not about
engineering the code right
Orders of magnitude harder in
embedded.
1. Make It Work
.francliment.com
Peripheral
MCUx
IC1
Application
(Main God)
HW
IC2
Peripheral
Making It Work: Main God
<use>
<use>
<use>
<use>
<use>
ADCs
SFRs
SPECIAL
FUNCTION
REGISTERS
GPIOs
SFRs
TMRs
SFRs
I2Cs
SFRs
SPIs
SFRs
.francliment.com
Peripheral
MCUx
IC1
Application
(Main God)
HW
IC2
Peripheral
<use>
<use>
<use>
<use>
<use>
ADCs
SFRs
SPECIAL
FUNCTION
REGISTERS
GPIOs
SFRs
TMRs
SFRs
I2Cs
SFRs
SPIs
SFRs
Making It Work: Main God
.francliment.com
Peripheral
MCUx
IC1
Application
(Main God)
HW
IC2
Peripheral
<use>
<use>
<use>
<use>
<use>
MCUx
Family
Cross-
Compiler
ADCs
SFRs
SPECIAL
FUNCTION
REGISTERS
GPIOs
SFRs
TMRs
SFRs
I2Cs
SFRs
SPIs
SFRs
Making It Work: Main God
.francliment.com
Making It Work: Cross-Compiler ‘aids’
.francliment.com
Peripheral
MCUx
IC1
Application
(Main God)
HW
IC2
Peripheral
<use>
<use>
<use>
<use>
<use>
MCUx
Family
Cross-
Compiler
Hardware
Components
ADCs
SFRs
SPECIAL
FUNCTION
REGISTERS
GPIOs
SFRs
TMRs
SFRs
I2Cs
SFRs
SPIs
SFRs
Making It Work: Main God
.francliment.com
Peripheral
MCUx
IC1
Application
(Main God)
HW
IC2
Peripheral
<use>
<use>
<use>
<use>
<use>
MCUx
Family
Cross-
Compiler
Hardware
Components
Hardware
Layout
ADCs
SFRs
SPECIAL
FUNCTION
REGISTERS
GPIOs
SFRs
TMRs
SFRs
I2Cs
SFRs
SPIs
SFRs
Making It Work: Main God
.francliment.com
Peripheral
MCUx
IC1
Application
(Main God)
IC2
Peripheral
<use>
<use>
<use>
<use>
<use>
MCUx
Family
Cross-
Compiler
Hardware
Components
HW
MCU & HW PLATFORM
FIRMWARE
ADCs
SFRs
SPECIAL
FUNCTION
REGISTERS
GPIOs
SFRs
TMRs
SFRs
I2Cs
SFRs
SPIs
SFRs
Hardware
Layout
Making It Work: Main God
.francliment.com
Peripheral
MCUx
IC1
Application
(Main God)
IC2
Peripheral
<use>
<use>
<use>
<use>
<use>
MCUx
Family
Cross-
Compiler
Hardware
Components
HW
MCU & HW PLATFORM
FIRMWARE
D
S
O
I
ADCs
SFRs
SPECIAL
FUNCTION
REGISTERS
GPIOs
SFRs
TMRs
SFRs
I2Cs
SFRs
SPIs
SFRs
Hardware
Layout
Making It Work: Main God
Layers
LAYERS
.francliment.com
.francliment.com
Peripheral
MCUx
IC1
IC
DRIVERS
App
IC
DRIVERS
IC2
Peripheral
Evolution: The Drivers Layer
BUSSINESS
LOGIC
ADCs
SFRs
SPECIAL
FUNCTION
REGISTERS
GPIOs
SFRs
TMRs
SFRs
I2Cs
SFRs
SPIs
SFRs
HW
.francliment.com
Peripheral
MCUx
IC1
App
IC
DRIVERS
IC2
Peripheral
BUSSINESS
LOGIC
IC1
Driver
ADCs
SFRs
SPECIAL
FUNCTION
REGISTERS
GPIOs
SFRs
TMRs
SFRs
I2Cs
SFRs
SPIs
SFRs
HW
Evolution: The Drivers Layer
IC
DRIVERS
.francliment.com
Peripheral
MCUx
IC1
App
IC
DRIVERS
IC2
Peripheral
BUSSINESS
LOGIC
IC1
Driver
ADCs
SFRs
SPECIAL
FUNCTION
REGISTERS
GPIOs
SFRs
TMRs
SFRs
I2Cs
SFRs
SPIs
SFRs
<use>
HW
Evolution: The Drivers Layer
IC
DRIVERS
.francliment.com
Peripheral
MCUx
IC1
App
IC
DRIVERS
IC2
Peripheral
BUSSINESS
LOGIC
IC1
Driver
ADCs
SFRs
SPECIAL
FUNCTION
REGISTERS
GPIOs
SFRs
TMRs
SFRs
I2Cs
SFRs
SPIs
SFRs
<use>
HW
Evolution: The Drivers Layer
MCUx
Family
Cross-
Compiler
IC
DRIVERS
.francliment.com
Peripheral
MCUx
IC1
App
IC
DRIVERS
IC2
Peripheral
BUSSINESS
LOGIC
IC1
Driver
D
ADCs
SFRs
SPECIAL
FUNCTION
REGISTERS
GPIOs
SFRs
TMRs
SFRs
I2Cs
SFRs
SPIs
SFRs
<use>
HW
Evolution: The Drivers Layer
MCUx
Family
Cross-
Compiler
IC
DRIVERS
.francliment.com
Peripheral
MCUx
IC1
App
IC
DRIVERS
IC2
Peripheral
BUSSINESS
LOGIC
<use>
IC1
Driver
D
ADCs
SFRs
SPECIAL
FUNCTION
REGISTERS
GPIOs
SFRs
TMRs
SFRs
I2Cs
SFRs
SPIs
SFRs
<use>
HW
Evolution: The Drivers Layer
MCUx
Family
Cross-
Compiler
IC
DRIVERS
.francliment.com
Peripheral
MCUx
IC1
App
IC
DRIVERS
IC2
Peripheral
BUSSINESS
LOGIC
Hardware
Components
<use>
IC1
Driver
D
ADCs
SFRs
SPECIAL
FUNCTION
REGISTERS
GPIOs
SFRs
TMRs
SFRs
I2Cs
SFRs
SPIs
SFRs
<use>
HW
Evolution: The Drivers Layer
MCUx
Family
Cross-
Compiler
IC
DRIVERS
.francliment.com
Peripheral
MCUx
IC1
App
IC
DRIVERS
IC2
Peripheral
BUSSINESS
LOGIC
D
Hardware
Components
<use>
IC1
Driver
D
ADCs
SFRs
SPECIAL
FUNCTION
REGISTERS
GPIOs
SFRs
TMRs
SFRs
I2Cs
SFRs
SPIs
SFRs
<use>
HW
Evolution: The Drivers Layer
MCUx
Family
Cross-
Compiler
IC
DRIVERS
.francliment.com
Peripheral
MCUx
IC1
App
IC
DRIVERS
IC2
Peripheral
BUSSINESS
LOGIC
D
O
Hardware
Components
<use>
IC1
Driver
D
ADCs
SFRs
SPECIAL
FUNCTION
REGISTERS
GPIOs
SFRs
TMRs
SFRs
I2Cs
SFRs
SPIs
SFRs
<use>
HW
Evolution: The Drivers Layer
MCUx
Family
Cross-
Compiler
IC
DRIVERS
.francliment.com
Peripheral
MCUx
IC1
App
IC
DRIVERS
IC2
Peripheral
BUSSINESS
LOGIC
D
O
Hardware
Components
‘Components’
Firmware
MCU
Firmware
<use>
IC1
Driver
D
ADCs
SFRs
SPECIAL
FUNCTION
REGISTERS
GPIOs
SFRs
TMRs
SFRs
I2Cs
SFRs
SPIs
SFRs
<use>
HW
Evolution: The Drivers (Illusion) Layer
MCUx
Family
Cross-
Compiler
IC
DRIVERS
.francliment.com
• No long life SW (Domain, Application or Business Entities?)
• Nothing is modular or reusable
• Impossible to test any part in isolation
• Manual testing/debugging.
• Expensive and hardly repeatable ‘process’
Making It Work: MCU & HW PLATFORM FIRMWARE
PROBLEMS (common):
ALL EVIL SEEDS:
• Fragile
• Immobile
• Needless complexity
• Needless repetition
• Opaque
• Rigid
.francliment.com
PROBLEMS (Ditto due to being embedded):
• Expensive & scarce powering, input generation and output measurement
equipment is needed
Source: https://www.appliedinnovationalliance.com/wp-content/uploads/2017/12/Bottleneck-1.png
• Compiles only with the selected cross-compiler
• Executes only under an specific MCU family (MCUx)
• Runs only under an specific hardware platform (PCB assembly)
Making It Work: MCU & HW PLATFORM FIRMWARE
Hardware
Bottleneck
.francliment.com
Source: https://www.eetindia.co.in/engineers-in-the-covid-19-era/
Embedded Stockholm Syndrome
.francliment.com
Peripheral
IC1
IC2
Peripheral
MCUx
Embedded
CODE
(SW // FW)
Hardware Bottleneck problems: Defect localization
ADCs
SFRs
SPECIAL
FUNCTION
REGISTERS
GPIOs
SFRs
TMRs
SFRs
I2Cs
SFRs
SPIs
SFRs
HW
GROUP
FW
GROUP
When new code is tested directly on Hardware (Debug on Hardware) and it does not
work as expected…
Where is the problem located?,
Is it HW?, is it FW?, both?
FW ERROR HW ERROR
.francliment.com
EMBEDDED TEAM?
Hardware Bottleneck problems: Defect localization
.francliment.com
Example: Microelectronics M28W160ECT (16MB flash) Driver
Hardware Bottleneck problems: Untested behaviors
.francliment.com
Example: Microelectronics M28W160ECT (16MB flash) Driver
Hardware Bottleneck problems: Untested behaviors
HAPPY PATH
.francliment.com
Example: Microelectronics M28W160ECT (16MB flash) Driver
Hardware Bottleneck problems: Untested behaviors
HAPPY PATH
SAD PATH
.francliment.com
Example: Microelectronics M28W160ECT (16MB flash) Driver
Hardware Bottleneck problems: Untested behaviors
HAPPY PATH
SAD PATH
How do we test these
situations on the HW?
.francliment.com
Example: Microelectronics M28W160ECT (16MB flash) Driver
Hardware Bottleneck problems: Untested behaviors
HAPPY PATH
SAD PATH
How do we test these
situations on the HW?
.francliment.com
Hardware Bottleneck problems: Untested behaviors
.francliment.com
Hardware Bottleneck problems: Untested behaviors
.francliment.com
Hardware Bottleneck problems: Untested behaviors
About Testing Anti-patterns:
https://marabesi.com/tdd/2021/08/28/tdd-anti-patterns.html
It ‘Works’… finally?
.francliment.com
BRING-UP
“Starting from
nowhere, we have
reached the
highest levels of
misery …”
.francliment.com
WHY?
#TRAPs
.francliment.com
VENDOR’s
#TRAP
.francliment.com
Embedded Traps: Vendor’s partnership
.francliment.com
Vendor’s IDEs, frameworks, utilities, toolchains,
libraries… MUST BE low level details properly
hidden & decoupled from our application
Embedded Traps: Vendor’s partnership
.francliment.com
The vendor is NOT our partner
Vendor’s IDEs, frameworks, utilities, toolchains,
libraries… MUST BE low level details properly
hidden & decoupled from our application
Embedded Traps: Vendor’s partnership
.francliment.com
The vendor is NOT our partner
Vendor’s IDEs, frameworks, utilities, toolchains,
libraries… MUST BE low level details properly
hidden & decoupled from our application
Embedded Traps: Vendor’s partnership
The running processor is a low level DETAIL
.francliment.com
Embedded Traps: Vendor’s partnership
Source: https://www.bangkokpost.com/business/2117491/the-chips-are-down
COMPLIANCE MINDSET
#TRAP
.francliment.com
Embedded Traps: Compliance Mindset
.francliment.com
New features,
Added functionality
Architectural,
Structural features
Defects
Technical Debt
Positive
Value
Negative
Value
Value
Visibility
Invisible Visible
Quality as 4 quadrants
.francliment.com
New features,
Added functionality
Architectural,
Structural features
Defects
Technical Debt
Positive
Value
Negative
Value
Value
Visibility
Invisible Visible
Quality as 4 quadrants
External
Quality
.francliment.com
External Quality: Defects & BIT level sensitivity
Arianne 5: ‘A 40 seconds flight’
.francliment.com
External Quality: Defects & BIT level sensitivity
https://hackaday.com/2015/10/26/killed-by-
a-machine-the-therac-25/
Teradyne-25
Therac-25
‘extra-dose’
Source: https://hackaday.com/2015/10/26/killed-
by-a-machine-the-therac-25/
Source: http://www.eetimes.com/document.asp?doc_id=1319903&page_number=1
.francliment.com
External Quality: Defects & BIT level sensitivity
.francliment.com
• ISO 26262 for automotive electric/electronic systems.
• EN 50128 for railway applications.
• IEC 62304 for medical devices.
• IEC 62061 for machinery systems.
IEC 61508
Functional safety of electrical/electronic/programmable
electronic safety-related systems
Embedded Traps: Compliance Mindset
.francliment.com
Table B.2 – Dynamic analysis and testing
IEC 61508: Code Coverage
.francliment.com
Table B.2 – Dynamic analysis and testing
IEC 61508: Code Coverage
.francliment.com
Mutation Testing Intro
Automated fault injection
technique aimed to find
counterexamples to this
conjecture:
“Our test suite is
comprehensive because
it has 100% code
coverage”
Mutation Testing Example: Uncovered code
.francliment.com
Mutation Testing Example: Uncovered code
.francliment.com
.francliment.com
“Code coverage is an useless metric”
Fallacies & Mantras: Code coverage utility
.francliment.com
Table B.2 – Dynamic analysis and testing
IEC 61508: Code Coverage
.francliment.com
Table B.2 – Dynamic analysis and testing
IEC 61508: Code Coverage
Mutation Testing Example: The whispering mutants
.francliment.com
.francliment.com
Mutation Testing Example: The missing cornercase
.francliment.com
Source: https://www.researchgate.net/publication/317160803_An_empirical_study_on_the_application_of_mutation_testing_for_a_safety-critical_industrial_software_system
Compliance Mindset Example (I)
.francliment.com
Source: https://www.researchgate.net/publication/317160803_An_empirical_study_on_the_application_of_mutation_testing_for_a_safety-critical_industrial_software_system
External quality
Compliance Mindset Example (II): Results
.francliment.com
Source: https://www.researchgate.net/publication/317160803_An_empirical_study_on_the_application_of_mutation_testing_for_a_safety-critical_industrial_software_system
200 -------- 2
27.158 ---- X X = 271 faults!
External quality
Compliance Mindset Example (II): Results
.francliment.com
“Code coverage is a harmful metric”
Fallacies & Mantras: Code coverage utility
TAKEAWAYS
.francliment.com
Takeaways
.francliment.com
Takeaways: Professional Attitude
Cheating the metrics is a sign
of bigger cultural problems
.francliment.com
Source: http://knowreqts.yolasite.com/resources/2.20%20%20Empirical%20Evaluation.pdf
Compliance Mindset Example (II)
.francliment.com
Source: http://knowreqts.yolasite.com/resources/2.20%20%20Empirical%20Evaluation.pdf
Compliance Mindset Example (II)
.francliment.com
Takeaways: Better protect yourself
Nobody but the organization itself
is going to take care about its
reputation, development,
aftersales and health costs
DEVIATED FOCUS
#TRAP
.francliment.com
Common Traps: Deviated Focus
.francliment.com
New features,
Added functionality
Architectural,
Structural features
Defects
Technical Debt
Positive
Value
Negative
Value
Visibility
Invisible Visible
External
Quality
External Quality is only an effect …
Value
1. Make It Work
.francliment.com
https://www.eetindia.co.in/engineers-in-the-covid-19-era/
Development as 3 strategic steps
Red
Green
Refactor
Focused in understanding how to solve the problem, not about
engineering the code right
1. Make It Work
.francliment.com
https://www.eetindia.co.in/engineers-in-the-covid-19-era/
Development as 3 strategic steps
Red
Green
Refactor
Make It Work
Focused in understanding how to solve the problem, not about
engineering the code right
1. Make It Work
.francliment.com
https://www.eetindia.co.in/engineers-in-the-covid-19-era/
Development as 3 strategic steps
Red
Green
Refactor
Make It Work
KISS: Keep It Simple, Stupid
YAGNI: You Aren’t Gonna Need It
Focused in understanding how to solve the problem, not about
engineering the code right
1. Make It Work
.francliment.com
https://www.eetindia.co.in/engineers-in-the-covid-19-era/
Development as 3 strategic steps
Red
Green
Refactor
Make It Work
KISS: Keep It Simple, Stupid
YAGNI: You Aren’t Gonna Need It
“All sins are allowed”
Focused in understanding how to solve the problem, not about
engineering the code right
Red
Green
Refactor
2. Make It Right
.francliment.com
https://www.eetindia.co.in/engineers-in-the-covid-19-era/
Development as 3 strategic steps
Engineer and craft the code right to make it easy to
understand, maintain and evolve
Make It Work
KISS: Keep It Simple, Stupid
YAGNI: You Aren’t Gonna Need It
“All sins are allowed”
Red
Green
Refactor
2. Make It Right
.francliment.com
Development as 3 strategic steps
Engineer and craft the code right to make it easy to
understand, maintain and evolve
Make It Work
Make It Right
KISS: Keep It Simple, Stupid
YAGNI: You Aren’t Gonna Need It
“All sins are allowed”
Test code only
DAMP : Descriptive And
Maintainable Procedures
2
KISS : Keep it Simple, Stupid
1
DRY : Don’t Repeat Yourself
1
2
Production code only
1
Red
Green
Refactor
2. Make It Right
.francliment.com
https://www.eetindia.co.in/engineers-in-the-covid-19-era/
Development as 3 strategic steps
Engineer and craft the code right to make it easy to
understand, maintain and evolve
Make It Work
Make It Right
KISS: Keep It Simple, Stupid
YAGNI: You Aren’t Gonna Need It
“All sins are allowed”
Test code only
DAMP : Descriptive And
Maintainable Procedures
2
KISS : Keep it Simple, Stupid
1
DRY : Don’t Repeat Yourself
1
2
Production code only
1
Simple Design,
SOLID,
Design Patterns…
Internal
Quality
.francliment.com
New features,
Added functionality
Architectural,
Structural features
Defects
Technical Debt
Positive
Value
Negative
Value
Visibility
Invisible Visible
External
Quality
Value
Quality comes from inside
.francliment.com
How does Internal Quality looks like?
.francliment.com
Source: https://www.researchgate.net/publication/317160803_An_empirical_study_on_the_application_of_mutation_testing_for_a_safety-critical_industrial_software_system
X = 271 faults!
External quality
How does Internal Quality looks like?
.francliment.com
Source: https://www.researchgate.net/publication/317160803_An_empirical_study_on_the_application_of_mutation_testing_for_a_safety-critical_industrial_software_system
X = 271 faults!
Internal quality
External quality
How does Internal Quality looks like?
.francliment.com
Source: https://www.researchgate.net/publication/317160803_An_empirical_study_on_the_application_of_mutation_testing_for_a_safety-critical_industrial_software_system
X = 271 faults!
Internal quality
External quality
How does Internal Quality looks like?
S
.francliment.com
Source: https://www.researchgate.net/publication/317160803_An_empirical_study_on_the_application_of_mutation_testing_for_a_safety-critical_industrial_software_system
X = 271 faults!
Internal quality
External quality
How does Internal Quality looks like?
S
.francliment.com
Source: https://www.researchgate.net/publication/317160803_An_empirical_study_on_the_application_of_mutation_testing_for_a_safety-critical_industrial_software_system
X = 271 faults!
Internal quality
External quality
How does Internal Quality looks like?
.francliment.com
Source: https://www.researchgate.net/publication/317160803_An_empirical_study_on_the_application_of_mutation_testing_for_a_safety-critical_industrial_software_system
X = 271 faults!
Internal quality
External quality
How does Internal Quality looks like?
.francliment.com
“We can get the same benefits
following a Test-Later approach”
Fallacies & Mantras: Test-Later vs Test-First
.francliment.com
“We can get the same benefits
following a Test-Later approach”
Test-Later are testing techniques focused on
External Quality only
Fallacies & Mantras: Test-Later vs Test-First
.francliment.com
Takeaways: Quality is not coffe sugar
― Harold F. Dodge
“Inspection does not improve the quality,
nor guarantee quality.
Inspection is too late.
The quality, good or bad, is already in the product”
.francliment.com
What about Agile/Xp in safety-related environments?
3. Make It Fast
.francliment.com
https://www.eetindia.co.in/engineers-in-the-covid-19-era/
Development as 3 strategic steps
Make It Right
Fulfill timing requirements
GLOBAL PERFORMANCE
PRE-OPTIMIZATION
#TRAP
.francliment.com
Embedded Trap: Nedless performance
.francliment.com
“Even if you know exactly what is going on in your system,
measure performance, don’t speculate.
You will learn something, and 9 times of 10, it won’t
be that you were right!”
― Ron Jeffries, Refactoring: Improving the Design of
Existing Code [Fowler]
Embedded Trap: Nedless performance
3. Make It Fast (enough)
.francliment.com
https://www.eetindia.co.in/engineers-in-the-covid-19-era/
Development as 3 strategic steps
Make It Work
Make It Right
Fulfill timing requirements (only when & where are really
needed).
3. Make It Fast (enough)
.francliment.com
https://www.eetindia.co.in/engineers-in-the-covid-19-era/
Development as 3 strategic steps
Red
Green
Refactor
Make It Work
Make It Right
Fulfill timing requirements (only when & where are really
needed).
1. Add the timing spec
3. Make It Fast (enough)
.francliment.com
https://www.eetindia.co.in/engineers-in-the-covid-19-era/
Development as 3 strategic steps
Red
Green
Refactor
2. Make It Work
Make It Right
Fulfill timing requirements (only when & where are really
needed).
1. Add the timing spec
KISS: Keep It Simple, Stupid
YAGNI: You Aren’t Gonna Need It
“All sins are allowed”
3. Make It Fast (enough)
.francliment.com
https://www.eetindia.co.in/engineers-in-the-covid-19-era/
Development as 3 strategic steps
Red
Green
Refactor
2. Make It Work
Make It Right
Fulfill timing requirements (only when & where are really
needed).
1. Add the timing spec
KISS: Keep It Simple, Stupid
YAGNI: You Aren’t Gonna Need It
“All sins are allowed”
Test code only
DAMP : Descriptive And
Maintainable Procedures
2
KISS : Keep it Simple, Stupid
1
DRY : Don’t Repeat Yourself
1
2
Production code only
1
Simple Design,
SOLID,
Design Patterns…
.francliment.com
Takeaways: Right tunable software
“The secret of fast software is to write tunable
software first and then tune it for
sufficient speed”
― Martin Fowler, Refactoring: Improving the Design of
Existing Code
KNOWLEDGE & SKILLS
#TRAP
.francliment.com
Common Traps: Knowledge & Skills
.francliment.com
Common Traps: Knowledge & Skills
“The competent programmer is fully aware of the limited size of his
own skull. He therefore approaches his task with full humility, and
avoids clever tricks like the plague.”
— Edsger W. Dijkstra
.francliment.com
Source: https://www.eetindia.co.in/engineers-in-the-covid-19-era/
Moving the quality boundary forward
Making It Work,
Survival mode
Making It Right,
Professing engineering
.francliment.com
A new approach …
DevOps
OUTSIDE
Embedded
limits
Embedded TDD: Dual-Target work flow
.francliment.com
HOST DEVELOPMENT ENVIRONMENT
HOST BASED FLOW
Embedded TDD cycle
Source: “Test-Driven Development for Embedded C” book, James Greening
.francliment.com
HOST DEVELOPMENT ENVIRONMENT
HOST BASED FLOW
Generate
self-checking
specs
Embedded TDD cycle
Embedded TDD: Dual-Target work flow
Source: “Test-Driven Development for Embedded C” book, James Greening
Embedded TDD cycle
.francliment.com
HOST DEVELOPMENT ENVIRONMENT
HOST BASED FLOW
Generate
self-checking
specs
Embedded TDD: Dual-Target work flow
Fulfill the
specs
Source: “Test-Driven Development for Embedded C” book, James Greening
.francliment.com
HOST DEVELOPMENT ENVIRONMENT
HOST BASED FLOW
Generate
self-checking
specs
Fulfill the
specs
Improve the
solution
Embedded TDD cycle
Embedded TDD: Dual-Target work flow
Source: “Test-Driven Development for Embedded C” book, James Greening
.francliment.com
HOST DEVELOPMENT ENVIRONMENT
HOST BASED FLOW
Generate
self-checking
specs
Review results and metrics
Embedded TDD cycle
Embedded TDD: Dual-Target work flow
Fulfill the
specs
Improve the
solution
Source: “Test-Driven Development for Embedded C” book, James Greening
.francliment.com
HOST DEVELOPMENT ENVIRONMENT
HOST BASED FLOW
Generate
self-checking
specs
Review results and metrics
Embedded TDD cycle
Cadence: 1 min
Embedded TDD: Dual-Target work flow
Fulfill the
specs
Improve the
solution
Source: “Test-Driven Development for Embedded C” book, James Greening
Embedded TDD cycle
.francliment.com
HOST DEVELOPMENT ENVIRONMENT
HOST BASED FLOW
TARGET BASED FLOW
Generate
self-checking
specs
Review results and metrics
Embedded TDD: Dual-Target work flow
Fulfill the
specs
Improve the
solution
Source: “Test-Driven Development for Embedded C” book, James Greening
Embedded TDD cycle
.francliment.com
HOST DEVELOPMENT ENVIRONMENT
HOST BASED FLOW
TARGET BASED FLOW
Generate
self-checking
specs
Cross
compile
Review results and metrics
Embedded TDD: Dual-Target work flow
Fulfill the
specs
Improve the
solution
Source: “Test-Driven Development for Embedded C” book, James Greening
Embedded TDD cycle
.francliment.com
HOST DEVELOPMENT ENVIRONMENT
HOST BASED FLOW
TARGET BASED FLOW
Generate
self-checking
specs
Cross
compile
Eval Hardware
Review results and metrics
Embedded TDD: Dual-Target work flow
Fulfill the
specs
Improve the
solution
Source: “Test-Driven Development for Embedded C” book, James Greening
Embedded TDD cycle
.francliment.com
HOST DEVELOPMENT ENVIRONMENT
HOST BASED FLOW
TARGET BASED FLOW
Generate
self-checking
specs
Cross
compile
Eval Hardware
Review results and metrics
Embedded TDD: Dual-Target work flow
Fulfill the
specs
Improve the
solution
Source: “Test-Driven Development for Embedded C” book, James Greening
Embedded TDD cycle
.francliment.com
HOST DEVELOPMENT ENVIRONMENT
HOST BASED FLOW
TARGET BASED FLOW
Generate
self-checking
specs
Cross
compile
MCU Simulator
Review results and metrics
Embedded TDD: Dual-Target work flow
Fulfill the
specs
Improve the
solution
Source: “Test-Driven Development for Embedded C” book, James Greening
Embedded TDD cycle
.francliment.com
Source: “Test-Driven Development for Embedded C” book, James Greening
HOST DEVELOPMENT ENVIRONMENT
HOST BASED FLOW
TARGET BASED FLOW
Generate
self-checking
specs
Cross
compile
MCU Simulator
Review results and metrics
Cadence: 5 min
Embedded TDD: Dual-Target work flow
Fulfill the
specs
Improve the
solution
.francliment.com
NO FEAR
Dual-Target Embedded TDD: Main Benefits
OUTSIDE
Embedded
limits
• Incrementally developed
• Comprehensively tested at least on two different platforms
• Fast feedback loop: courage to try & learn fast
.francliment.com
NO FEAR
Dual-Target Embedded TDD: Main Benefits
OUTSIDE
Embedded
limits
NO LIMITS
✓ Static analysis, rule checkers …
✓ Dynamic análisis: xUnit, mutation testing
✓ Continuous Integration / Continuous Testing
New tools finally avilable:
Working on
99% code base
HOST
- Static analysis (scan-build, sonarcube, …).
- Dynamic analysis:
- Unit testing (Ceedling + GCC + HOST execution)
- Integration testing (Ceedling + GCC + HOST execution)
- Mutation testing (Ceedling + GCC + Clang-AST)
- Metrics / Trends:
- Code coverage.
- Mutantes coverage
- Cyclomatic complexity
XC
.francliment.com
Dual-Target Continuous Integration / Continuous Testing
TARGET
- Dynamic analysis:
- Unit testing (Ceedling + XC + PIC (mdb) simulator)
- Integration testing (Ceedling + XC + PIC (mdb) simulator)
- Metrics / Trends:
- Target compilation warnings (Ceedling + XC, at project level).
- ROM & RAM used (Ceedling + XC, at project level).
- STACK used (Ceedling + XC, at project level).
XC
.francliment.com
Dual-Target Continuous Integration / Continuous Testing
.francliment.com
XC
Build result ‘#17- 44-modbus_controller’: UNSTABLE
Artifacts associated to build ‘#17- 44-modbus_controller
Changes associated to the push originating the build
‘#17- 44-modbus_controller
Coverage statistics for build
‘#17- 44-modbus_controller
function is_Synt_lock
@fraclipe
Tests results for build ‘#17- 44-modbus_controller
Warnings detected for build ‘#17- 44-modbus_controller
Warnings’ changes from last build
Identified probles for build
‘#17- 44-modbus_controller
Build Log
XC Warnings
44-modbus_controller #17 - 44-modbus_controller
modbus controller
Dual-Target Continuous Integration / Continuous Testing
.francliment.com
NO FEAR
Dual-Target Embedded TDD: Main Benefits
OUTSIDE
Embedded
limits
NO LIMITS
✓ Static analysis, rule checkers …
✓ Dynamic análisis: xUnit, mutation testing
✓ Continuous Integration / Continuous Testing
New tools finally avilable:
Working on
99% code base
Increased competitiviness:
✓ Fewer defects
✓ Development & lead time reduced
✓ Sustainable pace
✓ Anybody, anywhere, at any moment
✓ Improved talent acquisition and retention
✓ Better market adaptability through portable solutions
.francliment.com
NO FEAR
Dual-Target Embedded TDD: Main Benefits
OUTSIDE
Embedded
limits
NO LIMITS
NO EXCUSES
Complete portable solutions
Reusable modules
Domain Driven Embedded
Software
Make It Right
.francliment.com
Peripheral
MCUx
IC1
DRIVERS
App
HW
HARDWARE
COMPONENTS
IC2
Peripheral
Making It Right: Towards Reusable Drivers
BUSSINESS
LOGIC
D
O
<use>
IC1
Driver
ADCs
SFRs
SPECIAL
FUNCTION
REGISTERS
GPIOs
SFRs
TMRs
SFRs
I2Cs
SFRs
SPIs
SFRs
.francliment.com
Peripheral
MCUx
IC1
DRIVERS
App
P
A
L
IC2
Peripheral
D
O
BUSSINESS
LOGIC
<use>
IC1
Driver
ADCs
SFRs
SPECIAL
FUNCTION
REGISTERS
GPIOs
SFRs
TMRs
SFRs
I2Cs
SFRs
SPIs
SFRs
HW
Processor Abstraction Layer
Making It Right: Towards Reusable Drivers
HARDWARE
COMPONENTS
.francliment.com
Peripheral
MCUx
IC1
DRIVERS
App
P
A
L
HARDWARE
COMPONENTS
IC2
Peripheral
D
O
BUSSINESS
LOGIC
<use>
IC1
Driver
ADCs
SFRs
SPECIAL
FUNCTION
REGISTERS
GPIOs
SFRs
TMRs
SFRs
I2Cs
SFRs
SPIs
SFRs
HW
Making It Right: Towards Reusable Drivers
<use>
P
A
L
I
m
p
l
implements
.francliment.com
Peripheral
MCUx
IC1
DRIVERS
App
P
A
L
HARDWARE
COMPONENTS
IC2
Peripheral
D
O
BUSSINESS
LOGIC
<use>
IC1
Driver
ADCs
SFRs
SPECIAL
FUNCTION
REGISTERS
GPIOs
SFRs
TMRs
SFRs
I2Cs
SFRs
SPIs
SFRs
HW
Making It Right: Towards Reusable Drivers
<use>
P
A
L
I
m
p
l
implements
<use>
.francliment.com
Peripheral
MCUx
IC1
DRIVERS
App
P
A
L
HARDWARE
COMPONENTS
IC2
Peripheral
D
O
BUSSINESS
LOGIC
<use>
IC1
Driver
ADCs
SFRs
SPECIAL
FUNCTION
REGISTERS
GPIOs
SFRs
TMRs
SFRs
I2Cs
SFRs
SPIs
SFRs
HW
Making It Right: Towards Reusable Drivers
<use>
P
A
L
I
m
p
l
implements
<use>
MCUx
Family
.francliment.com
Peripheral
MCUx
IC1
DRIVERS
App
P
A
L
HARDWARE
COMPONENTS
IC2
Peripheral
D
O
BUSSINESS
LOGIC
<use>
IC1
Driver
ADCs
SFRs
SPECIAL
FUNCTION
REGISTERS
GPIOs
SFRs
TMRs
SFRs
I2Cs
SFRs
SPIs
SFRs
HW
Making It Right: Towards Reusable Drivers
<use>
P
A
L
I
m
p
l
implements
<use>
Cross-
Compiler
MCUx
Family
.francliment.com
Peripheral
MCUx
IC1
DRIVERS
App
P
A
L
HARDWARE
COMPONENTS
IC2
Peripheral
D
O
BUSSINESS
LOGIC
<use>
IC1
Driver
ADCs
SFRs
SPECIAL
FUNCTION
REGISTERS
GPIOs
SFRs
TMRs
SFRs
I2Cs
SFRs
SPIs
SFRs
HW
Making It Right: Towards Reusable Drivers
<use>
P
A
L
I
m
p
l
implements
<use>
FW
MCU
Firmware
Cross-
Compiler
MCUx
Family
ADCs
SFRs
SPECIAL
FUNCTION
REGISTERS
GPIOs
SFRs
TMRs
SFRs
I2Cs
SFRs
SPIs
SFRs
App
(SW)
S
Y
S
T
E
M
C
O
M
P
O
N
E
N
T
S
HW
MCU FW
HARDWARE
COMPONENTS
BUSSINESS
LOGIC
Software
S
Y
S
C
O
M
P
O
N
E
N
T
S
I
M
P
L
Components
Factory
<use>
P
A
L
<use>
<use>
<use>
<use>
<use>
P
A
L
I
M
P
L
M
C
U
x
implements
Test
Doubles
REUSABLE
IC
DRIVERS
ARRANGE/ASSERT
implements
<use>
IC
Drivers
Test
Suite
Making It Right: Reusable Drivers implementation (Dual-Targetted)
.francliment.com
ADCs
SFRs
SPECIAL
FUNCTION
REGISTERS
GPIOs
SFRs
TMRs
SFRs
I2Cs
SFRs
SPIs
SFRs
App
(SW)
S
Y
S
T
E
M
C
O
M
P
O
N
E
N
T
S
HW
MCU FW
HARDWARE
COMPONENTS
BUSSINESS
LOGIC
Software
S
Y
S
C
O
M
P
O
N
E
N
T
S
I
M
P
L
Components
Factory
<use>
P
A
L
<use>
<use>
<use>
<use>
<use>
P
A
L
I
M
P
L
M
C
U
x
implements
Test
Doubles
ARRANGE/ASSERT
ACT
implements
<use>
IC
Drivers
Test
Suite
Making It Right: Reusable Drivers implementation (Dual-Targetted)
.francliment.com
REUSABLE
IC
DRIVERS
.francliment.com
Takeaways: Reusable IC Drivers test suite goals
IC Drivers test suite GOALS
Capture our IC datasheet interpretation, allowing:
▪ Implement the IC Driver accordingly to it without introducing errors
▪ Hardware Bottleneck related uncertainties and delays removal
Making It Right: Reusable Drivers implementation (Dual-Targetted)
.francliment.com
.francliment.com
Making It Right: Reusable Drivers implementation (Dual-Targetted)
.francliment.com
TDDing Firmware
Making It Right: MCUx PAL implementation (Target only)
App
(SW)
S
Y
S
T
E
M
C
O
M
P
O
N
E
N
T
S
HARDWARE
ABSTRACTION
BUSSINESS
LOGIC
I
C
D
R
I
V
E
R
S
COMPONENTS
IMPLEMENTATION
(HWy)
Components
Factory
<use>
P
A
L
<use>
<use>
<use>
<use>
<use>
PAL
IMPLEMENTATION
(MCUx)
implements implements
PAL ASSERTS
Step Spied
PAL implements
PAL
MCUx
ASSERTS
ARRANGE
ACT
ASSERT
implements
PAL Test
Suite
MCU FW
PAL Spies PAL
MCUx SPIES
implements
ARRANGE
HW
<use>
<read>
ADCs
SFRs
SPECIAL
FUNCTION
REGISTERS
GPIOs
SFRs
TMRs
SFRs
I2Cs
SFRs
SPIs
SFRs
Step
Spied
MCUx
PAL
<use>
<read>
Making It Right: MCUx PAL implementation (Target only)
.francliment.com
PAL production code example: ADC reading independent of MCU
.francliment.com
.francliment.com
Takeaways: MCU PAL test suite goals
MCU PAL test suite GOALS
Capture our MCU datasheet interpretation, allowing:
▪ Implement its PAL accordingly to it without introducing errors.
▪ Use the MCU in our solution.
▪ Hardware Bottleneck related uncertainties and delays removal.
App
(SW)
HW
HARDWARE
COMPONENTS
BUSSINESS
LOGIC
I
C
D
R
I
V
E
R
S
P
A
L
<use>
<use>
<use>
PAL
IMPLEMENTATION
(MCUx)
implements
MCU FW
ADCs
SFRs
SPECIAL
FUNCTION
REGISTERS
GPIOs
SFRs
TMRs
SFRs
I2Cs
SFRs
SPIs
SFRs
D
O
Making It Right: Towards Embedded Business Software
.francliment.com
App
(SW)
S
Y
S
T
E
M
C
O
M
P
O
N
E
N
T
S
HW
HARDWARE
ABSTRACTION
BUSSINESS
LOGIC
I
C
D
R
I
V
E
R
S
P
A
L
<use>
<use>
<use>
PAL
IMPLEMENTATION
(MCUx)
implements
MCU FW
ADCs
SFRs
SPECIAL
FUNCTION
REGISTERS
GPIOs
SFRs
TMRs
SFRs
I2Cs
SFRs
SPIs
SFRs
Making It Right: Towards Embedded Business Software
.francliment.com
App
(SW)
S
Y
S
T
E
M
C
O
M
P
O
N
E
N
T
S
HW
HARDWARE
ABSTRACTION
BUSSINESS
LOGIC
I
C
D
R
I
V
E
R
S
P
A
L
<use>
<use>
<use>
PAL
IMPLEMENTATION
(MCUx)
implements
MCU FW
COMPONENTS
IMPLEMENTATION
(HWy)
implements
ADCs
SFRs
SPECIAL
FUNCTION
REGISTERS
GPIOs
SFRs
TMRs
SFRs
I2Cs
SFRs
SPIs
SFRs
Making It Right: Towards Embedded Business Software
.francliment.com
App
(SW)
S
Y
S
T
E
M
C
O
M
P
O
N
E
N
T
S
HW
HARDWARE
ABSTRACTION
BUSSINESS
LOGIC
I
C
D
R
I
V
E
R
S
P
A
L
<use>
<use>
<use>
PAL
IMPLEMENTATION
(MCUx)
implements
MCU FW
COMPONENTS
IMPLEMENTATION
(HWy)
implements
ADCs
SFRs
SPECIAL
FUNCTION
REGISTERS
GPIOs
SFRs
TMRs
SFRs
I2Cs
SFRs
SPIs
SFRs
Making It Right: Towards Embedded Business Software
.francliment.com
TempSensor
STH11
based
App
(SW)
S
Y
S
T
E
M
C
O
M
P
O
N
E
N
T
S
HW
HARDWARE
ABSTRACTION
BUSSINESS
LOGIC
I
C
D
R
I
V
E
R
S
P
A
L
<use>
<use>
<use>
PAL
IMPLEMENTATION
(MCUx)
implements
MCU FW
COMPONENTS
IMPLEMENTATION
(HWy)
implements
<use>
ADCs
SFRs
SPECIAL
FUNCTION
REGISTERS
GPIOs
SFRs
TMRs
SFRs
I2Cs
SFRs
SPIs
SFRs
Making It Right: Towards Embedded Business Software
.francliment.com
TempSensor
STH11
based
App
(SW)
S
Y
S
T
E
M
C
O
M
P
O
N
E
N
T
S
HW
HARDWARE
ABSTRACTION
BUSSINESS
LOGIC
I
C
D
R
I
V
E
R
S
P
A
L
<use>
<use>
<use>
PAL
IMPLEMENTATION
(MCUx)
implements
MCU FW
COMPONENTS
IMPLEMENTATION
(HWy)
implements
TempSensor
STH11
based
<use>
PCB
Components
ADCs
SFRs
SPECIAL
FUNCTION
REGISTERS
GPIOs
SFRs
TMRs
SFRs
I2Cs
SFRs
SPIs
SFRs
Making It Right: Towards Embedded Business Software
.francliment.com
App
(SW)
S
Y
S
T
E
M
C
O
M
P
O
N
E
N
T
S
HW
HARDWARE
ABSTRACTION
BUSSINESS
LOGIC
I
C
D
R
I
V
E
R
S
COMPONENTS
IMPLEMENTATION
(HWy)
Components
Factory
P
A
L
<use>
<use>
<use>
<use>
<use>
PAL
IMPLEMENTATION
(MCUx)
implements implements
<use>
MCU FW
<use>
ADCs
SFRs
SPECIAL
FUNCTION
REGISTERS
GPIOs
SFRs
TMRs
SFRs
I2Cs
SFRs
SPIs
SFRs
Making It Right: Final architecture
.francliment.com
Making It Right: Let’s for business
BUSINESS
APPLICATION
DEVELOPMENT
.francliment.com
ADCs
SFRs
SPECIAL
FUNCTION
REGISTERS
GPIOs
SFRs
TMRs
SFRs
I2Cs
SFRs
SPIs
SFRs
S
Y
S
T
E
M
C
O
M
P
O
N
E
N
T
S
HW
HARDWARE
ABSTRACTION
BUSSINESS
LOGIC
I
C
D
R
I
V
E
R
S
Components
Factory
P
A
L
<use>
PAL
IMPLEMENTATION
(MCUx)
S
Y
S
C
O
M
P
O
N
E
N
T
S
I
M
P
L
App
(SW)
Test Doubles
MCU FW
Making It Right: Developing Embedded Business Software
Application
Test Suite
.francliment.com
ADCs
SFRs
SPECIAL
FUNCTION
REGISTERS
GPIOs
SFRs
TMRs
SFRs
I2Cs
SFRs
SPIs
SFRs
S
Y
S
T
E
M
C
O
M
P
O
N
E
N
T
S
HW
HARDWARE
ABSTRACTION
BUSSINESS
LOGIC
I
C
D
R
I
V
E
R
S
Components
Factory
P
A
L
<use>
PAL
IMPLEMENTATION
(MCUx)
S
Y
S
C
O
M
P
O
N
E
N
T
S
I
M
P
L
Test Doubles
MCU FW
Making It Right: Developing Embedded Business Software
Application
Test Suite
.francliment.com
ARRANGE
SYSTEM ARRANGES
App
(SW)
ADCs
SFRs
SPECIAL
FUNCTION
REGISTERS
GPIOs
SFRs
TMRs
SFRs
I2Cs
SFRs
SPIs
SFRs
S
Y
S
T
E
M
C
O
M
P
O
N
E
N
T
S
HW
HARDWARE
ABSTRACTION
BUSSINESS
LOGIC
I
C
D
R
I
V
E
R
S
Components
Factory
P
A
L
<use>
PAL
IMPLEMENTATION
(MCUx)
S
Y
S
C
O
M
P
O
N
E
N
T
S
I
M
P
L
Test Doubles
MCU FW
Making It Right: Developing Embedded Business Software
Application
Test Suite
.francliment.com
ARRANGE
SYSTEM ARRANGES
SYSTEM x
ARRANGES
App
(SW)
ADCs
SFRs
SPECIAL
FUNCTION
REGISTERS
GPIOs
SFRs
TMRs
SFRs
I2Cs
SFRs
SPIs
SFRs
S
Y
S
T
E
M
C
O
M
P
O
N
E
N
T
S
HW
HARDWARE
ABSTRACTION
BUSSINESS
LOGIC
I
C
D
R
I
V
E
R
S
Components
Factory
P
A
L
<use>
PAL
IMPLEMENTATION
(MCUx)
S
Y
S
C
O
M
P
O
N
E
N
T
S
I
M
P
L
Test Doubles
MCU FW
Making It Right: Developing Embedded Business Software
Application
Test Suite
.francliment.com
ARRANGE
SYSTEM ARRANGES
SYSTEM x
ARRANGES <instantiate>
App
(SW)
ADCs
SFRs
SPECIAL
FUNCTION
REGISTERS
GPIOs
SFRs
TMRs
SFRs
I2Cs
SFRs
SPIs
SFRs
S
Y
S
T
E
M
C
O
M
P
O
N
E
N
T
S
HW
HARDWARE
ABSTRACTION
BUSSINESS
LOGIC
I
C
D
R
I
V
E
R
S
Components
Factory
P
A
L
<use>
PAL
IMPLEMENTATION
(MCUx)
S
Y
S
C
O
M
P
O
N
E
N
T
S
I
M
P
L
Test Doubles
MCU FW
Making It Right: Developing Embedded Business Software
Application
Test Suite
.francliment.com
App
Test-
Instrumented
ARRANGE
App
(SW)
ARRANGE
SYSTEM ARRANGES
SYSTEM x
ARRANGES <instantiate>
ADCs
SFRs
SPECIAL
FUNCTION
REGISTERS
GPIOs
SFRs
TMRs
SFRs
I2Cs
SFRs
SPIs
SFRs
S
Y
S
T
E
M
C
O
M
P
O
N
E
N
T
S
HW
HARDWARE
ABSTRACTION
BUSSINESS
LOGIC
I
C
D
R
I
V
E
R
S
Components
Factory
P
A
L
<use>
PAL
IMPLEMENTATION
(MCUx)
S
Y
S
C
O
M
P
O
N
E
N
T
S
I
M
P
L
SYSTEM ASSERTS
ASSERT
Test Doubles
MCU FW
Making It Right: Developing Embedded Business Software
Application
Test Suite
.francliment.com
App
Test-
Instrumented
ARRANGE
ARRANGE
SYSTEM ARRANGES
App
(SW)
SYSTEM x
ARRANGES <instantiate>
ADCs
SFRs
SPECIAL
FUNCTION
REGISTERS
GPIOs
SFRs
TMRs
SFRs
I2Cs
SFRs
SPIs
SFRs
S
Y
S
T
E
M
C
O
M
P
O
N
E
N
T
S
HW
HARDWARE
ABSTRACTION
BUSSINESS
LOGIC
I
C
D
R
I
V
E
R
S
Components
Factory
P
A
L
<use>
PAL
IMPLEMENTATION
(MCUx)
S
Y
S
C
O
M
P
O
N
E
N
T
S
I
M
P
L
App
(SW)
SYSTEM ASSERTS
ASSERT
Test Doubles
MCU FW
Making It Right: Developing Embedded Business Software
Application
Test Suite
.francliment.com
SYSTEM x
ASSERTS
App
Test-
Instrumented
ARRANGE
ARRANGE
SYSTEM ARRANGES
SYSTEM x
ARRANGES <instantiate>
ADCs
SFRs
SPECIAL
FUNCTION
REGISTERS
GPIOs
SFRs
TMRs
SFRs
I2Cs
SFRs
SPIs
SFRs
S
Y
S
T
E
M
C
O
M
P
O
N
E
N
T
S
HW
HARDWARE
ABSTRACTION
BUSSINESS
LOGIC
I
C
D
R
I
V
E
R
S
Components
Factory
P
A
L
<use>
PAL
IMPLEMENTATION
(MCUx)
S
Y
S
C
O
M
P
O
N
E
N
T
S
I
M
P
L
App
(SW)
SYSTEM ASSERTS
ASSERT
Test Doubles
MCU FW
Making It Right: Developing Embedded Business Software
Application
Test Suite
.francliment.com
SYSTEM x
ASSERTS
App
Test-
Instrumented
ARRANGE
ARRANGE
SYSTEM ARRANGES
SYSTEM x
ARRANGES <instantiate>
<use>
ADCs
SFRs
SPECIAL
FUNCTION
REGISTERS
GPIOs
SFRs
TMRs
SFRs
I2Cs
SFRs
SPIs
SFRs
S
Y
S
T
E
M
C
O
M
P
O
N
E
N
T
S
HW
HARDWARE
ABSTRACTION
BUSSINESS
LOGIC
I
C
D
R
I
V
E
R
S
Components
Factory
P
A
L
<use>
PAL
IMPLEMENTATION
(MCUx)
S
Y
S
C
O
M
P
O
N
E
N
T
S
I
M
P
L
SYSTEM ASSERTS
ASSERT
Test Doubles
MCU FW
Making It Right: Developing Embedded Business Software
Application
Test Suite
.francliment.com
SYSTEM x
ASSERTS <use>
App
Test-
Instrumented
ARRANGE
ARRANGE
SYSTEM ARRANGES
SYSTEM x
ARRANGES <instantiate>
App
(SW)
ACT
ADCs
SFRs
SPECIAL
FUNCTION
REGISTERS
GPIOs
SFRs
TMRs
SFRs
I2Cs
SFRs
SPIs
SFRs
S
Y
S
T
E
M
C
O
M
P
O
N
E
N
T
S
HW
HARDWARE
ABSTRACTION
BUSSINESS
LOGIC
I
C
D
R
I
V
E
R
S
Components
Factory
P
A
L
<use>
PAL
IMPLEMENTATION
(MCUx)
ARRANGE
App
Test-
Instrumented
S
Y
S
C
O
M
P
O
N
E
N
T
S
I
M
P
L
ARRANGE
ACT
App
(SW)
SYSTEM ASSERTS
SYSTEM ARRANGES
SYSTEM x
ARRANGES
ASSERT
SYSTEM x
ASSERTS
Test Doubles
<instantiate>
Unit of Functionality 1
MCU FW
Making It Right: Developing Embedded Business Software
Application
Test Suite
.francliment.com
<use>
ADCs
SFRs
SPECIAL
FUNCTION
REGISTERS
GPIOs
SFRs
TMRs
SFRs
I2Cs
SFRs
SPIs
SFRs
S
Y
S
T
E
M
C
O
M
P
O
N
E
N
T
S
HW
HARDWARE
ABSTRACTION
BUSSINESS
LOGIC
I
C
D
R
I
V
E
R
S
Components
Factory
P
A
L
<use>
PAL
IMPLEMENTATION
(MCUx)
ARRANGE
App
Test-
Instrumented
S
Y
S
C
O
M
P
O
N
E
N
T
S
I
M
P
L
ARRANGE
ACT
App
(SW)
SYSTEM ASSERTS
SYSTEM ARRANGES
SYSTEM x
ARRANGES
ASSERT
SYSTEM x
ASSERTS
Test Doubles
<instantiate>
Unit of Functionality 1
Unit of Functionality 2
MCU FW
Making It Right: Developing Embedded Business Software
Application
Test Suite
.francliment.com
<use>
ADCs
SFRs
SPECIAL
FUNCTION
REGISTERS
GPIOs
SFRs
TMRs
SFRs
I2Cs
SFRs
SPIs
SFRs
S
Y
S
T
E
M
C
O
M
P
O
N
E
N
T
S
HW
HARDWARE
ABSTRACTION
BUSSINESS
LOGIC
I
C
D
R
I
V
E
R
S
Components
Factory
P
A
L
<use>
PAL
IMPLEMENTATION
(MCUx)
ARRANGE
App
Test-
Instrumented
S
Y
S
C
O
M
P
O
N
E
N
T
S
I
M
P
L
ARRANGE
ACT
App
(SW)
SYSTEM ASSERTS
SYSTEM ARRANGES
SYSTEM x
ARRANGES
ASSERT
Unit of Functionality N
SYSTEM x
ASSERTS
Unit of Functionality 2
Unit of Functionality 1
…
Test Doubles
<instantiate>
MCU FW
Making It Right: Developing Embedded Business Software
Application
Test Suite
.francliment.com
<use>
.francliment.com
Takeaways: Application test suite goals
Application test suite GOALS
Capture product specifications, allowing:
▪ Implement them without introducing errors.
▪ Implement them safely and incrementally.
▪ Specify them for different system or product configurations.
▪ Hardware Bottleneck related uncertainties and delays removal.
▪ Any type: functional, load, performance…
Making It Right: Application test example
.francliment.com
Making It Right: Application test example
.francliment.com
System Arranges API
Making It Right: Application test example
.francliment.com
HVAC System based variant assert
Making It Right: Application test example
.francliment.com
O D
HVAC System based variant assert
Making It Right: Application test example
.francliment.com
System Asserts API
App
(SW)
S
Y
S
T
E
M
C
O
M
P
O
N
E
N
T
S
HW
HARDWARE
ABSTRACTION
BUSSINESS
LOGIC
Software (99%)
I
C
D
R
I
V
E
R
S
COMPONENTS
IMPLEMENTATION
(HWy)
Components
Factory
P
A
L
<use>
<use>
<use>
<use>
<use>
PAL
IMPLEMENTATION
(MCUx)
implements implements
<use>
MCU FW
<use>
ADCs
SFRs
SPECIAL
FUNCTION
REGISTERS
GPIOs
SFRs
TMRs
SFRs
I2Cs
SFRs
SPIs
SFRs
.francliment.com
Plugin Architecture
App
(SW)
S
Y
S
T
E
M
C
O
M
P
O
N
E
N
T
S
HW
HARDWARE
ABSTRACTION
BUSSINESS
LOGIC
I
C
D
R
I
V
E
R
S
COMPONENTS
IMPLEMENTATION
(HWy)
Components
Factory
P
A
L
<use>
<use>
<use>
<use>
<use>
<use>
PAL
IMPLEMENTATION
(MCUx)
implements
MCU FW
implements
Software (99%)
<use>
ADCs
SFRs
SPECIAL
FUNCTION
REGISTERS
GPIOs
SFRs
TMRs
SFRs
I2Cs
SFRs
SPIs
SFRs
Plugin Architecture
.francliment.com
Software (99%)
ADCs
SFRs
SPECIAL
FUNCTION
REGISTERS
GPIOs
SFRs
TMRs
SFRs
I2Cs
SFRs
SPIs
SFRs
App
(SW)
S
Y
S
T
E
M
C
O
M
P
O
N
E
N
T
S
HW
MCU FW
HARDWARE
ABSTRACTION
BUSSINESS
LOGIC
I
C
D
R
I
V
E
R
S
COMPONENTS
IMPLEMENTATION
(HWy)
Components
Factory
P
A
L
<use>
<use>
<use>
<use>
<use>
PAL
IMPLEMENTATION
(MCUx)
implements
PLUGIN
TO BUSSINESS LOGIC
implements
<use>
<use>
.francliment.com
Plugin Architecture
.francliment.com
“FINAL BONUSES
.francliment.com
“Debugging is part of development”
Fallacies & Mantras: Debugging
.francliment.com
“Debugging is part of development”
Debugging is a SHAME!
While debugging we are not creating anything
new: we are adding zero value to our
organization
Fallacies & Mantras: Debugging
.francliment.com
Takeaways: Measure, locate and remove real bottlenecks
Measure your lead time in
order to objectively know
which are your bottlenecks
.francliment.com
“TDD is a testing technique”
Fallacies & Mantras: TDD as testing activity
.francliment.com
Takea-way: TDD is not a testing activity
TDD is a design and
development technique
.francliment.com
“TDD is for Unit testing only”
Falacies & Mantras: TDD is for unit testing
.francliment.com
“The Unit Under Test is a class
or a method”
Falacies & Mantras: The UNITY concept
.francliment.com
Takeaways: Units of behaviour
The Unit Under Test must always
be an external observable
behavior
We can’t be Agile if
our code sucks!
.francliment.com
Takeaways: Beware of Flacid Agile
We can’t improve
our code if we fear
to refactor it
.francliment.com
Takeaways: Acquired Incompetence
We can’t fearless refactor it
without a comprehensive
suite of automated tests
.francliment.com
Takeaways: Comprehensive safety net
“Raise your quality standards as high as you
can live with, avoid wasting your time on routine problems, and always try
to work as closely as possible at the boundary of your abilities. Do this, because
it is the only way of discovering how that
boundary should be moved forward”
.francliment.com
Takeaways: Continuous improvement
― Edsger W. Dijkstra
Thanks
GRACIAS
.francliment.com
@fraclipe
@FranciscoClimentPerez

More Related Content

Similar to Embo++2022 Unembedding Embedded Systems with TDD Benefits of going beyond the Make-It-Work phase.pdf

Can body write an essay for me on dream job in Computer Engineerin.pdf
Can body write an essay for me on dream job in Computer Engineerin.pdfCan body write an essay for me on dream job in Computer Engineerin.pdf
Can body write an essay for me on dream job in Computer Engineerin.pdfmanjan6
 
4th ARM Developer Day Presentation
4th ARM Developer Day Presentation4th ARM Developer Day Presentation
4th ARM Developer Day PresentationAntonio Mondragon
 
Microcontroladores: programación de microcontroladores PIC de 8 bits en C
Microcontroladores: programación de microcontroladores PIC de 8 bits en CMicrocontroladores: programación de microcontroladores PIC de 8 bits en C
Microcontroladores: programación de microcontroladores PIC de 8 bits en CSANTIAGO PABLO ALBERTO
 
ITCamp 2013 - Raffaele Rialdi - Windows Runtime (WinRT) deep dive
ITCamp 2013 - Raffaele Rialdi - Windows Runtime (WinRT) deep diveITCamp 2013 - Raffaele Rialdi - Windows Runtime (WinRT) deep dive
ITCamp 2013 - Raffaele Rialdi - Windows Runtime (WinRT) deep diveITCamp
 
ITCamp 2013 - Petru Jucovschi - Application ecosystems
ITCamp 2013 - Petru Jucovschi - Application ecosystemsITCamp 2013 - Petru Jucovschi - Application ecosystems
ITCamp 2013 - Petru Jucovschi - Application ecosystemsITCamp
 
Security Architecture for Cyber Physical Systems
Security Architecture for Cyber Physical SystemsSecurity Architecture for Cyber Physical Systems
Security Architecture for Cyber Physical SystemsAlan Tatourian
 
CIS 2015 How to secure the Internet of Things? Hannes Tschofenig
CIS 2015 How to secure the Internet of Things? Hannes TschofenigCIS 2015 How to secure the Internet of Things? Hannes Tschofenig
CIS 2015 How to secure the Internet of Things? Hannes TschofenigCloudIDSummit
 
chapt_1_Introduction_computer_science.pptx
chapt_1_Introduction_computer_science.pptxchapt_1_Introduction_computer_science.pptx
chapt_1_Introduction_computer_science.pptxLeandroCamargo52
 
Design and Development of ARM9 Based Embedded Web Server
Design and Development of ARM9 Based Embedded Web ServerDesign and Development of ARM9 Based Embedded Web Server
Design and Development of ARM9 Based Embedded Web ServerIJERA Editor
 
Standard embedded c
Standard embedded cStandard embedded c
Standard embedded cTam Thanh
 
Introduction to Software Reverse Engineering
Introduction to Software Reverse EngineeringIntroduction to Software Reverse Engineering
Introduction to Software Reverse EngineeringTeodoro Cipresso
 
List and describe various features of electronic systems.List and .pdf
List and describe various features of electronic systems.List and .pdfList and describe various features of electronic systems.List and .pdf
List and describe various features of electronic systems.List and .pdfinfo824691
 
John Wiedey resume
John Wiedey resumeJohn Wiedey resume
John Wiedey resumeJohn Wiedey
 
Software Engineering
 Software Engineering  Software Engineering
Software Engineering JayaKamal
 

Similar to Embo++2022 Unembedding Embedded Systems with TDD Benefits of going beyond the Make-It-Work phase.pdf (20)

Can body write an essay for me on dream job in Computer Engineerin.pdf
Can body write an essay for me on dream job in Computer Engineerin.pdfCan body write an essay for me on dream job in Computer Engineerin.pdf
Can body write an essay for me on dream job in Computer Engineerin.pdf
 
4th ARM Developer Day Presentation
4th ARM Developer Day Presentation4th ARM Developer Day Presentation
4th ARM Developer Day Presentation
 
Microcontroladores: programación de microcontroladores PIC de 8 bits en C
Microcontroladores: programación de microcontroladores PIC de 8 bits en CMicrocontroladores: programación de microcontroladores PIC de 8 bits en C
Microcontroladores: programación de microcontroladores PIC de 8 bits en C
 
ITCamp 2013 - Raffaele Rialdi - Windows Runtime (WinRT) deep dive
ITCamp 2013 - Raffaele Rialdi - Windows Runtime (WinRT) deep diveITCamp 2013 - Raffaele Rialdi - Windows Runtime (WinRT) deep dive
ITCamp 2013 - Raffaele Rialdi - Windows Runtime (WinRT) deep dive
 
cc23
cc23cc23
cc23
 
ITCamp 2013 - Petru Jucovschi - Application ecosystems
ITCamp 2013 - Petru Jucovschi - Application ecosystemsITCamp 2013 - Petru Jucovschi - Application ecosystems
ITCamp 2013 - Petru Jucovschi - Application ecosystems
 
Security Architecture for Cyber Physical Systems
Security Architecture for Cyber Physical SystemsSecurity Architecture for Cyber Physical Systems
Security Architecture for Cyber Physical Systems
 
CIS 2015 How to secure the Internet of Things? Hannes Tschofenig
CIS 2015 How to secure the Internet of Things? Hannes TschofenigCIS 2015 How to secure the Internet of Things? Hannes Tschofenig
CIS 2015 How to secure the Internet of Things? Hannes Tschofenig
 
chapt_1_Introduction_computer_science.pptx
chapt_1_Introduction_computer_science.pptxchapt_1_Introduction_computer_science.pptx
chapt_1_Introduction_computer_science.pptx
 
Design and Development of ARM9 Based Embedded Web Server
Design and Development of ARM9 Based Embedded Web ServerDesign and Development of ARM9 Based Embedded Web Server
Design and Development of ARM9 Based Embedded Web Server
 
FinalDocument
FinalDocumentFinalDocument
FinalDocument
 
Standard embedded c
Standard embedded cStandard embedded c
Standard embedded c
 
Introduction to Software Reverse Engineering
Introduction to Software Reverse EngineeringIntroduction to Software Reverse Engineering
Introduction to Software Reverse Engineering
 
Dlf2
Dlf2Dlf2
Dlf2
 
List and describe various features of electronic systems.List and .pdf
List and describe various features of electronic systems.List and .pdfList and describe various features of electronic systems.List and .pdf
List and describe various features of electronic systems.List and .pdf
 
John Wiedey resume
John Wiedey resumeJohn Wiedey resume
John Wiedey resume
 
Software Engineering
 Software Engineering  Software Engineering
Software Engineering
 
ch1_introduction (1).ppt
ch1_introduction (1).pptch1_introduction (1).ppt
ch1_introduction (1).ppt
 
ch1_introduction (2).ppt
ch1_introduction (2).pptch1_introduction (2).ppt
ch1_introduction (2).ppt
 
ch1_introduction.ppt
ch1_introduction.pptch1_introduction.ppt
ch1_introduction.ppt
 

Recently uploaded

Engage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyEngage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyFrank van der Linden
 
Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...aditisharan08
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackVICTOR MAESTRE RAMIREZ
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptkotipi9215
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)OPEN KNOWLEDGE GmbH
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about usDynamic Netsoft
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantAxelRicardoTrocheRiq
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...Christina Lin
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...gurkirankumar98700
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideChristina Lin
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number SystemsJheuzeDellosa
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
Project Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationProject Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationkaushalgiri8080
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...OnePlan Solutions
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityNeo4j
 

Recently uploaded (20)

Engage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyEngage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The Ugly
 
Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStack
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.ppt
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about us
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service Consultant
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number Systems
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
Project Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationProject Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanation
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered Sustainability
 

Embo++2022 Unembedding Embedded Systems with TDD Benefits of going beyond the Make-It-Work phase.pdf