Agile methodology
Click here to load reader
-
Upload
md-mahedi-mahfuj -
Category
Documents
-
view
6.692 -
download
3
Transcript of Agile methodology
Class Assignment 02
Page 1 of 10
CLASS ASSIGNMENT-02
AGILE 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
Class Assignment 02
Page 2 of 10
Agile Software Development
Abstract:
Agile software development is a group of software development methods based on
iterative and incremental development, where requirements and solutions evolve through
collaboration between self-organizing, cross-functional teams. It promotes adaptive
planning, evolutionary development and delivery, a time-boxed iterative approach, and
encourages rapid and flexible response to change.
In precise, agile methodology is a software development process framework that adopts
the 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 seek
improvement for the project in small release, with minimal planning, rather than plan at
length. This helps to minimize the overall risk, and allows the project to adapt to changes
more quickly. A pictorial view will clarify the concept.
Pictorial View:
Figure 1: Agile Process Model
Class Assignment 02
Page 3 of 10
Characteristics:
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
Class Assignment 02
Page 4 of 10
People oriented
Unlike Unified Process's 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.
Class Assignment 02
Page 5 of 10
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
Class Assignment 02
Page 6 of 10
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
Class Assignment 02
Page 7 of 10
The 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.
Class Assignment 02
Page 8 of 10
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, don't 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 organization's SDLC. The long timeframes that characterize many infrastructure projects may make a
Class Assignment 02
Page 9 of 10
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.
Class Assignment 02
Page 10 of 10
Conclusion:
Agile development methodology attempts to provide many opportunities to assess the
direction of a project throughout the development lifecycle. By focusing on the repetition of
abbreviated work cycles as well as the functional product they yield, agile methodology
could be described as “iterative” and “incremental.” In an agile paradigm, every aspect of
development requirements, design, etc. is continually revisited throughout the lifecycle.
The results of this “inspect-and-adapt” approach to development greatly reduce both
development costs and time to market. In the end, a development agile methodology that
preserves a product’s critical market relevance and ensures a team’s work doesn’t wind up
on a shelf, never released, is an attractive option for stakeholders and developers alike.
…………………………………………………………..……X…..……………………………………………………………….