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

  • Feature Definition

    In feature-oriented software development (FOSD), a feature is defined as a unit of functionality that represents a design decision and realizes a requirement. explains that features are part of the domain vocabulary, like a B-tree in a database system, and are crucial for making design decisions and implementing requirements 1. This approach contrasts with traditional object-oriented programming, which may not adequately address the need for explicit feature representation in software design 2.

    A feature is a unit of functionality that represents a design decision that realizes a requirement.

    ---

    By making features explicit in the software's design and codebase, FOSD offers several benefits, including improved clarity and flexibility in software development.

       

    Feature Modularization

    Feature modularization is a key strategy in FOSD, aiming to improve software architecture and maintenance by encapsulating features into modules. highlights the importance of combining components with generative techniques to address the library scaling problem, where larger components become too specific to reuse effectively 3. This approach not only aids in structuring software but also connects different research lines, such as software structure and behavior, to create a cohesive development process 4.

    We need a combination of building blocks and generative techniques.

    ---

    By using modularization, developers can better manage feature interactions and ensure that software systems remain adaptable and scalable.

       

    Feature Interactions

    Feature interactions, both desired and undesired, are a significant concern in FOSD. explains that while some interactions are intentional, such as a transaction feature interacting with a database, others can lead to unexpected behaviors 5. The optional feature problem arises when features have implementation dependencies, complicating their optional use in software systems 6.

    It's difficult to make features optional because of implementation dependencies.

    ---

    Addressing these interactions requires careful planning and additional code to ensure that all feature combinations function correctly, highlighting the complexity of managing feature-rich software environments.

Related Episodes