Saturday, October 23, 2010

Test Driven Development Embedded C with James Grenning Nov 30th to Dec 1st 2010 in Cleveland

It is rare that anyone of interest comes to the Pittsburgh/Cleveland region to speak, on any subject at all. They might make Philadelphia, but never Pittsburgh, sadly for those who live in this part of the world.

Nick Barendt has gotten James Grenning to give a three day class at The Lean Dog boat in Cleveland Ohio, November 30-Dec 1, 2010, on Test Driven Development for Embedded C.

$1495 After 11/11/10. $1195 Early Bird Price until 11/11/10. Register here.

I covered James upcoming new book Test Driven Development for Embedded C [Nov./2010] in my blog about Makefile tip #0 on automatic serial numbers to be embedded in C code.

Test Driven Development is a powerful technique for building embedded software. This hands-on course teaches the practice of Test Driven Development in the challenging environment of C. In this course you will learn how TDD helps overcome some of the challenges embedded developers face including: unpredictable schedules, poor quality, and the problems that follow. In addition, embedded software developers must conquer the realities of concurrent hardware/software development, scarce target hardware availability, long download times, high deployment costs, as well as the challenges of testing embedded C.

TDD leads to better designs, towards more object oriented approaches to C. In this call you will also learn some of the design principles that can help to guide engineers to better designs.

Most of you have existing legacy code. In this class you will learn valuable techniques for dealing with legacy code. You will see incremental approaches to getting control of the legacy code with tests making improvements to the design less risky.

Test-Driven Development, a key agile practice, helps software developers improve schedule predictability and product quality and can do the same for embedded developers. TDD is valuable even outside of agile development methods.

This course describes the problems addressed by TDD, as well as the additional challenges and benefits of applying it to embedded software. You will learn the test driven techniques as well as specific design approaches to make your C code to testable today, maintainable tomorrow, and ready for a long useful life.

This course will get you and your team well on the way to applying TDD for Embedded C in your development efforts.

Saturday, October 2, 2010

Cleveland/Pittsburgh region Firmware Engineers of Northeast Ohio Get Together Oct. 12th.

For any blog readers in the Cleveland/Pittsburgh region, you might find this event of interest:


I had been asked to lead one of the 'Open Space' table discussions, alas I won't be able to make it myself due to a scheduling conflict.

Coming up the last day of November and the first couple of days of December, Nick Barendt has James W. Grenning of Test Driven Development fame coming to Cleveland to give us a class on TDD. Maybe you'll be able to make it?

Saturday, September 25, 2010

"Encourage the USPTO to stop issuing software patents; deadline September 27" 2010. Bilski v. Kappos

Readers of the patent section of the Software Safety Website know that Software Patents are bad.

Software Patents stifle innovation and raise the specter of Lawyers showing up.

I generate a lot of code, unfortunately I'm afraid to publish most of it. I'm afraid that I will accidentally stumble into a Software Patent that should have never been implemented in the first place. Anything that raises the specter of lawyers is bad.

With short notice (Deliberately so We The People could not comment and the big company lawyers could?) the United States Patent Office is seeking guidance on how Software Patents should be handled in the future.

The Free Software Foundation has the details of how to submit your comments, which must be in by this Monday Sept. 27th 2010.

When was a Software Patent issued to a little guy or gal like you or I? They all seem to be to the Mega. Corps. that just want to kill competition. The language R++ is a perfect example of this. If Software Patents where in effect as today then the world would not have C++.

Get your comments in now.

All of this came to a head with the Bilski v. Kappos decision in June of 2010.

Saturday, September 11, 2010

PSGroove unexpected consequences. Guilt by Association?

I participate in several Open Source projects, for example AVR-LibC, gEDA/PCB (mostly PCB), wxWidgets (Even got my name in the wxBook) and LUFA 'Lightweight USB Framework for AVR'.

LUFA is a project of Dean Camera's, which makes a clean API for Atmel USB parts. Dean's code makes it easy to get a Atmel USB project up and going.

I had recently submitted some bug findings and fixes to Dean, for which he acknowledged me by name on his blog in several different places.

What neither of us saw coming was the PSGroove project for the Sony Play Station 3 [TM].

In early PS3 systems Sony allowed "other operating systems", typically meaning Linux, to be booted on the PS3. For reasons known only to Sony, they removed this "other operating system" option to the dismay of many. The PSGroove project was a way to restore the functionality that many had paid for, that Sony removed.

While some code is actually meant to be stolen like this package from Netrino, most code is not. Unfortunately the PSGroove project could be exploited to aid software piracy. So I wanted to be clear that neither Dean nor I support software piracy.

The Business Software Alliance is one of the few independent organization that actively fight software piracy, if you want to help stop what damages us all.

"One of the consequences to all this is that every single bleeding USB AVR in the world (which were already in short supply) have been snapped up, either by board houses trying to pump out some boards to sell to gamers as quickly as possible, or by the gamers themselves as pre-made development boards."

