0% found this document useful (0 votes)
27 views45 pages

2-The Software Problem

This is software engineering course slides for reference

Uploaded by

Pratik Solanki
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
Download as pdf or txt
0% found this document useful (0 votes)
27 views45 pages

2-The Software Problem

This is software engineering course slides for reference

Uploaded by

Pratik Solanki
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
Download as pdf or txt
Download as pdf or txt
You are on page 1/ 45

“People worry … that

computers will get too smart


The and take over the world, …
but the real problem is that
Software they're too stupid … and
they've already taken over
Problem the world…”

― Pedro Domingos, UoW

Atul Gupta

CS3010 Software Engineering 1


On the Problem front?

• Did you know the problem well before writing


the code?
• How was the problem expressed/defined?
• Was you aware of the end users using your
software? Did you happen to interreact with
them?
Your Software On the Design front?
Development • Did it/they have good design?
• Could the design be done better?
Experience …? • Was there any design at all?
• How do you know if the software had a good
design?
• How easy was to make changes in the code?
• Did small code changes cause ripple effect?
• Was your code hard to reuse?
• Was the software difficult to maintain after its
release?

CS3010 Software Engineering 2


On the Validation front?

• How did you know that the software does


what it supposed to do?
• Do you know validation approaches?
• Did you get the feedback of the end-users?

Your Software On the Process front?

Development • What process did you followed to develop


the software?
Experience …? • Steps/tasks?
• People roles and responsibility?
• How did you decide that the task was
completed?
• How did you know that the task was
done as it was supposed to be done?
• Was that the right process followed?

CS3010 Software Engineering 3


On the Project Management front?

• Did you get your estimates in


place?
- Amount of work?
- Resources?
Your Software - Time required in
chronological month?
Development - Cost of the
software/project
Experience …? • Planning?
• Scheduling and tracking?
• Release planning and
configuration management?
• Quality Assurance?

CS3010 Software Engineering 4


Last Lecture:
Student’s Software vs. Industrial Software
• Student Software
– Mostly to demonstrate, no real client/user
– Mainly coding
– Business value ?
– Buggy, Lack of desired quality
– Ad hoc process followed
– Not to be maintained or upgraded
• Industrial Software
– Some definite client/users
– Coding is a small part of the efforts
– Business value
– Have to be of high quality
– A Systematic, disciplined, and quantifiable process is followed
– Have to be maintained and upgraded

CS3010 Software Engineering 5


LOs
• Why Software Development is a Complex
Process?
• Where is the complexity?
• What are the 4 P’s of Software Development/
Engineering?

CS3010 Software Engineering 6


Software Development is Complex

Complexity would come from


– The Problem/Application Domains
• They can be very complex – Railway/airline ticket booking systems,
ERPs, SNSs, Financial Services, Utilities – Ola, UC, OS/Compilers/DBMS,
… , and many many more …
• The developers may not be the domain experts
• The Client/Customer
– Communication (among stakeholders)
• They come from different background/know-how
• They might use different vocab
• Natural languages are inherently ambiguous and complicated
– Size of the Problem
• Managing Large S/W projects becomes even more complicated…
– The Solution Domain
• The Software Stack, IDEs, Frameworks, Tools
• Coding, Testing, Change Management, Releases, Bug fixing
CS3010 Software Engineering 7
Software Development is Complex

Complexity would come from


– The Problem/Application Domains
• They can be very complex – Railway/airline ticket booking systems,
ERPs, SNSs, Financial Services, Utilities – Ola, UC, OS/Compilers/DBMS,
… , and many many more …
• The developers may not be the domain experts
• The Client/Customer
– Communication (among stakeholders)
• They come from different background/know-how
• They might use different vocab
• Natural languages are inherently ambiguous and complicated
– Size of the Problem
• Managing Large S/W projects becomes even more complicated…
– The Solution Domain
• The Software Stack, IDEs, Frameworks, Tools
• Coding, Testing, Change Management, Releases, Bug fixing
CS3010 Software Engineering 8
Software
Development
in 60’s
• The moon was
promised …..

