Testing is the primary hardware and software verification technique used by industry today. Usually, it is ad hoc, error prone, and very expensive. In recent years, however, many attempts have been made to develop more sophisticated formal testing methods. This coherent book provides an in-depth assessment of this emerging field, focusing on formal testing of reactive systems. This book is based on a seminar held in Dagstuhl Castle, Germany, in January 2004. It presents 19 carefully reviewed and revised lectures given at the seminar in a well-balanced way ensuring competent complementary coverage of all relevant aspects. An appendix provides a glossary for model-based testing and basics on finite state machines and on labelled transition systems. The lectures are presented in topical sections on testing of finite state machines, testing of labelled transition systems, model-based test case generation, tools and case studies, standardized test notation and execution architectures, and beyond testing.
Manfred Broy Boeken






Software pioneers
- 728bladzijden
- 26 uur lezen
A lucid statement of the philosophy of modular programming can be found in a 1970 textbook on the design of system programs by Gouthier and Pont [1, l Cfl0. 23], which we quote below: A well-defined segmentation of the project effort ensures system modularity. Each task fonos a separate, distinct program module. At implementation time each module and its inputs and outputs are well-defined, there is no confusion in the intended interface with other system modules. At checkout time the in tegrity of the module is tested independently; there are few sche duling problems in synchronizing the completion of several tasks before checkout can begin. Finally, the system is maintained in modular fashion; system errors and deficiencies can be traced to specific system modules, thus limiting the scope of detailed error searching. Usually nothing is said about the criteria to be used in dividing the system into modules. This paper will discuss that issue and, by means of examples, suggest some criteria which can be used in decomposing a system into modules. A Brief Status Report The major advancement in the area of modular programming has been the development of coding techniques and assemblers which (1) allow one modu1e to be written with little knowledge of the code in another module, and (2) alJow modules to be reas sembled and replaced without reassembly of the whole system.
Software development for the automotive domain has become the enabling te- nologyforalmostallsafety-criticalandcomfortfunctionso? eredtothecustomer. Ninety percentofallinnovations inautomotive systems aredirectly or indirectly enabled by embedded software. The numbers of serious accidents have declined in recent years, despite constantly increasing tra? c; this is correlated with the introduction of advanced, software-enabled functionality for driver assistance, such as electronic stability control. Software contributes signi? cantly to the - tomotive value chain. By 2010 it is estimated that software will make up 40% of the value creation of automotive electrics/electronics. However, with the large number of software-enabled functions, their int- actions, and the corresponding networking and operating infrastructure, come signi? cant complexities both during the automotive systems engineering p- cess and at runtime. A central challenge for automotive systems development is the scattering of functionality across multiple subsystems, such as electronic control units (ECUs) and the associated networks. As an example, consider the central locking systems (CLS), whose functionality is spread out over up to 19 di? erent ECUs in some luxury cars. Of course, this includes advanced functi- ality, such as seat positioning and radio tuning according to driver presets upon entry, as well as unlocking in case of a detected impact or accident. However, thisexampledemonstratesthatmodernautomotivesystemsbridgecomfort-and safety-critical functionality. This induces particular demands on safety and - curity, and, in general, software and systems quality. The resulting challenges and opportunities were discussed, in depth, at the second Automotive Software Workshop San Diego (ASWSD)2006, on whose results we report here.
This text discusses the philosophy of modular programming, emphasizing well-defined project segmentation for system modularity. It highlights the clarity of module interfaces, independent testing, and ease of maintenance. The paper aims to explore criteria for dividing systems into modules and notes advancements in coding techniques that facilitate module independence and reassembly.
Automotive software connected services in mobile networks
- 154bladzijden
- 6 uur lezen
Software development for the automotive domain is currently subject to a silent revolution. On the one hand, software has become the enabling technology for almost all safety-critical and comfort functions o? ered to the customer. A total of 90 % of all innovations in automotive systems are directly or indirectly - abled by software. Today’s luxury cars contain up to 80 electronic control units (ECUs) and 5 di? erent, inter-connectednetworkplatforms, overwhich some700 software-enabled functions are distributed. On the other hand, the complexity induced by this largenumber of functions, their interactions, and their supporting infrastructure has started to becomethe limiting factor for automotive software development. Adequate management of this complexity is particularly important; the following list highlights three of the corresponding challenges: First, the dependencies between safety-critical and comfort functions are rapidly increasing; a simple example is the interplay of airbag controland power seat control in the case of an accident. Careful analysis and design of these dependencies are necessary to yield correct software solutions. Second, advances in wired and wireless networking infrastructures enable - terconnection between cars and backend service providers (e. g., to call for help in cases of emergency), between cars and devices brought into the car by drivers and passengers (such as cell phones, PDAs, and laptops), and even among cars. This dramatically shifts the focus from the development of individual software solutionsresidingondedicatedECUstotheirdistributionandinteractionwithin and beyond car boundaries.
Specification and Development of Interactive Systems
- 348bladzijden
- 13 uur lezen
This book offers a mathematical and logical framework for software and systems engineering, focusing on modular system development through component specifications and refinement concepts. It targets computer scientists and engineers interested in foundational principles rather than practical industrial methods.
Software Engineering hat das ingenieurmäßige Entwickeln umfangreicher Softwaresysteme zum Ziel. Kritische Größen sind Kosten, Termine und Qualität. Neben unterschiedlichen Themengebieten der Softwaretechnik umfasst das Software Engineering aber insbesondere auch Themen der Projektplanung, der Projektorganisation und der Projektdurchführung, also das Management und die Organisation von Softwareprojekten. Dieses Fachbuch führt in die grundlegenden Aufgaben und Zusammenhänge der Organisation und des Managements von Softwareprojekten ein. Es richtet sich an Praktiker, Berufseinsteiger und Studierende der Informatik und behandelt die folgenden Themen: - Grundlagen zu Softwareprojekten und deren Organisation Vorgehensmodelle im Software Engineering - Unternehmens- und Projektorganisation Projektdefinition, Aufwandsschätzung, Angebots- und Vertragswesen - Projektmanagement- und QS-Verfahren - Techniken der Planung, Kontrolle und Steuerung von Softwareprojekten - Metriken, Messung und Reifegradmodelle für Softwareprojekte Mit zahlreichen Übungen werden die Inhalte vertieft und in einen praktisch anwendbaren Kontext gestellt.
Die Grundlagen der Softwaretechnik werden umfassend behandelt, wobei der Schwerpunkt auf systematischer und modellbasierter Software- sowie Systementwicklung liegt. Agile Methoden finden ebenfalls Berücksichtigung. Die Autoren betonen die gleichwertige Behandlung praktischer Aspekte und theoretischer Grundlagen, was das Buch sowohl für Fachleute als auch für Lehrzwecke geeignet macht. Ein systematisches Framework ermöglicht eine integrierte Darstellung ausgewählter Konzepte und Methoden, die aufeinander abgestimmt sind.
Logische und Methodische Grundlagen der Entwicklung verteilter Systeme
Unter Mitarbeit von Alexander Malkis
Softwareentwicklung erfordert – ausgehend von informellen Problemstellungen – Spezifikationen unter Festlegung der Daten- und Rechenstrukturen, Implementierungen und die Verifikation der Korrektheit. Zur Bewältigung dieser Aufgaben hat die Informatik eine Reihe grundlegender Ansätze und Methoden entwickelt, die in zwei Bänden in einem einheitlichen Rahmen zusammengefasst und an Beispielen erläutert werden. Der erste Band widmet sich der Spezifikationen von Daten- und Rechenstrukturen, der Spezifikation und Implementierung sowie dem Nachweis der Korrektheit funktionaler, prozeduraler und objektorientierter Programme. Der zweite Band dieses umfassenden und zugleich grundlagenorientierten Werkes behandelt softwareintensive Systeme und ihre Darstellung durch Zustandsmaschinen, nebenläufige Programme mit gemeinsamen Variablen, Datenflussprogramme, Schnittstellspezifikation, Zeitfluss, Architektur verteilter Systeme, Prozessmodellierung, Verfeinerung und spezifische Formalismen wie CSP, TLAund prädikative Spezifikation. Dies schließt unter anderem auch Themen wie Korrektheitsbeweise in Hinblick auf Sicherheit und Lebendigkeit sowie schrittweise Verfeinerung ein. Insbesondere werden im Buch die Grundlagen für eine wissenschaftlich abgesicherte Entwicklung von Programmen gelegt.
