Download as pdf or txt
Download as pdf or txt
You are on page 1of 47

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

You might also like