Software Engineering Principles
This presentation is the property of its rightful owner.
Sponsored Links
1 / 23

Northeast Ohio’s Firmware Experts. PowerPoint PPT Presentation


  • 107 Views
  • Uploaded on
  • Presentation posted in: General

Software Engineering Principles. Northeast Ohio’s Firmware Experts. Why a Embedded Software Engineer  should consider this training material . About Us. Who we are: USA Firmware, LLC est. 2011 Address: 10060 Brecksville Road, Brecksville, Ohio. Email: [email protected]

Download Presentation

Northeast Ohio’s Firmware Experts.

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Northeast ohio s firmware experts

Software Engineering Principles

Northeast Ohio’s Firmware Experts.

Why a Embedded Software Engineer should consider this training material


About us

About Us

  • Who we are:

    • USA Firmware, LLC est. 2011

    • Address: 10060 Brecksville Road, Brecksville, Ohio.

    • Email: [email protected]

  • What we do:

    • Firmware & Hardware Design

    • Firmware Consulting

    • Embedded Systems and Firmware Training

    • Firmware Career Services

  • Clients:

    • RF power metrology, environmental emulation systems, wireless home, motion controls, motor control industry, instrumentation, inventory control management, ignition control, after market automotive, and others.

  • Learn more at usafirmware.com


Joe embedded software engineer asks

Joe, Embedded SoftwareEngineer Asks

I have written much Software for Embedded Systems, so why do I need to learn about Software Engineering?


Joan embedded software engineer responds

Joan, Embedded SoftwareEngineer Responds

Every day you use or come in contact with products controlled by software whose failure would be costly or disastrous. Are you sure you know the best ways to design and build high quality firmware?


How prevalent are embedded system software errors

How Prevalent are Embedded System Software Errors?

  • Google Search yielded the following:

    • Embedded System Problems yielded 23,800,000 Results

    • Embedded System Software Problems yielded 10,800,000 Results

    • Embedded System Design Problems yielded 34,700,000 Results

    • Testing Embedded System Software yielded 50,100,000 Results

    • Embedded System Errors yielded 21,100,000 Results

    • Embedded System Bugs yielded 1,520,000 Results

    • Embedded System Disasters yielded 477,000 Results

    • Embedded System Mistakes yielded 2,070,000 Results

    • Embedded System Faults yielded 6,150,000 Results


And how prevalent are firmware errors

And how Prevalent are Firmware Errors?

  • Google Search yielded the following:

    • Firmware Problems yielded 44,200,000 Results

    • Firmware Errors yielded 14,500,000 Results

    • Firmware Bugs yielded 8,390,000 Results

    • Firmware Disasters yielded 2,830,000 Results

    • Firmware Mistakes yielded 1,100,000 Results

    • Firmware Faults yielded 954,000 Results


Well known embedded and firmware failures

Well Known Embedded and Firmware Failures

  • Toyota announced a recall of 160,000 of its Prius hybrid vehicles following reports of vehicle warning lights illuminating for no reason, and cars' gasoline engines stalling unexpectedly caused by a programming error in the smart car's embedded code.

  • Working code for the Ariane 4 rocket is reused in the Ariane 5, but the Ariane 5's faster engines trigger a bug in an arithmetic routine inside the rocket's flight computer. The error is in the code that converts a 64-bit floating-point number to a 16-bit signed integer. The faster engines cause the 64-bit numbers to be larger in the Ariane 5 than in the Ariane 4, triggering an overflow condition that results in the flight computer crashing.

  •  Patriot Missile Bug (1991)During the first Gulf War, an American Patriot Missile system was deployed to protect US Troops, allies, and Saudi and Israeli civilians from Iraqi SCUD missile attacks. A software rounding error in the one of the early versions of the system incorrectly calculated the time, causing it to ignore some of the incoming targets. Result - A Patriot Missile Battery in Saudi Arabia fails to intercept an incoming Iraqi SCUD. The missile destroyed an American Army barracks, killing 28 soldiers and injuring around 100 other people


More well known embedded and firmware failures

More Well Known Embedded and Firmware Failures

  • In a series of accidents, therapy planning software created by Multidata Systems International, a U.S. firm, miscalculates the proper dosage of radiation for patients undergoing radiation therapy. Multidata's software allows a radiation therapist to draw on a computer screen the placement of metal shields called "blocks" designed to protect healthy tissue from the radiation. But the software will only allow technicians to use four shielding blocks, and the Panamanian doctors wish to use five.

  • The Ping of Death. A lack of sanity checks and error handling in the IP fragmentation reassembly code makes it possible to crash a wide variety of operating systems by sending a malformed "ping" packet from anywhere on the internet. Most obviously affected are computers running Windows, which lock up and display the so-called "blue screen of death" when they receive these packets. But the attack also affects many Macintosh and Unix systems as well.

  • LA Airport Flights Grounded (2007)A single faulty piece of embedded software, on a network card, sends out faulty data on the United States Customs and Border Protection network, bringing the entire system to a halt. Nobody is able to leave or enter the U.S. from the LA Airport for over eight hours. Result - Over 17,000 planes grounded for the duration of the outage


Still more well known embedded and firmware failures

Still More Well Known Embedded and Firmware Failures

  • Sea Launch lost the $100 million ICO F-1 spacecraft when the second stage shut down prematurely. The ground control software had been modified to accommodate a slight change in requirements. One line of code, a conditional meant to close a valve just prior to launch, was somehow deleted. As a result all of the helium used to pressurize the second stage's fuel tanks leaked out. Pre-flight tests missed the error.

  • In 1997 Guidant announced that one of their new pacemakers occasionally drives the patient's heartbeat to 190 beats per minute.  The company reassured the pacemaking public that there wasn't really a problem; the code had been fixed and disks were being sent across the country to doctors. However, the pacemaker is implanted subcutaneously. There's no 'net connection, no USB port or PCMCIA slot. Turns out that it's possible to hold an inductive loop over the implanted pacemaker. A small coil in the device receives energy to charge the battery. It's possible to modulate the signal and upload new code into Flash. The robopatients were reprogrammed and no one was hurt.


