RUP. Development Process. Iterative Process (spiral) Waterfall Development Process. Agile Development Process. Well-known development processes



Similar documents
Java course - IAG0040. Unit testing & Agile Software Development

Software Development Process and Activities. CS 490MT/5555, Fall 2015, Yongjie Zheng

Making the Most of the Software Development Process

Contents. 3 Agile Modelling Introduction Modelling Misconceptions 31

CMM vs. CMMI: From Conventional to Modern Software Management

Basic Unified Process: A Process for Small and Agile Projects

CMMI - The AGILE Way By Hitesh Sanghavi

Using Simulation to teach project management skills. Dr. Alain April, ÉTS Montréal

Quality Assurance Software Development Processes

CMMI and IBM Rational Unified Process

Software Development Life Cycle (SDLC)

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

What CMMI Cannot Give You: Good Software

Rapid software development. Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 1

Java. Java. e=mc 2. composition

Xtreme RUP. Ne t BJECTIVES. Lightening Up the Rational Unified Process. 2/9/2001 Copyright 2001 Net Objectives 1. Agenda

An Iterative and Agile Process Model for Teaching Software Engineering

SOFTWARE PROCESS MODELS

Safety-Critical Systems: Processes, Standards and Certification

Software Development Process Models and their Impacts on Requirements Engineering Organizational Requirements Engineering

IT3205: Fundamentals of Software Engineering (Compulsory)

Developing CMMI in IT Projects with Considering other Development Models

A Capability Maturity Model (CMM)

Plan-Driven Methodologies

IT3203 Fundamentals of Software Engineering (Compulsory) BIT 2 nd YEAR SEMESTER 3

Agile So)ware Development

Web Application Development Process

Classical Software Life Cycle Models

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

Rapid Software Development

SOFTWARE ENGINEERING IT 0301 Semester V B.Nithya,G.Lakshmi Priya Asst Professor SRM University, Kattankulathur

V. Phani Krishna et al, / (IJCSIT) International Journal of Computer Science and Information Technologies, Vol. 2 (6), 2011,

Advanced Test-Driven Development

Software Process and Models

Agile and Secure: OWASP AppSec Seattle Oct The OWASP Foundation

Agile and Secure Can We Be Both? Chicago OWASP. June 20 th, 2007

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

Implementing Models and Standards for Software Development Benefits and Risks

Basic Trends of Modern Software Development

SOFTWARE ENGINEERING CSC 423 B - MWF EXTREME PROGRAMMING

Unit Testing & JUnit


A complete software development process of a general report publication service implemented using Web Services

AGILE CMMI from SMEs perspective

+ Introduction to JUnit. IT323 Software Engineering II By: Mashael Al-Duwais

The following is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into

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

TOGAF usage in outsourcing of software development

TRADITIONAL VS MODERN SOFTWARE ENGINEERING MODELS: A REVIEW

Introduction to Agile Software Development

Software Life Cycles and Configuration Management

Agile and Secure: Can We Be Both?

Software Engineering/Courses Description Introduction to Software Engineering Credit Hours: 3 Prerequisite: (Computer Programming 2).

CS 389 Software Engineering. Lecture 2 Chapter 2 Software Processes. Adapted from: Chap 1. Sommerville 9 th ed. Chap 1. Pressman 6 th ed.

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

Software Engineering for Software-Intensive Systems: III The Development Life Cycle

Surveying and evaluating tools for managing processes for software intensive systems

Benefits of Test Automation for Agile Testing

Corso di Laurea Magistrale in Informatica, Università di Padova Tecnologie open-source, Anno accademico 2010/2011. Development Processes 1 / 51

Chapter 9 Software Evolution

Development Methodologies. Types of Methodologies. Example Methodologies. Dr. James A. Bednar. Dr. David Robertson

Karunya University Dept. of Information Technology

