Impact of Agile Methodology on Software Development

,


Introduction
The pressure to reduce development costs and the need to deliver effective and efficient software demand new advances that can manage system development. The changing consumer demands for convenience and service delivery has forced most businesses to adopt web-based services, thus enabling them to allocate more resources in order to develop successful software. However, most of the projects have not been successful, despite the heavy costs incurred. The software engineering and design science communities have therefore proposed a variety of flexible techniques, such as agile methodologies in order to respond to the challenges. The methodologies empower the teams that develop software, amidst the challenges caused by the changing user demands. They increase flexibility during the software development, which enables the individuals involved to perform more efficiently. Agile methodologies have enabled businesses to obtain software that that help them to convert the available resources into quality products, thus maximizing their profits. They help to define a timeline for developing a software project and to help all the members of the development team understand the workflow expectations. Most companies have adopted agile methodology because the traditional model has inherent restrictions, which make it difficult to adapt to the consumer needs that keep on changing. The methodology uses an iterative process of development that enables the developers to repeat all the three components throughout the cycle, which helps to reduce the risks and cost of capital. The agile approach enables the members to become more active in collaborating and coordinating amongst teams during the development process. Therefore, it is a clear indication that agile methodology has impact on software development process because it increases efficiency of the development teams, thus leading to high quality software. (Waters, 2014). Extreme programming mainly focuses on the development, rather than the aspects of managing software projects. It development begins with a release planning stage, followed by various iterations that conclude with acceptance testing based on the user needs. The users usually give specifications of the software they require, which assist the team to approximate the resources and time necessary for development. The users usually form part of the XP team, which enables them to add information to the requirements during the development process (Siau, Roger & Bill, 2010). This shows that the requirements usually changes as both the developers and users define the features of the product. The team divides the development tasks into various iterations in order to generate a release plan, which defines every iteration plan in order to drive their progress.
Scrum mainly emphasize on management of agile and how to organize the development teams effectively. It is the most famous method of introducing agility because it is flexible and simple (Tore & Torgeir, 2008). It has also gained popularity in the development of agile software because it can act as a wrapper for different engineering practices supported by other agile methodologies. Scrum methodology enables the product owner to work closely with the developers in order to classify and prioritize system functionality in a product backlog (Mike, 2014).
The product backlog comprises of bug fixes, features, non-functional requirements and other need that should be performed in order to deliver effective and efficient software. The owner drives the priorities, which enables the developers to estimate and sign-up to generate shippable increments of software during continuous sprints that last for 30 days. During development process, the teams determine the necessary changes to employ a backlog item. The review stage enables them to add new backlog items, display new features, and evaluate risks in order to take appropriate measures in the final process (Sserena, 2007).
Lean software development emphasize on the need of the teams to deliver value to the owner, and the efficiency of the mechanisms that help to deliver it. The method helps to eliminate waste by using various practices, including selection of important features for a system and delivering them in small quantities (Ambler, 2010). It focuses on the efficiency and speed of workflow development, and it depends on reliable and rapid feedback between the customers and the programmers. The method emphasizes on the authority of making decisions and ability on small teams and individuals, which enhances efficiency and effectiveness of the process. Dynamic systems development method is recognized as a leading methodology of agile project, which demonstrates enterprise awareness that enhances attention to quality and risk management (Moran, 2014). The method has advanced and matured since its inception to provide a comprehensive foundation for managing, planning, scaling, and executing the agile process and software development it is based on certain principles that cover business needs, stakeholder collaboration, integrated testing, frequent delivery, empowered teams, and active involvement of the users. DSDM mainly focuses on delivery and acceptance of software in order to meet the purpose for a business.