You cannot test quality into a product

You Cannot Test Quality into a Product!

  • Robert Glass in his Facts and Fallacies of Software Engineering (Addison-Wesley, 2002, ISBN 0321117425) estimates that for each 25% increase in requirements the code's complexity explodes by 100%. The number of required tests probably increases at about the same rate. Yet testing is nearly always left till the end of the project, when the schedule is at max stress. The boss is shrieking "ship it! Ship it!" while the spouse is wondering if you'll ever come home again.

  • The tests get shortchanged. Disaster follows.


Joe embedded software engineer asks1

Joe, Embedded Software Engineer Asks

If testing is not sufficient, how do I produce a quality product?


Joan embedded software engineer responds1

Joan, Embedded SoftwareEngineer Responds

By applying Software Engineering Principles found in the SWEBOK* throughout the development process.

*Software Engineering Body of Knowledge


What is the software engineering body of knowledge swebok

What is the Software Engineering Body of Knowledge (SWEBOK)?

  • The SWEBOK consists of the following knowledge areas

    • Software Requirements - 11%

    • Software Design - 11%

    • Software Construction - 9%

    • Software Testing - 11%

    • Software Maintenance - 5%

    • Software Configuration Management - 5%

    • Software Engineering Management - 8%

    • Software Engineering Process- 5%

    • Software Engineering Methods - 4%

    • Software Quality- 7%

    • Software Engineering Professional Practice - 5%

    • Software Engineering Economics - 5%

    • Computing Foundations - 5%

    • Mathematical Foundations - 3%

    • Engineering Foundations - 4%

  • The percentages indicate the proportion of the total Computer Software Developed Professional (CSDP) examination


Test your understanding of software engineering

Some Sample questions

Answers are found in the notes Section

Test Your Understanding of Software Engineering


Sample software requirements question

Sample Software Requirements Question

  • Select the only valid testable requirement

    • The software system should provide acceptable performance under maximum load conditions.

    • The system interface shall use the ASCII character set.

    • If the system should fail in operation, there should be minimal loss of data.

    • The software development process used should ensure that all of the required reviews have been carried out.

    • Structured programming should be used for program development.

    • The software must be developed in such a way that it can be used by inexperienced users


Sample software design question

Sample Software Design Question

Which of the following choices can BEST make internationalization relatively painless?

  • Storing text for on-screen messages in a common location rather than in the code.

  • Designing internationalization into the architecture at the earliest stages.

  • Selecting fonts easily available for the platform and locale.

  • Handling monetary and tax calculations with data-driven architecture instead of code to make changing the rules simpler.


Sample software design question1

Sample Software Design Question

Activity A

Which of the following correctly describes the purpose of a Jackson structure diagram?

  • Shows a sequence of events in a process.

  • Shows the actions and transitions between a finite number of states.

  • Describes the data structures manipulated by a program in terms of sequence, selection, and iteration.

  • Describes the data flow among a set of processes.

Activity B

Activity C


Sample software construction question

Sample Software Construction Question

  • A software engineer is writing a routine for an air conditioning system, which contains over 30 temperature sensors and 30 corresponding air handling controllers. The routine will input a sensor ID code and the temperature target for the temperature sensor, and based on the real time temperature value, provide input (type of air flow to be provided, based on a set of fixed parameters) to the air handler at the sensor location.

  • Question: In order to produce the best performance for the system, which of the following techniques should be used?

  • use a case statement for the sensor IDs

  • store the sensor IDs in a binary search tree for efficient access

  • implement a table lookup for controllers indexed to the sensor IDs

  • convert the sensor IDs to floating point numbers for quick computation


Sample software construction question1

Sample Software Construction Question

  • In order to minimize scope in coding a program, which of the following tactics should a software engineer adopt?

  • Break related statements into separate routines.

  • Reduce the length of routine parameter lists by using global variables.

  • Initialize loop variables at the beginning of a routine rather than near the loop entrance.

  • Use named constants instead of literals


Sample software test question

Sample Software Test Question

A test engineer wants to design test cases that concentrate on what the user does. Which type of testing would give the best results?

  • fault-based testing

  • scenario-based testing

  • random testing

  • data flow testing


Sample software testing question

Sample Software Testing Question

  • Which of the following measures would provide the most insight into the effectiveness of the system testing process?

  • Productivity (e.g., system test hours/KLOC)

  • Total system test defects found and fixed

  • Total system test cost (total engineer hours in system test)

  • Test removal cost (system test hours/system test defects)


Sample software quality question

Sample Software Quality Question

  • Indicate that you agree or disagree with the leader’s instruction to his team with a yes or no response

    • You have reviewed the requirements for your teams software project. Management has stressed, with a requirement, that the finished product must be of high quality. As a result, you tell your team that the product will be tested thoroughly to assure its quality.


How do i gain the knowledge to answer the sample questions

How do I Gain the Knowledge to answer the Sample Questions?

  • USA Firmware Training Services in conjunction with the IEEE will offer a 4 Day Software Engineering Principles training course for Embedded System Engineers covering the following Knowledge Area Focus (KAF) areas

    • Software Requirements

    • Software Design

    • Software Construction

    • Software Testing

    • Software Quality

  • Dates and Locations TBD


  • Login