Ripple-effect analysis of software architecture evolution based on reachability matrix