Software Development Tools Lecture 2

Slides:



Advertisements
Similar presentations
Extreme Programming Alexander Kanavin Lappeenranta University of Technology.
Advertisements

Software Life Cycle Requirements analysis System design Program design Program implementation (coding) Unit testing Integration testing System testing.
Chapter 2 Modeling the Process and Life Cycle Shari L. Pfleeger
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 17 Slide 1 Rapid software development.
Alternate Software Development Methodologies
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 development By Sam Chamberlain. First a bit of history..
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.
Xtreme Programming. Software Life Cycle The activities that take place between the time software program is first conceived and the time it is finally.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 17 Slide 1 Extreme Programming.
Chapter 3 – Agile Software Development 1Chapter 3 Agile software development.
Dr. Tom WayCSC Software Processes CSC 4700 Software Engineering.
IS2210: Systems Analysis and Systems Design and Change Twitter:
Extreme Programming(XP)
Agile and XP Development Dan Fleck 2008 Dan Fleck 2008.
CS 360 Lecture 3.  The software process is a structured set of activities required to develop a software system.  Fundamental Assumption:  Good software.
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.
1 Software Process Models-ii Presented By; Mehwish Shafiq.
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.
XP – Extreme Programming
K.Ingram 1 Sept 2007 Agile Software Development. K.Ingram 2 Sept 2007 Contents Agile Software Development: 1.What is it? 2.Agile’s Values, Principles,
Chapter 2 Software processes. Topics covered Software process models Process activities Coping with change.
AP-1 4. Agile Processes. AP-2 Agile Processes Focus on creating a working system Different attitude on measuring progress XP Scrum.
WATERFALL DEVELOPMENT MODEL. Waterfall model is LINEAR development lifecycle. This means each phase must be completed before moving onto the next!!! WHAT.
Requirements Engineering Requirements Engineering in Agile Methods Lecture-28.
Extreme Programming. Extreme Programming (XP) Formulated in 1999 by Kent Beck, Ward Cunningham and Ron Jeffries Agile software development methodology.
Agenda: Overview of Agile testing Difference between Agile and traditional Methodology Agile Development Methodologies Extreme Programming Test Driven.
Software Development Process CS 360 Lecture 3. Software Process The software process is a structured set of activities required to develop a software.
25-Feb-16 Extreme Programming. 2 Software engineering methodologies A methodology is a formalized process or set of practices for creating software An.
CS223: Software Engineering Lecture 18: The XP. Recap Introduction to Agile Methodology Customer centric approach Issues of Agile methodology Where to.
Testing under the Agile Method CSCI 521 Software Project Management based on the book Testing Extreme Programming by Lisa Crispin and Tip House.
Software Development. The Software Life Cycle Encompasses all activities from initial analysis until obsolescence Analysis of problem or request Analysis.
Coming up: What is Agile? XP Development Dan Fleck 2010 Dan Fleck 2010.
Project Management Software development models & methodologies
Chapter 3 Agile software development 1 Chapter 3 – Agile Software Development.
AGILE METHODS Curtis Cook CS 569 Spring 2003.
Embedded Systems Software Engineering
CS223: Software Engineering
Agile Methods SENG 301.
Software Development.
Methodologies and Algorithms
Software Engineering Management
CSC 355 – Newer Approaches to System Development Life Cycles & Processes, Spring 2017 March 2017 Dr. Dale Parson.
Appendix B Agile Methodologies
Software & Software Engineering Pertemuan-4 Dosen :Kundang K Juman
Extreme Programming.
Methodologies By Akinola Soyinka.
Information Technology Project Management – Fifth Edition
Extreme Programming.
Rapid software development
Waterfall and Agile Quality Techniques
روش‌های سريع الانتقال (چابک) توسعه نرم افزار
What do you need to know about XP?
Software Development Tools Lecture 2
Chapter 2 Modeling the Process and Life Cycle Shari L. Pfleeger Joanne M. Atlee 4th Edition.
Lecture 09:Software Testing
Agile and XP Development
Agile and XP Development
Chapter 3 – Agile Software Development
Agile and XP Development
Practical Software Engineering
CHAPTER 10 METHODOLOGIES FOR CUSTOM SOFTWARE DEVELOPMENT
Coming up: What is Agile?
Refactoring.
Appendix B Agile Methodologies
Extreme Programming.
Agile software development
Presentation transcript:

