Agile Large-Scale Software Development: Success Factors, Challenges And Solutions

Amro Mohammad Hani Al-Said Ahmad
Department of Computer Science, Amman, Jordan.

Abstract

Many challenges and obstacles have been arising when Agile methods are being used in large-scale projects. But as software engineers, we always try to find ways to overcome the problems and challenges. As Agile has been presented as a very good method that deals with change (that considers a big and serious challenge in traditional SE methodologies) it must not be ignored by project managers and team leaders in large-scale projects. This study presents a number of recommendations and solution that highlights on using modern communications technologies and social media websites in the process of maintaining the element of permanent connection between the team members, and it helps sharing the domain knowledge between team members to deal with social skills, Agile training, documentation, decision making, and testing. The study has been divided into three main subjects: first is how to gain success in largescale projects and how to gain success attributes upon using Agile method, the second is the challenges faced upon using Agile in the global distributed environment project, the third is to suggest a recommendation to overcome each challenge that certainly will help the project manager to deal if any challenge occurs.

Keywords :

Introduction

Software development is a complex process that can be achieved in different ways with different results. In a perfect way, to be a successful software developer, building a quality project in an identified time frame, budget and required functionality must be achieved. So there are many different engineering approaches for different situations. Some methods stand and get more popular in time; that is known as an Agile Software Development. Those methods are showing benefits to small and medium scale software systems and they shouldn't be ignored by global and large companies developing large-scale systems.

Since the emergence of Agile software development in the late 1990's, it has changed the landscape of software development; Agile software developments deal with the rapidly changing business environment, that's considered as a challenge in the traditional software engineering approaches. “Software development organizations often must deal with requirements, business domain that tends to evolve quickly and become obsolete even if the project not complete yet” [Cao & Ramesh, 2008].

Agile thinking is a seeking to simplify objects and things by decreasing complexity of planning, when focused in the customer needs and requirements, and shaping a rich environment of sharing and collaboration. There are a large number of methods, techniques, and practices that stand under “Agile methods”.

Agile methods look up to deal with the challenges and obstacles in, such as dynamic contexts that have obtained much interest among researchers. Agile methods blend technical and human behavioral together; that makes Agile methods as an excellent way to deliver software faster and with higher quality when teams understand the unique challenges they face.

When large organizations start to use Agility for their global/large-scale software projects, they start to understand more and more about the large-scale Agile software development, so the organizations have been reported that there are challenges and obstacles in using Agile software development in large-scale projects.

The ability of scaling Agile software development for large organizations has always had skeptics. As Agile has become the Mainstream, many enterprises are initializing their own Agile adoption approach that has been fit into their needs [Tenhunen, 2010]. Nevertheless, obstacles and challenges are still faced. Those challenges are caused by a number of reasons and so, the researchers have divided those challenges in two types; the first type of challenges come from people, such as: lack of knowledge in development team, lack of self management, communications between the team itself and the customer, team coordination and creation, project management, planning, documentation, fear to take a decision, lack of social skill, don't understand the principle of Agile methods, cultural and policy, quality procedures and standards in large organizations that have been used and followed for a long time, and other reasons that are caused by people [William, 1999].

The second type of challenges come from Agile processes itself, such as: requirements change or prioritizing requirements changes, testing.

Besides that, this study will consider another perspective that, there are challenges that come from environmental change, business change, the variability of change that affects on the project, that allows a challenge to occur at any time, and this leads to the risk of exposing the project.

Hence this study has set several propositions to try to dispose off the challenges faced by the Agile large-scale projects, by putting a number of recommendations or ways to avoid and refute those challenges. So this study has been divided into the main subject, the success factors and attributes to gain well-adoption of Agile large scale software development, the second subject which deals and understands the challenges and offers some recommendations that the project manager can benefit from and applied to avoid these challenges [Drury, 2012].

1. Success Factors and Attributes to Agile Large-scale Software Development

