Laboratório de Desenvolvimento de Software

Similar documents
Introduction to Agile and Scrum

Agile Software Development

Agile Project Management

Introduction to Agile Software Development. EECS 690 Agile Software Development

CompSci Fall 2014 Professors: Robert Duvall, Ajay Patel, Salman Azhar (rcd@cs, ajay.patel, azhar@cs)

How to manage agile development? Rose Pruyne Jack Reed

Software processes that are:

Scrum for Managers, Zurich March 2010

Agile Project Management By Mark C. Layton

Agile in Financial Services A Framework in Focus

D25-2. Agile and Scrum Introduction

Agile Project Management: Adapting project behaviors to the software development environment

Agile with XP and Scrum

History of Agile Methods

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

CSSE 372 Software Project Management: More Agile Project Management

Agile and Secure: Can We Be Both?

When is Agile the Best Project Management Method? Lana Tylka

Agile Software Development with Scrum. Jeff Sutherland Gabrielle Benefield

Software Engineering

CSSE 372 Software Project Management: Managing Agile Projects

Software Development Methodologies

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

Agile Software Development and Service Science

Agile QA s Revolutionary Impact on Project Management

Agile Information Management Development

Agile Development Overview

Comparing Agile Software Processes Based on the Software Development Project Requirements

Introduction to Agile Methods

SWEN - Software Engineering Network Donnerstag 06. Mai. 2010

How To Plan A Project

Agile Project Management and the Real World. Emily Lynema DLF Fall 2010 November 1, 2010

Software Life Cycles and Configuration Management

Introduction to Agile Software Development

PMP vs. Scrum Master

Agile Inspired Risk Mitigation Techniques for Software Development Projects

Models of Software Development

CS435: Introduction to Software Engineering! " Software Engineering: A Practitioner s Approach, 7/e " by Roger S. Pressman

Agile and the Seven Deadly Sins of Project Management

Introduction to Agile Software Development Process. Software Development Life Cycles

CHAPTER 3 : AGILE METHODOLOGIES. 3.3 Various Agile Software development methodologies. 3.4 Advantage and Disadvantage of Agile Methodology

Agile Software Development and Service Science

Roles: Scrum Master & Project Manager

Digital Transformation of the Enterprise for SMAC: Can Scrum help?

Software Engineering I (02161)

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

Introduction to Agile Scrum

A Review of Agile Software Development Methodologies

Applying Agile Project Management to a Customized Moodle Implementation

Hamid Faridani March 2011

Issues in Internet Design and Development

Waterfall vs. Agile Project Management

Course Title: Managing the Agile Product Development Life Cycle

"Bezpieczny Projekt"

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

Testing in an Agile Environment

EXTREME PROGRAMMING AGILE METHOD USED IN PROJECT MANAGEMENT

SECC Agile Foundation Certificate Examination Handbook

Moonzoo Kim CS Division of EECS Dept. KAIST

The Agile Drupalist. Methodologies & Techniques for Running Effective Drupal Projects. By Adrian AJ Jones (Canuckaholic)

Methodology: Agile development of safety critical systems Annex D1.1.d to deliverable D1.1

EXIN Agile Scrum Foundation

Agile Project Management Mapping the PMBOK Guide to Agile Practices. Michele Sliger

Neglecting Agile Principles and Practices: A Case Study

RISK MANAGMENT ON AN AGILE PROJECT

Course Title: Planning and Managing Agile Projects

Agile Scrum Training. Nice to meet you. Erik Philippus. Erik Philippus (1951)

Extreme Programming, an agile software development process

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

Agile Software Development. Stefan Balbo / Patrick Dolemieux

A Quantitative Framework for the Evaluation of Agile Methodologies

Agile Project Management

1. CMMI and Scrum TWO BRANCHES OF SOFTWARE DEVELOPMENT

Software Development with Agile Methods

Distributed Agile Development. Bapiraju Nandury Product Development Manager Bangalore Development Centre

Lean Agile Scrum Business Value Development and Delivery using Agility. Brenden McGlinchey Software Done Right, Inc.

Agile Software Development in the Large

An Agile Project Management Model

IT4304 Rapid Software Development (Optional)

Agile project management: A magic bullet?

Transitioning Your Software Process To Agile Jeffery Payne Chief Executive Officer Coveros, Inc.

AGILE SOFTWARE DEVELOPMENT

Software Requirements and Specification

Agile Project. Management FOR DUMME&* by Mark C. Layton WILEY. John Wiley & Sons, Inc.

How To Model In An Agile World

SCEA 2010 EST06. Estimating Issues Associated with Agile. Bob Hunt. Galorath Incorporated

