5 research outputs found
Decomposing God Classes at Siemens
International audienceA group of developers at Siemens Digital Industry Division approached our team to help them restructure a large legacy system. Several problems were identified, including the presence of God classes (big classes with thousands of lines of code and hundred of methods). They had tried different approaches considering the dependencies between the classes, but none were satisfactory. Through interaction during the last three years with a lead software architect of the project, we designed a software visualization tool and an accompanying process that allows her to propose a decomposition of a God Class in a matter of one or two hours even without prior knowledge of the class (although actually implementing the decomposition in the source code could take a week of work). In this paper, we present the process that was formalized to decompose God Classes and the tool that was designed. We give details on the system itself and some of the classes that were decomposed. The presented process and visualisations have been successfully used for the last three years on a real industrial system at Siemens
Identifying the exact fixing actions of static rule violation
International audience—We study good programming practices expressed in rules and detected by static analysis checkers such as PMD or FindBugs. To understand how violations to these rules are corrected and whether this can be automated, we need to identify in the source code where they appear and how they were fixed. This presents some similarities with research on understanding software bugs, their causes, their fixes, and how they could be avoided. The traditional method to identify how a bug or a rule violation were fixed consists in finding the commit that contains this fix and identifying what was changed in this commit. If the commit is small, all the lines changed are ascribed to the fixing of the rule violation or the bug. However, commits are not always atomic, and several fixes and even enhancements can be mixed in a single one (a large commit). In this case, it is impossible to detect which modifications contribute to which fix. In this paper, we are proposing a method that identifies precisely the modifications that are related to the correction of a rule violation. The same method could be applied to bug fixes, providing there is a test illustrating this bug. We validate our solution on a real world system and actual rules
Recommended from our members
Software evolution: hypergraph based model of solution space andhmeta-search
A hypergraph based model of software evolution is proposed. The model uses
software assets, and any other higher order patterns, as reusable components. We
will use software product lines and software factories concepts as the engineering
state-of-the-art framework to model evolution.
Using those concepts, the solution space is sliced into sub-spaces using equivalence
classes and their corresponding isomorphism. Any valid graph expansions
will be required to retain information by being sub-graph isomorphic, forming a
chain to a solution. We are also able to traverse the resulting modelled space. A
characteristic set of operators and operands is used to find solutions that would
be compatible. The result is in a structured manner to explore the combinatorial
solution space, classifying solutions as part of families hierarchies.
Using a software engineering interpretation a viable prototype implementation
of the model has been created. It uses configuration files that are used as
design-time instruments analogous to software factory schemas. These form configuration
layers we call fragments. These fragments convert to graph node metadata
to later allow complex graph queries. A profusion of examples of the modelling
and its visualisation options are provided for better understanding. An
example of automated generation of a configuration, using current Google Cloud
assets, has been generated and added to the prototype. It illustrates automation
possibilities by using harvested web data, and later, creating a custom isomorphic
relation as a configuration.
The feasibility of the model is thus demonstrated. The formalisation adds the
rigour needed to further facilitate automation of software craftsmanship.
Based on the model operation, we propose a concept of organic growth based
on evolution. Evolution events are modelled after incremental change messages.
This is communication efficient and it is shown to adhere to the Representational
State Transfer architectural style. Finally, The Cloud is presented as an evolved
solution part of a family, from the original concept of The Web
An Environment for dedicated Software Analysis tools
available at: http://ercim-news.ercim.eu/images/stories/EN88/EN88-web.pdfInternational audienceMoose is an open-source platform for the assessment of software and data analysis. Moose provides several engines to build tools, analyses and visualizations. One of Moose's strengths is the possibility to rapidly build domain-specific analysis tools
An Environment for dedicated Software Analysis tools
available at: http://ercim-news.ercim.eu/images/stories/EN88/EN88-web.pdfInternational audienceMoose is an open-source platform for the assessment of software and data analysis. Moose provides several engines to build tools, analyses and visualizations. One of Moose's strengths is the possibility to rapidly build domain-specific analysis tools