Lecture 1
SOFTWARE ENGINEERING I
CHAPTER # 1:
INTRODUCTION
Teacher: Dr Brekhna
1
CONTENTS:
1. What is software engineering?
2. Why is it important?
3. Application Types
4. Well Engineered s/w
5. Software Engineering and Economy
6. Difference between Software Engineering and
Computer Science
7. Difference between Software Engineering and
System Engineering
8. Difference between Software and other Systems
9. What is balancing act and how apply in software
engineering?
2
1. SOFTWARE ENGINEERING
I: WHAT IS A SOFTWARE?
The term software engineering is
composed of two words, software and
engineering.
Software is “Computer programs and
associated documentation”
3
SOFTWARE ENGINEERING
II: WHAT IS ENGINEERING?
Engineering on the other hand, is all about
developing products, using well-defined,
scientific principles and methods.
“The process of productive use of scientific
knowledge is called engineering.”
So, we can define software engineering as an
engineering branch associated with the
development of software product using well-
defined scientific principles, methods and
procedures.
The outcome of software engineering is an
efficient and reliable software product.
4
SOFTWARE ENGINEERING
II: WHAT IS ENGINEERING?
IEEE defines software engineering as:
The application of a systematic, disciplined,
quantifiable approach to the development,
operation and maintenance of software.
5
SOFTWARE ENGINEERING
• Software Engineering is the science and art
of building significant software systems that
are:
on time
within budget
with acceptable performance
with correct operation.
6
SOFTWARE ENGINEERING
Software Engineering is the set of processes
and tools to develop software.
Software Engineering is the combination of
all the tools, techniques, and processes that
used in software production.
Therefore Software Engineering encompasses
all those things that are used in software
production like:
7
SOFTWARE ENGINEERING
Programming Language
Programming Language Design
Software Design Techniques
Tools
Testing
Maintenance
Development etc.
Soall those thing that are related to software
are also related to software engineering.
8
2. WHY S/W ENGINEERING
Undoubtedly software is playing a vital role
in all the field of life these days.
We can see many software applications being
operated around us in our daily routine.
The need of software engineering arises
because of higher rate of change in user
requirements and environment on which the
software is working.
9
3. APPLICATION TYPES
Stand-alone applications
These are application systems that run on a local
computer, such as a PC. They include all necessary
functionality and do not need to be connected to a
network.
Interactive transaction-based applications
Applicationsthat execute on a remote computer and are
accessed by users from their own PCs or terminals. These
include web applications such as e-commerce
applications such as Internet banking.
Embedded control systems
Theseare software control systems that control and
manage hardware devices. Numerically, there are
probably more embedded systems than any other type of
system.
10
APPLICATION TYPES...
Batch processing systems
Theseare business systems that are designed to
process data in large batches. They process large
numbers of individual inputs to create corresponding
outputs.
Entertainment systems
Theseare systems that are primarily for personal
use and which are intended to entertain the user.
Systems for modelling and simulation
These are systems that are developed by scientists
and engineers to model physical processes or
situations, which include many, separate,
interacting objects.
11
APPLICATION TYPES...
Data collection systems
Theseare systems that collect data from their
environment using a set of sensors and send that
data to other systems for processing.
Systems of systems
These
are systems that are composed of a
number of other software systems.
12
4. WELL-ENGINEERED
SOFTWARE?
Well-engineered software is one that has the
following characteristics.
It is reliable
It has good user-interface
It has acceptable performance
It is of good quality
It is cost-effective
Every company can build software with unlimited
resources but well-engineered software is one that
conforms to all characteristics listed above.
13
6. DIFFERENCE BETWEEN SOFTWARE
ENGINEERING AND COMPUTER SCIENCE
Computer science is concerned with theory
and fundamentals; software engineering is
concerned with the practicalities of
developing and delivering useful software
This is the process of utilizing our knowledge
of computer science in effective production
of software systems.”
Computer science theories are currently
insufficient to act as a complete foundation
or basis for software engineering
14
7. DIFFERENCE BETWEEN SOFTWARE
ENGINEERING AND SYSTEM ENGINEERING
System engineering is concerned with all
aspects of computer-based systems
development including hardware, software
and process engineering. Software
engineering is part of this process
System engineers are involved in system
specification, architectural design,
integration of the finished system.
15
8. DIFFERENCE BETWEEN
SOFTWARE AND OTHER SYSTEMS
The major thing that distinguishes a software system from
other systems is that;
“Software does not wear out!”
Software systems does not affect by wear and tear.
If a software has any defect then that defect will be there
from the very first day and that defect normally called
bug
Non-software systems(like TV, Car or Electric Bulb) could be
malfunctioned or crash while working.
That mean they are affected by wear and tear.
They have a particular life and after that they could have
some problem and may not behave and perform as
expected.
16
CASE(COMPUTER AIDED
SOFTWARE ENGINEERING)
Software systems which are intended to
provide automated support for software
process activities.
CASE systems are often used for method
support
Upper-CASE
Toolsto support the early process activities of
requirements and design
Lower-CASE
Tools
to support later activities such as
programming, debugging and testing
17
9. THE BALANCING ACT!
Software Engineering is actually the balancing act.
You have to balance many things like cost, user
friendliness, Efficiency, Reliability etc.
Software Engineering aims to develop high quality
software in minimum cost and time.
18
SOFTWARE PRODUCTS
Generic products:
Stand-alonesystems which are produced by a
development organization and sold on the open
market to any customer.
Customized products:
Systemswhich are commissioned by a specific
customer and developed specially by some
contractor.
19
SOFTWARE PRODUCT
ATTRIBUTES
Maintainability
Dependability
Efficiency
Usability
20
IMPORTANCE OF PRODUCT
CHARACTERISTICS
The relative importance of these
characteristics depends on the product and
the environment in which it is to be used.
In some cases, some attributes may dominate
Costs tend to rise exponentially if very high
levels of any one attribute are required.
21
SOFTWARE DEVELOPMENT
Software engineering is a disciplined approach
to develop software.
The activities involved in software development
can broadly be divided into two major
categories first is construction and second is
management.
The construction activities are those that are
directly related to the construction or
development of the software.
While the management activities are those
that complement the process of construction in
order to perform construction activities
smoothly and effectively.
22
SOFTWARE ENGINEERING PHASES
There are four basic phases shown in Figure 4.
Vision: Here we determine why are we doing this thing and
what are our business objectives that we want to achieve.
Definition: Here we actually realize or automate the vision
developed in first phase. Here we determine what are the
activities and things involved.
Development: Here we determine, what should be the design
of the system, how will it be implemented and how to test it.
Maintenance: This is very important phase of software
development. Here we control the change in system, whether
that change is in the form of enhancements or defect
removel.
23
SOFTWARE ENGINEERING PHASES
24
SYSTEMS ENGINEERING
Specifying, designing, implementing, validating,
deploying and maintaining socio-technical
systems.
Concerned with the services provided by the
system, constraints on its construction and
operation and the ways in which it is used.
25
THE SYSTEM ENGINEERING PROCESS
Usually follows a ‘waterfall’ model because
of the need for parallel development of
different parts of the system
Little
scope for iteration between phases because
hardware changes are very expensive. Software
may have to compensate for hardware problems.
Inevitably involves engineers from different
disciplines who must work together
A lot of scope for misunderstanding here. Different
disciplines use a different vocabulary and much
negotiation is required. Engineers may have
personal agendas to fulfil.
26
THE SYSTEMS ENGINEERING
PROCESS
Requirements System
definition decommissioning
System System
design evolution
Sub-system System
development installation
System
integration
27
Thank You
28