Size of Software Industry:: USD 500 Billion
Size of Software Industry:: USD 500 Billion
(Gartner 2019)
Successful
Projects 27% 31% 28% 29% 32%
Challenged
Projects 56% 50% 55% 52% 49%
Failed
Projects 17% 19% 17% 19% 19%
Lifecycle
Requirements Design Coding Testing Deployment Maintenance
Analysis
Maintenance
Software Engineers?
Adopt a systematic and organized approach,
effectively, to produce high quality software
May have to use Ad hoc approaches to develop
software
Some real complex problems may not be solved using
elegant theories of CS
What is a Good Software Product?
Good software engineering must always include a
strategy for producing quality software
Product Quality?
Multiple facets…
What is a Good Software Product?
Users judge external characteristics (e.g., correct
functionality, number of failures, type of failures)
Designers and maintainers judge internal
characteristics (e.g., ease of modification)
Thus different stakeholders may have different criteria
Need quality models
McCall’s Quality Model
Lehman’s Laws
(1974) "Continuing Change" — A system must be continually
adapted or it becomes progressively less satisfactory. It happens so
until it becomes economical to replace it by a new or a restructured
version
(1974) "Increasing Complexity/Entropy" —Complexity/entropy of a
system increases with time, unless work is done to maintain or
reduce it
(1991) "Continuing Growth" — the functional content of a system
must be continually increased to maintain user satisfaction over its
lifetime
(1996) "Declining Quality" — the quality of a system will appear to
be declining unless it is rigorously maintained and adapted to
operational environment changes
Software Engineering Principles
Some principles are:
Rigor and Formality
Precision and exactness
Assessment of engineering activity and the results
Separation of Concerns
Flow of data and flow of control
Correctness and efficiency
Parts of system
Modularity
Anticipation of Change
Software and Defects?
Software vs Engine (wear-out???)
Software vs House
Software vs Cars (models? Versions?)
l e ve
Stability???? ab
le te n si
a l
Problems??? Defects??? M in
an
um
H
Software Engineering Challenges
Acceptable Quality
Usability
Security
Reliability
Performance
Conflicts?
Cost Effectiveness
Engineering and operational feasibility
Manage
Limited development budget
Timely Completion
Limited time Conflicts…
Software Engineering
Disciplined, consistent, and systematic effort to
construct (design + build) and maintain good quality
software in timely and cost-effective manner
How Successful Have We Been
Perform tasks more quickly and effectively
Word processing, spreadsheets, e-mail
Support advances in medicine, agriculture,
transportation, multimedia education, and most
other industries
Many good stories
However, software is not without problems (recall the
Standish report on challenged and failed projects???)
How Successful Have We Been
IRS hired Sperry Corporation to build an automated
federal income tax form processing system
An extra $90 M was needed to enhance the original $103 product
IRS lost $40.2 M on interests and $22.3 M in overtime wages
because refunds were not returned on time
Malfunctioning in Therac-25 killed several people
Reliability constraints have caused cancellation of many
safety critical systems
Safety-critical: something whose failure poses a threat to life or
health
Terminology for Describing Bugs
A fault: occurs when a human makes a mistake, called
an error, in performing some software activities
A failure: is a departure from the system’s required
behaviour
CS and SE
Programming languages
can we implement an OO design in absence of an OO programming language?
… modularity, packages, …
Operating systems
Part of OS as a utility program? CLI?
Microkernel?
Databases
Use data without knowing underlying representation of data
Db as component of large software systems
Artificial intelligence
Expert system shells
Programming and Testing assistants??
Theoretical computer science… e.g. Automata
SE and Other Disciplines
Management Science
Estimation, scheduling, human resource planning, task
decomposition and assignment, project tracking etc.
Systems Engineering
A Systems Approach
Hardware/Software
People
Interactions
A Systems Approach (Contd.)
Objects
i.e. things
Activities
Actions taken
Input / Outputs
Relationships for example:
Which object performs what activities
Which objects are associated with other objects
System Boundary
Who generates input and who receives output
Which objects/activities are part of the system and which are not
Nested systems, related systems, interrelated systems
A Systems Approach (Contd.)
Example of systems: a human respiratory system
??
A Systems Approach (Contd.)
A computer system must also be clearly described:
System definition of a paycheck production
An Engineering Approach
Idea to build a house
Asking someone to build the house
Explaining requirements
Getting designs
Modifying + Approving designs Building a
Inspecting the construction House
Adding new features
Testing household components
Moving in
Getting issues fixed after moving in
An Engineering Approach
Determine and Analyze Requirements
Produce and Document Overall Design
Produce Detailed Specifications
Identify and Design Components
Build Components Building a
Test Components
Integrate Components
House
Make final modifications after residents
move in
Continue Maintenance by the Residents
An Engineering Approach
Requirement analysis and definition
System design
Program design
Writing the programs
Unit testing Building a
Integration testing System
System testing
System delivery
Maintenance
Information Systems Example
Piccadilly System
Piccadilly Television: regional British TV franchise
Advertising scheme has many constraints:
Cigarette adverts only after 9 pm
if actor in show, no same actor in advert within 45
minutes
if advert in a class of products, no other advert in same
class during same break
rates dependent on amount of time bought
Software to determine, track advertising time
Information Systems Example
Piccadilly System (continued)
Piccadilly system’s context diagram
Real Time Example
Ariane-5 rocket, from the European Space Agency
June 4, 1996: functioned well for 40 seconds, then
veered off course and was destroyed
Contained four satellites: cost was $500 million
Reused code from Ariane-4 rocket
Real Time Example
Ariane-5 Definition of Quality
From the Lions et al report:
“… demonstrated the high quality of the Ariane-5
programme as regards engineering work in general and
completeness and traceability of documents.”
“… the supplier of the SRI … was only following the
specification given to it. … The exception which
occurred was not due to random failure but a design
error.”