Altia welcomes Brian Hancock, our Director of Sales for New England! Read our press release for more information.
Brian will serve the medical device industry, consumer electronics, building automation and security markets in Connecticut, Rhode Island, Massachusetts, New Hampshire, Vermont and Maine. If you would like to get in touch with Brian, please e-mail him at firstname.lastname@example.org.
In a recent EE Times newsletter, the editors re-ran a series of design articles by Niall Murphy, software engineer and author of Front Panel: Designing Software for Embedded User Interfaces. The one article from this series that really caught my eye was “Interfacing the User.” Murphy begins with a bold statement:
“Good software engineers don’t always make good interface designers. Sometimes they trust the user too much.”
As a software engineer who formerly did this kind of work at Ford, Visteon and Motorola, I suppose I should be offended by this remark. My experience at Altia, however, has taught me that Mr. Murphy is correct. Software engineers cannot do interface design on their own. It takes a (small) village – and the right tool – to create a great interface.
No matter how talented your software engineering team may be, they only provide a fraction of the expertise required to create winning UIs, which (as companies like Apple have demonstrated) result in market-leading products. Software engineers need to collaborate with their systems engineering counterparts as well as experts in Human Factors and Industrial Design to complete the circle of knowledge and know-how. The resulting user interface then needs to be tested by real people who can confirm ease of use and provide feedback about the design.
The best method to achieve this collaboration is via a model-based development approach. All of the tools from the various teams involved in interface design can be integrated into a single environment to create a working model that can be tested and refined early in development. The final executable specifications for that model can be baselined as a requirement model and then act as the initial software design, which can then be refined for embedded target performance and limitations. From that point, deployable graphics code can be generated from that refined model with a code generator like DeepScreen.