Feature Oriented Programming (FOP) is the study of feature modularity and programming models for product-lines. Features are first-class entities in design. There are often implemented by collaborations.
The goal is to place automation of large-scale software design and construction on a practical and firm mathematical foundation.
Feature: An elaboration of an entity that introduces a new service, capability, or relationship.
Highly complex entities and relationships in software can be synthesized by composing generic & reusable features.