Software Engineering. Hans van Vliet Vrije Universiteit Amsterdam, The Netherlands email: hans@cs.vu.nl



Similar documents
Software Engineering Design and Accounting Process

Software Engineering. Natallia Kokash N. Kokash, Software Engineering

CS4507 Advanced Software Engineering

CHAPTER 01 THE SCOPE OF SOFTWARE ENGINEERING

1.1 The Nature of Software... Object-Oriented Software Engineering Practical Software Development using UML and Java. The Nature of Software...

Software Safety Basics

Chapter 1 Introduction

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

Introduction. Getting started with software engineering. Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 1

Software Engineering Introduction & Background. Complaints. General Problems. Department of Computer Science Kent State University

Lecture Notes #27: Software Risk Management

Object-Oriented Software Engineering

Introduction to Software Engineering. Adopted from Software Engineering, by Ian Sommerville

SE 367 Software Engineering Basics of Software Engineering

Managing new relationships: design sensibilities, the new information and communication technologies and schools 1.

COMP 354 Introduction to Software Engineering

Different Approaches used in Software Product Families

CSCI-485: Software Design

Software Engineering. What is SE, Anyway? Based on Software Engineering, 7 th Edition by Ian Sommerville

An Introduction to Software Engineering

Lesson 18 Web Services and. Service Oriented Architectures

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

Teaching Requirements through Interdisciplinary Projects

An Introduction to Software Engineering

An Introduction to Software Engineering. Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 1

C. Wohlin, "Managing Software Quality through Incremental Development and Certification", In Building Quality into Software, pp , edited by

Introduction to software architecture

How To Write Software

CMSC 435: Software Engineering Course overview. Topics covered today

Software Engineering. Computer Science Tripos 1B Michaelmas Richard Clayton

How service-oriented architecture (SOA) impacts your IT infrastructure

How to gather and evaluate information

Developing the Architectural Framework for SOA Adoption

Undergraduate Basics for Systems Engineering (SE), using The Principles, Measures, Concepts and Processes of

Functional Safety Management: As Easy As (SIL) 1, 2, 3

Software Engineering Reference Framework

Aerospace Software Engineering

Introduction to Software Engineering. Week 1

Agile Software Development. Mohsen Afsharchi

Module System Architecture Context

The Role of the Software Architect

IF2261 Software Engineering. Introduction. What is software? What is software? What is software? Failure Curve. Software Applications Type

Comparing Plan-Driven and Agile Project Approaches

Plan-based Software Development

How To Develop Software

Product Line Development - Seite 8/42 Strategy

A LOOK BACK: UNDERGRADUATE COMPUTER SCIENCE EDUCATION: A NEW CURRICULUM PHILOSOPHY & OVERVIEW

Introduction to Software Engineering

CSC408H Lecture Notes

Engineering Process Software Qualities Software Architectural Design

The goal of software architecture analysis: confidence building or risk assessment

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

Module 10. Coding and Testing. Version 2 CSE IIT, Kharagpur

CSC340: Information Systems Analysis and Design. About the Course

Chapter 1- Introduction. Lecture 1

Oracle Forms and SOA: Software development approach for advanced flexibility An Oracle Forms Community White Paper

An Agile Approach to Release Management

SOA + BPM = Agile Integrated Tax Systems. Hemant Sharma CTO, State and Local Government

Federal Enterprise Architecture and Service-Oriented Architecture

Henrik Kniberg Agile Product Ownership in a nutshell

Prequalification Education, Assessment of Professional Competence and Experience Requirements of Professional Accountants

Software Maintenance. Software Maintenance. (Chapter 14) Relative distribution of software/ hardware costs. Point to ponder #1

KNOWLEDGE NETWORK SYSTEM APPROACH TO THE KNOWLEDGE MANAGEMENT

Hamid Faridani March 2011

Software Engineering. Software Development Process Models. Lecturer: Giuseppe Santucci

(Refer Slide Time: 01:52)

Architecture Centric Development in Software Product Lines

The Software Process. The Unified Process (Cont.) The Unified Process (Cont.)

Benefits Realization from IS & IT, and Change Management of roles and the working practices of individuals and teams.

Delivering Value from Information Systems and Technology Investments: Learning from success

IV. Software Lifecycles

Overview and History of Software Engineering

Mechanical Design/Product Design Process

Requirements engineering and quality attributes

PERFORMANCE MANAGEMENT APPROACHES IN ECONOMIC ORGANIZATIONS USING INFORMATION TECHNOLOGY *

A Software Engineering Process for Operational Space Weather Systems. S. Dave Bouwer, W. Kent Tobiska Space Environment Technologies

Designing an Effective Organization Structure. January 2009

Analysis of Object Oriented Software by Using Software Modularization Matrix

System Engineering: A Traditional Discipline in a Non-traditional Organization

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

Laboratório de Desenvolvimento de Software

This handbook is meant to be a quick-starter guide to Agile Project Management. It is meant for the following people:

Component-based Development Process and Component Lifecycle Ivica Crnkovic 1, Stig Larsson 2, Michel Chaudron 3

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

