Agile Software Engineering Practice to Improve Project Success



Similar documents
Best-Practice Software Engineering: Software Processes to Support Project Success. Dietmar Winkler

Agile Development Overview

Empirical Software Engineering Introduction & Basic Concepts

Agile Software Development Methodologies and Its Quality Assurance

Introduction to Agile Scrum

Introduction to Agile Software Development

TRADITIONAL VS MODERN SOFTWARE ENGINEERING MODELS: A REVIEW

Agile Scrum Workshop

Quality Assurance in an Agile Environment

Agile Project Management with Scrum

Process Automation and Quality Management in Multi-Disciplinary Engineering Environments

Scrum: A disciplined approach to product quality and project success.

Agile Project Management By Mark C. Layton

Software Engineering

Issues in Internet Design and Development

Early Software Product Improvement with Sequential Inspection Sessions: An empirical Investigation of Inspector Capability and Learning Effects

CS4507 Advanced Software Engineering

How To Understand The Limitations Of An Agile Software Development

CS 6361, SPRING 2010 Advanced Requirements Engineering Web Based Meeting Scheduler- Project Plan

Capstone Agile Model (CAM)

26 May 2010 CQAA Lunch & Learn Paul I. Pazderski (CSM/CSP, OD-CM, CSQA) spcinc13@yahoo.com Cell: AGILE THROUGH SCRUM

What is Scrum? Scrum Roles. A lean approach to software development. A simple framework. A time-tested process

Comparing Agile Software Processes Based on the Software Development Project Requirements

Software Requirements and Specification

PLM - Agile. Design Code Test. Sprints 1, 2, 3, 4.. Define requirements, perform system design, develop and test the system. Updated Project Plan

Process Methodology. Wegmans Deli Kiosk. for. Version 1.0. Prepared by DELI-cious Developers. Rochester Institute of Technology

(Refer Slide Time: 01:52)

Test-Driven Automation: Adopting Test-First Development to Improve Automation Systems Engineering Processes

CSSE 372 Software Project Management: More Agile Project Management

EXIN Agile Scrum Foundation

XP & Scrum. extreme Programming. XP Roles, cont!d. XP Roles. Functional Tests. project stays on course. about the stories

Topics covered. Agile methods Plan-driven and agile development Extreme programming Agile project management Scaling agile methods

Water-Scrum-Fall Agile Reality for Large Organisations. By Manav Mehan Principal Agile consultant

Software Development Process

Agile Systems Engineering: What is it and What Have We Learned?

Investigating the Temporal Behavior of Defect Detection in Software Inspection and Inspection-Based Testing

Software Development Life Cycle (SDLC)

Agile Metrics. It s Not All That Complicated

Introduction to Agile and Scrum

System development lifecycle waterfall model

Ingegneria del Software Corso di Laurea in Informatica per il Management. Agile software development

The Agile Manifesto is based on 12 principles:

PROCESS OF MOVING FROM WATERFALL TO AGILE PROJECT MANAGEMENT MODEL

Introduction to Agile Software Development Process. Software Development Life Cycles

Traditional SDLC Vs Scrum Methodology A Comparative Study

When is Agile the Best Project Management Method? Lana Tylka

Software Life Cycles and Configuration Management

Software Life Cycle. Main issues: Discussion of different life cycle models Maintenance or evolution

Testing in Agile methodologies easier or more difficult?

Introduction to Software Engineering: Overview and Methodologies

Case Study on Critical Success Factors of Running Scrum *

Agile and Secure: Can We Be Both?

Models of Software Development

Agile Software Development. Stefan Balbo / Patrick Dolemieux

COMP 354 Introduction to Software Engineering

ScrumMaster Certification Workshop: Preparatory Reading

Scrum. SE Presentation. Anurag Dodeja Spring 2010

Scrum and Testing The end of the test role Bryan Bakker 20 maart 2012

Agile Processes and Methodologies: A Conceptual Study

Understanding agile project management methods using Scrum H. Frank Cervone Purdue University Calumet, Hammond, Indiana, USA

Agile QA s Revolutionary Impact on Project Management

Software Engineering Reference Framework

Development. Lecture 3

Agile Software Development and Service Science

How To Plan An Agile Project

RISK MANAGMENT ON AN AGILE PROJECT

An Appraisal of Agile Software Development Process

Agile So)ware Development

