SlideShare a Scribd company logo
1 of 6
Download to read offline
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

Rational Functional Tester
Rational Functional TesterRational Functional Tester
Rational Functional TesterRavi Anand
 
Performance Testing Principles
Performance Testing PrinciplesPerformance Testing Principles
Performance Testing PrinciplesDariusz 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 ProcessMichael 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 2010Ed Blankenship
 
Fact Sheet: Marc Hornbeek, Spiren Communications
Fact Sheet: Marc Hornbeek, Spiren CommunicationsFact Sheet: Marc Hornbeek, Spiren Communications
Fact Sheet: Marc Hornbeek, Spiren CommunicationsPerforce
 
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 ServerRobbie 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 realitiesmanoj7698
 
IBM DevOps Enabling continuous integration & delivery
IBM DevOps Enabling continuous integration & deliveryIBM DevOps Enabling continuous integration & delivery
IBM DevOps Enabling continuous integration & deliveryRoberto Pozzi
 
Software testing
Software testingSoftware testing
Software testingAeroqube
 
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 DevOpsKovair
 
Case Study AMT Product Testing
Case Study AMT Product TestingCase Study AMT Product Testing
Case Study AMT Product TestingiFocusSystec
 
Software Test Automation
Software Test AutomationSoftware Test Automation
Software Test AutomationJosh Case
 
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 2013Subrahmaniam S.R.V
 

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

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 ManagersCarolyn 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 - WhitepaperColin Ellis
 
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 Serviceaap3itservices
 
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 companiesZero Wait-State
 
Professional Services Roadmap 2011 and beyond
Professional Services Roadmap 2011 and beyondProfessional Services Roadmap 2011 and beyond
Professional Services Roadmap 2011 and beyondAmbareesh Kulkarni
 
Kalypso Strategic Roadmapping Deck Mar Webinarv4
Kalypso Strategic Roadmapping Deck Mar Webinarv4Kalypso Strategic Roadmapping Deck Mar Webinarv4
Kalypso Strategic Roadmapping Deck Mar Webinarv4Brsurf2001
 
adaQuest Professional Staffing turns Effortless
adaQuest Professional Staffing turns EffortlessadaQuest Professional Staffing turns Effortless
adaQuest Professional Staffing turns EffortlessPaola Taylor
 
Project Management as a Service
Project Management as a ServiceProject Management as a Service
Project Management as a ServiceSATYAVEER PAL
 
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 roadmapJean-François Nguyen
 
Roadmap for Techno-functional Team
Roadmap for Techno-functional TeamRoadmap for Techno-functional Team
Roadmap for Techno-functional Teamthelastzodiac
 
Rapid Results PLM Implementation Methodology
Rapid Results PLM Implementation MethodologyRapid Results PLM Implementation Methodology
Rapid Results PLM Implementation Methodologyilievadaniela
 
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 GomesPaula Gomes
 
Roadmap template
Roadmap templateRoadmap template
Roadmap templateinformusa
 

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

Software Development Standard Operating Procedure
Software Development Standard Operating Procedure Software Development Standard Operating Procedure
Software Development Standard Operating Procedure rupeshchanchal
 
Adm Initial Proposal
Adm Initial ProposalAdm Initial Proposal
Adm Initial Proposalcfry
 
DevOps and Build Automation
DevOps and Build AutomationDevOps and Build Automation
DevOps and Build AutomationHeiswayi Nrird
 
Software Test Automation - Best Practices
Software Test Automation - Best PracticesSoftware Test Automation - Best Practices
Software Test Automation - Best PracticesArul Selvan
 
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-ditechCodecamp Romania
 
Software engineering introduction
Software engineering introductionSoftware engineering introduction
Software engineering introductionVishal Singh
 
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
 
Continuous Integration
Continuous IntegrationContinuous Integration
Continuous IntegrationComputaris
 
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 2402Rosalind Radcliffe
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Developmentnikhil 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 2Ian 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 toolsDevOps 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 CloudTechWell
 
Test driven development
Test driven developmentTest driven development
Test driven developmentNascenia IT
 

Similar to Firmware Improvement Roadmap (20)

Software Development Standard Operating Procedure
Software Development Standard Operating Procedure Software Development Standard Operating Procedure
Software Development Standard Operating Procedure
 
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 - 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...
 
Continuous Integration
Continuous IntegrationContinuous Integration
Continuous Integration
 
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
 
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
 
Unit 4
Unit 4Unit 4
Unit 4
 
Test Driven Development (TDD)
Test Driven Development (TDD)Test Driven Development (TDD)
Test Driven Development (TDD)
 
Test driven development
Test driven developmentTest driven development
Test driven development
 

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.