Automated refactorings as implemented in modern IDEs for Java usually make no special provisions for concurrent code. Thus, refactored programs may exhibit unexpected new concurren...
Software-intensive systems evolve continuously under the pressure of new and changing requirements, generally leading to an increase in overall system complexity. In this respect,...
—Use case refactoring is one of the recent software engineering techniques that aimed at synthesising and refining use case models. Two new types of use case refactoring are prop...
As object-oriented class libraries evolve, classes are occasionally deprecated in favor of others with roughly the same functionality. In Java’s standard libraries, for example,...
Interface-based programming, i.e. the systematic use of interface types in variable declarations, serves the decoupling of classes and increases a program’s changeability. To ma...