Decomposition into Parts. Software Engineering, Lecture 4. Data and Function Cohesion. Allocation of Functions and Data. Component Interfaces

Software Development Life Cycle Models - Process Models. Week 2, Session 1

Software Development Process

6 Contracts and Scenarios in the Software Development Process

Agile Methodologies and Its Processes

Agile Testing (October 2011) Page 1. Learning Objectives for Agile Testing

Advanced Software Engineering. Software Development Processes

Leveraging RUP, OpenUP, and the PMBOK. Arthur English, GreenLine Systems

Exercises Engenharia de Software (cod & 6633 )

Agile Techniques for Object Databases

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

What is a life cycle model?

Agile Development Overview

Development Methodologies

Applied Software Project Management

E-vote 2011 Version: 1.0 Testing and Approval Date: 26/10/2009. E-vote SSA-U Appendix 5 Testing and Approval Project: E-vote 2011

Agile Processes and Methodologies: A Conceptual Study

Agile Software Development

CS4507 Advanced Software Engineering

In the IEEE Standard Glossary of Software Engineering Terminology the Software Life Cycle is:

1. Software Process Models (Sommerville Chapters 4, 17, 19, 12.4)

JOB DESCRIPTION APPLICATION LEAD

Chapter 8 Software Testing

Web Application Development Processes: Requirements, Demands and Challenges

The Advantages of ISO 9001 Certification

Introduction. Introduction. Software Engineering. Software Engineering. Software Process. Department of Computer Science 1

The Software Process. Software Process Activities. Functional Specification

Enabling Continuous Delivery by Leveraging the Deployment Pipeline

How Rational Configuration and Change Management Products Support the Software Engineering Institute's Software Capability Maturity Model

QUALITY ASSURANCE IN EXTREME PROGRAMMING Plamen Balkanski

The most suitable system methodology for the proposed system is drawn out.

Introduction to Automated Testing

Agile Development with C#

Outline. III The Development Life Cycle. Characteristics of Software Development Methodologies. The Prototyping Process

Abstract. 1 Introduction

Introduction to OpenUP (Open Unified Process)

Introduction to Agile Software Development Process. Software Development Life Cycles

Java Unit testing with JUnit 4.x in Eclipse

Transcription:

Well-known development processes Development Process RUP (Rational Unified Process) (Capability Maturity Model Integration) Agile / XP (extreme Programming) Waterfall Development Process Iterative Process (spiral) Implementation Test Analysis Design Maintenance Development Implementation Testing? Civil engineering: One first draws plans and only then are they realized! Why wouldn t it work with software? Maintenance Design Analysis Superficial analysis, design, implementation and test of the whole application, then better analysis, design, implementation and test, and improvement at each revolution? or? Thorough analysis, design, implementation and test of a part, and then analysis, design, implementation and test of a new part at each revolution? Agile Development Process Most important characteristics: No long term planning. Deliver working software frequently RUP (from a couple of weeks to a couple of months, with a preference to the shorter timescale). 1

RUP: Rational Unified Process For the project manager What is important in a project What leads to failures Working team composition Management tools Very little on how to do things! RUP: Warning What is Rational's RUP? It is a methodology. But to sell it, Rational supplies a bunch of html pages (about 16000 pages). There are some documentation templates also. A warning though, if you are thinking to get into a good methodology in reasonable time, then you need to rethink, RUP will take a looooooooooong time to grasp, implement and finally there is a 50% risk that you will never reap the benefits. http://www.theserverside.com RUP Available on a CD-Rom that must be customized. Accompanied by : P. Kruchten, The Rational Unified Process: an Introduction, RUP: 1 - Iterations Characteristics and best practices: 1. Iterative process 2. Requirement management 3. Architecture and use of components 4. Modeling and the UML 5. Quality of development process and product 6. Change management (tools) RUP 2 - Requirement management Requirements are stakeholders needs, goals and wishes. (stakeholders - parties prenantes = contractor, customers, users, employees) (FURPS: functionality, usability, reliability, performance and supportability) URSP = non functional requirements RUP 3 - Architecture Components: A nontrivial piece of software, a module, a package, a subsystem, a layer, major classes CORBA (remote objects), ActiveX, JavaBeans, a Web page, database table Mechanisms such as persistency and communication tool, patterns (MVC, ORB object request broker...) 2

