Lecture 01 - Software Engineering Recap and Course Preview
Lecture 01 - Software Engineering Recap and Course Preview
1
Software Engineering Preview
• Definitions
• Software Failures
• History and Context
• Software Development Myths
• Principles
• Software Development Processes
• Software Modeling Notations
• Summary
2
Definitions of SW Engineering
• Software Engineering [IEEE-93]:
– The application of a systematic, disciplined, quantifiable approach to the
development, operation, and maintenance of software;
that is, the application of engineering to software.
– Highlights the difference between programming and software engineering
• Canadian Standards Association:
– “The systematic activities involved in the design, implementation and
testing of software to optimize its production and support”
3
Definitions of SW Engineering (cont.)
• Parnas (1987):
– “Multi-person construction of multi-version software”
– Software Engineering means the construction of quality software with
a limited budget and a given deadline in the context of constant
change
• Lethbridge (2004):
– “Software engineering is the process of solving the customers’
problems by the systematic development and evolution of large,
high-quality software systems within cost, time and other
constraints.”
4
Definitions of SW Engineering: Conclusion
5
The Engineer in SW Engineering
• Engineers design products following well-accepted practices
which normally involve the application of science, mathematics
and economics
6
Scope of Software Engineering (SE)
7
Importance of Software Engineering
8
Software Quality
9
Software Engineering Stakeholders
10
Activities Involved in SE
• Knowledge acquisition:
– Understand the application domain, the system requirements
– Knowledge acquisition is not sequential, as a single piece of additional
information can invalidate complete models
• Problem solving:
– Find an acceptable solution within constraints (budgets and timelines)
– Find -> search -> experiment (i.e., compare alternatives, evaluate)
• Documentation:
– The rationale behind decisions need to be captured, in order to be able to
deal with change
11
Software Engineering Preview
• Definitions
• Software Failures
• History and Context
• Software Development Myths
• Principles
• Software Development Processes
• Software Modeling Notations
• Summary
12
Examples of SE Failures
• Patient Protection and Affordable Care Act (a.k.a. ObamaCare, 2013):
– Incorrect functionality, unable to handle the load due to poor specifications,
flawed design, poor coding, poor testing, security flaws, time constraints.
• Soyuz spacecraft’s descent from the ISS on May 3rd 2003
– Halfway back to Earth, for no apparent reason, the computer had suddenly
begun searching for the ISS as if to dock with it.
• Ariane 5 Flight 501:
– The space rocket was destroyed. Cause: poor specifications, usage
testing, and exception handling.
• Therac-25:
– Radiation therapy and X-ray machine killed several patients. Cause:
unanticipated, non-standard user inputs.
• NASA mission to Mars (Mars Climate Orbiter Spacecraft, 1999):
– Incorrect conversion from imperialàmetric leads to loss of Mars satellite
US study (1995):
– 81 billion US$ spend per year for failing software development projects
• Despite many success stories, there is much room for improvement.
13
Software Engineering Preview
• Definitions
• Software Failures
• History and Context
• Software Development Myths
• Principles
• Software Development Processes
• Software Modeling Notations
• Summary
14
Historical perspective of SW Engineering
• The term software engineering was coined in 1968 as a response
to the desolate state of the art of developing quality software on
time and within budget.
15
Relationships with other Disciplines
Artificial Intelligence
Operating systems
Compilers
Database management Computer Science Customer / System Engineering
systems …
Boolean algebra
First order logic
Set theory Theories Technologies Problem
Complexity theory
…
Management science
Project scheduling, resource
planning, people management,
project tracking, technology
Software Engineering
assessment
• Management Science
• Quantitative Methods Tools and Techniques
•… to Solve the Problem
16
Software Engineering Preview
• Definitions
• Software Failures
• History and Context
• Software Development Myths
• Principles
• Software Development Processes
• Software Modeling Notations
• Summary
17
Management Myths
18
Customer myths
19
The impact of change
40-1000 x
1000
Cost to change
100 30-70 x
15-40 x
10 x
10
3-6x
1x
1
20
Programmer / Practitioner’s myths
21
Software Engineering Preview
• Definitions
• Software Failures
• History and Context
• Software Development Myths
• Principles
• Software Development Processes
• Software Modeling Notations
• Summary
22
Characteristics of today’s Software development
23
What are the problems?
24
Software Engineering Principles
25
Rigor and Formality
26
Separation of Concerns
27
Modularity
28
Abstraction
29
Anticipation of Change
30
Generality
31
Incrementality
32
Software Engineering Preview
• Definitions
• Software Failures
• History and Context
• Software Development Myths
• Principles
• Software Development Processes
• Modeling Notations
• Summary
33
The Software Process
34
Survey of Some Process Models
• Waterfall Model
• Phased-Release Model
• Spiral Model
• Unified Process
• Agile Process
• Model-based Development Process
35
Waterfall Model
• In principle, a phase should not start until the previous phase has
finished (has been approved).
• Problems:
– Real projects rarely follow the sequential flow
– Difficult for stakeholder to state all the requirements once and for all
– Stakeholders must have patience: working version of software comes
late in process.
Requirement definition
Specification
Design
Implementation
Maintenance
36
Phased-Release Model
• Principle:
– Linear sequences of the waterfall process, with each sequence
producing an operational deliverable.
– The incremental model delivers a series of releases, called
increments.
– Suggests that all requirements are finalized early in the process.
Phase 1
Design
Implementation
Requirement definition
Integration & deployment
Specification
Planning Phase 2
Design
Implementation
37
Spiral Model
38
Unified Process
Iterative and Incremental, Use-case driven, Architecture centric
Phases:
– Inception: The core idea is developed into a product vision. We review
and confirm our understanding of the core business drivers. We want to
understand the business case for why the project should be attempted.
Product feasibility and project scope.
– Elaboration: The majority of the Use Cases are specified in detail and
the system architecture is designed. "Do-Ability" of the project. We
identify significant risks and prepare a schedule, staff and cost profile
for the entire project.
– Construction: Produces a system complete enough to transition to the
user. The design is refined into code.
– Transition: The goal is to ensure that the requirements have been met
to the satisfaction of the stakeholders. Other activities include site
preparation, manual completion, and defect identification and
correction. The transition phase ends with a postmortem devoted to
learning and recording lessons for future cycles.
39
Unified Process (cont.)
Activities
40
Agile Model
• Key Assumptions
– Difficult to predict software requirements
– Difficult to predict analysis, design, construction, and testing
– Design and construction should be interleaved
• How can we design a process that can manage unpredictability?
Ø Process adaptability.
• Example: Extreme Programming (XP)
– 4 phases: Planning (stories), Design (prototype solutions), Coding
(pair programming, re-factoring), Test
– The tests are the specification
– Communication paramount (small team, knowledgeable
programmers)
41
Software Engineering Preview
• Definitions
• Software Failures
• History and Context
• Software Development Myths
• Principles
• Software Development Processes
• Software Modeling Notations
• Summary
42
Some Modeling Notations
• Dataflow diagrams
• Entity-Relationship diagrams
• Finite state machines
43
Some Modeling Tools
• Data Flow Diagram
44
Some Modeling Tools
45
Some Modeling Tools
46
UML diagrams
• Behaviour diagrams
– use case, state machine, activity, sequence, communication,
interaction overview, timing
47
Software Engineering Preview
• Definitions
• Software Failures
• History and Context
• Software Development Myths
• Principles
• Software Development Processes
• Software Modeling Notations
• Summary
48
Summary
• Software engineering is
– engineering discipline focused on the development of software
systems
– as the solution to a user’s problem
– applying the right techniques / methods / tools
• Software engineering is necessary for developing complex but
reliable software
• A good software engineering practice help to develop software in
large teams.
49
Software Engineering goal is to avoid this
50