Software Construction

Similar documents
Credit where Credit is Due. Lecture 2: Software Engineering (a review) Goals for this Lecture. What is Software Engineering

Software Engineering

Chapter 1. Contents. What is Software Engineering 9/9/13. Shari L. Pfleeger Joanne M. Atlee. 4 th Edition

Chapter 1. What is Software Engineering. Shari L. Pfleeger Joanne M. Atlee. 4 th Edition

Software Engineering. Software development: Process vs agile. with material by Marco Piccioni

Software Engineering COMP 201

Solutions Manual. Object-Oriented Software Engineering. An Agile Unified Methodology. David Kung

Introduction to Software Engineering

BCS THE CHARTERED INSTITUTE FOR IT. BCS HIGHER EDUCATION QUALIFICATIONS BCS Level 6 Professional Graduate Diploma in IT SOFTWARE ENGINEERING 2

SE310 Analysis and Design of Software

Major attributes of the Lifecycle. The Systems Development Lifecycle. Project phases. Planning. Design. Analysis

Software Modeling & Analysis. - Fundamentals of Software Engineering - Software Process Model. Lecturer: JUNBEOM YOO

MCT610 Software Engineering Module Handbook

Course title: SOFTWARE ANALYSIS AND DESIGN

An Overview of Software Process

2009 Spring. Software Modeling & Analysis. - Software Process Model. Lecturer: JUNBEOM YOO

The Systems Development Lifecycle

ABHELSINKI UNIVERSITY OF TECHNOLOGY

Quality 24 Process Improvement 26 Real processes. Product Quality. Quality Management. Quality Management. Quality Plan

SE300 Software Engineering Practices

Softwaretechnik. Lecture 02: Processes. Peter Thiemann SS University of Freiburg, Germany

Software Engineering II - Exercise

A SOFTWARE MAINTAINABILITY ATTRIBUTES MODEL

Software Reviews Since Acquisition Reform Architecture-Driven Considerations

Quality Assurance for Systems Engineering (INSE 6280/2-WW)

Decentralized software development Pitfalls and challenges A software engineering viewpoint

Assistant Professor, Integral University, Lucknow, India. Quality Parameters. Correctness. Efficiency. Portability. Usability.

ICS 52: Introduction to Software Engineering

V Model material adapted from Steve Easterbrook. Waterfall Model material adapted from Steve Easterbrook. Lifecycle of Software Projects

Measuring and Assessing Software Quality

A Comparative Study on Software Development Life Cycle Models

Course 2 October, 10, Adrian Iftene

CONTENTS. Introduction to Software Engineering. Software Process and Life Cycle Models. Software Life-Cycle Model-2. Chapter 1. Chapter 2.

Software Life Cycles and Configuration Management

CS 501: Software Engineering. Lecture 2. Software Processes

SYLLABUS. What is Agility, What is an Agile Process, Agile Process Models.

Communication Model for Cooperative Robotics Simulator. Project Plan. Version 1.0

Software Engineering

A Comparison Between Two Software Engineering Processes, RUP And Waterfall Models

Object-Oriented & Classical Soft Engineering

SE420 Software Quality Assurance

Software Process. Overview

Software Development Methodologies. CSC 440: Software Engineering Slide #1

Course Organization. Lecture 1/Part 1

Software Engineering I (02161)

Pertemuan 2. Software Engineering: The Process

(c) Addison Wesley Chapter 1. ! Software production is an art. ! Two groups. ! Main causes of software failures

cis20.2 design and implementation of software applications 2 spring 2010 lecture # I.2

the software world... software engineering? software engineering: one definition

Course Introduction and Overview

Software Design. A software design is a precise description of a system, using variety of different perspective.

Lecture 2: Software Quality Factors, Models and Standards. Software Quality Assurance (INSE 6260/4-UU) Winter 2016

Sistemi ICT per il Business Networking

INFORMATION SYSTEMS ANALYSIS AND DESIGN

COMP 6481 Fall 2006 System Requirement Specifications

Introduction to Software Life Cycles and Agile. CSCI 5828: Foundations of Software Engineering Lecture 03 09/02/2014

Chapter 3 Prescriptive Process Models

SEI Architecture Techniques complementary to the RUP Stuart Kerrigan, Richard van Schelven Principal Engineers Data Networks

PESIT- Bangalore South Campus Hosur Road (1km Before Electronic city) Bangalore

TOWARDS DEFINING SOFTWARE DEVELOPMENT PROCESSES IN DO-178B WITH OPENUP

PI-MDD Executive Summary

Design and Assessment for Agile Auditing Model: The Case of ISO 9001 Traceability Requirements

Advanced Software Engineering FYI

Software LEIC. Lecture 23

03. Perspective Process Models

The Challenge of Agile Estimating

Object-Oriented and Classical Software Engineering

Software Engineering & Architecture

Non-object-oriented design methods. Software Requirements and Design CITS 4401 Lecture 15

