Published Sep 3, 2019

Episode 1: Patterns

    Explore the flexible and adaptive nature of software design patterns in this episode, where misconceptions are dispelled, and the role of patterns as dynamic frameworks is emphasized. Engage with experts as they delve into the history, application, and community-driven refinement of patterns like Observer and Proxy, showcasing their pivotal role in software engineering.
    Episode Highlights
    Software Engineering Radio - the podcast for professional software developers logo

    Popular Clips

    Episode Highlights

    • History

      The historical development of software design patterns is rich and varied. Michael Kirchhoff highlights the contributions of pioneers like Ward Cunningham and Ken Beck, who began documenting user interface patterns in 1987. This effort laid the groundwork for the influential "Design Patterns" book by Erich Gamma and others in 1995, known as the "Gang of Four" book 1. Priyanka Raghavan notes the importance of community-driven efforts in refining patterns, such as the Pedagogical Patterns Project, which focuses on teaching best practices 2.

      Patterns are mined from the experience of a community, and there is a well-working community that helps pattern authors refine them.

      --- Priyanka Raghavan

      These historical milestones underscore the collaborative nature of pattern development and their enduring impact on software engineering.

         

      Common Patterns

      Common design patterns like Observer, Proxy, and Reactor play crucial roles in software development. Priyanka Raghavan explains the Observer pattern, where a change in one object triggers updates in others, commonly used in graphical applications 1. The Proxy pattern facilitates communication in remote systems by acting as an intermediary, while the Reactor pattern decouples event handling from application logic, enhancing scalability 3. Michael Kirchhoff adds that these patterns are not limited to object-oriented systems, highlighting their versatility across different programming paradigms 2.

      Patterns are best practices and have multiple known uses in existing systems.

      --- Michael Kirchhoff

      These patterns exemplify the practical application of design principles in solving recurring software challenges.

         

      Pattern Forms

      Design patterns are documented in various forms, each with unique features. The "Gang of Four" (Gof) form includes sections like context, problem, and solution, providing a structured approach to pattern documentation 4. Priyanka Raghavan describes the Posa form, which emphasizes explicit solutions and trade-offs, making it valuable for understanding pattern variations 3. These forms help in capturing the essence of patterns, ensuring they are reusable and adaptable across different contexts.

      Documenting a pattern only makes sense if the problem it solves is encountered by many people in different contexts.

      --- Priyanka Raghavan

      Understanding these forms is essential for effectively applying patterns in software design.

    Related Episodes