ch.1 1 software engineering a preview chapter 1. ch.1 2 outline my background definitions of...

24
Ch.1 1 Software Engineering A Preview Chapter 1

Upload: damon-garrett

Post on 20-Jan-2016

219 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Ch.1 1 Software Engineering A Preview Chapter 1. Ch.1 2 Outline My Background Definitions of software engineering (SE) Historical origins of SE SE as

Ch.1 1

Software Engineering

A Preview

Chapter 1

Page 2: Ch.1 1 Software Engineering A Preview Chapter 1. Ch.1 2 Outline My Background Definitions of software engineering (SE) Historical origins of SE SE as

Ch.1 2

Outline• My Background

• Definitions of software engineering (SE)

• Historical origins of SE

• SE as part of systems engineering

• SE consists of many activities in addition to programming

• SE and other disciplines

Page 3: Ch.1 1 Software Engineering A Preview Chapter 1. Ch.1 2 Outline My Background Definitions of software engineering (SE) Historical origins of SE SE as

Ch.1 3

My Background• BSc in computer science from Ontario

• MSc and PhD in computer science at UofR

• Research specializing in machine learning and game theory

• Avid programmer. First language was Basic in 1989, last was C# 8 months ago .

Page 4: Ch.1 1 Software Engineering A Preview Chapter 1. Ch.1 2 Outline My Background Definitions of software engineering (SE) Historical origins of SE SE as

Ch.1 4

Industry Experience– Government of Ontario

(Web developer)

– IBM Canada (lead developer of e-commerce site)

– Dundee Securities (network security analyst)

– Sask. Watershed Authority (team lead)

– UofR (programmer analyst I, II)

– Numerous lab teaching and lecturing appointments

Page 5: Ch.1 1 Software Engineering A Preview Chapter 1. Ch.1 2 Outline My Background Definitions of software engineering (SE) Historical origins of SE SE as

Ch.1 5

Definitions• The application of engineering to software• Field of computer science dealing with

software systems– large and complex– built by teams– exist in many versions– last many years– undergo changes

Page 6: Ch.1 1 Software Engineering A Preview Chapter 1. Ch.1 2 Outline My Background Definitions of software engineering (SE) Historical origins of SE SE as

Ch.1 6

Definitions• Application of a systematic, disciplined,

quantifiable approach to the development, operation, and maintenance of software (IEEE 1990)

• Multi-person construction of multi-version software (Parnas 1978)

Page 7: Ch.1 1 Software Engineering A Preview Chapter 1. Ch.1 2 Outline My Background Definitions of software engineering (SE) Historical origins of SE SE as

Ch.1 7

Role of SE in system design• SE part of larger projects

• Embedded– Software requirements to be balanced against

others• e.g., telephone switching systems

– certain requirements can only be met by hw, sw, and special devices

Page 8: Ch.1 1 Software Engineering A Preview Chapter 1. Ch.1 2 Outline My Background Definitions of software engineering (SE) Historical origins of SE SE as

Ch.1 8

History• The field of software engineering was born

in 1968 in response to chronic failures of large software projects to meet schedule and budget constraints – Recognition of "the software crisis"

• Term became popular after NATO Conference in Garmisch Partenkirchen (Germany), 1968

Page 9: Ch.1 1 Software Engineering A Preview Chapter 1. Ch.1 2 Outline My Background Definitions of software engineering (SE) Historical origins of SE SE as

Ch.1 9

Role of software engineer• Programming skill not enough• Software engineering involves "programming-in-

the –large"– understand requirements and write specifications

• derive models and reason about them

– master software – operate at various abstraction levels– member of a team

• communication skills• management skills

Page 10: Ch.1 1 Software Engineering A Preview Chapter 1. Ch.1 2 Outline My Background Definitions of software engineering (SE) Historical origins of SE SE as

Ch.1 10

The software lifecycle (a preview)

Requirements analysis and specification

Design and specification

Code and module testing

Integration and system testing

Delivery and maintenance

waterfall model

Page 11: Ch.1 1 Software Engineering A Preview Chapter 1. Ch.1 2 Outline My Background Definitions of software engineering (SE) Historical origins of SE SE as

Ch.1 11

Relationships between SE and other CS disciplines• Programming languages

• Operating systems

• Data bases

• Artificial intelligence

• Theory

• Management science

• Systems engineering

• Others

Page 12: Ch.1 1 Software Engineering A Preview Chapter 1. Ch.1 2 Outline My Background Definitions of software engineering (SE) Historical origins of SE SE as

Ch.1 12

Programming• Languages are the central tools used in

software development.

• Modularity:– Separation of implementation and specification

• Java and packages

• Exception handling:– Engineer support for error checking

Page 13: Ch.1 1 Software Engineering A Preview Chapter 1. Ch.1 2 Outline My Background Definitions of software engineering (SE) Historical origins of SE SE as

Ch.1 13

