Software Engineering

Similar documents
Classical Software Life Cycle Models

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

Software Life Cycles and Configuration Management

I219 Software Design Methodology

TRADITIONAL VS MODERN SOFTWARE ENGINEERING MODELS: A REVIEW

Software Engineering. Software Processes. Based on Software Engineering, 7 th Edition by Ian Sommerville

Unit 1 Learning Objectives

software studio software development processes Daniel Jackson

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

In this Lecture you will Learn: Development Process. Unified Software Development Process. Best Practice

To introduce software process models To describe three generic process models and when they may be used

International Association of Scientific Innovation and Research (IASIR) (An Association Unifying the Sciences, Engineering, and Applied Research)

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

Hamid Faridani March 2011

CS4507 Advanced Software Engineering

Introduction to Software Engineering: Project Management ( Highlights )

SE464/CS446/ECE452 Software Life-Cycle and Process Models. Instructor: Krzysztof Czarnecki

Singhania University, Jhunjhunu, Rajasthan, India. 2 Department of Information Technology King Abdul Aziz University, Jeddah, Saudi Arabia

SOFTWARE DEVELOPMENT METHODOLOGIES, TRENDS, AND IMPLICATIONS

Part 3 Overview. People and Projects. Where it starts. Project Failure Rates. Part III. Verteilte Web-basierte Systeme.

A Comparison between Five Models of Software Engineering

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

Best-Practice Software Engineering: Software Processes to Support Project Success. Dietmar Winkler

Génie Logiciel et Gestion de Projets. Software Processes Focus on Extreme Programming

Life Cycle Models. V. Paúl Pauca. CSC Fall Department of Computer Science Wake Forest University. Object Oriented Software Engineering

Software processes that are:

Models of Software Development

CSE 435 Software Engineering. Sept 16, 2015

The Software Life Cycle. CSE 308: Software Engineering

COMP 354 Introduction to Software Engineering

Génie Logiciel et Gestion de Projets. Software Processes Focus on Extreme Programming

Software Process and Models

Agile Processes and Methodologies: A Conceptual Study

Lecture 21 March 7, 2013

Web Application Development Process

Chapter 2 Software Processes

Agile and Secure: Can We Be Both?

ASSESSMENT OF SOFTWARE PROCESS MODELS

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

A Contrast and Comparison of Modern Software Process Models

An Efficient Objective Quality Model for Agile Application Development

Abstract. Heavy vs Light Methodologies: Bulimic or Anorexic? Fernando Brito e Abreu FCT/UNL

System development lifecycle waterfall model

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

An Approach for assessing the Quality of Software for small and medium sized firms

The traditional project management uses conventional methods in software project management process.

Development models. 1 Introduction. 2 Analyzing development models. R. Kuiper and E.J. Luit

Software Lifecycles Models

Introduction to Software Engineering: Overview and Methodologies

REVIEW OF AGILE METHODOLOGIES IN SOFTWARE DEVELOPMENT

Christina Wallin ABB Corporate Research Department of Industrial IT Västerås +46 (0)

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

A Review of an MVC Framework based Software Development

Project Management in Software: Origin of Agile

Software Life Cycle. Main issues: Discussion of different life cycle models Maintenance or evolution


A Comparison Between Five Models Of Software Engineering

Software Process. Successful Software Production between Extreme Programming and Rational Unified Process Short Version

Outline. Definitions. Course schedule

How To Understand The Software Process

SWEN - Software Engineering Network Donnerstag 06. Mai. 2010

Extreme Programming, an agile software development process

CHAPTER_3 SOFTWARE ENGINEERING (PROCESS MODELS)

Traditional SDLC Vs Scrum Methodology A Comparative Study

Laboratório de Desenvolvimento de Software

An Iterative and Agile Process Model for Teaching Software Engineering

Lean Configuration Management

Introduction to Software Engineering (ESE : Einführung in SE)

When is Agile the Best Project Management Method? Lana Tylka

Software Development Methodologies

How To Understand The Limitations Of An Agile Software Development

6. Software Lifecycle Models. A software lifecycle model is a standardised format for planning organising, and running a new development project.

Umbrella: A New Component-Based Software Development Model

EPL603 Topics in Software Engineering

Agile Software Engineering Practice to Improve Project Success

The software process. Generic software process models. Waterfall model. Software Development Methods. Bayu Adhi Tama, ST., MTI.

What is a life cycle model?

Plan-Driven Methodologies

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

Introduction to Agile Software Development. EECS 690 Agile Software Development

Agile Development Overview

Moonzoo Kim CS Division of EECS Dept. KAIST

