Keywords

1 Introduction

Agile methods have been increasingly used in software development by companies of all sizes [1, 2]. One of the main motivations for the creation of the Agile Manifesto was to oppose the great focus given to processes in traditional approaches. However, this flexibility in processes does not preclude the use of instruments that can help build better solutions, such as modeling. Individuals and interactions should be valued more, but this does not exclude processes and tools as stated as one of the values quoted in the Agile Manifesto [3].

Modeling assists the process of design, allowing the materialization of abstract and conceptual ideas during the intellectual and creative activity of inventing or conceiving a solution to a system. The result of the modeling activity are models that, according to Ludewig [4], are artifacts that fulfill three criteria: mapping, reduction and utility. A model maps the original object or phenomenon, omitting details that do not interest in a given context for simplification (reduction) and have a pragmatic purpose (utility). Therefore, modeling has an important role to support the development rationale of the project, mainly in large and complex systems. Models can also help stakeholders communication, especially in distributed teams projects [5, 6].

Agile practitioners see modeling as having little value and utility when done prior to the beginning of software construction. Although, modeling with much anticipation can lead to mistaken decisions, when architecture evolves iteratively, decisions of greater difficulty of change must be taken in the first iterations [7]. There is also the perception that developers do not like modeling and documenting. Thus, if developers do not realize the importance of modeling, they will not use it [8].

After great interest from the software industry and some years of usage in practice, several empirical studies tried to identify the theories behind the agile methodology [2]. One of the main gaps observed in these studies about agile methods is the role of architecture on the software solutions [9]. Practitioners also call for more information on how to apply agile methods in distributed teams and large projects, in which the use of tools such as modeling can facilitate software creation and communication between team members [10].

The controversy regarding developers’ motivation and the benefits of using modeling in agile software development, especially as the usage of agile advances to larger, more complex projects and distributed teams, justify to investigate the use of software design tools, like modeling. These techniques could help to improve the quality of solutions, facilitate systems maintenance and stakeholders communication, additionally to documenting the reasoning behind design decisions.

This papers aims to identify modeling aspects in agile software development, by means of a systematic literature review. In the following sections, we present some concepts about agile methods, the method used in this research, the results found, and the final considerations of this study.

2 Agile Methods

An agile software development is incremental, cooperative, uncomplicated, and adaptive. Incremental means that software functionalities are delivered periodically, usually in short cycles. Cooperative indicates that there is open communication among all those involved in the project, including customer (or its surrogates) and developers. Uncomplicated implies in an easy to learn and use process. Adaptive means responding to changes, even those coming late in the project [11].

There is a great variety of agile methods, but Scrum and Extreme Programming (XP) are those which presents more case studies in the literature [1, 2]. Recent studies also include Lean as one of the most used ones [12].

Scrum is a framework for software project management. It employs an iterative and incremental approach and it aims to understand customer needs and delivery value to them in short cycles, prioritizing most valuable features. Scrum is based on empirical process control, it means, decisions are taken based on what is known. It does not provide tools for software development, but is rather a framework to employ processes and techniques [13].

On the other hand, XP emphasizes programming techniques. It focus on communication and teamwork. Its main features are short development cycles, embracing changes, incremental software delivery, test automation, communication and collaboration [14].

In addition to the existent variety of agile methods, Scott Ambler [15] defined the concept of Agile Modeling as a practical approach for modeling and documenting in software development. According to this approach, models are used to understand what is being built and to help communicate. The main issue Agile Modeling addresses is how to create models in a more effective and agile way [15].

3 Review Method

This systematic literature review was conducted based on the guidelines proposed by Kitchenham and Charters [16]. The goal of a systematic literature review is to identify and analyze relevant papers on a particular question available in the literature.

The conduction of the review followed these stages: planning the review, search strategy definition and execution, paper selection and analysis. In the planning stage, the research questions were defined. The research questions that guided this review were:

  • RQ1: What software design instruments do agile software development use?

  • RQ2: How do agile software development industry and academy see modeling activity?

  • RQ3: What are the modeling languages used in agile software development?

  • RQ4: When is modeling in agile software development done?

  • RQ5: Which modeling evaluation criteria are used in agile software development?

  • RQ6: How is architecture defined and communicated in agile software development?