Strategy. Agility. Delivery.

Development Techniques. CSE301 University of Sunderland Harry R. Erwin, PhD

(General article) An Empirical Study of Agile Software Development. Ajay Deep a* Department of Information Technology, OITM, Hisar

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

Mastering the Iteration: An Agile White Paper

Transcription:

Laboratório de Desenvolvimento de Software FEUP/MIEIC, 2015/16 Ademar Aguiar Nuno Flores Rui Maranhão Hugo Ferreira Luís Teixeira url: moodle

http://www.facebook.com/notes/facebook-engineering/visualizing-friendships/469716398919

Software Engineering (1) the application of a systematic, disciplined, quantifiable approach to the development, operation and maintenance of software, i.e. the application of engineering to software. (2) the study of approaches as in (1). IEEE Computer Society. software citius, vilis, bonus..., A. Aguiar

Software Complexity Higher technical complexity - Embedded, real-time, distributed, fault-tolerant - Custom, unprecedented, architecture reengineering - High performance An average software project - 5-10 people - 3-9 month duration - 3-5 external interfaces - Some unknowns & risks Lower management complexity - Small scale - Informal - Single stakeholder - Products Commercial Embedded Compiler Automotive Software CASE Tool Small Scientific Simulation Business Spreadsheet IS Application Distributed Objects (Order Entry) IS Application GUI/RDB (Order Entry) Enterprise IS (Family of IS Applications) Telecom Switch Large-Scale Organization/Entity Simulation Defense Weapon System Defense MIS System National Air Traffic Control System Higher management complexity - Large scale - Contractual - Many stakeholders - Projects Lower technical complexity - Mostly 4GL, or component-based - Application reengineering - Interactive performance Walker Royce

Waterfall model

Rational Unified Process Phases and Activities

Agile In Merriam-Webster dictionary, agile means: 1 : marked by ready ability to move with quick easy grace 2 : having a quick resourceful and adaptable character <an agile mind> In agile software development, it means ability to respond to change.

Key Concepts about Processes The challenge is to help on achieving: high quality of the developed product high productivity of development good predictability" of process results Define who? what? when? why? how? Roles, artefacts, activities, techniques, practices and tools Means to an End Suggest practices to help improve team capabilities Introduce formalities to improve team discipline Force documenting to improve team comunication and knowledge Which practices, formalities and documentation to use? No silver bullet! It depends on the project... Balance them to your needs...

Balancing Discipline and Agility capabilities, communication, knowledge, discipline, selforganization, adaptability, optimization, pace, quality, ROI, predictability, culture, criticality, size, dynamism... practices, documentation, formalities, leadership, roles, artifacts, tools, training, planning, feedback, size the project

Scrum Day Ademar Aguiar 24.Sep.2014

Controlling Software Projects Four control variables require balancing Resources Time Scope Quality It is not advisable to set a priori the value of all variables simultaneously, if we want a successful project. scope is often the most important variable to control

Agile Processes

Examples Adaptive Software Development (ASD) Agile Modeling Crystal methods Dynamic System Development Methodology (DSDM) extreme Programming (XP) Feature Driven Development Lean Development Scrum Open source software development. Agile version of Rational Unified Process

The Agile Manifesto I We are uncovering better ways of developing software by doing it and helping others to do it. Through this work we have come to value: Individuals and interactions over processes and tools Working software over comprehensive documentation Customer collaboration over contract negotiation Responding to change over following a plan That is, while there is value in the items on the right, we value the items on the left more. http://www.agilealliance.org/

Model and Phases

Envision phase What is the customer's product vision? What is the scope of the project and its constraints (including the business case)? Who are the right participants to include in the project community? How will the team deliver the product (approach)?

Speculate phase Determine how the product and its features will evolve Balance anticipation of features and design with adaptation as the project unfolds Focus on the highest-value features early in the project Think about the project, business goals, and customer expectations Provide necessary budget and schedule information to management Establish priorities for tradeoff decisions as changes occur Coordinate interrelated activities and features across feature teams Consider alternatives and adaptive actions Provide a baseline for analyzing events that occur during the project

Explore phase Focusing the team on delivering results Molding a group of individuals into a team Developing each individual's capabilities Providing the team with required resources and removing roadblocks Coaching the customers Orchestrating the team's rhythm

Adapt phase Product functionality, primarily from the customer team's perspective Product quality, primarily from the technical team's perspective Team performance Project status

Close phase Celebration Clean up open items Finalize documentation and production or manufacturing support material Prepare required end-of-project administrative and financial reports Project retrospective

The Cycles of Agile Development

