an agile view of process

32
AN AGILE VIEW OF PROCESS Agile software Engineering combines a philosophy and a set of development guidelines. The philosophy encourages customer satisfaction and early incremental development of software. Software engineers and other project stakeholders ( managers, end-users, customers ) work together as an agile team-A team that is self-organizing and in control of its own destiny. An agile team fasters communication and collaboration among all who serve on it. The modern business environment that spawns computer –based systems and software products is fast-paced and ever-changing. Agile software engineering represents a reasonable alternative to conventional

Upload: ashok-kumar

Post on 16-Nov-2014

790 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: An Agile View of Process

AN AGILE VIEW OF PROCESSAgile software Engineering combines a philosophy and a set of development guidelines. The philosophy encourages customer satisfaction and early incremental development of software.Software engineers and other project stakeholders ( managers, end-users, customers ) work together as an agile team-A team that is self-organizing and in control of its own destiny.An agile team fasters communication and collaboration among all who serve on it.The modern business environment that spawns computer –based systems and software products is fast-paced and ever-changing.Agile software engineering represents a reasonable alternative to conventional software engineering for certain classes of software and certain types of software projects.

Page 2: An Agile View of Process

Customers and Software Engineers who adopted the agile philosophy have the same view-the only really important work products is an Operational “Software increment” that is delivered to the customer and appropriate commitment date.If the agile team agrees that the process works and team produces deliverable software increments that satisfy the customer.

What Is Agility ?An agile team is a nimble team able to appropriately respond to changes.Changes in the software being built, changes to the team members, changes to because of new technology, changes of all kinds that may have an impact on the product they built or the projects that creates the project.Support for changes should be built –in everything we do in software.An agile team recognizes that software is developed by individuals working in teams and that skills of these people, their ability to collaborate is at the core for the success of the project.Agility is more than an effective response to change. It also encompasses the philosophy of the agile.

Agile development is best termed as “Software Engineering lite” the basic frame work activities – Customer Communication ,Planning, Modeling, Construction, delivery, and Evolution.

Page 3: An Agile View of Process

It encourages team structures and attitudes that make communication more facile.It emphasizes rapid delivery of operational software and de-emphasizes the importance of intermediate work products .It recognizes that planning is an uncertain world has limits and that a project plan must be flexible.The agile alliance defines 12 principles for those who want to achieve agility :1.Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.2.Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage.3.Delivery working software frequently, from a couple of weeks to a coupe of months, with a preference to the shortest time scale.4.Business people and developers work together daily throughout the project.5.Build projects around motivated individuals. Give them the environment and support they need and trust them to get the job done.6.The most efficient and effective method of conveying information to and within an development team is face-to-face conversation.

Page 4: An Agile View of Process

7. Working software is the primary measure of progress.8. Agile processes promote sustainable development. The sponsors,

developers, and users should be able to maintain a constant pace indefinitely.

9. Continuous attention to technical excellence and good design enhances agility.

10. Simplicity – The art of maximizing the amount of work not done-is essential.

11. The best architectures, requirements, and designs emerge from self-organizing teams.

12. At regular intervals, the team reflects on how to become more effective, then tunes and adjust its behavior accordingly.

Agility can be applied to any software process. To accomplish this, it is essential that the process be designed in a way that allows the project team to adapt tasks and to streamline them, conduct planning in a way that understands the fluidity of an agile development process. It emphasize an incremental delivery strategy that gets working software to the customer as rapidly as feasible for the product type and operational environment.

Page 5: An Agile View of Process

