Software analytics is the
analytics
Analytics is the systematic computational analysis of data or statistics. It is used for the discovery, interpretation, and communication of meaningful patterns in data. It also entails applying data patterns toward effective decision-making. It ...
specific to the domain of
software system
A software system is a system of intercommunicating components based on software forming part of a computer system (a combination of hardware and software). It "consists of a number of separate programs, configuration files, which are used to s ...
s taking into account
source code
In computing, source code, or simply code, is any collection of code, with or without comment (computer programming), comments, written using a human-readable programming language, usually as plain text. The source code of a Computer program, p ...
, static and dynamic characteristics (e.g.,
software metric
In software engineering and development, a software metric is a standard of measure of a degree to which a software system or process possesses some property. Even if a metric is not a measurement (metrics are functions, while measurements are ...
s) as well as related processes of their
development and
evolution
Evolution is change in the heritable characteristics of biological populations over successive generations. These characteristics are the expressions of genes, which are passed on from parent to offspring during reproduction. Variation ...
. It aims at describing, monitoring, predicting, and improving the efficiency and effectiveness of
software engineering
Software engineering is a systematic engineering approach to software development.
A software engineer is a person who applies the principles of software engineering to design, develop, maintain, test, and evaluate computer software. The term ' ...
throughout the
software lifecycle, in particular during
software development
Software development is the process of conceiving, specifying, designing, programming, documenting, testing, and bug fixing involved in creating and maintaining applications, frameworks, or other software components. Software development inv ...
and
software maintenance
Software maintenance in software engineering is the modification of a software product after delivery to correct faults, to improve performance or other attributes.
A common perception of maintenance is that it merely involves fixing defects. H ...
. The data collection is typically done by mining
software repositories, but can also be achieved by collecting user actions or production data. One avenue for using the collected data is to augment the
integrated development environment
An integrated development environment (IDE) is a software application that provides comprehensive facilities to computer programmers for software development. An IDE normally consists of at least a source code editor, build automation tools a ...
s (IDEs) with data-driven features.
Definitions
* "Software analytics aims to obtain insightful and actionable information from software artifacts that help practitioners accomplish tasks related to software development, systems, and users."
--- centers on analytics applied to artifacts a software system is composed of.
* "Software analytics is analytics on software data for managers and software engineers with the aim of empowering software development individuals and teams to gain and share insight form their data to make better decisions."
--- strengthens the core objectives for methods and techniques of software analytics, focusing on both software artifacts and activities of involved developers and teams.
* "Software analytics (SA) represents a branch of
big data analytics. SA is concerned with the analysis of all software artifacts, not only source code.
..These tiers vary from the higher level of the management board and setting the enterprise vision and portfolio management, going through project management planning and implementation by software developers."
--- reflects the broad scope including various stakeholders.
Aims
Software analytics aims at supporting decisions and generating insights, i.e., findings, conclusions, and evaluations about software systems and their implementation, composition, behavior, quality, evolution as well as about the activities of various stakeholders of these processes.
* Insightful information obtained by software analytics conveys meaningful and useful understanding or knowledge towards performing target tasks. Typically, it cannot be easily obtained by direct examining raw big data without the aid of analytics methods and techniques.
* Actionable information obtained by software analytics steers or prescribes solutions that stakeholders in software engineering processes may take (e.g., software practitioners, development leaders, or C-level management).
Approach
Methods, techniques, and tools of software analytics typically rely on gathering, measuring, analyzing, and visualizing information found in the manifold data sources stored in software development environments and ecosystems. Software systems are well suited for applying analytics because, on the one hand, mostly formalized and precise data is available and, on the other hand, software systems are extremely difficult to manage ---in a nutshell: "software projects are highly measurable, but often unpredictable."
Core data sources include
source code
In computing, source code, or simply code, is any collection of code, with or without comment (computer programming), comments, written using a human-readable programming language, usually as plain text. The source code of a Computer program, p ...
, "check-ins, work items, bug reports and test executions
..recorded in software repositories such as CVS, Subversion, GIT, and Bugzilla."
Telemetry data as well as execution traces or logs can also be taken into account.
Automated analysis, massive data, and systematic reasoning support decision-making at almost all levels. In general, key technologies employed by software analytics include analytical technologies such as
machine learning
Machine learning (ML) is a field of inquiry devoted to understanding and building methods that 'learn', that is, methods that leverage data to improve performance on some set of tasks. It is seen as a part of artificial intelligence.
Machine ...
,
data mining,
statistics,
pattern recognition
Pattern recognition is the automated recognition of patterns and regularities in data. It has applications in statistical data analysis, signal processing, image analysis, information retrieval, bioinformatics, data compression, computer graphic ...
,
information visualization
Information is an abstract concept that refers to that which has the power to inform. At the most fundamental level information pertains to the interpretation of that which may be sensed. Any natural process that is not completely random, ...
as well as large-scale data computing & processing. For example, software analytics tools allow users to map derived analysis results by means of
software maps, which support interactively exploring system artifacts and correlated software metrics. There are also software analytics tools using analytical technologies on top of
software quality
In the context of software engineering, software quality refers to two related but distinct notions:
* Software functional quality reflects how well it complies with or conforms to a given design, based on functional requirements or specification ...
models in
agile software development
In software development, agile (sometimes written Agile) practices include requirements discovery and solutions improvement through the collaborative effort of self-organizing and cross-functional teams with their customer(s)/ end user(s), ...
companies, which support assessing software qualities (e.g., reliability), and deriving actions for their improvement.
History
In May 2009, software analytics was first coined and proposed when Dongmei Zhang founded the Software Analytics Group (SA) at Microsoft Research Asia (MSRA). The term has become well known in the
software engineering
Software engineering is a systematic engineering approach to software development.
A software engineer is a person who applies the principles of software engineering to design, develop, maintain, test, and evaluate computer software. The term ' ...
research community after a series of tutorials and talks on software analytics were given by Zhang and her colleagues, in collaboration with Tao Xie from North Carolina State University, at software engineering conferences including a tutorial at the IEEE/ACM International Conference on Automated Software Engineering (ASE 2011),
a talk at the International Workshop on Machine Learning Technologies in Software Engineering (MALETS 2011),
a tutorial and a keynote talk given by Zhang at the IEEE-CS Conference on Software Engineering Education and Training,
a tutorial at the International Conference on Software Engineering - Software Engineering in Practice Track,
and a keynote talk given by Zhang at the Working Conference on Mining Software Repositories.
In November 2010, Software Development Analytics (Software Analytics with a focus on Software Development) was proposed by Thomas Zimmermann and his colleagues at the Empirical Software Engineering Group (ESE) at Microsoft Research Redmond in their FoSER 2010 paper.
A goldfish bowl panel on software development analytics was organized by Zimmermann and
Tim Menzies
Timothy Ray Menzies (born August 25, 1959), sometimes known as Tim Mensy, is an American country music artist. Initially, he was a member of the band Bandana, in which he charted several singles on the Hot Country Songs charts in the 1980s. Aft ...
from West Virginia University at the International Conference on Software Engineering, Software Engineering in Practice Track.
See also
*
Mining Software Repositories
*
Software maintenance
Software maintenance in software engineering is the modification of a software product after delivery to correct faults, to improve performance or other attributes.
A common perception of maintenance is that it merely involves fixing defects. H ...
*
Software archaeology
*
Software development
Software development is the process of conceiving, specifying, designing, programming, documenting, testing, and bug fixing involved in creating and maintaining applications, frameworks, or other software components. Software development inv ...
*
Software development process
In software engineering, a software development process is a process of dividing software development work into smaller, parallel, or sequential steps or sub-processes to improve design, product management. It is also known as a software deve ...
*
User experience
*
Computer software
Software is a set of computer programs and associated documentation and data. This is in contrast to hardware, from which the system is built and which actually performs the work.
At the lowest programming level, executable code consists ...
*
Application software
Application may refer to:
Mathematics and computing
* Application software, computer software designed to help the user to perform specific tasks
** Application layer, an abstraction layer that specifies protocols and interface methods used in a ...
*
Software industry
*
Analytics
Analytics is the systematic computational analysis of data or statistics. It is used for the discovery, interpretation, and communication of meaningful patterns in data. It also entails applying data patterns toward effective decision-making. It ...
References
{{Reflist,
refs=
[Raymond P. L. Buse and Thomas Zimmermann. "Analytics for Software Development." In Proceedings of the Workshop on Future of Software Engineering Research (FoSER 2010), Santa Fe, NM, USA, November 2010, pp. 77-80.PDF]
[Dongmei Zhang, Yingnong Dang, Jian-Guang Lou, Shi Han, Haidong Zhang, and Tao Xie. "Software Analytics as a Learning Case in Practice: Approaches and Experiences". In Proceedings of International Workshop on Machine Learning Technologies in Software Engineering (MALETS 2011), Lawrence, Kansas, November 2011]
PDF
https://sites.google.com/site/xsoftanalytics/malets11-msrasa.pdf?attredirects=0 Slides]
[T. M. Abdellatif, L. F. Capretz, D. Ho. "Software Analytics to Software Practice: A Systematic Literature Review". 1. Int'l Workshop on Big Data Engineering, 2015, pp. 30-36.]
[Dongmei Zhang and Tao Xie. "xSA: eXtreme Software Analytics - Marriage of eXtreme Computing and Software Analytics." In Proceedings of the 26th IEEE/ACM International Conference on Automated Software Engineering (ASE 2011), Tutorial, Lawrence, Kansas, November 2011.]
[D. Zhang, S. han, Y. Dan, J.-G. Lou, H Zhang: "Software Analytics in Practice". IEEE Software, Sept./Oct. 2013, pp. 30-35.]
[Dongmei Zhang. "Software Analytics in Practice and Its Implications for Education and Training." Keynote. In Proceedings of the 24th IEEE-CS Conference on Software Engineering Education and Training (CSEE&T 2012), Tutorial, Nanjing, China, April 2012.]
[Dongmei Zhang, Yingnong Dang, Shi Han, and Tao Xie. "Teaching and Training for Software Analytics." In Proceedings of the 24th IEEE-CS Conference on Software Engineering Education and Training (CSEE&T 2012), Tutorial, Nanjing, China, April 2012.]
[Dongmei Zhang. "MSR 2012 keynote: Software Analytics in Practice - Approaches and Experiences." In Proceedings of the 9th Working Conference on Mining Software Repositories (MSR 2012), Zurich, Switzerland, June 2012, pp. 1.]
[Dongmei Zhang and Tao Xie. "Software Analytics in Practice: Mini Tutorial." In Proceedings of the 34th International Conference on Software Engineering (ICSE 2012), Software Engineering in Practice, Mini Tutorial, Zurich, Switzerland, June 2012, pp. 997]
Slides
/ref>
[Tim Menzies and Thomas Zimmermann. "Goldfish Bowl Panel: Software Development Analytics." In Proceedings of the 34th International Conference on Software Engineering (ICSE 2012), Software Engineering in Practice, Zurich, Switzerland, June 2012, pp. 1032-1033.]
[Raymond P. L. Buse and Thomas Zimmermann. "Information Needs for Software Development Analytics." In Proceedings of the 34th International Conference on Software Engineering (ICSE 2012), Software Engineering in Practice, Zurich, Switzerland, June 2012, pp. 987-996.]PDF
External links
InfoWorld: Turn application metrics into business value
Microsoft Research Asia Software Analytics Group (SA)
Microsoft Research Redmond Empirical Software Engineering Group (ESE)
*
* [http://research.microsoft.com/en-us/groups/sa/softwareanalyticsinpractice_approachesandexperiences_msr2012.pdf Software Analytics in Practice – Approaches and Experiences, Keynote slides by Dongmei Zhang at the 9th Working Conference on Mining Software Repositories (MSR 2012)]
Software Analytics in Practice, Mini-tutorial slides by Dongmei Zhang and Tao Xie at the 34th International Conference on Software Engineering (ICSE 2012)
Software Analytics Pinterest
Microsoft Azure - Application Insights in Azure
Software maintenance
Types of analytics