SlideShare a Scribd company logo
1 of 27
Download to read offline
V1.2
XP and Embedded Software Development – Class #462
Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com
Object Mentor, Inc
www.objectmentor.com
Class #462
James Grenning
Object Mentor, Inc
Extreme Programming
and
Embedded Software Development
2
XP and Embedded Software Development – Class #462 James W Grenning
Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com
What is the first thing
known about a project?
Project Management
Source: Object Mentor Training
3
XP and Embedded Software Development – Class #462 James W Grenning
Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com
!
! !
!
Source: Object Mentor Training
XP and Embedded Software Development – Class #462 James W Grenning
Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com
Problems Plaguing the Software Industry
5
XP and Embedded Software Development – Class #462 James W Grenning
Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com
Simple Waterfall
1 May 1 Nov1 Jul 1 Sep
Analysis
Design
Implementation
Source: Object Mentor Training
6
XP and Embedded Software Development – Class #462 James W Grenning
Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com
Waterfall as Royce Described
1 May 1 Nov1 Jul 1 Sep
Analysis
Design
Implementation
Source: Object Mentor Training
1 May 1 Nov1 Jul 1 Sep
Analysis
Design
Implementation
1 May 1 Nov1 Jul 1 Sep
Analysis
Design
Implementation
7
XP and Embedded Software Development – Class #462 James W Grenning
Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com
Waterfall as Practiced
1 May 1 Nov1 Jul 1 Sep
Analysis
Design
Implementation
ST
ST
UML
Use
Use
esUse
Cases
ERD
ERD
ERD
DD
DD
DD
Source: Object Mentor Training
8
XP and Embedded Software Development – Class #462 James W Grenning
Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com
All the Problems are Saved for the
End of the Project
1 May 1 Nov1 Jul 1 Sep
Analysis
Design
Implementation
ST
ST
UML
Use
Use
esUse
Cases
ERD
ERD
ERD
DD
DD
DD
Source: Object Mentor Training
Test and FixTest and Fix
Test and Fix
Test and Fix
Test and Fix
Test and Fix
Test and Fix
9
XP and Embedded Software Development – Class #462 James W Grenning
Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com
Poor Quality
10
XP and Embedded Software Development – Class #462 James W Grenning
Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com
Unrealistic Expectations - Burn Out
Source: Object Mentor Training
11
XP and Embedded Software Development – Class #462 James W Grenning
Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com
Iterative/Evolutionary Development
Cycle
Requirements
Design
Code
Test
12
XP and Embedded Software Development – Class #462 James W Grenning
Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com
Typical development cycle
– Working Features
Requirements
Code
WorkingFeatures
Design
13
XP and Embedded Software Development – Class #462 James W Grenning
Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com
Iterative/Evolutionary Development
Cycle – Working Features
Requirements
Design
Code
Test
WorkingFeatures
14
XP and Embedded Software Development – Class #462 James W Grenning
Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com
Planning
Game
Sustainable
Pace
Open
Workspace
Pair
Programming
Simple
Design
Small
Releases
Metaphor
Continuous
Integration Test First
Design
Refactoring
Collective
Ownership
Coding
Standard
Customer
Team Member
User Stories
Acceptance
TestsXUnit
XP is a set of inter-related values and practices
Values:
Simplicity
Communication
Feedback
Courage
15
XP and Embedded Software Development – Class #462 James W Grenning
Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com
Embedded Software Development
What don’t we have
at the beginning
of an embedded
software project?
16
XP and Embedded Software Development – Class #462 James W Grenning
Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com
There’s No Hardware
17
XP and Embedded Software Development – Class #462 James W Grenning
Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com
Embedded Software Development
• No Hardware until late in the project
• Target platform != development platform
• Computer is hidden from the user
• Limited IO
• Concurrent execution
• Resources are limited
• Real time
18
XP and Embedded Software Development – Class #462 James W Grenning
Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com
The Hardware is not Ready
How can we start the project?
• Write documents
Maybe there is another way
Funct.
Spec
V1
Design
Spec
V2
• Have meetings
• Wait
• Experiment
19
XP and Embedded Software Development – Class #462 James W Grenning
Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com
What is XP?
• Values
– Communication, Simplicity, Feedback, Courage
• Rights
– Do quality work, have a life out of work
• Practices
XP is an Agile methodology for developing
software iteratively. XP encompasses a set of
values, rights and best practices that support each
other in incrementally developing software
20
XP and Embedded Software Development – Class #462 James W Grenning
Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com
Metaphor
Collective
Ownership Coding
Standard
Sustainable
Pace
(40 Hour Week)
Continuous
Integration
Simple
Design
Pair
Programming
Test-First
Design
Refactoring
(Design Improvements)
XP Practices
Small
Releases
Acceptance
Tests
On-site
Customer
Planning
Game
SHIP
Source: Ron Jeffries, et al., Extreme Programming Installed.
21
XP and Embedded Software Development – Class #462 James W Grenning
Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com
USER
STORY
USER
STORY
USER
STORY
Managing Scope
USER
STORY
USER
STORY
USER
STORY
USER
STORY
USER
STORY
USER
STORY
USER
STORY
USER
STORY
USER
STORYUSER
STORY
USER
STORY
USER
STORY
USER
STORY
USER
STORY
USER
STORYUSER
STORY
USER
STORY
USER
STORY
USER
STORY
USER
STORY
USER
STORYUSER
STORY
USER
STORY
USER
STORY
USER
STORY
USER
STORY
USER
STORYUSER
STORY
USER
STORY
USER
STORY
GetHigher Business Value
Lower Business Value
Source: Object Mentor Training
Don’t get
(yet)
22
XP and Embedded Software Development – Class #462 James W Grenning
Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com
Stories
• Off-hook generates dial tone
• On-hook
• Extension calls extension
• Extension calls busy extension
• Flash, call transfer
• Flash, three way call
• Extension goes off-hook dials “9” and a line is
available
23
XP and Embedded Software Development – Class #462 James W Grenning
Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com
There’s No Hardware
24
XP and Embedded Software Development – Class #462 James W Grenning
Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com
Separate Core System Logic from
Hardware Specifics
Network
25
XP and Embedded Software Development – Class #462 James W Grenning
Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com
Test Core System Logic Independent
of Hardware Specifics
Tests and
Simulations
Tests and
Simulations
26
XP and Embedded Software Development – Class #462 James W Grenning
Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com
Acceptance Tests
• Slice off the hardware dependent outer layer
• Develop an application specific test language
• Run the full automated acceptance test suite
multiple times per day, on your development
platform
LINECARD 1 OFFHOOK
VERIFY LINECARD 1 DIALTONE
LINECARD 1 ONHOOK
VERIFY LINECARD 1 NODIALTONE
27
XP and Embedded Software Development – Class #462 James W Grenning
Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com
Initial Architectural Vision
(in UML)
<<interface>>
LineCard
+ dialToneOn()
+ dialToneOff()
CallProcessor
+ onHook(LineCard)
+ offOff(LineCard)
Fake
LineCard
SS5Model3
LineCard
28
XP and Embedded Software Development – Class #462 James W Grenning
Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com
Unit Test the Initial Architecture
//CallProcessorTest.cpp
#include "TestHarness.h"
#include "CallProcessor.h"
#include "FakeLineCard.h"
TEST(CallProcessorTest, DialTone)
{
CallProcessor* cp = new CallProcessor();
FakeLineCard* lc = new FakeLineCard();
CHECK(lc->isDialToneOn() == false);
cp->offHook(lc);
CHECK(lc->isDialToneOn());
delete cp;
delete lc;
}
29
XP and Embedded Software Development – Class #462 James W Grenning
Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com
Separation of Concerns
Separate the interface from the implementation
Keep the interface simple and easy to use
//LineCard.h
class LineCard {
public:
virtual void dialToneOn() = 0;
virtual void dialToneOff() = 0;
}
30
XP and Embedded Software Development – Class #462 James W Grenning
Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com
Separation of Concerns
//FakeLineCard.h
#include "LineCard.h"
class FakeLineCard : public LineCard
{
public:
FakeLineCard()
: dialToneOn(false) {
}
void dialToneOn() {
dialToneOn = true;
}
void dialToneOff() {
dialToneOn = false;
}
boolean isDialToneOn() {
return dialToneOn;
}
private:
bool dialToneOn;
}
Hide implementation details behind the interface
Here is a hidden
implementation for
running tests
31
XP and Embedded Software Development – Class #462 James W Grenning
Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com
Separation of Concerns
//SS5Model3LineCard.h
class SS5Model3LineCard : public LineCard
{
public:
SS5Model3LineCard () {
}
void dialToneOn() {
//twiddle the bits to turn on dialtone
}
void dialToneOff() {
//twiddle the bits to turn off dialtone
}
private:
//Whatever member variables
//are needed
//etc.
}
Hide implementation details behind the interface
Here is a hidden
implementation for
For a specific line card
32
XP and Embedded Software Development – Class #462 James W Grenning
Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com
Initial Architecture Implementation
//CallProcessor.h
#include "LineCard.h"
class CallProcessor {
public:
void onHook(LineCard* lc) {
lc->dialToneOn();
}
void offHook(LineCard* lc) {
lc->dialToneOff();
}
}
Unknown to
CallProcessor,
the test
implementation
is used
33
XP and Embedded Software Development – Class #462 James W Grenning
Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com
Run
The
Test
Red Bar
means
some test
failed
34
XP and Embedded Software Development – Class #462 James W Grenning
Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com
Fix
the
bug
Run
The
Test Pavlov’s
Programmer
Green Bar
means all
tests pass
35
XP and Embedded Software Development – Class #462 James W Grenning
Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com
Evolutionary Design
• All Designs Evolve
• Refactoring (incremental design improvement)
• Automated testing supports design evolution
– Test Driven Design
– Automated Unit Tests
– Automated Acceptance Tests
– Tests are the safety net
Unit Tests Acceptance Tests
36
XP and Embedded Software Development – Class #462 James W Grenning
Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com
Evolutionary Design
<<interface>>
LineCard
+ DialToneOn()
+ DialToneOff()
LineCard
Simulation
CallProcessor
Implementation
SS5Model3
LineCard
Now the SS5Model3LineCard can’t
be tested w/o the CallProcessor
37
XP and Embedded Software Development – Class #462 James W Grenning
Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com
Evolutionary Design
<<interface>>
LineCard
+ DialToneOn()
+ DialToneOff()
<<interface>>
CallProcessor
+ OnHook(LineCard)
+ OffOff(LineCard)
LineCard
Simulation
CallProcessor
Implementation
SS5Model3
LineCard
CallProcessor
ForTestingLine
Cards
38
XP and Embedded Software Development – Class #462 James W Grenning
Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com
Evolutionary Design
Concurrency - More separation of concerns
•Separate concurrency model from the
behavior logic.
•ActiveLineCard applies the threading
policy to the line card’s operations
<<interface>>
LineCard
+ dialToneOn()
+ dialToneOff()
ActiveLineCard
Simulated
LineCard
SS5Model3
LineCard
39
XP and Embedded Software Development – Class #462 James W Grenning
Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com
Limited Resources
• Simulation helps to get the logic right
• But, that may make you careless with resources
• Run in the target to understand all dependencies
• Measure critical resource usage
• Use data, not hunches to decide when to optimize
• Use data, not hunches to know when trouble is
coming
40
XP and Embedded Software Development – Class #462 James W Grenning
Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com
Limited Resources
• Design tests that monitor critical resource usage
– Test for memory leaks
– Stack high water mark
• Use Big Visible Charts (BVC)
– Memory usage
– IO Bandwidth usage
– Idle time
– Hand draw or automatically generate
– Look for troubling trends
41
XP and Embedded Software Development – Class #462 James W Grenning
Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com
Memory Leak Test
...
long heapSize = freeSpace();
//Run all unit tests
assertEquals(heapSize == freeSpace());
...
long int heapSize = freeSpace();
//The system runs all aceptance tests
//The system exists
reportError(heapSize != freeSpace());
//The systems runs all acceptance tests
//The system exists
42
XP and Embedded Software Development – Class #462 James W Grenning
Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com
Memory Usage BVC
Flash Usage
0
200
400
600
800
1000
1200
1 2 3 4 5 6 7 8 9 10 11 12
Iteration
FlashUsed(KBytes)
Flash Max
Code
Tables
Total Used
43
XP and Embedded Software Development – Class #462 James W Grenning
Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com
Memory Usage BVC
RAM Usage
0
50
100
150
200
250
300
1 2 3 4 5 6 7 8 9 10 11 12
Iteration
RAMUsed(KBytes)
RAM Max
Data
Heap
Stack
Total Used
44
XP and Embedded Software Development – Class #462 James W Grenning
Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com
Idle Time BVC
CPU Idle Time
0
20
40
60
80
100
1 2 3 4 5 6 7 8 9 10 11
Iteration
%IdleTime
Load Test
45
XP and Embedded Software Development – Class #462 James W Grenning
Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com
Real Time
• Performance Stories
– 50,000 Lines
– 10% of lines go off-hook simultaneously, dial-tone
within 2 seconds
• Acceptance tests
• Unit tests with time check
• Hammer and Monitor
• Solve performance problems using data
46
XP and Embedded Software Development – Class #462 James W Grenning
Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com
Hammer and Monitor
Hammer
in a traffic
load
Measure
Acceptance
Test
Test results
127 tests pass
4 tests failed
47
XP and Embedded Software Development – Class #462 James W Grenning
Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com
But I don’t have the right tools
• Inability to run code on the build system
– Tests must be run on the target
• There is no unit test tool like JUnit or CppUnit for
your development or execution environment
– Write a simple one
• Compiler incompatibility
– Tests can be used to find compiler differences
• No OO programming language (Java, C++)
48
XP and Embedded Software Development – Class #462 James W Grenning
Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com
No OO Programming Language
• OO promotes decoupling
• Decoupling enables testing
• C++ is C
• OO constructs in C++ can be taken advantage of for little
or no additional cost
• If you are careful
• Decoupling can be done in C, but is harder and requires
more discipline
49
XP and Embedded Software Development – Class #462 James W Grenning
Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com
But I have a Safety Critical System
• Safety critical is about
– Understanding the safety requirements
– Documenting the process
– Thoroughly testing the product
• Understanding the requirements
– Every project regardless of process needs this for success.
– Build teams around good people
• Thoroughly test the product
– Aligns with XP testing goals
– This is a function of good people, knowing the safety requirements
50
XP and Embedded Software Development – Class #462 James W Grenning
Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com
What about Documentation?
• Documentation is not evil. It is expensive and can
get out of date.
• Challenge yourself: Understand why the
documents are needed
• Are there other alternatives?
– Can the documents be automatically generated
– Can the traceability document be generated from the
acceptance test running and recording the path trough the
code?
– Write the documents when they are the best way to
meet the need
– Can you write the documents as-built rather than as-
anticipated?
51
XP and Embedded Software Development – Class #462 James W Grenning
Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com
Safety Critical
• XP is a incremental design and delivery strategy
– This technique is orthogonal to the application domain
• Do you need to add more?
– Safety requirements analysis
– Additional reviews
– Completeness testing
– Safety critical systems design best practices
• More work needs to be done
52
XP and Embedded Software Development – Class #462 James W Grenning
Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com
Conclusions
• XP can help
– Early progress prior to hardware
– Testing safety net
– Lower cost of change
– Use BVCs for critical resources
– Tools may be a problem
– May have to explore new ground
– Real time
– Safety critical
• XP is an Agile development technique – look to
the values for guidance
53
XP and Embedded Software Development – Class #462 James W Grenning
Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com
Agile Manefesto (www.agilemanifesto.org)
We are uncovering better ways of developing
software by doing it and helping others do it.
Through this work we have come to value:
Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
That is, while there is value in the items on
the right, we value the items on the left more.

