Sie sind auf Seite 1von 20

AGILE MODEL

PRESENTED BY: ALAKHNANDINI SAHGAL AMIT HARIT

WHAT IS AN AGILE MODEL?


The literal meaning of the word agile, an adjective, is Characterized by quickness, lightness, and ease of movement. So this indicates that Agile Software development is about fast delivery of software with more ease of development. Agile software development is a style of software development that emphasizes customer satisfaction through continuous delivery of functional software. An agile model is a model that fulfils its purpose and no more; is understandable to its intended audience; is simple; sufficiently accurate, consistent, and detailed; and investment in its creation and maintenance provides positive value to your project. Agile Model is based on iterative and incremental development, where requirements and solutions evolve through collaboration between selforganizing, cross-functional teams.

TWELVE PRINCIPLES

Twelve principles underlie the Agile Manifesto, including:[7]

Customer satisfaction by rapid delivery of useful software Welcome changing requirements, even late in development Working software is delivered frequently (weeks rather than months) Working software is the principal measure of progress Sustainable development, able to maintain a constant pace Close, daily co-operation between business people and developers Face-to-face conversation is the best form of communication (colocation) Projects are built around motivated individuals, who should be trusted Continuous attention to technical excellence and good design Simplicity Self-organizing teams Regular adaptation to changing circumstances

Key Features of Agile Model


Iterative: Entire application is distributed in incremental units called as iteration. Development time of each iteration is small (couple of weeks), fixed and strictly adhered to. Every Iteration is a mini increment of the functionality and is build on top of previous iteration. Active Customer involvement: There is lot of client involvement and face-to-face interaction. Every iteration is tested and approved by client. The feedback obtained is implemented in subsequent iterations; thus minimizing risk and ensuring higher client satisfaction. Feature driven: More emphasis is on providing the required features in the application. 80/20 principle is applied to decide the 20% features which would be used 80% of the time.

Fixed Time: Each iteration has a fixed time span in which it is delivered.
Priority based delivery: Features are prioritized depending on customer need, development risk etc. High priority features are developed first. After every iteration, the project priorities are re-evaluated.

Empowered Teams: The project teams are generally small and have lot of interaction and communication. Since entire team is actively involved, team is empowered to take decisions. No separate team to manage project.
People Centric: More emphasis is on using the adequately skilled people to do the development than on following the processes. The documentation and other non-development activities are minimized and more time is devoted to development and testing. Rapid development: Generally the development is done rapidly using light weight development technologies. More disciplined: Being rapid, everything has to be delivered correctly first time. So the process involves lot of team and self discipline Thus, it requires highly skilled and organized team members. Simplicity: Emphasis is on keeping things as simple as possible and being open to change.

WHY CONSIDER AGILE MODEL?


Benefits to the Customer 1. Customer is more actively involved, and gets higher priority

2. He gets to know regular and frequent status of the application


3. Requirements are accepted after each iteration 4. Since the methodology emphasizes rapid delivery, time-to-market is less. 5. So the key functionalities can be available to use sooner. 6. Delivery is defined by fixed timescale. So customer is assured of receiving some functionality by a fixed time period.

7. More Testing is done, so better software quality is delivered

Benefits to the Project Teams

1. Project teams are involved more actively in all the stages, have to ask right question. The teams collaboratively take the decisions and are more empowered.
2. Since the development is Incremental, teams can focus on the specific requirements at any given point of time. 3. More emphasis is on developing the application only, and not on documentation. Simple and minimal documents are used to exchange the views. 4. The teams receive frequent feedback as the testing is integrated; so the rework is reduced. 5. Less time is spent in gathering requirements as all the requirements are not gathered upfront and are implemented as and when they arise.So less time is required for planning. 6. Less cost of development as rework, management, documentation and other non-development work related cost is reduced.

7. Teams develop applications collaboratively and in cooperative environment.

AGILE VS. TRADITIONAL SOFTWARE DEVELOPMENT


Parameter Requirements Time & People Customer Involvement Traditional Fixed May vary Before, After Agile Evolve Fixed During

Negotiable Testing

Estimates After code

Schedule Integrated

Feedback
Concentration on Focus Stages

After
Processes; reviews Plan driven Requirements, Test, Feedback Design,

During
Workable software Value driven Code,(Plan-do-adapt)*

PROCESS OF AGILE SOFTWARE DEVELOPMENT


Starts with a kick-off meeting. The known requirements are understood and prioritized. The development is plan is drawn accordingly. Relative complexity of each requirement is estimated. Sufficient design using simple diagrams is done. Test Driven Development (TDD) approach may be used. TDD emphases on writing test first and then writing code to pass the test. It can help in avoiding over-coding. Development is done, sometimes in pairs, with lot of team interaction.