ABHINAV NATIONAL MONTHLY REFEREED JOURNAL OF RESEARCH IN SCIENCE & TECHNOLOGY

Agile Methodologies XP and Scrum

Scaling Scrum. Colin Bird & Rachel Davies Scrum Gathering London conchango

AGILE METHODOLOGY IN SOFTWARE DEVELOPMENT

A Viable Systems Engineering Approach. Presented by: Dick Carlson

Requirement Management with the Rational Unified Process RUP practices to support Business Analyst s activities and links with BABoK

Agile Project Management

Atomate Development Process. Quick Guide

Agile with XP and Scrum

Software Development with Agile Methods

Applying Agile Methods in Rapidly Changing Environments

Modellistica Medica. Maria Grazia Pia, INFN Genova. Scuola di Specializzazione in Fisica Sanitaria Genova Anno Accademico

Course Title: Planning and Managing Agile Projects

Agile Projects 7. Agile Project Management 21

Agile SW Siemens

What is a life cycle model?

Software Development Methodology Development Process Aress

Agile SW Siemens

Nova Software Quality Assurance Process

LEAN AGILE POCKET GUIDE

An Overview of Quality Assurance Practices in Agile Methodologies

AGILE SOFTWARE DEVELOPMENT: INTRODUCTION, CURRENT STATUS & FUTURE Pekka Abrahamsson Jyväskylä

A Glossary of Scrum / Agile Terms

A Software Project Management Innovation (SPM) Methodology: A Novel Method for Agile Software Development

6 Contracts and Scenarios in the Software Development Process

Agile Overview. 30,000 perspective. Juha Salenius CSPO CSM PMI-ACP PMP SCGMIS Workshop January 23 rd, 2013

Agile! Springer. The Good, the Hype and the Ugly. Bertrand Meyer

Integrating PRINCE2 and Scrum for successful new product development

An SME Transition from Plan-Driven to Hybrid Project Management with Agile Software Development Methods

Transcription:

Agile Software Engineering Practice to Improve Project Success Dietmar Winkler Vienna University of Technology Institute of Software Technology and Interactive Systems dietmar.winkler@qse.ifs.tuwien.ac.at http://qse.ifs.tuwien.ac.at

Motivation The construction of high-quality software products requires (a) professional approaches (software processes), an appropriate set of methods, and welltrained engineers. Rapid and late changing requirements are success-critical challenges in common industrial projects because they have a strong impact on product quality, design, and project schedule. Question How can we address unclear, rapid and late changing requirements in (industry) software projects? Topics Structured Software Engineering Processes (e.g., V-Modell XT). Agile Software Development Processes (e.g, SCRUM). Software Development Practices (MDD / TDD / Pair Programming) 2

Why Requirements are Important The hardest single part of building a system is deciding what do build. (B.W. Boehm, 1997) Requirements represent the needs of the customer (what does he need?) from user/customer point of view. Requirements contribute to the solution of a real-world-problem. [SWEBOK, 2004] A requirement is an expression of desired behavior from user perspective. Requirements management is the science and art of gathering and managing user, business, technical, and functional requirements within a product development project. Requirements management deals with a set of requirements to handle complex systems. Note: Requirements must be auditable and testable!

Impact of Requirements Reasons for project interruption - survey including 365 industrial responses (8.380 applications) [Chaos Report, 1994]: 1. Incomplete requirements (13.1%) 2. Lack of User Involvement (12.4%) 6. Changing Requirements and Specifications (8.7%) Selection of Top-Ten risk items for project failure [Boehm, 1991] 3) Developing wrong software functions. 4) Developing the wrong user interfaces. 5) Gold plating. 6) Continuing stream of requirement changes. Software Processes help to address requirements elicitation.

Software Life-Cycle The Software Life Cycle is a general purpose process including all process steps from the first idea to the retirement of a software product. A Software Process is a subset of the life cycle approach and defines the sequence of steps within the project course. Support of Software / Systems Development. Provide consistent guidelines, method and tool support, embedded within the process. In common industrial practice, several different software processes emerged: Focus on specific application domains and project types. Limited to specific types of products and their attributes. Need for selection criteria for software processes.

Structured Software Engineering Processes Example: V-Modell (XT) Pro: Specification vs. Realization and Testing. Focus on deliverables (products) Different levels of abstraction (user, architects, programmers). Defect detection and prevention in early stages of development. idea / study system specification system design module specification acceptance test user view integration test archetectural view module test Con: Clear definition of system requirements necessary. Well-known application domain required. Focus on documentation (Documentation overhead). Critical on defects in early stages of software development. implementing view tested design/system tested modules operation / maintenance installed system Application: Large projects with clear defined goals and requirements.