Benefits of Agile Methodology
The agile methods have mainly emerged in order to replace the traditional methods of software development that have many limitations, which show that the methods have benefits (Yoong & Sidney, 2007). The agile software principles increase trust among the individuals, which enable them to perform the tasks effectively and achieve sustainable development. The trust also enables the development team to work with their customers directly in order satisfy their demands by developing a system that increases competitive advantage. The main reason for software development, especially for the business organizations is to meet the customer needs in order to enhance their competitive advantage and success. Therefore, the aspect of agile methodology that promotes trust between the developers and the customer shows that it is beneficial to organizations.
The trust increases their relations, which enable the developers to inquire about the customer needs in order to develop software that complies with them. The trust improves the planning phase of this methodology, thus leading to development of high quality software. The customers participate in the development process through on-site interaction, thus ensuring that the instructions reflect the current demands of the project owners. The methodology provides a system that helps to update the owner needs, thus censuring that the software complies with the changing needs. This reduces the costs of reacting to the changes because development of the software is incrementally completed with time.
Agile methodology helps to detect faulty pieces of code in good time because it allows the developers to test the system in each iteration (Fergis, 2012).
The teams are able to test the addition requirements into detail because the iterations include testing phases. The continuous testing enables the teams to detect the faults earlier and respond to them appropriately before they become more severe. The early detection of faults has a significant impact on software development because it www.ccsenet.org/cis Computer and Information Science Vol. 8, No. 2;2015 11 results in high quality project that increases customer satisfaction.
It also reduces the cost of development because the faults are fixed in good time before much effort and time is devoted to significant implementation. Agile software development provides lower lead for implementing and testing the features during the different phases. The features of the project discussed during the planning stage are usually presented and tested in the same iteration. This implies a reduction in testing lead times because testing is not the main intention before release.
Agile methodology motivates the development team, thus leading to cooperation and effective software. Many developers prefer the method because it enables them to work in self-directed teams, which is necessary for project success (Global Knowledge, 2011) .The self-directed team creates a good environment for the work that requires knowledge for success. The management usually empowers the developers to work as a self-directed team, which increases the level of trust and respect necessary for success. The positive environment created by the method induces the mind of developers to perform problem solving tasks during the development process.
A positive mood influences human brain to think and solve various problems and challenges in effective manner. The team that is happy, inspired, and interested usually performs effectively and efficiently during the development of a project. The positive affect created by agile methodology improve attention and influences the mind to broaden the cognitive processing scope, which leads to creation of more ideas and creativity when carrying out problem solving activities (Mazni, Sharifah-Lailee & Azman, 2011).

Limitations of Agile Methodology
Agile development experiences the challenge of management overhead, which may lead to much time and resource use (Cao, Balasubramaniam, Kannan & Xu, 2009). The project manager must understand the team dynamics in order to increase a sense of attachment and membership to the quality of the software. This will require much collaboration and communication between the management and team members in order to ensure that all the members work together to develop a successful product. The management should also ensure that the incentives of the teams support the objectives of the project. This shows that the success of the project will depend on the management styles used. Poor management style may lead misunderstanding of the team dynamics thus affecting the product quality. The project may experience resistance from the team members if an organization practices hierarchical decision-making structure. In addition to specific attention to teams, the method employs different teams that work on various features of a project. This requires the management to pay attention to the multiple teams with different behaviors and needs. The effort and time required to manage the teams effectively may have a significant effect on the available resources necessary to develop other projects (Fergis, 2012).
Agile development is likely to experience challenges related to the developers, which could affect its success significantly. The method mainly depends on the implicit knowledge of the developers. The developers may not document important decisions and the absence of formal history concerning the project may make it difficult for the teams to trace and understand the system (Cao, Balasubramaniam, Kannan & Xu, 2009). The communication strategies use in the method may be ineffective for some members and their use is likely to lead to many challenges. Informal communication may be ineffective when handling many stakeholders and extensive amount of information. The insufficient knowledge of the customers concerning the requirements can affect the project success because of the size and complexity of the system. The absence of the customers or their unwillingness to commit to the project may increases the severity of the challenges (Cao, Balasubramaniam, Kannan & Xu, 2009).