To gain success for large-scale development, the project manager must understand and deal with the success factors and attributes.

1.1 Reduce Ambiguity

Large-scale and global projects do not have the same “luxury” as the small project, so ambiguity drives into assumptions, and these assumptions are not being easily visible and so that leads to conflicting assumptions that do not exist any time before as a problem. So that problem leads to preplanning, redesigning, reconstruction, and rework. So this set a difficulty to implement in a distributed and global environment. Nevertheless, ambiguities can lead to confusion in the organizational processes, or with management practices, requirement, or / and the design. So, if this is merged with lack of knowledge and experience in the development teams, the situation gets even more and more complex. What seems to be an obvious expression to team with certain backgrounds, culture, and domain knowledge may not be well obvious to another. So that required techniques for verifying the aspects of the projects are understood. Thus, the team should balance technology aspects and domain knowledge [Sangwan et al., 2007], [Kan, 2003].

1.2 Maximize Stability

Instability of any project will have leverage on many aspects. As we know, Agile processes are responding for unclear and unstable requirements, in other words, “Dynamic” requirements. So, Agility attempts to produce an environment that improves the size of ad hoc and unofficial communication, working in a collected space, co-located customer and team, short iterations, daily meetings…..etc. But in distributed and global projects where this communication is complicated, stability is a key factor. So the change request of any project, especially large one is a big risk. Large projects needed 2.4 times longer to resolve in the global/large-scale environment compared to co-located project [Herbsleb & Mockus, 2003]. So, in Agile, we need for excellent requirement engineering and architecture. This implies that there are more prototyping, designing, frameworks and, development environment customized, and other ways to increase the stability of the aspects of the projects [Paulish, 2002].

1.3 Understand Dependencies

This means the understanding of the interrelated nature of the tasks, coordination, volume, and the frequency needed among the global/large-scale projects. This process is critical for the execution and planning of the projects. So there is a relationship between subsystems of the projects called “dependency”, so the coordinator of the project must deal, understand, identify and learn about these dependencies, so that he/she/they can maintain these relationships [Sangwan et al., 2007].

1.4 Facilitate Corresponding Coordination

The understanding of interrelated kind of the tasks is to facilitate coordination. So coordination leads the team to be able to do what is proportional to the needs. Furthermore, there are many methods that allow teams to coordinate through communication, management practice, processes, and product line architecture [Sangwan et al., 2007]. In global/large projects, the coordinator must be able to find ways to maintain Coordination, for example, in large projects, organization wants to achieve cost minimization (reduce) by moving some of the development to low cost locations, but maintain the quality of the product.

1.5 Balance Flexibility and Rigidity

Large-scale and global projects must be more flexible and rigid than co-located (small-scale) projects. The overall development process must be flexible to fit the differences between the teams (their knowledge levels, skills, cultures, and practices). But it must be rigid enough to guarantee that the practical aspects of the projects are well-defined and followed as normal, such as instructions must be comprehended, architectures must comply with, requirements and needs must be achieved, configuration management processes must be defined, integrations and test procedures are appropriate…. etc. So this necessary to observe processes and the whole progress, and ensure deadlines and quality [Sangwan et al., 2007].

1.6 Keep stakeholders engaged throughout the lifecycle

As the Agile value focuses on customer satisfaction and presence, the Agile project manger must focus on customer/stockholder value and needs. So the presence of the customer is really necessary to complete an Agile project.

1.7 The Success Attributes

In the overall perceived level of success, Agile must achieve in the project.


2. Agile Large-Scale Development Challenges and Solutions

2.1 Challenges Coming from the People Side

2.1.1 Knowledge Sharing-The Challenges

Lack of business knowledge among developers, so they can't share any information about the project, and it's become more difficult to learn and share information about a large project. Specially, the first sprint will be delivered in 2-4 weeks, so the team doesn't have the time to learn about the project domain [Conboy & Coyle, 2011]. Figure 1 shows the Perceived success of the Agile Method Project.

