Real-time systems design and analysis : tools for the practitioner

"An important resource, this book offers an introductory text and overview of real-time systems: systems where timeliness is a crucial part of the correctness of the system. The book contains a pragmatic overview of key topics (computer architecture and organization, operating systems, software...

Description complète

Enregistré dans:
Détails bibliographiques
Auteur principal : Laplante Phillip A. (Auteur)
Autres auteurs : Ovaska Seppo J. (Auteur)
Format : Livre
Langue : anglais
Titre complet : Real-time systems design and analysis : tools for the practitioner / Phillip A. Laplante, Seppo J. Ovaska
Édition : 4eme ed.
Publié : Hoboken, N.J. : Wiley-IEEE Press , cop. 2012
Description matérielle : 1 vol. (XXI-560 p.)
Sujets :
Documents associés : Autre format: Real-time systems design and analysis
  • 1. Fundamentals of real-time systems
  • 1.1 Concepts and misconceptions
  • 1.1.1 definitions for real-time systems
  • 1.1.2 Usual misconceptions
  • 1.2 Multidisciplinary design challenges
  • 1.2.1 Influencing disciplines
  • 1.3 Birth and evolution of real-time systems
  • 1.3.1 Diversifying applications
  • 1.3.2 Advancements behind modern real-time systems
  • 1.4 Summary
  • 1.5 Exercises, references
  • 2. Hardware for real-time systems
  • 2.1 Basic processor architecture
  • 2.1.1 Von Neumann architecture
  • 2.1.2 Instruction processing
  • 2.1.3 Input/output and interrupt considerations
  • 2.2 Memory technologies
  • 2.2.1 Different classes of memory
  • 2.2.2 Memory access and layout issues
  • 2.2.3 Hierarchical memory organization
  • 2.3 Architectural advancements
  • 2.3.1 Pipelined instruction processing
  • 2.3.2 Superscalar and very long instruction word architectures
  • 2.3.3 Multi-core processors
  • 2.3.4 Complex instruction set versus reduced instruction set
  • 2.4 Peripheral interfacing
  • 2.4.1 Interrupt-driven input/output
  • 2.4.2 Direct memory access
  • 2.4.3 Analog and digital input/output
  • 2.5 Microprocessor versus microcontroller
  • 2.5.1 Microprocessors
  • 2.5.2 Standard microcontrollers
  • 2.5.3 Custom microcontrollers
  • 2.6 Distributed real-time architectures
  • 2.6.1 Fieldbus networks
  • 2.6.2 Time-triggered architectures
  • 2.7 Summary
  • 2.8 Exercises, references
  • 3. Real-time operating systems
  • 3.1 From pseudokernels to operating systems
  • 3.1.1 Miscellaneous pseudokernels
  • 3.1.2 Interrupt-only systems
  • 3.1.3 Preemptive priority systems
  • 3.1.4 Hybrid scheduling systems
  • 3.1.5 The task control block model
  • 3.2 Theoretical foundations of scheduling
  • 3.2.1 Scheduling framework
  • 3.2.2 Round-robin scheduling
  • 3.2.3 Cyclic code scheduling
  • 3.2.4 Fixed-priority scheduling : rate-monotonic approach
  • 3.2.5 Dynamic priority scheduling : earliest deadline first approach
  • 3.3 System services for application programs
  • 3.3.1 Linear buffers
  • 3.3.2 Ring buffers
  • 3.3.3 Mailboxes
  • 3.3.4 Semaphores
  • 3.3.5 Deadlock and starvation problems
  • 3.3.6 Priority inversion problem
  • 3.3.7 Timer and clock services
  • 3.3.8 Application study : a real-time structure
  • 3.4 Memory management issues
  • 3.4.1 Stack and task control block management
  • 3.4.2 Multiple-stack arrangement
  • 3.4.3 Memory management in the task control block model
  • 3.4.4 Swapping, overlaying, and paging
  • 3.5 Selecting real-time operating systems
  • 3.5.1 Buying versus building
  • 3.5.2 Selection criteria and a metric for commercial real-time operating systems
  • 3.5.3 Case study : selecting a commercial real-time operating system
  • 3.5.4 Supplementary criteria for multi-core and energy-aware support
  • 3.6.Summary
  • 3.7 Exercises, references
  • 4. Programming languages for real-time systems
  • 4.1 Coding of real-time software
  • 4.1.1 Fitness of a programming language for real-time applications
  • 4.1.2 Coding standards for real-time software
  • 4.2 Assembly language
  • 4.3 Procedural languages
  • 4.3.1.Modularity and typing issues
  • 4.3.2 Parameter passing and dynamic memory allocation
  • 4.3.3 Exception handling
  • 4.3.4 Cardelli's metrics and procedural languages
  • 4.4 Object-oriented languages
  • 4.4.1 Synchronizing objects and garbage collection
  • 4.4.2 Cardelli's metrics and object-oriented languages
  • 4.4.3 Object-oriented versus procedural languages
  • 4.5 Overview of programming languages
  • 4.5.1 Ada
  • 4.5.2 C
  • 4.5.3 C++
  • 4.5.4 C#
  • 4.5.5 Java
  • 4.5.6 Real-time Java
  • 4.5.7 Special real-time languages
  • 4.6 Automatic code generation
  • 4.6.1 Toward production-quality code
  • 4.6.2 Remaining challenges
  • 4.7 Compiler optimizations of code
  • 4.7.1 Standard optimization Techniques
  • 4.7.2 Additional optimization considerations
  • 4.8.Summary
  • 4.9.Exercises, references
  • 5. Requirements engineering methodologies
  • 5.1 Requirements engineering for real-time systems
  • 5.1.1 Requirements engineering as a process
  • 5.1.2 Standard requirement classes
  • 5.1.3 Specification of real-time software
  • 5.2 Formal methods in system specification
  • 5.2.1 Limitations of formal methods
  • 5.2.2 Finite state machines
  • 5.2.3 Statecharts
  • 5.2.4 Petri nets
  • 5.3 Semiformal methods in system specification
  • 5.3.1 Structured analysis and structured design
  • 5.3.2 Object-oriented analysis and the Unified Modeling Language
  • 5.3.3 Recommendations on specification approach
  • 5.4 The requirements document
  • 5.4.1 Structuring and composing requirements
  • 5.4.2 Requirements validation
  • 5.5 Summary
  • 5.6.Exercises
  • 5.7 Appendix 1: case study in software requirements specification
  • 5.7.1 Introduction
  • 5.7.2 Overall description
  • 5.7.3 Specific requirements
  • 6. Software design approaches
  • 6.1 Qualities of real-time software
  • 6.1.1 Eight qualities from reliability to verifiability
  • 6.2 Software engineering principles
  • 6.2.1 Seven principles from rigor and formality to traceability
  • 6.2.2 The design activity
  • 6.3 Procedural design approach
  • 6.3.1 Parnas partitioning
  • 6.3.2 Structured design
  • 6.3.3 Design in procedural form using finite state machines
  • 6.4 Object-oriented design approach
  • 6.4.1 Advantages of object orientation
  • 6.4.2 Design patterns
  • 6.4.3 Design using the Unified Modeling Language
  • 6.4.4 Object-oriented versus procedural approaches
  • 6.5 Life cycle models
  • 6.5.1 Waterfall model
  • 6.5.2 V-model
  • 6.5.3 Spiral model
  • 6.5.4 Agile methodologies
  • 6.6.Summary
  • 6.7 Exercises
  • 6.8 Appendix 1 : case study in designing real-time software
  • 6.8.1 Introduction
  • 6.8.2 Overall description
  • 6.8.3 Design decomposition
  • 6.8.4 Requirements traceability
  • 7. Performance analysis techniques
  • 7.1 Real-time performance analysis
  • 7.1.1 Theoretical preliminaries
  • 7.1.2 Arguments related to parallelization
  • 7.1.3 Execution time estimation from program code
  • 7.1.4 Analysis of polled-loop and coroutine systems
  • 7.1.5 Analysis of round-robin systems
  • 7.1.6 Analysis of fixed-period systems
  • 7.1.7 Analysis of nonperiodic systems
  • 7.2 Applications of queuing theory
  • 7.2.1 Single-server queue model
  • 7.2.2 Arrival and processing rates
  • 7.2.3 Buffer size calculation
  • 7.2.4 Response time modeling
  • 7.2.5 Other results from queuing theory
  • 7.3 Input/output performance
  • 7.3.1 Buffer size calculation for time-invariant bursts
  • 7.3.2 Buffer size calculation for time-variant bursts
  • 7.4 Analysis of memory requirements
  • 7.4.1 Memory utilization analysis
  • 7.4.2 Optimizing memory usage
  • 7.5 Summary
  • 7.6 Exercises, references
  • 8. Additional considerations for the practitioner
  • 8.1 Metrics in software engineering
  • 8.1.1 Lines of source code
  • 8.1.2 Cyclomatic complexity
  • 8.1.3 Halstead's metrics
  • 8.1.4 Function points
  • 8.1.5 Feature points
  • 8.1.6 Metrics for object-oriented software
  • 8.1.7 Criticism against software metrics
  • 8.2 Predictive cost modeling
  • 8.2.1 Basic COCOMO 81
  • 8.2.2 Intermediate and detailed COCOMO 81
  • 8.2.3 COCOMO II
  • 8.3 Uncertainty in real-time systems
  • 8.3.1 The three dimensions of uncertainty
  • 8.3.2 Sources of uncertainty
  • 8.3.3 Identifying uncertainty
  • 8.3.4 Dealing with uncertainty
  • 8.4 Design for fault tolerance
  • 8.4.1 Spatial fault-tolerance
  • 8.4.2 Software black boxes
  • 8.4.3 TV-version programming
  • 8.4.4 Built-in-test software
  • 8.4.5 Spurious and missed interrupts
  • 8.5 Software testing and systems integration
  • 8.5.1 Testing techniques
  • 8.5.2 Debugging approaches
  • 8.5.3 System-level testing
  • 8.5.4 Systems integration
  • 8.5.5 Testing patterns and exploratory testing
  • 8.6 Performance optimization techniques
  • 8.6.1 Scaled numbers for faster execution
  • 8.6.2 Look-up tables for functions
  • 8.6.3 Real-time device drivers
  • 8.7 Summary
  • 8.8 Exercises, references
  • 9. Future visions on real-time systems
  • 9.1 Vision : real-time hardware
  • 9.1.1 Heterogeneous soft multi-cores
  • 9.1.2 Architectural issues with individual soft cores
  • 9.1.3 More advanced fieldbus networks and simpler distributed nodes
  • 9.2 Vision : real-time operating systems
  • 9.2.1 One coordinating system task and multiple isolated application tasks
  • 9.2.2 Small, platform independent virtual machines
  • 9.3 Vision : real-time programming languages
  • 9.3.1 The UML++ as a future "programming language"
  • 9.4 Vision : real-time systems engineering
  • 9.4.1 Automatic verification of software
  • 9.4.2 Conservative requirements engineering
  • 9.4.3 Distance collaboration in software projects
  • 9.4.4 Drag-and-drop systems
  • 9.5 V