Post on 04-Jan-2016
description
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 part of systems engineering
• SE consists of many activities in addition to programming
• SE and other disciplines
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 .
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
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
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)
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
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
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
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
Ch.1 11
Relationships between SE and other CS disciplines• Programming languages
• Operating systems
• Data bases
• Artificial intelligence
• Theory
• Management science
• Systems engineering
• Others
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
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”
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.
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.
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.
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
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.
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!
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)
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
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
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
Ch.1 24
Average cost of software
Object-Oriented and Classical Software Engineer 5th Edition, Schach (2002)