Ownership of code is shared when pair programming is done.


The code is tested more frequently. Sometime a dedicated Continuous Integration Server/Software may be used to ease the integration testing of the code.

Depending on the feedback received, the code is refractor. Refactoring does not impact the external behavior of the application but the internal structure may be changed to provide better design, maintainability.

USING AGILE
Domain Model:

Domain Model can provide and overview of sample entities involved in the application and their interactions with each other. For an employee working for a department and knowing some skills the domain model would be:

UI Prototype: User Interface Prototype can be created while designing the sample screens. UI prototype can be as simple as screen layouts drawn whiteboard. Story Board: Story board depicts the application flow between the screens. It can also be called UI Flow Diagram. The Story board below depicts the various screens accessible to Employee & Admin after Sign in:

User Stories: User Stories are simple statements using which user can tell the features needed in the application. They are the system requirements in users words. For e.g Admin user may want to add employee details as a new employee joins the organization. Prioritize Once user stories are identified, they are prioritized on the basis of user need, risk involved in developing it etc. Release Plan: After prioritizing the user stories, a release plan will be decided which would include the number of iterations, features to be included in a Iteration. Release date would be decided on the basis of estimated time needed for the iteration. Story point Estimate: To estimate the efforts needed for providing the functionality, story points may be allocated against each user story. The story point would indicate the relative complexity of the user stories. For e.g. Searching an employee details by employee id may need double the efforts than needed for adding or editing an employee. The time needed for developing a feature of 1 story point an be decided to derive actual estimates. For e.g if 1 story point would take 3 days, means Add Employee functionality can be provided in 3 days.

CRC Card : CRC cards indicate the details of Classes, their Responsibilities and their Collaborations with other classes.

AGILE SOFTWARE DEVELOPMENT METHODOLOGIES Extreme Programming: Extreme Programming works on the principle of Simplicity, Communication, Feedback and Courage. The application is designed such that it is adaptive to changing requirement and is simple. Lot of client interaction and communication in team are key factors which help in development of adaptive application. Scrum: In Scrum, a list of all the deliverables for the project, named backlog, is identified and is continuously updated. Project is divided into small units named sprint, lasting 2-4 weeks generally. Deliverable, which is visible and usable increment, is decided for each sprint. Active communication in the team and follow-up using the backlog help and ease the development. Agile Modeling: Agile Modeling is used for modeling and documentation of software systems. It involves the software values, principle and practices which lead to software development in more flexible manner. Adaptive Software Development (ASD): Adaptive Software development works on the principle of continuous adaptation. It uses repeated series of speculate, collaborate and learn cycles to develop the application. .

Crystal Clear and other Crystal methodologies: Crystal family of methodologies is people-centric and focuses on enhancing the work of people involved. The logic is to start with small tasks and then build them up into larger ones. The overhead activities are reduced and efforts are diverted to work building. Its a collaborative process involving tracking and iterations. Dynamic Systems Development Methods (DSDM): DSDM is based on Rapid Application Development (RAD) and can be used for projects which have tight schedule and budget. DSDM works on pareto principle-80/20 rule i.e. 80% of the business benefit comes from 20% of the system requirements. Therefore DSDM starts implementing this first 20% of system requirements to meet 80% of the business needs. And then it progresses to cover rest of requirements. Feature Driven Development (FDD): The main purpose of FDD is to deliver tangible, working software repeatedly in a timely manner. The development process involves 5 activities: Develop Overall Model, Build Features List, Plan by feature, Design by feature, Build by feature. Milestones are identified and progress is tracked on basis of the achievement of milestone.

Lean software development: Lean software development is based on lean manufacturing principle. The principles followed are: Eliminate waste i.e. anything that does not add value to customer. Amplify learning by doing and testing things rather than documenting them and them implementing. Decide as late as possible thus keeping all the possible the options open as long as possible in the life cycle. Deliver as fast as possible. It works on basis of the fact that sooner the end product is delivered, sooner is the feedback received and sooner it is implemented in next iteration. Empower the team by keeping people motivated. Build integrity in by keeping the code simple and avoiding repetitions. See the whole so the problems can dealt at application level, product level, instead of dealing with them at minute levels. Agile Unified Process (AUP): AUP is simplified version of Ration Unified Process (RUP). It distinguishes Development Release iterations from Production Release iterations. It works on building up a model, implementing, testing and deploying it and then followed by configuration management. The focus is on the covering the high-value activities rather than covering every possible thing

WHEN TO (NOT!) USE AGILE

Is Functionality Split-able Is Customer Available Are Requirements Flexible Is It Really Time -Constrained Is Team Skilled Enough

THANK YOU !!

Das könnte Ihnen auch gefallen