Introduction
The paper defines the importance of the development methodologies in relevance to the developing technological advancement. It further defines the contents of the paper in determining to answers the usefulness of agile method in commanding software development in the future.
Body
It goes in depth in analyzing and discussing the usefulness of agile method in relation to waterfall in terms of structured and iterative method. It explores the strengths and weaknesses that are posed by agile which include flexibility, teamwork and quality of the product. It shows weakness such as poor documentation, management of the team and specific timeline of the project in relation to benefits and limitations that are associated with other development methodologies.
Conclusions
It answers the question that was posed. Agile methodology is a smaller chance of becoming dominant in the field of software development. This is because there are different requirements of different projects.
Software development is an important component in today technological advancement. Software development ensures that the right software is development for specific task and need. Thus, software development may bring into consideration new development, re-use, research and maintenance. In the development of software, many approaches are used in developing the right software. It brings into consideration development methodologies that ensure that the right procedure is followed in developing the software. Some of the development methodologies take a developed structure or engineering-based approach while others feature incremental approach in the development of the software.
The aim of this paper is to analyze agile methodology in relation to other development methodologies. The paper takes into account the responsibilities, roles and benefits that characterize development methodologies. It develops the characteristics of development methodologies in relation to the applicability, benefits and limitations that are attributed to the agile methods. This structure ensures that the superiority and adaptability of the agile methods is analyzed in determining whether it will become the core development methodology (Ambler, 2002).
Development methodology is guideline that is used in the development of information systems and brings into consideration plan, structure and process control during the development and application of the software system. Various development methodologies are in place with each having its benefits and limitations (Jones, & Liberty, 2004). Some examples of these development methodologies are the waterfall approach, structured approach, object oriented approach and interactive approach. A single development methodology is not suitable for all the projects; hence the various development methodologies. Thus, each of the development methodologies are suited to specific projects that are based on the organizational, technical, team and project considerations during its lifecycle (Larman, 2004).
Organizations that develop software claims that methodology that they use is unique and better when compared to other methodologies. Moreover, academics and software tool companies upraise their methodology basing on low cost, high quality and the fast development of the software.
For example, the waterfall approach utilizes a structured progression through well defined phases. This means that each phase has a set of duties and deliverables that have to be accomplished with different people before the commencement of the project. Hence, each phase requires specific people to accomplish the activities and deliverables. On the perspective of agile method, it emphasises on highly skilled team that ensures specific duties or prototype is accomplished. Agile method main aim is the actual working of the software and any essential documentation at the end of the project.
Thus, the proponents of a particular development methodology support its unique importance and advantages. Waterfall approach and other traditional methods proponents argue that to accomplish successfully a project a structured approach is necessary. This means that the separation of the stages that are followed in developing software – programming, implementation, planning, testing are crucial in controlling work efficiency, cost and final quality work. Various perspectives such as the agile method and Rapid Application Development (RAD), which bases their methodologies on iterative techniques, have challenged this perspective. The main difference between the traditional methodologies e.g. waterfall and the iterative approach e.g. agile approach revolves around the design that is prototyping and minimalist structure.
Proponents of agile method view that there is no sense spending a lot of time on analysis and design since it is counter-productive because a lot of time is used to collect information that forms a small fraction of the entire project objective. Iterative methodology approach allows an overview of the actual project even though they have small information that allows for the actual architect of the software. Thus, the specific skills that each member of the team has are maximized in analysing and designing the project.
Most of the traditional approach to the development of the software e.g. waterfall approach structures the entire project into phases, with each phase having specific emphasis. Waterfall approach has five unique phases: requirements of the project, analysis and design of the project, actual programming or prototyping, testing of the project and implementation and maintenance of the final project. Each phase has specific people working on the project. The agile approach has minimal structure and supported by highly skilled teams. In most cases, agile method tends to lack design or testing of the project, however, the approach emphasis on them differently. Agile method team members are briefed on the requirements of the project with each team been required to accomplish a certain task.
Its approach to working is not based on phases as seen from the perspective of the waterfall approach. Rather, agile method emphases on working prototypes that are analyzed by Subject Matter Experts (SME) and if the aim of the team is accomplished the final project is released. This means that agile methods lie in the aspect of adaptive rather than the predictive continuum approach (Sommerville 2007).
The adaptive approach to the development of software through the perspective of agile method is that it is ready to encompass changing requirements of the project. The adaptive nature is the foundation of the team that works on the project. The adaptive nature of the team means that any changes that the project should be incorporated and factored every time it calls. This means that the team knows what happens next week rather than a month to come. This is because the team operates in terms of weeks in developing the project. For example, an adaptive team can report easily and exactly what tasks are been planned for the following week while asked about the next month, they can vaguely describe it and they many provide just the features that are planned for that time (Bassetti & Veerapillai, 2004).
This perspective differs with the predictive method that is utilized by waterfall approach and other methods that operate on structure. This means that predictive method ensure that the future is fully defined in terms of details that the project should go through. Thus, a team that operates in terms of predictive method can detail what occurs in the entire period of development of the final project. Hence, predictive method has a specific destination and any changes that may occur during the development results in adversely affecting the project and may change the plan and focus of the project in terms of initial instructions and cost. In most projects that operates around structured method includes a change control board that determines only the valuable changes that should be incorporated.
Various agile methods employ the incremental and iterative methods that emphasises on developing realisable software within a short period in terms of time. Thus, the main difference between the agile method and other iterative methods is that the timeframe is in terms of weeks rather than the common month timeframe. Moreover, agile method supports a highly collaborate approach to any project that they are supposed to accomplish. This means that the time period that is used by the agile methods is strictly referred to as timebox (Sommerville 2007).
Waterfall method operates in a way that is inflexible in terms of division of the project in terms stages, which means that commitments are developed early during the development of the project, which results in difficulty in incorporating any changes. Thus, from this view, iterations are costly. It is also costly if the initial requirements of the project are not fully defined and understood by the developers. This criterion differs with the approach that is incorporated by agile method because the features that are in the project are developed and tested at a given time interval. The core usability of the agile method is in the business world. This means that the workable piece is delivered, which allows for improvement and the addition of other functionality details through out the development of the project (Bassetti & Veerapillai, 2004).
Critics continually criticize this aspect of development that is associated with the agile method due to believe that sponsors requirements in terms of budget and timeline is not fully defined. However, when the criticism that is associated with Scrum method, the evidence of usefulness of the agile method is clearly seen. Agile methods allow the project to continuously be improved due to the changing requirements.
Thus, the uniqueness of agile method to other development methodologies is the way that they develop iterations, collaboration, teamwork and adaptability to the development of the project is utilized. This enables rapid feedback from the users of the software. The small workable prototypes allow addressing evolving requirements and design flaws that may be discovered when the development of the project continues. Thus, it is easy to include new functionality at the various stages that the project evolves. It allows for higher motivation and greater productivity because team members are not changed and work throughout the project together. This aspect is different from other methods such as the waterfall, structured and object oriented. Moreover, since the same people are working on the same project, it reduces the chances that knowledge and information may be lost between the stages or phases.
These unique features make it different from other methods that are used to develop software such as the waterfall and object oriented. For example, waterfall approach lacks flexibility since it is hard to incorporated changes that may occur during the development of the project. There is lack of cohesion between the team members because the project is developed in terms of phases. Moreover, the final project may be of poor quality because of lost knowledge between the phases and different people who are involved resulting in difficult in detecting and correcting designing flaws that are likely to be discovered during the testing phase (Batra & Valacich, 2004).
The use of agile methods in the development of software causes some misunderstandings because it is difficult in coordinating larger teams. Moreover, the fluid nature of the project may not be properly managed resulting in never ending software or project. This means that it is difficult in determining and planning the budget and the time that the project will be completed. Nevertheless, every project requires documentation, which agile method cannot fully document resulting in difficulty during maintenance and usage.
These shortcomings are managed easily by the use of structured development style, which is evident in waterfall, object oriented and structured development of the software. Structured method allows ease in analyzing any probable changes of the development. It is easy to coordinate and manage large teams, which are diversely distributed. Hence, it allows the management of the time and budget requirements.
Development methodologies is an important aspect is success of software development. From the discussion, it is evident that no specific methodology is superior to others. This means that replacement of agile method in the development of software industry is not that easy. This is because there are weaknesses and strengths that are associated with each methodology, which agile method is inclusive. Hence, there is no methodology that can be used as a substitute during the development of the software.
This means that, for example, the agile method is better when it is used in new concepts with few requirements that are required to develop a complex project. The waterfall method and other structured approaches are usually useful on those areas that modifications are required or development of large projects. This is usually possible when there is the proof-of concept of the specific established prototype. Thus, because of the difference in requirements of different projects means that development methodology applied should be precisely determined. For example, agile method and waterfall approach may be used to develop the same project resulting in hybrid approach. This means that agile teams may employ the waterfall model in parts in each iteration and then compile the iterations.
Bibliography
Ambler, S. (2002) Agile Modelling: Effective Practices for XP and UP. New York: Wiley Publishers.
Batra, D. & Valacich, S. (2004) Object-Oriented Systems Analysis and Design. New York: Pearson Prentice Hall Publishers.
Bassetti, C. & Veerapillai, G. (2004) Software Testing and Continuous Quality Improvement. Chicago: CRC Press.
Larman, C. (2004) Agile and Iterative Development: A Manager’s Guide. New York: Addison-Wesley Publishers.
Jones, B. & Liberty, J. (2004) Sams Teach Yourself C++ in 21 Days. New York: Sams Publishers.
Sommerville, I. (2007) 4.1.1 Waterfall Model: Software Engineering, 8th Ed. Harlow: Addison Wesley.