Scrum 24 hours Sprint goal Sprint 2-4 weeks Return Return Cancel Gift Coupons wrap Gift Cancel wrap Product backlog Sprint backlog Coupons Potentially shippable product increment

Scrum: a framework Scrum Day Ademar Aguiar 24.Sep.2014

Information radiator

LDSO Roles Development Team: analyst, architect, programmer, tester, interface designer, (students). Scrum Master: responsible for following the process (students). Product Owner: responsible for product backlog management and communication with Customers and Stakeholders (external). Client/Customer/End-user: has a clear vision of the features and relative importance of each one of them (external). Consultant: external expert on specific topics (teachers, others). Manager: ultimate responsible for the project (teacher).

Artefacts vision user stories + user interfaces, architecture vertical functional prototype public demonstration of the functional prototype product backlog, sprint backlogs acceptance tests + unit tests continuous integration plans project tracking and management product releases documented source code repository (git) pitch + video + slides demo (5min) public demonstration of the product quality of the collaborative platform contents technical reports

Techniques, practices and tools Planning (Re)planning iteratively at beginning of each phase (team and client). Acceptance tests. Development agile software development Communication collaborative platform for the documentation (wiki) GIT for source code

Technologies: some examples...

Projects 4-6 elements 4-5 projects / class small projects with social impact, proposed by social entrepreneurs, teachers, students, etc. key areas: mobile and web apps responsive web site web server/services mobile app (ios, Android, Windows Phone) The best projects will be mentored to continue as autonomous projects, maybe startups...

Objectives, Skills and Learning Outcomes applying a Software Engineering process to the complete development of a real software system, covering the specification of requirements, software architecture and design, coding, integration, test, documentation and demonstration; acquire fundamental knowledge and experience about agile software development practices: iteration planning, unit tests, refactoring, patternbased design, collective ownership, pair programming, continuous integration; use software development tools adapted to agile methods to enable the continuous monitoring and tracking of the project; use of large-scale APIs with class packages, to induct the component-based computing and the problems related with application integration; development of collaborative work integrating other project participants in design decisions, planning, delegation, negotiation, and group review; application and integration of the contents acquired by the students in courses within the areas of Software Engineering, Databases, Graphic Interfaces, Operative Systems, Programming Languages and Artificial Intelligence.

Methodology Classes Theoretical classes are used to the presentation and supervision of the projects and for the exposition of software developing tools. Laboratory classes are used to sync the implementation of the application: sprint planning, development, sprint review Project divided into 5 iterations: iteration 0 +4 iterations of 2 weeks Demos the functional prototype the product, beta version

Final grades Iteration 0-20%, 1+4 weeks, 17/Sep-15/Oct vision, user stories + user interfaces, architecture, vertical functional prototype public demonstration of the functional prototype Iterations 1-4 - 30%, 8 weeks, 22/Oct-17/Dec development process maturity: planning, user stories readines, estimations, acceptance tests, unit tests, continuous integration project tracking and management Finale - 30%, 6/Jan product release (signup, download, etc.), documented source code repository (git), pitch + video + slides demo (5min), updated technical reports public demonstration of the product, to showcase the idea, concept, and solution from the perspective of value for the client. Individual evaluation - 10% presence and participation Collaboration Platform 10%

Bibliography Extreme Programming Explained by Kent Beck, Addison-Wesley Pub Co; 1st edition (October 5, 1999), ISBN:0201616416 Extreme Programming Installed, by Ron Jeffries, Ann Anderson, Chet Hendrickson, Ronald E. Jeffries, Addison-Wesley Professional; 1st edition (October 13, 2000), ISBN:0201708426 Planning Extreme Programming, by Kent Beck, Martin Fowler, Addison-Wesley Professional; 1st edition (October 13, 2000), ISBN:0201710919 Refactoring, by Martin Fowler, Kent Beck, John Brant, William Opdyke, Don Roberts, Addison-Wesley Pub Co; 1st edition (June 28, 1999), ISBN:0201485672 Adaptive Software Development: A Collaborative Approach to Managing Complex Systems, by James A. Highsmith III, Dorset House Publishing Company, Incorporated (December 1, 1999), ISBN:0932633404 Agile Software Development, by Alistair Cockburn, Addison-Wesley Pub Co; 1st edition (December 15, 2001), ISBN:0201699699 Agile Software Development, Principles, Patterns, and Practices, by Robert C. Martin, Prentice Hall; 1st edition (October 15, 2002), ISBN:0135974445 Test Driven Development, by Kent Beck, Addison-Wesley Professional; 1st edition (November 8, 2002), ISBN:0321146530 Selected papers and articles.

ademar.aguiar@fe.up.pt