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

Partager le livre
  1. 645 pages
  2. English
  3. ePUB (adapté aux mobiles)
  4. Disponible sur iOS et Android
eBook - ePub

Software Engineering for Embedded Systems

Methods, Practical Techniques, and Applications

Robert Oshana, Mark Kraeling, Robert Oshana, Mark Kraeling

DĂ©tails du livre
Aperçu du livre
Table des matiĂšres
Citations

À propos de ce livre

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

Foire aux questions

Comment puis-je résilier mon abonnement ?
Il vous suffit de vous rendre dans la section compte dans paramĂštres et de cliquer sur « RĂ©silier l’abonnement ». C’est aussi simple que cela ! Une fois que vous aurez rĂ©siliĂ© votre abonnement, il restera actif pour le reste de la pĂ©riode pour laquelle vous avez payĂ©. DĂ©couvrez-en plus ici.
Puis-je / comment puis-je télécharger des livres ?
Pour le moment, tous nos livres en format ePub adaptĂ©s aux mobiles peuvent ĂȘtre tĂ©lĂ©chargĂ©s via l’application. La plupart de nos PDF sont Ă©galement disponibles en tĂ©lĂ©chargement et les autres seront tĂ©lĂ©chargeables trĂšs prochainement. DĂ©couvrez-en plus ici.
Quelle est la différence entre les formules tarifaires ?
Les deux abonnements vous donnent un accĂšs complet Ă  la bibliothĂšque et Ă  toutes les fonctionnalitĂ©s de Perlego. Les seules diffĂ©rences sont les tarifs ainsi que la pĂ©riode d’abonnement : avec l’abonnement annuel, vous Ă©conomiserez environ 30 % par rapport Ă  12 mois d’abonnement mensuel.
Qu’est-ce que Perlego ?
Nous sommes un service d’abonnement Ă  des ouvrages universitaires en ligne, oĂč vous pouvez accĂ©der Ă  toute une bibliothĂšque pour un prix infĂ©rieur Ă  celui d’un seul livre par mois. Avec plus d’un million de livres sur plus de 1 000 sujets, nous avons ce qu’il vous faut ! DĂ©couvrez-en plus ici.
Prenez-vous en charge la synthÚse vocale ?
Recherchez le symbole Écouter sur votre prochain livre pour voir si vous pouvez l’écouter. L’outil Écouter lit le texte Ă  haute voix pour vous, en surlignant le passage qui est en cours de lecture. Vous pouvez le mettre sur pause, l’accĂ©lĂ©rer ou le ralentir. DĂ©couvrez-en plus ici.
Est-ce que Software Engineering for Embedded Systems est un PDF/ePUB en ligne ?
Oui, vous pouvez accĂ©der Ă  Software Engineering for Embedded Systems par Robert Oshana, Mark Kraeling, Robert Oshana, Mark Kraeling en format PDF et/ou ePUB ainsi qu’à d’autres livres populaires dans Tecnologia e ingegneria et Ingegneria elettronica e telecomunicazioni. Nous disposons de plus d’un million d’ouvrages Ă  dĂ©couvrir dans notre catalogue.

Informations

Éditeur
Newnes
Année
2019
ISBN
9780128094334
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 des matiĂšres