In the search strategy definition and execution stage, it was defined the databases to be searched and the search string. The search strategy included IEEE XploreFootnote 1, ACM Digital LibraryFootnote 2, and ISI Web of ScienceFootnote 3 electronic databases. The following keywords were defined based on the addressed research questions. The context for this research was defined as related only to software. The interest was only for papers related to the agile software development, therefore the population is only for agile. The intervention in this paper is the modeling activity.

The logical combination of all elements from context, population and intervention provided the search string. The final string used for the searches was “Software AND Agile AND Modeling”. The search was done including title, abstract and keywords. The search string returned a wide range of papers that were selected based on the inclusion and exclusion criteria.

Only original and not duplicated papers related to Software Engineering were considered. The paper quality and relation to the research in question were verified according to the following validation questions. All questions were affirmative for the paper to be included in the systematic review.

  • VQ1: Is the paper a scientific research (method is clearly described)?

  • VQ2: Is the paper related to agile software development?

  • VQ3: Is the paper related to modeling or design process?

  • VQ4: Are the paper theme scope and limitations well defined?

The defined systematic review protocol was executed and the results are presented in the following section.

4 Results

In this section, the results from the search carried out in the databases are presented. MendeleyFootnote 4 tool was used to manage the files and references. The first search resulted 3939 papers. After first selection, based on title and abstract, and excluding duplicated papers 73 papers were selected. In the following selection step, based on the papers content, method and results 20 papers remained, related to modeling in agile software development. First author executed all selection steps and lately reviewed by both authors. Table 1 shows the amount of papers in each step for each database, and the search date.

Table 1. Search results

After the papers had been read and selected, they were analyzed and classified according to the following categories: comparative studies and previous reviews about agile modeling, integration proposals between specific processes and agile modeling, practical aspects about modeling, architecture and requirements modeling in agile software development, formal methods and agile methods, MDD (Model-Driven Development). Table 2 presents the categories used to classify the papers and the respective references.

Table 2. Papers selected and classification according to categories

5 Discussion

This systematic literature review provides information from the chosen electronic databases answering the research questions that guided the review. In this section, the answers to the review questions are presented.

5.1 Software Design Instruments in Agile Software Development (RQ1)

Regarding design instruments used in agile software development, Stojanovic et al. [17] argues that the software architecture is based on object-orientated paradigm, domains, metaphors, and prototypes. The use of proofs of concept is encouraged when modeling is used, suggesting building prototypes that prove the proposed model operation. The use of components is considered in line with agile methods principles, since they accelerate the software construction, when existent components with well-defined interfaces are already available. The user interface definition, when applicable, assists in a fast feedback from users’ expectation regarding the software usage and can be considered an instrument to help in the software definition [17].

Some papers presented tools to help the modeling activity. These tools are intended to making modeling tasks more practical. One example is the use of touch-screen boards in collaborative design meetings, that allows free hand diagram sketching [35]. Another tools (e.g., NORMATIC) aim helping to define the non-functional requirements. Although there is a lack of evidences of the effectiveness of these tools in real-world agile development projects [24].

There is also some proposal of formal methods use along with agile principles. They suggested that only safety-critical functionalities should be analyzed using these models. This approach demands the usage of proper modeling languages and tools assistance [31, 32].

Studies regarding MDD propose that, not only code could be automatically derived from models, but also test cases. However, this approach is criticized because it demands a high detailed modeling effort and the intensive use of tools. Debugging automatically generated code could increase the effort for developers, because it is not constructed on their own rationale [33, 34].

5.2 Modeling Usage in Agile Software Development (RQ2)

Modeling activity in agile software development is supported by the usage of sketches and diagrams. It helps understanding and designing the project. Requirements elicitation is also aided by modeling. The use of abstract elements facilitates communication between stakeholders that also include customers or their surrogates that could not understand software technical language [6, 22].

There are attempts to include modeling techniques to agile processes, since it is intrinsic to the development process. Wei et al. [20] suggest UML use along with Scrum. The proposed approach maps UML to Scrum practices. Requirements elicitation is accomplished by use cases and user stories. The software design, using UML in the sprints, should be in an iterative and incremental way, like Scrum. The proposed diagrams to be used are class, collaboration, activity, and state diagrams. Diagrams should be done collaboratively on whiteboards or flipcharts. The proposed model was considered of easy understanding keeping the process agility of Scrum [20].

The use of incremental modeling, focusing on the development of functional software, verified by tests, was evidenced in the studies. Tests definition using models is also reported in the literature [28, 29].

