0% found this document useful (0 votes)
64 views40 pages

Size of Software Industry:: USD 500 Billion

The software industry is a large global industry worth over $500 billion annually. Global IT spending is $3.8 trillion annually. However, most software projects face challenges - between 2012-2016 only 27-32% of projects were successful, 49-55% were challenged, and 17-19% failed. Factors affecting project success rates include project size/complexity, customer satisfaction, development processes, and skills of developers/managers. Software engineering aims to systematically develop quality software within cost and time constraints through practices like requirements analysis, design, testing, and maintenance.

Uploaded by

xxx
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
64 views40 pages

Size of Software Industry:: USD 500 Billion

The software industry is a large global industry worth over $500 billion annually. Global IT spending is $3.8 trillion annually. However, most software projects face challenges - between 2012-2016 only 27-32% of projects were successful, 49-55% were challenged, and 17-19% failed. Factors affecting project success rates include project size/complexity, customer satisfaction, development processes, and skills of developers/managers. Software engineering aims to systematically develop quality software within cost and time constraints through practices like requirements analysis, design, testing, and maintenance.

Uploaded by

xxx
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 40

Size of Software Industry: > USD 500 billion

(Gartner 2019)

Global IT Spending: USD 3.8 trillion


(Gartner 2019)
Challenges for Software Industry
2012 2013 2014 2015 2016

Successful
Projects 27% 31% 28% 29% 32%

Challenged
Projects 56% 50% 55% 52% 49%

Failed
Projects 17% 19% 17% 19% 19%

Report for Year 2012 to 2016 (Standish 2016)


Factors Project Size and Complexity
Affecting are Customer Satisfaction Level
Project Success Development and Budget Process
Rate Skills of Developers and Managers
Why is SE Needed?
Computers everywhere
Toaster, Microwave, Temperature control of A/C,
Router, Surgical Equipment…
Computers need to be managed
Software runs on all computers
 Make lives comfortable, efficient, effective…
SE practices ensure development of good
software to improve our living standard
Solving Problems
Analysis
Solving Problems (continued)
Synthesis
Software Engineering
Solving Problems
Computers
Computing
Software?
Computer programs along with associated
configuration data and documentation s.t. the
programs are correctly operated
Configuration data helps set up the programs
System documentation helps understand structure of
the system
User documentation explains how to use the system
Engineering?
Engineers’ Job?
Make things work
Apply theories, methodologies, tools appropriately
Provide solutions in absence of applicable theories and
methods
Realize financial and organizational constraints
Software Engineering
Solving problems that involve computing and
computers?
Solving problems that involve computing and
computers in a consistent/systematic manner?
A set of guidelines for solving the computing and
computer related problems in a systematic
manner?
Engineering software by remaining concerned
about all aspects of software production?
Aspects of Software Production?
Technical process of developing software
Activities such as management of project and teams
Development of tools, theories, methods to support
production of software
Who Does Software Engineering?
Participants (stakeholders) in a software development
project
Development Team
Requirement analysts: work with the customers to
identify and document the requirements
Designers: generate a system-level description of what the
system is supposed to do
Programmers: write lines of code to implement the
design
Testers: catch faults
Trainers: show users how to use the system
Maintenance team: fix faults that show up later
Librarians: prepare and store documents such as software
requirements
Configuration management team: maintain
correspondence among various artefacts
Development Team (Roles)
Who Does What?
Paradigm Resources

Process Software Skillset


Engineering

Lifecycle
Requirements Design Coding Testing Deployment Maintenance
Analysis

Typical phases in lifecycle of software


Software Lifecycle
Phases
Requirements analysis and definition
System (architecture) design
Program (detailed/procedural) design
Writing programs (coding/implementation)
Testing: unit, integration, system
System delivery (deployment)

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.”

You might also like