Talk given at ICSM 2008 Conference in Beijing, China.
Duplicate Bug reports are commonly to pollute bug reporting systems and have negative effects on a development teams' productivity. Therefore, duplicate bug reports are ignored, once identified. The findings in this research work show, that duplicate reports actually contain extra information that is not present in the original bug reports and developers can potentially benefit from this information. We conduct experiments and a case study on ECLIPSE to quantify the amount of extra information. We show that this extra information can be used to enhance techniques related to bug fixing, such as triaging.
The bug report describes an issue where entering an invalid value for a BigDecimal property would cause the editor to lock up until restoring the default value. A patch was proposed to handle exceptions thrown by the BigDecimal constructor better by checking for a null error message and returning an alternative message or stack trace. The patch was committed to fix the problem. The document contains the bug report details, code snippets, and discussion between the reporter and assignee.
The document discusses server consolidation for online games and cloud computing. It provides three key reasons why server consolidation is beneficial for massively multiplayer online role-playing games (MMORPGs): 1) spatial locality in player interactions allows natural workload partitioning, 2) workload is highly variable but predictable, allowing aggregation during off-peak periods, and 3) operators run multiple games, allowing shared infrastructure. It evaluates policies for dynamic zone allocation and finds server consolidation reduces the number of required servers.
This document provides a step-by-step tutorial for creating a simple CORBA application with a C++ server and Java client. It describes installing Orbacus 4.0 beta 2 for C++ and Java, setting environment variables, specifying a "Count" object in IDL, implementing the C++ server and Java client code, and running the example. The goal is to demonstrate basic CORBA functionality like platform and language transparency through a simple but working implementation.
Automatic Identification of Bug-Introducing ChangesThomas Zimmermann
The document discusses identifying bug-introducing changes by analyzing version control histories and fix changes. It presents the SZZ algorithm which uses commit annotations to identify the revision that likely introduced a bug based on the revision that fixed it. The algorithm can identify bug-introducing changes but has limitations as annotations may be insufficient and not all modifications are fixes, leading to false positives and negatives.
The document describes a new algorithm to automatically identify bug-introducing changes by linking bug reports in an error reporting system to code changes in a version control system. The algorithm is an improvement on the existing SZZ algorithm by using annotation graphs, ignoring non-code changes, and removing outlier revisions. An evaluation of the new algorithm shows it reduces false positives by 36-51% and false negatives by 14% compared to the original SZZ approach.
Education, social structure and development by Sajjad Awan PhD Scholar TE DTS...Malik Sajjad Ahmad Awan
This document discusses the relationships between education, social structure, and development. It defines key terms like education, social structure, and development. Education transmits knowledge and skills between generations and shapes social structure. Social structure refers to relationships between groups in a society and can take different forms. Education and changes in social structure can promote social development, defined as improvements in a society's ability to fulfill its goals. The document examines how indicators of development like literacy and technology are influenced by education and social structure. In conclusion, education is said to shape existing social structures and institutions in a way that can lead to comprehensive development.
AQA GCSE Sociology - What is a social structure?Rachel Jones
Social structures organize societies through patterns of relationships and organizations. Most societies stratify along dimensions like social class, gender, ethnicity, and age, placing people in higher or lower social positions with unequal power. Social class can be measured by occupation scales, but these have limitations and do not consider wealth. Belonging to different social classes impacts life chances through factors like education, employment, health, and social mobility. Theoretical perspectives like Marxism and functionalism analyze social structures differently, with Marxism viewing class systems as unfair and functionalism arguing stratification rewards talent.
Talk given at ICSM 2008 Conference in Beijing, China.
Duplicate Bug reports are commonly to pollute bug reporting systems and have negative effects on a development teams' productivity. Therefore, duplicate bug reports are ignored, once identified. The findings in this research work show, that duplicate reports actually contain extra information that is not present in the original bug reports and developers can potentially benefit from this information. We conduct experiments and a case study on ECLIPSE to quantify the amount of extra information. We show that this extra information can be used to enhance techniques related to bug fixing, such as triaging.
The bug report describes an issue where entering an invalid value for a BigDecimal property would cause the editor to lock up until restoring the default value. A patch was proposed to handle exceptions thrown by the BigDecimal constructor better by checking for a null error message and returning an alternative message or stack trace. The patch was committed to fix the problem. The document contains the bug report details, code snippets, and discussion between the reporter and assignee.
The document discusses server consolidation for online games and cloud computing. It provides three key reasons why server consolidation is beneficial for massively multiplayer online role-playing games (MMORPGs): 1) spatial locality in player interactions allows natural workload partitioning, 2) workload is highly variable but predictable, allowing aggregation during off-peak periods, and 3) operators run multiple games, allowing shared infrastructure. It evaluates policies for dynamic zone allocation and finds server consolidation reduces the number of required servers.
This document provides a step-by-step tutorial for creating a simple CORBA application with a C++ server and Java client. It describes installing Orbacus 4.0 beta 2 for C++ and Java, setting environment variables, specifying a "Count" object in IDL, implementing the C++ server and Java client code, and running the example. The goal is to demonstrate basic CORBA functionality like platform and language transparency through a simple but working implementation.
Automatic Identification of Bug-Introducing ChangesThomas Zimmermann
The document discusses identifying bug-introducing changes by analyzing version control histories and fix changes. It presents the SZZ algorithm which uses commit annotations to identify the revision that likely introduced a bug based on the revision that fixed it. The algorithm can identify bug-introducing changes but has limitations as annotations may be insufficient and not all modifications are fixes, leading to false positives and negatives.
The document describes a new algorithm to automatically identify bug-introducing changes by linking bug reports in an error reporting system to code changes in a version control system. The algorithm is an improvement on the existing SZZ algorithm by using annotation graphs, ignoring non-code changes, and removing outlier revisions. An evaluation of the new algorithm shows it reduces false positives by 36-51% and false negatives by 14% compared to the original SZZ approach.
Education, social structure and development by Sajjad Awan PhD Scholar TE DTS...Malik Sajjad Ahmad Awan
This document discusses the relationships between education, social structure, and development. It defines key terms like education, social structure, and development. Education transmits knowledge and skills between generations and shapes social structure. Social structure refers to relationships between groups in a society and can take different forms. Education and changes in social structure can promote social development, defined as improvements in a society's ability to fulfill its goals. The document examines how indicators of development like literacy and technology are influenced by education and social structure. In conclusion, education is said to shape existing social structures and institutions in a way that can lead to comprehensive development.
AQA GCSE Sociology - What is a social structure?Rachel Jones
Social structures organize societies through patterns of relationships and organizations. Most societies stratify along dimensions like social class, gender, ethnicity, and age, placing people in higher or lower social positions with unequal power. Social class can be measured by occupation scales, but these have limitations and do not consider wealth. Belonging to different social classes impacts life chances through factors like education, employment, health, and social mobility. Theoretical perspectives like Marxism and functionalism analyze social structures differently, with Marxism viewing class systems as unfair and functionalism arguing stratification rewards talent.
The document describes a study on the impact of social structures on software quality using the Eclipse project as a case study. It analyzed 300,000 bug reports and 224,643 code changes to measure social communication dynamics like participation, centrality, and reputation across developers. Four dimensions of social measures - content, structure, communication dynamics, and workflow - were used to understand their relationship to post-release bugs.
One of the Microsoft development teams already uses PVS-Studio analyzer in their work. It's great, but it's not enough. That's why I keep demonstrating how static code analysis could benefit developers, using Microsoft projects as examples. We scanned Casablanca project three years ago and found nothing. As a tribute to its high quality, the project was awarded with a "bugless code" medal. As time went by, Casablanca developed and grew. PVS-Studio's capabilities, too, have significantly improved, and now I've finally got the opportunity to write an article about errors found by the analyzer in Casablanca project (C++ REST SDK). These errors are few, but the fact that their number is still big enough for me to make this article, does speak a lot in favor of PVS-Studio's effectiveness.
The document discusses an employee who left the company to work for an embedded systems company. The employee was concerned about the poor code quality at the new company. The employee is now trying to improve the code quality by introducing concepts like static analysis and version control that were emphasized at the previous company. The document includes examples of common coding issues and a paper the employee wrote to address these issues at the new company. The conclusion expresses hope that the situation is improving at the new company but also sadness that many programmers at large companies are unaware of modern development practices.
Analyzing the Blender project with PVS-StudioPVS-Studio
We go on analyzing open source projects and making the software world better. This time we have checked the Blender 2.62 package intended for creating 3D computer graphics.
We continue checking Microsoft projects: analysis of PowerShellPVS-Studio
It has become a "good tradition" for Microsoft to make their products open-source: CoreFX, .Net Compiler Platform (Roslyn), Code Contracts, MSBuild, and other projects. For us, the developers of PVS-Studio analyzer, it's an opportunity to check well-known projects, tell people (including the project authors themselves) about the bugs we find, and additionally test our analyzer. Today we are going to talk about the errors found in another project by Microsoft, PowerShell.
.NET is designed to solve problems that have plagued programmers in the past like incompatibilities between programming languages and technologies. It provides a common language runtime and type system that allows different languages to work together. The .NET Framework handles many common programming tasks like serialization automatically through metadata and provides a large class library for common functions.
Dusting the globe: analysis of NASA World Wind projectPVS-Studio
Sometimes it is useful to look back to see how helpful the analyzer was to old projects, and which errors can be avoided in good time, if the analyzer is regularly used. This time our choice was NASA World Wind project, which was being developed on C# until 2007.
Production Debugging at Code Camp PhillyBrian Lyttle
This document provides an introduction to production debugging techniques. It discusses monitoring tools like Task Manager and Performance Monitor, debugging fundamentals like stack traces and crash dumps, protocol analysis, and remote debugging. The goal is to help developers effectively debug problems in production environments using tools that don't require a development workstation.
This document outlines lab work assignments for an object-oriented programming course. The assignments include:
1) Creating a class to register student details and prevent duplicate entries.
2) Creating a banking account class to perform deposit, withdrawal, and statement printing transactions.
3) Creating a mobile phone class to store phone details and allow user login/selection of products to calculate total cost.
Penetration Testing for Easy RM to MP3 Converter Application and Post ExploitJongWon Kim
The document discusses penetration testing of the Easy RM to MP3 Converter application. It begins by setting up the testing environment with Backtrack5, Windows SP2 and SP3 virtual machines, and the vulnerable application. It then analyzes the application dynamically using a debugger to find a buffer overflow vulnerability. The document creates an exploit payload that uses return oriented programming (ROP) to bypass data execution prevention (DEP) and execute shellcode to connect back to the attacker machine for post-exploit access.
The Chromium browser is developing very fast. When we checked the solution for the first time in 2011, it included 473 projects. Now it includes 1169 projects. We were curious to know if Google developers had managed to keep the highest quality of their code with Chromium developing at such a fast rate. Well, they had.
Testing is fundamental in software development. Quality gates demand high coverage levels, pull requests need sufficient tests, leading to teams spending considerable time writing and maintaining them. But are we using our tests to their full potential?
'If code is hard to test, the design can be improved'. Starting from this mantra, this deep-dive session unveils hints to simplify code, break-down complexity, and effectively use functional programming. We'll delve into topics like fixture creep, partial mocks, onion architecture, and pure functions, providing numerous best practices and practical tips for your testing.
Be warned: This session may significantly disrupt your work routine and will likely change how you see testing. Attend at your own risk.
Google App Engine is a PaaS that allows developers to build and host web applications in the Google cloud. The document summarizes a workshop on using the Java runtime environment on GAE. It discusses the SDKs, deploying and managing apps on GAE, data storage using the datastore, and limitations like the 30-second request limit. The biggest benefits of GAE are scalability and low startup costs, while the hardest limit is the 30-second request processing time.
[RHFSeoul2017]6 Steps to Transform Enterprise ApplicationsDaniel Oh
The document provides a 6 step approach to transforming enterprise applications:
1. Re-organizing to DevOps;
2. Implementing self-service, on-demand infrastructure;
3. Automating deployments using tools like Puppet, Chef, and Kubernetes;
4. Establishing continuous integration and deployment pipelines;
5. Adopting advanced deployment techniques like blue-green deployments;
6. Moving to a microservices architecture.
The PVS-Studio developers' team has carried out comparison of the own static code analyzer PVS-Studio with the open-source Cppcheck static code analyzer. As a material for comparison, the source codes of the three open-source projects by id Software were chosen: Doom 3, Quake 3: Arena, Wolfenstein: Enemy Territory. The article describes the comparison methodology and lists of detected errors. The conclusions section at the end of the article contains "non-conclusions" actually, as we consciously avoid drawing any conclusions: you can reproduce our comparison and draw your own ones.
PVS-Studio and Continuous Integration: TeamCity. Analysis of the Open RollerC...Andrey Karpov
One of the most relevant scenarios for using the PVS-Studio analyzer is its integration into CI systems. Even though a project analysis by PVS-Studio can already be embedded with just a few commands into almost any continuous integration system, we continue to make this process even more convenient. PVS-Studio now supports converting the analyzer output to the TeamCity format-TeamCity Inspections Type. Let's see how it works.
What a year it has been for Microsoft and the Java Ecosystem! In this keynote George Adams and Martijn Verburg will take you through the highlights of Microsoft's internal and external Java investments and how they impact you as a Java developer and decision maker! In particular we'll cover what Microsoft has been up to since its acquisition of jClarity last year and the subsequent formation of its very own Java Engineering Group. You'll get behind the scenes insights into our thinking with regards to Microsoft giving back to the ecosystem, through OpenJDK (such as the Windows Arm port!), AdoptOpenJDK (bringing you free Java for life!) and launching Java developer friendly services (Azure Spring Cloud to name but one). You'll also hear about how much Microsoft depends on Java and its popularity within the company. If you've always been curious about what goes on behind the scenes at a major cloud player like Microsoft, then this is the session you'll want to tune into.
The PVS-Studio team is now actively developing a static analyzer for C# code. The first version is expected by the end of 2015. And for now my task is to write a few articles to attract C# programmers' attention to our tool in advance. I've got an updated installer today, so we can now install PVS-Studio with C#-support enabled and even analyze some source code. Without further hesitation, I decided to scan whichever program I had at hand. This happened to be the Umbraco project. Of course we can't expect too much of the current version of the analyzer, but its functionality has been enough to allow me to write this small article.
How to write clean & testable code without losing your mindAndreas Czakaj
If you create software that is to be developed continuously over several years you'll need a sustainable approach to code quality.
In our early days of AEM development, however, we used to struggle with code that is rigid, hard to test and full of LOG.debug calls.
In this talk I will share some development best practices we have found that really work in actual AEM based software, e.g. to achieve 100% code coverage and provide high confidence in the code base.
Spoiler alert: no new libraries, frameworks or tools are required - once you know the ideas, plain old TDD and the S.O.L.I.D. principles of Clean Code will do the trick.
by Andreas Czakaj, mensemedia Gesellschaft für Neue Medien mbH
Presented at the adaptTo() 2017 conference in Berlin (https://adapt.to/2017/en/schedule/how-to-write-clean---testable-code-without-losing-your-mind.html).
Presentation video can be found on YouTube (https://www.youtube.com/watch?v=JbJw5oN_zL4)
An important event has taken place in the PVS-Studio analyzer's life: support of C#-code analysis was added in the latest version. As one of its developers, I couldn't but try it on some project. Reading about scanning small and little-known projects is not much interesting of course, so it had to be something popular, and I picked MonoDevelop.
10 Year Impact Award Presentation - Duplicate Bug Reports Considered Harmful ...Nicolas Bettenburg
This document describes a new automated method called SEVERIS that assists NASA test engineers in assigning severity levels to defect reports. SEVERIS uses text mining and machine learning techniques on NASA's Project and Issue Tracking System (PITS) database to predict issue severities. A case study found that SEVERIS accurately predicts severities and provides probability estimates, helping guide decision making during the severity assessment process.
Ph.D. Dissertation - Studying the Impact of Developer Communication on the Qu...Nicolas Bettenburg
Software development is a largely collaborative effort, of which the actual encoding of program logic in source code is a relatively small part. Software developers have to collaborate effectively and communicate with their peers in order to avoid coordination problems. To date, little is known how developer communication during software development activities impacts the quality and evolution of a software.
In this thesis, we present and evaluate tools and techniques to recover communication data from traces of the software development activities. With this data, we study the impact of developer communication on the quality and evolution of the software through an in-depth investigation of the role of developer communication during software development activities. Through multiple case-studies on a broad spectrum of open-source software projects, we find that communication between developers stands in a direct relationship to the quality of the software. Our findings demonstrate that our models based on developer communication explain software defects as well as state-of-the art models that are based on technical information such as code and process metrics, and that social information metrics are orthogonal to these traditional metrics, leading to a more complete and integrated view on software defects. In addition, we find that communication between developers plays a important role in maintaining a healthy contribution management process, which is one of the key factors to the successful evolution of the software. Source code contributors who are part of the community surrounding open-source projects are available for limited times, and long communication times can lead to the loss of valuable contributions.
Our thesis illustrates that software development is an intricate and complex process that is strongly influenced by the social interactions between the stakeholders involved in the development activities. A traditional view based solely on technical aspects of software development such as source code size and complexity, while valuable, limits our understanding of software development activities. The research presented in this thesis consists of a first step towards gaining a more holistic view on software development activities.
More Related Content
Similar to Studying the impact of Social Structures on Software Quality
The document describes a study on the impact of social structures on software quality using the Eclipse project as a case study. It analyzed 300,000 bug reports and 224,643 code changes to measure social communication dynamics like participation, centrality, and reputation across developers. Four dimensions of social measures - content, structure, communication dynamics, and workflow - were used to understand their relationship to post-release bugs.
One of the Microsoft development teams already uses PVS-Studio analyzer in their work. It's great, but it's not enough. That's why I keep demonstrating how static code analysis could benefit developers, using Microsoft projects as examples. We scanned Casablanca project three years ago and found nothing. As a tribute to its high quality, the project was awarded with a "bugless code" medal. As time went by, Casablanca developed and grew. PVS-Studio's capabilities, too, have significantly improved, and now I've finally got the opportunity to write an article about errors found by the analyzer in Casablanca project (C++ REST SDK). These errors are few, but the fact that their number is still big enough for me to make this article, does speak a lot in favor of PVS-Studio's effectiveness.
The document discusses an employee who left the company to work for an embedded systems company. The employee was concerned about the poor code quality at the new company. The employee is now trying to improve the code quality by introducing concepts like static analysis and version control that were emphasized at the previous company. The document includes examples of common coding issues and a paper the employee wrote to address these issues at the new company. The conclusion expresses hope that the situation is improving at the new company but also sadness that many programmers at large companies are unaware of modern development practices.
Analyzing the Blender project with PVS-StudioPVS-Studio
We go on analyzing open source projects and making the software world better. This time we have checked the Blender 2.62 package intended for creating 3D computer graphics.
We continue checking Microsoft projects: analysis of PowerShellPVS-Studio
It has become a "good tradition" for Microsoft to make their products open-source: CoreFX, .Net Compiler Platform (Roslyn), Code Contracts, MSBuild, and other projects. For us, the developers of PVS-Studio analyzer, it's an opportunity to check well-known projects, tell people (including the project authors themselves) about the bugs we find, and additionally test our analyzer. Today we are going to talk about the errors found in another project by Microsoft, PowerShell.
.NET is designed to solve problems that have plagued programmers in the past like incompatibilities between programming languages and technologies. It provides a common language runtime and type system that allows different languages to work together. The .NET Framework handles many common programming tasks like serialization automatically through metadata and provides a large class library for common functions.
Dusting the globe: analysis of NASA World Wind projectPVS-Studio
Sometimes it is useful to look back to see how helpful the analyzer was to old projects, and which errors can be avoided in good time, if the analyzer is regularly used. This time our choice was NASA World Wind project, which was being developed on C# until 2007.
Production Debugging at Code Camp PhillyBrian Lyttle
This document provides an introduction to production debugging techniques. It discusses monitoring tools like Task Manager and Performance Monitor, debugging fundamentals like stack traces and crash dumps, protocol analysis, and remote debugging. The goal is to help developers effectively debug problems in production environments using tools that don't require a development workstation.
This document outlines lab work assignments for an object-oriented programming course. The assignments include:
1) Creating a class to register student details and prevent duplicate entries.
2) Creating a banking account class to perform deposit, withdrawal, and statement printing transactions.
3) Creating a mobile phone class to store phone details and allow user login/selection of products to calculate total cost.
Penetration Testing for Easy RM to MP3 Converter Application and Post ExploitJongWon Kim
The document discusses penetration testing of the Easy RM to MP3 Converter application. It begins by setting up the testing environment with Backtrack5, Windows SP2 and SP3 virtual machines, and the vulnerable application. It then analyzes the application dynamically using a debugger to find a buffer overflow vulnerability. The document creates an exploit payload that uses return oriented programming (ROP) to bypass data execution prevention (DEP) and execute shellcode to connect back to the attacker machine for post-exploit access.
The Chromium browser is developing very fast. When we checked the solution for the first time in 2011, it included 473 projects. Now it includes 1169 projects. We were curious to know if Google developers had managed to keep the highest quality of their code with Chromium developing at such a fast rate. Well, they had.
Testing is fundamental in software development. Quality gates demand high coverage levels, pull requests need sufficient tests, leading to teams spending considerable time writing and maintaining them. But are we using our tests to their full potential?
'If code is hard to test, the design can be improved'. Starting from this mantra, this deep-dive session unveils hints to simplify code, break-down complexity, and effectively use functional programming. We'll delve into topics like fixture creep, partial mocks, onion architecture, and pure functions, providing numerous best practices and practical tips for your testing.
Be warned: This session may significantly disrupt your work routine and will likely change how you see testing. Attend at your own risk.
Google App Engine is a PaaS that allows developers to build and host web applications in the Google cloud. The document summarizes a workshop on using the Java runtime environment on GAE. It discusses the SDKs, deploying and managing apps on GAE, data storage using the datastore, and limitations like the 30-second request limit. The biggest benefits of GAE are scalability and low startup costs, while the hardest limit is the 30-second request processing time.
[RHFSeoul2017]6 Steps to Transform Enterprise ApplicationsDaniel Oh
The document provides a 6 step approach to transforming enterprise applications:
1. Re-organizing to DevOps;
2. Implementing self-service, on-demand infrastructure;
3. Automating deployments using tools like Puppet, Chef, and Kubernetes;
4. Establishing continuous integration and deployment pipelines;
5. Adopting advanced deployment techniques like blue-green deployments;
6. Moving to a microservices architecture.
The PVS-Studio developers' team has carried out comparison of the own static code analyzer PVS-Studio with the open-source Cppcheck static code analyzer. As a material for comparison, the source codes of the three open-source projects by id Software were chosen: Doom 3, Quake 3: Arena, Wolfenstein: Enemy Territory. The article describes the comparison methodology and lists of detected errors. The conclusions section at the end of the article contains "non-conclusions" actually, as we consciously avoid drawing any conclusions: you can reproduce our comparison and draw your own ones.
PVS-Studio and Continuous Integration: TeamCity. Analysis of the Open RollerC...Andrey Karpov
One of the most relevant scenarios for using the PVS-Studio analyzer is its integration into CI systems. Even though a project analysis by PVS-Studio can already be embedded with just a few commands into almost any continuous integration system, we continue to make this process even more convenient. PVS-Studio now supports converting the analyzer output to the TeamCity format-TeamCity Inspections Type. Let's see how it works.
What a year it has been for Microsoft and the Java Ecosystem! In this keynote George Adams and Martijn Verburg will take you through the highlights of Microsoft's internal and external Java investments and how they impact you as a Java developer and decision maker! In particular we'll cover what Microsoft has been up to since its acquisition of jClarity last year and the subsequent formation of its very own Java Engineering Group. You'll get behind the scenes insights into our thinking with regards to Microsoft giving back to the ecosystem, through OpenJDK (such as the Windows Arm port!), AdoptOpenJDK (bringing you free Java for life!) and launching Java developer friendly services (Azure Spring Cloud to name but one). You'll also hear about how much Microsoft depends on Java and its popularity within the company. If you've always been curious about what goes on behind the scenes at a major cloud player like Microsoft, then this is the session you'll want to tune into.
The PVS-Studio team is now actively developing a static analyzer for C# code. The first version is expected by the end of 2015. And for now my task is to write a few articles to attract C# programmers' attention to our tool in advance. I've got an updated installer today, so we can now install PVS-Studio with C#-support enabled and even analyze some source code. Without further hesitation, I decided to scan whichever program I had at hand. This happened to be the Umbraco project. Of course we can't expect too much of the current version of the analyzer, but its functionality has been enough to allow me to write this small article.
How to write clean & testable code without losing your mindAndreas Czakaj
If you create software that is to be developed continuously over several years you'll need a sustainable approach to code quality.
In our early days of AEM development, however, we used to struggle with code that is rigid, hard to test and full of LOG.debug calls.
In this talk I will share some development best practices we have found that really work in actual AEM based software, e.g. to achieve 100% code coverage and provide high confidence in the code base.
Spoiler alert: no new libraries, frameworks or tools are required - once you know the ideas, plain old TDD and the S.O.L.I.D. principles of Clean Code will do the trick.
by Andreas Czakaj, mensemedia Gesellschaft für Neue Medien mbH
Presented at the adaptTo() 2017 conference in Berlin (https://adapt.to/2017/en/schedule/how-to-write-clean---testable-code-without-losing-your-mind.html).
Presentation video can be found on YouTube (https://www.youtube.com/watch?v=JbJw5oN_zL4)
An important event has taken place in the PVS-Studio analyzer's life: support of C#-code analysis was added in the latest version. As one of its developers, I couldn't but try it on some project. Reading about scanning small and little-known projects is not much interesting of course, so it had to be something popular, and I picked MonoDevelop.
Similar to Studying the impact of Social Structures on Software Quality (20)
10 Year Impact Award Presentation - Duplicate Bug Reports Considered Harmful ...Nicolas Bettenburg
This document describes a new automated method called SEVERIS that assists NASA test engineers in assigning severity levels to defect reports. SEVERIS uses text mining and machine learning techniques on NASA's Project and Issue Tracking System (PITS) database to predict issue severities. A case study found that SEVERIS accurately predicts severities and provides probability estimates, helping guide decision making during the severity assessment process.
Ph.D. Dissertation - Studying the Impact of Developer Communication on the Qu...Nicolas Bettenburg
Software development is a largely collaborative effort, of which the actual encoding of program logic in source code is a relatively small part. Software developers have to collaborate effectively and communicate with their peers in order to avoid coordination problems. To date, little is known how developer communication during software development activities impacts the quality and evolution of a software.
In this thesis, we present and evaluate tools and techniques to recover communication data from traces of the software development activities. With this data, we study the impact of developer communication on the quality and evolution of the software through an in-depth investigation of the role of developer communication during software development activities. Through multiple case-studies on a broad spectrum of open-source software projects, we find that communication between developers stands in a direct relationship to the quality of the software. Our findings demonstrate that our models based on developer communication explain software defects as well as state-of-the art models that are based on technical information such as code and process metrics, and that social information metrics are orthogonal to these traditional metrics, leading to a more complete and integrated view on software defects. In addition, we find that communication between developers plays a important role in maintaining a healthy contribution management process, which is one of the key factors to the successful evolution of the software. Source code contributors who are part of the community surrounding open-source projects are available for limited times, and long communication times can lead to the loss of valuable contributions.
Our thesis illustrates that software development is an intricate and complex process that is strongly influenced by the social interactions between the stakeholders involved in the development activities. A traditional view based solely on technical aspects of software development such as source code size and complexity, while valuable, limits our understanding of software development activities. The research presented in this thesis consists of a first step towards gaining a more holistic view on software development activities.
Mining Development Repositories to Study the Impact of Collaboration on Softw...Nicolas Bettenburg
This document proposes an approach to study the impact of collaboration on software systems through mining development repositories. The approach involves:
I. Extracting communication data such as source code comments, emails, and issue discussions from version control systems, mailing lists, and issue tracking systems.
II. Studying the impact of collaboration on software quality by computing social metrics from the extracted communication data and measuring their relationship to post-release defects.
III. Studying the impact of collaboration on the development community by analyzing data on how code contributions are managed, such as feedback and reviews, to understand how contributors, reviewers, and the software are affected by communication.
Using Fuzzy Code Search to Link Code Fragments in Discussions to Source CodeNicolas Bettenburg
Talk on Using Fuzzy Code Search to Link Code Fragments in Discussions to Source Code, given at the 16th European Conference on Software Maintenance and Reengineering (CSMR'12) in Hungary.
A Lightweight Approach to Uncover Technical Information in Unstructured DataNicolas Bettenburg
This document summarizes a technical paper that presents a lightweight approach to uncover technical information from unstructured data like bug reports and email discussions. The approach uses spell checkers and adds heuristics like identifying camel case terms and programming language keywords to help classify lines of text as technical or not. Evaluation on annotated bug reports and emails shows the approach achieves precision of 86-89% and recall of 68-86% in line classification, outperforming previous state-of-the-art techniques.
Managing Community Contributions: Lessons Learned from a Case Study on Andro...Nicolas Bettenburg
This document summarizes a case study comparing community contribution processes for Android and Linux. It finds that Android actively worked to provide faster feedback on contributions, typically responding within days rather than weeks as with Linux. Android also centralized the contribution process within a web application rather than using email lists. The study also found that most contributions targeted major subsystems, with acceptance rates between 50-91%, while some Android subsystems had very low acceptance due to being more sensitive. The goal for Android was to keep users engaged by providing rapid feedback on contributions.
The document describes the MUD 2010 workshop on mining unstructured data. It provides examples of unstructured data like websites, diagrams, documents, social media, documentation, help files, source code, bug reports, commit logs, emails, and system logs. Unstructured data is characterized as being complex, diverse, and imperfect due to its lack of explicit structure or format and use of natural language, rich semantics, and no authoritative representation.
An Empirical Study on Inconsistent Changes to Code Clones at Release LevelNicolas Bettenburg
This is a talk I gave at the 2009 Working Conference on Reverse Engineering in Lille, France about our work on the effects of inconsistent changes on software quality if we observe them at a release level.
An Empirical Study on the Risks of Using Off-the-Shelf Techniques for Process...Nicolas Bettenburg
The document discusses challenges in using off-the-shelf techniques to analyze mailing list archives. It finds that up to 98% of messages contain noise and need additional processing and cleaning. Issues include resolving multiple sender identities in up to 21% of addresses, reconstructing discussion threads from the linear archives, and extracting attachments that make up around 10% of messages.
Finding Paths in Large Spaces - A* and Hierarchical A*Nicolas Bettenburg
A* search is an informed search algorithm that finds the shortest path between a starting node and a goal node. It uses a heuristic function to estimate the distance to the goal for each node, guiding the search towards the most promising nodes first. A* is optimal if the heuristic is admissible (never overestimates the actual cost to reach the goal). It is also complete and optimally efficient. The algorithm maintains two lists, an open list of nodes to explore and a closed list of explored nodes. It iteratively removes the node with the lowest estimated total cost from the open list and expands it until the goal is found.
The document discusses different types of code cloning, including intentional cloning through copy-paste and unintentional cloning due to language idioms. It notes that 10-15% of code may be cloned and that cloning can increase maintenance effort. However, cloning may also be used for experimentation without risking existing code or to address bugs through workarounds. The document outlines eight common cloning patterns and suggests that the reasons for duplication should be understood before deciding if refactoring is needed, as cloning is not always harmful.
The document discusses approximation algorithms for NP-complete problems. It introduces the idea of finding near-optimal solutions in polynomial time for problems where optimal solutions cannot be found efficiently. It provides examples of the vertex cover problem and set cover problem, describing greedy approximation algorithms that provide performance guarantees for finding near-optimal solutions for these problems. The document also discusses some open questions around whether these approximation ratios can be improved.
This document discusses models for predicting customer perceptions of software quality based on factors collected within the first three months of installation. Logistic regression is used to model rare, high-impact software failures based on variables like system size, software upgrades, operating system, etc. Linear regression is used to model frequent, low-impact customer interactions like calls based on similar predictor variables. The models found most predictors to be statistically significant due to the large sample size.
Accuracy measures the percentage of correct predictions out of the total number of predictions. Precision measures the percentage of positive predictions that were actually correct. Recall measures the percentage of positive cases that were correctly identified.
The document discusses the benefits of exercise for mental health. Regular physical activity can help reduce anxiety and depression and improve mood and cognitive function. Exercise causes chemical changes in the brain that may help protect against mental illness and improve symptoms for those who already suffer from conditions like anxiety and depression.
The document discusses the benefits of exercise for mental health. Regular physical activity can help reduce anxiety and depression and improve mood and cognitive functioning. Exercise boosts blood flow, releases endorphins, and promotes changes in the brain which help relax the body and lift the mood.
Leveraging Generative AI to Drive Nonprofit InnovationTechSoup
In this webinar, participants learned how to utilize Generative AI to streamline operations and elevate member engagement. Amazon Web Service experts provided a customer specific use cases and dived into low/no-code tools that are quick and easy to deploy through Amazon Web Service (AWS.)
How to Setup Warehouse & Location in Odoo 17 InventoryCeline George
In this slide, we'll explore how to set up warehouses and locations in Odoo 17 Inventory. This will help us manage our stock effectively, track inventory levels, and streamline warehouse operations.
Main Java[All of the Base Concepts}.docxadhitya5119
This is part 1 of my Java Learning Journey. This Contains Custom methods, classes, constructors, packages, multithreading , try- catch block, finally block and more.
বাংলাদেশের অর্থনৈতিক সমীক্ষা ২০২৪ [Bangladesh Economic Review 2024 Bangla.pdf] কম্পিউটার , ট্যাব ও স্মার্ট ফোন ভার্সন সহ সম্পূর্ণ বাংলা ই-বুক বা pdf বই " সুচিপত্র ...বুকমার্ক মেনু 🔖 ও হাইপার লিংক মেনু 📝👆 যুক্ত ..
আমাদের সবার জন্য খুব খুব গুরুত্বপূর্ণ একটি বই ..বিসিএস, ব্যাংক, ইউনিভার্সিটি ভর্তি ও যে কোন প্রতিযোগিতা মূলক পরীক্ষার জন্য এর খুব ইম্পরট্যান্ট একটি বিষয় ...তাছাড়া বাংলাদেশের সাম্প্রতিক যে কোন ডাটা বা তথ্য এই বইতে পাবেন ...
তাই একজন নাগরিক হিসাবে এই তথ্য গুলো আপনার জানা প্রয়োজন ...।
বিসিএস ও ব্যাংক এর লিখিত পরীক্ষা ...+এছাড়া মাধ্যমিক ও উচ্চমাধ্যমিকের স্টুডেন্টদের জন্য অনেক কাজে আসবে ...
Philippine Edukasyong Pantahanan at Pangkabuhayan (EPP) CurriculumMJDuyan
(𝐓𝐋𝐄 𝟏𝟎𝟎) (𝐋𝐞𝐬𝐬𝐨𝐧 𝟏)-𝐏𝐫𝐞𝐥𝐢𝐦𝐬
𝐃𝐢𝐬𝐜𝐮𝐬𝐬 𝐭𝐡𝐞 𝐄𝐏𝐏 𝐂𝐮𝐫𝐫𝐢𝐜𝐮𝐥𝐮𝐦 𝐢𝐧 𝐭𝐡𝐞 𝐏𝐡𝐢𝐥𝐢𝐩𝐩𝐢𝐧𝐞𝐬:
- Understand the goals and objectives of the Edukasyong Pantahanan at Pangkabuhayan (EPP) curriculum, recognizing its importance in fostering practical life skills and values among students. Students will also be able to identify the key components and subjects covered, such as agriculture, home economics, industrial arts, and information and communication technology.
𝐄𝐱𝐩𝐥𝐚𝐢𝐧 𝐭𝐡𝐞 𝐍𝐚𝐭𝐮𝐫𝐞 𝐚𝐧𝐝 𝐒𝐜𝐨𝐩𝐞 𝐨𝐟 𝐚𝐧 𝐄𝐧𝐭𝐫𝐞𝐩𝐫𝐞𝐧𝐞𝐮𝐫:
-Define entrepreneurship, distinguishing it from general business activities by emphasizing its focus on innovation, risk-taking, and value creation. Students will describe the characteristics and traits of successful entrepreneurs, including their roles and responsibilities, and discuss the broader economic and social impacts of entrepreneurial activities on both local and global scales.
Temple of Asclepius in Thrace. Excavation resultsKrassimira Luka
The temple and the sanctuary around were dedicated to Asklepios Zmidrenus. This name has been known since 1875 when an inscription dedicated to him was discovered in Rome. The inscription is dated in 227 AD and was left by soldiers originating from the city of Philippopolis (modern Plovdiv).
13. Discussion Social
CONTENT STRUCTURES
4 Dimensions
of Measures
Measures of Communication
WORKFLOW DYNAMICS
13
14. Bug 137808
Summary: Exceptions from createFromString lock-up the editor
Product: [Modeling] EMF Reporter: Patrick Sodre <psodre@gmail.com>
Component: Core Assignee: Marcelo Paternostro <marcelop@ca.ibm.com>
Metadata
Status: VERIFIED FIXED QA Contact:
Severity: normal
Priority: P3 CC: merks@ca.ibm.com
Version: 2.2
Target Milestone: ---
Hardware: PC
OS: Windows XP
Whiteboard:
Opened: 2006-04-20 14:25 -
Description:
0400
As discussed on the newsgroup under the Thread with the same name I am opening
this bug entry. Here is a history of the thread.
-- From Ed Merks
Patrick,
The value is checked before it's applied and can't be applied until it's valid.
But this BigDecimal cases behaves oddly because the exception thrown by
new BigDecimal("badvalue")
Source Code
has a null message and the property editor relies on returning a non-null
message string to indicate there is an error.
Please open a bugzilla which I'll fix like this:
### Eclipse Workspace Patch 1.0
#P org.eclipse.emf.edit.ui
Index: src/org/eclipse/emf/edit/ui/provider/PropertyDescriptor.java
===================================================================
RCS file:
/cvsroot/tools/org.eclipse.emf/plugins/org.eclipse.emf.edit.ui/src/org/eclipse/emf/edit/ui/provider/PropertyDescriptor.java,v
retrieving revision 1.10
diff -u -r1.10 PropertyDescriptor.java
--- src/org/eclipse/emf/edit/ui/provider/PropertyDescriptor.java 21 Mar 2006
16:42:30 -0000 1.10
+++ src/org/eclipse/emf/edit/ui/provider/PropertyDescriptor.java 20 Apr 2006
15. 11:59:10 -0000
@@ -162,7 +162,8 @@
}
catch (Exception exception)
{
- return exception.getMessage();
+ String message = exception.getMessage();
+ return message == null ? exception.toString() : message;
}
}
Diagnostic diagnostic =
Diagnostician.INSTANCE.validate(EDataTypeCellEditor.this.eDataType, value);
Patrick Sodre wrote:
Hi,
It seems that if the user inputs an invalid parameter that gets created from
"createFromString" the Editor locks-up until the user explicitly calls "restore
Default Value".
Is this the expected behavior or could something better be done? For
instance if an exception is thrown restore the value back to what it was before
Patch
after displaying a pop-up error message.
I understand that for DataTypes defined by the user he/she should take care
of catching the exceptions but for the default ones like BigInteger/BigDecimal
I think the EMF runtime could do some of the grunt work...
If you think this is something worth pursuing I could post an entry in
Bugzilla.
Stack Trace
Regards,
Patrick Sodre
Below is the stack trace that I got from the Editor...
java.lang.NumberFormatException
at java.math.BigDecimal.<init>(BigDecimal.java:368)
at java.math.BigDecimal.<init>(BigDecimal.java:647)
at
org.eclipse.emf.ecore.impl.EcoreFactoryImpl.createEBigDecimalFromString(EcoreFactoryImpl.java:559)
at
org.eclipse.emf.ecore.impl.EcoreFactoryImpl.createFromString(EcoreFactoryImpl.java:116)
at
org.eclipse.emf.edit.ui.provider.PropertyDescriptor$EDataTypeCellEditor.doGetValue(PropertyDescriptor.java:183)
at org.eclipse.jface.viewers.CellEditor.getValue(CellEditor.java:449)
at
org.eclipse.ui.views.properties.PropertySheetEntry.applyEditorValue(PropertySheetEntry.java:135)
at
org.eclipse.ui.views.properties.PropertySheetViewer.applyEditorValue(PropertySheetViewer.java:249)
at
------- Comment #1 From Ed Merks 2006-04-20 15:09:23 -0400 -------
The fix has been committed to CVS. Thanks for reporting this problem.
16. Discussion Social
CONTENT STRUCTURES
4 Dimensions
of Measures
Measures of Communication
WORKFLOW DYNAMICS
16
17. Bug 137808
Summary: Exceptions from createFromString lock-up the editor
Product: [Modeling] EMF Reporter: Patrick Sodre <psodre@gmail.com>
Component: Core Assignee: Marcelo Paternostro <marcelop@ca.ibm.com>
Status: VERIFIED FIXED QA Contact:
# PARTICIPANTS IN
Severity: normal
Priority: P3 CC: merks@ca.ibm.com
Version: 2.2
DISCUSSION
Target Milestone: ---
Hardware: PC
OS: Windows XP
Whiteboard:
Opened: 2006-04-20 14:25 -
Description:
0400
As discussed on the newsgroup under the Thread with the same name I am opening
this bug entry. Here is a history of the thread.
-- From Ed Merks
Patrick,
The value is checked before it's applied and can't be applied until it's valid.
But this BigDecimal cases behaves oddly because the exception thrown by
new BigDecimal("badvalue")
has a null message and the property editor relies on returning a non-null
message string to indicate there is an error.
Please open a bugzilla which I'll fix like this:
### Eclipse Workspace Patch 1.0
ROLE OF
#P org.eclipse.emf.edit.ui
Index: src/org/eclipse/emf/edit/ui/provider/PropertyDescriptor.java
===================================================================
RCS file:
/cvsroot/tools/org.eclipse.emf/plugins/org.eclipse.emf.edit.ui/src/org/eclipse/emf/edit/ui/provider/PropertyDescriptor.java,v
PARTICIPANTS
retrieving revision 1.10
diff -u -r1.10 PropertyDescriptor.java
--- src/org/eclipse/emf/edit/ui/provider/PropertyDescriptor.java 21 Mar 2006
16:42:30 -0000 1.10
+++ src/org/eclipse/emf/edit/ui/provider/PropertyDescriptor.java 20 Apr 2006
11:59:10 -0000
@@ -162,7 +162,8 @@
}
catch (Exception exception)
{
- return exception.getMessage();
+ String message = exception.getMessage();
+ return message == null ? exception.toString() : message;
}
}
Diagnostic diagnostic =
REPUTATION
Diagnostician.INSTANCE.validate(EDataTypeCellEditor.this.eDataType, value);
Patrick Sodre wrote:
Hi,
It seems that if the user inputs an invalid parameter that gets created from
"createFromString" the Editor locks-up until the user explicitly calls "restore
Default Value".
Is this the expected behavior or could something better be done? For
instance if an exception is thrown restore the value back to what it was before
after displaying a pop-up error message.
I understand that for DataTypes defined by the user he/she should take care
of catching the exceptions but for the default ones like BigInteger/BigDecimal
I think the EMF runtime could do some of the grunt work...
If you think this is something worth pursuing I could post an entry in
Bugzilla.
CENTRALITY
Regards,
Patrick Sodre
Below is the stack trace that I got from the Editor...
java.lang.NumberFormatException
at java.math.BigDecimal.<init>(BigDecimal.java:368)
at java.math.BigDecimal.<init>(BigDecimal.java:647)
at
org.eclipse.emf.ecore.impl.EcoreFactoryImpl.createEBigDecimalFromString(EcoreFactoryImpl.java:559)
at
org.eclipse.emf.ecore.impl.EcoreFactoryImpl.createFromString(EcoreFactoryImpl.java:116)
at
org.eclipse.emf.edit.ui.provider.PropertyDescriptor$EDataTypeCellEditor.doGetValue(PropertyDescriptor.java:183)
at org.eclipse.jface.viewers.CellEditor.getValue(CellEditor.java:449)
at
org.eclipse.ui.views.properties.PropertySheetEntry.applyEditorValue(PropertySheetEntry.java:135)
at
org.eclipse.ui.views.properties.PropertySheetViewer.applyEditorValue(PropertySheetViewer.java:249)
at
------- Comment #1 From Ed Merks 2006-04-20 15:09:23 -0400 -------
The fix has been committed to CVS. Thanks for reporting this problem. 17
18. Discussion Social
CONTENT STRUCTURES
4 Dimensions
of Measures
Measures of Communication
WORKFLOW DYNAMICS
18
19. Bug 137808
Summary: Exceptions from createFromString lock-up the editor
Product: [Modeling] EMF Reporter: Patrick Sodre <psodre@gmail.com>
Component: Core Assignee: Marcelo Paternostro <marcelop@ca.ibm.com>
Status: VERIFIED FIXED QA Contact:
Severity: normal
Priority: P3 CC: merks@ca.ibm.com
Version: 2.2
Target Milestone: ---
Hardware: PC
OS: Windows XP
Whiteboard:
Opened: 2006-04-20 14:25 -
# MESSAGES
Description:
0400
As discussed on the newsgroup under the Thread with the same name I am opening
this bug entry. Here is a history of the thread.
-- From Ed Merks
Patrick,
The value is checked before it's applied and can't be applied until it's valid.
But this BigDecimal cases behaves oddly because the exception thrown by
new BigDecimal("badvalue")
has a null message and the property editor relies on returning a non-null
message string to indicate there is an error.
MESSAGE
Please open a bugzilla which I'll fix like this:
### Eclipse Workspace Patch 1.0
#P org.eclipse.emf.edit.ui
Index: src/org/eclipse/emf/edit/ui/provider/PropertyDescriptor.java
LENGTH
===================================================================
RCS file:
/cvsroot/tools/org.eclipse.emf/plugins/org.eclipse.emf.edit.ui/src/org/eclipse/emf/edit/ui/provider/PropertyDescriptor.java,v
retrieving revision 1.10
diff -u -r1.10 PropertyDescriptor.java
--- src/org/eclipse/emf/edit/ui/provider/PropertyDescriptor.java 21 Mar 2006
16:42:30 -0000 1.10
+++ src/org/eclipse/emf/edit/ui/provider/PropertyDescriptor.java 20 Apr 2006
11:59:10 -0000
@@ -162,7 +162,8 @@
}
catch (Exception exception)
{
- return exception.getMessage();
+ String message = exception.getMessage();
+ return message == null ? exception.toString() : message;
}
REPLY TIME
}
Diagnostic diagnostic =
Diagnostician.INSTANCE.validate(EDataTypeCellEditor.this.eDataType, value);
Patrick Sodre wrote:
Hi,
It seems that if the user inputs an invalid parameter that gets created from
"createFromString" the Editor locks-up until the user explicitly calls "restore
Default Value".
Is this the expected behavior or could something better be done? For
instance if an exception is thrown restore the value back to what it was before
after displaying a pop-up error message.
I understand that for DataTypes defined by the user he/she should take care
of catching the exceptions but for the default ones like BigInteger/BigDecimal
I think the EMF runtime could do some of the grunt work...
If you think this is something worth pursuing I could post an entry in
Bugzilla.
INTERESTINGNESS
Regards,
Patrick Sodre
Below is the stack trace that I got from the Editor...
java.lang.NumberFormatException
at java.math.BigDecimal.<init>(BigDecimal.java:368)
at java.math.BigDecimal.<init>(BigDecimal.java:647)
at
org.eclipse.emf.ecore.impl.EcoreFactoryImpl.createEBigDecimalFromString(EcoreFactoryImpl.java:559)
at
org.eclipse.emf.ecore.impl.EcoreFactoryImpl.createFromString(EcoreFactoryImpl.java:116)
at
org.eclipse.emf.edit.ui.provider.PropertyDescriptor$EDataTypeCellEditor.doGetValue(PropertyDescriptor.java:183)
at org.eclipse.jface.viewers.CellEditor.getValue(CellEditor.java:449)
at
org.eclipse.ui.views.properties.PropertySheetEntry.applyEditorValue(PropertySheetEntry.java:135)
at
org.eclipse.ui.views.properties.PropertySheetViewer.applyEditorValue(PropertySheetViewer.java:249)
at
------- Comment #1 From Ed Merks 2006-04-20 15:09:23 -0400 -------
The fix has been committed to CVS. Thanks for reporting this problem. 19
20. Bug 137808
Summary: Exceptions from createFromString lock-up the editor
Product: [Modeling] EMF Reporter: Patrick Sodre <psodre@gmail.com>
Component: Core Assignee: Marcelo Paternostro <marcelop@ca.ibm.com>
Status: VERIFIED FIXED QA Contact:
Severity: normal
Priority: P3 CC: merks@ca.ibm.com
Version: 2.2
Target Milestone: ---
Hardware: PC
OS: Windows XP
Whiteboard:
Opened: 2006-04-20 14:25 -
Description:
0400
As discussed on the newsgroup under the Thread with the same name I am opening
this bug entry. Here is a history of the thread.
-- From Ed Merks
# MESSAGES
Patrick,
The value is checked before it's applied and can't be applied until it's valid.
But this BigDecimal cases behaves oddly because the exception thrown by
new BigDecimal("badvalue")
has a null message and the property editor relies on returning a non-null
message string to indicate there is an error.
Please open a bugzilla which I'll fix like this:
### Eclipse Workspace Patch 1.0
#P org.eclipse.emf.edit.ui
Index: src/org/eclipse/emf/edit/ui/provider/PropertyDescriptor.java
===================================================================
MESSAGE
LENGTH
RCS file:
/cvsroot/tools/org.eclipse.emf/plugins/org.eclipse.emf.edit.ui/src/org/eclipse/emf/edit/ui/provider/PropertyDescriptor.java,v
retrieving revision 1.10
diff -u -r1.10 PropertyDescriptor.java
--- src/org/eclipse/emf/edit/ui/provider/PropertyDescriptor.java 21 Mar 2006
16:42:30 -0000 1.10
+++ src/org/eclipse/emf/edit/ui/provider/PropertyDescriptor.java 20 Apr 2006
11:59:10 -0000
@@ -162,7 +162,8 @@
}
catch (Exception exception)
{
- return exception.getMessage();
+ String message = exception.getMessage();
+ return message == null ? exception.toString() : message;
}
}
REPLY TIME
Diagnostic diagnostic =
Diagnostician.INSTANCE.validate(EDataTypeCellEditor.this.eDataType, value);
Patrick Sodre wrote:
Hi,
It seems that if the user inputs an invalid parameter that gets created from
"createFromString" the Editor locks-up until the user explicitly calls "restore
Default Value".
Is this the expected behavior or could something better be done? For
instance if an exception is thrown restore the value back to what it was before
after displaying a pop-up error message.
I understand that for DataTypes defined by the user he/she should take care
of catching the exceptions but for the default ones like BigInteger/BigDecimal
I think the EMF runtime could do some of the grunt work...
If you think this is something worth pursuing I could post an entry in
Bugzilla.
Regards,
Patrick Sodre
Below is the stack trace that I got from the Editor...
java.lang.NumberFormatException
INTERESTINGNESS
at java.math.BigDecimal.<init>(BigDecimal.java:368)
at java.math.BigDecimal.<init>(BigDecimal.java:647)
at
org.eclipse.emf.ecore.impl.EcoreFactoryImpl.createEBigDecimalFromString(EcoreFactoryImpl.java:559)
at
org.eclipse.emf.ecore.impl.EcoreFactoryImpl.createFromString(EcoreFactoryImpl.java:116)
at
org.eclipse.emf.edit.ui.provider.PropertyDescriptor$EDataTypeCellEditor.doGetValue(PropertyDescriptor.java:183)
at org.eclipse.jface.viewers.CellEditor.getValue(CellEditor.java:449)
at
org.eclipse.ui.views.properties.PropertySheetEntry.applyEditorValue(PropertySheetEntry.java:135)
at
org.eclipse.ui.views.properties.PropertySheetViewer.applyEditorValue(PropertySheetViewer.java:249)
at
------- Comment #1 From Ed Merks 2006-04-20 15:09:23 -0400 -------
The fix has been committed to CVS. Thanks for reporting this problem. 20
21. Bug 137808
Summary: Exceptions from createFromString lock-up the editor
Product: [Modeling] EMF Reporter: Patrick Sodre <psodre@gmail.com>
Component: Core Assignee: Marcelo Paternostro <marcelop@ca.ibm.com>
Status: VERIFIED FIXED QA Contact:
Severity: normal
Priority: P3 CC: merks@ca.ibm.com
Version: 2.2
Target Milestone: ---
Hardware: PC
OS: Windows XP
Whiteboard:
Opened: 2006-04-20 14:25 -
# MESSAGES
Description:
0400
As discussed on the newsgroup under the Thread with the same name I am opening
this bug entry. Here is a history of the thread.
-- From Ed Merks
Patrick,
The value is checked before it's applied and can't be applied until it's valid.
But this BigDecimal cases behaves oddly because the exception thrown by
new BigDecimal("badvalue")
has a null message and the property editor relies on returning a non-null
message string to indicate there is an error.
MESSAGE
Please open a bugzilla which I'll fix like this:
### Eclipse Workspace Patch 1.0
#P org.eclipse.emf.edit.ui
Index: src/org/eclipse/emf/edit/ui/provider/PropertyDescriptor.java
LENGTH
===================================================================
RCS file:
/cvsroot/tools/org.eclipse.emf/plugins/org.eclipse.emf.edit.ui/src/org/eclipse/emf/edit/ui/provider/PropertyDescriptor.java,v
retrieving revision 1.10
diff -u -r1.10 PropertyDescriptor.java
--- src/org/eclipse/emf/edit/ui/provider/PropertyDescriptor.java 21 Mar 2006
16:42:30 -0000 1.10
+++ src/org/eclipse/emf/edit/ui/provider/PropertyDescriptor.java 20 Apr 2006
11:59:10 -0000
@@ -162,7 +162,8 @@
}
catch (Exception exception)
{
- return exception.getMessage();
+ String message = exception.getMessage();
+ return message == null ? exception.toString() : message;
}
REPLY TIME
}
Diagnostic diagnostic =
Diagnostician.INSTANCE.validate(EDataTypeCellEditor.this.eDataType, value);
Patrick Sodre wrote:
Hi,
It seems that if the user inputs an invalid parameter that gets created from
"createFromString" the Editor locks-up until the user explicitly calls "restore
Default Value".
Is this the expected behavior or could something better be done? For
instance if an exception is thrown restore the value back to what it was before
after displaying a pop-up error message.
I understand that for DataTypes defined by the user he/she should take care
of catching the exceptions but for the default ones like BigInteger/BigDecimal
I think the EMF runtime could do some of the grunt work...
If you think this is something worth pursuing I could post an entry in
Bugzilla.
INTERESTINGNESS
Regards,
Patrick Sodre
Below is the stack trace that I got from the Editor...
java.lang.NumberFormatException
at java.math.BigDecimal.<init>(BigDecimal.java:368)
at java.math.BigDecimal.<init>(BigDecimal.java:647)
at
org.eclipse.emf.ecore.impl.EcoreFactoryImpl.createEBigDecimalFromString(EcoreFactoryImpl.java:559)
at
org.eclipse.emf.ecore.impl.EcoreFactoryImpl.createFromString(EcoreFactoryImpl.java:116)
at
org.eclipse.emf.edit.ui.provider.PropertyDescriptor$EDataTypeCellEditor.doGetValue(PropertyDescriptor.java:183)
at org.eclipse.jface.viewers.CellEditor.getValue(CellEditor.java:449)
at
org.eclipse.ui.views.properties.PropertySheetEntry.applyEditorValue(PropertySheetEntry.java:135)
at
org.eclipse.ui.views.properties.PropertySheetViewer.applyEditorValue(PropertySheetViewer.java:249)
at
------- Comment #1 From Ed Merks 2006-04-20 15:09:23 -0400 -------
The fix has been committed to CVS. Thanks for reporting this problem. 21
22. Bug 137808
Summary: Exceptions from createFromString lock-up the editor
Product: [Modeling] EMF Reporter: Patrick Sodre <psodre@gmail.com>
Component: Core Assignee: Marcelo Paternostro <marcelop@ca.ibm.com>
Status: VERIFIED FIXED QA Contact:
Severity: normal
Priority: P3 CC: merks@ca.ibm.com
Version: 2.2
Target Milestone: ---
Hardware: PC
OS: Windows XP
Whiteboard:
Opened: 2006-04-20 14:25 -
# MESSAGES
Description:
0400
As discussed on the newsgroup under the Thread with the same name I am opening
this bug entry. Here is a history of the thread.
-- From Ed Merks
Patrick,
The value is checked before it's applied and can't be applied until it's valid.
But this BigDecimal cases behaves oddly because the exception thrown by
new BigDecimal("badvalue")
has a null message and the property editor relies on returning a non-null
message string to indicate there is an error.
MESSAGE
Please open a bugzilla which I'll fix like this:
### Eclipse Workspace Patch 1.0
#P org.eclipse.emf.edit.ui
Index: src/org/eclipse/emf/edit/ui/provider/PropertyDescriptor.java
LENGTH
===================================================================
RCS file:
/cvsroot/tools/org.eclipse.emf/plugins/org.eclipse.emf.edit.ui/src/org/eclipse/emf/edit/ui/provider/PropertyDescriptor.java,v
retrieving revision 1.10
diff -u -r1.10 PropertyDescriptor.java
--- src/org/eclipse/emf/edit/ui/provider/PropertyDescriptor.java 21 Mar 2006
16:42:30 -0000 1.10
+++ src/org/eclipse/emf/edit/ui/provider/PropertyDescriptor.java 20 Apr 2006
11:59:10 -0000
@@ -162,7 +162,8 @@
}
catch (Exception exception)
{
- return exception.getMessage();
+ String message = exception.getMessage();
+ return message == null ? exception.toString() : message;
}
REPLY TIME
}
Diagnostic diagnostic =
Diagnostician.INSTANCE.validate(EDataTypeCellEditor.this.eDataType, value);
Patrick Sodre wrote:
Hi,
It seems that if the user inputs an invalid parameter that gets created from
"createFromString" the Editor locks-up until the user explicitly calls "restore
Default Value".
Is this the expected behavior or could something better be done? For
instance if an exception is thrown restore the value back to what it was before
after displaying a pop-up error message.
I understand that for DataTypes defined by the user he/she should take care
of catching the exceptions but for the default ones like BigInteger/BigDecimal
I think the EMF runtime could do some of the grunt work...
If you think this is something worth pursuing I could post an entry in
Bugzilla.
INTERESTINGNESS
Regards,
Patrick Sodre
Below is the stack trace that I got from the Editor...
java.lang.NumberFormatException
at java.math.BigDecimal.<init>(BigDecimal.java:368)
at java.math.BigDecimal.<init>(BigDecimal.java:647)
at
org.eclipse.emf.ecore.impl.EcoreFactoryImpl.createEBigDecimalFromString(EcoreFactoryImpl.java:559)
at
org.eclipse.emf.ecore.impl.EcoreFactoryImpl.createFromString(EcoreFactoryImpl.java:116)
at
org.eclipse.emf.edit.ui.provider.PropertyDescriptor$EDataTypeCellEditor.doGetValue(PropertyDescriptor.java:183)
at org.eclipse.jface.viewers.CellEditor.getValue(CellEditor.java:449)
at
org.eclipse.ui.views.properties.PropertySheetEntry.applyEditorValue(PropertySheetEntry.java:135)
at
org.eclipse.ui.views.properties.PropertySheetViewer.applyEditorValue(PropertySheetViewer.java:249)
at
------- Comment #1 From Ed Merks 2006-04-20 15:09:23 -0400 -------
The fix has been committed to CVS. Thanks for reporting this problem. 22
23. Discussion Social
CONTENT STRUCTURES
4 Dimensions
of Measures
Measures of Communication
WORKFLOW DYNAMICS
23
24. 2.3 Life Cycle of Bug Reports
FIXED
WORKSFORME
WONTFIX
INVALID
UNCONFIRMED
DUPLICATE
NEW / REOPEN ASSIGNED RESOLVED VERIFIED
CLOSED
24
25. REGRESSION MODEL
the amount of post-release defects into relation of our pre-
release measures. The complete linear regression model has
the form
Def ects = αi · ContentM easurei
i
+ βj · StructuralM easurej
j
+ γk · ComDynM easurek
k
+ δl · W orkf lowM easurel +
l
Based on this model, we will investigate the statistical
relationships between the social interaction measures, which
are represented by the regression variables in the model, and
post release defects, represented by the dependent variable 25
26. REGRESSION MODEL
Dependentamount of post-release defects into relation of our pre-
the Variable
(what is predicted)
release measures. The complete linear regression model has
the form
Def ects = αi · ContentM easurei
i
+ βj · StructuralM easurej
j
+ γk · ComDynM easurek
k
+ δl · W orkf lowM easurel +
l
Based on this model, we will investigate the statistical
relationships between the social interaction measures, which
are represented by the regression variables in the model, and
post release defects, represented by the dependent variable 25
27. REGRESSION MODEL
Regression
Dependentamount of post-release defects into relation of our pre-
the Variable Coefficients
(what is predicted)
release measures. The complete linear regression model has
the form
Def ects = αi · ContentM easurei
i
+ βj · StructuralM easurej
j
+ γk · ComDynM easurek
k
+ δl · W orkf lowM easurel +
l
Based on this model, we will investigate the statistical
relationships between the social interaction measures, which
are represented by the regression variables in the model, and
post release defects, represented by the dependent variable 25
28. REGRESSION MODEL
Regression
Independent
Dependentamount of post-release defects into relation of our pre-
Variable
the Coefficients
(what is predicted) Variables
release measures. The complete linear regression model has
the form
Def ects = αi · ContentM easurei
i
+ βj · StructuralM easurej
j
+ γk · ComDynM easurek
k
+ δl · W orkf lowM easurel +
l
Based on this model, we will investigate the statistical
relationships between the social interaction measures, which
are represented by the regression variables in the model, and
post release defects, represented by the dependent variable 25
29. APPROACH
Hierarchical Analysis
Successfully used in the past! (Cataldo, Mockus)
Goal: Investigate the effect of each
variable on the model.
(1) Eliminate variables with high correlation.
(2) Build linear model step-by-step, each time
adding new independent variables.
(3) At each step, evaluate how well the set of
independent variables explains the data.
26
32. /01-2) ;;; ;;; ; ; ;;; ;;; ;;; ;; ; ;
(/01-2
()-*! ;;;
;;;
;;; ;;;APPROACH
;; ;;;
;;;
;;;
;;;
;;;
;;;
;;;
;;;
;;;
;;; ;
;;;
;;; ;;;
Hierarchical Analysis
()*+,-. ;;; ;;; ;; ; ;;; ;; ;;; ;;; ;;; ; ;;;
$%' ;;; ;;; ;;; ;;; ;;; ; ; ;;; ;;;
:0. :0 4(1. (1) Eliminate variables with high correlation.
4(1 63.(. 63.( ,./39. ,./39 (!)8 )(0-.(1 (+).,)
!
(6.7) (/0,1 (34(5 1,0-.) (1,0-. /01-2) (/01-2 ()-*! ()*+,-
igure 1. Pairwise correlations of social interaction measures with levels * p0.05, ** p0.01, *** p0.001. Strength of correlatio
olour intensities; negative correlations are marked with a dashed outline.
Variance Inflation Factor model that have a variance inflation factor g
log(Yi ) Model 1 Model 2 Model 3 (1) Build analysis with all
We start our model with a regression mode
NSOURCE
NSCOM
3.38
3.34
3.38
3.34
3.40
3.36 independent variables
all our variables. The variance inflation fa
NPATCH 3.94 3.88 3.90 model are presented in Table II, Model 1. W
PATCHS 3.84 3.82 3.84 variables that have a variance inflation facto
10. Measure VIF of each
(2) We remove the highest one (NMSG) from
NTRACE 4.62 4.60 4.57
TRACES 4.78 4.75 4.70
NLINK 2.24 2.22 1.90 model and recompute the variance inflation f
independent variable
NDEVS 9.32 9.27 1.91 reduced set of variables. The resulting mode
NUSERS 4.55 4.54 2.30
SNACENT 10.66 10.65 — Table II) contains only one more variable w
NMSG
REPLY
11.63
1.17
—
1.17
—
1.17
(3) Remove variable remove the regre
factor larger than 10. We with
(SNACENT) from the model and recomput
factors. highest VIF
REPLYE 2.04 1.91 1.90
DLEN 4.21 1.91 1.87 In the resulting model (Model 3 in
DLENE 4.65 1.98 1.96 variables have an inflation factor larger than 5
INT 2.82 2.82 2.60 our analysis of multicollinearity.
INTE 1.71 1.71 1.71
WA
WAE
2.26
2.08
1.99
2.06
1.96
2.02
Repeat until Analysis Design
C. Hierarchical all VIF below
threshold (t=10)
After having determined the reduced set
Table II variables with low multicollinearity, we pro
S TEP - WISE ANALYSIS OF MULTICOLLINEARITY. 28
33. /01-2) ;;; ;;; ; ; ;;; ;;; ;;; ;; ; ;
(/01-2
()-*! ;;;
;;;
;;; ;;;APPROACH
;; ;;;
;;;
;;;
;;;
;;;
;;;
;;;
;;;
;;;
;;; ;
;;;
;;; ;;;
Hierarchical Analysis
()*+,-. ;;; ;;; ;; ; ;;; ;; ;;; ;;; ;;; ; ;;;
$%' ;;; ;;; ;;; ;;; ;;; ; ; ;;; ;;;
:0. :0 4(1. (1) Eliminate variables with high correlation.
4(1 63.(. 63.( ,./39. ,./39 (!)8 )(0-.(1 (+).,)
!
(6.7) (/0,1 (34(5 1,0-.) (1,0-. /01-2) (/01-2 ()-*! ()*+,-
igure 1. Pairwise correlations of social interaction measures with levels * p0.05, ** p0.01, *** p0.001. Strength of correlatio
olour intensities; negative correlations are marked with a dashed outline.
Variance Inflation Factor model that have a variance inflation factor g
log(Yi ) Model 1 Model 2 Model 3 (1) Build analysis with all
We start our model with a regression mode
NSOURCE
NSCOM
3.38
3.34
3.38
3.34
3.40
3.36 independent variables
all our variables. The variance inflation fa
NPATCH 3.94 3.88 3.90 model are presented in Table II, Model 1. W
PATCHS 3.84 3.82 3.84 variables that have a variance inflation facto
10. Measure VIF of each
(2) We remove the highest one (NMSG) from
NTRACE 4.62 4.60 4.57
TRACES 4.78 4.75 4.70
NLINK 2.24 2.22 1.90 model and recompute the variance inflation f
independent variable
NDEVS 9.32 9.27 1.91 reduced set of variables. The resulting mode
NUSERS 4.55 4.54 2.30
SNACENT 10.66 10.65 — Table II) contains only one more variable w
NMSG
REPLY
11.63
1.17
—
1.17
—
1.17
(3) Remove variable remove the regre
factor larger than 10. We with
(SNACENT) from the model and recomput
factors. highest VIF
REPLYE 2.04 1.91 1.90
DLEN 4.21 1.91 1.87 In the resulting model (Model 3 in
DLENE 4.65 1.98 1.96 variables have an inflation factor larger than 5
INT 2.82 2.82 2.60 our analysis of multicollinearity.
INTE 1.71 1.71 1.71
WA
WAE
2.26
2.08
1.99
2.06
1.96
2.02
Repeat until Analysis Design
C. Hierarchical all VIF below
threshold (t=10)
After having determined the reduced set
Table II variables with low multicollinearity, we pro
S TEP - WISE ANALYSIS OF MULTICOLLINEARITY. 28
34. /01-2) ;;; ;;; ; ; ;;; ;;; ;;; ;; ; ;
(/01-2
()-*! ;;;
;;;
;;; ;;;APPROACH
;; ;;;
;;;
;;;
;;;
;;;
;;;
;;;
;;;
;;;
;;; ;
;;;
;;; ;;;
Hierarchical Analysis
()*+,-. ;;; ;;; ;; ; ;;; ;; ;;; ;;; ;;; ; ;;;
$%' ;;; ;;; ;;; ;;; ;;; ; ; ;;; ;;;
:0. :0 4(1. (1) Eliminate variables with high correlation.
4(1 63.(. 63.( ,./39. ,./39 (!)8 )(0-.(1 (+).,)
!
(6.7) (/0,1 (34(5 1,0-.) (1,0-. /01-2) (/01-2 ()-*! ()*+,-
igure 1. Pairwise correlations of social interaction measures with levels * p0.05, ** p0.01, *** p0.001. Strength of correlatio
olour intensities; negative correlations are marked with a dashed outline.
Variance Inflation Factor model that have a variance inflation factor g
log(Yi ) Model 1 Model 2 Model 3 (1) Build analysis with all
We start our model with a regression mode
NSOURCE
NSCOM
3.38
3.34
3.38
3.34
3.40
3.36 independent variables
all our variables. The variance inflation fa
NPATCH 3.94 3.88 3.90 model are presented in Table II, Model 1. W
PATCHS 3.84 3.82 3.84 variables that have a variance inflation facto
10. Measure VIF of each
(2) We remove the highest one (NMSG) from
NTRACE 4.62 4.60 4.57
TRACES 4.78 4.75 4.70
NLINK 2.24 2.22 1.90 model and recompute the variance inflation f
independent variable
NDEVS 9.32 9.27 1.91 reduced set of variables. The resulting mode
NUSERS 4.55 4.54 2.30
SNACENT 10.66 10.65 — Table II) contains only one more variable w
NMSG
REPLY
11.63
1.17
—
1.17
—
1.17
(3) Remove variable remove the regre
factor larger than 10. We with
(SNACENT) from the model and recomput
factors. highest VIF
REPLYE 2.04 1.91 1.90
DLEN 4.21 1.91 1.87 In the resulting model (Model 3 in
DLENE 4.65 1.98 1.96 variables have an inflation factor larger than 5
INT 2.82 2.82 2.60 our analysis of multicollinearity.
INTE 1.71 1.71 1.71
WA
WAE
2.26
2.08
1.99
2.06
1.96
2.02
Repeat until Analysis Design
C. Hierarchical all VIF below
threshold (t=10)
After having determined the reduced set
Table II variables with low multicollinearity, we pro
S TEP - WISE ANALYSIS OF MULTICOLLINEARITY. 28
40. Model based on 14.41% Variation
Social Structures Explained
Model based on 17.04% Variation
Code Metrics Explained
(Zimmermann 2007)
34
41. Model based on 14.41% Variation
Social Structures Explained
What happens when we combine both?
Model based on 17.04% Variation
Code Metrics Explained
(Zimmermann 2007)
34
42. Model based on 14.41% Variation
Social Structures Explained
30.77% Variation
Combined Model
Explained
Traditional Model
17.04% Variation
(Zimmermann,
Explained
PROMISE 2007)
35
43. Size of Patches
Workflow
Code Churn
# Code Examples
Strongest # Links
Variables
(Odds Ratios) Length of the Discussion
Interestigness of Report
# Patches
Reply Time
36
44. Size of Patches
Workflow
Code Churn
# Code,Examples
Strongest io n
t
# Links
la tion !
Variablesr
o re sa
C Ca u
(Odds Ratios)
o t Length of the Discussion
n Interestigness of Report
# Patches
Reply Time
37