… is founder of CQSE GmbH and consultant for software quality. He studied computer science at the Technische Universität München and Universidad Carlos III de Madrid and received a PhD in software engineering.
Since this post accompanies a talk in German, it is written in German, too.
Since this post accompanies a talk in German, it is written in German, too.
Posted on 10/09/2018 by Dr. Elmar Juergens
Since this post accompanies a talk in German, it is written in German, too.
Since this post accompanies a talk in German, it is written in German, too.
Posted on 06/21/2018 by Dr. Elmar Juergens
Since this post accompanies a talk in German, it is written in German, too.
Since this post accompanies a talk in German, it is written in German, too.
Since this post accompanies a talk in German, it is written in German, too.
Since this post accompanies a talk in German, it is written in German, too.
Since this post accompanies a talk in German, it is written in German, too.
Posted on 07/11/2017 by Dr. Elmar Juergens
Since this post accompanies a talk in German, it is written in German, too.
Posted on 07/05/2017 by Dr. Elmar Juergens
Since this post accompanies a talk in German, it is written in German, too.
.
Posted on 06/16/2017 by Dr. Elmar Juergens
Since this post accompanies a talk in German, it is written in German, too.
Since this post accompanies a talk in German, it is written in German, too.
Posted on 03/29/2017 by Dr. Elmar Juergens
Since this post accompanies a talk in German, it is written in German, too.
Since this post accompanies a talk in German, it is written in German, too.
Since this post accompanies a talk in German, it is written in German, too.
Posted on 11/02/2016 by Dr. Elmar Juergens
Since this post accompanies a talk in German, it is written in German, too.
Since this post accompanies a talk in German, it is written in German, too.
Since this post accompanies a talk in German, it is written in German, too.
Since this post accompanies a talk in German, it is written in German, too.
Teams, not individuals, build most software systems. The organization of these teams thus strongly impacts the software they build.
This is old news. For example, Conway’s law illustrates that the architectural decomposition of a system into components happens along communication structures [1]. Naggapan’s study on bug data from Windows Vista shows that organizational structure is a significant predictor for fault proneness [2].
These empirical results resonate with my own experience. Often, the problems our static code analyses reveal in a code base are symptoms of underlying organizational problems. The larger the organizational problems, the bigger their impact on code quality.
Unfortunately, on this level of abstraction, this insight is pretty useless, since it is too abstract to be operationalized in a project context. To make it applicable, I want to boil it down to a single aspect in this article: reuse. From my experience, it is one of the code characteristics that reveals most about collaboration between teams.
Since this post accompanies a talk in German, it is written in German, too.
Since this post accompanies a talk in German, it is written in German, too.
Since this post accompanies a talk in German, it is written in German, too.
Posted on 06/24/2015 by Dr. Elmar Juergens
We have had countless discussions about code clones with the teams responsible for their maintenance. These teams generally accept that some of the clones in their software are the product of copy & paste. In many cases this is obvious, since the clones share some quirks that can only be plausibly explained by copy & paste (e.g. identical typos in comments).
One hypothesis that comes up time and again, however, is that some or many of the clones were not created by copy & paste, but instead were written independently and then evolved into the same form.
This hypothesis reminds me of convergent evolution, where environmental factors drive independent evolution of similar traits in species whose ancestors do not show those traits. For example, both pill bugs and pill millipede have evolved similar defenses, and consequently look similar, but belong to different branches of
Posted on 12/17/2014 by Dr. Elmar Juergens
This post is about student internships at CQSE. If you are studying computer science and are looking for a job specifically designed to help you get the most out of your studies, read on.
Posted on 02/19/2014 by Dr. Elmar Juergens
A fundamental challenge when introducing reviews is that reviewing code is hard. This post summarizes our practices to nevertheless make life for a reviewer as easy as possible.
Posted on 01/22/2014 by Dr. Elmar Juergens
Reviews point out problems in somebody’s work. Unfortunately, both giving and receiving criticism can be hard. To successfully introduce reviews, we must overcome this resistance. Since finding (and later removing) problems is the primary goal of reviews, this challenge is inherent—no review process can avoid it. We can, however, make receiving review results much easier. This post describes two simple but effective practices we use in our code reviews.
Posted on 12/05/2013 by Dr. Elmar Juergens
The primary purpose of automated tests is to reveal regression bugs. But how can we tell how well a test suite does this? Code coverage measurement is often used to assess tests in practice. But what does it really tell? We analyzed a set of open-source projects to find out and came up with a clear answer. This post summarizes our findings.
Best Pracitces aus vier Jahren Umgang mit technischen Schulden bei der medatixx.
Talk at OOP 2018, 2018.
Immer kürzere Testphasen? Mit Ticket Coverage erkennen, welche wichtigen Features ungetestet sind.
Talk at SWQD 2018, 2018.
Haben wir das Richtige getestet? Oh nein! Erfahrungen mit Test-Gap-Analyse in der Praxis.
Talk at OOP 2017, 2017.
Setzen wir unsere Qualitätsanalysen wirklich sinnvoll ein?
Talk at JavaLand 2017, 2017.
Was verraten moderne Analysen über Wechselwirkungen zwischen Architektur und Organisation? Fallbeispiele aus zehn Jahren Praxiseinsatz.
Talk at SE Live 2017, 2017.
Do Code Clones Matter? Hinter den Kulissen einer empirischen Studie über Code Cloning und dem daraus entstandenen Spin-Off.
Gastvorlesung Universität Passau 2016, 2016.
Haben wir das Richtige getestet? Erfahrungen mit Test-Gap-Analyse in der Praxis.
QS-Tag 2016, 2016.
Haben wir das Richtige getestet? Erfahrungen mit Test-Gap-Analyse in der Praxis.
Meetup Software Architektur München 2016, 2016.
Haben wir unsere Änderungen diesmal getestet? Erfahrungen mit Test-Gap-Analyse bei der Munich Re.
Vortrag auf den Software Quality Days 2016, 2016.
Krise als Chance? Wege zu wartbarer Software.
Pecha Kucha Vortrag bei "Amazing ideas and freaky challenges in software development" powered by PechaKucha @OMICRON electronics, 2016.
Software Teams Debuggen Was verraten Analysen über Probleme zwischen technischer Architektur und Team-Architektur?
Gastvorlesung Universität Passau 2016, 2016.
Vom Wiegen allein wird die Sau nicht fett - von Qualitätsanalyse zu wirksamer Qualitätsverbesserung.
Vortrag auf der GI-Regionalgruppe SE-Live, 2016.
Vom Wiegen allein wird die Sau nicht fett - von Qualitätsanalyse zu wirksamer Qualitätsverbesserung.
Vortrag auf dem IT-Leiter-Kreis Franken, 2016.
Vom Wiegen wird die Sau nicht fett. Von Qualitätsanalyse zu wirksamer Qualitätsverbesserung.
Talk at Basta Spring 2016, 2016.
Was verraten moderne Analysen über Wechselwirkungen zwischen Architektur und Organisation? Fallbeispiele aus zehn Jahren Praxiseinsatz.
Talk at the Architecture Gathering 2016, 2016.
Aufdeckung von fundamentalen Architekturproblemen durch Cross-Project-Clone-Detection.
Talk at The Architecture Gathering 2015, 2015.
Bewertung von Wartbarkeit: Jagdschein für Testleiter und Manager.
Talk at QS-Tag 2015, 2015.
Fit für die Betreuung: Herausragende Studentische Abschlussarbeiten anleiten.
Vortrag im Rahmen von CeDoSIA, dem interdisziplinäre Doktorandenprogramm der Fakultät für Informatik der TUM, 2015.
Fit für die Promotion: (Miss-)Erfolgsstrategien auf dem langen Weg zur eigenen Promotion.
Vortrag im Rahmen von CeDoSIA, dem interdisziplinäre Doktorandenprogramm der Fakultät für Informatik der TUM, 2015.
Fundamentale Organisations- und Architekturprobleme durch Cross-Project Clone Detection finden.
Talk at W-JAX 2015, 2015.
Haben wir die entscheidenden Änderungen erwischt? Risikobasiertes Testen von gewachsener Software.
Talk at W-JAX 2015, 2015.
Haben wir unsere Änderungen eigentlich getestet? Möglichkeiten und Grenzen von Test-Gap Analyse.
Talk at Software Quality Days 2015, 2015.
Haben wir unsere Änderungen eigentlich getestet? Möglichkeiten und Grenzen von Test-Gap-Analyse.
Talk at DWX 2015, 2015.
Test Gap Analysis: Risk-based Testing of ABAP Applications.
Talk at SAP Inside Track Munich 2015, 2015.
Vom Wiegen allein wird die Sau nicht fett - von Qualitätsanalyse zu wirksamer Qualitätsverbesserung.
Vortrag bei vbw, 2015.
Vom Wiegen wird die Sau nicht fett: Von Qualitätsanalyse zu wirksamer Qualitätsverbesserung.
Talk at JAX 2015, 2015.
Vom Wiegen wird die Sau nicht fett: Von Qualitätsanalyse zu wirksamer Qualitätsverbesserung.
Talk at SEACON 2015, 2015.
Vom Wiegen wird die Sau nicht fett! Von Qualitätsanalyse zu wirksamer Qualitätsverbesserung.
Talk at DWX 2015, 2015.
Vom Wiegen wird die Sau nicht fett! Von Qualitätsanalyse zu wirksamer Qualitätsverbesserung.
Talk at Java Forum Stuttgart 2015, 2015.
Wann führen Qualitätsanalysen zu Qualitätsverbesserungen? Erfahrungen aus sieben Jahren Praxis.
Talk at OOP 2015, 2015.
Was sollte ich bei der Wahl meiner Abschlussarbeit beachten?
Vortrag im Rahmen der Veranstaltung VHK-Karriere-Forum "IT + MB/Automotive", 2015.
Wie gut kann man Code-Qualität wirklich messen?
Keynote at Clean Code Days 2015, 2015.
Bewertung von Software-Qualität: Erfahrungen aus 7 Jahren Forschung und Praxiseinsatz.
Talk at Pionierbasis, Plattform Softwareentwicklung, 2014.
Haben wir unsere Änderungen eigentlich getestet? Möglichkeiten und Grenzen von Test-Gap Analyse.
Talk at German Testing Night 2014, 2014.
Haben wir unsere Änderungen eigentlich getestet? Möglichkeiten und Grenzen von Test-Gap Analyse.
Talk at OOP 2014, 2014.
Vom Wiegen allein wird die Sau nicht fett: Von Qualitätsanalyse zu wirksamer Qualitätsverbesserung.
Talk at Software Quality Days 2014 (voted among best presentations of the conference), 2014.
Vom Wiegen wird die Sau nicht fett: Von Qualitätsanalyse zu wirksamer Qualitätsverbesserung.
Talk at Clean Code Days 2014, 2014.
Vom Wiegen wird die Sau nicht fett: Von Qualitätsanalyse zu wirksamer Qualitätsverbesserung.
Talk at QS-Tag 2014, 2014.
Vom Wiegen wird die Sau nicht fett: Von Qualitätsanalyse zu wirksamer Qualitätsverbesserung.
Talk at W-JAX 2014, 2014.
Wann führen Qualitätsanalysen zu guter Software? Erfahrungen aus 7 Jahren Praxiseinsatz.
Talk at Entwicklertag Karlsruhe 2014, 2014.
Copy & Paste & Bug? Die überraschende Wahrheit über Klone in Software-Artefakten.
Talk at JUG-Ostfalen, 2013.
Copy & Paste & Bug? Die überraschende Wahrheit über Klone in Software Artefakten.
Talk at Sofware Quality Days (SQD’2013), 2013.
Copy & Paste & Bug? Software-Engineering-Erfahrungen aus der Praxis.
Gastvorlesung an der TU Braunschweig, 2013.
Haben wir unsere Änderungen eigentlich getestet? Möglichkeiten und Grenzen von Test-Gap Analyse.
Talk at QS-Tag 2013, 2013.
KPIs zur Bewertung von Software-Qualität: Waffenschein für Projektmanager und Entscheider.
Talk at MedConf 2013, 2013.
Vom wiegen wird die Sau nicht fett – Von Qualitätsanalyse zu wirksamer Qualitätsverbesserung.
Talk at Teamconf 2013, 2013.
Wann führen Code-Analysen zu guter Software? Eingeständnisse eines Analysewerkzeugbauers.
Talk at XP Days 2013, 2013.
Wirksamer Einsatz Statischer Analyse in großen, langlebigen Software-Systemen.
Talk at Entwicklertag Karlsruhe 2013, 2013.
Continuous Software Quality Control: Techniques, Tools & Lessons Learned in Practice.
Talk at OOP 2012, 2012.
Copy & Paste & Bug? Die überraschende Wahrheit über Klone in Software Artefakten.
Talk at XP Days 2012, 2012.
Copy & Paste & Bug - Erkennung von und Umgang mit Redundanz in Software Artefakten.
Talk at Herbstcampus 2012, 2012.
Effizienter Einsatz von Statischer Analyse in großen, langlebigen Software-Systemen.
Talk at Workshop on Hotspots of Software Engineering 2012, 2012.
Talk at ALM Days 2012: Visual Studio Application Lifecycle Management Days 2012, Management Day, 2012.
Feature Profiling for Evolving Systems.
Talk at International Conference on Program Comprehension (ICPC’11), 2011.
Regression Test Selection of Manual System Tests in Practice.
Talk at European Conference on Software Maintenance and Reengineering (CSMR’11), 2011.
Research in cloning beyond code: a first roadmap.
Talk at International Workshop on Software Clones (IWSC’11), 2011.
Achieving Accurate Clone Detection Results.
Talk at International Workshop on Software Clones (IWSC’10), 2010.
Can Clone Detection Support Quality Assessments of Requirements Specifications?
Talk at International Conference on Software Engineering (ICSE’10), 2010.
Code similarities beyond copy & paste.
Talk at European Conference on Software Maintenance and Reengineering (CSMR’10), 2010.
Talk at International Workshop on Software Quality and Maintainability (SQM’10), 2010.
Clone Detection Beyond Copy & Paste.
Talk at International Workshop on Software Clones (IWSC’09), 2009.
Software-Qualitätsmodelle in der Praxis: Erfahrungen mit aktivitätenbasierten Modellen.
Talk at Workshop Software-Qualitätsmodellierung und -bewertung (SQMB’08), 2008.
Static Bug Detection Through Analysis of Inconsistent Clones.
Talk at Workshop Testmethoden für Software - Von der Forschung in die Praxis (TeSo’08), 2008.
Variability Models Must Not be Invariant!.
Talk at Workshop on Variability Modelling of Software-intensive Systems (VaMoS’07), 2007.
Tool Demonstration: The Language Evolver Lever.
Talk at Workshop on Language Descriptions, Tools and Applications (LDTA’06), 2006.
Erfahrungen mit Test-Gap-Analyse und Ticket Coverage in der Praxis.
OBJEKTspektrum, 2018.
Test Impact Analysis: Detecting Errors Early Despite Large, Long-Running Test Suites.
Whitepaper. CQSE GmbH, 2018.
Test-Impact-Analyse: Trotz großer, langlaufender Test-Suites Fehler früh erkennen.
Whitepaper. CQSE GmbH, 2018.
Test-Impact-Analyse: Fehler früh erkennen trotz großer, langlaufender Test-Suites.
OBJEKTspektrum, 2018.
Obtaining Coverage per Test Case.
Master’s Thesis. Technische Universität München, 2017.
Test Accompanying Calculation of Test Gaps for Java Applications.
Guided Research. Technische Universität München, 2017.
Ticket Coverage: Putting Test Coverage into Context.
Proceedings of the 8th Workshop on Emerging Trends in Software Metrics (WETSoM’17), 2017.
Did We Test the Right Thing? Experiences with Test Gap Analysis in Practice.
Whitepaper. CQSE GmbH, 2016.
Haben wir das Richtige getestet? Erfahrungen mit Test-Gap-Analyse in der Praxis.
Whitepaper. CQSE GmbH, 2016.
Will My Tests Tell Me If I Break This Code?
Proceedings of the International Workshop on Continuous Software Evolution and Delivery (CSED’16), 2016.
Bachelor’s Thesis. Technische Universität München, 2015.
Proceedings of the 31st International Conference on Software Maintenance and Evolution (ICSME’15), 2015.
Principles and a Process for Successful Industry Cooperation – The Case of TUM and Munich Re.
2nd International Workshop on Software Engineering Research and Industrial Practice (SER&IP’15), 2015.
A Novel Approach to Detect Unintentional Re-implementations.
The 30th International Conference Software Maintenance and Evolution (ICSME’14), 2014.
Collecting and Leveraging a Benchmark of Build System Clones to Aid in Quality Assessments.
36th International Conference on Software Engineering (ICSE’14), 2014.
Dead Code Detection on Class Level.
Softwaretechnik-Trends, Vol. 34, 2014.
Incremental Origin Analysis of Source Code Files.
Proceedings of the 11th Working Conference on Mining Software Repositories (MSR’14), 2014.
Modern Code Reviews in Open-Source Projects: Which Problems Do They Find/Fix?
The 11th Working Conference on Mining Software Repositories (MSR’14), 2014.
Rapid Requirements Checks with Requirements Smells: Two Case Studies.
1st International Workshop on Rapid and Continous Software Engineering (RCoSE’14), 2014.
Did We Test Our Changes? Assessing Alignment between Tests and Development in Practice.
Proceedings of the Eighth International Workshop on Automation of Software Test (AST’13), 2013.
Quality Analysis of Source Code Comments.
Proceedings of the 21st IEEE Internation Conference on Program Comprehension (ICPC’13), 2013.
Revealing Missing Bug-Fixes in Code Clones in Large-Scale Code Bases.
Proceedings of the Seventh International Workshop on Software Quality and Maintainability (SQM’13), 2013.
A Framework for Incremental Quality Analysis of Large Software Systems.
Proceedings of the 28th IEEE International Conference on Software Maintenance (ICSM’12), 2012.
Can clone detection support test comprehension?
Proceedings of the 20th IEEE International Conference on Program Comprehension (ICPC’12), 2012.
How much does unused code matter for maintenance?
Proceedings of the 34th International Conference on Software Engineering (ICSE’12), 2012.
The Quamoco Quality Meta-Model.
Report TUM-I128. Technische Universität München, 2012.
Using Network Analysis for Recommendation of Central Software Classes.
Proceedings of the 19th Working Conference on Reverse Engineering (WCRE’12), 2012.
Proceedings of the 6th International Workshop on Software Clones (IWSC’12), 2012.
Analyzing the Effect of Preprocessor Annotations on Code Clones.
Proceedings of the 11th IEEE International Working Conference on Source Code Analysis and Manipulation (SCAM’11), 2011.
Feature Profiling for Evolving Systems.
Proceedings of the 19th IEEE International Conference on Program Comprehension (ICPC’11), 2011.
Index-based model clone detection.
Proceedings of the 5th ICSE International Workshop on Software Clones (IWSC’11), 2011.
Regression Test Selection of Manual System Tests in Practice.
Proceedings of the 15th European Conference on Software Maintenance and Reengineering (CSMR’11), 2011.
Research in cloning beyond code: a first roadmap.
Proceedings of the 5th International Workshop on Software Clones (IWSC’11), 2011.
Why and How to Control Cloning in Software Artifacts.
Dissertation. Technische Universität München, 2011.
Achieving Accurate Clone Detection Results.
Proceedings of the 4th International Workshop on Software Clones (IWSC’10), 2010.
Can Clone Detection Support Quality Assessments of Requirements Specifications?
Proceedings of the 32nd International Conference on Software Engineering (ICSE’10), 2010.
Code similarities beyond copy & paste.
Proceedings of the 14th European Conference on Software Maintenance and Reengineering (CSMR’10), 2010.
Flexible Architecture Conformance Assessment with ConQAT.
Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering (ICSE’10), 2010.
Proceedings of the 4th International Workshop on Software Quality and Maintainability (WoSQ’10), 2010.
Index-Based Code Clone Detection: Incremental, Distributed, Scalable.
Proceedings of the 26th IEEE International Conference on Software Maintenance (ICSM’10), 2010.
Model Clone Detection in Practice.
Proceedings of the 4th International Workshop on Software Clones (IWSC’10), 2010.
Clone Detection Beyond Copy & Paste.
Proceedings of the 3rd International Workshop on Software Clones (IWSC’09), 2009.
CloneDetective: A Workbench for Clone Detection Research.
Proceedings of the 31st International Conference on Software Engineering (ICSE’09), 2009.
COPE - Automating Coupled Evolution of Metamodels and Models.
Proceedings of the 23rd European Conference on Object-Oriented Programming (ECOOP’09), 2009.
Proceedings of the 31st International Conference on Software Engineering (ICSE’09), 2009.
Software Quality Models: Purposes, Usage Scenarios and Requirements.
Proceedings of the 7th International Workshop on Software Quality (WoSQ’09), 2009.
The Curse of Copy&Paste – Cloning in Requirements Specifications.
Proceedings of the 3rd International Symposium on Empirical Software Engineering and Measurement (ESEM’09), 2009.
The loss of architectural knowledge during system evolution: An industrial case study.
Proceedings of the 17th IEEE International Conference on Program Comprehension (ICPC’09), 2009.
Clone detection in automotive model-based development.
Proceedings of the International Conference on Software Engineering (ICSE’08), 2008.
ConQAT - Ein Toolkit zur kontinuierlichen Qualitätsbewertung.
Tagungsband der Software-Engineering-Konferenz, 2008.
Selected Topics in Software Quality.
Report TUM-I0824. Technische Universität München, 2008.
Software-Qualitätsmodelle in der Praxis: Erfahrungen mit aktivitätenbasierten Modellen.
In Proceedings of Workshop Software-Qualitätsmodellierung und -bewertung (SQMB ’08), 2008.
Static Bug Detection Through Analysis of Inconsistent Clones.
Proceedings of SE’08, 2008.
Tool Support for Continuous Quality Control.
IEEE Software, Vol. 25, 2008.
Automating Language Evolution.
First Joint IEEE/IFIP Symposium on Theoretical Aspects of Software Engineering (TASE’07), 2007.
Variability Models Must Not be Invariant!.
First International Workshop on Variability Modelling of Software-Intensive Systems (VaMoS’07), 2007.
Domänenspezifische Sprachen und generative Entwicklung.
Proceedings, 2006.
The Language Evolver Lever – Tool Demonstration.
Electronic Notes in Theoretical Computer Science, Vol. 164, 2006.