AN AGILE VIEW OF PROCESS Agile software Engineering

  • Slides: 32
Download presentation
AN AGILE VIEW OF PROCESS üAgile software Engineering combines a philosophy and a set

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 everchanging. üAgile software engineering represents a reasonable alternative to conventional software engineering for certain classes of software and certain types of software projects.

üAgile development is best termed as “Software Engineering lite” the basic frame work activities

üAgile development is best termed as “Software Engineering lite” the basic frame work activities – Customer Communication , Planning, Modeling, Construction, delivery, and Evolution. ü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.

üIt encourages team structures and attitudes that make communication more facile. üIt emphasizes rapid

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

7. Working software is the primary measure of progress. 8. Agile processes promote sustainable

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

What Is An Agile Process? ØAn AGILE SOFTWARE PROCESS is characterized in a manner

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.

THE POLTICS OF AGILE DEVELOPMENT Ø There is considerable debate about the benefits and

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:

COMPETENCE In the agile development(Software Engg. ) Context “Competence” encompasses innate talent, specific software

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

FUZZY PROBLEM-SOLVING ABILITY The agile team will continually be buffet by change. The team

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, Selforganization 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.

AGIL E PROCESS MODELS üThe history of software engineering is littered with dozens of

AGIL E PROCESS MODELS üThe 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 Beck ØXP 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.

Extreme Programming (XP) These courseware materials are to be used in conjunction with Software

Extreme Programming (XP) These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with 10

PLANNING v. The planning activity begins with the creation of a set of Stories(also

PLANNING v. 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. v. Each story(llr to Use-Case) is written by the customer and is placed on an index card. v. The customer assigns a VALUE(priority) to the story based on the overall business value of the feature or function. v. Members of the XP team then asses each story and assign a Cost. Measured in development weeks. v. 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. v. The new stories can be written at any time. v. 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. v. Once the Commitment is made for a release, the XP team orders the stories that will be developed in one of 3 ways :

1. All stories will be implemented immediately(in few weeks). 2. The stories with highest

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 and 2. 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 writtennothing less, nothing more.

üThe design of extra functionality is discouraged. üXP encourages the use of CRC card

ü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”.

üA central notation in XP is that design occurs both before and after coding

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

ØThe code that is generated will “FIT” into the broader for the story. ØAs

Ø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 v The creation of unit tests before coding commences is the key element of the XP approach. v. 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. v. 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. v 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. v. Acceptance tests are derived from user stories that have implemented as part of a software release.

ADAPTIVE SOFTWARE DEVELOPMENT (ASD) üADAPTIVE SOFTWARE DEVELOPMENT was developed by JIM HIGHSMITH. üASD is

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. SPECULATION COLLABRATION & 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.

These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s

These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with 17

üCollaboration is not a rejection of individualism, because individual creativity plays an important role

ü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 also 1. 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 do 4. Have the skill set to contribute to the work at hand, and 5. 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 ways Ø FOCUS 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.

ØPOSTMORTEMS The ASD teams becomes introspective(Given to examining own sensory), addressing its own performance

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

üThe consortium has defined an agile process model called DSM life cycle. üThe DSM

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

üImplementation – Places the latest software increment into the operational environment It should be

üImplementation – Places the latest software increment into the operational environment It should be noted that 1. The increment may not be 100 % complete or 2. 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.

SCRUM ØSCRUM is an agile process model that was developed by JEFF SUTHERLAND and

SCRUM ØSCRUM 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.

ØWithin each framework activity, work task occur within a process pattern called Sprint. ØThe

Ø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 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 shortteam but stable environment.

Scrum

Scrum

Ø Scrum meetings -These are short meetings held daily by the scrum team. 3

Ø Scrum meetings -These are short meetings held daily by the scrum team. 3 key questions are asked 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.

CRYSTAL üAlistar Cockburn and Jim Highsmith created the Crystal family of agile methods. In

CRYSTAL üAlistar 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: v. 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. v. Features can be organized into a hierarchal business related groups.

v. Since a feature is the FDD deliverable software increment, the team develops operational

v. Since a feature is the FDD deliverable software increment, the team develops operational features every 2 weeks. v. Because features are small, their design and code representation are easier to inspect effectively. v. 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.

Feature Driven Development Reprinted with permission of Peter Coad These courseware materials are to

Feature Driven Development Reprinted with permission of Peter Coad These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with 28

ØFDD provides grater emphasis an project management guidelines and techniques than many other agile

Ø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 inspection, code inspection, promote or build”.

AGILE MODELING(AM) ØThere are many situations in which software engineers must build large, business

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. And 3. 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 MODELING ØThe AGILE MODELING(AM) is described as

AGILE MODELING (AM) is a practice based methodology for effective modeling and documentation of

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.

üKnow the models and tools you use to create them Understand the strengths and

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