CS3010 Software Engineering 9


Software
Development
in 60’s
• A lunar rover was
built …..

CS3010 Software Engineering 10


Software
Development
in 60’s
• A pair of square
wheels were
delivered…..

CS3010 Software Engineering 11


Nature of Software Development:
The Past
• IBM survey, 1994
– 55% of systems cost more than expected
– 68% overran schedules
– 88% had to be substantially redesigned
• Advanced Automation System (Federal Aviation Administration, 1982-1994)
– industry average was $100/line, expected to pay $500/line
– ended up paying $700-900/line
– $6B worth of work discarded
• Bureau of Labor Statistics (1997)
– for every 6 new systems put into operation, 2 cancelled
– probability of cancellation is about 50% for biggest systems
– average project overshoots schedule by 50%
– 3/4 systems were regarded as ‘operating failures’

CS3010 Software Engineering 12


And you need
to deliver
software…
Within the budget, the schedule, and user
perceived quality…

CS3010 Software Engineering 13


Magnitude of the
Problem:
Some Instances
“To err is human, but to really foul things up
you need a computer.”
–Paul Ehrlich

CS3010 Software Engineering 14


– Approved in 1989
– Aimed to reduce flight delays, shorten
waiting times at luggage carousels, and
save airlines in labor costs at Denver
– Planned to be operational by the end of
Denver 1993
– 53 sq. miles
Airport – 5 runaways, with possibly 12 in future
– 3 landing simultaneously in all weather
Baggage conditions
– 20 major airlines
System – Initial Estimates $186 M
– 4000 telecars carry luggage across 21
miles of track
– Laser scanners read barcodes on luggage
tags
– Photocells tracked telecars movement
– Controlled by 300 computers …
CS3010 Software Engineering 15
• Results
– Crippled by many Software bugs
Denver – Telecars were misrouted and
crashed
Airport – $1.1 M/day loss due to non
operational
Baggage – Airport opened in 1995
– $88 M spent extra on Baggage
System system
– Only one airline used it and that too
cont. for outgoing flight
– Costed $4.2 B
– A complete failure

CS3010 Software Engineering 16


• Radiotherapy machine with
software controller
• Software failed to maintain
essential invariants: either electron
beam mode or stronger beam and
plate intervening, to generate X-
Therac- rays
25 (1985- • Several deaths due to burning
• Programmer had no experience
87) with concurrent programming
see:
http://sunnyday.mit.edu/therac-
25.html

CS3010 Software Engineering 17


• European Space Agency
• Complete loss of unmanned rocket
shortly after takeoff
• Failure due to exception thrown in Ada
code
Ariane-5 • The faulty code was not even needed
after takeoff
(4th June • It was due to change in physical
environment: undocumented
1996) assumptions violated
• see:
http://sunnyday.mit.edu/accidents/Aria
ne5accidentreport.html

CS3010 Software Engineering 18


• loss of calls, double
dispatches from duplicate
calls
• Media reports - up to 30
London people may have died as a
Ambulance result of the chaos.
Service • poor choice of developer:
inadequate experience
(1992)
• see:
http://www.cs.ucl.ac.uk/staff/
A.Finkelstein/las.html

CS3010 Software Engineering 19


And the List is endless …

• Lost Voyager Spacecraft (one


bad line of code caused failure)
• 3 Mile Island in
Pennsylvania(poor user
interface design)
• Commercial aircraft
accidentally shot down during
Gulf War (poor user interface)
• Y2K Bug …
• Mars Climber Orbiter (1999)
• Boeing 737 MAX MCAS System
causing two deadly crashes
(2018-19)

CS3010 Software Engineering 20