Incremental Software Development analysis design Implementation / integration Product delivery Build 1 analysis design Implementation / integration Product delivery Build 2 analysis design Implementation / integration Product delivery Build 3 analysis design Implementation / integration Product delivery Note: analysis team design team implementation team Build n

Incremental Software Development Stepwise product development (several releases, builds) Continuous integration phases Small steps of development (planning of software increments) Planning of iterations including milestone definition after each development cycle. PRO Unclear requirements. long development duration. Quick delivery of (parts) of the system to customers. CON Problems, if releases will not fit together. Application Large and complex software systems. Project with long development duration

Some Questions Structured and systematic software processes define the sequence of steps within a project course. Is it always possible / reasonable to follow a strict process? Does a structured process address rapid/late changing requirements? Structured processes (e.g., the V-Model 97) require comprehensive documentation. Is a comprehensive documentation necessary all the time? Structured processes allow a detailed project plan because of the predefined steps over the whole project. What happens, if modified/additional requirements occur in later stages of development? Typically software projects are based on contracts (based on a detailed specification).

Agile SE Approaches 1 4 Key Value Aspects of Agile Software Development Individuals and interaction over processes and tools Working software over comprehensive documentation. Customer Collaboration over contract negotiation Responding to change over following a plan. Key Principles (Selection): Our highest priority is to satisfy the customer through early and continuous delivery of valuable software. Welcome changing requirements, even late in the development. Deliver working software frequently. Collaboration of business people and developers. Simplicity of the solution. The best architectures, requirements, and designs emerge from selforganizing teams. etc. 1 http://www.agilemanifesto.org/

SCRUM Agile Software Process from Project Management (PM) view. SCRUM is not an acronym; it is based on the scrum formation in Rugby sports. Characteristics: One team builds one unit. Clear distribution of work. Clear priorities of project deliverables (backlog items). One common goal (= delivery of the product) A Sprint is a central element. Temporal structure = daily Scrum Meeting + Review + Retrospective. Basic Roles: Product Owner (Self-organizing) Team Scrum Master

SCRUM Phases PRE-GAME SPRINT POST-GAME

SCRUM Sprints Scrum represents a set of procedures, roles and methods for project management. Agile software development Self-organizing teams.

SCRUM Definition of terms Backlog: All work to be performed in the near future, both well defined and requiring further definition. Sprint: A period of 30 days or less where a set of work will be performed to create a deliverable. Sprint Backlog: A set of defined work packages for a sprint duration of about 1 month (incremental deliverables). No or only a few changes are possible. Scrum: A daily meeting for progress discussion to clarify questions and to remove obscurities. Scrum Meeting rules: Protocol for effective Scrum daily meetings. Scrum Team: The cross-functional team working on the sprint's backlog. Burndown Chart: Graph that represents the project progress.

Agile Practices Software processes require suitable methods to support engineers in constructing high-quality software products, e.g., Model-Driven Development. Test-Driven Development. Pair Programming.

Model-Driven Development Software Engineering requires die construction of consistent views on the system. Models support to keep an overview on the system and its components. Basis for effective and efficient team work. Common notation (language) and consistent meaning (different stakeholders / domains typically use their own language ) Basis for automation (e.g., automated code generation, test case generation, testing, etc.) Examples (based on the UML 2 1 diagram family): 6 Structural diagrams: e.g., component, package, and class diagrams 3 Behavioral diagrams, e.g., activity diagrams, state charts, use cases. 4 Interaction diagrams, e.g., sequence and timing diagrams. UML = Unified Modelling Language

UML 2 - Examples Logical Perspective Use Case Perspective Customer Need Deployment Perspective Process Perspective Requirements & Use Case Description Implementation Perspective Data model > Notation for Modeling a System > describes statical and dynamical aspects > Note: Perspective selection depends on the type of the system

Model Driven Development Description of real-world problems in a common language (e.g., UML notation). Basis for communication between consumers and developers. Translation From models to artifacts (e.g., code) From models to other models Etc. Basis for automation (e.g., deriving software code and test cases based on models)

