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

Buch teilen
  1. 645 Seiten
  2. English
  3. ePUB (handyfreundlich)
  4. Über iOS und Android verfügbar
eBook - ePub

Software Engineering for Embedded Systems

Methods, Practical Techniques, and Applications

Robert Oshana, Mark Kraeling, Robert Oshana, Mark Kraeling

Angaben zum Buch
Buchvorschau
Inhaltsverzeichnis
Quellenangaben

Über dieses Buch

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

Häufig gestellte Fragen

Wie kann ich mein Abo kĂźndigen?
Gehe einfach zum Kontobereich in den Einstellungen und klicke auf „Abo kündigen“ – ganz einfach. Nachdem du gekündigt hast, bleibt deine Mitgliedschaft für den verbleibenden Abozeitraum, den du bereits bezahlt hast, aktiv. Mehr Informationen hier.
(Wie) Kann ich BĂźcher herunterladen?
Derzeit stehen all unsere auf Mobilgeräte reagierenden ePub-Bßcher zum Download ßber die App zur Verfßgung. Die meisten unserer PDFs stehen ebenfalls zum Download bereit; wir arbeiten daran, auch die ßbrigen PDFs zum Download anzubieten, bei denen dies aktuell noch nicht mÜglich ist. Weitere Informationen hier.
Welcher Unterschied besteht bei den Preisen zwischen den Aboplänen?
Mit beiden Aboplänen erhältst du vollen Zugang zur Bibliothek und allen Funktionen von Perlego. Die einzigen Unterschiede bestehen im Preis und dem Abozeitraum: Mit dem Jahresabo sparst du auf 12 Monate gerechnet im Vergleich zum Monatsabo rund 30 %.
Was ist Perlego?
Wir sind ein Online-Abodienst fßr Lehrbßcher, bei dem du fßr weniger als den Preis eines einzelnen Buches pro Monat Zugang zu einer ganzen Online-Bibliothek erhältst. Mit ßber 1 Million Bßchern zu ßber 1.000 verschiedenen Themen haben wir bestimmt alles, was du brauchst! Weitere Informationen hier.
UnterstĂźtzt Perlego Text-zu-Sprache?
Achte auf das Symbol zum Vorlesen in deinem nächsten Buch, um zu sehen, ob du es dir auch anhÜren kannst. Bei diesem Tool wird dir Text laut vorgelesen, wobei der Text beim Vorlesen auch grafisch hervorgehoben wird. Du kannst das Vorlesen jederzeit anhalten, beschleunigen und verlangsamen. Weitere Informationen hier.
Ist Software Engineering for Embedded Systems als Online-PDF/ePub verfĂźgbar?
Ja, du hast Zugang zu Software Engineering for Embedded Systems von Robert Oshana, Mark Kraeling, Robert Oshana, Mark Kraeling im PDF- und/oder ePub-Format sowie zu anderen beliebten Bßchern aus Tecnologia e ingegneria & Ingegneria elettronica e telecomunicazioni. Aus unserem Katalog stehen dir ßber 1 Million Bßcher zur Verfßgung.

Information

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...

Inhaltsverzeichnis