CS5239 Computer System Performance Evaluation

Software Engineering QUESTION BANK

Object-Oriented and Classical Software Engineering THE SOFTWARE PROCESS 9/17/2017. CHAPTER 3 Slide 3.2. Stephen R. Schach. Overview Slide 3.

So#ware Architecture

Process, Models, Methods, Diagrams Software Development Life Cyles. Part - II

Lecture 28: Software metrics

The Product and the Process The Product The Evolving Role of Software Software Software: A Crisis on the Horizon Software Myths Summary References

Introduction to Software Engineering: Project Management ( Highlights )

methodologies (SOFTWARE ENGINEERING) CONTENTS 1.1 INTRODUCTION TO O SOFTWARE ENGINEERING Basic Stages in Software Development... 1.

MDA and Object-Oriented System Analysis and Design Integration for TanSSe-L System Development

Using a Validation Model to Measure the Agility of Software Development in a Large Software Development Organization

Introduction to Agile Life Cycles. CSCI 5828: Foundations of Software Engineering Lecture 07 09/13/2016

PI-MDD Executive Summary

02291: System Integration

DEPARTMENT OF COMPUTER SCIENCE AND ENGINEERING Software Engineering Third Year CSE( Sem:I) 2 marks Questions and Answers

TIE Ohjelmistotuotannon menetelmät TIE Software Engineering Methodology

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

Core Issues Affecting Software Architecture in Enterprise Projects

Course Information. Course Topics

WNR Approach: An Extension to Requirements Engineering Lifecycle

Session 11E Adopting Agile Ground Software Development. Supannika Mobasser The Aerospace Corporation

Software Engineering

The good news. 34% of software projects succeed. Standish Group, CHAOS Report, 2003

Model-Based Design Maturity: Benchmarking the Automotive Industry Vinod Reddy Manager, Consulting Services

Note 10: Software Process

QUICKLOOK PROJECT PROPOSAL

The Top Thrill Dragster

A Brief Tour of Responsibility- Driven Design in Rebecca Wirfs-Brock

Agile Quality Management

Achieving Excellence In Software Engineering

Agile Projects 7. Agile Project Management 21

Transcription:

Software Construction Bertrand Meyer University of Zurich September-December 2017 Lecture 1: Introduction Teaching team Lectures: Bertrand Meyer Head assistant: Jürgen Cito Assistants: Livio Sgier Raphael Matile 2 1

About me In industry until 2001 (President then CTO of Eiffel Software, Santa Barbara, California) 2001-2016: Professor of Software Engineering at ETH Zurich Currently: Professor at Politecnico di Milano and head of Software Engineering Laboratory at Innopolis University (Kazan, Russia), plus Eiffel Software Research areas: programming methodology, programming languages, formal methods, concurrent programming, software process (agile methods) 3 How to reach us Bertrand Meyer, BIN 2.D.20, bertrand.meyer@inf.ethz.ch Jürgen Cito, BIN 2.D.05, cito@ifi.uzh.ch Raphael Matile, raphael.matile@uzh.ch Livio Sgier, livio.sgier@gmail.com, 4 2

Slots Tuesdays 8-9:45 Wednesdays: 8-9:45 14-18 (in lecture weeks only) Lecture weeks: September 19-20 October 10-11 November 7-8 December 12-13 5 Course material Course page: www.ifi.uzh.ch/en/seal/teaching/courses/software-construction-17.html Check it regularly Lecture material: Lecture slides Recommended textbooks: B. Meyer: Object-Oriented Software Construction, 2 nd edition Prentice Hall, 1997 E. Gamma et al.: Design Patterns Addison-Wesley, 1995 6 3

Supplementary recommended books A good software engineering textbook (see precise references on course page): Ghezzi / Jazayeri / Mandrioli (broadest scope) Pfleeger / Atlee (the most recent) Pressman (emphasis on practitioners needs) On patterns: Karine Arnout s ETH PhD thesis 7 Goal of the course (From the course description in the UZH page, abridged) Knowing how to program does not make you a software engineer. The next step is to learn professional software development. This course is an introduction to both: Software architecture: methods for designing the structure of software systems, small or large, that will stand the test of time. Software engineering: methods and tools, including nonprogramming aspects (project management, requirements analysis, human factors, metrics, software processes including agile methods) necessary for producing successful systems. 8 4

Four blocks 1. Key software engineering practices: Requirements analysis Software testing and verification Basics of configuration management 2. Object-oriented design: Abstract data types Information hiding, The class concept Inheritance Principles of OO design (open-closed, command-query separation, ) 3. Software architecture: Design by Contract Classical design patterns Architectural styles. 4.Software process: Software process models CMMI Agile methods. 9 Grading 50% project, 50% end-of-semester exam To pass, you must get 4.0 on both the project and the exam About the exam: When: 9 January 2018, 8-10 AM What: all topics of semester How: no material allowed ( closed-book ) 10 5