Introduction to Software Engineering

Service Oriented Enterprise Architecture

Outline. Definitions. Course schedule

Chapter 1- Introduction. Lecture 1

Scientific Computing's Productivity Gridlock and How Software Engineering Can Help

Technical Writing - Software Engineering Life Cycle Review

CREDENTIALS & CERTIFICATIONS 2015

CHALLENGES AND WEAKNESSES OF AGILE METHOD IN ENTERPRISE ARCHITECTURE

Digital Circuit Design

10 Deadly Sins of Software Estimation

Process-Based Business Transformation. Todd Lohr, Practice Director

Ingegneria del Software. Gabriele Monfardini - Corso di Ingegneria del Software

Agent-Based Commercial Off-The-Shelf Software Components Evaluation Method

Lecture Objectives. Software Life Cycle. Software Engineering Layers. Software Process. Common Process Framework. Umbrella Activities

UNIVERSITY OF KENT CODE OF PRACTICE FOR QUALITY ASSURANCE

Design Verification and Test of Digital VLSI Circuits NPTEL Video Course. Module-VII Lecture-I Introduction to Digital VLSI Testing

Transcription:

Software Engineering Hans van Vliet Vrije Universiteit Amsterdam, The Netherlands email: hans@cs.vu.nl

ARIANE Flight 501 http://www.youtube.com/watch?v=gp_d8r-2hwk Disintegration after 39 sec origin of failure lies with the flight control system, more particularly with the Inertial Reference Systems; these measure the attitude of the launcher and its movements in space Caused by large correction for attitude deviation Caused by wrong data being sent to On Board Computer Caused by software exception in Inertial Reference System after 36 sec. SE, Introduction, Hans van Vliet, 2008 2

The details Overflow in conversion of variable BH from 64-bit floating point to 16-bit signed integer Of 7 risky conversions, 4 were protected; BH was not Reasoning: physically limited, or large margin of safety In case of exception: report failure on databus and shut down SE, Introduction, Hans van Vliet, 2008 3

Possible explanations Inadequate testing Wrong type of reuse Wrong design philosophy SE, Introduction, Hans van Vliet, 2008 4

Inadequate testing? Specification does not contain Ariane 5 trajectory data as a functional requirement In tests, the SRI s were simulated by software modules SE, Introduction, Hans van Vliet, 2008 5

Improper reuse? If a component works perfectly well in one environment, it doesn t necessarily do so in another Ariane 5 is much faster than Ariane 4, and horizontal velocity builds up more rapidly excessive values for parameter in question Wish for quick alignment after hold in shutdown this software runs for a while after lift-off. It doesn t have any purpose for the Ariane 5, but was still kept SE, Introduction, Hans van Vliet, 2008 6

Wrong design philosophy? If something breaks down, such is caused by a random hardware failure Action: shut down that part There is no provision for design errors SE, Introduction, Hans van Vliet, 2008 7

Further information: IEEE Computer, jan. 1997, p. 129-130 http://www.cs.vu.nl/~hans/ariane5report.html SE, Introduction, Hans van Vliet, 2008 8

Software engineering The beginning 1968/69 NATO conferences: introduction of the term Software Engineering Idea: software development is not an art, or a bag of tricks Build software like we build bridges SE, Introduction, Hans van Vliet, 2008 9

Current status a lot has been achieved Examples you can think of? but some of our bridges still collapse SE, Introduction, Hans van Vliet, 2008 10

Tacoma Narrows bridge - 1940 SE, Introduction, Hans van Vliet, 2008 11

Same bridge, a while later http://www.youtube.com/watch?v=3mclp9qmcgs SE, Introduction, Hans van Vliet, 2008 12

Further references Henry Petroski, Design Paradigms: Case Histories of Error and Judgement in Engineering A. Spector & D. Gifford, A Computer Science Perspective of Bridge Design, Comm. Of the ACM 29, 4 (1986) p 267-283 SE, Introduction, Hans van Vliet, 2008 13

Percent of total cost Relative distribution of software/hardware costs 100 Hardware Development 60 Software 20 Maintenance 1955 1970 1985 Year SE, Introduction, Hans van Vliet, 2008 14

Point to ponder #1 Why does software maintenance cost so much? SE, Introduction, Hans van Vliet, 2008 15

Definition (IEEE) Software Engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software SE, Introduction, Hans van Vliet, 2008 16

Central themes SE is concerned with BIG programs complexity is an issue software evolves development must be efficient you re doing it together software must effectively support users involves different disciplines SE is a balancing act SE, Introduction, Hans van Vliet, 2008 17

Building software ~ Building bridges? yes, and no software is logical, rather than physical progress is hard to see (speed progress) software is not continuous compare to chaotic systems SE, Introduction, Hans van Vliet, 2008 18

Simple life cycle model problem requirements engineering reqs specification design design implementation system testing working system maintenance SE, Introduction, Hans van Vliet, 2008 19