Software Development Tools Lecture 2 COMP220/COMP285 Sebastian Coope Programming Methodologies

Topics Two kinds of programming methodologies traditional agile We will concentrate on eXtreme Programming (XP) methodology example of an agile methodology of most interest to us

Software Development Methodologies Software Development Methodology is a collection of procedures, techniques, principles and tools that help developers to build computer system

Software development methodologies There are two main approaches to development methodologies: Traditional monumental or waterfall methodologies Agile or lightweight methodologies Example XP and SCRUM

Traditional methodologies Rigid: first a complete functional specification, then software development process with several distinct waterfall-like phases Problems: difficult to adapt to changing customer requirements design errors are hard to detect and expensive to correct

Waterfall Complete specification Design Implementation Testing Maintenance

Waterfall questions How do we know the specification is correct? Without a complete product Perhaps use a prototype What if serious performance issues are discovered at the testing stage? Perhaps hard to re-engineer the product

Waterfall issues What is customer doesn’t like the end product What if requirements start to change? What if project runs out of time/money? How is risk managed? How is QA managed (at the end !!)

Testing issues and waterfall If project is due to compete at 14 weeks What if implementation overruns by 2 weeks and pressure to complete on time? Testing will start at week 12! Specification Design Implementation Testing Release Week 2 Week 4 Week 14 Week 10

Agile methodologies Agility in a software development means adaptability ability to respond quickly to change in environment eliminate surprises from changed requirements Risk reduction Less chance of validation errors

Agile methodologies emphasizes an iterative process: build some well-defined set of features repeat with another set of features, etc. value customer involvement (quick feedback) code-centric, i.e. recognize the value in documentation and modelling but realize that it is not as important as the software itself

Self documenting code Using long meaningful names Comments accountBalance accountBalanceInPence Comments What to change to change code behaviour static final int RETRY_LIMIT=3; // Change this value if you want to change the maximum number of times an incorrect PIN can be entered TODO Any areas that can be improved or require completion TODO … check for stolen cards and credit risk

Testing in agile methodologies Software development is - a mix of art and engineering. The only way to validate software is through testing All agile methodologies emphasize testing Testing can be Functional (specific yes or no tests based on functional specification) Non-functional (stress testing, usability, security testing etc.)

SCRUM Agile approach Each iteration of software development called a sprint Each sprint delivers working code or partial product Each phase requires a set of tests Testing is integrated

SCRUM Requirements analysis Plan1 Develop1 Test1 User review Plan2 ITERATION 1 Plan1 Develop1 Test1 User review ITERATION 2 Plan2 Develop2 Test 1&2 User review ITERATION 3 Plan3 Develop3 Test 1&2&3 User review After each iteration requirements are reviewed. System is validated as you go along

SCRUM phases Specification at start Then each development phase can be Specification , Design, Coding Each iteration tests New functions All old functions (regressive) Testing is extensive, must not be burdensome

Testing-driven development Put testing first in the development process Before implementing a piece of code such as a Java method, start writing down a test which this method should pass. Test is like a goal which you want to achieve First state a goal, then do steps to that goal Goals may be quite small, intermediate, or final Test-driven style of programming!

Why write test first Test is based on the specification and not the code, not assumptions based on source code If testing is done second, testing might be skipped Makes the developer analyse the requirements Requirements might be wrong or ambiguous Produces more testable code Keeps the code simpler/shorter (only target is to pass the test) Stops the code being over-engineered But note simple goal .. conflicts with non-functional code requirements, code quality (poor quality code might pass the test!)

