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



Similar documents
CHAPTER 1 Introduction

CS4507 Advanced Software Engineering

Introduction to Software Engineering. 9. Project Management

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

Software Engineering

Unit 1 Learning Objectives

2. Analysis, Design and Implementation

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

CHAPTER_3 SOFTWARE ENGINEERING (PROCESS 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.

Classical Software Life Cycle Models

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

CSCI-485: Software Design

Software Development Process

Introduction to Software Engineering. 8. Software Quality

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

Process Methodology. Wegmans Deli Kiosk. for. Version 1.0. Prepared by DELI-cious Developers. Rochester Institute of Technology

2. Analysis, Design and Implementation

SOFTWARE PROCESS MODELS

Advanced Software Engineering. Software Development Processes

Software Lifecycles Models

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

Lecture 3 Software Development Processes

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

What is a life cycle model?

A. Waterfall Model - Requirement Analysis. System & Software Design. Implementation & Unit Testing. Integration & System Testing.

Title: Topic 3 Software process models (Topic03 Slide 1).

Peter Mileff PhD SOFTWARE ENGINEERING. The Basics of Software Engineering. University of Miskolc Department of Information Technology

Lifecycle Models: Waterfall / Spiral / EVO

How To Understand The Software Process

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

I219 Software Design Methodology

COMP 354 Introduction to Software Engineering

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

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

IT3205: Fundamentals of Software Engineering (Compulsory)

Development Methodologies

A Rapid Development Process with UML

Software Processes. The software process. Generic software process models. Waterfall model. Waterfall model phases

Unit I. Introduction

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

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

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

Software Process and Models

General Problem Solving Model. Software Development Methodology. Chapter 2A

Software Engineering and Scientific Computing

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

ISSUES OF STRUCTURED VS. OBJECT-ORIENTED METHODOLOGY OF SYSTEMS ANALYSIS AND DESIGN

Software Development Methodologies

Test Cases Design for Software Database Provisioning Development

Lecture 21 March 7, 2013

Laboratório de Desenvolvimento de Software

Small Group Software Development: A Case Study

"Bezpieczny Projekt"

ASSESSMENT OF SOFTWARE PROCESS MODELS

Software Design Models, Tools & Processes *

Software Evolution as the Key to Productivity

Karunya University Dept. of Information Technology

System development lifecycle waterfall model

Software Development Process Selection Approaches

Software Process Models. Xin Feng

3C05: Unified Software Development Process

Weighted Total Mark. Weighted Exam Mark

10/4/2013. Sharif University of Technology. Session # 3. Contents. Systems Analysis and Design

When is Agile the Best Project Management Method? Lana Tylka

Rapid Development & Software Project Survival Guide Steve McConnell Dave Root (Developed with Mel Rosso-Llopart)

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

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

SRM UNIVERSITY FACULTY OF ENGINEERING AND TECHNOLOGY

Comparative Analysis of Different Agile Methodologies

CHAPTER. Software Process Models

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

Agile Projects 7. Agile Project Management 21

Software Engineering. Objectives. Designing, building and maintaining large software systems

IES - Introduction to Software Engineering

Software Evolution as the Key to Productivity

ICAgile Learning Roadmap Agile Testing Track

How To Model Software Development Life Cycle Models

Software Engineering. What is a system?

Software Development Life Cycle (SDLC)

Software Life Cycles and Configuration Management

Information systems modelling UML and service description languages

Agile and Secure: Can We Be Both?

Chap 1. Introduction to Software Architecture

Software Engineering and Scientific Computing

Introduction to Software Project Management. CITS3220 Software Requirements & Project Management

IV. Software Lifecycles

A Comparison between Five Models of Software Engineering

A Tool to Support Knowledge Based Software Maintenance: The Software Service Bay

INTERNATIONAL JOURNAL OF ADVANCES IN COMPUTING AND INFORMATION TECHNOLOGY An International online open access peer reviewed journal

XP and TDD. Extreme Programming and Test Driven Development. Bertrand Meyer, Manuel Oriol Andreas Leitner. Chair of Software Engineering ETH Zurich

Software Life Cycle Processes

THE DEVELOPMENT OF A WEB BASED MULTIMEDIA INFORMATION SYSTEM FOR BUILDING APPRAISAL

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

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

Agile software development

TRADITIONAL VS MODERN SOFTWARE ENGINEERING MODELS: A REVIEW

Outline. Definitions. Course schedule

Agile Techniques for Object Databases

Transcription:

Introduction to Software Engineering (ESE : Einführung in SE) Prof. O. Nierstrasz Selected material courtesy of Prof. Serge Demeyer, U. Antwerp

ESE Introduction Lecturers Assistants Lectures Exercises WWW Prof. Oscar Nierstrasz Andrea Caracciolo Mario Kaufmann, Joel Niklaus Engehaldenstrasse 8, 001, Wednesdays @ 14h15-16h00 Engehaldenstrasse 8, 001 Wednesdays @ 16h00-17h00 scg.unibe.ch/teaching/ese 2

Roadmap > Course Overview > What is Software Engineering? > The Iterative Development Lifecycle > Software Development Activities > Methods and Methodologies 3

Roadmap > Course Overview > What is Software Engineering? > The Iterative Development Lifecycle > Software Development Activities > Methods and Methodologies 4

Principle Texts > Software Engineering. Ian Sommerville. Addison-Wesley Pub Co; ISBN: 020139815X, 7th edition, 2004 > Software Engineering: A Practioner's Approach. Roger S. Pressman. McGraw Hill Text; ISBN: 0072496681; 5th edition, 2001 > Using UML: Software Engineering with Objects and Components. Perdita Stevens and Rob J. Pooley. Addison-Wesley Pub Co; ISBN: 0201648601; 1st edition, 1999 > Designing Object-Oriented Software. Rebecca Wirfs- Brock and Brian Wilkerson and Lauren Wiener. Prentice Hall PTR; ISBN: 0136298257; 1990 5

Recommended Literature > extreme Programming Explained: Embrace Change. Kent Beck. Addison-Wesley Pub Co; ISBN: 0201616416; 1st edition (October 5, 1999) > The CRC Card Book. David Bellin and Susan Suchman Simone. Addison-Wesley Pub Co; ISBN: 0201895358; 1st edition (June 4, 1997) > The Mythical Man-Month: Essays on Software Engineering. Frederick P. Brooks. Addison-Wesley Pub Co; ISBN: 0201835959; 2nd edition (August 2, 1995) > Agile Software Development. Alistair Cockburn. Addison-Wesley Pub Co; ISBN: 0201699699; 1st edition (December 15, 2001) > Peopleware: Productive Projects and Teams. Tom Demarco and Timothy R. Lister. Dorset House; ISBN: 0932633439; 2nd edition (February 1, 1999) > Succeeding with Objects: Decision Frameworks for Project Management. Adele Goldberg and Kenneth S. Rubin. Addison-Wesley Pub Co; ISBN: 0201628783; 1st edition (May 1995) > A Discipline for Software Engineering. Watts S. Humphrey. Addison-Wesley Pub Co; ISBN: 0201546108; 1st edition (December 31, 1994) 6

Course schedule Week Date Lesson 1 16-Sep-15 Introduction: The Software Lifecycle 2 23-Sep-15 Requirements Collection 3 30-Sep-15 The Planning Game 4 07-Oct-15 Responsibility-Driven Design 5 14-Oct-15 Modeling Objects and Classes 6 21-Oct-15 Modeling Behaviour 7 28-Oct-15 User Interface Design 8 04-Nov-15 Software Quality 9 11-Nov-15 Guest lecture: Software Testing (Manuel Oriol) 10 18-Nov-15 Software Architecture 11 25-Nov-15 Guest lecture: Project Management (Jan Hornwall) 12 02-Dec-15 Software Metrics 13 09-Dec-15 Software Evolution 14 16-Dec-15 Guest lecture: SE in practice (Marc Hofer) 15 07-Jan-16 Final Exam 7

Roadmap > Course Overview > What is Software Engineering? > The Iterative Development Lifecycle > Software Development Activities > Methods and Methodologies 8

Why Software Engineering? A naive view: coding Problem Specification Final Program But... Where did the specification come from? How do you know the specification corresponds to the user s needs? How did you decide how to structure your program? How do you know the program actually meets the specification? How do you know your program will always work correctly? What do you do if the users needs change? How do you divide tasks up if you have more than a one-person team? 9

What is Software Engineering? (I) Some Definitions and Issues state of the art of developing quality software on time and within budget > Trade-off between perfection and physical constraints SE has to deal with real-world issues > State of the art! Community decides on best practice + life-long education 10

What is Software Engineering? (II) multi-person construction of multi-version software Parnas > Team-work Scale issue ( program well is not enough) + Communication Issue > Successful software systems must evolve or perish Change is the norm, not the exception 11

What is Software Engineering? (III) software engineering is different from other engineering disciplines Sommerville > Not constrained by physical laws limit = human mind > It is constrained by political forces balancing stake-holders 12

Roadmap > Course Overview > What is Software Engineering? > The Iterative Development Lifecycle > Software Development Activities > Methods and Methodologies 13

Software Development Activities Requirements Collection Analysis Design Implementation Establish customer s needs Model and specify the requirements ( what ) Model and specify a solution ( how ) Construct a solution in software Testing Validate the solution against the requirements Maintenance Repair defects and adapt the solution to new requirements NB: these are ongoing activities, not sequential phases! 14

The Classical Software Lifecycle The classical software lifecycle models the software development as a step-by-step waterfall between the various development phases. Requirements Collection Analysis Design Implementation Testing Maintenance The waterfall model is unrealistic for many reasons: requirements must be frozen too early in the life-cycle requirements are validated too late 15

Problems with the Waterfall Lifecycle 1. Real projects rarely follow the sequential flow that the model proposes. Iteration always occurs and creates problems in the application of the paradigm 2. It is often difficult for the customer to state all requirements explicitly. The classic life cycle requires this and has difficulty accommodating the natural uncertainty that exists at the beginning of many projects. 3. The customer must have patience. A working version of the program(s) will not be available until late in the project timespan. A major blunder, if undetected until the working program is reviewed, can be disastrous. Pressman, SE, p. 26 16

Iterative Development In practice, development is always iterative, and all activities progress in parallel. Requirements Collection Maintenance through iteration Testing based on requirements Testing Analysis Validation through prototyping Testing throughout implementation Design Implementation Design through refactoring If the waterfall model is pure fiction, why is it still the dominant software process? 17

Iterative Development Plan to iterate your analysis, design and implementation. You won t get it right the first time, so integrate, validate and test as frequently as possible. You should use iterative development only on projects that you want to succeed. Martin Fowler, UML Distilled 18

Incremental Development Plan to incrementally develop (i.e., prototype) the system. If possible, always have a running version of the system, even if most functionality is yet to be implemented. Integrate new functionality as soon as possible. Validate incremental versions against user requirements. 19

The Unified Process Requirements Inception Elaboration Construction Transition Analysis Design Implementation Test Iter. #1 Iter. #2.................. Iter. #n-1 Iter. #n How do you plan the number of iterations? How do you decide on completion? 20

Boehm s Spiral Lifecycle Planning = determination of objectives, alternatives and constraints initial requirements completion alpha demo Risk Analysis = Analysis of alternatives and identification/ resolution of risks Risk = something that will delay project or increase its cost go, no-go decision first prototype Customer Evaluation = Assessment of the results of engineering evolving system Engineering = Development of the next level product 21

Roadmap > Course Overview > What is Software Engineering? > The Iterative Development Lifecycle > Software Development Activities > Methods and Methodologies 22

Requirements Collection User requirements are often expressed informally: features usage scenarios Although requirements may be documented in written form, they may be incomplete, ambiguous, or even incorrect. 23

Changing requirements Requirements will change! inadequately captured or expressed in the first place user and business needs may change during the project Validation is needed throughout the software lifecycle, not only when the final system is delivered! build constant feedback into your project plan plan for change early prototyping [e.g., UI] can help clarify requirements 24

Requirements Analysis and Specification Analysis is the process of specifying what a system will do. The intention is to provide a clear understanding of what the system is about and what its underlying concepts are. The result of analysis is a specification document. Does the requirements specification correspond to the users actual needs? 25

Object-Oriented Analysis An object-oriented analysis results in models of the system which describe: > classes of objects that exist in the system responsibilities of those classes > relationships between those classes > use cases and scenarios describing operations that can be performed on the system allowable sequences of those operations 26

Prototyping (I) A prototype is a software program developed to test, explore or validate a hypothesis, i.e. to reduce risks. An exploratory prototype, also known as a throwaway prototype, is intended to validate requirements or explore design choices. UI prototype validate user requirements rapid prototype validate functional requirements experimental prototype validate technical feasibility 27

Prototyping (II) An evolutionary prototype is intended to evolve in steps into a finished product. > iteratively grow the application, redesigning and refactoring along the way First do it, then do it right, then do it fast. 28

Design Design is the process of specifying how the specified system behaviour will be realized from software components. The results are architecture and detailed design documents. Object-oriented design delivers models that describe: how system operations are implemented by interacting objects how classes refer to one another and how they are related by inheritance attributes and operations associated to classes Design is an iterative process, proceeding in parallel with implementation! 29

Conway s Law Organizations that design systems are constrained to produce designs that are copies of the communication structures of these organizations 30

Implementation and Testing Implementation is the activity of constructing a software solution to the customer s requirements. Testing is the process of validating that the solution meets the requirements. The result of implementation and testing is a fully documented and validated solution. 31

Design, Implementation and Testing Design, implementation and testing are iterative activities The implementation does not implement the design, but rather the design document documents the implementation! > System tests reflect the requirements specification > Testing and implementation go hand-in-hand Ideally, test case specification precedes design and implementation 32

Maintenance Maintenance is the process of changing a system after it has been deployed. > Corrective maintenance: identifying and repairing defects > Adaptive maintenance: adapting the existing solution to new platforms > Perfective maintenance: implementing new requirements In a spiral lifecycle, everything after the delivery and deployment of the first prototype can be considered maintenance! 33

Maintenance activities Maintenance entails: > configuration and version management > reengineering (redesigning and refactoring) > updating all analysis, design and user documentation Repeatable, automated tests enable evolution and refactoring 34

Maintenance costs Maintenance typically accounts for 70% of software costs! Means: most project costs concern continued development after deployment Lientz 1979 35

Roadmap > Course Overview > What is Software Engineering? > The Iterative Development Lifecycle > Software Development Activities > Methods and Methodologies 36

Methods and Methodologies Principle = general statement describing desirable properties Method = general guidelines governing some activity Technique = more technical and mechanical than method Methodology = package of methods and techniques packaged Tools Methodologies Methods and Techniques Principle Ghezzi et al. 1991 37

Object-Oriented Methods: a brief history > First generation: Adaptation of existing notations (ER diagrams, state diagrams...): Booch, OMT, Shlaer and Mellor,... Specialized design techniques: CRC cards; responsibility-driven design; design by contract > Second generation: Fusion: Booch + OMT + CRC + formal methods > Third generation: Unified Modeling Language: uniform notation: Booch + OMT + Use Cases +... various UML-based methods (e.g. Catalysis) > Agile methods: Extreme Programming Test-Driven Development Scrum 38

What you should know! > How does Software Engineering differ from programming? > Why is the waterfall model unrealistic? > What is the difference between analysis and design? > Why plan to iterate? Why develop incrementally? > Why is programming only a small part of the cost of a real software project? > What are the key advantages and disadvantages of object-oriented methods? 39

Can you answer these questions? > What is the appeal of the waterfall model? > Why do requirements change? > How can you validate that an analysis model captures users real needs? > When does analysis stop and design start? > When can implementation start? > What are good examples of Conway s Law in action? 40

Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) You are free to: Share copy and redistribute the material in any medium or format Adapt remix, transform, and build upon the material for any purpose, even commercially. The licensor cannot revoke these freedoms as long as you follow the license terms. Under the following terms: Attribution You must give appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use. ShareAlike If you remix, transform, or build upon the material, you must distribute your contributions under the same license as the original. No additional restrictions You may not apply legal terms or technological measures that legally restrict others from doing anything the license permits. http://creativecommons.org/licenses/by-sa/4.0/