More Related Content

What's hot

GMO'less Software Development Practices
GMO'less Software Development PracticesGMO'less Software Development Practices
GMO'less Software Development PracticesLemi Orhan Ergin
 
What is quality, and how do we build it in
What is quality, and how do we build it in What is quality, and how do we build it in
What is quality, and how do we build it in Maryam Umar
 
Acceptance Testing for Continuous Delivery by Dave Farley at #AgileIndia2019
Acceptance Testing for Continuous Delivery by Dave Farley at #AgileIndia2019Acceptance Testing for Continuous Delivery by Dave Farley at #AgileIndia2019
Acceptance Testing for Continuous Delivery by Dave Farley at #AgileIndia2019Agile India
 
How testers add value to the organization appium conf
How testers add value to the organization  appium confHow testers add value to the organization  appium conf
How testers add value to the organization appium confCorina Pip
 
2017 Q1 Open Source Support Briefing
2017 Q1 Open Source Support Briefing2017 Q1 Open Source Support Briefing
2017 Q1 Open Source Support BriefingBenito Gonzalez
 
Testing and DevOps Culture: Lessons Learned
Testing and DevOps Culture: Lessons LearnedTesting and DevOps Culture: Lessons Learned
Testing and DevOps Culture: Lessons LearnedLB Denker
 