Operating Systems• The first large software systems built.

• Concepts developed in OS are applicable to many large-scale software systems:– Virtual machines, abstraction, separation of

policy from mechanism:• Separate the “what” from the “how”

Page 14: Ch.1 1 Software Engineering A Preview Chapter 1. Ch.1 2 Outline My Background Definitions of software engineering (SE) Historical origins of SE SE as

Ch.1 14

Databases• Concept of data independence:

– Another ex. of separation of specification and implementation.

• Many innovations in database technology were required with the design of large-scale software systems:– Storing large structured or unstructured objects.– Transaction lengths.

Page 15: Ch.1 1 Software Engineering A Preview Chapter 1. Ch.1 2 Outline My Background Definitions of software engineering (SE) Historical origins of SE SE as

Ch.1 15

Artificial Intelligence• Many are large-scale software systems.• Necessity of “exploratory development”

since many of them were vague on how they worked.

• SE techniques used in expert systems, a modularized system with clear separation between facts known and rules used to process facts.– Programming assistants.

Page 16: Ch.1 1 Software Engineering A Preview Chapter 1. Ch.1 2 Outline My Background Definitions of software engineering (SE) Historical origins of SE SE as

Ch.1 16

Theoretical Models• Many models have been developed that

have become useful tools in SE:– Finite State Machines

• Basis of software specifications and a model for software design and structure.

– Petri Nets• Originally used to model hardware, but have been

adopted to model software.

Page 17: Ch.1 1 Software Engineering A Preview Chapter 1. Ch.1 2 Outline My Background Definitions of software engineering (SE) Historical origins of SE SE as

Ch.1 17

Topics covered in this course• Part I: SE Overview

– SE Introduction– Software Qualities and Principles– Software Design and Architecture

• Part II: Specification & Testing– Operational and Descriptive specifications

• Part III: Software Production Process– Activities and models

Page 18: Ch.1 1 Software Engineering A Preview Chapter 1. Ch.1 2 Outline My Background Definitions of software engineering (SE) Historical origins of SE SE as

Ch.1 18

Group project• Comprehensive project that covers major

deliverables and duties of a real developer team.

• Groups of 4 should be decided by the end of the week.

• All members of team receive same project mark

• Tip: Pick a well-rounded group of writers, testers, and developers.

Page 19: Ch.1 1 Software Engineering A Preview Chapter 1. Ch.1 2 Outline My Background Definitions of software engineering (SE) Historical origins of SE SE as

Ch.1 19

Group project• Each group will meet with me at least once

midway through to discuss project.

• I will provide a list of available projects, but I’m also open to ones not on a list if I think they are viable.

• REMEMBER: You have 6.5 weeks to finish it, starting now!

Page 20: Ch.1 1 Software Engineering A Preview Chapter 1. Ch.1 2 Outline My Background Definitions of software engineering (SE) Historical origins of SE SE as

Ch.1 20

CHAOS Report by Standish Group for 1995

• Standish Group studied 3682 projects in 365 companies in 1995

• Huge investment in software development– US $250 billion spent each year on IT

development of c. 175 000 projects in the US (1995 estimates)

• Huge losses– US $81 billion spent on cancelled projects and

additional $59 billion on time overruns by US companies and government (1995estimates)

Page 21: Ch.1 1 Software Engineering A Preview Chapter 1. Ch.1 2 Outline My Background Definitions of software engineering (SE) Historical origins of SE SE as

Ch.1 21

• Project success rate– Success 16.2%– Challenged (either late or over budget) 52.7%– Impaired (cancelled) 31.1%

• Average cost overrun of original estimate was 189%

• Average time overrun of original estimate was 222%

• On average only 61% of originally specified features and functions were available on these projects

Page 22: Ch.1 1 Software Engineering A Preview Chapter 1. Ch.1 2 Outline My Background Definitions of software engineering (SE) Historical origins of SE SE as

Ch.1 22

Challenges of Software Development

• Productivity– Growing demand for new systems and variants

• Complexity– Requirements concerning functionality, efficiency, and

especially connectivity are constantly growing.

• Quality– User expectations of quality are high, and may be life

critical

• Maintenance & Legacy Systems– 20 years or more

Page 23: Ch.1 1 Software Engineering A Preview Chapter 1. Ch.1 2 Outline My Background Definitions of software engineering (SE) Historical origins of SE SE as

Ch.1 23

Programming vs. Software Engineering

• Small project• You• Build what you want• One product• Few sequential changes• Short-lived• Cheap• Small consequences

• Huge project• Teams• Build what they want• Family of products• Many parallel changes• Long-lived• Costly• Large consequences

Page 24: Ch.1 1 Software Engineering A Preview Chapter 1. Ch.1 2 Outline My Background Definitions of software engineering (SE) Historical origins of SE SE as

Ch.1 24

Average cost of software

Object-Oriented and Classical Software Engineer 5th Edition, Schach (2002)