Due to more informal models creation process, in creative meetings, leading to informal artifacts, there is, if decided to communicate the diagrams to other stakeholders, the need for media transferring. This process may be done using tools to formalize the models in standard modeling languages, such as UML, but there are other possibilities like taking pictures of the created diagrams [6].

Abstraction concept is present in studies regarding modeling in agile software development. Due to participation of stakeholders that could not be familiar with technical notation, using a more abstract modeling level can enhance project understating. Depending on software construction demands, developers detail the necessary models. But, considering agile coding focus, the detailing is not encouraged, keeping the high level of models abstraction [22, 23, 28].

5.3 Modeling Languages in Agile Software Development (RQ3)

UML is the main modeling language reported in the found studies. There is also mention to informal diagrams, which may contain elements like boxes and arrows, or other pictures, such as databases, clouds or human representation. Although these informal diagrams do not have a formal specification, they may contain UML elements. Some papers mention the usage of Petri nets or Software Product Line. Studies regarding MDD always report the usage of UML, including customized UML profiles. Textual language is also used, for example in user stories. Additionally, papers mention the usage of CRC and robust charts. CRC are similar to UML class diagrams, and represent classes and their collaboration. Robust charts represent classes by their functionalities [6, 17, 20, 22, 26, 3436].

5.4 When Modeling Is Done in Agile Software Development (RQ4)

According to studies found, modeling is done along all iterations. Each iteration consists of analysis, design, development and tests. However, there is more intensive modeling efforts in the first sprints. In these early stages, requirements are not yet fully understand and need modeling for their elicitation and better comprehension of the project. Architectural design is also more critical at this point, once decisions that are more permanent and difficult to change are usually taken at the beginning of the project. The development team, in collaborative meetings, creating mainly structural models, does the architectural definition [22, 23, 36, 37].

5.5 Evaluation Criteria Used in Agile Software Development Regarding Modeling Activity (RQ5)

There was not any research about qualitative or quantitative metrics, regarding benefits or limitations on using modeling in agile software development.

5.6 Definition and Communication of Software Architecture in Agile Software Development

Architecture definition meetings are usually collaborative, creating free sketches on whiteboards or paper. These artifacts, when already verified, by proof of concepts, for example, are digitalized, if this is considered an important information to be communicated with others. After a formalization of the diagrams, they are published in wikis or any physical visible place, such as walls. There are also proposals of coding tags to generate automatically the architecture documentation [6, 22, 25, 27].

Figure 1 depicts a synthesis of the use of modeling in agile software development according to the data collected from this systematic literature review. There is more modeling efforts in the initial cycles, but it is performed throughout the whole development process. The modeling activity is usually collaborative and supports requirements elicitation, better project understanding, and the communication among stakeholders. There is an attempt to use formal and MDD methods, as well as the use of components and feature modeling with agile methods. The main modeling languages used are UML, informal diagrams, CRC cards, and textual language. The studies presented a restricted use of tools for modeling and extensive use of whiteboard and paper sketches.

Fig. 1.
figure 1

Modeling in agile software development

6 Conclusion

In this paper, we verified evidences of the use of modeling in Agile Software Development. It employs mainly UML language, informal diagrams, CRC cards and textual language. There is an attempt to include formal methods and MDD in conjunction with the agile methods. Modeling is carried out throughout the development during each iteration, with a higher intensity during the first cycles.

The literature lacks, though, more experiments conducted in real environments. Most papers presents experiments making use of semi-structured interviews or questionnaires, which only present perceptions of those involved with the software development process and not the actual effects of using modeling in agile methods. In addition, many of the studies are proposals for different uses of modeling in conjunction with the principles of agile methods, among which only one case study is presented to validate the proposal, without a more extensive validation of the new model.

Regarding the limitations of this study, it is assessed that due to the choice of search bases and search phrases, relevant studies may have been omitted. The articles selection were performed by only two persons and can also lead to errors in the verification, since the analysis of the criteria are subjective, and could have different results if it was done by more persons.

As proposals for future work, it would be possible to study modeling languages that are more accessible and easy to understand, complete and have an adherence to the agile style, which involves an in-depth development. These proposals would be a counterpart to the use of UML, which, although widespread, is complex and presents many different diagrams.

We suggest also, that more studies could be done to establish evaluation criteria to identify the advantages and disadvantages of using modeling, so that it is possible to evaluate its usage impact.