A Journey from DevOps to DevTestOps: Infusing Continuous Quality
A Journey from DevOps to DevTestOps: Infusing Continuous QualityA Journey from DevOps to DevTestOps: Infusing Continuous Quality
A Journey from DevOps to DevTestOps: Infusing Continuous QualityTechWell
 
The Anti-Transformation transformation @DevOps Summit Amsterdam
The Anti-Transformation transformation @DevOps Summit AmsterdamThe Anti-Transformation transformation @DevOps Summit Amsterdam
The Anti-Transformation transformation @DevOps Summit AmsterdamMirco Hering
 
System-Level Test Automation: Ensuring a Good Start
System-Level Test Automation: Ensuring a Good StartSystem-Level Test Automation: Ensuring a Good Start
System-Level Test Automation: Ensuring a Good StartTechWell
 
Fundamental Principles of Software Development
Fundamental Principles of Software Development Fundamental Principles of Software Development
Fundamental Principles of Software Development Nitin Bhide
 
Common Sense Software Development
Common Sense Software DevelopmentCommon Sense Software Development
Common Sense Software DevelopmentNitin Bhide
 
Why change code that works - On Technical Debt and Refactoring
Why change code that works - On Technical Debt and RefactoringWhy change code that works - On Technical Debt and Refactoring
Why change code that works - On Technical Debt and RefactoringCarsten Windler
 
