SlideShare a Scribd company logo
Firmware Improvement Roadmap
A step-by-step guide for improving firmware projects.
Date Author Reason Revision
2016-04-15 Scott Sweeting Broadened
Applicability
C
2014-12-16 Scott Sweeting Added goal details B
2014-12-02 Scott Sweeting Initial Release A
1. Goals
1. Improve Lead-Time Of New Platform Bring-Up
Decrease the amount of time required to bring up new platforms. Quickly bringing up new platforms
improves time-to-market, potentially beating competitors to market, gaining market share and
increasing the on-sale lifetime.
2. Improve Lead-Time Of Major Functionality Addition/Subtraction
Decrease the amount of time required to implement new major functions. Quickly adding or removing
major features improves time-to-market, potentially beating competitors to market, gaining market
share and increasing the on-sale lifetime.
3. Improve Customer Feedback
Decrease amount and severity of negative customer feedback, reduce turn-around time in addressing
customer issues. This will increase customer satisfaction and improve sales through word-of-mouth.
2. Strategies
1. Re-Use Code
Use a common codebase for all firmware projects. This will improve new platform lead-time by giving us
a head start on writing firmware – simply adapt existing firmware to a new platform by writing drivers
for new platform. Code that can quickly be adapted to different platforms also allows quick and
thorough component supplier evaluations.
2. Create Virtual Devices
To the maximum extent possible, use firmware code to develop host PC virtual projects to prototype
changes in host control software and nail down protocols.
3. Improve Reliability
Reliability is the quality that the device performs to the specifications (including implied specifications).
Use Continuous Improvement Testing
Verify each internal as well as external release according to the test plan & procedure. Importantly,
update the test plan & procedure with the test procedure of each issue as it is resolved.
Use Watchdog Timer
Using a watchdog timer will allow the device to reset itself when firmware freezes or RAM is corrupt.
Allows us to recover a device that cannot easily be cold-booted.
Use Long-Term Stability Testing
Running tests on units that are powered continuously for days, weeks, and month. This uncovers
memory allocation/freeing errors and timers that roll over after amounts of time greater than normal
bench testing. Coding issues uncovered with long-term stability testing: memory leaks, counter roll-
overs, mutexes that need to be around critical sections.
4. Improve Robustness
Robustness is the quality that the device handles unexpected inputs predictably and gracefully.
Improving robustness will allow us to diagnose and fix logical errors before they get to customers and
reduce time spent fixing errors that do make it to customers.
Use Comprehensive Testing
Test all possible inputs, not just ones in current use. Use comprehensive testing to verify conformance
to specifications.
Test Parameters To Each Function
Prevent null-pointer exceptions and design and input errors by checking each parameter to each
function.
Add Error Log To Fix Unreproducible Errors
Create an error log that can be retrieved by customers using host control software to be sent to
Engineering to allow us to fix errors that cannot be reproduced internally.
Bubble Up Errors, Handle Every Error
Fix design flaws by bubbling up errors to a function that can handle them. E.g., a function that does
division given a divisor as a parameter should return an error if the divisor is zero, and the function that
calls it should check for an error.
5. Improve Maintainability
Maintainability is the quality that firmware is quick and easy to modify. Improving maintainability will
increase our responsiveness to customer issues and decrease turn-around time on adding new features
and fixing bugs.
Develop A Coding standard
Coding standards give code consistency. Coding standards increase readability of code – the most
difficult aspect of firmware development. The coding standard will include friendly variable names. The
identifier “bufsz” is not more efficient than “bufferSize” when compiled to machine code. A “formula”
for naming variables and function reduces development time and developer mental load. E.g.:
“set_Mute(UNMUTE)” and “setNoDspChanges(void)” are inconsistent, whereas “MuteSet(UNMUTE)”
and “DspChangesSet(FALSE)” are consistent, thus easier to remember when being called from another
function.
Perform Code reviews
Code reviews disseminate news of changes across the team and concerned people from other teams,
increase group knowledge, and solicit constructive feedback.
Increase Modularity
Modularity is the ability to add or remove major functionality independently of other functions. Every
option will be moved into run-time configuration to allow us to test one firmware. We will separate data
from code so the same code can be downloaded to platform variants, reducing the complexity of
testing. A layer of abstraction will increase portability, allowing us to move from one platform to
another.
Use Object-Oriented Design
Object-oriented C code is efficient and allows for abstraction – for example, allowing us to change host
communication from Ethernet to serial, or to any other interface since the interface is very similar at a
high level, but very different at a low level. Object-orientated design facilitates high cohesion and low
coupling, and locality. High cohesion and low coupling simplifies design of complicated systems and
locality makes new code development and debugging easier.
Simplify Interrupt Service Routines
Remove everything but setting flags in interrupt service routines to increase responsiveness and
decrease number of events missed when handling interrupts.
6. Improve Security
Add Granular access features
Determine the roles that access the device and allow for restrictions to only the areas each role needs.
Add public key validation of firmware.
Prevent unauthorized firmware from running on our hardware.
3. Conclusion
Following the firmware quality improvement strategies set out in this document will achieve the goals of
reducing cost and lead-time of introducing new hardware platforms, reducing cost and lead-time of
introducing new major functionality, and increasing customer satisfaction by eliminating issues before
they leave Engineering and improving our responsiveness to customer issues.

