Lagrein: Tracking the Software Development Process Andrejs Jermakovics
Marco Scotto
Giancarlo Succi
Free University of Bolzano Bozen Piazza Domenicani, 3 I-39100 Bolzano, Italy ph. +39 0471 016135
[email protected]
Free University of Bolzano Bozen Piazza Domenicani, 3 I-39100 Bolzano, Italy ph. +39 0471 016135
[email protected]
Free University of Bolzano Bozen Piazza Domenicani, 3 I-39100 Bolzano, Italy ph. +39 0471 016130
[email protected]
Abstract Estimating the real effort spent to implement the requirements of a software system, without superimposing any overhead on the development team, represents a paramount opportunity to keep a software project under control. Lagrein is a software system that tries to address this problem by supporting managers and developers in exploring how a software system has been developed. It supports the visualization of multiple metrics (polymetric views), it links individual requirements to the portions of the source code expected to implement them, it couples the source code with the effort spent in producing it. With a certain level of approximation, Lagrein makes it possible to estimate the effort required to implement each single requirement.
Categories and Subject Descriptors D.2.1 [Requirements/Specifications]: Tools; D.2.8 [Metrics]: Process metrics, Product metrics; D.2.9 [Management]: Life cycle, Time estimation;
General Terms Measurement Keywords
Software metrics visualization, software process, requirement traceability
1. Introduction Lagrein is a system that supports managers and developers in exploring how a software system has been developed. It is able to identify which components required more effort or were more complex to develop. Following the path laid out by tools like Code Crawler [3], it supports the visualization of multiple metrics at the same time supplemented by two major features: 1) it links individual requirements to portions of the source code expected to implement them; 2) it couples the source code with the effort spent in producing it. Such features allow the manager to measure, with a certain level of approximation, the effort required to implement each single requirement of a software system. This paper is organized as follows: section 2 describes the major functionality of Lagrein; section 3 presents the architecture of the system; finally, section 4 describes the demonstration.
2. Functionality Lagrein provides the following main functionalities: code visualization and navigation, requirements navigation, and effort visualization. We visualize code using various polymetric views [3] supplemented by our extensions.
Copyright is held by the author/owner(s). OOPSLA’07 October 21–25, 2007, Montréal, Québec, Canada. ACM 978-1-59593-865-7/07/0010.
2.1 Requirements Navigation Lagrein imports the requirements from requirement management tools like RequisitePro or from documents (written in Microsoft Word, OpenOffice Writer, or LaTeX) where the requirements are properly separated, either using special paragraph tags or using special characters (in textual files). Requirements are linked to the relevant sections of the source code and to the associated effort by using algorithms for Latent Semantic Indexing (LSI) [1] as revised by De Lucia et al. [2]. When one or more requirements are selected, the classes that are estimated to implement such requirements are highlighted. The opposite navigation is possible as well. When the user selects a class, Lagrein is able to highlight the corresponding requirements. In this case, one class could be used to implement multiple requirements. Linking requirements to code supports the calculation of the effort spent on implementing each requirement, which is based on similarity values provided by LSI. We also use the similarities between requirements to estimate the effort needed to implement new requirements. 2.2 Development Effort Visualization Lagrein provides four different types of views on how effort is distributed among class methods, developers, requirements, and over a period of time. The Method Effort View represents the distribution of development effort among the methods of a class. It uses a treemap to represent each method as a rectangle, whose size is proportional to the effort and color to LOC. Analogous view shows how much time each developer spent on that class. The Requirements Effort view shows how much time has been spent on implementing each requirement using a bar chart and the Requirement timeline shows periods of each requirement’s implementation thus allowing to recover the development process and product evolution. When effort for a new requirement is estimated, its development period is visualized together with the already implemented requirements.
3. Architecture Lagrein is an application able to visualize data regarding the software development process, the software product, and its evolution. Data are extracted from non-invasive measurement tool, PROM (PRO Metrics) [4]. It collects process metrics by using plug-ins for mass-market applications such as office automation suites, software development tools, etc. Product metrics are collected from version control systems (the system supports CVS, Subversion, and Microsoft Team System). Lagrein is based on the Eclipse RCP (Rich Client Platform), which
consists in the minimal set of plug-ins needed to build a rich client application based on the Eclipse runtime. RCP platform allows building a professional-looking application, with native look-andfeel, on multiple platforms, allowing to focus only on the valueadded of the application.
4. Demonstration We want to demonstrate how Lagrein can answer some software process-related questions using visualizations quickly and with ease.
5. References [1] Deerwester S., Dumais S.T., Furnas G.W., Landauer T.K., and Harshman, R. “Indexing by Latent Semantic Analysis” Journal of the American Society for Information Science, 41(6):391–407, 1990. [2] [2] De Lucia A., Fasano F., Rocco O., and Tortora G. “ADAMS Re-Trace: a Traceability Recovery Tool,” 9th Europ. Conf. on SW Maintanance and Reeingineering (CSMR 2005), March 2005. [3] Lanza M., Ducasse S. “Polymetric Views—A Lightweight Visual Approach to Reverse Engineering, IEEE Trans. on SW Eng., 29(9):782-795, 2003. [4] Scotto M., Sillitti A., Succi G., Vernazza T. “A non-invasive approach to product metrics collection”, Journal of Systems Architecture, 52(11):668-675, 2006.
6. Authors Andrejs Jermakovics received his Bachelor degree in Computer Science from University of Latvia in 2005. He is finishing his Masters studies at the Free University of Bozen-Bolzano and is developing Lagrein as part of his thesis.
Figure 1: A screen shot of Lagrein We start off with visualizations involving development effort. We will try to answer the following questions: "Which classes required most effort?" and "Did most complex/large classes require most effort?". We will show a view with all classes represented as rectangles and having development effort as the width metric, which will point us the most effort requiring classes. It will also give the idea of how effort is distributed among classes. Having identified these classes of interest, we can inspect them further. We can answer such questions as: "Which developers worked on this class and how much?". We explore these classes using effort views. Our next area of interest lies in visualizing user requirements. We will answer the following questions: “Which classes implement a given requirement?”, “How much time did it take to implement a requirement?”, “What classes would be affected if one remove a requirement?”, “How much a requirement depends other requirements?”. Since we have traced requirements to classes, we use a class hierarchy diagram as the basis of visualization. The classes that are related to the user story are highlighted. Different colors will show which classes are used by the selected user story alone and which are shared with others. We conclude with effort estimation for new requirement and visualize its approximated implementation period in the Requirement timeline.
Marco Scotto received the Laurea degree in Computer Engineering from University of Genova in 2002, the PhD in Electrical and Computer Engineering from University of Genova, in 2006. At present, he is Assistant Professor at the faculty of Computer Science of the Free University of Bolzano-Bozen, where is involved in several European and Italian projects related to agile methodologies, open source software, and software process improvement. His research areas include software engineering, software metrics, reverse, engineering, agile methodologies, and open source. Giancarlo Succi received the Laurea degree in electrical engineering (Genova, 1988), the MSc degree in computer science (SUNY Buffalo, 1991), and the PhD degree in computer and electrical engineering (Genova, 1993). He is a tenured full professor at the Free University of Bolzano-Bozen, Italy, where he directs the Center for Applied Software Engineering. Before joining the Free University of Bolzano-Bozen, he has been a professor at the University of Alberta, Edmonton, an associate professor at the University of Calgary, Alberta, and an assistant professor at the University of Trento, Italy. His research interests involve multiple areas of software engineering, including 1) opensource development, 2) agile methodologies, 3) experimental software engineering, and 4) software product lines and software reuse. He has written more than 150 papers published in international journals, books, and conferences, and is the editor of four books.