Point to ponder #2 Is this a good model of how we go about? of how we should go about? SE, Introduction, Hans van Vliet, 2008 20

Requirements Engineering yields a description of the desired system: which functions possible extensions required documentation performance requirements includes a feasibility study resulting document: requirements specification SE, Introduction, Hans van Vliet, 2008 21

Design earliest design decisions captured in software architecture decomposition into parts/components; what are the functions of, and interfaces between, those components? emphasis on what rather than how resulting document: specification SE, Introduction, Hans van Vliet, 2008 22

Implementation focus on individual components goal: a working, flexible, robust, piece of software not a bag of tricks present-day languages have a module and/or class concept SE, Introduction, Hans van Vliet, 2008 23

Testing does the software do what it is supposed to do? are we building the right system? (validation) are we building the system right? (verification) start testing activities in phase 1, on day 1 SE, Introduction, Hans van Vliet, 2008 24

Maintenance correcting errors found after the software has been delivered adapting the software to changing requirements, changing environments,... SE, Introduction, Hans van Vliet, 2008 25

Global distribution of effort design 15% coding 20% requirements engineering 10% specification 10% testing 45% SE, Introduction, Hans van Vliet, 2008 26

Global distribution of effort rule of thumb: 40-20-40 distribution of effort trend: enlarge requirements specification/design slots; reduce test slot beware: maintenance alone consumes 50-75% of total effort SE, Introduction, Hans van Vliet, 2008 27

Kinds of maintenance activities corrective maintenance: correcting errors adaptive maintenance: adapting to changes in the environment (both hardware and software) perfective maintenance: adapting to changing user requirements SE, Introduction, Hans van Vliet, 2008 28

Distribution of maintenance activities corrective 21% perfective 50% adaptive 25% preventive 4% SE, Introduction, Hans van Vliet, 2008 29

Point to ponder #3 ethics You are a tester, and the product you are testing does not yet meet the testing requirements agreed upon in writing. Your manager wants to ship the product now, continue testing so that the next release will meet the testing requirements. What do you do? Discuss the issue with your manager? Talk to the manager s boss? Talk to the customer? SE, Introduction, Hans van Vliet, 2008 30

Hammurabi s Code SE, Introduction, Hans van Vliet, 2008 31

Hammurabi s Code (translation) 64: If a builder build a house for a man and do not make its construction firm, and the house which he has built collapse and cause the death of the owner of the house, that builder shall be put to death. 73: If it cause the death of a son of the owner of the house, they shall put to death a son of that builder. SE, Introduction, Hans van Vliet, 2008 32

Software Engineering Ethics - Principles Act consistently with the public interest Act in a manner that is in the best interest of the client and employer Ensure that products meet the highest professional standards possible Maintain integrity in professional judgment Managers shall promote an ethical approach Advance the integrity and reputation of the profession Be fair to and supportive of colleagues Participate in lifelong learning and promote an ethical approach SE, Introduction, Hans van Vliet, 2008 33

Quo Vadis? It takes at least 15-20 years for a technology to become mature; this also holds for computer science: UNIX, relational databases, structured programming, Software engineering has made tremendous progression There is no silver bullet, though SE, Introduction, Hans van Vliet, 2008 34

Recent developments Rise of agile methods Shift from producing software to using software Success of Open Source Software Software development becomes more heterogeneous SE, Introduction, Hans van Vliet, 2008 35

The Agile Manifesto Individuals and interactions over processes and tools Working software over comprehensive documentation Customer collaboration over contract negotiation Responding to change over following a plan SE, Introduction, Hans van Vliet, 2008 36

Producing software Using software Builders build pieces, integrators integrate them Component-Based Development (CBSD) Software Product Lines (SPL) Commercial Off-The-Shelves (COTS) Service Orientation (SOA) SE, Introduction, Hans van Vliet, 2008 37

Open Source: crowdsourcing 1. Go to LEGO site 2. Use CAD tool to design your favorite castle 3. Generate bill of materials 4. Pieces are collected, packaged, and sent to you 5. Leave your model in LEGO s gallery 6. Most downloaded designs are prepackaged No requirements engineers needed! Gives rise to new business model SE, Introduction, Hans van Vliet, 2008 38

Heterogeneity Old days: software development department had everything under control Nowadays: Teams scattered around the globe Components acquired from others Includes open source parts Services found on the Web SE, Introduction, Hans van Vliet, 2008 39

Point to ponder #4 Which of the following do you consider as Software Engineering Principles? Build with and for reuse Define software artifacts rigorously Establish a software process that provides flexibility Manage quality as formally as possible Minimize software components interaction Produce software in a stepwise fashion Change is inherent, so plan for it and manage it Tradeoffs are inherent, so make them explicit and document them Uncertainty is unavoidable, so identify and manage it SE, Introduction, Hans van Vliet, 2008 40

SUMMARY software engineering is a balancing act, where trade-offs are difficult solutions are not right or wrong; at most they are better or worse most of maintenance is (inevitable) evolution there are many life cycle models, and they are all models SE, Introduction, Hans van Vliet, 2008 41