More Related Content

What's hot

Xp methadology
Xp methadologyXp methadology
Xp methadology
christina thomas
 
Rational Functional Tester
Rational Functional TesterRational Functional Tester
Rational Functional Tester
Ravi Anand
 
Performance testing
Performance testingPerformance testing
Performance testing
NVISH Solutions
 
Performance Testing Principles
Performance Testing PrinciplesPerformance Testing Principles
Performance Testing Principles
Dariusz Kozon
 
Incorporating Performance Testing in Agile Development Process
Incorporating Performance Testing in Agile Development ProcessIncorporating Performance Testing in Agile Development Process
Incorporating Performance Testing in Agile Development Process
Michael Vax
 
Full Testing Experience - Visual Studio and TFS 2010
 Full Testing Experience - Visual Studio and TFS 2010 Full Testing Experience - Visual Studio and TFS 2010
Full Testing Experience - Visual Studio and TFS 2010
Ed Blankenship
 
Fact Sheet: Marc Hornbeek, Spiren Communications
Fact Sheet: Marc Hornbeek, Spiren CommunicationsFact Sheet: Marc Hornbeek, Spiren Communications
Fact Sheet: Marc Hornbeek, Spiren Communications
Perforce
 
Test automation lessons from WebSphere Application Server
Test automation lessons from WebSphere Application ServerTest automation lessons from WebSphere Application Server
Test automation lessons from WebSphere Application Server
Robbie Minshall
 
Automate virtualize and smart test the new testing realities
Automate virtualize and smart test   the new testing realitiesAutomate virtualize and smart test   the new testing realities
Automate virtualize and smart test the new testing realities
manoj7698
 
Agile process
Agile processAgile process
Agile process
SatishreddyMandadi
 
IBM DevOps Enabling continuous integration & delivery
IBM DevOps Enabling continuous integration & deliveryIBM DevOps Enabling continuous integration & delivery
IBM DevOps Enabling continuous integration & delivery
Roberto Pozzi
 
Future of QA
Future of QAFuture of QA
Future of QA
amitagarwal2006
 
Software testing
Software testingSoftware testing
Software testing
Aeroqube
 
SAP Testing
SAP TestingSAP Testing
SAP Testing
Josh Case
 
Presentation on 3 Pillars of DevOps - Kovair DevOps
Presentation on 3 Pillars of DevOps - Kovair DevOpsPresentation on 3 Pillars of DevOps - Kovair DevOps
Presentation on 3 Pillars of DevOps - Kovair DevOps
Kovair
 
Case Study AMT Product Testing
Case Study AMT Product TestingCase Study AMT Product Testing
Case Study AMT Product Testing
iFocusSystec
 
Software Test Automation
Software Test AutomationSoftware Test Automation
Software Test Automation
Josh Case
 
Testing in TFS
Testing in TFSTesting in TFS
Testing in TFS
Sampath kumar Mohan
 
Load and Performance tests in agile scrum framework SGI 2013
Load and Performance tests in agile scrum framework SGI 2013Load and Performance tests in agile scrum framework SGI 2013
Load and Performance tests in agile scrum framework SGI 2013
Subrahmaniam S.R.V
 
The Apex Interactive Debugger
The Apex Interactive DebuggerThe Apex Interactive Debugger
The Apex Interactive Debugger
Salesforce Developers
 

What's hot (20)

Xp methadology
Xp methadologyXp methadology
Xp methadology
 
