systems can be context-aware, but also the software development stakeholders' .... 2010] is another approach that processes code changes in projects and provides custom .... Human Factors in Computing Systems, San Jose, USA, pp.
Recommendations for Context-Aware Visualizations in Software Development Renan R. Vasconcelos, Marcelo Schots, Cláudia Werner Programa de Engenharia de Sistemas e Computação (PESC) – COPPE/UFRJ Caixa Postal 68.511 – 21945-970 – Rio de Janeiro, RJ – Brasil {renanrv,schots,werner}@cos.ufrj.br
Abstract. Software development involves several resources with different characteristics. The description of a context model for software development enables the management of several situations in different circumstances. However, since software development is a human-based activity, not only the systems can be context-aware, but also the software development stakeholders’ activities should be performed accordingly. An alternative to promote context awareness is by using visualization techniques. This study aims at establishing context-oriented visualization recommendations for improving awareness in software development.
1. Introduction The software development process involves different activities, including numerous artifacts and people with distinguished roles. In an environment with this quantity of variables, the management of information generated in this process is potentially a complex task. To manage such scenario, it is important to recognize the particularities of each case and adopt practices that allow and stimulate knowledge reuse. For example, management activities need information such as the activities steps order, the available roles to be employed in the development and the involved risks, just to name a few, in order to execute the process efficiently. Thus, evidencing context information is an important task in software development. Visualization techniques can represent an efficient alternative to improve awareness [Schots et al. 2012]. When it comes to human reasoning activities, the use of views may have a simple, but intuitive representation form [Oliveira 2011]. If the proper visualization techniques are used in accordance with a certain context, awareness would be continuously available during software development. This work aims at providing some initial elements that are necessary to link these two areas and compose context-aware visualizations for software development. This paper is organized as follows: Section 2 presents the software development context model. Section 3 presents some related works. Section 4 describes the visualization recommendations and some examples of use in hypothetical context situations. Finally, final remarks are made in Section 5.
2. Context Awareness Context-aware systems are known by their abilities to sense the characteristics of an environment, including users, and adapt their behavior, providing different responses, according to each context [Chen and Kotz 2000].
In order to enable the capture of all the necessary data to compose a context in a certain scenario, it is imperative to know which set of information is relevant for future use. Knowledge management support techniques are usually applied when an organization needs to organize all the individual learning and share them among team members [Grambow et al. 2012]. Such approach is used to highlight the experience gained after a project development cycle. With such support, it may be possible to extract the main topics and put them together in a so-called context. When dealing with software development environments, a context can reveal a flow of actions to be performed based on previous projects’ scenarios. The context information management itself can work as a filter to determine which information should be used in a certain situation. Knowledge reuse based on the context of software development projects can speed up the decision making process [Nunes et al. 2007]. 2.1. Context Model During the gathering of important characteristics in a context, it is necessary to define a context model in order to standardize what is considered to be the relevant data in a software development scenario. According to Fernandes et al. (2011), the first step to reach this goal is to define the entities of a context model proposal. Araujo et al. (2004) list a set of dimensions for contextual information in software development, comprising both software engineering and client domains. Leite (2011) proposes a model with context information items for the process adaptation scenario, composed by dimensions and entities. These works were the basis of our context model proposal for software development, comprising both entities and contextual information. The model is shown in Figure 1. The elements colored in white were added to provide a more generic and comprehensive view of software development, especially to the Task and Role dimensions, with fine-grained characteristics to the model.
Figure 1. The proposed software development context model
The Software Engineering Business Area and Clients Business Area dimensions were omitted from the original work because they were too abstract to be visually mapped. The Individual dimension content is already covered by the Role dimension, so it was also omitted. The Market dimension was created to contain market information, previously belonging to the Organization dimension. Another adaptation from [Leite 2011] was made in order to synthesize the model without losing completeness. Some context information present in the Process, Project, Team and Product dimensions were grouped in each of these entities, represented as the information in white in the model.
3. Related Work This section presents some approaches that address awareness in different software development situations. A subset of these proposes visualization-based solutions. Some approaches rely on workspace awareness, by analyzing changes made especially during the coding phase of a software project. Ripley et al. [2007] present a 3D visualization to support an overview of workspaces in a project. The data used to compose the visualizations come from activities between commits in a repository, which is considered as an important context for the development. Scamp [Lanza et al. 2010] is another approach that processes code changes in projects and provides custom visualizations in the Eclipse IDE, allowing “on-the-fly” inspections on a system. Other approaches focus on explicit interactions between users, artifacts and development data. FASTDash [Biehl et al. 2007] is an awareness tool centered in each user´s activity, sharing them with the development team by using a visual dashboard. Sarma et al. (2009) present Tesseract, an interactive visual environment that analyzes relationships between artifacts, developers, bugs and communication records, using social network information to understand the behavior of the developers’ team. It is noteworthy that these studies focus on providing awareness in specific subareas. Additionally, none of them uses as basis a set of recommendations that link their context to the applied visualizations. This work aims to bridge this gap by exploring a generic context model of software development scenarios for composing a set of visualization recommendations for improving context awareness.
4. Context-Aware Visualizations An efficient software development requires a manageable environment, especially when the project presents complex characteristics. The huge amount of data available from software process activities demands mechanisms to support the extraction and analysis of these data sets in order to facilitate decision making [Schots et al. 2012]. In this sense, visualization techniques represent an important approach to improve awareness in software engineering scenarios. 4.1. Visualization Recommendations Dealing with different aspects in a software development environment may be complex. Besides, being aware of the whole context is not an easy task. Visualization techniques can represent an appropriate alternative to address this situation. Software visualization basically covers three main areas related to applications: structure, behavior and evolution of systems, addressing issues such as static parts,
execution and changes occurred during development process, respectively [Diehl 2007]. The reach of visualization techniques in context-aware scenarios, comprising these areas, can become an important resource in managing not only the software itself, but also the software development process and its surroundings. In order to select visualization techniques that better support awareness in software development contexts, it is important to highlight points that allow the correct use of visualizations. These points were structured as a recommendation list in Table 1. 4.2. Context-Oriented Visualizations The proper techniques to be used depend on the scenario and its context. Thus, in order to compose guidelines for visualization during software development activities, it is necessary to map context situations to the appropriate visualization recommendations. Based on the context model, it is possible to define context situations, providing values for each element of an entity. A set of information with values defines a situation [Fernandes et al. 2011], which must meet the goals of a context monitoring application. For illustration purposes, Table 2 presents three different scenarios that demonstrate the representation capabilities of the context models. The first scenario involves a software development process without reuse, the second one is related to a development with reuse and the third addresses development for reuse. The associated values describe context situations, i.e., represent possible situations in each scenario. Those values could be derived from data sets provided for each information, where a mechanism would evaluate the data and characterize the context information with a proper value. In the software development for reuse scenario, according to the Process entity, the time taken to find errors is regular. Considering that the debugging approach would need to be more extensive in a process that focuses in producing reusable artifacts, there is space to adopt methodologies to improve this task. An alternative to deal with this context is by using visualizations that can highlight the location of bugs in a system (usually stored in bug tracking tools). This solution needs the adoption of visual features, such as an overview (R1) to show all the components in the system, and different colors (R10) to identify the bug and its severity in a component. If the expected actions are performed to deal with this issue and, after that, the value for the Finding Errors context information becomes “fast”, another problem may arise, pointed out by another context information. Therefore, as the context changes, the required visualization techniques and representations must change as well. In the same scenario, but for the Product entity, if the level of Maintenance Variability becomes “high”, resulting in a large number of maintenance requests, the proposed visualization must change accordingly. In order to support maintenance activities, views that increase the awareness in terms of software evolution can be very helpful [Oliveira 2011]. Therefore, it is important to have an overview (R1) of the whole collection of items (in this case, it could be a representation of lines of code, for instance). It is also necessary to check details (R5) about the change status of each line of code, e.g., changes made since the previous version. Icons or colors (R10) may represent that status. Since the number of lines of code is usually large, an intuitive way to interact with them is mandatory (R14), as well as the order (R11) of this amount of data. An example of such visualization resources is presented in Figure 2, which highlights the use of the given recommendations.
Table 1. Recommendations for visualization techniques
R1
R2 R3 R4 R5 R6 R7 R8 R9 R10 R11
R12
R13 R14 R15 R16
Allow an overview of an entire collection [Shneiderman 1996]: Visualizing the whole surrounding of a selected item allows understanding the context of an item and increases the comprehension of its current situation. Provide a geometric or semantic zoom mechanism on items of interest [Shneiderman 1996] [Souza 2008] [Buering et al. 2006] [Oliveira 2011]: Zooming in or out is an alternative to reveal more details of an item or put it in perspective with its context, respectively. Provide a mechanism to interact with the focus area [Oliveira 2011]: A focus area should have methods to reveal its content according to the user interaction. Provide a feature to filter out items [Shneiderman 1996]: For large volumes of information items, it may be necessary to show only what is relevant to a context. Enable details-on-demand to get particularities of selected items [Shneiderman 1996]: It is convenient to exhibit details of items as they are selected. Present relationships among items [Shneiderman 1996]: Relationships may reveal important details about items and their context, e.g., subsets, outliers etc. Keep a history of actions performed [Shneiderman 1996]: The comparison of information in a view may need the performance of repetitive actions; a history would store such actions to speed up interaction and therefore analysis. Provide extraction of sub-collections’ items [Shneiderman 1996] [Souza 2008]: Selected groups or items may represent important data to the user process on another environment; thus, the extraction of sub-collections can be convenient. Automatically adapt display scale when the data set is dynamically increased: In a dynamic view, the data set can automatically increase, and a fixed display scale becomes inappropriate to understand the visualization. Use colors and icons to distinguish types and sizes of items [Souza 2008]: Different colors and items can highlight the diversity of data in a view and thus increase its user’s comprehension. Maintain data order: For improving comprehension, the data must be kept ordered according to an established parameter, unless the user interacts with the view to change it. Avoid substantial display changes while data are updated [Souza 2008]: From a view, people may understand the meaning of data in different ways, and each person may need some time to interpret it. Fast updates in the way data are displayed may increase both difficulty and time to perform this task. Keep context information for selected items [Cockburn et al. 2008]: In order to fully understand an item’s content, it may be necessary to visually show its context description. Allow the user to interact intuitively with the visualization: Interaction may be the best way to interpret data in a view; it can reveal details faster when it is designed in a simple, non-ambiguous and easy way. Provide quick responses to the user queries or interactions [Spencer 2001]: Quick responses to interactions allow fast comparison of data, improving the quality of analysis results. Include metadata describing the meaning of the visualized data: Metadata allows the comparison of values and is important to improve the interpretation of a view.
Table 2. Context situations for Process, Project and Product entities
Entity
Process
Project
Product
Context Reuse Development Platform Maturity Finding Errors Process Tailoring Level Complexity Management Risk Management Know-How to Start other Projects Production Cost Maintenance Variability Faults Statistics Product Evolution
Without Reuse Inexistent
With Reuse Managed
For Reuse Developed
Low
Medium
High
Slow
Fast
Regular
Low
Medium
High
High
Low
High Medium
Low Inexistent or a Few Low
Medium
Medium
High
High Hard
Low Easy
Medium Easy
Inexistent
Medium or High Medium Several High
Figure 2. Code evolution view [Voinea et al. 2005]
By analyzing the applicability to the software development with reuse, it is possible to identify some opportunities for enhancement in this scenario. In the Project entity, there is a lack of know-how to start other projects, or there is only a few, as described in Table 2. The Know-How can be represented by lessons learned from previous projects. Since the organization uses reused artifacts (as implicitly described in this scenario), the knowledge acquired from their previous uses could be propagated to stakeholders. The use of an artifact in a project could establish a relationship (R6) in a domain view, where each artifact node would be related to a super node (R10), referencing a specific domain. As new artifacts are used in a project, the data set in this view may increase, and the display scale may have to change to a better visualization (R9). Additionally, detailed information should be presented for selected artifacts or domain nodes (R5). A visualization approach with such features can be used until the context changes and another information points out other issues in need of some other approach.
As mentioned before, a mapping between visualization alternatives and scenarios depends on the context information being analyzed. Since a visualization technique can also change in a dynamic context, in order to address the current problem, it may be necessary to establish a priority order for context information, since more than one issue can occur at a time, and thus different views may be necessary. As a broad applicability, the visualization recommendations listed in Table 1 provide a guideline of features that may help to address an issue in a context situation.
5. Final Remarks This work presented an extended software development context model along with a set of generic visualization recommendations. We aim at allowing context-aware application developers to use the presented relationship between context and visualization techniques in order to increase awareness in software development scenarios. Moreover, a mapping between context information and stakeholders’ interest can also promote personalized visualizations according to their profile. This work is intended to serve as basis for further research. Based on the context model and visualization recommendations, we aim at developing a customizable context-aware system to support software development activities, e.g., software reuse. According to a specific context, this system would be able to adapt its visualizations, improving the management of the existing components. Aiming to better represent the context information, it is necessary to use a metamodel that represents context features as alternatives, as a way to deal with the underlying context variability. To this end, we intend to use the UbiFEX notation [Fernandes et al. 2011], due to the different levels of context representation, including entities, which are described by context information and related to the context dimensions. In such notation, situations define specific scenarios composed of entities and information, and context rules present possible actions for a certain situation.
Acknowledgements The authors would like to thank CAPES and CNPq for the financial support.
References Araujo, R.M., Santoro, F. M., Brézillon, P. Borges, M.R.S., Rosa, M.G.P. (2004). Context Models for Managing Collaborative Software Development Knowledge. In International Workshop on Modeling and Retrieval of Context (MRC), Ulm, Germany, pp. 61-72. Biehl, J., Czerwinski, M., Smith, G., Robertson, G.G. (2007). FASTDash: A Visual Dashboard for Fostering Awareness in Software Teams. In SIGCHI Conference on Human Factors in Computing Systems, San Jose, USA, pp. 1313-1322. Buering, T., Gerken, J., Reiterer, H. (2006). User Interaction with Scatterplots on Small Screens - A Comparative Evaluation of Geometric-Semantic Zoom and Fisheye Distortion. IEEE Trans. Vis. and Comput. Graph., v. 12, n. 5, pp. 829-836. Chen, G., Kotz, D. (2000). A Survey of Context-Aware Mobile Computing Research. Dartmouth College Technical Report TR2000-381.
Cockburn, A., Karlson, A., Bederson, B. B. (2008). A Review of Overview+Detail, Zooming, and Focus+Context Interfaces. ACM Comput. Surv., v. 41, n. 1, pp. 1-31. Diehl, S. (2007), Software Visualization: Visualizing the Structure, Behaviour, and Evolution of Software, Springer, 1st edition. Fernandes, P., Teixeira, E. N., Werner, C. (2011). An Approach for Feature Modeling of Context-Aware Software Product Line. J. Univers. Comput. Sci., v. 17, n. 5, pp. 807-829. Grambow, G., Oberhauser, R., Reichert, M. (2012). Knowledge Provisioning: A Context-Sensitive Process-Oriented Approach Applied to Software Engineering Environments. In 7th International Conference on Software and Data Technologies, Rome, Italy, pp. 506-515. Lanza, M., Hattori, L., Guzzi, A. (2010). Supporting collaboration awareness with realtime visualization of development activity. In 14th European Conference on Software Maintenance and Reengineering (CSMR), Madrid, Spain, pp. 207-216. Leite, A.M.S. (2011). Modelo de Contexto para Adaptação de Processo de Software, M.Sc. Dissertation, UNIRIO, Rio de Janeiro, Brazil. Nunes, V.T., Santoro, F.M., Borges, M.R.S. (2007). Um modelo para gestão de conhecimento baseado em contexto. In XXVII Brazilian Symposium of Collaborative Systems (SBSC), Rio de Janeiro, Brazil, pp. 69-82. Oliveira, M. S. (2011). PREViA: Uma Abordagem para a Visualização da Evolução de Modelos de Software, M.Sc. Dissertation, COPPE, UFRJ, Rio de Janeiro, Brazil. Ripley, R., Sarma, A., van der Hoek, A. (2007). A Visualization for Software Project Awareness and Evolution. In International Workshop on Visualizing Software for Understanding and Analysis (VISSOFT), Alberta, Canada, pp. 137-144. Sarma, A., Maccherone, L., Wagstrom, P., Herbsleb, J.D. (2009). Tesseract: Interactive Visual Exploration of Socio-Technical Relationships in Software Development. In 31st International Conference on Software Engineering (ICSE), Vancouver, Canada, pp. 23-33. Schots, M., Werner, C., Mendonça, M. (2012). Awareness and Comprehension in Software/Systems Engineering Practice and Education: Trends and Research Directions. In XXVI SBES (Grand Challenges Track), Natal, Brazil, pp. 186-190. Shneiderman, B. (1996). The Eyes Have It: A Task by Data Type Taxonomy for Information Visualizations. In IEEE Conference on Visual Languages, Columbus, USA, pp. 336-343. Souza, D.K. (2008). Utilização de Técnicas de Visualização para a Recomendação de Substitutos, M.Sc. Dissertation, COPPE, UFRJ, Rio de Janeiro, Brazil. Spence, R. (2001), Information Visualization, Addison Wesley Publisher, 1st edition. Voinea, L., Telea, A., Van Wijk, J. J. (2005). CVSscan: Visualization of Code Evolution. In ACM Symposium on Software Visualization, NY, USA, pp. 47-56.