Development Methodologies

Agile So)ware Development

An Assessment between Software Development Life Cycle Models of Software Engineering

Scaling Down Large Projects to Meet the Agile Sweet Spot

應 用 測 試 於 軟 體 發 展 生 命 週 期. Testing In The Software Development Life Cycle

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

6 Contracts and Scenarios in the Software Development Process

Basic Trends of Modern Software Development

CHALLENGES AND WEAKNESSES OF AGILE METHOD IN ENTERPRISE ARCHITECTURE

2. Analysis, Design and Implementation

2. Analysis, Design and Implementation

Software Quality Assurance in Agile, XP, Waterfall and Spiral A Comparative Study

Agile Software Development

CS 487. Week 8. Reference: 1. Software engineering, roger s. pressman. Reading: 1. Ian Sommerville, Chapter 3. Objective:

On the Agile Development of Virtual Reality Systems

Agile Software Development compliant to Safety Standards?

PROCESS OF MOVING FROM WATERFALL TO AGILE PROJECT MANAGEMENT MODEL

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

Transcription:

1 Software Engineering Lecture 2: Software Life Cycles Stefan Hallerstede Århus School of Engineering 25 August 2011

2 Contents Naive Software Development Code & Fix Towards A Software Process Software Process Models Traditional Process Models Alternative Process Models Agile Process Models Agile Development Methods Two Examples Concluding Remarks

3 Contents Naive Software Development Code & Fix Towards A Software Process Software Process Models Traditional Process Models Alternative Process Models Agile Process Models Agile Development Methods Two Examples Concluding Remarks

4 Developing Software Question: How to develop software?

5 Contents Naive Software Development Code & Fix Towards A Software Process Software Process Models Traditional Process Models Alternative Process Models Agile Process Models Agile Development Methods Two Examples Concluding Remarks

6 Developing Software Code & Fix? SOFTWARE

6 Developing Software Code & Fix? code SOFTWARE

6 Developing Software Code & Fix? code fix SOFTWARE

6 Developing Software Code & Fix? code fix SOFTWARE

6 Developing Software Code & Fix? code fix SOFTWARE

7 Contents Naive Software Development Code & Fix Towards A Software Process Software Process Models Traditional Process Models Alternative Process Models Agile Process Models Agile Development Methods Two Examples Concluding Remarks

Software Process From The Internet (Source: xkcd) 8

9 What Do We Expect Of A Software Process? What is the aim of having one? What is a good software process?

9 What Do We Expect Of A Software Process? What is the aim of having one? What is a good software process? What is good software? Correctness Reliability Efficiency Integrity Usability Maintainability Testability Flexibility Portability Reusability Interoperability

10 Contents Naive Software Development Code & Fix Towards A Software Process Software Process Models Traditional Process Models Alternative Process Models Agile Process Models Agile Development Methods Two Examples Concluding Remarks

11 Contents Naive Software Development Code & Fix Towards A Software Process Software Process Models Traditional Process Models Alternative Process Models Agile Process Models Agile Development Methods Two Examples Concluding Remarks

The Waterfall Model Sequential 1 1 Winston W. Royce (1970) Managing the Development of Large Software Systems. IEEE WESCON 12

The Waterfall Model Sequential 1 Royce notes that this process often cannot be followed in practice. 1 Winston W. Royce (1970) Managing the Development of Large Software Systems. IEEE WESCON 12

The Waterfall Model Iterative 1 Instead it is common to iterate between development phases. 1 Winston W. Royce (1970) Managing the Development of Large Software Systems. IEEE WESCON 12

The Waterfall Model V-Model 2 2 Barry W. Boehm (1988) A Spiral Model of Software Development and Enhancement. Computer 21(5), IEEE 13

The Waterfall Model V-Model 2 Requirements Acceptance testing Analysis System testing Architectural design Integration testing Detailed design Unit testing Coding 2 Barry W. Boehm (1988) A Spiral Model of Software Development and Enhancement. Computer 21(5), IEEE 13

The Waterfall Model V-Model 2 Requirements Acceptance testing Analysis System testing Architectural design Integration testing Detailed design Unit testing Coding The V-Model emphasises the need for testing matching the development phases. 2 Barry W. Boehm (1988) A Spiral Model of Software Development and Enhancement. Computer 21(5), IEEE 13

Iterative Development The Spiral Model 3 3 Barry W. Boehm (1988) A Spiral Model of Software Development and Enhancement. Computer 21(5), IEEE 14

