Software-intensive systems, in which a considerable fraction of the system development efforts is dedicated to the development of embedded software, are often regarded as the most important software engineering field in the years to come. They are expected to be one key factor of success for many industries such as, for example, the automotive sector, transportation, or medical devices. As today technical systems also become connected to each other using network technology, we no longer only have technical systems which are controlled by isolated operating embedded software. Instead, the software may include complex information processing capabilities and the coordination between the different technical systems via networks taking hard real-time constraints into account.
Modeling embedded systems often results in a mix of models from a multitude of disciplines such as software engineering, control engineering, mechanical engineering, and electrical engineering. Block diagrams in systems engineering and the Unified Modeling Language (UML) in software engineering, are prominent examples of domain specific modeling techniques used for modeling. Recently, several steps towards integrating both worlds can be observed. UML 2.0 component diagrams offer a system view which has been originally invented for complex real-time systems in the telecommunications domain. SysML suggests an extension of the UML for systems engineering. The required integration has to combine the usually continuous world considered by systems engineering and the discrete software engineering view and thus results in techniques for hybrid systems which support both continuous as well as discrete behavior.
Embedded systems are often safety-critical applications where their correct operation is vital to ensure the safety of the public and environment. Examples include shut-down systems for nuclear power plants, fly-by-wire aircrafts, autonomous train control software or anti-lock braking systems in automobiles. Safety is a system property and thus cannot be studied by simply taking into account the software part of an embedded system, only. However, in this lecture we will address the general engineering aspects of safety in a rather superficial manner and mainly concentrate on the specific problems of safety-critical systems which contain (complex) software parts.
In this lecture, we will review the current state of the art of software engineering for embedded systems taking into account the techniques available for the different development activities such as project management, requirements engineering, analysis & design, implementation, and verification & validation. This will, in particular, include the study of available techniques for the development of systems, which are safety-critical, have hard real-time constraints, and are hybrid systems. Also an overview about the current state of the art for the model-driven development of embedded systems is provided. In addition to the lecture exercises are organized to give an insight how to use state of the art approaches and tools. Within small projects the students can contribute the gained knowledge by developing solutions for the Robotino-Robot by using these introduced tools and concepts. The exercises and projects will be organized (partially) in the context of the currently established new Cyber-Physical-Systems-Laboratory (CPS-Lab) at the Hasso-Plattner-Institute.
Organization & Introduction | 01:29:22 | |
---|---|---|
Organizational Informations | 00:09:36 | |
Introduction | 00:14:43 | |
Embedded Sytems Today & Tomorrow | 00:11:08 | |
System Characteristics | 00:21:51 | |
Robotino Robot Computing Equipment | 00:11:50 | |
Continuous/Discrete/Hybrid Systems | 00:14:54 | |
Robotino Demo | 00:05:20 |
Foundations | 01:30:08 | |
---|---|---|
Terminology | 00:16:16 | |
Models & Preservation of Properties | 00:10:38 | |
Model Types | 00:19:54 | |
Variable Structure | 00:06:24 | |
Model Semantics | 00:09:32 | |
Time Automata Semantics | 00:10:05 | |
Hybrid Automata Semantics | 00:17:19 |
Model Properties | 01:19:10 | |
---|---|---|
Model Properties | 00:16:22 | |
Types of Sequence Properties | 00:16:56 | |
Stability | 00:11:21 | |
Controllabilty | 00:12:08 | |
Summary | 00:18:39 | |
Probabilistic Models - Preview | 00:03:44 |
Application Domains & Life Cycle | 01:30:27 | |
---|---|---|
Probabilistic Models | 00:09:44 | |
Generalized Stochastic Petri Nets | 00:15:40 | |
GSPN Modeling | 00:10:28 | |
Application Domains & Life Cycle | 00:11:31 | |
Challenges | 00:13:47 | |
Industrial Automation | 00:12:13 | |
Involved Disciplines | 00:17:04 |
Life Cycle Models & Requirements | 01:37:00 | |
---|---|---|
Software Engineering Life Cycle Models | 00:13:23 | |
Embedded System Life Cycle Models | 00:15:30 | |
Pre-Production & Production | 00:16:01 | |
Advanced Life Cycle Models & MDD | 00:15:19 | |
Discussion & Summary | 00:06:12 | |
Requirements | 00:13:17 | |
System vs. Software | 00:17:18 |
Exercise 1 | 01:08:31 | |
---|---|---|
Organizational Remarks | 00:06:48 | |
Reiteration - Timed Automata - UPPAAL | 00:17:23 | |
UPPAAL - Verifier - Examples | 00:18:45 | |
UPPAAL - Verifier Demo | 00:04:08 | |
Exercise: Traffic-Light | 00:05:14 | |
Exercise: Bouncing Ball | 00:16:13 |
Requirements | 01:27:48 | |
---|---|---|
Requirement Analysis | 00:16:08 | |
Requirement Management | 00:11:13 | |
Requirement Specifications | 00:19:37 | |
Specification Techniques | 00:09:50 | |
SysML | 00:15:23 | |
Trade Analysis | 00:15:37 |
Dependability Requirements | 01:30:57 | |
---|---|---|
Example | 00:15:23 | |
Safety | 00:14:59 | |
Fail-Safe & Fail-Operational | 00:14:31 | |
Hazard Analysis | 00:18:22 | |
Hazard Analysis & Process | 00:06:17 | |
Risk Analysis | 00:21:25 |
Software Reliability and Availability | 01:25:17 | |
---|---|---|
SIL Implecations | 00:07:25 | |
Process & Software Requirements | 00:14:41 | |
Completeness | 00:18:42 | |
Software Reliability and Availability | 00:14:56 | |
Reliability Metrics | 00:14:45 | |
Limitations of Specification Validation | 00:07:07 | |
Discussion & Summary | 00:07:41 |
Controller Design | 00:52:36 | |
---|---|---|
Controller Design | 00:07:04 | |
Speed Idle Control | 00:21:07 | |
Toolkits and Features | 00:12:31 | |
Tool-Support | 00:11:51 |
Methods, Analysis and Design | 01:24:09 | |
---|---|---|
Introduction | 00:15:05 | |
Object Structuring | 00:17:17 | |
Analysis | 00:15:52 | |
Parametric Constraint Diagram | 00:09:39 | |
Activity Diagrams | 00:16:28 | |
Design | 00:09:48 |
Advanced Design Concepts & Design Dependable Embedded Systems | 01:28:35 | |
---|---|---|
Software Patterns | 00:16:21 | |
Software Architecture | 00:19:35 | |
Toolkits and Frameworks | 00:05:19 | |
Design Dependable Embedded Systems | 00:17:56 | |
Techniques for Fault Tolerance | 00:15:03 | |
Recovery Blocks | 00:14:21 |
Design for Reliability, Availability and Safety | 01:37:47 | |
---|---|---|
Design for Reliability | 00:15:28 | |
Parallel Fail Silent vs. Majority Voting | 00:09:18 | |
Design for Availability | 00:12:52 | |
Design for Safety | 00:17:52 | |
Design Guided by Hazard Analysis | 00:20:03 | |
Hazard Control | 00:17:16 | |
Discussion & Summary | 00:04:58 |
Introduction & Manual Coding | 01:33:55 | |
---|---|---|
Introduction | 00:16:16 | |
Virtual Machine | 00:10:52 | |
Manual Coding | 00:21:44 | |
Coding Patterns | 00:14:43 | |
Synchronization | 00:14:36 | |
Memory Management & Safety | 00:15:44 |
Code Generation, MDD & MDA and Verification & Validation | 01:30:49 | |
---|---|---|
Discussion | 00:03:29 | |
Code Generation | 00:16:44 | |
Other Effects | 00:15:43 | |
Weak Synchronicity | 00:14:55 | |
MDD & MDA | 00:15:06 | |
Verification & Validation | 00:13:35 | |
Modeling | 00:11:17 |
Verification & Validation, Summary and Outlook | 01:18:55 | |
---|---|---|
Model Checking | 00:13:43 | |
Why is Model-Checking Software Difficult? | 00:13:00 | |
Dynamic Analysis | 00:13:54 | |
Pre-Production | 00:12:04 | |
Summary | 00:16:03 | |
Outlook | 00:10:11 |