Testing in agile
Testing in agileTesting in agile
Testing in agilesachxn1
 
How BDD enables True CI/CD
How BDD enables True CI/CDHow BDD enables True CI/CD
How BDD enables True CI/CDRoger Turnau
 
Build the Right Product Right: Transitioning Test from Critiquing to Defining
Build the Right Product Right: Transitioning Test from Critiquing to DefiningBuild the Right Product Right: Transitioning Test from Critiquing to Defining
Build the Right Product Right: Transitioning Test from Critiquing to DefiningTechWell
 
Testing Transformation: The Art and Science for Success
Testing Transformation: The Art and Science for SuccessTesting Transformation: The Art and Science for Success
Testing Transformation: The Art and Science for SuccessTechWell
 
Scaling at kudo what we have learned along the way
Scaling at kudo what we have learned along the wayScaling at kudo what we have learned along the way
Scaling at kudo what we have learned along the wayPanji Gautama
 
Continuous Testing: Preparing for DevOps
Continuous Testing: Preparing for DevOpsContinuous Testing: Preparing for DevOps
Continuous Testing: Preparing for DevOpsSTePINForum
 
"The Lean Mindset": Mary & Tom Poppendieck's Keynote at AgileDayChile 2013
"The Lean Mindset": Mary & Tom Poppendieck's Keynote at AgileDayChile 2013"The Lean Mindset": Mary & Tom Poppendieck's Keynote at AgileDayChile 2013
"The Lean Mindset": Mary & Tom Poppendieck's Keynote at AgileDayChile 2013ChileAgil
 

What's hot (20)

GMO'less Software Development Practices
GMO'less Software Development PracticesGMO'less Software Development Practices
GMO'less Software Development Practices
 
What is quality, and how do we build it in
What is quality, and how do we build it in What is quality, and how do we build it in
What is quality, and how do we build it in
 
Acceptance Testing for Continuous Delivery by Dave Farley at #AgileIndia2019
Acceptance Testing for Continuous Delivery by Dave Farley at #AgileIndia2019Acceptance Testing for Continuous Delivery by Dave Farley at #AgileIndia2019
Acceptance Testing for Continuous Delivery by Dave Farley at #AgileIndia2019
 
How testers add value to the organization appium conf
How testers add value to the organization  appium confHow testers add value to the organization  appium conf
How testers add value to the organization appium conf
 
2017 Q1 Open Source Support Briefing
2017 Q1 Open Source Support Briefing2017 Q1 Open Source Support Briefing
2017 Q1 Open Source Support Briefing
 
Testing and DevOps Culture: Lessons Learned
Testing and DevOps Culture: Lessons LearnedTesting and DevOps Culture: Lessons Learned
Testing and DevOps Culture: Lessons Learned
 
A Journey from DevOps to DevTestOps: Infusing Continuous Quality
A Journey from DevOps to DevTestOps: Infusing Continuous QualityA Journey from DevOps to DevTestOps: Infusing Continuous Quality
A Journey from DevOps to DevTestOps: Infusing Continuous Quality
 
The Anti-Transformation transformation @DevOps Summit Amsterdam
The Anti-Transformation transformation @DevOps Summit AmsterdamThe Anti-Transformation transformation @DevOps Summit Amsterdam
The Anti-Transformation transformation @DevOps Summit Amsterdam
 
System-Level Test Automation: Ensuring a Good Start
System-Level Test Automation: Ensuring a Good StartSystem-Level Test Automation: Ensuring a Good Start
System-Level Test Automation: Ensuring a Good Start
 
Fundamental Principles of Software Development
Fundamental Principles of Software Development Fundamental Principles of Software Development
Fundamental Principles of Software Development
 
DevTestOps
DevTestOpsDevTestOps
DevTestOps
 
Common Sense Software Development
Common Sense Software DevelopmentCommon Sense Software Development
Common Sense Software Development
 
Why change code that works - On Technical Debt and Refactoring
Why change code that works - On Technical Debt and RefactoringWhy change code that works - On Technical Debt and Refactoring
Why change code that works - On Technical Debt and Refactoring
 
Testing in agile
Testing in agileTesting in agile
Testing in agile
 
How BDD enables True CI/CD
How BDD enables True CI/CDHow BDD enables True CI/CD
How BDD enables True CI/CD
 
Build the Right Product Right: Transitioning Test from Critiquing to Defining
Build the Right Product Right: Transitioning Test from Critiquing to DefiningBuild the Right Product Right: Transitioning Test from Critiquing to Defining
Build the Right Product Right: Transitioning Test from Critiquing to Defining
 
Testing Transformation: The Art and Science for Success
Testing Transformation: The Art and Science for SuccessTesting Transformation: The Art and Science for Success
Testing Transformation: The Art and Science for Success
 
Scaling at kudo what we have learned along the way
Scaling at kudo what we have learned along the wayScaling at kudo what we have learned along the way
Scaling at kudo what we have learned along the way
 
Continuous Testing: Preparing for DevOps
Continuous Testing: Preparing for DevOpsContinuous Testing: Preparing for DevOps
Continuous Testing: Preparing for DevOps
 
"The Lean Mindset": Mary & Tom Poppendieck's Keynote at AgileDayChile 2013
"The Lean Mindset": Mary & Tom Poppendieck's Keynote at AgileDayChile 2013"The Lean Mindset": Mary & Tom Poppendieck's Keynote at AgileDayChile 2013
"The Lean Mindset": Mary & Tom Poppendieck's Keynote at AgileDayChile 2013
 

Viewers also liked

Solving the XP Legacy Problem with (Extreme) Meta-Programming
Solving the XP Legacy Problem with (Extreme) Meta-ProgrammingSolving the XP Legacy Problem with (Extreme) Meta-Programming
Solving the XP Legacy Problem with (Extreme) Meta-Programmingamcquiggin
 