eXtreme Programming Most general features of XP: one of the most unique and controversial approaches agile or lightweight methodology human-centric development philosophy

Overview of the XP methodology Continuous testing validates that the software works and meets the customer's requirements Overview of the XP methodology focuses on coding as the main task regards continuous (*) and automated testing as central to the activity of software development refactoring (*) is a core XP practice continuous integration (*) one of XP’s radical ideas is that design should evolve and grow through the project Refactoring: changing existing code for simplicity, clarity and/or feature addition Continuous integration means building copy of the system so far several times per day

Some Essential of 12 Practices of XP Testing key practice to XP how will you know if a feature works if you do not test? how will you know if a feature still works after you re-factor, unless you re-test? should be automated so you can have the confidence and courage to change the code and re-factor it without breaking the system! The test should be automated and you change the code and refactor it without breaking the system Code can be re-designed, refactored, or thrown out and completely redone

Some Essential of 12 Practices of XP Testing (cont.) the opposite of waterfall development keeps code fluid JUnit and its “friends” (versions or analogues of JUnit) will help to automate testing everything that can potentially break must have a test

Some Essential of 12 Practices of XP Continuous integration a crucial concept means building and testing a complete copy of the system several times per day, including all the latest changes why wait until the end of a project to see if all the pieces of the system will work together? the longer integration bugs survive, the harder they are to exterminate Reduce problem linked with team development-fixing integration bugs

Some Essential of 12 Practices of XP Continuous integration (cont.) benefits from using good software tools Ant (integrated with JUnit) can help to automate the build, distribution, and deploy processes see the paper by Fowler (and Foemmel ) in www.martinfowler.com/articles/continuous Integration.html

Some Essential of 12 Practices of XP Refactoring a technique for restructuring the internal structure of code without changing its external behaviour or with adding new features enables developers to add features while keeping the code simple each refactoring transformation does little, so, it is less likely to go wrong, but a sequence of transformations can produce a significant restructuring the design is improved through the refactoring

Some Essential of 12 Practices of XP Refactoring (cont.) relies on testing which validates that the code is still functioning testing makes refactoring possible automated unit-level tests will give you the courage to re-factor and keep the code simple and expressive

Further Practices of XP Planning game (to discuss scope of the current iteration, priority of features , etc.) 40-hour work week Small releases (feedback, testing, cont. integration) Simple design (keeping also the code simple ) Pair programming (improves communication and mutual understanding among team members, learning ) Collective ownership (no crucial dependence on one developer) On-Site customer (quick feedback, etc.) Metaphor (common language for developers and customer) Coding standards (understand one another’s code) (See more detail in the XP Book)

Pair programming Driver Observer Writes the code Observer Reviews the code, line by line Make suggestions Programmers switch role on a regular basis Please use pair programming in lab exercises for the module

XP and SCRUM Can and do work well together XP SCRUM More about programming/testing practise and small scale organisation.. TDD, re-factoring, continuous integration SCRUM Project organisation and development life-cycle

Some other principles KISS (General engineering) YAGNI (XP) Keep it Simple Stupid YAGNI (XP) You ain’t going to need it So don’t Add functions not in spec Add too much future proofing

Problems with XP/Agile YAGNI/KISS Might discourages code flexibility Image today we have English as locale next year we want Mandarin, Spanish and Mexican Answer .. Put flexibility into requirements!, make sure non-functional requirements in the spec. Might discourage re-use Hard to develop a complete schedule Too elastic? Timebox?

Summary (XP) XP is lightweight methodology that focused on coding as a main task. XP encourages full integration daily (Ant) XP is a test-driven methodology (JUnit, etc.)

XP - Conclusion You can adopt in your practice the whole or only a part of XP methodology (considered here only fragmentary)… think of Group Software Project Anyway, you will probably benefit from the related software development tools and techniques we will consider in the rest of this course Time-to time we will need to return to some of these methodological questions

Our aims in this course To explore XP methodology by providing an insight into the tools for building, testing, and deploying code - by demonstrating how to use all these tools together