Agile methodology

8,604 views

Published on

Agile methodology

  1. 1. Class Assignment 02CLASS ASSIGNMENT-02AGILE SOFTWARE DEVELOPMENT Submitted By: Md.Mahedi Mahfuj -BIT 0207 Mostafizur Rahman -BIT0211 Md.Habibur Rahman -BIT0216 Submitted To: Awsaful Islam Course Instructor Date: 30-09-2012 Institute of Information Technology University of Dhaka Page 1 of 10
  2. 2. Class Assignment 02 Agile Software DevelopmentAbstract:Agile software development is a group of software development methods based oniterative and incremental development, where requirements and solutions evolve throughcollaboration between self-organizing, cross-functional teams. It promotes adaptiveplanning, evolutionary development and delivery, a time-boxed iterative approach, andencourages rapid and flexible response to change.In precise, agile methodology is a software development process framework that adoptsthe iterative approach, open collaboration, and process adaptability throughout the life-cycle of the project.This iterative agile approach is more flexible and its short time-span iterations seekimprovement for the project in small release, with minimal planning, rather than plan atlength. This helps to minimize the overall risk, and allows the project to adapt to changesmore quickly. A pictorial view will clarify the concept.Pictorial View: Figure 1: Agile Process Model Page 2 of 10
  3. 3. Class Assignment 02Characteristics:  Iterative and incremental Many short time boxed iterations with incremental releases. The iterative approach produces earlier release and better stakeholders feedback. The feedback is used to review the project priorities and make changes to the requirements, functionalities, estimations, plans, resources, etc. as required. This improves stakeholder’s confidence and reduces uncertainties in the projects. It is particularly useful to clarify requirements when there are uncertain scopes or changing requirements. It also helps improve the estimate and planning, especially when metrics are collected in each iteration. Constant feedback reduces the project risks. Figure 2: Iterative and Incremental Development Page 3 of 10
  4. 4. Class Assignment 02 People oriented Unlike Unified Processs iterative framework, which prescribes to the successive refinement of an executable architecture for each iteration, agile methodology framework believes quality of the people is most important in making sure the project is successful. There is more reliance on individual work than prescribing to a general architectural planning. The software quality depends on the quality of the people and how well they work together. The project is built around motivated individuals and the workload should be sustainable at a constant pace with all stakeholders. Trust the people to get the job done. Figure 3: People Oriented process. Page 4 of 10
  5. 5. Class Assignment 02 Lightweight Agile methodology believes that the most efficient and effective communication is face to face conversation. Development team does not build large documents and control points. However, this does not mean there is no modeling or documentation. The attention is not towards the documentation but towards technical excellence and good design with simplicity. It believes the best architecture, requirements and design will emerge from self organizing teams. It uses sketch mode- The design activity is centered on informal and incomplete exploration of complex design. The focus is on communicating the design between team members rather than on the completeness of the design. Figure 4: Lightweight attribute of ASD Page 5 of 10
  6. 6. Class Assignment 02 Test driven development The working software is the primary measure of progress in the project. Thus, each iteration release is tested to be working software. Figure 5: Test Driven Development Process Page 6 of 10
  7. 7. Class Assignment 02The Manifesto of ASD:The Manifesto of Agile Software Development is as follows:  Individuals and interactions over processes and tools---in agile development, self-organization and motivation are important, as are interactions like co-location and pair programming.  Working software over comprehensive documentation--- working software will be more useful and welcome than just presenting documents to clients in meetings.  Customer collaboration over contract negotiation--- requirements cannot be fully collected at the beginning of the software development cycle, therefore continuous customer or stakeholder involvement is very important.  Responding to change over following a plan--- agile development is focused on quick responses to change and continuous development.Benefits: 1. Early release, better stakeholders’ feedback. 2. Review the project priorities and make changes to the requirements, functionalities, estimations, plans, and resources, as required. 3. Improves stakeholders’ confidence and reduce uncertainties. 4. Useful to clarify requirements when there are uncertain scopes or changing requirements. 5. Constant feedback reduces the project risk.When to avoid Agile Methodology:  One has to formally document the requirements, design, code, and testing cases during each phase of the software life cycle. Page 7 of 10
  8. 8. Class Assignment 02 This is usually the case when building an infrastructure application, rather than an application that supports a changeable business process. Infrastructure applications support an entire business unit over a long ROI period, with repeated updates and enhancements expected. These applications are likely to be managed by successive generations of application owners, who will need to inherit documentation from their predecessors, maintain it, and pass it on their successors. Deliverables must pass through a chain of approvals and tollgates. Approvals and tollgates are mini-bottlenecks that can slow the momentum of a project, momentum that agile methods are supposed to support. Applications that require phase-end reviews or reviews of major deliverables by senior management, by a PMO, or even an Audit Committee may or may not be candidates for agile methods. Of course, the flip side to this is that agile methods can also help recover momentum lost to approvals and tollgates. One has tools to create the software models but not to translate them to the low end software code. Model-driven development tools that can generate code are proliferating, but the skills necessary to use them effectively are still relatively scarce. Unless you have both the tools and the skills available, agile methods that depend on such tools need to be approached with caution. One needs to follow traditional Software management processes and Procedures. "Traditional" usually means "comfortable". If the business sponsor and users are uncomfortable with anything but traditional ways of developing software, and remain unmoved by the value proposition for agile methods, dont bother. Application users are NOT always accessible to you. Agile management depends on an effective, day-to-day working partnership between the development team, the sponsor, and empowered users. If this partnership does not exist, or is likely to be weak, an agile project will face much higher risks than it should. One wants to work in a waterfall model – In other words you are taking a serial, phase-based approach for your project SDLC. Most actual project approaches are tailored versions of an organizations SDLC. The long timeframes that characterize many infrastructure projects may make a Page 8 of 10
  9. 9. Class Assignment 02 waterfall approach more suitable. On the other hand, if a long project is divided into shorter duration mini-projects, agile methods may work better for some or all of them.  The project team cannot adapt to changes in working durations, overlaps & shifts. Agile methods require not only training but a different mindset. If the team you have available cannot adapt to the changes that happen constantly in an agile project, the project may fail.  Team lacks breadth, depth, or both. An agile project usually requires multiple skills, sometimes in the same people. You will likely need skills in business analysis, technical architecture, agile project management, model-driven development, and interpersonal communication. Agile places a premium on having premium people.Criticism: Developer-Centric, not user-centric: One common criticism of agile software development methods is that it is developer- centric rather than user-centric. Agile software development focuses on processes for getting requirements and developing code and does not focus on product design. Mike Gualtieri, principal analyst of agile software development at Forrester Research, published a widely read criticism stating that software developers are not coders, but experience creators. Inefficiency: Agile methodologies can also be inefficient in large organizations and certain types of projects. Agile methods seem best for developmental and non-sequential projects. Extremity: Many organizations believe that agile methodologies are too extreme, and adopt a hybrid approach that mixes elements of agile and plan-driven approaches. Page 9 of 10
  10. 10. Class Assignment 02Conclusion:Agile development methodology attempts to provide many opportunities to assess thedirection of a project throughout the development lifecycle. By focusing on the repetition ofabbreviated work cycles as well as the functional product they yield, agile methodologycould be described as “iterative” and “incremental.” In an agile paradigm, every aspect ofdevelopment requirements, design, etc. is continually revisited throughout the lifecycle.The results of this “inspect-and-adapt” approach to development greatly reduce bothdevelopment costs and time to market. In the end, a development agile methodology thatpreserves a product’s critical market relevance and ensures a team’s work doesn’t wind upon a shelf, never released, is an attractive option for stakeholders and developers alike.…………………………………………………………..……X…..………………………………………………………………. Page 10 of 10

×