Software Engineering - University of Regina

Download Report

Transcript Software Engineering - University of Regina

Software Engineering
A Preview
Chapter 1
Ch.1
1
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
2
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
3
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
4
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
5
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
6
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
7
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
8
Role of software engineer
• Programming skill not enough
• Software engineering involves "programming-inthe –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
9
The software lifecycle (a preview)
Req uirements analysis
and specification
waterfall model
Desig n and specification
Code and module
testing
Integ ration and
system testing
Delivery and
maintenance
Ch.1
10
Relationships between SE and other CS
disciplines
•
•
•
•
•
•
•
•
Programming languages
Operating systems
Data bases
Artificial intelligence
Theory
Management science
Systems engineering
Others
Ch.1
11
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
12
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
13
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
14
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
15
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
16
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
17
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
18
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
19
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
20
• 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
21
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
22
Programming vs. Software Engineering
•
•
•
•
•
•
•
•
Small project
You
Build what you want
One product
Few sequential changes
Short-lived
Cheap
Small consequences
Ch.1
•
•
•
•
•
•
•
•
Huge project
Teams
Build what they want
Family of products
Many parallel changes
Long-lived
Costly
Large consequences
23
Average cost of software
Object-Oriented and Classical Software Engineer 5th Edition, Schach (2002)
Ch.1
24