Extreme programming
Extreme programmingExtreme programming
Extreme programmingtuanvu8292
 
Extreme Programming (XP) as A Popular Agile methodology.
Extreme Programming (XP) as A Popular Agile methodology.Extreme Programming (XP) as A Popular Agile methodology.
Extreme Programming (XP) as A Popular Agile methodology.Ali Shaikh
 
Model Agile & eXtreme Programming (XP)
Model Agile & eXtreme Programming (XP)Model Agile & eXtreme Programming (XP)
Model Agile & eXtreme Programming (XP)Ferryxz Yamato
 
AWB - 11 - Extreme Programming
AWB - 11 - Extreme ProgrammingAWB - 11 - Extreme Programming
AWB - 11 - Extreme ProgrammingAXA EMEA-LATAM
 
Extreme programming
Extreme programmingExtreme programming
Extreme programmingMr SMAK
 
Agile Methodologies And Extreme Programming
Agile Methodologies And Extreme ProgrammingAgile Methodologies And Extreme Programming
Agile Methodologies And Extreme ProgrammingUtkarsh Khare
 

Viewers also liked (10)

Solving the XP Legacy Problem with (Extreme) Meta-Programming
Solving the XP Legacy Problem with (Extreme) Meta-ProgrammingSolving the XP Legacy Problem with (Extreme) Meta-Programming
Solving the XP Legacy Problem with (Extreme) Meta-Programming
 
eXtreme Programming
eXtreme ProgrammingeXtreme Programming
eXtreme Programming
 
Extreme programming
Extreme programmingExtreme programming
Extreme programming
 
Extreme programming
Extreme programmingExtreme programming
Extreme programming
 
Extreme Programming (XP) as A Popular Agile methodology.
Extreme Programming (XP) as A Popular Agile methodology.Extreme Programming (XP) as A Popular Agile methodology.
Extreme Programming (XP) as A Popular Agile methodology.
 
Model Agile & eXtreme Programming (XP)
Model Agile & eXtreme Programming (XP)Model Agile & eXtreme Programming (XP)
Model Agile & eXtreme Programming (XP)
 
AWB - 11 - Extreme Programming
AWB - 11 - Extreme ProgrammingAWB - 11 - Extreme Programming
AWB - 11 - Extreme Programming
 
Agile Engineering Practices
Agile Engineering PracticesAgile Engineering Practices
Agile Engineering Practices
 
Extreme programming
Extreme programmingExtreme programming
Extreme programming
 
Agile Methodologies And Extreme Programming
Agile Methodologies And Extreme ProgrammingAgile Methodologies And Extreme Programming
Agile Methodologies And Extreme Programming
 

Similar to Embedded Extreme Programming - Embedded Systems Conference 2002-2004

Behavior Driven Development with AngularJS & Jasmine
Behavior Driven Development with AngularJS & JasmineBehavior Driven Development with AngularJS & Jasmine
Behavior Driven Development with AngularJS & JasmineRemus Langu
 
Agile Secure Development
Agile Secure DevelopmentAgile Secure Development
Agile Secure DevelopmentBosnia Agile
 
The Extreme Programming (XP) Model
The Extreme Programming (XP) ModelThe Extreme Programming (XP) Model
The Extreme Programming (XP) ModelDamian T. Gordon
 
Agile software architecture
Agile software architectureAgile software architecture
Agile software architectureScott Hsieh
 
Big Event Looping Deck
Big Event Looping DeckBig Event Looping Deck
Big Event Looping DeckSteve Lange
 
Syed Arif Ali_8+yrs_SDE_updated
Syed Arif Ali_8+yrs_SDE_updatedSyed Arif Ali_8+yrs_SDE_updated
Syed Arif Ali_8+yrs_SDE_updatedSyed Ali
 
A journey to_be_a_software_craftsman
A journey to_be_a_software_craftsmanA journey to_be_a_software_craftsman
A journey to_be_a_software_craftsmanJaehoon Oh
 
Introduction of Software Architect(Definition, Mindset, Process).pptx
Introduction of Software Architect(Definition, Mindset, Process).pptxIntroduction of Software Architect(Definition, Mindset, Process).pptx
Introduction of Software Architect(Definition, Mindset, Process).pptxrony setyawansyah
 
eXtreme programming (XP) - An Overview
eXtreme programming (XP) - An OvervieweXtreme programming (XP) - An Overview
eXtreme programming (XP) - An OverviewGurtej Pal Singh
 
UX Workshop: How to design a product with great user experience
UX Workshop: How to design a product with great user experienceUX Workshop: How to design a product with great user experience
UX Workshop: How to design a product with great user experienceRaj Lal
 
Software Engineering as a Career
Software Engineering as a CareerSoftware Engineering as a Career
Software Engineering as a CareerALPHA Camp
 
Death to project documentation with eXtreme Programming
Death to project documentation with eXtreme ProgrammingDeath to project documentation with eXtreme Programming
Death to project documentation with eXtreme ProgrammingAlex Fernandez
 
“One man” development process model
“One man” development process model“One man” development process model
“One man” development process modelSilicon Straits
 
Front-end, Back-end & Full-stack: Best Practices for Hiring Developers
Front-end, Back-end & Full-stack: Best Practices for Hiring DevelopersFront-end, Back-end & Full-stack: Best Practices for Hiring Developers
Front-end, Back-end & Full-stack: Best Practices for Hiring DevelopersHackerRank
 

Similar to Embedded Extreme Programming - Embedded Systems Conference 2002-2004 (20)

Behavior Driven Development with AngularJS & Jasmine
Behavior Driven Development with AngularJS & JasmineBehavior Driven Development with AngularJS & Jasmine
Behavior Driven Development with AngularJS & Jasmine
 
Agile Secure Development
Agile Secure DevelopmentAgile Secure Development
Agile Secure Development
 
The Extreme Programming (XP) Model
The Extreme Programming (XP) ModelThe Extreme Programming (XP) Model
The Extreme Programming (XP) Model
 