Sony rapidly responded to this vulnerability rendering this attack inert (I'd use an other word here, but it would set off Family Filters).

Now that PSGroove is no longer useful, can I get some Atmel AT90USB1287 again?

Atmel has really been screwing my company over on delivery times, so maybe I'll bump into you at Renesas DevCon Conference 2010?

MISRA tutorial and seminar announcement. Standards or Guidelines?

If you are a world traveler, The Motor Industry Software Reliability Association (MISRA) just announced a tutorial and seminar:

"A tutorial and seminar in collaboration with the Safety-Critical Systems Club (SCSC) will be held on 24 and 25 November 2010 in London, UK. On the first day there will be two half-day tutorials, on the MISRA C and MISRA C++ guidelines for the use of these languages in critical systems. The second day will be a seminar that will consider how the MISRA guidelines support safety-related systems development in various industry sectors, and we are particularly keen to feature presentations of case studies. If you would like to speak at this seminar, please discuss your idea with me in the first instance.

Further details of the programme will be available in due course.

There will also be a small exhibition on the second day. Details of the exhibition are available from Joan Atkinson at the SCSC

____________________
Dr David Ward
MISRA Project Manager
Article:

http://www.misra.org.uk/forum/viewtopic.php?f=210&t=1058&p=2032#p2032"

For those not familiar with MISRA, MISRA publishes a set of 'Guidelines' on 'Best Practices' for the languages C and C++. For example what languages constructs are bug prone and should be avoided in embedded systems used in vehicles. Many companies outside of the automotive industry have adopted the use of these guidelines, to help keep bugs out of their products.

Netrino also has a similar set of guidelines, with some links to some real world tips: Embedded C Coding Standard.

A technical semantic nit I want to pick is that these are guidelines. Standards are set by recognized bodies like IEEE and IEC - International Electrotechnical Commission. I frequently see things like "MISRA Standard". The distinction is a subtle one, but could be important to a product liability suite. Which is not to say that a company can not set 'internal standards' for coding practices. English is such a wonderful language... :-(

IEEE P730 Standards Software Quality Assurance, IEEE/EIA 12207.0 Standard for Information Technology - Software Life Cycle Processes, and IEC 61508 Functional safety of electrical/electronic/programmable electronic safety-related systems, are all example of standards used in Embedded Systems. There are more examples at my Software Safety site.

Monday, September 6, 2010

Tips on improving productivity. Lets Do Lunch.

The one thing I really like about Agile Development is that it promotes the forty hour work week, with the tenet being tired programmers make mistakes. Read Jack Ganssle's Memo to my boss, to truly understand why the forty hour work week is a good thing.

As to why we are here today, it is because of this article on CNN Money: Overworked? Take back your lunch hour by Anne Fisher.

Anne Fisher, AKA 'Ask Annie' points us to several resources to improve our daily productivity. Seems the best way to improve productivity and creativity is to stop doing both, that is take a break and rest. One of the resources is the The Energy Audit from the Energy Project. My audit score was a mediocre nine out of twenty (9 to 12:=" Significant energy deficit"). Guess that is what happens when you work twelve hour days for years on end? What was your score?

I did not like how the questions were biased to the negative, as most started with "I don't". Questions and statements geared to self-improvement should always be framed in the positive. Makes me wonder if the scores would be much lower (lower being better in this quiz) if they were worded in a positive tone? The cynic in me wonders if that is deliberate to drive business to the project?

On the question about be distracted by incoming email, I've found a good solution that works for me. I check email when I arrive in the morning, at 10 AM, and Noon, 2 PM, and 4 PM. No pop-ups to derail my train of thought like I see on most of my colleagues systems. Been doing this for years, and so far no one has complained about a slow response to an email. After taking this quiz, I think I'll check email after lunch instead of before. Do your really want to be conditioned like Pavlov's Dog, to respond to ringing bells and ringing pop-ups?

"Nothing is gained—and much is lost—by constantly pushing people to achieve more and more in less time and with fewer resources; rejuvenation and rest are necessary for creative breakthroughs and broader perspectives."
-- Tony Schwartz, CEO of The Energy Project.

Ironically if you are to busy to read the book, you can listen to it while building stress setting in traffic on CD:

Sunday, September 5, 2010

"GCC - 'We make free software affordable'". A Short history of GCC.

Richard Hillesley has written a short and interesting history
of the GCC compiler
, where its been, and where we might be going with LLVM.

For anyone that is interested in the history of computers, valuable background to understand how we got where we are today, the book Hackers: Heroes of the Computer Revolution - 25th Anniversary Edition by Steven Levy is a *must read*.

Frama-C to prove formal properties for critical software.

I just came across a project, which has been around for a couple of years, that looks like it could be very useful: Frama-C. Frama-C stands for Framework for Modular Analysis of C programs.

Frama-C is intended to be an extensible static analyzer, that can prove formal properties for critical software. Frama-C does static analysis, dead code removal, security checks, and other functions depending on which plug-ins are used.

Armand, one of the project participants, is working on implementing the MISRA-C 2004 rules for the static analyzer.

Trying out Frama-C: analyzing a simple C program.