Rational Functional Tester
Rational Functional TesterRational Functional Tester
Rational Functional Tester
 
Performance testing
Performance testingPerformance testing
Performance testing
 
Performance Testing Principles
Performance Testing PrinciplesPerformance Testing Principles
Performance Testing Principles
 
Incorporating Performance Testing in Agile Development Process
Incorporating Performance Testing in Agile Development ProcessIncorporating Performance Testing in Agile Development Process
Incorporating Performance Testing in Agile Development Process
 
Full Testing Experience - Visual Studio and TFS 2010
 Full Testing Experience - Visual Studio and TFS 2010 Full Testing Experience - Visual Studio and TFS 2010
Full Testing Experience - Visual Studio and TFS 2010
 
Fact Sheet: Marc Hornbeek, Spiren Communications
Fact Sheet: Marc Hornbeek, Spiren CommunicationsFact Sheet: Marc Hornbeek, Spiren Communications
Fact Sheet: Marc Hornbeek, Spiren Communications
 
Test automation lessons from WebSphere Application Server
Test automation lessons from WebSphere Application ServerTest automation lessons from WebSphere Application Server
Test automation lessons from WebSphere Application Server
 
Automate virtualize and smart test the new testing realities
Automate virtualize and smart test   the new testing realitiesAutomate virtualize and smart test   the new testing realities
Automate virtualize and smart test the new testing realities
 
Agile process
Agile processAgile process
Agile process
 
IBM DevOps Enabling continuous integration & delivery
IBM DevOps Enabling continuous integration & deliveryIBM DevOps Enabling continuous integration & delivery
IBM DevOps Enabling continuous integration & delivery
 
Future of QA
Future of QAFuture of QA
Future of QA
 
Software testing
Software testingSoftware testing
Software testing
 
SAP Testing
SAP TestingSAP Testing
SAP Testing
 
Presentation on 3 Pillars of DevOps - Kovair DevOps
Presentation on 3 Pillars of DevOps - Kovair DevOpsPresentation on 3 Pillars of DevOps - Kovair DevOps
Presentation on 3 Pillars of DevOps - Kovair DevOps
 
Case Study AMT Product Testing
Case Study AMT Product TestingCase Study AMT Product Testing
Case Study AMT Product Testing
 
Software Test Automation
Software Test AutomationSoftware Test Automation
Software Test Automation
 
Testing in TFS
Testing in TFSTesting in TFS
Testing in TFS
 
Load and Performance tests in agile scrum framework SGI 2013
Load and Performance tests in agile scrum framework SGI 2013Load and Performance tests in agile scrum framework SGI 2013
Load and Performance tests in agile scrum framework SGI 2013
 
The Apex Interactive Debugger
The Apex Interactive DebuggerThe Apex Interactive Debugger
The Apex Interactive Debugger
 

Viewers also liked

Roadmap For Improving Performance
Roadmap For Improving PerformanceRoadmap For Improving Performance
Roadmap For Improving Performance
Steve Mattoon / Gavel International
 
IT Service Management Concepts for Project Managers
IT Service Management Concepts for Project ManagersIT Service Management Concepts for Project Managers
IT Service Management Concepts for Project Managers
Carolyn M. Hennings
 
Service-Oriented Project Management (SOPM)
Service-Oriented Project Management (SOPM)Service-Oriented Project Management (SOPM)
Service-Oriented Project Management (SOPM)
Jerry Manas
 
Measuring The Service Provided By Project Management - Whitepaper
Measuring The Service Provided By Project Management - WhitepaperMeasuring The Service Provided By Project Management - Whitepaper
Measuring The Service Provided By Project Management - Whitepaper
Colin Ellis
 
Securing the Digital Enterprise
Securing the Digital EnterpriseSecuring the Digital Enterprise
Securing the Digital Enterprise
Cybersecurity Education and Research Centre
 
Pro's and Con's of Project Management as a Service
Pro's and Con's of Project Management as a ServicePro's and Con's of Project Management as a Service
Pro's and Con's of Project Management as a Service
aap3itservices
 
Plm as a platform for smb companies
Plm as a platform for smb companiesPlm as a platform for smb companies
Plm as a platform for smb companies
Zero Wait-State
 
Professional Services Roadmap 2011 and beyond
Professional Services Roadmap 2011 and beyondProfessional Services Roadmap 2011 and beyond
Professional Services Roadmap 2011 and beyond
Ambareesh Kulkarni
 
