CPSC 871 John D. McGregor Module 7 Session 2 Agile Software Development.

Slides:



Advertisements
Similar presentations
© University of Glamorgan1 Extreme Programming and its effect on project management Second Computing Project Management Workshop 13 September 02, University.
Advertisements

The System and Software Development Process Instructor: Dr. Hany H. Ammar Dept. of Computer Science and Electrical Engineering, WVU.
Lecture # 2 : Process Models
Chapter 2 Modeling the Process and Life Cycle Shari L. Pfleeger
CS487 Software Engineering Omar Aldawud
SEP1 - 1 Introduction to Software Engineering Processes SWENET SEP1 Module Developed with support from the National Science Foundation.
Ch 3 System Development Environment
Alternate Software Development Methodologies
Software Life Cycles ECE 417/617: Elements of Software Engineering
 The Rise of Computer Science ◦ Machine Language (1 st Gen) ◦ Assembly Language (2 nd Gen) ◦ Third Generation Languages (FORTRAN, BASIC, Java, C++, etc.)
Chapter Extension 19 Alternative Development Techniques © 2008 Pearson Prentice Hall, Experiencing MIS, David Kroenke.
Agile Methods and Extreme Programming CSSE 376, Software Quality Assurance Rose-Hulman Institute of Technology March 23, 2007.
Software Engineering General Project Management Software Requirements
NJIT 1 On to Object Design Chapter 14 Applying UML and Patterns.
Software Development Overview CPSC 315 – Programming Studio Spring 2009.
Systems Analysis and Design in a Changing World, Fifth Edition
Xtreme Programming. Software Life Cycle The activities that take place between the time software program is first conceived and the time it is finally.
Software Development Overview CPSC 315 – Programming Studio Spring 2008.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 17 Slide 1 Rapid software development.
CPSC 372 John D. McGregor Module 0 Session 1 Introduction.
1 These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 5/e and are provided with permission by.
QWise software engineering – refactored! Testing, testing A first-look at the new testing capabilities in Visual Studio 2010 Mathias Olausson.
CIS 321—IS Analysis & Design
Chapter 2: Approaches to System Development
CPSC 871 John D. McGregor Processes – a first iteration Module 1 Session 1.
CPSC 871 John D. McGregor MSumS2 Summary – technical issues in software engineering.
Michael Burnside Blog: Software Quality Assurance, Quality Engineering, and Web and Mobile Test.
University of Palestine software engineering department Testing of Software Systems Testing throughout the software life cycle instructor: Tasneem.
Current Trends in Systems Develpment
CPSC 871 John D. McGregor Module 0 Session 1 Introduction.
Describing Methodologies PART II Rapid Application Development* Systems Analysis and Design II.
RUP Implementation and Testing
CPSC 372 John D. McGregor Process Module 1 Session 1.
Capability Maturity Models Software Engineering Institute (supported by DoD) The problems of software development are mainly caused by poor process management.
Rapid software development 1. Topics covered Agile methods Extreme programming Rapid application development Software prototyping 2.
Extreme Programming (XP). Agile Software Development Paradigm Values individuals and interactions over processes and tools. Values working software over.
Software Construction Lecture 18 Software Testing.
An Agile Method for E-Service Composition Author : Pouya Fatehi, Seyyed Mohsen Hashemi Department of Computer Software, Science and Research Branch, Islamic.
Chapter 2 Software processes. Topics covered Software process models Process activities Coping with change.
Software Development Overview CPSC 315 – Programming Studio Spring 2013.
AP-1 4. Agile Processes. AP-2 Agile Processes Focus on creating a working system Different attitude on measuring progress XP Scrum.
Goals for Presentation Explain the basics of software development methodologies Explain basic XP elements Show the structure of an XP project Give a few.
Connecting with Computer Science2 Objectives Learn how software engineering is used to create applications Learn some of the different software engineering.
CPSC 873 John D. McGregor Session 9 Testing Vocabulary.
Software Engineering Jon Walker. What is Software Engineering? Why do we call it Software Engineering? Why not just call it programming or software development?
CPSC 871 John D. McGregor Module 8 Session 1 Testing.
CPSC 871 John D. McGregor Process – an introduction Module 0 Session 3.
Extreme Programming. Extreme Programming (XP) Formulated in 1999 by Kent Beck, Ward Cunningham and Ron Jeffries Agile software development methodology.
CPSC 372 John D. McGregor More EPF Module 2 Session 4.
Agenda: Overview of Agile testing Difference between Agile and traditional Methodology Agile Development Methodologies Extreme Programming Test Driven.
CPSC 372 John D. McGregor Module 6 Session 4 Sonar.
1 Requirements Engineering for Agile Methods Lecture # 41.
CPSC 372 John D. McGregor Module 8 Session 1 Testing.
Software Development. The Software Life Cycle Encompasses all activities from initial analysis until obsolescence Analysis of problem or request Analysis.
SYSE 802 John D. McGregor Module 0 Session 2 Model-based methods.
CSC 355 – Newer Approaches to System Development Life Cycles & Processes, Spring 2017 March 2017 Dr. Dale Parson.
John D. McGregor Session 9 Testing Vocabulary
Software Processes (a)
John D. McGregor Session 9 Testing Vocabulary
Graduation Project Kick-off presentation - SET
Introduction to Software Engineering
روش‌های سريع الانتقال (چابک) توسعه نرم افزار
John D. McGregor Session 9 Testing Vocabulary
Computer Science & Engineering Electrical Engineering
UNIT 5 EMBEDDED SYSTEM DEVELOPMENT
John D. McGregor Module 6 Session 1 More Design
UNIT 5 EMBEDDED SYSTEM DEVELOPMENT
System Development Methods
Presentation transcript:

