The term concern is loosely defined to represent anything that stakeholders of a software project may want to consider as a conceptual unit. Typical concerns in a software project include features, nonfunctional requirements, design idioms, and implementation mechanisms (e.g., caching).