agile methodology

10

Click here to load reader

Upload: md-mahedi-mahfuj

Post on 11-May-2015

6.692 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: 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

Page 2: Agile methodology

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

Page 3: Agile methodology

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

Page 4: Agile methodology

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.

Page 5: Agile methodology

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

Page 6: Agile methodology

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

Page 7: Agile methodology

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.

Page 8: Agile methodology

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

Page 9: Agile methodology

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.

Page 10: Agile methodology

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…..……………………………………………………………….