Software
Engineering
JOSEPHINE E. PETRALBA
What is Software
Engineering?...
The process of solving customers’ problems by the systematic
development and evolution of large, high-quality software systems
within cost, time and other constraints.
Solving customers’ problems
◦ This is the goal of software engineering
◦ Sometimes the solution is to buy, not build
◦ Adding unnecessary features does not help solve the problem
◦ Software engineers must communicate effectively to identify and
understand the problem
8/23/2021 Introduction to Software Engineering 2
What is Software
Engineering?…
Systematic development and evolution
An engineering process involves applying well understood
techniques in a organized and disciplined way
Many well-accepted practices have been formally standardized
e.g. by the IEEE or ISO
Most development work is evolution
8/23/2021 Introduction to Software Engineering 3
Software Engineering
“The establishment and use of sound engineering principles in order to obtain
economical software that is reliable and works efficiently on real
machines.”(Bauer, 1969)
“The systematic approach to the development, operation, maintenance and
retirement of software.” (IEEE Standard Glossary of Software Engineering,
IEEE83)
8/23/2021 Introduction to Software Engineering 4
“Software Engineering is the technological and managerial discipline
concerned with sytematic production and maintenance of software
products that are developed and modified on time and within cost
estimates.”(Fairley, 1985)
“Software Engineering is about designing and developing high-quality.”
(Pfleeger, 1992)
8/23/2021 Introduction to Software Engineering 5
What is Software
Engineering?…
Cost, time and other constraints
• Finite resources
• The benefit must outweigh the cost
• Others are competing to do the job cheaper and faster
• Inaccurate estimates of cost and time have caused many project failures
8/23/2021 Introduction to Software Engineering 6
8/23/2021 INTRODUCTION TO SOFTWARE ENGINEERING 7
Software Engineering
is the integration of methods, tools and procedures for the systematic
planning, development and maintenance of quality software based on
time, money and personnel constraints.
8/23/2021 Introduction to Software Engineering 8
Large, high quality software systems
• Software engineering techniques are needed because large systems cannot be
completely understood by one person
• Teamwork and co-ordination are required
• Key challenge: Dividing up the work and ensuring that the parts of the system
work properly together
• The end-product that is produced must be of sufficient quality
8/23/2021 Introduction to Software Engineering 9
Software Engineering and the
Engineering Profession
The term Software Engineering was coined in 1968
◦ People began to realize that the principles of engineering should be applied
to software development
8/23/2021 Introduction to Software Engineering 10
Engineering is a licensed profession
In order to protect the public
Engineers design artifacts following well accepted practices which involve
the application of science, mathematics and economics
Ethical practice is also a key tenet of the profession
8/23/2021 Introduction to Software Engineering 11
Software Crisis
Projects running over-budget.
Projects running over-time.
Software was very inefficient.
Software was of low quality.
Software often did not meet requirements.
Projects were unmanageable and code difficulty to maintain.
Software was never delivered.
8/23/2021 INTRODUCTION TO SOFTWARE ENGINEERING 12
Types of Software
Systems Software – typically deals with interfacing
with hardware and provides services to application
software. Ex.:
◦ Operating systems,
◦ Language compilers,
◦ assemblers,
◦ device drivers,
◦ Debuggers
◦ Networking tools and software
8/23/2021 INTRODUCTION TO SOFTWARE ENGINEERING 13
Application Software – referred to as end user software,
allows users to perform their tasks.
◦ Main applications software categories:
◦ Games and entertainment
◦ Intelligent systems
◦ Modeling and Simulation for military, financial,
medical, etc.
◦ Real time : control systems, missile control systems,
air traffic control systems, network security software
8/23/2021 INTRODUCTION TO SOFTWARE ENGINEERING 14
◦ Embedded : home appliance controllers, mobile
phone software and vehicle controllers
◦ Productivity: Word processing, Autocad, Rational
Rose, Project Management, etc.
◦ Enterprise: business workflow management
software, customer relation management software
and supply chain management software.
8/23/2021 INTRODUCTION TO SOFTWARE ENGINEERING 15
◦ Web-based : CMS, electronic commerce software,
web portal, web browsers
◦ Educational : school and university mgt, distance
learning, training mgt, educational software
◦ Multimedia : video, image, sound editing and
mgt, 3D and animation, virtual reality
◦ Domain specific : for banking, finance and stocks,
accounting, medical, airline reservation, hospital
mgt, and human resource mgt.
8/23/2021 INTRODUCTION TO SOFTWARE ENGINEERING 16
The Nature of Software...
Software is intangible
◦ Hard to understand development effort
Software is easy to reproduce
◦ Cost is in its development
◦ in other engineering products, manufacturing is the costly stage
The industry is labor-intensive
◦ Hard to automate
8/23/2021 Introduction to Software Engineering 17
The Nature of Software ...
Untrained people can hack something together
– Quality problems are hard to notice
Software is easy to modify
– People make changes without fully understanding it
Software does not ‘wear out’
– It deteriorates by having its design changed:
• erroneously, or
• in ways that were not anticipated, thus making it complex
8/23/2021 Introduction to Software Engineering 18
Categories of Software...
Custom
For a specific customer
Generic
Sold on open market
Often called
COTS (Commercial Off The Shelf)
Shrink-wrapped
Embedded
Built into hardware
Hard to change
8/23/2021 Introduction to Software Engineering 19
8/23/2021 INTRODUCTION TO SOFTWARE ENGINEERING 19
Differences among custom,
generic and embedded software
Custom Generic Embedded
Number of copies in use low medium high
Total processing power low high medium
devoted to running this type
of software
Worldwide annual high medium low
development effort
8/23/2021 INTRODUCTION TO SOFTWARE ENGINEERING 20
The Nature of Software
Conclusions
Much software has poor design and is getting worse
Demand for software is high and rising
We are in a perpetual ‘software crisis’
We have to learn to ‘engineer’ software
8/23/2021 Introduction to Software Engineering 21
Software Myths Reality
oIf we get behind schedule, o Software development is
we can add more not a mechanistic process
programmers and catch up. like manufacturing.
(Mongolian horde “Adding people to a late
concept) software project makes it
later.”
8/23/2021 Introduction to Software Engineering 22
Software Myths Reality
oA general statement of o An ambiguous statement
objectives is sufficient to of objectives is a recipe for
begin writing programs – we disaster.
can fill in the details later.
8/23/2021 Introduction to Software Engineering 23
Software Myths Reality
oA general statement of o An ambiguous statement
objectives is sufficient to of objectives is a recipe for
begin writing programs – we disaster.
can fill in the details later.
8/23/2021 Introduction to Software Engineering 24
Software Myths Reality
Project requirements Change can cause upheaval
continually change, but that requires additional
change can be easily be resources and major design
accomodated because modifications.
software is flexible.
8/23/2021 Introduction to Software Engineering 25
Software Myths Reality
Once we write the program The sooner you begin writing
and get it to work, our job is code, the longer it’ll take you
done. to get done.
8/23/2021 Introduction to Software Engineering 26
Software Myths Reality
Until I get the program Software reviews are a
running, I have no way of quality filter that have been
assessing its quality found to be more effective
than testing for finding
certain classes of software
errors.
8/23/2021 Introduction to Software Engineering 27
Software Myths Reality
The only deliverable work The working program is only
product for a successful one part of a software
project is the working configuration that includes
program. many elements.
8/23/2021 Introduction to Software Engineering 28
Software Myths Reality
Software engineering will Software engineering is not
make us create voluminous about creating documents. It
and unnecessary is about creating quality.
documentation and will
invariably slow us down.
8/23/2021 Introduction to Software Engineering 29
Software Myths
Still believed by many managers and practitioners
Insidious because they do have elements of truth
Every practitioner and manager should understand the reality of the
software business
8/23/2021 Introduction to Software Engineering 30
Stakeholders in Software Engineering
1. Users
◦ Those who use the software
2. Customers
◦ Those who pay for the software
3. Software developers
4. Development Managers
All four roles can be fulfilled by the same person
8/23/2021 Introduction to Software Engineering 31
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
8/23/2021 Introduction to Software Engineering 32
Software Quality...
Maintainability
◦ It can be easily changed
Reusability
◦ Its parts can be used in other projects, so reprogramming is not needed
8/23/2021 Introduction to Software Engineering 33
Software Quality...
Customer: User:
solves problems at easy to learn;
an acceptable cost in efficient to use;
terms of money paid and helps get work done
resources used
QUALITY
SOFTWARE
Development manager:
Developer: sells more and
easy to design; pleases customers
easy to maintain; while costing less
easy to reuse its parts to develop and maintain
8/23/2021 Introduction to Software Engineering 34
Software Quality...
The different qualities can conflict
Increasing efficiency can reduce maintainability or reusability
Increasing usability can reduce efficiency
Setting objectives for quality is a key engineering activity
You then design to meet the objectives
Avoids ‘over-engineering’ which wastes money
Optimizing is also sometimes necessary
E.g. obtain the highest possible reliability using a fixed budget
8/23/2021 Introduction to Software Engineering 35
Internal Quality Criteria
These:
◦ Characterize aspects of the design of the software
◦ Have an effect on the external quality attributes
◦ E.g.
◦ The amount of commenting of the code
◦ The complexity of the code
8/23/2021 Introduction to Software Engineering 36
Short Term Vs. Long Term
Quality
Short term:
◦ Does the software meet the customer’s immediate needs?
◦ Is it sufficiently efficient for the volume of data we have today?
Long term:
◦ Maintainability
◦ Customer’s future needs
8/23/2021 Introduction to Software Engineering 37
Software Engineering Projects
Most projects are evolutionary or maintenance projects, involving work
on legacy systems
Corrective projects: fixing defects
Adaptive projects: changing the system in response to changes in
Operating system
Database
Rules and regulations
Enhancement projects: adding new features for users
Reengineering or perfective projects: changing the system internally so it
is more maintainable
8/23/2021 Introduction to Software Engineering 38
Software Engineering Projects
Projects that involve building on a framework or a set of existing
components.
◦ The framework is an application that is missing some important details.
◦ E.g. Specific rules of this organization.
◦ Such projects:
◦ Involve plugging together components that are:
◦ Already developed.
◦ Provide significant functionality.
◦ Benefit from reusing reliable software.
8/23/2021 Introduction to Software Engineering 39
Activities Common to
Software Projects...
Requirements and specification
◦ Includes
◦ Domain analysis
◦ Defining the problem
◦ Requirements gathering
◦ Obtaining input from as many sources as possible
◦ Requirements analysis
◦ Organizing the information
◦ Requirements specification
◦ Writing detailed instructions about how the software should behave
8/23/2021 Introduction to Software Engineering 40
Activities Common to
Software Projects...
Design
◦ Deciding how the requirements should be implemented, using the available
technology
◦ Includes:
◦ Systems engineering: Deciding what should be in hardware and what in software
◦ Software architecture: Dividing the system into subsystems and deciding how the subsystems will interact
◦ Detailed design of the internals of a subsystem
◦ User interface design
◦ Design of databases
8/23/2021 Introduction to Software Engineering 41
Activities Common to
Software Projects
Modeling
Creating representations of the domain or the software
Use case modeling
Structural modeling
Dynamic and behavioural modeling
Programming
Quality assurance
Reviews and inspections
Testing
Deployment
Managing the process
8/23/2021 Introduction to Software Engineering 42
Causes of
Project/Product Failures
1. Failure to meet project or market requirements
2. Technical complexity
3. Inaccurate budgeting or planning
4. Design/implementation errors
8/23/2021 INTRODUCTION TO SOFTWARE ENGINEERING 43
The Goals of Most Projects
1. On time and within budget
2. High level of quality
3. Meets requirements
8/23/2021 INTRODUCTION TO SOFTWARE ENGINEERING 44
Difficulties and Risks
in Software Engineering
• Complexity and large numbers of details
• Uncertainty about technology
• Uncertainty about requirements
• Uncertainty about software engineering skills
• Constant change
• Deterioration of software design
• Political risks
8/23/2021 Introduction to Software Engineering 45
Important Questions for Software Engineers
Why does it take so long to get software finished?
Why are development costs so high?
Why can’t we find all errors before we give the software to
our customers?
Why do we continue to have difficulty in measuring progress
as software is being developed?
8/23/2021 INTRODUCTION TO SOFTWARE ENGINEERING 46
Points to Ponder:
As software becomes more pervasive, risks to public(due to faulty
programs) become an increasingly significant concern. Develop a
realistic doomsday scenario where the failure of a computer program
could do great harm (either economic or human) .
8/23/2021 INTRODUCTION TO SOFTWARE ENGINEERING 47