CPSC 871 John D. McGregor Module 7 Session 2 Agile Software Development

A bit of history Kent Beck introduced Extreme Programming in 1999 This was during the dot com bubble when web was the focus Programming was rapid and, for many developers, it was very lightweight Agile methods were intended for rapid development of prototypes that evolved into final products through constant interaction with customers We spoke about this in an earlier module. This time there is a different, more narrowly focused emphasis.

Agile methods There are several different agile methods – Pair-wise programming –two people share a computer – one programs, one reviews/directs – Test-driven development – the developer of a unit first creates a set of tests and then writes the code that must pass those tests Their idea was to “not do any unnecessary work” – but what they judge as unnecessary and what others judge as unnecessary can be very different.

Caveat To the pointy-headed manager “agile” just has the right feel. To the engineer “agile” is a trade-off disaster waiting to happen. Agile works under certain conditions Beware of the person who tells you any technique works in all cases

Agile processes “Scrum” is one agile method in which the development work is divided into sprints. Each sprint is an iteration over a “chunk” of behavior in the program. It maybe be stated in terms of implementing a certain set of use cases. In Scrum, a stand-up meeting is held every day to check on progress and to plan the next 24 hours. (Like in rugby) Other techniques are used to structure the other development activities. In the last unit we looked at Sonar as a way of getting “continuous” feedback on numerous metrics. Also the main work of the individual developer can be accomplished using test-driven (or test first) techniques.

Test first programming In this agile method the sequence of requirements, design, implementation, and test is replaced by write a test, implement code that will pass the test, run the test to verify. Writing a test is considered creating the requirement. That means the test writer must be a domain knowledgeable person.

Test first programming – 2 The result is a set of tests that the program passes and a set of code that satisfies the tests plus the customer. There are several challenges with this approach: – How to coordinate among multiple test writers? – How to ensure that the product is complete? We will look at this in greater detail in the next Module.

Continuous integration The Eclipse environment has many tools and can connect with other tools to facilitate agile development. Continuous integration servers support a particular approach to product development – “always running software” That is, we begin with a skeleton program that is almost a prototype of the architecture and we elaborate it into the completed product in increments.

Continuous integration - 2 Every time a developer checks-in their module the continuous integration server kicks off a series of automated actions that include building the product, running a battery of tests, and generating the Sonar metrics. We know very quickly if there are problems with the new material and its integration with existing code.

Continuous integration - 3 Hudson is an open source tool that facilitates continuous integration Figure from:

Continuous integration - 4 This approach can work with large or small projects. Progress is always forward with only small steps back to correct errors introduced in the newest code. We are getting quite a load of tools for our developer machine. But also a lot of capability. More in the next module.

Here is what you are going to do Find an agile development method, not mentioned in the notes, in the literature. Compare it to the ones discussed here. Write a brief summary and comparison and submit.