Figure 1. Perceived success of the Agile Method Project

Solutions


2.1.2 Lack of social skills-The Challenges

Agile practices such as co-located, on-site customer meetings, and pair programming all are needed for social, communication and presentation skills. So, it will be a challenge for some personnel who are technically very talented, but inherently weak in terms of communications and personal skills [Conboy & Coyle, 2011]. So this challenge can distend and add more challenges for the projects such as; bad customer relationship, bad team members relationships. This will ultimately affect the project construction and delivery.

Solutions


2.1.3 Lack of team Work-The Challenges

Sometimes, team members can't do their job very well, and its go back for three possible reasons; first, the team is not a good Agile team (that included team master, coder, tester, architect, customer, QA expert ... etc.) and so the team will not have a good team work or not complete the work as required (it cannot be integrated). The second reason could back for bad choice or lack of the team members. The third reason is the master being a “Jack of all trades, master of none” and not doing his/her job as “master of all trades” [Conboy & Coyle, 2011].

Solutions


2.1.4 Lack of understanding and learn values and principle of Agile methods, lack of motivation to use Agile methods, not just learning and understanding the practices of Agile methods

Solutions


2.1.5 Documentation-The Challenge

Most Large organizations favor Plan-driven approach where detailed sent and written is to be constructed. But in Agile, the teams tend to reduce documentation from the observation that a large part of effort is wasted in the documentation process. So, when teams are distributed, there is a big chance to miss out some details about the project, and this leads to suffering a gap in the documentation that will make some misunderstanding of the project [Shrivastava & Date, 2010]. Also, the Agile teams consider the documentation as a heavy mind-set process that is worth to focus on. That's why they focus on the code and considered documentation is a “document as needed”.

Solutions


2.1.6 Wrong Selection of an Appropriate Agile Method- The Challenge

This is one of the biggest challenges faced by the project manager of Agile team [Nerur & Mahapatra, 2005]. The plurality of the Agile methods make this step very risky for the whole project, that the project manager does not select the appropriate method.

Solutions


2.1.7 Distribution of Work-The Challenges

It's a major challenge in large-scale development, that the distribution of the task(s) should not be considered depending on the location. This will lead to architecture that depends on the team's geographical distribution. Different distributed locations will become over specialized in a specific component [Shrivastava & Date, 2010]. So it will lead to difficulty in completing the user scenarios within a sprint as separated parts, so the team will have to complete specific parts of the work on the critical path to complete those scenarios

Solutions


2.1.8 Decision Making-The Challenges

Agile Software Development team in large organizations attempts to deliver a quality-working software in short sprints, short term decisions. Also Agile requires the team to adopt a cooperative and speedy decision making process [Moe & Aurum, 2012]. So there are a number of challenges in decision making in scaling Agile in the large development system [Dury & Conboy, 2012]:


Solutions

Agile development requires alignment of decisions on the operational, strategic, and tactical levels in order to overcome these previous challenges. Also Agile requires a transmission of specialized skills to the redundancy of functions and from logical to realistic decision making. So the company must consider these recommendations in the field of decision making:


2.1.9 Risk Controls (Managements)-The Challenge

Agile development is a process of a short sprint cycle and provides a continual flow of code to the customer. Traditional risk management is a slow and inclusive process. But, Agile is meant to simplify and deal with the project in a flexible way. So it is the biggest challenge when conducting risk management in an Agile project environment [Ylimannela, 2010]:

On the other Hand, there are many types of risk that could threaten the project in its lifetime. These risks could be social, environmental, legal standpoint, economic, political, Technology risks. Then, in large-scale projects, the probability of risk occurrence will be increased with the length of the project.

Solutions

Evaluating risk process is the best approach to determine how much agility is needed, for each project decision; consider the risk against little agility and the parallel risks of doing more planning and architecting [Boehm & Turner, 2005].

So managing risks in large-scale projects contain three operations; risk identification, mitigating risks, and monitoring risks.