“The demand for software has grown far
faster than our ability to produce it.
Furthermore, the Nation needs software
that is far more usable, reliable, and
powerful than what is being produced
Sensing the today. We have become dangerously
dependent on large software systems
Problem … whose behavior is not well understood
and which often fail in unpredicted
ways.”

Information Technology Research: Investing in Our


Future President’s Information Technology
Advisory Committee (PITAC) Report to the
President, February 24, 1999
- Available at
http://www.ccic.gov/ac/report/
CS3010 Software Engineering 21
What’s Wrong Here…?

• Since then, the ‘software’ problem is actively investigated and


researched …
• Everything has been blamed …
– Customer
• What to you mean…I can’t get the moon for $50?
– ‘Soft’ in the software
• If I could add one last feature …
– Process?
– Young discipline
– Insufficient validation … and many more

CS3010 Software Engineering 22


What’s Wrong Here…?

Actually, the problem lies in …

Complexity
• The application domain
• The solution domain
• People
• Project Management

Change
• Requirements
• Changes in technologies
• Bug fixing

CS3010 Software Engineering 23


The Software Problem (4 P’s)
• The Product

• The Process

• The People
… and managing them all…! (The Project)
CS3010 Software Engineering 24
The Product

"Software is like a toddler: it might throw a


tantrum if you don't give it exactly what it
wants, but you're the one who ends up
needing a timeout."

CS3010 Software Engineering 25


The Product

• Software is soft, abstract, not a concrete object like a


bridge
• Software is Developed rather than “Manufactured” in
the classical sense
• Costs are almost all human
• Easy to fix bugs, but hard to test and validate
• Software typically never wears out...but the
hardware/OS platforms it runs on do

CS3010 Software Engineering 26


The Process
"Software development is like cooking. Even with the best
ingredients, a little too much heat can turn a masterpiece into a
hot mess.”

Image Courtesy: https://www.freepik.com/premium-vector/woman-cook-opens-oven-releasing-smoke-from-overcooked-meat-due-inattention-wrong-recipe_46957544.htm


The Process
"Software development is like cooking. Even with the best
ingredients, a little too much heat can turn a masterpiece into a
hot mess.”
"Software development is like cooking without tasting – you only know if it's
a masterpiece after you've served it to the world and the critics have had
their say."

Image Courtesy: https://www.statefoodsafety.com/Resources/Resources/is-left-right


The Process
"Software development is like cooking. Even with the best
ingredients, a little too much heat can turn a masterpiece into a
hot mess.”
"Software development is like cooking without tasting – you only know if it's
a masterpiece after you've served it to the world and the critics have had
their say."

"Too many cooks spoil the dish."

Image Courtesy: Glenn Morison on http://www.quakerquaker.org


The Process
• A phased development
– Requirements Specification
• Functional and Non-Functional Req. (Traceable and Testable)
RUP
• Additional Constraints
• Interfaces to other systems including UI
– Analysis Modeling
• Use cases
• Interaction Models
• Object Model (Problem Domain)
XP
– Design
• System Design
• Object Design
– Construction (Coding)
– Testing
• At Different levels – Unit, Integration, System, User SCRUM
• Regression Testing
• Specialized Testing like performance, security, load, Stress testing
– Operation and Maintenance
• Deployment
• Change Management
CS3010 Software Engineering 30
The People

"Software developers: Turning caffeine into code and errors


into features since 1960”

"Developers don't sleep, they just enter 'Standby'


mode."

"Developers: Solving problems you didn't know you had in


ways you don't understand."

CS3010 Software Engineering 31


The People
• Technical Skills
• Intra- and Inter-personal-Skills
– Communication
– Feedback
– Courage
– Motivation
– Analytical
– Accountable
– Discipline

CS3010 Software Engineering 32


• Roles
– Product Manager
The People (Business Analyst)
– Project Manager
– Product Designer
(Technical Architect)
– Developer
– QA Person (Tester)

CS3010 Software Engineering 33


