Published Sep 3, 2019

Episode 73: Real Time Systems with Bruce Powel Douglass

Explore the intricacies of real-time systems with Bruce Powel Douglass, as he delves into essential modeling languages like UML and SysML, architectural styles, and tackles the challenges of scheduling, distributed systems, and testing methodologies through practical examples.
Episode Highlights
Software Engineering Radio - the podcast for professional software developers logo

Popular Clips

Episode Highlights

  • Scheduling

    and explore the intricacies of scheduling strategies in real-time systems. Bruce explains that scheduling can be based on fairness doctrines or priority schemas, with the latter ensuring that critical tasks are executed promptly. He highlights the use of Rate Monotonic Analysis (RMA) for hard real-time systems, which prioritizes tasks based on their urgency and importance 1.

    In an overload situation, you can predict ahead of time which tasks will fail, they will be the low priority tasks.

    ---

    The discussion also touches on the balance between urgency and importance, using examples like aircraft control versus less critical tasks 2 3.

       

    Distributed Systems

    Distributed real-time systems present unique challenges, particularly in maintaining timing constraints across multiple machines. Bruce notes that networks are inherently unreliable, which complicates message delivery and synchronization 4. He emphasizes the need for robust communication protocols to mitigate these issues.

    As soon as you distribute, there is loss because of noise, dropouts, whatever.

    ---

    Testing these systems is further complicated by the Heisenberg effect, where measuring a system can alter its behavior. Bruce suggests a strategic approach to testing, focusing on a subset of functional paths and employing statistical testing methods 5.

       

    Testing Methods

    Testing real-time systems involves navigating constraints and ensuring performance metrics are met. Bruce advocates for model-based testing, which uses formal model artifacts to create test vectors, enhancing the testability of requirements 6. This approach allows for comprehensive coverage testing, ensuring all paths and operations are validated.

    You capture requirements in an inherently testable way, rather than say, writing a bunch of text describing it.

    ---

    Performance testing is particularly challenging, requiring early and iterative testing to ensure systems meet their performance budgets. Bruce advises against waiting until the end of development to test, as early testing, even if imprecise, is more beneficial 7.

Related Episodes