Published Sep 3, 2019

Episode 172: Feature-Oriented Software Development with Sven Apel – Pt 1

Sven Apel delves into feature-oriented software development, revealing its power in optimizing software product lines through enhanced modularity, reuse, and abstraction, while tackling complexity and variability management with advanced conceptualization and automation.
Episode Highlights
Software Engineering Radio - the podcast for professional software developers logo

Popular Clips

Episode Highlights

  • Theory

    introduces the concept of feature-oriented software development (FOSD), emphasizing its role in managing software complexity. He explains that FOSD aims to modularize features, offering a higher level of abstraction than traditional object-oriented programming. This approach helps in structuring software more effectively and automating its generation, which is crucial for developing software product lines 1 2.

    Feature orientation adds or tries to tackle a set of abstraction mismatches or deficiencies in conventional object orientation programming.

    ---

    Sven highlights the importance of addressing cross-cutting concerns, where code for a single feature is scattered across multiple objects, making it difficult to encapsulate within a single unit 3.

       

    Challenges

    The challenges of implementing FOSD include making features explicit in the codebase and managing their complex mappings. notes that features often vanish into the code, complicating maintenance and evolution. FOSD seeks to simplify this by aligning features in the problem space with modules in the solution space, thus easing bug tracking and feature evolution 4 5.

    The idea of FOSD is to make the mapping simple. So if you have a feature on the left side, so on the problem space, then you would like to find it in a solution space.

    ---

    Tools like Pure Variants and Feature IDE support feature orientation, helping developers modularize features effectively. These tools are crucial for those interested in improving software structure at a larger scale 6.

Related Episodes