Test-Driven Development (TDD) Goal: Every feature in an application that gets implemented has to be testable. Testing either automatically using unit tests, automated UI tests, etc. or manually executed by following a predefined test plan. Test comes before or parallel to the implementation. Traditional Testing Approaches based on test strategies and plans: Shorter Cycles are quite better.

Test-Driven Development (TDD) (2) Schatten A.: Automated Quality Assurance & Architectural Aspects; QA Course 2007, TUW

Test-Driven Development (TDD) Unit Tests: construction of executable test cases. Derive assertions for test case execution (expected results) Normal case: should be handled without problems. correct defect : should be handled by the system (predictable exception handling) Basic TDD Process : Identify the component / class Write Test cases (e.g., JUnit) Execute Test cases Test cases should fail Implement the component/class Execute Test cases Test cases should be successful. Cleanup code

Pair Programming Pair Programming (PP) is a common practice in the area of agile software engineering. PP focuses on the construction of software code. PP involves two engineers ( Power of Two Brains ). Typical Roles and tasks Driver: responsible for code implementation. Observer: supports the driver by observing his activities. keeper of the focus and the pace of the current tasks. performs implicit quality assurance activities (e.g., continuous reviews) The role assignment (driver and observer) should change frequently.

Pair Programming Pros & Cons Reported benefits of PP vs. Solo Programming More disciplined (2 persons involved) Improved software code and higher code quality (implicit quality assurance) Improved productivity (change of roles) Collective code ownership (2 persons involved) Mentoring & learning (e.g., senior/junior as pair ), But Additional effort (2 persons involved) Possible authority problems. Team building might be difficult Copyright issues What are the deliverables of the observer? Nevertheless, PP is a promising approach for the delivery of high-quality software products (e.g., reported from industry and academic studies)

Next Steps in Pair Programming 1? Pair X : Enhancing Pair Programming. Application of Pairs to other software engineering activities, e.g., Pair Requirements Analysis, Pair Design, Pair Testing Will the involvement of two persons increase productivity and quality in these areas? Are pair activities facilitators for learning, training and mentoring of juniors? Empirical studies will provide answers to this question. IPP: Integrated Pair Programming Extending Pair Programming with systematic Quality Assurance to enable repeatable, traceable and auditable software products required by several application domains e.g., security and safety-critical systems. Currently, the deliverables of the observer are unclear. Systematic QA (e.g., inspection) enable traceable, repeatable, and auditable software products. The integration of constructive and analyitical method might bring up benefits of different disciplines. 1 Ongoing / planned projects at TUW.

Summary Software Processes: Requirements are success-critical in software engineering projects. Structured software processes typically require stable requirements because of a sequential order of process steps with limitations of process backtracking. Agile approaches focus on a tight customer involvement, small iterations and support frequent changing requirements. Agile Practices: Models present real-world scenarios, support communication between consumers and developers (common language), and are the basis for automation (e.g., automated code generation based on models). Test-Driven Development (TDD) focuses on the generation of test cases before or (at least) in parallel to the development of software code. Pair Programming is a team activity - involving two persons - to increase productivity and software quality and supports learning. The application of agile software development processes and practices promises to support the construction of high-quality software products with respect to frequent changing requirements.

References Books & Papers: Boehm B.: Software Risk Management: Principles and Practices, IEEE Software 8(1), pp32-41, 1991. Kappel G.: On Models and Ontologies or what you always wanted to know about Model-Driven Engineering, Keynote SEE Conference, Munich, 2007. Sommerville I: Software Engineering, 7th edition, 2007. Williams L, Kessler R, All I really need to know about pair programming I learned in Kindergarten, in Communication of the ACM 43(5), 2000. Web References: Schwaber Ken: SCRUM Development Process, 1995 http://www.controlchaos.com/old-site/scrumwp.htm Software Engineering Body of Knowledge, http://www.swebok.org, 2004. Software Engineering Best practices: http://best-practice-software-engineering.blogspot.com/ V-Modell XT; http://www.v-modell-xt.de.

Thank you for your attention Contact: Dipl.-Ing. Dietmar Winkler Vienna University of Technology Institute of Software Technology and Interactive Systems Favoritenstr. 9-11/188, A-1040 Vienna, Austria dietmar.winkler@qse.ifs.tuwien.ac.at http://qse.ifs.tuwien.ac.at

This research work has been supported by a Marie Curie Transfer of Knowledge Fellowship of the European Community's 6th Framework Programme under the contract MTKD-CT-2005-029755: CzechVMXT.