RUP 4 - UML and modeling RUP: 4 - UML and modeling A scenario or use case (the term use case is more general) Open Account <<include>> Withdraw Money <<include>> Transfer Money Use case diagram for an ATM (automate de banque) Check Balance 1. A client inserts a card into the ATM. 2. The system reads and validates the card information. 3. The system prompts for a PIN. 4. The client enters the PIN. client, system = actors 5. The system validates the PIN 6. The client selects Withdraw Money 7. The client enters the requested amount. 8. The system requests the amount from the client s account. 9. The system asks the client to remove the card. 10.The system dispenses the requested amount from the banknote buffer (only done if the requested amount has been granted in 8). RUP: 4 - Collaboration diagram P. Kruchten, The Rational Unified Process An Introduction, Addison-Wesley RUP: 5 - Quality Quality: Reliability (no bug) Functionality (does what it is meant for) Performance Tests: Unit tests Integration tests (interactions of units) System test (complete application) Acceptance test (same, but performed by the buyer) Regression tests (repetition of previous tests to assure that the new features have not introduced bugs in the former part) RUP: 6 - Change management ClearQuest Tool for change request management ClearCase Tool for configuration management 3

CMM - Capability Maturity Model (developed by the Software Engineering Institute of CMU) Capability Maturity Model Integration (upgrade of CMM) http://ltiwww.epfl.ch/~petitp/genielogiciel/ctomfeb02.pdf (article by a RUP vendor, excerpts on the next slides) Level 1 (initial) Represents a process maturity characterized by unpredictable results. Ad hoc approaches, methods, notations, tools, and reactive management translate into a process dependent predominantly on the skills of the team to succeed. Level 2 (managed) Represents a process maturity characterized by repeatable project performance. The organization uses foundation disciplines for requirements management; project planning; project monitoring and control; supplier agreement management; product and process quality assurance; configuration management and measurement/analysis. Level 3 (defined) Represents a process maturity characterized by improving project performance within an organization. Consistent, cross-project disciplines for Level 2 kpas (key process areas) are emphasized to establish organization-level activities and practices. Additional organizational process areas include: Requirements development, technical solution, product integration, verification, validation, risk management, organizational training, organizational process focus, decision analysis and resolution, organizational process definition, integrated project management What are risks? If your customers need a new system by a specific date the risk is high. If that system is a new challenge for your software group the risk is even greater. If that system is a new challenge to the entire software industry the risk is still greater even. Unsatisfied employees also participate in the risk. Level 4 (quantitatively managed) Represents a process maturity characterized by improving organizational performance. Historical results for Level 3 projects can be exploited to make trade offs, with predictable results, among competing dimensions of business performance (cost, quality, timeliness). Additional Level 4 process areas include: Organizational process performance: setting norms and benchmarks for process performance. Quantitative project management: executing projects based on statistical quality-control methods. 4

Level 5 (optimized) Represents a process maturity characterized by rapidly reconfigurable organizational performance as well as quantitative, continuous process improvement. Additional Level 5 process areas include: Causal analysis and resolution: proactive fault avoidance and best practice reinforcement. Organizational innovation and deployment: establishing a learning organization that organically adapts and improves. (few companies arrive at that level) Agile Development Processes Agile Development Process http://agilemanifesto.org http://martinfowler.com http://www.ambysoft.com/ Most important characteristics: No long term planning. Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale. Complaint and excuse of the programmer: the problem with this project is that the requirements are always changing Actually it is always and will always be the case, we must thus do with it! (http://www.extremeprogramming.org) Planning Designing Coding Testing of a slice 2-6 weeks No global up front planning Slices (meaningful slices) defined with the customer Created quickly (2-6 weeks) Accepted by the customer Early feedback and impact on the requirements Pair programming!! 5

