Software engineering
Software engineering is concerned
with theories, methods and tools for
professional software development
Ranking Top Jobs
Software Engineer ranks No. 1, followed by Actuary, Human Resources
Manager, Dental Hygienist and Financial Planner.
1. Software Engineer 104. Airline Pilot
28. Civil Engineer 133. Fashion Designer
38. Nurse 137. High School Teacher
40. Physician 163. Police Officer
47. Accountant 173. Flight Attendant
60. Mechanical Engineer 185. Firefighter
73. Electrical Engineer 196. Newspaper Reporter
87. Attorney 200. Lumberjack
InformationWeek 5/15/12. Based on salary, stress levels, hiring outlook,
physical demands, and work environment ([Link])
3
Course Themes
1. Leadership of large software projects
Software as a product
Clients and their needs
Quality
Requirements and specification
Usability
Evolution
Project management
Personnel management
Economic, legal, and social factors
Course Themes
2. Large and very large systems
Software design
Software architecture
Object-oriented design
Dependable systems
Reliability
Verification
FAQs about software engineering
What is software?
What is software engineering?
What is the difference between software engineering
and system engineering?
What is a software process?
What is a software process model?
FAQs about software engineering
What are the costs of software engineering?
What are software engineering methods?
What is CASE (Computer-Aided Software Engineering)
What are the attributes of good software?
What are the key challenges facing software
engineering?
What is software?
Computer programs and associated
documentation
Software products may be
• Generic - developed to be sold to a range of
different customers.
• Bespoke (custom) - developed for a single
customer according to their specification.
• Embedded
• Built into hardware.
• Hard to change.
Introduction: Software is Complex
Complex complicated
Complex = composed of many simple parts
related to one another
Complicated = not well understood, or explained
1
3
Complexity Example:
Scheduling Fence Construction Tasks
Nailing Painting
Setting posts Cutting wood
[ 2 time units for unpainted; [ 5 time units for uncut wood;
[ 3 time units ] [ 2 time units ]
3 time units otherwise ] 4 time units otherwise ]
Setting posts Nailing, Painting
Cutting Nailing
…shortest possible completion time = ?
[ “simple” problem, but hard to solve without a pen and paper ]
More Complexity
Suppose today is Oct. 29
What day will be on Dec. 3?
[ To answer, we need to bring the day names and the day numbers
into coordination, and for that we may need again a pen and
paper ]
Software products
Generic products
• Stand-alone systems that are marketed and sold to any
customer who wishes to buy them.
• Examples – PC software such as editing, graphics
programs, project management tools; CAD software;
software for specific markets such as appointments
systems for dentists.
Customized products
• Software that is commissioned by a specific customer
to meet their own needs.
• Examples – embedded control systems, air traffic
control software, traffic monitoring systems.
15
Software
1. System software: such as compilers, editors, file management.
2. Application software: stand-alone programs for specific needs.
3. Engineering/scientific software: such as automotive stress analysis,
molecular biology, orbital dynamics etc.
4. Embedded software resides within a product or system.
(keypad control of a microwave oven, digital function of dashboard
display in a car)
5. Product-line software focus on a limited marketplace to address mass
consumer market. (word processing, graphics, database management)
6. Web Apps (Web applications) network centric software :remote
database and business applications.
7. AI software Robotics, expert system, pattern recognition game
playing
8. Driver Software
Software Engineering
Software Engineering is the science and art of
building significant software systems that are:
1) on time
2) on budget
3) with acceptable performance
4) with correct operation.
1
8
The Role of Software Engg. (1)
A bridge from customer needs to programming implementation
Customer
Customer
Programmer
What is Software Engineering?
Some Definitions and Issues
“state of the art of developing quality software on time and
within budget”
Trade-off between perfection and physical constraints
• SE must deal with real-world issues
State of the art!
• Community decides on “best practice” + life-long education
What is Software Engineering?
“multi-person construction of multi-version software”
Team-work
• Scale issue (“program well” is not enough) +
Communication Issue
Successful software systems must evolve
• Change is the norm, not the exception
2
1
The Role of Software Engg. (2)
Customer:
Requires a computer system to achieve some business goals
by user interaction or interaction with the environment
in a specified manner
System-to-be
Environment
Software-to-be
User
Software Engineer’s task:
To understand how the system-to-be needs to interact with
the user or the environment so that customer’s requirement is met
and design the software-to-be
May be the Programmer’s task:
same person To implement the software-to-be
designed by the software engineer
2
2
Example: ATM Machine
Understanding the money-machine problem:
Communication link
1
4 2
7 5 3
8 6
0 9
Bank’s
remote
ATM machine
datacenter
Bank
customer
2
3
How ATM Machine Might Work
Domain model Domain Model
created with help
of domain expert
Transaction
How may I record
help you? Cash
Bookkeeper
Speakerphone Safe
Safe keeper
Phone
Window clerk
Datacenter
liaison
Dispenser
Bank’s
remote
datacenter
Customer
Why Study Software Engineering?
To acquire skills to develop large
programs.
• Exponential growth in complexity and
difficulty level with size.
• The ad hoc approach breaks down
when size of software increases
24
2
5
Law of Software Engineering
Software should be written for people first
• ( Computers run software, but hardware quickly becomes
outdated )
• Useful + good software lives long
• To nurture software, people must be able to understand it
2
6
Understanding the Problem Domain
System to be developed
Actors
• Agents external to the system
Concepts/ Objects
• Agents working inside the system
Use Cases
• Scenarios for using the system
2
7
ATM: Gallery of Players
1
4 2
7 5 3
8 6
0 9
Bank customer System Bank’s remote
(ATM machine) datacenter
Actors (Easy to identify because they are visible!)
2
8
Gallery of Workers + Things
Window clerk Datacenter Bookkeeper Safe keeper Dispenser
liaison
Speakerphone Telephone Transaction Safe Cash
record
Concepts (Hard to identify because they are invisible/imaginary!)
What is the difference between software
engineering and system engineering?
What is a software process?
A set of activities whose goal is the development or
evolution of software.
Generic activities in all software processes are:
• Specification - what the system should do and its
development constraints
• Development - production of the software system
• Validation - checking that the software is what the
customer wants
• Evolution - changing the software in response to
changing demands
3
1
Software Development Methods
Method = work strategy
The Feynman Problem-Solving Algorithm:
(i) Write down the problem (ii) think very hard, and (iii) write down
the answer.
Waterfall
Unidirectional, finish this step before moving to the next
Iterative + Incremental
Develop increment of functionality, repeat in a feedback loop
Agile
User feedback essential; feedback loops on several levels of
granularity
3
2
Waterfall Method
Requirements
Design
Implementation
Testing
Waterfall
method Deployment &
Maintenance
Unidirectional, no way back
finish this step before moving to the next
Waterfall Process Model
Requirements
definition
System and
software design
Implementation
and unit testing
Integr ation and
system testing
Operation and
maintenance
Evolutionary Process Model
Concurr ent
activities
Initial
Specification
version
Outline Intermediate
Development
description versions
Final
Validation
version
Spiral Process Model
Determine objectives
Evaluate alternatives
alternatives and identify, resolve risks
constraints Risk
analysis
Risk
analysis
Risk
analysis Opera-
Prototype 3 tional
Prototype 2 protoype
Risk
REVIEW analy sis Proto-
type 1
Requirements plan Simulations, models, benchmarks
Life-cycle plan Concept of
Operation S/W
requirements Product
design Detailed
Requirement design
Development
plan validation Code
Design Unit test
Integration
and test plan V&V Integr ation
Plan next phase test
Acceptance
Service test Develop, verify
next-level product
3
6
Software Measurement
What to measure?
• Project (developer’s work),
for budgeting and scheduling
• Product,
for quality assessment
3
7
Agile Project Effort Estimation
Estimated work duration
Work backlog
1) Prune Section 8 3.5 days (7pts)
2) Prune Section 7 2 days (4pts)
Items pulled by the team into an iteration
3) Prune Section 6 1 day (2pts)
4) Prune Section 5 2 days (4pts)
5) Prune Section 4 1.5 days (3p)
6) Prune Section 1 2 days (4pts)
7) Prune Section 2 3.5 days (7p)
8) Prune Section 3 5 days (10p)
Work items
21 days
1st iteration 2nd iteration n-th iteration
5 days
List prioritized by the customer Estimated completion date Time
Software Quality...
Usability
• Users can learn it and fast and get their job done easily
Efficiency
• It doesn’t waste resources such as CPU time and memory
Reliability
• It does what it is required to do without failing
Maintainability
• It can be easily changed
Reusability
• Its parts can be used in other projects, so reprogramming is
not needed
1. Testing is a process of executing a program
with the intent of finding an error.
2. A good test case is one that has a high
probability of finding a yet undiscovered
error.
3. A successful test is one that uncovers a yet
undiscovered error.
Testing Methods
Design patterns
Programs regularly employ similar design solutions
Idea is to standardise the way these are implemented
• Code re-use
• Increased reliability
• Fewer errors, shorter development time
An array is special case of a container type
• Way of storing a collection of possibly ordered elements.
• List, stack, queue, double-ended list, etc
Templates in C++ offer a way of providing libraries to
implement these standard containers
Future Experience
What will you be doing one year from now?
Ten years from now?
ESE — Introduction
Course schedule
Week Lesson
1 Introduction
2 The Software Lifecycle
3 Project Management
4 Requirements Collection
5 Waterfall lifecycle model
6 Iterative model
7 Agile model
8 Modeling Objects and Classes
9 UML
10 Software Architecture
11 User Interface Design
12 Software Metrics
13 Software Quality
14 Software Validation
© Oscar Nierstrasz ESE 1.43
Projects
Project teams, about 3 to 5 people.
Select your own project, any branch of software engineering
Real project for real client who intends to use the software in
production.
Presentations:
requirements
design
final
4
5
Team Projects
Project Ideas:
Real life idea
No more than two (2) groups working on the same
topic
Email your project idea ASAP, before proposal is due,
for feedback
[Link]@[Link]
4
6
Project Deliverables
Item Due week
1. Proposal 2
2. First report (Specification)
• Part 1 (Statement of Work & Requirements) 3
• Part 2 (Functional Requirements Spec & UI) 5
• Full Report #1 6
3. Second report (Design)
• Part 1 (Interaction Diagrams) 7
• Part 2 (Class Diagram and System Architecture) 8
• Full Report #2 9
4. First demo 10 ► ...
5. Third report (All reports collated) 11
6. Second demo 12► ...
7. Electronic Project Archive 13
Client (a.k.a Customer)
The client provides resources and expects some product in
return.
Client satisfaction is the primary measurement of success.
Question: Who is the client for Microsoft Excel?
END
48