What Is An Agile Process?An AGILE SOFTWARE PROCESS is characterized in a manner that addresses three(3) key assumptions about the majority of software projects.1.It is difficult to predict in advance which software requirements will persist and which will change. It is equally difficult to predict how customer priorities will change as a project proceeds.2.For many types of software, design and construction are interleaved. i.e. Both activities should be performed in tandem so that design models are proven as they are created. It is difficult to predict how much design is necessary before construction is used to prove the design.3.Analysis, design, construction, and testing are not as predictable (from planning) as we might like. By these 3 assumptions we can say that the process lies in adaptability(to rapid changing project and technical conditions). An agile process therefore must be adaptable. The agile software process must adapt INCREMENTALLY. To attain incremental the agile team requires customer feedback. The iterative approach enables the customer to evaluate the software increment regularly, provide necessary feedback to the software team, and influence the process adaptations that are made to accommodate the feedback.

Page 6: An Agile View of Process

THE POLTICS OF AGILE DEVELOPMENT

There is considerable debate about the benefits and applicability of the agile software development as opposed to more convectional software engineering processes.Like all software technology arguments, this methodology debate risks degenerating into a religious war.The agile itself has many proposed process models, each with a subtly different approach to the agility problem.Within each model there Is a set of “IDEAS” ( work tasks), that represent a significant departure from conventional software engineering.

HUMAN FACTORS

Proponents of agile software development take great pains to emphasize the importance of “People Factors” in successful agile development. If members of the software team are to drive the characteristics of the process that is applied to build, software a number of key traits must exist among the people on an agile team and the team itself:

Page 7: An Agile View of Process

COMPETENCE In the agile development(Software Engg.) Context “Competence” encompasses innate talent, specific software related skills, and overall knowledge of the process that the team has chosen to apply. Skill and knowledge of the process can and should be taught to all people who serves as an agile team.

COMMON FOCUS Although members of the agile team may perform different tasks and bring different skills to the project,-All the team members should be focused on one goal and to delivery a working software increment to the customer in time, the team has to focus on continuous adaptations that will make the process fit the need of the team.

COLLABORATION Software Engineering is about assessing, analyzing, and using information that is communicated to the software team. To provide information and to develop databases and build information that provides business value for the customer. The team members has to collaborate with one another, with the customer, and with business-managers.

DECISION-MAKING ABILITY Any good software team i.e. agile teams must be allowed to control its own destiny. This implies that the team is given autonomy-Decision making authority for both technical and project issues..

Page 8: An Agile View of Process

FUZZY PROBLEM-SOLVING ABILITY The agile team will continually be buffet by change. The team has to solve the problem faced today but not the same one tomorrow. Lessons learned from any problem solving activity may be of benefit to the team later in the project.

MUTUAL TRUST AND RESPECT The agile team must become a “jelled” team which exhibits the trust and respect that are necessary to make them “So strongly knit that the whole is greater than the sum of the parts.

SELF-ORGANIZATION In the context of agile development, Self-organization implies 3 things:1.The agile team organizes itself for the work to be done.2.The team organizes the process to best accommodate its local environment.3.The team organizes the work schedule to best achieve delivery of the software increment. Self-organization has a number of technical benefits. It serves to improve collaboration and boost team moral. The team serves as its own management.

Page 9: An Agile View of Process

AGIL E PROCESS MODELSThe history of software engineering is littered with dozens of obsolete process description and methodologies, modeling methods and notations, tools, and technology. With the introduction of a wide array of agile process models-Each contending for acceptance within the software development community.There a number of different agile process models. There are many similarities among these approaches. The characteristics of each method that makes them unique.All Agile models conform to the Manifesto for Agile software Development and the principles of Agility.

EXTREME PROGRAMMING(XP) The most widely used agile process, originally proposed by Kent BeckXP uses an object oriented approach as its preferred development paradigm.XP encompasses a set of rules and practices that occur within the context of 4 framework activities: Planning, Design, Coding, and Testing. Shown in below figure which illustrates the XP process and notes some of the key ideas and tasks that are associated with each framework activity.The key activities of the XP are summarized as below.

Page 10: An Agile View of Process

These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by R.S. Pressman & Associates, Inc., copyright © 1996, 2001, 2005

10

Extreme Programming (XP)

unit test continuous integration

acceptance testing

pair programming

Release

user stories values acceptance test criteria iteration plan

simple design CRC cards