2.1.10 Existing Formalized Policies and Procedures and Corporate Culture-The Challenge

There may be cultural reluctance to Agile methods, especially in organizations that have a long history of using traditional software engineering processes. Or there are policies or procedures that have been used in waterfall-like practices that has to be adopted them on Agile Project.

Solutions


2.2 Challenges Coming from the Method itself (Agile processes)

2.2.1 Testing-The Challenge

Software testing in Agile development is a very complex issue. Since Agile methods are not focusing so much on Software testing activities, Agile development doesn't include testing practices required for quality. So that makes the process of finding the suitable testing method for large scale projects challenging. Also, the most challenging part in Agile testing is ensuring that the solution of the problem in the development at the current iteration is done exactly.

On the other hand, there are two kinds of testing manual and automated testing. So in Agile development, it's hard to find a balance between the two kinds [Koteska & Mishev, 2012].

Furthermore, with continuous integration and changing requirements, it can be easy to miss critical tests for any requirement, also Code can be broken accidentally due to frequent builds which will add more challenges to the test. Also, minimal documentation will add more difficulty and challenges to test the final version against the requirement and if it is indefinite or unclear with the requirement, the test will fail.

The Solution

The best solution of testing challenges to Agile development is using the “Automated Agile Testing” method that intended to minimize the quantity of manual work that is involved in test execution and thus gaining a coverage of a large number of test cases. So, this method will test developing environments that are usually unit tests responsible for the quality of the smallest modules [Jureczko, 2008].

Automated Agile Testing requires automated tools, yet the testers must keep involving, and keep in mind that these tools are not easy to learn. The selection of the tool(s) must be correct and meet the requirements depending on the project size, and the time allocated for the project costs. Also, the testers must split the long test case into smaller ones that are easy to maintain [Arora, 2008].

2.2.2 Location and Communication-The Challenge

As in traditional Agile Methods the team must work in a colocated place, in large-scale projects, it's impossible to pool all 80-100 development members together. So, practically, rather than creating a single development team, the Agile encourages splitting developers into multiple smaller teams. But, also this is not the only challenge that could be faced in location. In most of the large-scale or global delivery, the teams are distributed, so there are some sub-points involved.

2.2.3 The Challenges of Communication

Face to Face communication is considered as the most effective form of communication. So Agile teams try to follow it .The team meets daily in a stand up meeting including the customer. As mentioned earlier, customer involvement within time will reduce. Also, Amicability is a key factor in Agile communication and so if the team isn’t familiar with each other, the communication factor will fail.

On the other hand, the customers sometimes find difficulties to understand or trusting Agile method, so this will makeup more challenges in communication factor in the process of Agile methods.

Solutions

Many tools have been proposed using both formal and informal communication and project support, and especially for global and geographical distance. There are some useful tools and recommendation to face the challenges that have been reported in the previous chapter:


2.2.4 Requirement Engineering-The Challenge

Agile works to identify the requirements priorities in each development sprint. In Agile methods, the prioritization of the requirements have been determined and approved in the beginning of each sprint (planning meeting) and normally based on one of the business values or factors that have been defined by the customer. But in large scale projects, it could change the prioritization requirements when the business value has probably changed. And it will affect all the previous work on the development.

There is more than one challenge in requirement engineering; at first, cost and schedule estimation that is based on user stories, the second is accrual in minimal documentation when communication breakdown takes place the third is when decided to identify nonfunctional requirements. So, using business value that often focused on time-to-market, as the only or primary standards for requirements prioritization might cause primary problem(s); it could lead to unsalable system architecture [Cao & Ramesh, 2008].

The Solution

Requirements Change Management: This operation is a difficult area under the best circumstances. It is the way of managing the wave effect of requirements change, so managing the change includes:

Impact Analysis: How much the change cost? It is a must to understand and find all the activities and estimated sets that are involved. The developer needs to work step by step and trace the modifications that happened in change process. There are five stages in the impact analysis process; blank, changed, unchanged, next, propagating [Rajlich, 2012].

