Sunday, March 15, 2020

Agile software development Essays

Agile software development Essays Agile software development Essay Agile software development Essay That is the application Of he skills, knowledge and methods of project management to deliver a project that is on time, according to budget and specification (AMP 2006, p. 2). There are two main methods of managing a project. A general summary of the agile approach, as well as the Scrum process, will be explained. In addition, the Waterfall method along with the spiral model, will be discussed respectively. As this essay progresses, a critical analysis considering the edge, shortcomings and major variance of the Agile and Waterfall Methodologies, will be considered in terms of project success. Risk Management that is the ell-organized process of identifying, analyzing and monitoring Project risk (MAMBO, 2004, p. 111) will be explained. Furthermore, the practice of stipulating requirements by analyzing stakeholder needs and the method Of systematically studying and fine-tuning those specifications known as Requirement engineering will also be explained, in terms of its relevance to project success. A conclusion will get documented at the end of all these findings and recommendations about best practices will be delivered. The highest priority is to satisfy the customer through early and continuous delivery of valuable software (Has, 2007, p. 4). This is a statement from the agile manifesto that was compiled by a group of seventeen people called the Agile Alliance. They set up the basic structure of agile in February, 2001 in Utah, ASSAI. It is a project management method that is flexible and allows an iterative and incremental development to managing a project. This means t hat it ensures the client works closely with the software developers, to make sure the desired outcome gets archived (Has, 2007, p. 3). In addition, it releases small parts of the application to reduce risk (Dawson, 2009, p. 128). According to the agile manifesto (Agglomerations, 2014) there are some reminisces associated with the agile approach. These principles stress the prominent status of developers and how they collaborate with customers. They also emphasize on early and continuous release of the project, and they have a very high tolerance to change in requirements. The various agile methodologies are Scrum, Extreme Programming, Lean, Dynamic Systems Development Method, Crystal, and Feature-Driven Development (Haycocks, 2014, p. 1). They share many of the same values, characteristics, and practices but a different standpoint when it comes to implementation (ibid. ). Scrum is a project management model suitable for projects with complicated requirements (Haycocks, 2009, p. 331). The name Scrum is a Rugby strategy that uses teamwork to return a ball that has gone out of play, back into the game. (Haycocks, 2009, p. 451 In Scrum, projects pass through a set of iterations called sprints. The length of a sprint can be as short as one to two weeks or could stretch up to one month. However, the software development team is in total control of deciding how long it lasts. Everybody in the project team works mutually to achieve the set of tasks they have collectively pledged o develop during a sprint. A concise gathering named The Daily Scrum is held every day during the sprint, and it aids in establishing the view of the days job (Schwab, 2004, p. 28). When a sprint ends, the small part of the application that got developed is tested, and if it works correctly, it is considered as shippable. The shippable software gets deployed to get feedback from the client (Wiggeries and Beauty, 2013). The three major roles, when implementing Scrum, are scrum master, product owner, and the team (Schwab, 2004, p. 55). The Scrum Master helps the project team and the product owner overcome obstacles. While, the product owner ensures the business rules are followed, makes plans and sets the priorities in terms of the product backlog. The team converts these backlogs into shippable products during the sprint (ibid. ). The waterfall project process follows a sequential pattern i. E. Room top to bottom thus, the term waterfall (Dallier and Broodier 2007, p. 12). It is a rigid and sequential method to project management. In addition, it follows a command and control management style (Haycocks, 2012, p. 42). With this approach, each stage of the whole project has been given a deadline and planned before the project commences. For this reason, starting any project needs a clear plan and vision Emphasis is laid on project planning and documentation (Haycocks, 201 2, p. 42). With this, timetables and budgets are more accurate, which leads to customer satisfaction. The main stages of a Waterfall approach are requirement analysis, design, implementation, testing/verification and maintenance (Dallier and Broodier 2007, p. 12). Application of a waterfall model can be either incremental or linear Haycocks (201 2, p. 42). The spiral model is comparable to the incremental waterfall approach, with extra stress on risk analysis. The four stages of this method re Planning Risk Analysis, Engineering, and Evaluation (Dallier and Broodier 2007, p. 17). During the planning stage of this model, requirement specifications are collected and documented. In addition, a procedure is carried out to know the risk involved in the project and prepare an alternative solution. At the end of this stage, a prototype is created, and if there is any risk found while analyzing, a different solution is suggested and implemented. The actual project gets developed in the engineering stage of the spiral model and testing is done at the end of this stage. The evaluation stage is the time hen customers can appraise output of part of the project that is ready before the next spiral commences (Wasteful, 2009, p. 133). An example of the linear waterfall project management approach is the structured system analysis and design model (SAD). Project success or failure is often defined by the ability of a project to react to change (Robert and Mica, 2006). For this purpose, a project manager needs to make a plan that is flexible and ready to fine-tune to changes in the business environment. The agile approach allows customers to work closely with the developers, to ensure the desired outcome is reached (Has, 2007). It gives a fabulously flexible design pattern, encouraging a change in plan during development. A small part of the software gets developed during a sprint, and feedback is obtained from the client concurrently (Highlights, 2002, p. 245). This process allows the customer to spot the features they do not like and add new features to make the software more up to date with new trends in their field. On the other hand, a waterfall approach does not consider the changing needs of the Customer. Just like Water flows over the edge of a waterfall and does not flow backward, this approach has a pattern related to the real waterfall. Requirements agreed upon at the beginning of the project are almost impossible to restructure (Haycocks, 201 2, p. 2). Changing the design at any stage of the software development can be chaotic. It is extremely uncompromising and rigid. The rigid structure refers to the fact that, if a fault is in the initial requirement of the project, the entire process has to start all over (ibid. ). Although the waterfall model is intolerant to change, this helps focus on delivering the project at the agreed time (Haycocks, 201 2, p. 39). It is a success factor, considering a plan that has a fixed requirement and delivery ate. It will be easier to make an adequate plan to deliver the software, on the agreed date and time. However, because of tolerance to change in an agile project management approach, it is hard to stick to a final release date because of the requirement changes (Blanknesss et al. , 2011 Imagine a scenario, whereby the software application is essential to a particular event, and the client makes several significant changes to the initial requirements. It will lead to an extension of the release date and eventually when the project is ready it will be useless to the client. So using the waterfall model will be a eye factor for project success in this scenario. Haycocks (2014, p. 6) explains that testing runs in one of the last stages of a Waterfall project management approach. It means that if a bug exists in a part of the software written at the beginning of the project, the chances that this bug will affect the future areas of the software is very high. It makes fixing this bug time-consuming and very expensive. On the contrary, when an agile sprint is complete, the unit of the appli cation undergoes testing, and if it works correctly, it is then deployed to get feedback from the client. If the feedback IS negative, an iteration begins to effect the changes (Wiggeries and Beauty, 2013). It is easier to identify bugs earlier with this approach. According to Steepness (2005, p. 38) documentation is a significant part of software development. It is a secure storage for the teams knowledge about the project. The waterfall documentation process is more reliable than agile because it is plan oriented (Haycocks, 2012, p. 42). An example would be the case whereby a developer leaves a project. In this case, it is easier for a new software developer to take his position, following the documentation without issues because this approach necessitates thorough documentation and planning. In the case of Agile, communication between customers and developers is favored over excessive documentation (Agglomerations, 2014). Developers need to be committed for the duration of the project, for this approach to work effectively. If one person leaves the development team, it could become a disaster as it will be difficult for a new developer to step into the shoes of the one who quit. Neither the Agile nor the Waterfall approach is fundamentally better than the other. Each approach has its uses for instance; Waterfall inclines to be best for static projects, where many changes will not occur throughout the process. In contrast, Agile is better when the end goal Of the project is not clear, the requirements are hazy and the business environment is ambiguous. Agile requires a team of skilled developers who have excellent communication skills and a solid principle of teamwork. Nevertheless, with the extent of customer participation and tolerance to change, Agile has a higher success tendency over the waterfall model in the ever-changing business environment. In order to boost the possibilities of project success, it is essential for a project manager to understand prospective risks (Mobbed and Parker 2002). Then hectically and quantitatively evaluate these risks, predict possible causes, effects, and select a suitable approach to managing these risks (ibid. ). Risk is an unlikely occurrence that holds a positive or negative impact on a projects goals (Haycocks, 2009, p. 40). When negative events are planned for in advance, it will lead to project success because a line of action would be in place for the event. MAMBO, (2004, p. 1 1 1) defines risk management as the well-organized process of identifying, analyzing, responding and monitoring Project risk. It means that, the process takes account of exploiting the usability and costs that definite risks have, reduces the likelihood and costs that negative risks attract. Risk management processes need to be clearly built into decision-making so as to ensure that the potential risks get managed efficiently (Lam et al. , 2007,). This process is used to examine, regulate, reduce loss, mitigate risks by proper planning avoid dissatisfactory projects and improve profit margins (ibid. ). It is an essential tool for determining project viability. The principles of risk management promote quality development and budget estimation by identifying and mitigating Seibel risks before the project Starts (Sounds and Million, 2010). TO ensure a project IS successful, it sets processes that give stakeholders the correlated risk notice early, so as to take remedial actions that will allow a realistic time and budget estimates (ibid. ). These principles develop team participation, by implementing a tool for reporting possible problems and increasing the teams involvement in the overall project success (Hodge, 2002, p. 18 22). Recording risk is a lasting process that ensures that these unlikely events get considered in decisions making process (ibid. ). The purpose of recording these risks is to trace the actions taken to reduce risks. It presents backup strategies that should get summoned, if a risk occurs and has details of cost involved in mitigation of risks. The record can also be used to prove that risk management has taken place (Haycocks, 2009). Lexington and Signalman (2002), have acknowledged that there is an obvious link, connecting the measure of managing risk practiced during a project and the height of success in a project. They also discovered that when risk management got implemented early in a project, the chances of project success is very high. Also, it is important for risk to get estimated at the project brief stage because it helps the generation of the necessary project outcome and raises the chances of the overall success. It will become a real problem in the life cycle Of a project if a significant risk is not identified and mitigated (ibid. ). A software project that gets accomplished within the anticipated time frame and cost, apparently shows that the requirements were understood and documented correctly in the early stage of the project. Requirement is a software competence desired by the user, to resolve a problem or accomplish goal (Lifelong and Wide 2000). Owing to this, all software consists of several requirements. If one of the requirements gets omitted, the project cannot be considered as successful. Requirement engineering represents both the practice of stipulating requirements by analyzing stakeholder needs and the method of systematically studying and fine-tuning those specifications (Hofmann, 2000). The principal outcome of requirement engineering is a specification. A specification is a brief account of the requirements that software must gratify. That is, the condition and capabilities a system must have, to conform to a standard (ibid. . Preferably, a specification allows stakeholders to swiftly study about the software, and developers to comprehend what needs to get implemented. Requirement Engineering comprises of four distinct but connected activities namely, elicitation and analysis, modeling validation and verification (Hull et al 2005). These activities will most likely contrast in timing and intensity for different projects. Typically, the first process would be to elicit requirements from whatever sources available (repositories, current software, or experts). The process of eliciting and modeling requirements are interconnected (ibid). Modeling illustrates a supposed way out in the perspective of an application domain using formal, informal, or semi-formal notations (ibid. ). The continuing normalization Of such ideals in terms of the requirements clues to an acceptable candidate specification, which must be validated and verified (Grady, 1998). This process helps stakeholders correct misinterpretations as early as possible, by giving them the analysis of their requirements (ibid. ). Requirement elicitation is a matter of talking to customers or evaluating documents, but there are more than one elicitation techniques offered (Households and Has, 2008). Some lay emphasis on group sessions in terms of focus groups or workshops; there are others that are engaged mainly to elicit requirements for precise kinds of systems(ibid. ). For instance, developers regularly use sorts, laddering methods, and repertory grids in stating knowledge -based systems. It also contains those actions that search how software can meet organizational objectives, what substitutes exist, and how they impact stakeholders (Somerville, 2011 , p. 100). Modeling Specialists have recommended many modeling techniques and specification languages for precise and consistent requirements (ibid. . By tradition, these procedures have divided the functional, behavioral, and data aspects of requirements and stated software by making one or more different models. Prototypes strive to produce a working model that stakeholders can experience right away (Poll and Erupt, 201 1). According to Young (2004), the idea Of validating requirements is to guarantee that they meet the stakeholders purposes. In other words, validation makes sure these requirements conform to stakeholder business rules. On the other hand, Verification defines if specification conforms to the allocated requirements Hull et al. , 2005). It means that, it examines a specification for inner consistency by mathematical proofs or inspection techniques. Proportioning requirement is an important point in validating and verifying requirements. Taking care of high -priority needs before considering low-priority once, can reduce the cost and duration off project (ibid. ). In conclusion, project management is necessary and choosing an approach that best suits a project is essential to project success. Although there are different methodologies for the project management, Agile and waterfall are the two primary methods. It s clear that a Waterfall approach supports a sequential structure. In addition, it goes through the requirement engineering, design, implementation, testing and deployment phases respectively. Once a phase is concluded it is almost impossible to revert to the previous stage. Agile is a flexible approach and supports an incremental and iterative approach to project management. It encourages collaboration between the customer and the development team. The team observes the principles of the agile manifesto throughout the lifestyle of the project. It is clear in this essay that, both approaches have their edge and shortcomings. Determining a methodology to accomplish a project is entirely dependent on the type of project. The liberty agile presents, to change, is paramount to project success. So if there is a plan that all the requirements are vague and the result is hazy, it is recommended to use an agile approach. On the other hand, a Waterfall model can be used when there are not ambiguous requirements. In other words, all requirements are known and fixed. Risk management and Requirement Engineering are paramount in the lifestyle of a project. Proper risk management helps in predicting the outcome of the project while Requirement Engineering contributes to communicating and identifying the purpose of a project, and the circumstances in which it will get used.