Kalypso Strategic Roadmapping Deck Mar Webinarv4
Kalypso Strategic Roadmapping Deck Mar Webinarv4Kalypso Strategic Roadmapping Deck Mar Webinarv4
Kalypso Strategic Roadmapping Deck Mar Webinarv4
Brsurf2001
 
adaQuest Professional Staffing turns Effortless
adaQuest Professional Staffing turns EffortlessadaQuest Professional Staffing turns Effortless
adaQuest Professional Staffing turns Effortless
Paola Taylor
 
Project Roadmap 2012-2016
Project Roadmap 2012-2016Project Roadmap 2012-2016
Project Roadmap 2012-2016
Human Variome Project
 
Project Management as a Service
Project Management as a ServiceProject Management as a Service
Project Management as a Service
SATYAVEER PAL
 
Workplace Performance Improvement Breakthrough
Workplace Performance Improvement BreakthroughWorkplace Performance Improvement Breakthrough
Workplace Performance Improvement Breakthrough
Steve Mattoon / Gavel International
 
Integrating Project Management with Service Management Best Practices Event B...
Integrating Project Management with Service Management Best Practices Event B...Integrating Project Management with Service Management Best Practices Event B...
Integrating Project Management with Service Management Best Practices Event B...
Google
 
IT Software - Release cycle & Delivery roadmap
IT Software - Release cycle & Delivery roadmapIT Software - Release cycle & Delivery roadmap
IT Software - Release cycle & Delivery roadmap
Jean-François Nguyen
 
Roadmap for Techno-functional Team
Roadmap for Techno-functional TeamRoadmap for Techno-functional Team
Roadmap for Techno-functional Team
thelastzodiac
 
Rapid Results PLM Implementation Methodology
Rapid Results PLM Implementation MethodologyRapid Results PLM Implementation Methodology
Rapid Results PLM Implementation Methodology
ilievadaniela
 
Process Improvement Roadmap
Process Improvement RoadmapProcess Improvement Roadmap
Process Improvement Roadmap
Hany Omar, PMP, ITIL, CMMI, 6σ
 
Balanced Scorecard for CMMI Implementations - Eduardo Espinheira e Paula Gomes
Balanced Scorecard for CMMI Implementations - Eduardo Espinheira e Paula GomesBalanced Scorecard for CMMI Implementations - Eduardo Espinheira e Paula Gomes
Balanced Scorecard for CMMI Implementations - Eduardo Espinheira e Paula Gomes
Paula Gomes
 
Roadmap template
Roadmap templateRoadmap template
Roadmap template
informusa
 

Viewers also liked (20)

Roadmap For Improving Performance
Roadmap For Improving PerformanceRoadmap For Improving Performance
Roadmap For Improving Performance
 
IT Service Management Concepts for Project Managers
IT Service Management Concepts for Project ManagersIT Service Management Concepts for Project Managers
IT Service Management Concepts for Project Managers
 
Service-Oriented Project Management (SOPM)
Service-Oriented Project Management (SOPM)Service-Oriented Project Management (SOPM)
Service-Oriented Project Management (SOPM)
 
Measuring The Service Provided By Project Management - Whitepaper
Measuring The Service Provided By Project Management - WhitepaperMeasuring The Service Provided By Project Management - Whitepaper
Measuring The Service Provided By Project Management - Whitepaper
 
Securing the Digital Enterprise
Securing the Digital EnterpriseSecuring the Digital Enterprise
Securing the Digital Enterprise
 
Pro's and Con's of Project Management as a Service
Pro's and Con's of Project Management as a ServicePro's and Con's of Project Management as a Service
Pro's and Con's of Project Management as a Service
 
Plm as a platform for smb companies
Plm as a platform for smb companiesPlm as a platform for smb companies
Plm as a platform for smb companies
 
Professional Services Roadmap 2011 and beyond
Professional Services Roadmap 2011 and beyondProfessional Services Roadmap 2011 and beyond
Professional Services Roadmap 2011 and beyond
 
Kalypso Strategic Roadmapping Deck Mar Webinarv4
Kalypso Strategic Roadmapping Deck Mar Webinarv4Kalypso Strategic Roadmapping Deck Mar Webinarv4
Kalypso Strategic Roadmapping Deck Mar Webinarv4
 
adaQuest Professional Staffing turns Effortless
adaQuest Professional Staffing turns EffortlessadaQuest Professional Staffing turns Effortless
adaQuest Professional Staffing turns Effortless
 