Updating the associated artifacts in both requirement and associated design must be updated [Sangwan et al.,2007].

Refactoring if the change being accepted, there is a need to make modifications in the project schedule.

2.2.5 Quality-The Challenge

Agile teams have a quality challenge that could happen when the team “finish” their sprints and deliverables, but when they gather a big amount of technical debt in the form of defects and poor design choices.

Solutions

The Solution is the Quality Assurance (QA) in large-scale which is different from small and co-located projects. When the problem is discovered in large-scale, it gets more difficult to recover from the problem, to know who should handle and to know who all are involved parties who should be involved in solving the discovered problem. Depending on the type of problem that takes place (e.g., requirements misunderstood, syntactic and semantic issues...etc), maybe it will be discovered at different times. So there are some operations that must be considered such as measuring process quality, measuring product quality, and product maintenance quality.

Measuring Process Quality:

Obviously, coordination and control is more difficult in large-scale projects, so we want to set processes in a place that will guarantee that delivered products are of high quality and ensuring that quality doesn't affect the other three attributes of successes (time, cost, and scope). So, there are some recommendations that the development enterprise must take into their considerations.


Measuring product Quality

This is measured by pursuit of the number of defects identified through the iteration testing of the previous sprints and releases [Paulish, 2002]. The defect numbers gained from change management tool where it's been capable to summarize the numbers, priorities, and status of defects as they have been reported by the test team. So, in large-scale projects, it gets more difficult to track the misunderstood requirements, semantic errors, and the level of understanding of any aspects. That makes the large-scale problem which the researchers recommended better practices such as automated code inception, using tools check for infringements of coding standards, and using some practices of testing [Sangwan et al., 2007]:


Product Maintenance and Quality

Is measured by the effectiveness and efficiency of maintenance operations. Regular measurements founded to assess the quality include [Kan, 2003]:


2.3 Challenges Coming from Change and Natural causes

The Variability of Change as being known as change of any aspects of the project will effect on the cycle life of the iterations or the whole project life. So, there is a positive relationship (regularity) between the variable and the cycle (iteration) time (life). That leads to increase in the proportion of the emergence of challenges facing the system. It must be considered in two aspects here, the size of variability and the type of change. In the first aspect, the size could be large, moderate, and minimal. The second aspect is the type of change, such as; environmental change, business change, or team change.

Agile software development reduces the cost of change as shown in Figure 2, but its cost is more in the early stage of development than traditional software development, so the team must be careful in the first stages of the development.

Figure 2. Cost of Change [Pressman, 2010, p.68]

Change could come as a result of forcible circumstances, consequences for managing faults, or natural disasters and causes.

Firstly, forcible circumstances, for example, an unprecedented technological development with the length of the project duration, the organization may come up with a new technology that replaced the old one that has been determined to be the “business (environment) scope” in the large-scale project plan, especially the competition in the market between the major companies in the technology and communication sectors that release new and advance materials in a short period of time.

Secondly, as a consequence of management faults, the developers gain skills, experience and details through their working time in the project, that leads to more knowledge and experience in the project than others, and in large-scale projects that used Agile as development method they depend on team knowing the details rather than the documentation (minimal documentation: Agile basics). So when the project lost a team member who has experience and the knowledge of the development processes and details by management faults and let the team member leave the project without good reasons, that will lead to hinder the project.

Thirdly, natural disaster and causes, concerns, the obstacles and hindrances that force the development organization to delay the execution of the project, and that leads to losses and it might cancel the project.

Solutions


Conclusion

There are a number of technical solutions and useful tools that must be considered by the project managers and team leaders to help them to overcome and avoid the challenges in the process of adopting and working under the Agile method in large-scale projects.

There are many of the mentioned challenges which are difficulties that can be overcome with little increase in the awareness and attention to a number of ways and proposed solutions that attempt to build an infrastructure that helps the project managers to facilitate scaling Agile in large projects.