Iterative Development The Spiral Model 3 1. Objective setting Definition of objectives for the phase Identification of risks and planning of alternative strategies 2. Risk assessment and reduction Analyse risks, and choose or adapt development model 3. Development and validation 4. Planning Review project Decide whether to continue with spiral Draw up plan for next phase 3 Barry W. Boehm (1988) A Spiral Model of Software Development and Enhancement. Computer 21(5), IEEE 14

Iterative Development The Spiral Model 3 3 Barry W. Boehm (1988) A Spiral Model of Software Development and Enhancement. Computer 21(5), IEEE 14

Iterative Development The Spiral Model 3 The Spiral Model takes into account: risk analysis 3 Barry W. Boehm (1988) A Spiral Model of Software Development and Enhancement. Computer 21(5), IEEE 14

Iterative Development The Spiral Model 3 The Spiral Model takes into account: risk analysis and project management 3 Barry W. Boehm (1988) A Spiral Model of Software Development and Enhancement. Computer 21(5), IEEE 14

15 Contents Naive Software Development Code & Fix Towards A Software Process Software Process Models Traditional Process Models Alternative Process Models Agile Process Models Agile Development Methods Two Examples Concluding Remarks

16 Incremental Delivery System is not delivered as a whole but in small increments Customer is involved in decision on increments Requirements specification Assign requirements to increments Final system Design system architecture Develop system increment Validate increment Integrate increment Validate system

17 Component-Based Software Engineering Requirements specification Component analysis Requirements modification System design with reuse Development and integration System validation Targeted at reuse Process stages adapted to this aim: Component analysis: Search for component matching best the requirements Requirements modification: Modify requirements to reflect available component System design with reuse: Designers incorporate components to be reused, development of new software only if reuse is not possible Development and integration: Missing pieces of software are implemented, and reused components integrated Is this a reasonable approach? When could it be used?

18 Software Design Process Without Reuse Turn requirements specification into an executable system Interleaved model of design from architecture to algorithms Requirements specification Implementation Design activities Architectural design Abstract specification Interface design Component design Data structure design Algorithm design System architecture Software specification Interface architecture Component specification Data structure specification Algorithm specification Design products Can this be used with incremental delivery?

19 Contents Naive Software Development Code & Fix Towards A Software Process Software Process Models Traditional Process Models Alternative Process Models Agile Process Models Agile Development Methods Two Examples Concluding Remarks

Agile Processes Agile Manifesto 4 We are uncovering better ways of developing software by doing it and helping others 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. 4 Kent Beck, et al. (2001) Manifesto for Agile Software Development. 20

21 Agile Processes Unified Process 5 Core Workflows: Organisation along time Organisation along content Business modeling Requirements Analysis and Design Implementation Test Deployment PHASES Inception Elaboration Construction Transition Preliminary Iterations Iter#1 Iter#2 Iter#n Iter#n+1 Iter#n+2 Iter#m Iter#m+1 ITERATIONS Supporting Workflows: Configuration and Change Management, Project Management, Environment 5 Philippe Kruchten (2004) The rational unified process: an introduction, 3rd ediiton. Addison-Wesley.

21 Agile Processes Unified Process 5 Core Workflows: Organisation along time Organisation along content Business modeling Requirements Analysis and Design Implementation Test Deployment PHASES Inception Elaboration Construction Transition Preliminary Iterations Iter#1 Iter#2 Iter#n Iter#n+1 Iter#n+2 Iter#m Iter#m+1 ITERATIONS Supporting Workflows: Configuration and Change Management, Project Management, Environment 5 Philippe Kruchten (2004) The rational unified process: an introduction, 3rd ediiton. Addison-Wesley.

22 Agile Processes Unified Process Six fundamental best practices: 6 1. Develop software iteratively. 6 Ian Sommerville (2007) Software Engineering, 8th edition. Addison-Wesley.

22 Agile Processes Unified Process Six fundamental best practices: 6 1. Develop software iteratively. Plan increments of the system based on customer priorities and develop and deliver the highest priority system features early in the development process. 6 Ian Sommerville (2007) Software Engineering, 8th edition. Addison-Wesley.

22 Agile Processes Unified Process Six fundamental best practices: 6 1. Develop software iteratively. 2. Manage requirements. 6 Ian Sommerville (2007) Software Engineering, 8th edition. Addison-Wesley.

22 Agile Processes Unified Process Six fundamental best practices: 6 1. Develop software iteratively. 2. Manage requirements. Explicitly document the customer s requirements and keep track of changes to these requirements. Analyse the impact of changes to the system before accepting them. 6 Ian Sommerville (2007) Software Engineering, 8th edition. Addison-Wesley.