spike solutions prototypes

refactoring

software incrementproject velocity computed

Page 11: An Agile View of Process

PLANNING The planning activity begins with the creation of a set of Stories(also called User stories) that describe required features and functionality for software to be built. Each story(llr to Use-Case) is written by the customer and is placed on an index card.The customer assigns a VALUE(priority) to the story based on the overall business value of the feature or function.Members of the XP team then asses each story and assign a Cost- Measured in development weeks.If the story will require more than 3 development weeks, the customer is asked to split the story into smaller stories, and the assignment of the value and cost occurs again.The new stories can be written at any time.Customers and the XP team work together to decide how to group stories into the next release (next software increment) to be developed by the XP team.Once the Commitment is made for a release, the XP team orders the stories that will be developed in one of 3 ways :

Page 12: An Agile View of Process

1. All stories will be implemented immediately(in few weeks).2. The stories with highest value will be moved up in the schedule and

implemented first.3. The riskiest stories will be moved up in the schedule and implemented

first. After the first project release has been delivered by XP team

computes PROJECT VELOCITY-- the number of customer stories implemented during the first release. Project Velocity can then be used to

1.Help estimate delivery dates and schedule for subsequent releases and2.Determine weather an over-commitment has been made for all stories

across entire development project. If an over commitment occurs the content of release is modified or end-delivery dates are changed.

As development work proceeds, the customer can add stories, change value of an existing story, split stories, or eliminate them. The XP team then reconsiders all remaining releases and modifies its plan accordingly.

DESIGN XP deign follows the KIS( Keep it Simple) principle. A simple design is

preferred over more complex representation. The design provides implementation guidance for a story as it is written-

nothing less, nothing more.

Page 13: An Agile View of Process

The design of extra functionality is discouraged.XP encourages the use of CRC card as an effective mechanism for thinking about the software in an object oriented context.CRC(Class-Responsible Collaboration) cards identify and organize the object-oriented classes that are relevant to the current software increment.The CRC cards are the only design work products produced as part of the XP process.If a difficult design problem is encountered of as part of the design of a story, XP recommends the immediate creation of an operational prototype of that portion of the design called SPIKE SOLUTION, the design prototype is implemented and evaluated.The intent is to lower the risk when true implementations starts and to validate the original estimates for the story containing the design problem.XP encourages REFACTORING A construction technique that is also a design technique.XP designs uses virtually no notation and produces few, if any work products other than CRC cards and SPIKE SOLUTION, design is viewed as a transient artifact that can and should be continually modified as construction proceeds.The REFACTORING intent is to control these modifications by suggesting small design changes that “can radically improve the design”.

Page 14: An Agile View of Process

A central notation in XP is that design occurs both before and after coding commences. REFACTORING means that design occurs continuously as the system is constructed.The construction team itself will provide the XP team with a guidance on how to improve the design.

CODING XP recommends that after stories are developed and preliminary design work is done, the team should not move to code, it should develop a series of unit test which are included in the current release (Software increment).After the unit test is has been created, the developer is better able to focus on what must be implemented to pass unit test .Once the code is completed, it can be unit tested immediately, which provide instantaneous feedback to the developers.A key concept in coding of XP is PAIR PROGRAMMING XP recommends that 2 people work together at one computer work station to create code for the story. This provides a mechanism for real time problem solving and real-time quality assurance. It also keeps the developers problem on the problem.In practice each person takes on slightly different role.EX one person might think about the coding details of a particular portion of the design while the other ensures the coding standards are being followed.

Page 15: An Agile View of Process

The code that is generated will “FIT” into the broader for the story.As pair programmers complete their work, the code they develop is integrated with the work of others.The pair programmers have integration responsibility. This continuous integration strategy helps to avoid compatibility and interfacing problems and provides “SMOKE TESTING” environment to uncover errors early.

