COMP4710 Senior Design Software Development Process.

Slides:



Advertisements
Similar presentations
Extreme Programming Copyright, 1999 © Jerzy R. Nawrocki Personal Software Process Lecture.
Advertisements

Extreme Programming Alexander Kanavin Lappeenranta University of Technology.
ITEC 370 Lecture 25 Lifecycles. Review Questions? F give prototype demonstration –Testing plan for your software Life cycles –Scrum (Roles, Meetings,
NAUG NAUG Knowledge Evening – th February 2007.
Agile Process Models. Prescriptive models don’t work It is unrealistic to not have changes. Why? The Agile Manifesto: Individuals and interactions over.
March 25, 2002R McFadyen a lightweight approach to software development. about 5 years old has been used at: Bayerische Landesbank, Credit Swiss.
1 JASS 2006, Sergey Konovalov, Stefan Misslinger XP Extreme Programming Joint Advanced Student School (JASS) XP EXTREME PROGRAMMING.
6 December ’s  60’s “Cowboys” wrote software anyway that they could Difference between best programmers and worst as high as 28:1 (many sources)
XP – eXtreme Programming A gentle introduction. Cleviton Vinícius Jobson Ronan Thiago Rodrigues.
1 March Extreme programming. Presentations Tuesday Campus Tour Sami Says Hawks Thursday Read2Me UNCSET Oral Lab NetVis If helpful, invite your client.
Agile Requirements Methods CSSE 371 Software Requirements and Specification Mark Ardis, Rose-Hulman Institute October 26, 2004.
Extreme Programming: Practices and Strategies Extreme Programming Practices and Strategies Mohammad Alshayeb Information and Computer.
Extreme Programming Collaboration in Software Development Process.
Extreme Programming Team Members Gowri Devi Yalamanchi Sandhya Ravi.
EXtreme Programming By: Aaron Flocke, Leena Paulose, Geetha Krishna (Team 6)
Fundamentals of Software Development 1Slide 1 Pair Programming: What is it? What is it?What is it? Two programmers working side-by-side, collaborating.
EXtreme Programming Quick Introduction Daniel Arraes Pereira Eduardo Lourenço Apolinário Ricardo de Oliveira Cavalcanti.
Computer Engineering 203 R Smith Agile Development 1/ Agile Methods What are Agile Methods? – Extreme Programming is the best known example – SCRUM.
Extreme Programming--a “New” Process Model Extreme Programming-- a “New” Process Model.
Xtreme Programming. Software Life Cycle The activities that take place between the time software program is first conceived and the time it is finally.
Introduction to Agile Methodologies and Concepts Roy Osherove Principal, Team Agile Blog : ISerializable.com.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 17 Slide 1 Extreme Programming.
Comparison of CMM Level 2 and eXtreme Programming Copyright, 2002 © Bartosz Walter Quality Connection 2002, Helsinki Poznan University of Technology Poznan,
Sofia Bulgaria Summer School IST eXPERT: Best Practice on e-Project Development 30 June - 2 July 2003 eXtreme programming.
Agile and XP Development Dan Fleck 2008 Dan Fleck 2008.
Embracing change with Extreme Programming Method Engineering Erik ten Brinke
Unified Process versus Extreme Programming. Outline Compare and contrast UP and XP  Processes / Disciplines  Management  Artefacts Risk management.
EXtreme Programming: An Introduction Presentation by: Jon Banta.
1 e X treme P rogramming D. Dranidis September 2000 CITY College.
Coming up: What is Agile? XP Development Dan Fleck 2010 Dan Fleck 2010.
Extreme/Agile Programming Prabhaker Mateti. ACK These slides are collected from many authors along with a few of mine. Many thanks to all these authors.
Extreme Programming (XP). Agile Software Development Paradigm Values individuals and interactions over processes and tools. Values working software over.
XP – Extreme Programming
What is S.E? Describe S.E in terms of its mistakes Standish Group ( US - $250 Billion on IT projects. 31% projects are cancelled 52.7%
Implementing XP at PUT Copyright, 2000 © Jerzy R. Nawrocki Quality Management.
1 김 수 동 Dept. of Computer Science Soongsil University Tel Fax
Pair Programming (PP). What Is Pair Programming [1] XP (Extreme Programming) practise ”Two programmers working side-by-side, collaborating on the same.
Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 16, Methodologies Extreme Programming.
XP Overview Short Life cycle Risky / Dynamic Requirements Increase developer productivity.
Informatics 43 – May 14, Open Source Source code is freely available and (usually) re-distributable Examples: Firefox web browser Apache HTTP Server.
CS3100 Software Project Management Agile Approaches.
AP-1 4. Agile Processes. AP-2 Agile Processes Focus on creating a working system Different attitude on measuring progress XP Scrum.
Extreme Programming Based on and
Requirements Engineering Requirements Engineering in Agile Methods Lecture-28.
Extreme programming (XP) Variant of agile Takes commonsense practices to extreme levels © 2012 by Václav Rajlich1.
Extreme Programming. Extreme Programming (XP) Formulated in 1999 by Kent Beck, Ward Cunningham and Ron Jeffries Agile software development methodology.
CSC 480 Software Engineering Extreme Programming.
Comparison of CMM Level 2 and eXtreme Programming Copyright, 2002 © Bartosz Walter Web Applications and Services.
Introduction to Software Engineering Muhammad Nasir Agile Software Development(2)
1 Introduction to eXtreme Programming Remko Popma Azzurri Ltd.
Extreme Software Engineering A Hands-On Approach From Extreme Software Engineering: A Hands-On Approach Daniel H. Steinberg Daniel W. Palmer.
Extreme programming (XP) Advanced Software Engineering Dr Nuha El-Khalili.
Coming up: What is Agile? XP Development Dan Fleck 2010 Dan Fleck 2010.
Toward Maturity Model for eXtreme Programming Copyright, 2001 © J. Nawrocki, B. Walter, A.. Wojciechowski
Software Development Life Cycle. The Software Life Cycle  Encompasses all activities from initial analysis until end of work  Formal process for software.
Project Management Software development models & methodologies
Embedded Systems Software Engineering
Requirements Engineering Lecture 4
Planning User stories are written.
Alexander Kanavin Lappeenranta University of Technology
EXtreme Programming BY R.V.Ramesh MCA II Semester.
Extreme Programming.
Waterfall and Agile Quality Techniques
What do you need to know about XP?
Chapter 3 – Agile Software Development
CMPUT eXtreme programming
Extreme Programming Extreme programming is "a lightweight methodology for small-to-medium-sized teams developing software in the face of vague or rapidly.
Refactoring.
Extreme Programming.
Agile software development
Presentation transcript:

COMP4710 Senior Design Software Development Process

Outline What are lightweight processes? What are lightweight processes? What is extreme programming? What is extreme programming? What is pair programming? What is pair programming? Collaborative adversarial programming Collaborative adversarial programming Development deliverables Development deliverables CAP demonstration CAP demonstration

Lightweight Processes Short development cycles Short development cycles Small teams Small teams State-of-the-art development tools State-of-the-art development tools Design may be “overtaken by events” Design may be “overtaken by events” Characteristic of Internet applications, mobile phones, connected gadgets, information appliances, games Characteristic of Internet applications, mobile phones, connected gadgets, information appliances, games

What is eXtreme Programming? XP is a deliberate and disciplined approach to software development. XP is a deliberate and disciplined approach to software development. XP is perfectly suited for risky projects with dynamic requirements. XP is perfectly suited for risky projects with dynamic requirements. XP emphasizes customer involvement and promotes team work. XP emphasizes customer involvement and promotes team work. XP trims unproductive and frustrating activities. XP trims unproductive and frustrating activities. XP takes engineering best practices to an extreme level. XP takes engineering best practices to an extreme level.

What is eXtreme Programming? XP Process model XP Process model

What is eXtreme Programming? XP Iteration Model XP Iteration Model

What is eXtreme Programming? XP Development Model XP Development Model

What is eXtreme Programming? XP Code Ownership Model XP Code Ownership Model

What is eXtreme Programming? XP Rules & Practices XP Rules & Practices Planning Planning User Stories are written User Stories are written Release Planning creates the schedule. Release Planning creates the schedule. Make frequent small releases. Make frequent small releases. The Project Velocity is measured. The Project Velocity is measured. The project is divided into iterations. The project is divided into iterations. Iteration Planning starts each iteration. Iteration Planning starts each iteration. Move people around. Move people around. A stand-up meeting starts each day. A stand-up meeting starts each day. Fix XP when it breaks. Fix XP when it breaks.

What is eXtreme Programming? XP Rules & Practices XP Rules & Practices Designing Designing Simplicity. Simplicity. Choose a System Metaphor. Choose a System Metaphor. Use CRC cards for design sessions. Use CRC cards for design sessions. Create spike solutions to reduce risk. Create spike solutions to reduce risk. No functionality is added early. No functionality is added early. Refactor whenever and wherever possible. Refactor whenever and wherever possible.

What is eXtreme Programming? XP Rules & Practices XP Rules & Practices Coding Coding The customer is always available. The customer is always available. Code must be written to agreed standards. Code must be written to agreed standards. Code the unit test first. Code the unit test first. All production code is pair programmed. All production code is pair programmed. Only one pair integrates code at a time. Only one pair integrates code at a time. Integrate often. Integrate often. Use collective code ownership. Use collective code ownership. Leave optimization till last. Leave optimization till last. No overtime. No overtime.

What is eXtreme Programming? XP Rules & Practices XP Rules & Practices Testing Testing All code must have unit tests. All code must have unit tests. All code must pass all unit tests before it can be released. All code must pass all unit tests before it can be released. When a bug is found tests are created. When a bug is found tests are created. Acceptance tests are run often and the score is published. Acceptance tests are run often and the score is published.

What is Pair Programming? Two programmers working side-by-side, collaborating on the same design, algorithm, code or test on one computer. Two programmers working side-by-side, collaborating on the same design, algorithm, code or test on one computer. One programmer, the driver, has control of the keyboard/mouse and actively implements the program. One programmer, the driver, has control of the keyboard/mouse and actively implements the program. The other programmer, the observer, continuously reviews the work of the driver to identify tactical (syntactic, spelling, etc.) defects and also thinks strategically about the direction of the work. The other programmer, the observer, continuously reviews the work of the driver to identify tactical (syntactic, spelling, etc.) defects and also thinks strategically about the direction of the work. At any time the two programmers can brainstorm any challenging problem. At any time the two programmers can brainstorm any challenging problem. The observer & driver periodically switch roles. The observer & driver periodically switch roles.

Pair Programming Effects Continuous Reviews Continuous Reviews Many mistakes are caught as they are typed in. Many mistakes are caught as they are typed in. The end product as significantly fewer defects. The end product as significantly fewer defects. Pair Relaying Pair Relaying The effect of two people working together to solve a problem. The effect of two people working together to solve a problem. Pair Learning Pair Learning It has been shown that two people can learn a new concept faster than solitary learning. It has been shown that two people can learn a new concept faster than solitary learning. Pair Pressure Pair Pressure A positive pressure between the two programmer’s contributes to their success. A positive pressure between the two programmer’s contributes to their success.

Pair Programming Benefits Economics – early defect detection and removal reduces costs. Economics – early defect detection and removal reduces costs. Satisfaction – people working in pairs find the experience more enjoyable than working alone. Satisfaction – people working in pairs find the experience more enjoyable than working alone. Design Quality – pairs tend to produce shorter programs which is indicative of superior design. Design Quality – pairs tend to produce shorter programs which is indicative of superior design. Continuous Reviews – very effective for early defect detection and removal. Continuous Reviews – very effective for early defect detection and removal. Problem Solving – pairs tend to solve problems faster than individually. Problem Solving – pairs tend to solve problems faster than individually. Learning – the partners help each other learn new concepts. Learning – the partners help each other learn new concepts. Team Building & Communication – pair programming requires team work and members to effectively communicate. Team Building & Communication – pair programming requires team work and members to effectively communicate.

Collaborative Adversarial Programming CAP is pair-programming without the co- location requirement. CAP is pair-programming without the co- location requirement. Collaborate Code Test Review Co-locatedSeparateCo-located Sandbox

Collaborative Adversarial Programming CAP Variant CAP Variant Collaborate Code Test Review Co-locatedSeparateCo-located Sandbox

Collaborative Adversarial Programming SDP CAP Artifacts SDP CAP Artifacts Collaborate Code Test Review Design Artifact Source Code Unit/Acceptance Tests Review Log

The Senior Design Process Model SDP Process Model SDP Process Model Arch. Spike User Stories Planning Cycle Iteratio n AU OK Cert. Final Release System Metaphor Requirements Mgmt. Plan New/Refined User Stories Unfinished Stories/ Next Cycle Submission Package Final Build/Release Package

The Senior Design Process Model SDP Iteration Model SDP Iteration Model Iteration Planning Cycle Release Refactor Cycle Intent Release Plan Unfinished Stories Develo pment UserStories New/Refined User Stories Refined User Stories Mgmt. Plan Refactored Code Base FailedTests Next Cycle Accept. Tests Completed User Stories New Features

The Senior Design Process Model SDP Development Model SDP Development Model Write Code Develo p Tests Test Collabo rate Mgmt. Plan Integrate Review UserStories Failed Tests Design Artifact All Tests Pass Code Complete Review Issues TeamSignoff

CAP Demonstration Mill class design artifact Mill class design artifact + char charMill(char c) + String stringMill(String s) Mill The Mill class processes strings and characters to their “printable character only” equivalents. Non-printable characters ((c tilde)) are treated as spaces. charMill(c) converts c returns the printable character for c based on the general Mill statement above. stringMill(s) returns the printable version of s based on the general Mill statement above. The returned string should have no leading or trailing spaces and should not have any consecutive space characters.