Agile software architecture
Agile software architectureAgile software architecture
Agile software architecture
 
Tech Camp at NR Computer Learning Center
Tech Camp at NR Computer Learning CenterTech Camp at NR Computer Learning Center
Tech Camp at NR Computer Learning Center
 
Parvez cv
Parvez cvParvez cv
Parvez cv
 
Big Event Looping Deck
Big Event Looping DeckBig Event Looping Deck
Big Event Looping Deck
 
Apex triggers i
Apex triggers iApex triggers i
Apex triggers i
 
Xp Slideshow
Xp SlideshowXp Slideshow
Xp Slideshow
 
Syed Arif Ali_8+yrs_SDE_updated
Syed Arif Ali_8+yrs_SDE_updatedSyed Arif Ali_8+yrs_SDE_updated
Syed Arif Ali_8+yrs_SDE_updated
 
A journey to_be_a_software_craftsman
A journey to_be_a_software_craftsmanA journey to_be_a_software_craftsman
A journey to_be_a_software_craftsman
 
Introduction of Software Architect(Definition, Mindset, Process).pptx
Introduction of Software Architect(Definition, Mindset, Process).pptxIntroduction of Software Architect(Definition, Mindset, Process).pptx
Introduction of Software Architect(Definition, Mindset, Process).pptx
 
eXtreme programming (XP) - An Overview
eXtreme programming (XP) - An OvervieweXtreme programming (XP) - An Overview
eXtreme programming (XP) - An Overview
 
UX Workshop: How to design a product with great user experience
UX Workshop: How to design a product with great user experienceUX Workshop: How to design a product with great user experience
UX Workshop: How to design a product with great user experience
 
Software Engineering Careers
Software Engineering CareersSoftware Engineering Careers
Software Engineering Careers
 
Software Engineering as a Career
Software Engineering as a CareerSoftware Engineering as a Career
Software Engineering as a Career
 
Death to project documentation with eXtreme Programming
Death to project documentation with eXtreme ProgrammingDeath to project documentation with eXtreme Programming
Death to project documentation with eXtreme Programming
 
“One man” development process model
“One man” development process model“One man” development process model
“One man” development process model
 
Front-end, Back-end & Full-stack: Best Practices for Hiring Developers
Front-end, Back-end & Full-stack: Best Practices for Hiring DevelopersFront-end, Back-end & Full-stack: Best Practices for Hiring Developers
Front-end, Back-end & Full-stack: Best Practices for Hiring Developers
 
Patil Resume
Patil ResumePatil Resume
Patil Resume
 

Recently uploaded

why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfjoe51371421
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...panagenda
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AIABDERRAOUF MEHENNI
 
Clustering techniques data mining book ....
Clustering techniques data mining book ....Clustering techniques data mining book ....
Clustering techniques data mining book ....ShaimaaMohamedGalal
 
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
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...OnePlan Solutions
 
Test Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendTest Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendArshad QA
 
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
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsAndolasoft Inc
 