TESTING The creation of unit tests before coding commences is the key element of the XP approach.The unit tests that are created should be implemented using a framework that enables them to be automated. This encourages a regression testing strategy whenever code is modified.As the unit tests are organized into a “Universal Testing suit” integration and validation testing of the system can occur on daily basis. It provides the XP team with a continual indication of progress and also can raise warning flags early if thing are going awry. XP acceptance tests also called customer tests are specified by the customer and focus on overall system features and functionally that are reviewed by the customer.Acceptance tests are derived from user stories that have implemented as part of a software release.

Page 16: An Agile View of Process

ADAPTIVE SOFTWARE DEVELOPMENT (ASD)ADAPTIVE SOFTWARE DEVELOPMENT was developed by JIM HIGHSMITH.ASD is used as a technique for building complex software and systems. The philosophical underpinnings of ASD focus on human collaboration and team self-organization.The ASD “life cycle” is incorporates 3-phases as shown in below figure.

SPECULATIONCOLLABRATION &

LEARNING SPECULATION During SPECULATION, the project is initiated and adaptive cycle planning is conducted. Adaptive cycle planning uses project initiation information- the customer’s mission statement, project constraints (E.g. Delivery dates or User descriptions), and basic requirements- to define the set of release cycles (Software increments) that will be required for the project. COLLABRATION Motivated people work together in a way that multiplies their talent and creative output beyond their absolute numbers. This collaborative approach is a recurring theme in all agile methods.Collaboration is not simply communication but a part of it and it is also not only a teamwork, a “jelled” team is essential for real collaboration.

Page 17: An Agile View of Process

These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by R.S. Pressman & Associates, Inc., copyright © 1996, 2001, 2005

17

adaptive cycle planning uses mission statement project constraints basic requirements time-boxed release plan

Requirements gathering J AD mini-specs

components implemented/ tested focus groups for feedback formal technical reviews postmortems

software incrementadjustments for subsequent cycles

Release

Page 18: An Agile View of Process

Collaboration is not a rejection of individualism, because individual creativity plays an important role in collaborative thinking. with all above it also a matter of trust and also1.Criticize without animosity(it is a ill cause)2.Assist without resentment (A feeling of deep and bitter anger and ill-will)3.Work hard or harder as they do4.Have the skill set to contribute to the work at hand, and5.Communicate problems or concerns in a way that leads to effective action. LEARNING As the members of an ASD team begin to develop the components that are part of an adaptive cycle which emphasis in learning as much as it is on progress toward a completed cycle.The software developers often overestimate themselves in their own understanding (i.e. technology, the process) and that learning will help them to improve their level of real understanding . ASD learns in 3 waysFOCUS GROUPS The customer and /or end-users provide feedback on software increments that are being delivered. This provides a direct indication of weather or not the product is satisfying business needs.FORMAL TECHNICAL REVIEWS ASD team members review the software components that are developed, improving quality and learning as they proceed.

Page 19: An Agile View of Process

POSTMORTEMS The ASD teams becomes introspective(Given to examining own sensory), addressing its own performance and process(with the intent of learning and improving its approach). ASD philosophy has merit regardless to the process used. ASD’s overall emphasis on the dynamics of self-organizing teams, interpersonal collaboration, and individual and team learning which yield software project teams that have higher rate of success.

DYNAMIC SYSTEMS DEVELOPMENT METHOD(DSDM)The DYNAMIC SYSTEMS DEVELOPMENT METHOD(DSDM) is an agile software development approach that provides a framework for building and maintaining systems which meet tight time constraints through the use of incremental prototyping in a controlled project environment. The DSDM principle is attained from the pareto principle. Here 80% of an application can be delivered in 20% of time which take to deliver the complete application.Like XP, ASD the DSDM uses an iterative software process. The DSDM approach in each iteration follow the 80% rule which is only enough work required for the next increment reaming work is completed later when more business requirements are known or changes have to be accommodated. The DSM consortium(An association of companies for some definite purpose) is a world wide group.

Page 20: An Agile View of Process