Project Roadmap 2012-2016
Project Roadmap 2012-2016Project Roadmap 2012-2016
Project Roadmap 2012-2016
 
Project Management as a Service
Project Management as a ServiceProject Management as a Service
Project Management as a Service
 
Workplace Performance Improvement Breakthrough
Workplace Performance Improvement BreakthroughWorkplace Performance Improvement Breakthrough
Workplace Performance Improvement Breakthrough
 
Integrating Project Management with Service Management Best Practices Event B...
Integrating Project Management with Service Management Best Practices Event B...Integrating Project Management with Service Management Best Practices Event B...
Integrating Project Management with Service Management Best Practices Event B...
 
IT Software - Release cycle & Delivery roadmap
IT Software - Release cycle & Delivery roadmapIT Software - Release cycle & Delivery roadmap
IT Software - Release cycle & Delivery roadmap
 
Roadmap for Techno-functional Team
Roadmap for Techno-functional TeamRoadmap for Techno-functional Team
Roadmap for Techno-functional Team
 
Rapid Results PLM Implementation Methodology
Rapid Results PLM Implementation MethodologyRapid Results PLM Implementation Methodology
Rapid Results PLM Implementation Methodology
 
Process Improvement Roadmap
Process Improvement RoadmapProcess Improvement Roadmap
Process Improvement Roadmap
 
Balanced Scorecard for CMMI Implementations - Eduardo Espinheira e Paula Gomes
Balanced Scorecard for CMMI Implementations - Eduardo Espinheira e Paula GomesBalanced Scorecard for CMMI Implementations - Eduardo Espinheira e Paula Gomes
Balanced Scorecard for CMMI Implementations - Eduardo Espinheira e Paula Gomes
 
Roadmap template
Roadmap templateRoadmap template
Roadmap template
 

Similar to Firmware Improvement Roadmap

Unit Testing vs End-To-End Testing_ Understanding Key Differences.pdf
Unit Testing vs End-To-End Testing_ Understanding Key Differences.pdfUnit Testing vs End-To-End Testing_ Understanding Key Differences.pdf
Unit Testing vs End-To-End Testing_ Understanding Key Differences.pdf
kalichargn70th171
 
Software Development Standard Operating Procedure
Software Development Standard Operating Procedure Software Development Standard Operating Procedure
Software Development Standard Operating Procedure
rupeshchanchal
 
What is Low Code Test Automation and its importnce?
What is Low Code Test Automation and its importnce?What is Low Code Test Automation and its importnce?
What is Low Code Test Automation and its importnce?
kalichargn70th171
 
Adm Initial Proposal
Adm Initial ProposalAdm Initial Proposal
Adm Initial Proposal
cfry
 
DevOps and Build Automation
DevOps and Build AutomationDevOps and Build Automation
DevOps and Build Automation
Heiswayi Nrird
 
Software Test Automation - Best Practices
Software Test Automation - Best PracticesSoftware Test Automation - Best Practices
Software Test Automation - Best Practices
Arul Selvan
 
devops certification
devops certificationdevops certification
devops certification
devlabsalliance11
 
devops certification
devops certificationdevops certification
devops certification
devopsuniversity1
 
Code campiasi scm-project-gabriel-cristescu-ditech
Code campiasi scm-project-gabriel-cristescu-ditechCode campiasi scm-project-gabriel-cristescu-ditech
Code campiasi scm-project-gabriel-cristescu-ditech
Codecamp Romania
 
Software engineering introduction
Software engineering introductionSoftware engineering introduction
Software engineering introduction
Vishal Singh
 
Continuous Integration
Continuous IntegrationContinuous Integration
Continuous Integration
Computaris
 
Continuous integration - stability, reliability and speed in software develop...
Continuous integration - stability, reliability and speed in software develop...Continuous integration - stability, reliability and speed in software develop...
Continuous integration - stability, reliability and speed in software develop...
Computaris
 
Dev ops for mainframe innovate session 2402
Dev ops for mainframe innovate session 2402Dev ops for mainframe innovate session 2402
Dev ops for mainframe innovate session 2402
Rosalind Radcliffe
 
OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...
OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...
OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...
Soham Mondal
 
Futureofqa
FutureofqaFutureofqa
Futureofqa
amitagarwal2006
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
nikhil sreeni
 
