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

Compartir libro
  1. 645 páginas
  2. English
  3. ePUB (apto para móviles)
  4. Disponible en iOS y Android
eBook - ePub

Software Engineering for Embedded Systems

Methods, Practical Techniques, and Applications

Robert Oshana, Mark Kraeling, Robert Oshana, Mark Kraeling

Detalles del libro
Vista previa del libro
Índice
Citas

Información del 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

Preguntas frecuentes

¿Cómo cancelo mi suscripción?
Simplemente, dirígete a la sección ajustes de la cuenta y haz clic en «Cancelar suscripción». Así de sencillo. Después de cancelar tu suscripción, esta permanecerá activa el tiempo restante que hayas pagado. Obtén más información aquí.
¿Cómo descargo los libros?
Por el momento, todos nuestros libros ePub adaptables a dispositivos móviles se pueden descargar a través de la aplicación. La mayor parte de nuestros PDF también se puede descargar y ya estamos trabajando para que el resto también sea descargable. Obtén más información aquí.
¿En qué se diferencian los planes de precios?
Ambos planes te permiten acceder por completo a la biblioteca y a todas las funciones de Perlego. Las únicas diferencias son el precio y el período de suscripción: con el plan anual ahorrarás en torno a un 30 % en comparación con 12 meses de un plan mensual.
¿Qué es Perlego?
Somos un servicio de suscripción de libros de texto en línea que te permite acceder a toda una biblioteca en línea por menos de lo que cuesta un libro al mes. Con más de un millón de libros sobre más de 1000 categorías, ¡tenemos todo lo que necesitas! Obtén más información aquí.
¿Perlego ofrece la función de texto a voz?
Busca el símbolo de lectura en voz alta en tu próximo libro para ver si puedes escucharlo. La herramienta de lectura en voz alta lee el texto en voz alta por ti, resaltando el texto a medida que se lee. Puedes pausarla, acelerarla y ralentizarla. Obtén más información aquí.
¿Es Software Engineering for Embedded Systems un PDF/ePUB en línea?
Sí, puedes acceder a Software Engineering for Embedded Systems de Robert Oshana, Mark Kraeling, Robert Oshana, Mark Kraeling en formato PDF o ePUB, así como a otros libros populares de Tecnologia e ingegneria y Ingegneria elettronica e telecomunicazioni. Tenemos más de un millón de libros disponibles en nuestro catálogo para que explores.

Información

Editorial
Newnes
Año
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...

Índice