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 meet the specific requirements that the customer specifies, whether the software development process followed are waterfall model or agile method. 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 devised 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. 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), 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 CITATION Agi18 l 1042 (Agile Software Development).
Figure 1: Agile Manifesto 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 of the problems, 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 modifications that may occur during the software development processes. With frequent inputs from customers, it would likely deliver the final product that would better satisfy the customer. However, even though agile methods allow quick responses to changes on the requirement, frequent changes to the requirement might indicate a lack of specification or understanding, which would result in unnecessary time and resources spent to reach the understanding of 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 receive feedback from the users and continue to iterate using prototypes developed throughout 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 would be able to receive, the final product might not result in the useful design for the general population 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 another 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 may not be successful. The team lead is also critical. In order to develop a cohesive product, the lead with experience and the vision will help pull through frequent changes on the project CITATION Kro15 l 1033 (Kropp and Meier). Last, but not the least, 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 develop 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, 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). Adaptation 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 the 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 that project. 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.
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. “Software Processes: An Introduction.” 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.