Estimating test effort part 1 of 2
Estimating test effort part 1 of 2Estimating test effort part 1 of 2
Estimating test effort part 1 of 2
Ian McDonald
 
Converting to the latest COBOL Compiler made simple with the right tools
Converting to the latest COBOL Compiler made simple with the right toolsConverting to the latest COBOL Compiler made simple with the right tools
Converting to the latest COBOL Compiler made simple with the right tools
DevOps for Enterprise Systems
 
Using DevOps to Improve Software Quality in the Cloud
Using DevOps to Improve Software Quality in the CloudUsing DevOps to Improve Software Quality in the Cloud
Using DevOps to Improve Software Quality in the Cloud
TechWell
 
Unit 4
Unit 4Unit 4

Similar to Firmware Improvement Roadmap (20)

Unit Testing vs End-To-End Testing_ Understanding Key Differences.pdf
Unit Testing vs End-To-End Testing_ Understanding Key Differences.pdfUnit Testing vs End-To-End Testing_ Understanding Key Differences.pdf
Unit Testing vs End-To-End Testing_ Understanding Key Differences.pdf
 
Software Development Standard Operating Procedure
Software Development Standard Operating Procedure Software Development Standard Operating Procedure
Software Development Standard Operating Procedure
 
What is Low Code Test Automation and its importnce?
What is Low Code Test Automation and its importnce?What is Low Code Test Automation and its importnce?
What is Low Code Test Automation and its importnce?
 
Adm Initial Proposal
Adm Initial ProposalAdm Initial Proposal
Adm Initial Proposal
 
DevOps and Build Automation
DevOps and Build AutomationDevOps and Build Automation
DevOps and Build Automation
 
Software Test Automation - Best Practices
Software Test Automation - Best PracticesSoftware Test Automation - Best Practices
Software Test Automation - Best Practices
 
devops certification
devops certificationdevops certification
devops certification
 
devops certification
devops certificationdevops certification
devops certification
 
Code campiasi scm-project-gabriel-cristescu-ditech
Code campiasi scm-project-gabriel-cristescu-ditechCode campiasi scm-project-gabriel-cristescu-ditech
Code campiasi scm-project-gabriel-cristescu-ditech
 
Software engineering introduction
Software engineering introductionSoftware engineering introduction
Software engineering introduction
 
Continuous Integration
Continuous IntegrationContinuous Integration
Continuous Integration
 
Continuous integration - stability, reliability and speed in software develop...
Continuous integration - stability, reliability and speed in software develop...Continuous integration - stability, reliability and speed in software develop...
Continuous integration - stability, reliability and speed in software develop...
 
Dev ops for mainframe innovate session 2402
Dev ops for mainframe innovate session 2402Dev ops for mainframe innovate session 2402
Dev ops for mainframe innovate session 2402
 
OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...
OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...
OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...
 
Futureofqa
FutureofqaFutureofqa
Futureofqa
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
 
Estimating test effort part 1 of 2
Estimating test effort part 1 of 2Estimating test effort part 1 of 2
Estimating test effort part 1 of 2
 
Converting to the latest COBOL Compiler made simple with the right tools
Converting to the latest COBOL Compiler made simple with the right toolsConverting to the latest COBOL Compiler made simple with the right tools
Converting to the latest COBOL Compiler made simple with the right tools
 
Using DevOps to Improve Software Quality in the Cloud
Using DevOps to Improve Software Quality in the CloudUsing DevOps to Improve Software Quality in the Cloud
Using DevOps to Improve Software Quality in the Cloud
 
Unit 4
Unit 4Unit 4
Unit 4
 