The consortium has defined an agile process model called DSM life cycle. The DSM life cycle defines 3 different iterative cycles preceded by 2 additional life cycle activities.Feasibility study – Establishes the basic business requirements and constraints associated with the application to be built and assesses weather the application to be built and then assess weather the application is a viable candidate for DSDM process. Business Study –Establishes the functional and information requirements that will allow the application to provide business value, also defines the basic application architecture and identifies the maintainability requirements for the application.Functional Model Iteration –Produces a set of incremental prototypes that provides functionality for the customer. The intent during this iterative cycle is to gather additional requirements by eliciting feedback from the users as in prototype.Design And Build Iteration- Revisits prototypes built during the functional model iteration to ensure that each has been engineered in a manner that will enable it to provide operational business value for end-users. The functional model iteration and the design and built iteration occur concurrently.

Page 21: An Agile View of Process

Implementation – Places the latest software increment into the operational environment It should be noted that 1.The increment may not be 100 % complete or2.Changes may be requested as the incremental is put into place.DSDM development work continues by returning to the function model iteration activity. DSDM can be combined with XP to provide a combination approach that defines a solid process model with the nuts and bolts practices(XP) that are build software increments. The ASD concepts of collaboration and self-organizing teams can be adapted to a combined process model.

Page 22: An Agile View of Process

SCRUMSCRUM is an agile process model that was developed by JEFF SUTHERLAND and his team in early 1990’s.Future development of SCRUM methods have been performed by SCHWABER and BEEDLE.SCRUM principles are consistent with the agile manifesto :Small working teams are organized to maximize communication, minimize overhead, and maximize sharing of tacit, informal knowledge.The process must be adaptable to both technical and business changes “to ensure the best product is produced”.The process yields frequent software increments “that can be inspected, adjusted, tested, documented, and built on.Development work and the people who perform it are partitioned “into clean, low coupling partitions, or packets”.Constant testing and documentation is performed as the product is built.The SCRUM process provides the “ability to declare a product ‘done’ whenever required (because the customer needs the function….etc)”. SCRUM principles are used to guide development activities within a process that incorporate the following frame work activities : requirements, analysis, design, evolution, and delivery.

Page 23: An Agile View of Process

Within each framework activity, work task occur within a process pattern called Sprint .The work conducted within a Sprint (the number of sprints required for each framework activity will vary depending on product complexity and size) is adapted to problem at hand and is defined and often modified in real-time by the SCRUM team. The overall flow of the SCRUM process is shown in below figure. SCRUM emphasizes the use of a set of “Software process patterns” that have proven effective for projects with the tight timelines, changing requirements, and business criticality.Each of these process patterns defines a set of development activities.Backlog-A prioritized list of project requirements or features that provide business value for the customer. Items can be added to the Backlog at any time. The product manager assesses the Backlog and update priorities as required.Sprints-Consists of work units that are required to achieve a requirement defined in the Backlog that must be fit into a predefined time-box ,the items in the Backlog are frozen which allows the team members to work in a short-team but stable environment.

Page 24: An Agile View of Process

Scrum

Scrum Process Flow (used with permission)

Page 25: An Agile View of Process

Scrum meetings -These are short meetings held daily by the scrum team. 3 key questions are asked and answered in the meeting by all team members.

• What did you do since the last meeting?• What obstacles are you encountering?• What do you plan to accomplish by the next team meeting?

A team leader, called a “Scrum master”, leads the meeting and assesses the responses from each person. The Scrum meetings helps the team to uncover potential problems as early as possible.

The daily meetings lead to “Knowledge socialization” which promote a self-organizing team structure.

Demos -Deliver the software increment to the customer so that functionally that has been implemented can be demonstrated and evaluated by the customer.

The demo may not contain all planned functionality, and these functions can be delivered in within the time-box that was established.

Page 26: An Agile View of Process

