Pub Date : 2008-04-01DOI: 10.1109/CSMR.2008.4493299
J. Knodel, Dirk Muthig, Uwe Haury, G. Meier
New ideas and concepts emerging from research have to be accepted by industrial stakeholders before they are used in product development. In this paper, we present our lessons learned and experiences gained from transferring a reverse engineering technology - architecture compliance checking - to Testo AG, one of the world's leading suppliers of portable measurement devices for industry and emission business. Testo develops a product line of climate and flue gas measurement devices and uses architecture compliance checking as the means to ensure consistency between the specified reference architecture and the implemented products. After delivery of more than a dozen products to the market, we present how architecture compliance checking has been transferred and how it became one instrument for ensuring the high quality of Testo products.
{"title":"Architecture Compliance Checking - Experiences from Successful Technology Transfer to Industry","authors":"J. Knodel, Dirk Muthig, Uwe Haury, G. Meier","doi":"10.1109/CSMR.2008.4493299","DOIUrl":"https://doi.org/10.1109/CSMR.2008.4493299","url":null,"abstract":"New ideas and concepts emerging from research have to be accepted by industrial stakeholders before they are used in product development. In this paper, we present our lessons learned and experiences gained from transferring a reverse engineering technology - architecture compliance checking - to Testo AG, one of the world's leading suppliers of portable measurement devices for industry and emission business. Testo develops a product line of climate and flue gas measurement devices and uses architecture compliance checking as the means to ensure consistency between the specified reference architecture and the implemented products. After delivery of more than a dozen products to the market, we present how architecture compliance checking has been transferred and how it became one instrument for ensuring the high quality of Testo products.","PeriodicalId":350838,"journal":{"name":"2008 12th European Conference on Software Maintenance and Reengineering","volume":"26 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2008-04-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"117047759","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Pub Date : 2008-04-01DOI: 10.1109/CSMR.2008.4493339
A. Telea, L. Voinea
Many C+ + extractors exist that produce syntax trees, call graphs, and metrics from C++ code, yet few offer integrated querying, navigation, and visualization of source- code-level facts to the end-user. We present an interactive reverse engineering environment which supports reverse- engineering tasks on C/C++ code, e.g. set up the extraction process, apply user-written queries on the extracted facts, and visualize query results, much like classical forward- engineering IDEs do. We illustrate our environment with several examples of reverse-engineering analyses.
{"title":"SOLIDFX: An Integrated Reverse Engineering Environment for C++","authors":"A. Telea, L. Voinea","doi":"10.1109/CSMR.2008.4493339","DOIUrl":"https://doi.org/10.1109/CSMR.2008.4493339","url":null,"abstract":"Many C+ + extractors exist that produce syntax trees, call graphs, and metrics from C++ code, yet few offer integrated querying, navigation, and visualization of source- code-level facts to the end-user. We present an interactive reverse engineering environment which supports reverse- engineering tasks on C/C++ code, e.g. set up the extraction process, apply user-written queries on the extracted facts, and visualize query results, much like classical forward- engineering IDEs do. We illustrate our environment with several examples of reverse-engineering analyses.","PeriodicalId":350838,"journal":{"name":"2008 12th European Conference on Software Maintenance and Reengineering","volume":"136 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2008-04-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"116076105","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Pub Date : 2008-04-01DOI: 10.1109/CSMR.2008.4493342
Nikolaos Tsantalis, Theodoros Chaikalis, A. Chatzigeorgiou
In this demonstration, we present an Eclipse plug-in that automatically identifies type-checking bad smells in Java source code, and resolves them by applying the "replace conditional with polymorphism" or "replace type code with state/strategy " refactorings. To the best of our knowledge there is a lack of tools that identify type-checking bad smells. Moreover, none of the state-of-the-art IDEs support the refactorings that resolve such kind of bad smells.
{"title":"JDeodorant: Identification and Removal of Type-Checking Bad Smells","authors":"Nikolaos Tsantalis, Theodoros Chaikalis, A. Chatzigeorgiou","doi":"10.1109/CSMR.2008.4493342","DOIUrl":"https://doi.org/10.1109/CSMR.2008.4493342","url":null,"abstract":"In this demonstration, we present an Eclipse plug-in that automatically identifies type-checking bad smells in Java source code, and resolves them by applying the \"replace conditional with polymorphism\" or \"replace type code with state/strategy \" refactorings. To the best of our knowledge there is a lack of tools that identify type-checking bad smells. Moreover, none of the state-of-the-art IDEs support the refactorings that resolve such kind of bad smells.","PeriodicalId":350838,"journal":{"name":"2008 12th European Conference on Software Maintenance and Reengineering","volume":"27 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2008-04-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"129193673","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Pub Date : 2008-04-01DOI: 10.1109/CSMR.2008.4493312
A. D. Lucia, C. Gravino, R. Oliveto, G. Tortora
We present the results of two controlled experiments carried out to compare the support given by the ER and UML class diagrams during the maintenance of data models. The experiments involved master and bachelor students performing maintenance tasks on data models represented by ER and UML class diagrams. The results reveal that the two notations give in general the same support. In particular, the correctness level achieved by a subject performing the task on data model represented by an ER diagram are comparable with the correctness level achieved by the same subject performing the task on a different data model represented by an UML class diagram. Moreover, by discriminating the levels of ability (high vs. low) and experience (graduate vs. undergraduate) of subjects we also provide some consideration about the influence of such factors on the correctness level achieved by subjects. In particular, we observe that UML class diagrams better support subjects with high ability than ER diagrams, while no difference can be observed considering subjects with low ability. Regarding the experience factor the results reveal no difference in the correctness level achieved by graduate and undergraduate students.
{"title":"Assessing the Support of ER and UML Class Diagrams during Maintenance Activities on Data Models","authors":"A. D. Lucia, C. Gravino, R. Oliveto, G. Tortora","doi":"10.1109/CSMR.2008.4493312","DOIUrl":"https://doi.org/10.1109/CSMR.2008.4493312","url":null,"abstract":"We present the results of two controlled experiments carried out to compare the support given by the ER and UML class diagrams during the maintenance of data models. The experiments involved master and bachelor students performing maintenance tasks on data models represented by ER and UML class diagrams. The results reveal that the two notations give in general the same support. In particular, the correctness level achieved by a subject performing the task on data model represented by an ER diagram are comparable with the correctness level achieved by the same subject performing the task on a different data model represented by an UML class diagram. Moreover, by discriminating the levels of ability (high vs. low) and experience (graduate vs. undergraduate) of subjects we also provide some consideration about the influence of such factors on the correctness level achieved by subjects. In particular, we observe that UML class diagrams better support subjects with high ability than ER diagrams, while no difference can be observed considering subjects with low ability. Regarding the experience factor the results reveal no difference in the correctness level achieved by graduate and undergraduate students.","PeriodicalId":350838,"journal":{"name":"2008 12th European Conference on Software Maintenance and Reengineering","volume":"29 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2008-04-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"114351901","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Pub Date : 2008-04-01DOI: 10.1109/CSMR.2008.4493307
Mika Siikarla, Tarja Systä
Propagating incremental changes and maintaining traceability are challenges for interactive model transformations, i.e. ones that combine automation with user decisions. After evolutionary changes to the source models the transformations have to be rerun. Earlier decisions cannot be used directly, because they may have been affected by the changes. Re-doing or verifying each decision manually is error-prone and burdensome. We present a way to model user interaction for transformations that are well (but not fully) understood. We model each decision as a set of options and their consequences. Also, we model the decision context, i.e. the circumstances (including model elements) affecting the decision. When a transformation is run, user decisions and their context are recorded. After a model change, a decision can be safely reused without burdening the user, if its context has not changed. The context maps source model elements to a decision, and thus provides traceability across the decision.
{"title":"Decision Reuse in an Interactive Model Transformation","authors":"Mika Siikarla, Tarja Systä","doi":"10.1109/CSMR.2008.4493307","DOIUrl":"https://doi.org/10.1109/CSMR.2008.4493307","url":null,"abstract":"Propagating incremental changes and maintaining traceability are challenges for interactive model transformations, i.e. ones that combine automation with user decisions. After evolutionary changes to the source models the transformations have to be rerun. Earlier decisions cannot be used directly, because they may have been affected by the changes. Re-doing or verifying each decision manually is error-prone and burdensome. We present a way to model user interaction for transformations that are well (but not fully) understood. We model each decision as a set of options and their consequences. Also, we model the decision context, i.e. the circumstances (including model elements) affecting the decision. When a transformation is run, user decisions and their context are recorded. After a model change, a decision can be safely reused without burdening the user, if its context has not changed. The context maps source model elements to a decision, and thus provides traceability across the decision.","PeriodicalId":350838,"journal":{"name":"2008 12th European Conference on Software Maintenance and Reengineering","volume":"51 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2008-04-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"134552652","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Pub Date : 2008-04-01DOI: 10.1109/CSMR.2008.4493304
Landry Chouambe, Benjamin Klatt, K. Krogmann
An increasing number of software systems is developed using component technologies such as COM, CORBA, or EJB. Still, there is a lack of support to reverse engineer such systems. Existing approaches claim reverse engineering of components, but do not support composite components. Also, external dependencies such as required interfaces are not made explicit. Furthermore, relaxed component definitions are used, and obtained components are thus indistinguishable from modules or classes. We present an iterative reverse engineering approach that follows the widely used definition of components by Szyperski. It enables third-party reuse of components by explicitly stating their interfaces and supports composition of components. Additionally, components that are reverse engineered with the approach allow reasoning on properties of software architectures at the model level. For the approach, source code metrics are combined to recognize components. We discuss the selection of source code metrics and their interdependencies, which were explicitly taken into account. An implementation of the approach was successfully validated within four case studies. Additionally, a fifth case study shows the scalability of the approach for an industrial-size system.
{"title":"Reverse Engineering Software-Models of Component-Based Systems","authors":"Landry Chouambe, Benjamin Klatt, K. Krogmann","doi":"10.1109/CSMR.2008.4493304","DOIUrl":"https://doi.org/10.1109/CSMR.2008.4493304","url":null,"abstract":"An increasing number of software systems is developed using component technologies such as COM, CORBA, or EJB. Still, there is a lack of support to reverse engineer such systems. Existing approaches claim reverse engineering of components, but do not support composite components. Also, external dependencies such as required interfaces are not made explicit. Furthermore, relaxed component definitions are used, and obtained components are thus indistinguishable from modules or classes. We present an iterative reverse engineering approach that follows the widely used definition of components by Szyperski. It enables third-party reuse of components by explicitly stating their interfaces and supports composition of components. Additionally, components that are reverse engineered with the approach allow reasoning on properties of software architectures at the model level. For the approach, source code metrics are combined to recognize components. We discuss the selection of source code metrics and their interdependencies, which were explicitly taken into account. An implementation of the approach was successfully validated within four case studies. Additionally, a fifth case study shows the scalability of the approach for an industrial-size system.","PeriodicalId":350838,"journal":{"name":"2008 12th European Conference on Software Maintenance and Reengineering","volume":"21 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2008-04-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"132650170","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Pub Date : 2008-04-01DOI: 10.1109/CSMR.2008.4493331
M. Ceccato
Aspect oriented programming (AOP) has been proposed as a new programming paradigm. The originality in AOP is the aspect, a single modularization unit for all those functionalities that were originally spread across several modules and tangled with each other (called crosscutting concerns). Using an aspect, a crosscutting concern can be factored out into a single, separate unit. This paper summarizes a PhD thesis that presents an approach to automatize the migration of existing object oriented systems towards AOP. Different techniques are proposed to cope with the migration and assessed on a large software basis.
{"title":"Automatic Support for the Migration Towards Aspects","authors":"M. Ceccato","doi":"10.1109/CSMR.2008.4493331","DOIUrl":"https://doi.org/10.1109/CSMR.2008.4493331","url":null,"abstract":"Aspect oriented programming (AOP) has been proposed as a new programming paradigm. The originality in AOP is the aspect, a single modularization unit for all those functionalities that were originally spread across several modules and tangled with each other (called crosscutting concerns). Using an aspect, a crosscutting concern can be factored out into a single, separate unit. This paper summarizes a PhD thesis that presents an approach to automatize the migration of existing object oriented systems towards AOP. Different techniques are proposed to cope with the migration and assessed on a large software basis.","PeriodicalId":350838,"journal":{"name":"2008 12th European Conference on Software Maintenance and Reengineering","volume":"87 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2008-04-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"122502554","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Pub Date : 2008-04-01DOI: 10.1109/CSMR.2008.4493296
Anthony Cleve, J. Henrard, D. Roland, Jean-Luc Hainaut
The paper presents a tool-supported approach to legacy data-intensive systems migration. It particularly elaborates on the program conversion phase, for which the use of wrapping techniques is suggested. The approach is applied to a popular specific application, that is, the migration of a large COBOL system using a CODASYL database towards a relational database platform. The use of the methodology and tools is evaluated in the context of a real-size industrial migration project.
{"title":"Wrapper-based System Evolution Application to CODASYL to Relational Migration","authors":"Anthony Cleve, J. Henrard, D. Roland, Jean-Luc Hainaut","doi":"10.1109/CSMR.2008.4493296","DOIUrl":"https://doi.org/10.1109/CSMR.2008.4493296","url":null,"abstract":"The paper presents a tool-supported approach to legacy data-intensive systems migration. It particularly elaborates on the program conversion phase, for which the use of wrapping techniques is suggested. The approach is applied to a popular specific application, that is, the migration of a large COBOL system using a CODASYL database towards a relational database platform. The use of the methodology and tools is evaluated in the context of a real-size industrial migration project.","PeriodicalId":350838,"journal":{"name":"2008 12th European Conference on Software Maintenance and Reengineering","volume":"149 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2008-04-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"123781601","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Pub Date : 2008-04-01DOI: 10.1109/CSMR.2008.4493323
Michael Smit, Eleni Stroulia, Kenny Wong
Use case re-documentation is an important maintenance task. The implemented functionality of an application may not reflect original use cases. This discrepancy can create problems in downstream software activities, such as developing documentation and migrating to platforms adopting a service-oriented architecture (SOA). We present a methodology and a toolkit for re-documenting the use cases of interactive Java swing object-oriented applications. Our method collects execution traces of the application while experienced users interact with it. These traces are clustered according to the similarity of the user interface events, to identify families of task-specific execution scenarios. Finally, the traces in each cluster are aligned to produce usage scenarios and visualized.
{"title":"Use Case Redocumentation from GUI Event Traces","authors":"Michael Smit, Eleni Stroulia, Kenny Wong","doi":"10.1109/CSMR.2008.4493323","DOIUrl":"https://doi.org/10.1109/CSMR.2008.4493323","url":null,"abstract":"Use case re-documentation is an important maintenance task. The implemented functionality of an application may not reflect original use cases. This discrepancy can create problems in downstream software activities, such as developing documentation and migrating to platforms adopting a service-oriented architecture (SOA). We present a methodology and a toolkit for re-documenting the use cases of interactive Java swing object-oriented applications. Our method collects execution traces of the application while experienced users interact with it. These traces are clustered according to the similarity of the user interface events, to identify families of task-specific execution scenarios. Finally, the traces in each cluster are aligned to produce usage scenarios and visualized.","PeriodicalId":350838,"journal":{"name":"2008 12th European Conference on Software Maintenance and Reengineering","volume":"116 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2008-04-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"132321941","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Pub Date : 2008-04-01DOI: 10.1109/CSMR.2008.4493303
Adrian Lienhard, Tudor Gîrba, O. Greevy, Oscar Nierstrasz
Writing unit tests for legacy systems is a key maintenance task. When writing tests for object-oriented programs, objects need to be set up and the expected effects of executing the unit under test need to be verified. If developers lack internal knowledge of a system, the task of writing tests is non-trivial. To address this problem, we propose an approach that exposes side effects detected in example runs of the system and uses these side effects to guide the developer when writing tests. We introduce a visualization called Test Blueprint, through which we identify what the required fixture is and what assertions are needed to verify the correct behavior of a unit under test. The dynamic analysis technique that underlies our approach is based on both tracing method executions and on tracking the flow of objects at runtime. To demonstrate the usefulness of our approach we present results from two case studies.
{"title":"Test Blueprints - Exposing Side Effects in Execution Traces to Support Writing Unit Tests","authors":"Adrian Lienhard, Tudor Gîrba, O. Greevy, Oscar Nierstrasz","doi":"10.1109/CSMR.2008.4493303","DOIUrl":"https://doi.org/10.1109/CSMR.2008.4493303","url":null,"abstract":"Writing unit tests for legacy systems is a key maintenance task. When writing tests for object-oriented programs, objects need to be set up and the expected effects of executing the unit under test need to be verified. If developers lack internal knowledge of a system, the task of writing tests is non-trivial. To address this problem, we propose an approach that exposes side effects detected in example runs of the system and uses these side effects to guide the developer when writing tests. We introduce a visualization called Test Blueprint, through which we identify what the required fixture is and what assertions are needed to verify the correct behavior of a unit under test. The dynamic analysis technique that underlies our approach is based on both tracing method executions and on tracking the flow of objects at runtime. To demonstrate the usefulness of our approach we present results from two case studies.","PeriodicalId":350838,"journal":{"name":"2008 12th European Conference on Software Maintenance and Reengineering","volume":"2004 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2008-04-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"125618149","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}