Discussion and Key Findings
The agile methodology has a significant impact on software development, with regard to attitude of the developers. The methodology results in a high positive affect level among the developers because it can be introduced and incorporated into the existing knowledge of the team members (Mazni,Sharifah-Lailee & Azman, 2011). It is important for the management to support training programs in order to enhance decision-making process, which in turn leads to continuous improvements within the organization. The sharing of activities in the team influences positive emotions among the members, thus motivating them to fulfill the requirements of a project. The flexibility in the adoption of new methods results in positive mood and a feeling of happiness during development activities. The positive affectivity of the methodology increases the ability of the team members to be more innovative and creative in solving different tasks of the project.
Creativity and innovativeness are important in solving complex problems and challenges because they help a person to develop alternative and appropriate ways. This shows that the development process will be effective www.ccsenet.org/cis Vol. 8, No. 2;2015 and efficient, thus leading to high quality software. The simple and practical agile documents also motivate the team members because they can simultaneously complete the task, which reduces the burden caused by additional documentation activities (Mazni, Sharifah-Lailee & Azman, 2011).
The review of literature shows that agile methodology increases collaboration and ownership during software development process. The customer, scrum master, and development team work collaborate on a daily basis (Mark, 2014). The scrum meetings conducted daily enable the developers to organize the completed and future work in order to address the challenges. The team demonstrates and discusses the product directly with the customers and other stakeholders. The project reflection meetings allow the developers and customers to regularly reflect on the successes and failures of the project. The daily standup meetings enable them to exchange important information and continuously implement improvements (Reliable Software Resources Inc, 2011).
This shows that the methodology provides the teams and stakeholders with the opportunity to engage in every stage of development. The involvement of customers in all the developmental steps enables them to collaborate with the developers (Zolyak, 2013). The inspiration of seeing a functioning product also increases the stakeholders' engagement, which in turn increases their trust in the ability of the team to develop high quality software because they have chance to see the tangible results.
The use of agile methodology enables the teams to develop software of high quality (Maruping & Viswanath, 2009). The teams gather customer requirements at the initial stage of software development. They struggle to understand the customer needs well to enable them develop software that complies with those requirements. However, the customers' needs usually change over the period of software development because they may not understand their needs clearly at the start. They are also likely to identify additional requirements or change their views about the initially stated needs, thus requiring the developers to make appropriate changes that comply with their needs. Agile software developers are usually aware that the customer requirements are likely to change during the development process, which enable them to have appropriate measures in place in order to manage the changes effectively when they occur. The frequent changes in requirements increase flexibility of the teams, which enable them to respond effectively. Flexibility to different changes enables them to develop high quality software in accordance to customer requirements (Fergis, 2012).
The methodology helps the developers to break down the project into different manageable units, which enables them to focus on developing high quality software. The teams can also improve software quality because the method enables them to conduct tests and reviews in every stage. They use the findings to determine and fix the defects in good time, thus leading to development of quality software.
For instance, XP methodology enables the teams to produce different iterations that help to speed the process. They can test the product before proceeding to the next iteration in order to determine their compliance with the customer needs. The noncompliance with the customer requirements enables them to change their measures in order to achieve a high satisfaction level. The XP methodology includes the users in the development team, thus enabling them to contribute their perceptions and views concerning the project. Their inclusion in the development team helps to achieve quality product. They can introduce new requirements or change the previous ones during testing to enable the teams include them in the next iteration.
The impact of agile methodology on software development is evident in the manner it reduces costs required for the project. The teams usually test the product against the customer requirements in every stage (Fergis, 2012). This enables them to detect the defects before proceeding to the subsequent iterations, thus reducing the resources incurred in the implementation process. This aspect of agile methodology enables the business organizations to reduce the cost incurred in software development, thus maximizing their profits. The methodology also emphasize on the business values, which enable the teams to deliver quality software based on the owners needs and priority. For instance, lean software development focuses on waste elimination by assisting the developers to determine important system characteristics and deliver them in small proportions. This helps to reduce the time and capital required to develop software, thus contributing to project success without any constraint on budget.
Lean software development focuses on the need of project leaders to recognize the small teams and individuals (Peter, 2001).
It enables the leaders to provide training programs and include the member in decision-making process in order to obtain effective results. The methodology therefore increases the efficiency and effectiveness of software development by encouraging good decisions. The recognition of members' opinions and views contribute significantly towards the success of software project. They contribute important ideas and opinions that help to www.ccsenet.org/cis Computer and Information Science Vol. 8, No. 2;2015 13 develop quality software within a short period of time. The control modes employed by the leaders also play an important role in determining the level at which the use of agile methodology will enable the teams to cope with changes. It is common for the customers to change the initial requirements during the process of development and this requires a high level of motivation from the teams. The motivation can only be achieved through good leadership skills that understand and recognize the team members. Highly motivated teams can easily comply with the changing customer requirements, thus leading to quality software that meets the needs of the project owner. This shows the important aspect of agile methodology in software development.
Effective communication is necessary to develop a strong teamwork that will help obtain effective results. Communication enables the team members to build strong relationships that contribute towards the success of a project. Similarly, agile development also helps to realize software success because it enables the stakeholders and teams to communicate effective (Minna, Haikara, 2008). The method improves communication between the employees who work on the same project. Effective communication increases the morale of team members because they gain trust and respect from each other. They understand the goal of effective communication by sharing information with each other, thus enabling them to achieve project success (Amber, 2010).
Information sharing is important in realizing quality software because it provides the important ways of addressing the changes that may occur in the process. The collaboration between the team and project owner shows the importance of communication in achieving project success (Payson, 2014) .The customers participate in the development process, which enable them to communicate their ideas and views concerning the product success and failures. The effective communication between the stakeholders and the developers ensure that important information is available for software development, thus enhancing the process and the results.

Conclusion
Agile is an important tool for software development because it provides many benefits to the teams and project owners. The methodology addressees the common project drawbacks, including schedule predictability, scope creep and costs. It develops high positive affect among the developers because it can be incorporated into their existing knowledge. The management style employed in the development process motivates the team members, which enable them to work effectively and accomplish the project tasks. The motivation increases their creativity and innovativeness, which contribute new ways of addressing the project problems effectively in order to deliver high quality software. The method provides different iterations, during which the developers can make appropriate changes based on the customer needs. The teams collaborate with the stakeholders during the process, thus enabling them to determine the successes and failures of the project in order to respond to them in good time. The control modes used by the leaders during the process enable the developers to cope with the changing needs of customers, thus leading to project success. The project success, which usually results in quality software shows that agile methodology has positively impact on software development because it reduces the costs incurred. Agile methodology enables the developers to detect and respond to the defects early enough, thus reducing the implementation costs. This helps to accomplish the main objective of businesses, which is to maximize profits by employing various measures that reduce the operation costs. Therefore, it would be important for them to adopt this methodology in order to develop software that meet their changing needs.