(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
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️anilsa9823
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software DevelopersVinodh Ram
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 

Recently uploaded (20)

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...
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdf
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
 
Clustering techniques data mining book ....
Clustering techniques data mining book ....Clustering techniques data mining book ....
Clustering techniques data mining book ....
 
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
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 
Test Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendTest Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and Backend
 
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
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
Exploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the ProcessExploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the Process
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
(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...
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software Developers
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 

Embedded Extreme Programming - Embedded Systems Conference 2002-2004

  • 1. V1.2 XP and Embedded Software Development – Class #462 Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com Object Mentor, Inc www.objectmentor.com Class #462 James Grenning Object Mentor, Inc Extreme Programming and Embedded Software Development 2 XP and Embedded Software Development – Class #462 James W Grenning Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com What is the first thing known about a project? Project Management Source: Object Mentor Training
  • 2. 3 XP and Embedded Software Development – Class #462 James W Grenning Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com ! ! ! ! Source: Object Mentor Training XP and Embedded Software Development – Class #462 James W Grenning Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com Problems Plaguing the Software Industry
  • 3. 5 XP and Embedded Software Development – Class #462 James W Grenning Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com Simple Waterfall 1 May 1 Nov1 Jul 1 Sep Analysis Design Implementation Source: Object Mentor Training 6 XP and Embedded Software Development – Class #462 James W Grenning Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com Waterfall as Royce Described 1 May 1 Nov1 Jul 1 Sep Analysis Design Implementation Source: Object Mentor Training 1 May 1 Nov1 Jul 1 Sep Analysis Design Implementation 1 May 1 Nov1 Jul 1 Sep Analysis Design Implementation
  • 4. 7 XP and Embedded Software Development – Class #462 James W Grenning Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com Waterfall as Practiced 1 May 1 Nov1 Jul 1 Sep Analysis Design Implementation ST ST UML Use Use esUse Cases ERD ERD ERD DD DD DD Source: Object Mentor Training 8 XP and Embedded Software Development – Class #462 James W Grenning Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com All the Problems are Saved for the End of the Project 1 May 1 Nov1 Jul 1 Sep Analysis Design Implementation ST ST UML Use Use esUse Cases ERD ERD ERD DD DD DD Source: Object Mentor Training Test and FixTest and Fix Test and Fix Test and Fix Test and Fix Test and Fix Test and Fix
  • 5. 9 XP and Embedded Software Development – Class #462 James W Grenning Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com Poor Quality 10 XP and Embedded Software Development – Class #462 James W Grenning Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com Unrealistic Expectations - Burn Out Source: Object Mentor Training
  • 6. 11 XP and Embedded Software Development – Class #462 James W Grenning Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com Iterative/Evolutionary Development Cycle Requirements Design Code Test 12 XP and Embedded Software Development – Class #462 James W Grenning Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com Typical development cycle – Working Features Requirements Code WorkingFeatures Design
  • 7. 13 XP and Embedded Software Development – Class #462 James W Grenning Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com Iterative/Evolutionary Development Cycle – Working Features Requirements Design Code Test WorkingFeatures 14 XP and Embedded Software Development – Class #462 James W Grenning Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com Planning Game Sustainable Pace Open Workspace Pair Programming Simple Design Small Releases Metaphor Continuous Integration Test First Design Refactoring Collective Ownership Coding Standard Customer Team Member User Stories Acceptance TestsXUnit XP is a set of inter-related values and practices Values: Simplicity Communication Feedback Courage
  • 8. 15 XP and Embedded Software Development – Class #462 James W Grenning Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com Embedded Software Development What don’t we have at the beginning of an embedded software project? 16 XP and Embedded Software Development – Class #462 James W Grenning Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com There’s No Hardware
  • 9. 17 XP and Embedded Software Development – Class #462 James W Grenning Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com Embedded Software Development • No Hardware until late in the project • Target platform != development platform • Computer is hidden from the user • Limited IO • Concurrent execution • Resources are limited • Real time 18 XP and Embedded Software Development – Class #462 James W Grenning Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com The Hardware is not Ready How can we start the project? • Write documents Maybe there is another way Funct. Spec V1 Design Spec V2 • Have meetings • Wait • Experiment
  • 10. 19 XP and Embedded Software Development – Class #462 James W Grenning Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com What is XP? • Values – Communication, Simplicity, Feedback, Courage • Rights – Do quality work, have a life out of work • Practices XP is an Agile methodology for developing software iteratively. XP encompasses a set of values, rights and best practices that support each other in incrementally developing software 20 XP and Embedded Software Development – Class #462 James W Grenning Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com Metaphor Collective Ownership Coding Standard Sustainable Pace (40 Hour Week) Continuous Integration Simple Design Pair Programming Test-First Design Refactoring (Design Improvements) XP Practices Small Releases Acceptance Tests On-site Customer Planning Game SHIP Source: Ron Jeffries, et al., Extreme Programming Installed.
  • 11. 21 XP and Embedded Software Development – Class #462 James W Grenning Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com USER STORY USER STORY USER STORY Managing Scope USER STORY USER STORY USER STORY USER STORY USER STORY USER STORY USER STORY USER STORY USER STORYUSER STORY USER STORY USER STORY USER STORY USER STORY USER STORYUSER STORY USER STORY USER STORY USER STORY USER STORY USER STORYUSER STORY USER STORY USER STORY USER STORY USER STORY USER STORYUSER STORY USER STORY USER STORY GetHigher Business Value Lower Business Value Source: Object Mentor Training Don’t get (yet) 22 XP and Embedded Software Development – Class #462 James W Grenning Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com Stories • Off-hook generates dial tone • On-hook • Extension calls extension • Extension calls busy extension • Flash, call transfer • Flash, three way call • Extension goes off-hook dials “9” and a line is available
  • 12. 23 XP and Embedded Software Development – Class #462 James W Grenning Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com There’s No Hardware 24 XP and Embedded Software Development – Class #462 James W Grenning Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com Separate Core System Logic from Hardware Specifics Network
  • 13. 25 XP and Embedded Software Development – Class #462 James W Grenning Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com Test Core System Logic Independent of Hardware Specifics Tests and Simulations Tests and Simulations 26 XP and Embedded Software Development – Class #462 James W Grenning Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com Acceptance Tests • Slice off the hardware dependent outer layer • Develop an application specific test language • Run the full automated acceptance test suite multiple times per day, on your development platform LINECARD 1 OFFHOOK VERIFY LINECARD 1 DIALTONE LINECARD 1 ONHOOK VERIFY LINECARD 1 NODIALTONE
  • 14. 27 XP and Embedded Software Development – Class #462 James W Grenning Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com Initial Architectural Vision (in UML) <<interface>> LineCard + dialToneOn() + dialToneOff() CallProcessor + onHook(LineCard) + offOff(LineCard) Fake LineCard SS5Model3 LineCard 28 XP and Embedded Software Development – Class #462 James W Grenning Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com Unit Test the Initial Architecture //CallProcessorTest.cpp #include "TestHarness.h" #include "CallProcessor.h" #include "FakeLineCard.h" TEST(CallProcessorTest, DialTone) { CallProcessor* cp = new CallProcessor(); FakeLineCard* lc = new FakeLineCard(); CHECK(lc->isDialToneOn() == false); cp->offHook(lc); CHECK(lc->isDialToneOn()); delete cp; delete lc; }
  • 15. 29 XP and Embedded Software Development – Class #462 James W Grenning Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com Separation of Concerns Separate the interface from the implementation Keep the interface simple and easy to use //LineCard.h class LineCard { public: virtual void dialToneOn() = 0; virtual void dialToneOff() = 0; } 30 XP and Embedded Software Development – Class #462 James W Grenning Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com Separation of Concerns //FakeLineCard.h #include "LineCard.h" class FakeLineCard : public LineCard { public: FakeLineCard() : dialToneOn(false) { } void dialToneOn() { dialToneOn = true; } void dialToneOff() { dialToneOn = false; } boolean isDialToneOn() { return dialToneOn; } private: bool dialToneOn; } Hide implementation details behind the interface Here is a hidden implementation for running tests
  • 16. 31 XP and Embedded Software Development – Class #462 James W Grenning Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com Separation of Concerns //SS5Model3LineCard.h class SS5Model3LineCard : public LineCard { public: SS5Model3LineCard () { } void dialToneOn() { //twiddle the bits to turn on dialtone } void dialToneOff() { //twiddle the bits to turn off dialtone } private: //Whatever member variables //are needed //etc. } Hide implementation details behind the interface Here is a hidden implementation for For a specific line card 32 XP and Embedded Software Development – Class #462 James W Grenning Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com Initial Architecture Implementation //CallProcessor.h #include "LineCard.h" class CallProcessor { public: void onHook(LineCard* lc) { lc->dialToneOn(); } void offHook(LineCard* lc) { lc->dialToneOff(); } } Unknown to CallProcessor, the test implementation is used
  • 17. 33 XP and Embedded Software Development – Class #462 James W Grenning Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com Run The Test Red Bar means some test failed 34 XP and Embedded Software Development – Class #462 James W Grenning Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com Fix the bug Run The Test Pavlov’s Programmer Green Bar means all tests pass
  • 18. 35 XP and Embedded Software Development – Class #462 James W Grenning Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com Evolutionary Design • All Designs Evolve • Refactoring (incremental design improvement) • Automated testing supports design evolution – Test Driven Design – Automated Unit Tests – Automated Acceptance Tests – Tests are the safety net Unit Tests Acceptance Tests 36 XP and Embedded Software Development – Class #462 James W Grenning Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com Evolutionary Design <<interface>> LineCard + DialToneOn() + DialToneOff() LineCard Simulation CallProcessor Implementation SS5Model3 LineCard Now the SS5Model3LineCard can’t be tested w/o the CallProcessor
  • 19. 37 XP and Embedded Software Development – Class #462 James W Grenning Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com Evolutionary Design <<interface>> LineCard + DialToneOn() + DialToneOff() <<interface>> CallProcessor + OnHook(LineCard) + OffOff(LineCard) LineCard Simulation CallProcessor Implementation SS5Model3 LineCard CallProcessor ForTestingLine Cards 38 XP and Embedded Software Development – Class #462 James W Grenning Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com Evolutionary Design Concurrency - More separation of concerns •Separate concurrency model from the behavior logic. •ActiveLineCard applies the threading policy to the line card’s operations <<interface>> LineCard + dialToneOn() + dialToneOff() ActiveLineCard Simulated LineCard SS5Model3 LineCard
  • 20. 39 XP and Embedded Software Development – Class #462 James W Grenning Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com Limited Resources • Simulation helps to get the logic right • But, that may make you careless with resources • Run in the target to understand all dependencies • Measure critical resource usage • Use data, not hunches to decide when to optimize • Use data, not hunches to know when trouble is coming 40 XP and Embedded Software Development – Class #462 James W Grenning Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com Limited Resources • Design tests that monitor critical resource usage – Test for memory leaks – Stack high water mark • Use Big Visible Charts (BVC) – Memory usage – IO Bandwidth usage – Idle time – Hand draw or automatically generate – Look for troubling trends
  • 21. 41 XP and Embedded Software Development – Class #462 James W Grenning Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com Memory Leak Test ... long heapSize = freeSpace(); //Run all unit tests assertEquals(heapSize == freeSpace()); ... long int heapSize = freeSpace(); //The system runs all aceptance tests //The system exists reportError(heapSize != freeSpace()); //The systems runs all acceptance tests //The system exists 42 XP and Embedded Software Development – Class #462 James W Grenning Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com Memory Usage BVC Flash Usage 0 200 400 600 800 1000 1200 1 2 3 4 5 6 7 8 9 10 11 12 Iteration FlashUsed(KBytes) Flash Max Code Tables Total Used
  • 22. 43 XP and Embedded Software Development – Class #462 James W Grenning Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com Memory Usage BVC RAM Usage 0 50 100 150 200 250 300 1 2 3 4 5 6 7 8 9 10 11 12 Iteration RAMUsed(KBytes) RAM Max Data Heap Stack Total Used 44 XP and Embedded Software Development – Class #462 James W Grenning Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com Idle Time BVC CPU Idle Time 0 20 40 60 80 100 1 2 3 4 5 6 7 8 9 10 11 Iteration %IdleTime Load Test
  • 23. 45 XP and Embedded Software Development – Class #462 James W Grenning Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com Real Time • Performance Stories – 50,000 Lines – 10% of lines go off-hook simultaneously, dial-tone within 2 seconds • Acceptance tests • Unit tests with time check • Hammer and Monitor • Solve performance problems using data 46 XP and Embedded Software Development – Class #462 James W Grenning Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com Hammer and Monitor Hammer in a traffic load Measure Acceptance Test Test results 127 tests pass 4 tests failed
  • 24. 47 XP and Embedded Software Development – Class #462 James W Grenning Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com But I don’t have the right tools • Inability to run code on the build system – Tests must be run on the target • There is no unit test tool like JUnit or CppUnit for your development or execution environment – Write a simple one • Compiler incompatibility – Tests can be used to find compiler differences • No OO programming language (Java, C++) 48 XP and Embedded Software Development – Class #462 James W Grenning Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com No OO Programming Language • OO promotes decoupling • Decoupling enables testing • C++ is C • OO constructs in C++ can be taken advantage of for little or no additional cost • If you are careful • Decoupling can be done in C, but is harder and requires more discipline
  • 25. 49 XP and Embedded Software Development – Class #462 James W Grenning Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com But I have a Safety Critical System • Safety critical is about – Understanding the safety requirements – Documenting the process – Thoroughly testing the product • Understanding the requirements – Every project regardless of process needs this for success. – Build teams around good people • Thoroughly test the product – Aligns with XP testing goals – This is a function of good people, knowing the safety requirements 50 XP and Embedded Software Development – Class #462 James W Grenning Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com What about Documentation? • Documentation is not evil. It is expensive and can get out of date. • Challenge yourself: Understand why the documents are needed • Are there other alternatives? – Can the documents be automatically generated – Can the traceability document be generated from the acceptance test running and recording the path trough the code? – Write the documents when they are the best way to meet the need – Can you write the documents as-built rather than as- anticipated?
  • 26. 51 XP and Embedded Software Development – Class #462 James W Grenning Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com Safety Critical • XP is a incremental design and delivery strategy – This technique is orthogonal to the application domain • Do you need to add more? – Safety requirements analysis – Additional reviews – Completeness testing – Safety critical systems design best practices • More work needs to be done 52 XP and Embedded Software Development – Class #462 James W Grenning Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com Conclusions • XP can help – Early progress prior to hardware – Testing safety net – Lower cost of change – Use BVCs for critical resources – Tools may be a problem – May have to explore new ground – Real time – Safety critical • XP is an Agile development technique – look to the values for guidance
  • 27. 53 XP and Embedded Software Development – Class #462 James W Grenning Copyright © March 2002-2003 All Rights Reserved grenning@objectmentor.com Agile Manefesto (www.agilemanifesto.org) We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value: Individuals and interactions over processes and tools Working software over comprehensive documentation Customer collaboration over contract negotiation Responding to change over following a plan That is, while there is value in the items on the right, we value the items on the left more.