605.601.82 Foundations of Software Engineering
Johns Hopkins University
In order to develop a successful software, software development process follows different methods based on various frameworks. Some methods require the more structured processes to meet the time and the budget requirements, while others are more focused on flexibility and adaptation. The final software product needs to be delivered to the customer while meeting the specific requirements, whether the software development process followed are waterfall models or agile methods. Agile methods are software development processes developed to improve flexibility and adaptability from other process-heavy software development methods. In this article, agile philosophy and processes are discussed.
The simplest software development still requires processes for designing, coding and testing. As software becomes more and more complex, more detailed processes, plans and additional people are needed to deliver the working software within the required project constraint, such as time and budget. In order to meet the required deadlines while staying within the budget, several different software development methods are formulated based on the key aspects of software processes. These software development processes follow more systematic and structured processes, especially spending good amount of time to identify and define the requirements early on. Even though methods such as spiral methods work well with poorly understood requirements, many life cycle models require better understanding at the initial stages of the software development project CITATION Dem18 l 1042 (DemascoJ). Agile methods were introduced in 1990s, to reduce over-planning in the software development and bring the focus back to delivering the software product faster and being more flexible CITATION Bou14 l 1042 (BourqueP, FairleyR.E.).
Agile methods were developed in response to ever increasing focus on processes and documentation over the project final deliverable, the working software. Agile Manifesto published in 2001 (Figure 1) states agile philosophy, which tries to move away from processes and plans which might hamper flexibility, interaction and collaboration CITATION Agi01 l 1033 (Agile Manifesto). With emphasis on working software, agile software development methods adapt and change based on the customer needs and how individuals work together CITATION Agi01 l 1033 (Agile Manifesto), and this will lead to faster delivery of the working software to more satisfied customers, without high overhead costs. Agile philosophy is focused on the ever-changing world, where it is hard to estimate and predict the specification required at the project initiation, leading to frequent changes and wasted time and resources in repeating these steps CITATION Agi18 l 1042 (Agile Software Development).
Figure 1: Agile Manifesto published at AgileAliance.org. CITATION Agi01 l 1033 (Agile Manifesto)Software development methods are the framework of the project, from planning to the managing the project. In the ideal situation, the right method for the given project will deliver the software faster, with better quality, decreased overhead and risks as well as better customer collaboration CITATION Dem18 l 1033 (Demasco). However, in many cases, especially with the lack of initial understanding, the product requirements change often resulting in many repeated steps. Pure waterfall model, an example of sequential models, requires the most stepwise progression of the project and better understanding of requirements early. Unlike waterfall model, agile methods allow frequent modifications that occurs during the software development processes. With frequent inputs from customers, the final product delivered would satisfy the customer better. However, even though agile methods allow quick responses and changes on the requirement, frequent changes to the requirement indicates a lack of specification or understanding, which would still result in unnecessary time and resources spent to develop the final product, leading to low efficiency in the software development processes.
There are several software development processes that follow agile philosophy. Two of those examples are Rapid Application Development (RAD) and Scrum CITATION Bou14 l 1033 (Bourque and Fairley). RAD is used in fast development or modification of software CITATION Bou14 l 1033 (Bourque and Fairley). It was developed in response to the waterfall method, which is highly process-driven CITATION Rap18 l 1033 (Rapid Application Development). RAD is divided into Requirement planning, User design, Construction and Cutover phases, where user design and construction are iterated based on feedback received from the users and continue to iterate using prototypes developed CITATION Rap18 l 1033 (Rapid Application Development). As such, it is well suited for graphic user interface development, which will improve through user feedback over time CITATION Rap18 l 1033 (Rapid Application Development). However, with limitation on the number of feedback you may receive, the final product might not result in the universal design for anyone due to biases on the feedback CITATION Rap18 l 1033 (Rapid Application Development). Scrum is the known as a ‘project manage-friendly’ approach, due to the project being managed as increments CITATION Bou14 l 1033 (Bourque and Fairley). The project is broken down into smaller increments, called sprints, and each sprint is completed every 2 to 4 weeks while adjusting and modifying the next increments CITATION Scr18 l 1033 (Scrum). The project is tracked through daily short meetings and the sprint review CITATION Scr18 l 1033 (Scrum). As a feedback-driven method, it is designed to support frequent amendments to the project requirements by the customer CITATION Scr18 l 1033 (Scrum). One of major disadvantages of Scrum is as the customer changes the requirements frequently, the final product may not complete within the time or the budget.
In order for agile methods to be successful, there are several necessary criteria CITATION Kro15 l 1033 (Kropp and Meier). Agile methods rely on communication with the customer for direction, feedback or understanding on the project. Without the right feedback and information from the customer, the project is not going to be successful. The team lead is also critical. In order to develop a cohesive product, the project lead with experience and vision will be more successful in pulling through frequent changes on the project CITATION Kro15 l 1033 (Kropp and Meier). Lastly, without communication and collaboration among stakeholders, the product will lack consistency CITATION Kro15 l 1033 (Kropp and Meier). These are all important criteria for successfully developing a product using agile methods.
One of the key factors in successful software development is understanding the requirements of customers/stakeholders. However, in many cases, the customers/stakeholders do not understand all of the important factors in the software at the project initiation phase. While different software development processes allow flexibility and adaptation during the process, such as utilizing increments in the iterative/incremental life cycle or stages in the staged delivery model, agile methods put less emphasis on the initial project definition/planning since “the customers will change their requirements” CITATION Scr18 l 1033 (Scrum). Adaptability is important where requirements change frequently. However, with less emphasis on processes and documentation, the final product may lack necessary features due to time spent addressing changes. Other challenges to agile methods are constant interactions between developers and customers. It may act as an advantage in developing better products, however it also requires efforts to be able to communicate constantly. If constant communication is lacking between the developers and customers, the project will likely result in an incomplete product or something that’s different from what the customer envisioned. Lastly, with the focus on working software over documentation, when a new member joins the project in the middle, it will not be easy for the member to catch up on the project CITATION Oli17 l 1033 (Olic).
There are many different software development methods available for a software development project. There is no single option that would be the best suited for all projects. The project type, development team members, the project lead, corporate culture and different stakeholders all influence which method would be the best suited for a particular project. Agile methods are better suited with projects that require frequent changes.
BIBLIOGRAPHY “Agile Manifesto.” 2001. Agile Alliance. https://www.agilealliance.org/agile101/the-agile-manifesto/. 17 June 2018.
Agile Software Development. 14 June 2018. https://en.wikipedia.org/wiki/Agile_software_development. 17 June 2018.
Bourque, P and R.E. Fairley. Guide to the Software Engineering Body of Knowledge, Version 3.0. IEEE Computer Society, 2014. www.swebok.org.
Demasco, J. “Module 2: Process Models.” June 2018.
Kropp, Martin and Andreas Meier. “Agile Success Factors: A qualitative study about what makes agile projects successful.” 2015. http://www.swissagilestudy.ch/files/2015/05/AgileSuccessFactors2014.pdf.
Olic, Aleksandar. Advantages and disadvantages of Agile Project Management. 21 June 2017. https://activecollab.com/blog/project-management/agile-project-management-advantages-disadvantages. 17 June 2018.
Rapid Application Development. 16 June 2018. https://en.wikipedia.org/wiki/Rapid_application_development. 17 June 2018.
Scrum. 6 June 2018. https://en.wikipedia.org/wiki/Scrum_(software_development). 17 June 2018.