About the project The project is an integral part of the course Goal: Apply software architecture techniques Practice group work in software engineering Go through main phases of a realistic software project: requirements, design of both program and test plan, implementation, testing More details about the project tomorrow (Wed 20/09, morning session) 11 Programming langage: Eiffel First version 1985, constantly refined and improved since Focus: software quality, especially reliability, extendibility, reusability Emphasizes simplicity Used for mission-critical projects in industry Based on concepts of Design by Contract. International standard (ISO) 12 6

Some Eiffel-based projects Axa Rosenberg Investment management: from $2 billion to >$100 billion 2 million lines The Chicago Board of Trade Chicago Board of Trade Price reporting system Eiffel + CORBA + Solaris + Windows + Boeing Large-scale simulations (Eiffel) Price Reportin of missile defense HP printers Swedish social security: accident reporting & management etc. 13 More about Eiffel Method, language and environment Focus on software quality Applications: finance, aerospace, communication Also used for teaching programming, Object-Oriented Software Construction and Touch of Class textbooks Pure OO approach Strong principles of OO design Design by Contract Seamless development 14 7

For the remainder of today What is software engineering? What is software architecture? An OO software architecture example 15 1 What is software engineering? Overview of the requirements task 16 8

A definition of software engineering From SWEBOK, the Software Engineering Body of Knowledge: Software engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software, and the study of these approaches; that is, the application of engineering to software. 17 A simpler definition The application of engineering to software Engineering (Wikipedia): the discipline, art and profession of acquiring and applying technical, scientific, and mathematical knowledge to design and implement materials, structures, machines, devices, systems, and processes that safely realize a desired objective or invention A simpler definition of engineering: the application of scientific principles to the construction of artifacts 18 9

Parnas s view (Cited in Ghezzi et al.) The multi-person construction of multiversion software 19 For this course The application of engineering principles and techniques, based on mathematics, to the development and operation of possibly large software systems satisfying defined standards of quality 20 10

Large software systems What may be large: any or all of Source size (lines of code, LoC) Binary size Number of users Number of developers Life of the project (decades...) Number of changes, of versions (Remember Parnas s definition) 21 Process and product Software engineering affects both: Software products The processes used to obtain and operate them Products are not limited to code. Other examples include requirements, design, documentation, test plans, test results, bug reports Processes exists whether they are formalized or not 22 11

Software quality factors* Product Immediate Correctness Robustness Security Ease of use Ease of learning Efficiency Long-term Extendibility Reusability Portability Process Timeliness Cost-effectiveness Reliability Specification Errors Hostility Correctness Security Robustness *Sometimes called the ilities list 23 Software engineering today Three cultures: Process Agile Object The first two are usually seen as exclusive, but all have major contributions to make. 24 12

Process Emphasize: Plans Schedules Documents Requirements Specifications Order of tasks Commitments Examples: Rational Unified Process, CMMI, Waterfall Software Engineering, lecture 1: Personal Software Process for Engineers: Introduction to PSP 25 25 Agile Emphasize: Short iterations Emphasis on working code; de-emphasis of plans and documents Emphasis on testing; de-emphasis of specifications and design. Test-Driven Development" Constant customer involvement Refusal to commit to both functionality and deadlines Specific practices, e.g. Pair Programming Examples: Extreme Programming (XP), Scrum 26 13

Object-oriented culture Emphasizes: Seamless development Reversibility Single Product Principle Design by Contract 27 Six task groups of software engineering Describe Implement Assess Manage Operate Notate Requirements, design specification, documentation V&V*, esp. testing Design, programming Plans, schedules, communication, reviews Deployment, installation, Languages for programming etc. *Validation & Verification 28 14

1 What is software architecture? Overview of the requirements task 29 Software architecture We define software architecture as The decomposition of software systems into modules* Primary criteria: extendibility and reusability Examples of software architecture techniques & principles: Abstract data types (as the underlying theory) Object-oriented techniques: the notion of class, inheritance, dynamic binding Object-oriented principles: uniform access, singlechoice, open-closed principle Design patterns Classification of software architecture styles, e.g. pipes and filters * From the title of an article by Parnas, 1972 30 15

Software architecture: a few milestones 1968: The inner and outer syntax of a programming language (Maurice Wilkes) 1968-1972: Structured programming (Edsger Dijkstra); industrial applications (Harlan Mills & others) 1971: Program Development by Stepwise Refinement (Niklaus Wirth) 1972: David Parnas s articles on information hiding 1974: Liskov and Zilles s paper on abstract data types 1975: Programming-in-the-large vs Programming-in-the-small (Frank DeRemer & Hans Kron) 1987: Object-Oriented Software Construction, 1 st edition 1994: An introduction to Software Architecture (David Garlan and Mary Shaw) 1995: Design Patterns (Erich Gamma et al.) 1997: UML 1.0 2000: REST (Roy Fielding) 31 What we have seen Basic definitions and concepts of software engineering Basic definitions and concepts of software architecture 32 16