Firmware Improvement Roadmap

  • 1. Firmware Improvement Roadmap A step-by-step guide for improving firmware projects.
  • 2. Date Author Reason Revision 2016-04-15 Scott Sweeting Broadened Applicability C 2014-12-16 Scott Sweeting Added goal details B 2014-12-02 Scott Sweeting Initial Release A
  • 3. 1. Goals 1. Improve Lead-Time Of New Platform Bring-Up Decrease the amount of time required to bring up new platforms. Quickly bringing up new platforms improves time-to-market, potentially beating competitors to market, gaining market share and increasing the on-sale lifetime. 2. Improve Lead-Time Of Major Functionality Addition/Subtraction Decrease the amount of time required to implement new major functions. Quickly adding or removing major features improves time-to-market, potentially beating competitors to market, gaining market share and increasing the on-sale lifetime. 3. Improve Customer Feedback Decrease amount and severity of negative customer feedback, reduce turn-around time in addressing customer issues. This will increase customer satisfaction and improve sales through word-of-mouth.
  • 4. 2. Strategies 1. Re-Use Code Use a common codebase for all firmware projects. This will improve new platform lead-time by giving us a head start on writing firmware – simply adapt existing firmware to a new platform by writing drivers for new platform. Code that can quickly be adapted to different platforms also allows quick and thorough component supplier evaluations. 2. Create Virtual Devices To the maximum extent possible, use firmware code to develop host PC virtual projects to prototype changes in host control software and nail down protocols. 3. Improve Reliability Reliability is the quality that the device performs to the specifications (including implied specifications). Use Continuous Improvement Testing Verify each internal as well as external release according to the test plan & procedure. Importantly, update the test plan & procedure with the test procedure of each issue as it is resolved. Use Watchdog Timer Using a watchdog timer will allow the device to reset itself when firmware freezes or RAM is corrupt. Allows us to recover a device that cannot easily be cold-booted. Use Long-Term Stability Testing Running tests on units that are powered continuously for days, weeks, and month. This uncovers memory allocation/freeing errors and timers that roll over after amounts of time greater than normal bench testing. Coding issues uncovered with long-term stability testing: memory leaks, counter roll- overs, mutexes that need to be around critical sections. 4. Improve Robustness Robustness is the quality that the device handles unexpected inputs predictably and gracefully. Improving robustness will allow us to diagnose and fix logical errors before they get to customers and reduce time spent fixing errors that do make it to customers. Use Comprehensive Testing Test all possible inputs, not just ones in current use. Use comprehensive testing to verify conformance to specifications. Test Parameters To Each Function Prevent null-pointer exceptions and design and input errors by checking each parameter to each function.
  • 5. Add Error Log To Fix Unreproducible Errors Create an error log that can be retrieved by customers using host control software to be sent to Engineering to allow us to fix errors that cannot be reproduced internally. Bubble Up Errors, Handle Every Error Fix design flaws by bubbling up errors to a function that can handle them. E.g., a function that does division given a divisor as a parameter should return an error if the divisor is zero, and the function that calls it should check for an error. 5. Improve Maintainability Maintainability is the quality that firmware is quick and easy to modify. Improving maintainability will increase our responsiveness to customer issues and decrease turn-around time on adding new features and fixing bugs. Develop A Coding standard Coding standards give code consistency. Coding standards increase readability of code – the most difficult aspect of firmware development. The coding standard will include friendly variable names. The identifier “bufsz” is not more efficient than “bufferSize” when compiled to machine code. A “formula” for naming variables and function reduces development time and developer mental load. E.g.: “set_Mute(UNMUTE)” and “setNoDspChanges(void)” are inconsistent, whereas “MuteSet(UNMUTE)” and “DspChangesSet(FALSE)” are consistent, thus easier to remember when being called from another function. Perform Code reviews Code reviews disseminate news of changes across the team and concerned people from other teams, increase group knowledge, and solicit constructive feedback. Increase Modularity Modularity is the ability to add or remove major functionality independently of other functions. Every option will be moved into run-time configuration to allow us to test one firmware. We will separate data from code so the same code can be downloaded to platform variants, reducing the complexity of testing. A layer of abstraction will increase portability, allowing us to move from one platform to another. Use Object-Oriented Design Object-oriented C code is efficient and allows for abstraction – for example, allowing us to change host communication from Ethernet to serial, or to any other interface since the interface is very similar at a high level, but very different at a low level. Object-orientated design facilitates high cohesion and low coupling, and locality. High cohesion and low coupling simplifies design of complicated systems and locality makes new code development and debugging easier. Simplify Interrupt Service Routines Remove everything but setting flags in interrupt service routines to increase responsiveness and decrease number of events missed when handling interrupts.
  • 6. 6. Improve Security Add Granular access features Determine the roles that access the device and allow for restrictions to only the areas each role needs. Add public key validation of firmware. Prevent unauthorized firmware from running on our hardware. 3. Conclusion Following the firmware quality improvement strategies set out in this document will achieve the goals of reducing cost and lead-time of introducing new hardware platforms, reducing cost and lead-time of introducing new major functionality, and increasing customer satisfaction by eliminating issues before they leave Engineering and improving our responsiveness to customer issues.