"Product Managers: The brave
translators between the land of
code and the realm of user
requests."
Product
Manager "Product managers: Turning 'I think
(Business we need this' into 'We definitely
needed that.'"
Analyst)
"Product managers: The unsung
heroes who turn 'It can't be done'
into 'It's already done.'"

CS3010 Software Engineering 34


The person who makes sure that we
build the right product for our users
and for company…

Product – is going to provide business/market


validation for large product and
Manager business decisions
– is making sure that what we build has a

(Business realistic product and market fit


– comes up with ideas that facilitate the
success of our business model through
Analyst) useful features
– mandates creating new, removing old,
updating existing features
– is making sure our product strategy has
a vision, time-line and plan

CS3010 Software Engineering 35


"Product designers: We make
interfaces so intuitive, even your
grandmother thinks she's a
computer genius."
Product
Designer "Product designers: Making sure
users never have to ask, 'Wait,
(Technical what does this button do?'"
Architect)
"Product designers: Adding the
'user' in 'user interface' and the
'experience' in 'user experience'."

CS3010 Software Engineering 36


The Person who make sure the
product is actually good, looks great,
and works well…

Product – works out about how users are


actually going to use our features
Designer and what those features will look
like
(Technical – is going to make/take wireframes
and turn them into something
Architect) someone can actually use
– is going to design a product that is
visually/functionally comparable to
the industry standards/competitors

CS3010 Software Engineering 37


The person who make sure that the
project we are engineering actually
gets successfully finished within all
constraints…
The – is making project estimations, to give
realistic timelines for launch
People – is protecting the time of the engineers,
keeping the development train moving
(Project and free from endless planning meetings
– is keeping track of the overall progress of
the engineering efforts
Manager) – is ensuring that the 2 months planned for
testing hasn’t been shrunk to 1 week due
to unrealistic deadlines
– keeps engineering efforts focused and on
task when inevitable distractions arise

CS3010 Software Engineering 38


Who can be assigned any
development related stuff

– Documentation
The – Coding
Developer – Code Reviews
– Debugging

CS3010 Software Engineering 39


"QA testers: Finding bugs, so
developers can have job
security."

The QA "QA testers: We break things


so that users don't have to!"
Person
"QA: Turning software from 'It
works on my machine' to 'It
works, period.'"

CS3010 Software Engineering 40


To be assigned any Quality
Assurance Activities like

– Integration and System Testing


– Auditing and reporting
The QA – Document reviews
Person – Creating and maintaining
bugs/issues data
– Performing Verification and
Validation

CS3010 Software Engineering 41


The Project Management

“By failing to prepare, you are


preparing to fail”.
― Benjamin Franklin

CS3010 Software Engineering 42


Project Management Process/
Activities
• Project Planning
– Process Planning
– Estimation (Cost, Schedule, Resources,
Risk)
– Risk Management Planning
– Quality management planning
– Change management planning
• Scheduling and Tracking
• Risk Management
• Quality Assurance
• Change Management and
Configuration Control
8/7/2023 43
Lecture Summary
• Software problem is a complex problem where
complexities coming from many perspectives
• Software development has a big history of
software project failures
• A software problem can be described using 4 P’s
– Product (Software)
– Process (Development)
– People (Roles and responsibilities)
– Project Management
CS3010 Software Engineering 44
“By failing to prepare, “I am for doing good to the poor, but...I think
you are preparing to the best way of doing good to the poor, is not
fail”. making them easy in poverty, but leading or
"When you're finished driving them out of it. I observed...that the
changing, you're finished.“ more public provisions were made for the
poor, the less they provided for themselves,
Either write something and of course became poorer. And, on the
worth reading or do contrary, the less was done for them, the
something worth writing.
more they did for themselves, and became
richer.”
― Benjamin Franklin
“It is the first
responsibility of
“We must all hang together, or assuredly we shall all hang separately.”
every citizen to ― Benjamin Franklin
question authority.”

CS3010 Software Engineering 45

You might also like