22 Agile Processes Unified Process Six fundamental best practices: 6 1. Develop software iteratively. 2. Manage requirements. 3. Use component-based architectures. 6 Ian Sommerville (2007) Software Engineering, 8th edition. Addison-Wesley.

22 Agile Processes Unified Process Six fundamental best practices: 6 1. Develop software iteratively. 2. Manage requirements. 3. Use component-based architectures. Structure the system architecture into components and rely on reusable software components. 6 Ian Sommerville (2007) Software Engineering, 8th edition. Addison-Wesley.

22 Agile Processes Unified Process Six fundamental best practices: 6 1. Develop software iteratively. 2. Manage requirements. 3. Use component-based architectures. 4. Visually model software. 6 Ian Sommerville (2007) Software Engineering, 8th edition. Addison-Wesley.

Agile Processes Unified Process Six fundamental best practices: 6 1. Develop software iteratively. 2. Manage requirements. 3. Use component-based architectures. 4. Visually model software. Use graphical UML models to present static and dynamic views of the software. 6 Ian Sommerville (2007) Software Engineering, 8th edition. Addison-Wesley. 22

22 Agile Processes Unified Process Six fundamental best practices: 6 1. Develop software iteratively. 2. Manage requirements. 3. Use component-based architectures. 4. Visually model software. 5. Verify software quality. 6 Ian Sommerville (2007) Software Engineering, 8th edition. Addison-Wesley.

22 Agile Processes Unified Process Six fundamental best practices: 6 1. Develop software iteratively. 2. Manage requirements. 3. Use component-based architectures. 4. Visually model software. 5. Verify software quality. Ensure that the software meets the organisational quality standards. 6 Ian Sommerville (2007) Software Engineering, 8th edition. Addison-Wesley.

22 Agile Processes Unified Process Six fundamental best practices: 6 1. Develop software iteratively. 2. Manage requirements. 3. Use component-based architectures. 4. Visually model software. 5. Verify software quality. 6. Control changes to software. 6 Ian Sommerville (2007) Software Engineering, 8th edition. Addison-Wesley.

22 Agile Processes Unified Process Six fundamental best practices: 6 1. Develop software iteratively. 2. Manage requirements. 3. Use component-based architectures. 4. Visually model software. 5. Verify software quality. 6. Control changes to software. Manage changes to the software using a change management system and configuration management procedures and tools. 6 Ian Sommerville (2007) Software Engineering, 8th edition. Addison-Wesley.

22 Agile Processes Unified Process Six fundamental best practices: 6 1. Develop software iteratively. 2. Manage requirements. 3. Use component-based architectures. 4. Visually model software. 5. Verify software quality. 6. Control changes to software. 6 Ian Sommerville (2007) Software Engineering, 8th edition. Addison-Wesley.

23 Contents Naive Software Development Code & Fix Towards A Software Process Software Process Models Traditional Process Models Alternative Process Models Agile Process Models Agile Development Methods Two Examples Concluding Remarks

24 Agile Processes Two Popular Examples Extreme Programming: Leverage developer creativity and minimise administrative overhead keywords: small releases, simple design, write tests first, refactoring, pair programming, continuous integration, coding standards Scrum: Self-organising autonomous teams implement product increments in parallel keywords: sprint, product backlog, prioritised requirements

25 Agile Processes Extreme Programming 7 7 Kent Beck (2000) Extreme Programming Explained. Embrace Change. Addison Wesley

Agile Processes Scrum 8 8 Ken Schwaber, Mike Beedle (2002) Agile software development with Scrum. Prentice Hall. 26

27 Contents Naive Software Development Code & Fix Towards A Software Process Software Process Models Traditional Process Models Alternative Process Models Agile Process Models Agile Development Methods Two Examples Concluding Remarks

Summing Up Advantages And Disadvantages Of Different Software Processes 9 Waterfall vs Spiral vs Agile 9 Eric J. Braude, Michael E. Bernstein (2011) Software Engineering Modern Approaches. Wiley. 28

29 The Waterfall Process Advantages Simple and easy to use Easy to allocate resources Works well for smaller projects or when requirements are well understood Disadvantages Requirements must be known upfront Late feedback by users Lack of parallelism Inefficient use of resources

30 The Spiral Process Advantages Risks are managed early and throughout the process Software evolves as the project progresses Planning is built into the process Disadvantages Complicated to use May be overkill for small projects

31 The Agile Process Advantages The project always has demonstrable results Developers tend to be more motivated Customers are able to provide better requirements because they can see the evolving product Disadvantages Problematical for large application Problematical for large teams Documentation output is questionable