Many of the approaches that analyze software
evolution consider a static perspective of a system.
Static analysis approaches focus on the evolution of
static software entities such as packages, classes
and methods. Without knowledge of the roles software
entities play in system features, it is difficult to
interpret the motivation behind changes and
extensions in the code. To tackle this problem, we
propose an approach to software evolution analysis
that exploits the relationships between features and
software entities. Our definition of a feature is a
unit of observable behavior of a software system. We
define history measurements that summarize the
evolution of software entities from a feature
perspective. We show how we use our feature
perspective of software evolution to interpret
modifications and extensions to the code. We apply
our approach on two case studies and discuss our
findings.