Experimental software engineering

Last updated

Experimental software engineering involves running experiments on the processes and procedures involved in the creation of software systems,[ citation needed ] with the intent that the data be used as the basis of theories about the processes involved in software engineering (theory backed by data is a fundamental tenet of the scientific method). A number of research groups primarily use empirical and experimental techniques.

Contents

The term empirical software engineering emphasizes the use of empirical studies of all kinds to accumulate knowledge. Methods used include experiments, case studies, surveys, and using whatever data is available.

Empirical software engineering research

In a keynote at the International Symposium on Empirical Software Engineering and Measurement Prof. Wohlin recommended ten commitments that the research community should follow to increase the relevance and impact of empirical software engineering research. [1] However, at the same conference Dr. Ali effectively argued that solely following these will not be enough and we need to do more than just show the evidence substantiating the claimed benefits of our interventions but instead what is required for practical relevance and potential impact is the evidence for cost-effectiveness. [2]

The International Software Engineering Research Network (ISERN) is a global community of research groups who are active in experimental software engineering. Its purpose is to advance the practice of and foster university and industry collaborations within experimental software engineering. ISERN holds annual meetings in conjunction with the International Symposium on Empirical Software Engineering and Measurement (ESEM) conference.

Related Research Articles

Code review is a software quality assurance activity in which one or more people check a program, mainly by viewing and reading parts of its source code, either after implementation or as an interruption of implementation. At least one of the persons must not have authored the code. The persons performing the checking, excluding the author, are called "reviewers".

Exploratory testing is an approach to software testing that is concisely described as simultaneous learning, test design and test execution. Cem Kaner, who coined the term in 1984, defines exploratory testing as "a style of software testing that emphasizes the personal freedom and responsibility of the individual tester to continually optimize the quality of his/her work by treating test-related learning, test design, test execution, and test result interpretation as mutually supportive activities that run in parallel throughout the project."

Software visualization or software visualisation refers to the visualization of information of and related to software systems—either the architecture of its source code or metrics of their runtime behavior—and their development process by means of static, interactive or animated 2-D or 3-D visual representations of their structure, execution, behavior, and evolution.

A reference architecture in the field of software architecture or enterprise architecture provides a template solution for an architecture for a particular domain. It also provides a common vocabulary with which to discuss implementations, often with the aim to stress commonality. A software reference architecture is a software architecture where the structures and respective elements and relations provide templates for concrete architectures in a particular domain or in a family of software systems.

<span class="mw-page-title-main">GQM</span>

GQM, the initialism for goal, question, metric, is an established goal-oriented approach to software metrics to improve and measure software quality.

<span class="mw-page-title-main">Jeannette Wing</span> American computer scientist

Jeannette Marie Wing is Avanessians Director of the Data Science Institute at Columbia University, where she is also a professor of computer science. Until June 30, 2017, she was Corporate Vice President of Microsoft Research with oversight of its core research laboratories around the world and Microsoft Research Connections. Prior to 2013, she was the President's Professor of Computer Science at Carnegie Mellon University, Pittsburgh, Pennsylvania, United States. She also served as assistant director for Computer and Information Science and Engineering at the NSF from 2007 to 2010. She was appointed the Columbia University executive vice president for research in 2021.

Empirical software engineering (ESE) is a subfield of software engineering (SE) research that uses empirical research methods to study and evaluate an SE phenomenon of interest. The phenomenon may refer to software development tools/technology, practices, processes, policies, or other human and organizational aspects.

Robert L. (Bob) Glass is an American software engineer and writer, known for his works on software engineering, especially on the measuring of the quality of software design and his studies of the state of the art of software engineering research.

Victor R. Basili, is an emeritus professor at the Department of Computer Science, which is part of the University of Maryland College of Computer, Mathematical, and Natural Sciences, and the Institute for Advanced Computer Studies. He holds a Ph.D. in computer science from the University of Texas at Austin and two honorary degrees. He is a fellow of both the Association for Computing Machinery (ACM) and of the Institute of Electrical and Electronics Engineers (IEEE).

In computer science, empirical algorithmics is the practice of using empirical methods to study the behavior of algorithms. The practice combines algorithm development and experimentation: algorithms are not just designed, but also implemented and tested in a variety of situations. In this process, an initial design of an algorithm is analyzed so that the algorithm may be developed in a stepwise manner.

