Software Engineering for Embedded Systems
eBook - ePub

Software Engineering for Embedded Systems

Methods, Practical Techniques, and Applications

Robert Oshana, Mark Kraeling, Robert Oshana, Mark Kraeling

Share book
  1. 645 pages
  2. English
  3. ePUB (mobile friendly)
  4. Available on iOS & Android
eBook - ePub

Software Engineering for Embedded Systems

Methods, Practical Techniques, and Applications

Robert Oshana, Mark Kraeling, Robert Oshana, Mark Kraeling

Book details
Book preview
Table of contents
Citations

About This Book

Software Engineering for Embedded Systems: Methods, Practical Techniques, and Applications, Second Edition provides the techniques and technologies in software engineering to optimally design and implement an embedded system. Written by experts with a solution focus, this encyclopedic reference gives an indispensable aid on how to tackle the day-to-day problems encountered when using software engineering methods to develop embedded systems. New sections cover peripheral programming, Internet of things, security and cryptography, networking and packet processing, and hands on labs. Users will learn about the principles of good architecture for an embedded system, design practices, details on principles, and much more.

  • Provides a roadmap of key problems/issues and references to their solution in the text
  • Reviews core methods and how to apply them
  • Contains examples that demonstrate timeless implementation details
  • Users case studies to show how key ideas can be implemented, the rationale for choices made, and design guidelines and trade-offs

Frequently asked questions

How do I cancel my subscription?
Simply head over to the account section in settings and click on ā€œCancel Subscriptionā€ - itā€™s as simple as that. After you cancel, your membership will stay active for the remainder of the time youā€™ve paid for. Learn more here.
Can/how do I download books?
At the moment all of our mobile-responsive ePub books are available to download via the app. Most of our PDFs are also available to download and we're working on making the final remaining ones downloadable now. Learn more here.
What is the difference between the pricing plans?
Both plans give you full access to the library and all of Perlegoā€™s features. The only differences are the price and subscription period: With the annual plan youā€™ll save around 30% compared to 12 months on the monthly plan.
What is Perlego?
We are an online textbook subscription service, where you can get access to an entire online library for less than the price of a single book per month. With over 1 million books across 1000+ topics, weā€™ve got you covered! Learn more here.
Do you support text-to-speech?
Look out for the read-aloud symbol on your next book to see if you can listen to it. The read-aloud tool reads text aloud for you, highlighting the text as it is being read. You can pause it, speed it up and slow it down. Learn more here.
Is Software Engineering for Embedded Systems an online PDF/ePUB?
Yes, you can access Software Engineering for Embedded Systems by Robert Oshana, Mark Kraeling, Robert Oshana, Mark Kraeling in PDF and/or ePUB format, as well as other popular books in Technology & Engineering & Electrical Engineering & Telecommunications. We have over one million books available in our catalogue for you to explore.
1

Software Engineering for Embedded and Real-Time Systems

Rob Oshana Vice President of Software Engineering R&D, NXP Semiconductors, Austin, TX, United States

Abstract

Over the past 10 years or so, the world of computing has moved from large, static, desk-top machines to small, mobile, and embedded devices. The methods, techniques, and tools for developing software systems that were successfully applied in the former scenario are not as readily applicable in the latter. Software systems running on networks of mobile, embedded devices must exhibit properties that are not always required of more traditional systems.

Keywords

Software engineering; Software system; Embedded system; Real-time system; Hardware abstraction layers (HALs); Efficiency; Embedded software; Software driver

1 Software Engineering

Over the past 10 years or so, the world of computing has moved from large, static, desk-top machines to small, mobile, and embedded devices. The methods, techniques, and tools for developing software systems that were successfully applied in the former scenario are not as readily applicable in the latter. Software systems running on networks of mobile, embedded devices must exhibit properties that are not always required of more traditional systems:
  • ā€¢ Near-optimal performance
  • ā€¢ Robustness
  • ā€¢ Distribution
  • ā€¢ Dynamism
  • ā€¢ Mobility
This book will examine the key properties of software systems in the embedded, resource-constrained, mobile, and highly distributed world. We will assess the applicability of mainstream software engineering methods and techniques (e.g., software design, component-based development, software architecture, system integration, and testing) to this domain.
One of the differences in software engineering for embedded systems is the additional knowledge the engineer has of electrical power and electronics; physical interfacing of digital and analog electronics with the computer; and, software design for embedded systems and digital signal processors (DSPs).
Over 95% of software systems are embedded. Consider the devices you use at home daily:
  • ā€¢ Cell phone
  • ā€¢ iPod
  • ā€¢ Microwave
  • ā€¢ Satellite receiver
  • ā€¢ Cable box
  • ā€¢ Car motor controller
  • ā€¢ DVD player
So what do we mean by software engineering for embedded systems? Letā€™s look at this in the context of engineering in general. Engineering is defined as the application of scientific principles and methods to the construction of useful structures and machines. This includes disciplines such as:
  • ā€¢ Mechanical engineering
  • ā€¢ Civil engineering
  • ā€¢ Chemical engineering
  • ā€¢ Electrical engineering
  • ā€¢ Nuclear engineering
  • ā€¢ Aeronautical engineering
Software engineering is a term that is 35 years old, originating at a NATO conference in Garmisch, Germany, October 7ā€“11, 1968. Computer science is its scientific basis with many aspects having been made systematic in software engineering:
  • ā€¢ Methods/methodologies/techniques
  • ā€¢ Languages
  • ā€¢ Tools
  • ā€¢ Processes
We will explore all these in this book.
The basic tenets of software engineering include:
  • ā€¢ Development of software systems whose size/complexity warrants team(s) of engineers (or as David Parnas puts it, ā€œmulti-person construction of multi-version softwareā€).
  • ā€¢ Scopeā€”we will focus on the study of software processes, development principles, techniques, and notations.
  • ā€¢ Goal, in our case the production of quality software, delivered on time, within budget, satisfying the customersā€™ requirements and the usersā€™ needs.
With this comes the ever-present difficulties of software engineering that still exist today:
  • ā€¢ There are relatively few guiding scientific principles.
  • ā€¢ There are few universally applicable methods.
  • ā€¢ Software engineering is as much managerial/psychological/sociological as it is technological.
These difficulties exist because software engineering is a unique form of engineering:
  • ā€¢ Software is malleable
  • ā€¢ Software construction is human-intensive
  • ā€¢ Software is intangible
  • ā€¢ Software problems are unprecedentedly complex
  • ā€¢ Software directly depends upon the hardware
  • ā€¢ Software solutions require unusual rigor
  • ā€¢ Software has a discontinuous operational nature
Software engineering is not the same as software programming. Software programming usually involves a single developer developing ā€œToyā€ applications and involves a relatively short life span. With programming, there is usually a single stakeholder, or perhaps a few, and projects are mostly one-of-a-kind systems built from scratch with minimal maintenance.
Software engineering on the other hand involves teams of developers with multiple roles building complex systems with an indefinite life span. There are numerous stakeholders, families of systems, a heavy emphasis on reuse to amortize costs, and a maintenance phase that accounts for over 60% of the overall development costs.
There are both economic and management aspects of software engineering. Software production includes the development and maintenance (evolution) of the system. Maintenance costs represent most of all deve...

Table of contents