CRYSTALAlistar Cockburn and Jim Highsmith created the Crystal family of agile methods. In order to achieve a software development approach that puts a premium on “Maneuverability”.To achieve maneuverability, Cockburn and Highsmith have defined a set of methodologies, each with core elements that are common to all, and roles, process, pattern work products, and practice that are unique to each.The crystal family is actually a set of agile processes that have been proven effective for different types of projects.

FEATURE DRIVEN DEVELOPMENT(FDD) FEATURE DRIVEN DEVELOPMENT(FDD) was originally conceived by PETER COAD and his team as a practical process model for object-oriented software engineering.In FDD a feature is “a client –valued function that can be implemented in 2 weeks or less.”The emphasis on the definition of features provides the following benefits:Because features are small box of deliver functionality, user can describe them more easily, understand how they relate to one another more readily, and better review them for ambiguity, errors and omissions. Features can be organized into a hierarchal business related groups.

Page 27: An Agile View of Process

Since a feature is the FDD deliverable software increment, the team develops operational features every 2 weeks.Because features are small, their design and code representation are easier to inspect effectively.Project planning, scheduling, and tracking are driven by the feature hierarchy, rather than an arbitrarily adopted software engineering task set.Coda suggest the following template for defining a feature. <action> the<result> <by |for|of|to> a(n) <object> Where an <object> is a person, place or thing(including roles, catalog –entry-like descriptions) Examples of features for an e-commerce application might be: Add the product to a shopping cart. Display the technical specifications of a product. Store the shipping-information for a customer.A feature set of groups related features into business- related categories and is defined as : <action> <-ing>a(n) <object>The FDD approach defines 5 collaborating framework activities as shown in below figure.

Page 28: An Agile View of Process

These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by R.S. Pressman & Associates, Inc., copyright © 1996, 2001, 2005

28

Feature Driven Development

Reprinted with permission of Peter CoadReprinted with permission of Peter Coad

Page 29: An Agile View of Process

FDD provides grater emphasis an project management guidelines and techniques than many other agile methods.FDD defines 6 milestones during the design and implementation of a feature “DESIGN walk through, design, design inspection, code, code inspection, promote or build”.

Page 30: An Agile View of Process

AGILE MODELING(AM)There are many situations in which software engineers must build large, business critical systems.The scope and complexity of such systems must be modeled so that 1.All constituencies can better understand what needs to be accomplished.2.The problem can be partitioned effectively among the people who must solve it. And3.Quality can be assessed at every step as the system is being engineered and built.A wide variety of software engineering modeling methods and notations have been proposed for analysis and design, but these methods significant merits have proven difficult to apply and challenging to sustain.The part of the problem is the “Weight” of these modeling methods. By this we mean the volume of notation required, the degree of formalism suggested, the size of the models for larger projects, and the difficulty in maintaining the model as change occurs.Only the analysis and design modeling have sustainable benefit for larger projects.To make the projects intellectually manageable the AGILE MODELINGThe AGILE MODELING(AM) is described as

Page 31: An Agile View of Process

AGILE MODELING (AM) is a practice based methodology for effective modeling and documentation of software-based systems. Agile modeling is a collection of principles, values, and practices for modeling software that can be applied on a software development project in an effective and light-weight manner. AM suggests a wide array of “CORE” and “SUPPLYMENTARY” modeling principles that make AM unique.Model with a purpose A developer who uses AM should have a specific goal (E.g. To communicate information to the customer) in mind before creating the model. Once the goal for the model is identified, the type of notation to be used and level of detail required will be more obvious.Use multiple models There are many different models and notations that can be used to describe software. Only small subset is essential for most projects.Travel light As software engineering work proceeds, apply only those models that will only provide a long term value. Every work product that is kept must be maintained as changes occurs.Content is more important than representation Modeling should impart information to its intended audience. A syntactical perfect model that imparts little useful content is not as valuable as a model with false notation dose not provide any information to the audience.

Page 32: An Agile View of Process

Know the models and tools you use to create them Understand the strengths and weaknesses of each model and the tools that are used to create it.Adapt locally The modeling approach should be adapted to the needs of the agile team.