Evolvability
Software is evolvable if it facilitates addition of functionality or modification of existing functions
- the malleable nature of software makes evolvability of implementation too easy
- evolution should start at the design (or even requirements) with a feasibility study and proceed in an organized fashion
- evolvability is also enhanced by modularity and abstraction
Evolvability addresses adaptive and perfective maintenance
Successful software is quite long lived and can evolve gracefully