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

Condividi libro
  1. 645 pagine
  2. English
  3. ePUB (disponibile sull'app)
  4. Disponibile su iOS e Android
eBook - ePub

Software Engineering for Embedded Systems

Methods, Practical Techniques, and Applications

Robert Oshana, Mark Kraeling, Robert Oshana, Mark Kraeling

Dettagli del libro
Anteprima del libro
Indice dei contenuti
Citazioni

Informazioni sul libro

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

Domande frequenti

Come faccio ad annullare l'abbonamento?
ƈ semplicissimo: basta accedere alla sezione Account nelle Impostazioni e cliccare su "Annulla abbonamento". Dopo la cancellazione, l'abbonamento rimarrƠ attivo per il periodo rimanente giƠ pagato. Per maggiori informazioni, clicca qui
ƈ possibile scaricare libri? Se sƬ, come?
Al momento ĆØ possibile scaricare tramite l'app tutti i nostri libri ePub mobile-friendly. Anche la maggior parte dei nostri PDF ĆØ scaricabile e stiamo lavorando per rendere disponibile quanto prima il download di tutti gli altri file. Per maggiori informazioni, clicca qui
Che differenza c'ĆØ tra i piani?
Entrambi i piani ti danno accesso illimitato alla libreria e a tutte le funzionalitĆ  di Perlego. Le uniche differenze sono il prezzo e il periodo di abbonamento: con il piano annuale risparmierai circa il 30% rispetto a 12 rate con quello mensile.
Cos'ĆØ Perlego?
Perlego ĆØ un servizio di abbonamento a testi accademici, che ti permette di accedere a un'intera libreria online a un prezzo inferiore rispetto a quello che pagheresti per acquistare un singolo libro al mese. Con oltre 1 milione di testi suddivisi in piĆ¹ di 1.000 categorie, troverai sicuramente ciĆ² che fa per te! Per maggiori informazioni, clicca qui.
Perlego supporta la sintesi vocale?
Cerca l'icona Sintesi vocale nel prossimo libro che leggerai per verificare se ĆØ possibile riprodurre l'audio. Questo strumento permette di leggere il testo a voce alta, evidenziandolo man mano che la lettura procede. Puoi aumentare o diminuire la velocitĆ  della sintesi vocale, oppure sospendere la riproduzione. Per maggiori informazioni, clicca qui.
Software Engineering for Embedded Systems ĆØ disponibile online in formato PDF/ePub?
SƬ, puoi accedere a Software Engineering for Embedded Systems di Robert Oshana, Mark Kraeling, Robert Oshana, Mark Kraeling in formato PDF e/o ePub, cosƬ come ad altri libri molto apprezzati nelle sezioni relative a Tecnologia e ingegneria e Ingegneria elettronica e telecomunicazioni. Scopri oltre 1 milione di libri disponibili nel nostro catalogo.

Informazioni

Editore
Newnes
Anno
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...

Indice dei contenuti