The use of social networking, management tools, tracking tools and other tips that has been recommended is a way to improve the project managers’ work and support, enhance and improve the communication and the coordination between the team members, risk control quality assurance, testing and other related projects thats been disturbing the process of adopting Agile into large scale projects.

References

[1]. Arora A. (2008). Agile Automation Testing, Adobe Systems, India Pvt. Ltd, Noida.
[2]. Boehm B., Turner R. (2005). Management Challenges to Implementing Agile Processes in Traditional Development Organizations, IEEE Software, Sep-Oct, 30- 39.
[3]. Cao L. and Ramesh B. (2008). Agile Requirements Engineering Practices: an Empirical Study, IEEE Software, January/February, 60-67.
[4]. Conboy K., Coyle S. and Others (2011). People over process: key people challenges in Agile Development, IEEE Software, July-Aug, 48-57.
[5]. Drury M., Conboy K. and Power K. (2012). Obstacles to decision making in Agile software development, The Journal of Systems and Software, 85(6), 1239-1254.
[6]. Herbsleb D. & Mockus A. (2003). An empirical study of speed and communication in globally distributed software development, IEEE Transactions on Software Engineering, 29(6), 481-494.
[7]. Holmstrom H., Fitzgerald B., and Others (2006). Agile Practices Reduce Distance in Global Software Development, Information Systems Management, Summer, 7- 26.
[8]. Hossain E., Babar M, and Paik H. (2009). Risk Identification and Mitigation for Using Scrum in Global Software Development: A Conceptual Framework, 16th Asia-Pacific Software Engineering Conference.
[9]. Jureczko M. (2008). The Level of Agility in Testing Process in a Large Scale Financial Software Project. Software Engineering Techniques in Progress, University of Technology, Poland.
[10]. Kan S. (2003). Metrics and Models in Software Quality Engineering, 2nd edition, Addison-Wesley, Boston, MA.
[11]. Koteska B, and Mishev A. (2012). Agile Software Testing Technologies in a Large Scale Project, BCI Local, Volume 920 of CEUR Workshop Proceedings, 121-124.
[12]. Moe N., Aurum A. & Dybå T (2012). Challenges of Shared Decision-Making: A Multiple Case Study of Agile Software Development, Journal of Information and Software Technology, 54 (8), 853–865.
[13]. Nerur, S. and Mahapatra R. (2005). Challenges of Migrating to Agile Methodologies, Communications of the ACM, 48(5), 73-78.
[14]. Paulish D. (2002). Architecture-Centric Software Project Management, Addison-Wesley, Boston, MA.
[15]. Pressman R. (2010). Software Engineering: A Practitioner's Approach, 7th edition, The McGraw-Hill Companies, Inc, USA.
[16]. Rajlich V. (2012). Software Engineering: The Current Practice, Taylor and Francis Group, USA.
[17]. Sangwan R., Bass M., Mullick N., Paulish D., and Kazmeier J (2007). Global Software Development Handbook, Taylor & Francis Group, LLC, USA.
[18]. Shrivastava S. and Date H. (2010). Distributed Agile Software Development: A Review, Journal of Computer Science and Engineering, 1(1), 10-17.
[19]. Tenhunen T. (2010). Challenges in Scaling Agile Sof tware Development, Tampere University of Technology, Master Thesis.
[20]. Williams, R., Pandelios, G., and Behrens, S. (1999). SRE Method Description (version 2.0) & SRE Team Members Notebook (Version 2.0), Technical Report CMU/SEI-99-TR-029, Carnegie Mellon University.
[21]. Ylimannela, V. (2010). A Model for Risk Management in Agile Software Development, [Accessed: 13 Sep, 2013] http://www.cloudsw.org/underreview/ 1af0cbb6-6d4c-4082-8530-17e1317e2ceb/ a6f468c9-4857-4206-96ee-f67df0583d41.