The evolution of complex software systems is promoted by software engineering principles and techniques like separation of concerns, encapsulation, stepwise refinement, and reusab...
Existing software product variants, developed by ad hoc reuse such as copy-paste-modify, are often a starting point for building Software Product Line (SPL). Understanding of how ...
—Much of modern software development consists of building on older changes. Older periods provide the structure (e.g., functions and data types) on which changes in future period...
Humans will have to live with software for a long time. As demonstrated by the Y2K problem, computer professionals used a wrong time scale when thinking about software. Large soft...
It is widely accepted that coupling plays an important role in software quality, particularly in the areas of software maintenance, so effort should be made to keep coupling level...