Planning User stories are written. Release planning creates the schedule. Make frequent small releases. The project velocity is measured. The project is divided into iterations. Iteration planning starts each iteration. Move people around. A stand-up meeting starts each day. Fix XP when it breaks. Designing Simplicity Choose a system metaphor. Use CRC 1 cards for design sessions. Create spike solutions (for difficult problems) to reduce risk. No functionality is added early. Refactor whenever and wherever possible. 1 Class-Responsibility-Collaboration Coding The customer is always available. Code must be written to agreed standards. Code the unit test first. All production code is pair programmed. Only one pair integrates code at a time (CVS). Integrate often. Use collective code ownership. Leave optimization till last. No overtime. Testing All code must have unit tests. All code must pass all unit tests before it can be released. When a bug is found tests are created. Acceptance tests are run often and the score is published. Documentation is a planned task and the customer pays for it (some documentation must be integrated in the source code) Teams are from 2 to 12 persons A CVS (concurrent versioning system) is of course mandatory http://www.extremeprogramming.org 6

: Test Driven Development Write a test before any real code writing On Eclipse JUnit 1.3.8: Java 1.4 JUnit 4: Java 5.0 with annotations : Test Driven Development Documentation Eclipse: Help > Help Contents > Java Development User Guide > Getting Started > Basic Tutorial > Writing and running JUnit tests (1.3.8) Help > Help Contents > Java Development User Guide > What s new > JUnit Toolings (4) (http://www.junit.org) JUnit 4.0 in 10 minutes Create a Java project as usual Project > Build Path > Add Libraries > JUnit 4 Right-click the class that will be under test (possibly with an empty method) > New > JUnit Test Case (creates a case of the version entered into the build path) Define a package that is going to contain the tests Edit the test class: Create an instantiation of the Class under test in the @BeforeClass method (once for all methods) or in the @Before method (once for every method) Put one test (CTRL-space) per test method. If you put several tests, they will not be identified separately when there is an error. The message in an assertion is displayed if there is an error It is possible to check the kind of Exception returned by the method under test (see doc) package unittests; import static org.junit.*; public class ComputationTest1 { static example.computation computation = null; /** * This method is executed only once before all tests * Here, it creates an environment to test the modules */ @BeforeClass public static void setup() throws Exception { computation = new example.computation(); computation.setresult(0); 7

package unittests; import static org.junit.assert.*; import org.junit.after; import org.junit.before; import org.junit.test; import org.junit.beforeclass; public class ComputationTest1 { static example.computation computation = null; /** * The following method is repeated before every test */ @Before public void setuprepeated() throws Exception { computation = new example.computation(); computation.setresult(0);...... @After public void teardown() throws Exception { @Test public void testcomputation() { @Test public void testadd1() { computation.add(7); // To show an error in a test, the next check is incorrect! asserttrue("error 1 of computation", computation.getresult()==6); @Test public void testadd2() { computation.add(-12); asserttrue("error 2 of computation", computation.getresult()==-5); : running the tests Select some test classes or the test package Right click the selection > Run As > JUnit Test The result is displayed in the view JUnit (same window as the Package Explorer) Exercice Develop a class with a method that counts the lines that are not empty nor just contain comments, creating tests for each new code increment. As soon as you have a idea to start the problem, create a test, implement this first part and test it. For each new increment, do the same. Don t think too much beforehand, just try and test, but keep all tests and improve/refactor your code Use pair programming /***** * This is a test program with 5 lines of code //*****//***/// Slightly pathological comment ending... public class Hello { public static void main(string [] args) { // comment // Say hello System./*wait*/out./*for*/println/*it*/( Hello/* ); 8