GQM+Strategies is a method that provides concepts and actionable steps for creating the link between goals and strategies across an organization and allows for measurement-based decision-making. It was developed by Victor Basili, Jens Heidrich, Mikael Lindvall, Jürgen Münch, Myrna Regardie, Carolyn B. Seaman, and Adam Trendowicz. The method was originally developed for organizations having a strong focus on IT and the development of software systems, but the method's popularity has grown to other domains and can be applied to any organization. The book Aligning Organizations through Measurement gives a comprehensive overview of the method, provides actionable guidance, case studies, and practical applications.

Carlo Ghezzi is an emeritus professor and former chair of software engineering at the Politecnico di Milano, Italy, and an adjunct professor at the Università della Svizzera italiana (USI), Switzerland. At the Politecnico, he has been the Rector's Delegate for research, department chair, head of the PhD program, and member of the academic senate and of the board of governors of Politecnico.

Continuous deployment (CD) is a software engineering approach in which software functionalities are delivered frequently and through automated deployments.

Software Intelligence is insight into the inner workings and structural condition of software assets produced by software designed to analyze database structure, software framework and source code to better understand and control complex software systems in Information Technology environments. Similarly to Business Intelligence (BI), Software Intelligence is produced by a set of software tools and techniques for the mining of data and the software's inner-structure. Results are automatically produced and feed a knowledge base containing technical documentation and blueprints of the innerworking of applications, and make it available to all to be used by business and software stakeholders to make informed decisions, measure the efficiency of software development organizations, communicate about the software health, prevent software catastrophes.

EvoSuite is a tool that automatically generates unit tests for Java software. EvoSuite uses an evolutionary algorithm to generate JUnit tests. EvoSuite can be run from the command line, and it also has plugins to integrate it in Maven, IntelliJ and Eclipse. EvoSuite has been used on more than a hundred open-source software and several industrial systems, finding thousands of potential bugs.

Tore Dybå is a Norwegian scientist and software engineer in the fields of information systems and computer science. He has been a Chief Scientist at SINTEF ICT since 2003.

<span class="mw-page-title-main">Richard Vuduc</span>

Richard Vuduc is a tenured professor of computer science at the Georgia Institute of Technology. His research lab, The HPC Garage, studies high-performance computing, scientific computing, parallel algorithms, modeling, and engineering. He is a member of the Association for Computing Machinery (ACM). As of 2022, Vuduc serves as Vice President of the SIAM Activity Group on Supercomputing. He has co-authored over 200 articles in peer-reviewed journals and conferences.

Lionel Claude Briand, born in Paris, France, on November 21, 1965, is a software engineer, and professor at the University of Ottawa and University of Luxembourg. He is an IEEE Fellow, a Canada Research Chair in Intelligent Software Dependability and Compliance and a European Research Council Advanced grantee. His research foci are testing, verification, and validation of software systems; applying machine learning and evolutionary computation to software engineering; and software quality assurance, among others. He was vice-director of the University of Luxembourg's SnT - Interdisciplinary Centre for Security, Reliability and Trust from 2014 to 2019, and editor in chief of Empirical Software Engineering (Springer) from 2003 to 2016. In 2012, he was the recipient of the Harlan D. Mills Award. In 2022, he was the recipient of the ACM SIGSOFT Outstanding Research Award

Marvin Victor Zelkowitz is an American computer scientist and engineer.

It is a common software engineering practice to develop software by using different components. Using software components segments the complexity of larger elements into smaller pieces of code and increases flexibility by enabling easier reuse of components to address new requirements. The practice has widely expanded since the late 1990s with the popularization of open-source software (OSS) to help speed up the software development process and reduce time to market.

References

  1. Wohlin, Claes (2016). "Is there a Future for Empirical Software Engineering?". Proceedings of the 10th ACM/IEEE International Symposium on Empirical Software Engineering and Measurement - ESEM '16. p. 1. doi:10.1145/2961111.2962641. ISBN   9781450344272. S2CID   25883722.
  2. Ali, Nauman bin (2016). "Is effectiveness sufficient to choose an intervention?". Proceedings of the 10th ACM/IEEE International Symposium on Empirical Software Engineering and Measurement - ESEM '16. pp. 1–6. doi:10.1145/2961111.2962631. ISBN   9781450344272. S2CID   3208211.

Bibliography