Characterization of changes in web services contracts based on repository mining - Diego Benincasa Fernandes Cavalcanti de Almeida (2017)
During a software system life cycle, project modifications occur for different reasons, either for natural evolution or requirements readjustment. Regarding web services, communication contracts modifications are equally common, which induce the need for adaptation in every system node, from the service consumers to the providers. More significant those changes are, greater the efforts required for this adjustment. To help reducing the contracts changing impact over software source code, easyto-adapt systems can be designed in order to minimize the application remodeling effort. However, to make this approach possible, it is necessary to understand how those contract changes occur, analyzing the most common modification types and how often they happen. In this sense, this dissertation undertakes an evaluation of the change history of different open-source projects whose web service contracts are defined using documents in Web Service Description Language (WSDL) format. Using software repository mining with MetricMiner tool, the behavior of four modification types (addition, removal, relocation and refactoring) that occur to four XML element types (xs:element, xs:attribute, xs:complexType and xs:import) of contracts schemas was analyzed, in a universe of 139 projects whose source-codes are hosted at GitHub. As a result of this study, conclusions were that modifications of types addition and removal were more frequent than the others and take place in about 20% of verified revisions, and that a great amount of commits the act of recording file changings to the repository and creating a new file revision are related to a small number of changings in contracts. Such results indicate that modifications tend to be spread in many revisions and that a significant amount of changes are related to inclusion or exclusion of exchanged information in contracts. Conclusions obtained serve as input to the planning of new web services and to the maintenance of existing ones, giving important knowledge about services evolution which helps reducing or even avoiding excessive adaptation effort of both clients and provides with the natural evolution of contracts.