0% found this document useful (0 votes)
6 views

Chapter-1 Introduction

The document defines software engineering and discusses its scope and necessity. It provides definitions of software engineering from IEEE and other sources. It also outlines six key characteristics of software quality - functionality, reliability, efficiency, usability, maintainability and portability.

Uploaded by

Draco Sahil
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
6 views

Chapter-1 Introduction

The document defines software engineering and discusses its scope and necessity. It provides definitions of software engineering from IEEE and other sources. It also outlines six key characteristics of software quality - functionality, reliability, efficiency, usability, maintainability and portability.

Uploaded by

Draco Sahil
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 43

INTRODUCTION TO SOFTWARE

ENGINEERING
What is Software Engineering?
• Software

• It is more than just a program code.


• A program is an executable code, which
serves some computational purpose.
• Software is considered to be collection of
executable programming code, associated
libraries and documentations.
• Software, when made for a specific
requirement is called software product.
What is Software Engineering?
• Engineering

• It is all about developing products, using


well-defined, scientific principles and
methods
What is Software Engineering?

IEEE Definition

“The application of a systematic, disciplined,


quantifiable approach to the development,
operation, and maintenance of software”

- an engineering discipline that is concerned


with all aspects of software production
What is Software Engineering?

Fritz Bauer, a German computer scientist,


defines software engineering as:

“Software engineering is the establishment


and use of sound engineering principles in
order to obtain economically software that is
reliable and work efficiently on real machines.”
Scope and necessity of software
engineering
• Software engineering is an engineering approach for
software development.
• We can alternatively view it as a systematic collection
of past experience. The experience is arranged in the
form of methodologies and guidelines.
• A small program can be written without using software
engineering principles. But if one wants to develop a
large software product, then software engineering
principles are indispensable to achieve a good quality
software cost effectively.
• These definitions can be elaborated with the help of a
building construction analogy.
Scope and necessity of software
engineering
• Suppose you have a friend who asked you to
build a small wall as shown in fig. below. You
would be able to do that using your common
sense. You will get building materials like bricks;
cement etc. and you will then build the wall.
Scope and necessity of software
engineering
• But what would happen if the same friend asked
you to build a large multistoried building as shown
in fig. below
Scope and necessity of software
engineering
• You don't have a very good idea about building such a
huge complex. It would be very difficult to extend your idea
about a small wall construction into constructing a large
building. Even if you tried to build a large building, it would
collapse because you would not have the requisite
knowledge about the strength of materials, testing,
planning, architectural design, etc.
• Building a small wall and building a large building are
entirely different ball games.
• You can use your intuition and still be successful in
building a small wall, but building a large building requires
knowledge of civil, architectural and other engineering
principles.
Scope and necessity of software
engineering
• Without using software engineering principles it would
be difficult to develop large programs.
• In industry it is usually needed to develop large
programs to accommodate multiple functions. A problem
with developing such large commercial programs is that
the complexity and difficulty levels of the programs
increase exponentially with their sizes as shown in fig.
below.
Scope and necessity of software
engineering
• For example, a program of size 1,000 lines of
code has some complexity. But a program with
10,000 LOC is not just 10 times more difficult to
develop, but may as well turn out to be 100 times
more difficult unless software engineering
principles are used.
• In such situations software engineering
techniques come to rescue.
• Software engineering helps to reduce the
programming complexity.
Software Characteristics

The ISO/IEC 9126 standard describes a software quality model which


categorizes software quality into six characteristics:
Software Characteristics
1. Functionality:
It refers to the degree of performance of the software
against its intended purpose.
Software Characteristics
1. Functionality:
– Suitability: The suitability sub-characteristic allows to draw
conclusions about how suitable software is for a particular
purpose.

– Accuracy: The accuracy sub-characteristic allows to draw


conclusions about how well software achieves correct or
agreeable results.

– Interoperability: The interoperability sub-characteristic


allows to draw conclusions about how well software interacts
with designated systems.
Software Characteristics
1. Functionality:
– Security: The security sub-characteristic allows to draw
conclusions about how secure software is.

– Compliance: The compliance sub-characteristic allows to


draw conclusions about how well software adheres to
application related standards, conventions, and
regulations in laws and similar prescriptions.
Software Characteristics
2. Reliability:
A set of attribute that bear on capability of
software to maintain its level of performance
under the given condition for a stated period
of time.
Software Characteristics
2. Reliability:
– Maturity: The maturity sub-characteristic allows to draw
conclusions about how mature software is. It correlates with
metrics which measure attributes of software that allow to
conclude about the frequency of failure by faults in the
software.
– Fault-tolerance: The fault-tolerance sub-characteristic allows
to draw conclusions about how fault-tolerant software is. It
correlates with metrics which measure attributes of software
that allow to conclude on its ability to maintain a specified
level of performance in case of software faults or
infringement of its specified interface.
Software Characteristics
2. Reliability:
– Recoverability: The recoverability sub-characteristic allows
to draw conclusions about how well software recovers from
software faults or infringement of its specified interface. It
correlates with metrics which measure attributes of software
that allow to conclude on its ability to re-establish its level
of performance and recover the data directly affected in
case of a failure.
Software Characteristics
3. Efficiency:
It refers to the ability of the software to use system
resources in the most effective and efficient manner.
The software should make effective use of storage
space and executive command as per desired timing
requirement.
Software Characteristics
3. Efficiency:
– Time behavior: The time behavior sub-characteristic allows
to draw conclusions about how well the time behavior of
software is for a particular purpose. It correlates with metrics
which measure attributes of software that allow to conclude
about the time behavior of the software (or parts of it) in
combination with the computer system during testing or
operating.
– Resource utilization: The resource utilization sub-
characteristic allows to draw conclusions about the amount of
resources utilized by the software. It correlates with metrics
which measure attributes of software that allow to conclude
about the amount and duration of resources used while
performing its function.
Software Characteristics
4. Usability:
It refers to the extent to which the software can be
used with ease. The amount of effort or time required
to learn how to use the software.
Software Characteristics
4. Usability:
– Understandability: The understandability sub-characteristic
allows to draw conclusions about how well users can
recognize the logical concepts and applicability of software.
Users should be able to select a software product which
is suitable for their intended use.
– Learnability: The learnability sub-characteristic allows to
draw conclusions about how well users can learn the
application of software. It correlates with metrics which
measure attributes of software that allow to conclude on the
users' efforts for learning the application of software.
– Operability: The operability sub-characteristic allows to draw
conclusions about how well users can operate software.
Software Characteristics
5. Maintainability:
It refers to the ease with which the modifications can
be made in a software system to extend its
functionality, improve its performance, or correct
errors.
Software Characteristics
5. Maintainability:
– Testability: The testability sub-characteristic allows to draw
conclusions about how well software can be tested and is
tested. It correlates with metrics which measure attributes of
software that allow to conclude about the effort needed for
validating the software and about the test coverage.
– Stability: The stability sub-characteristic allows to draw
conclusions about how stable software is. It correlates with
metrics which measure attributes of software that allow to
conclude about the risk of unexpected effects as result of
modifications.
Software Characteristics
5. Maintainability:
– Changeability: The changeability sub-characteristic allows to
draw conclusions about how well software can be changed. It
correlates with metrics which measure attributes of software
that allow to conclude about the effort needed for
modification, fault removal or for environmental change.
Software Characteristics
6. Portability:
A set of attribute that bear on the ability of software to
be transferred from one environment to another,
without or minimum changes.
Software Characteristics
5. Portability:
– Adaptability: The adaptability sub-characteristic allows to
draw conclusions about how well software can be adapted
to environmental change.
– Installability: The installability sub-characteristic allows to
draw conclusions about how well software can be installed
in a designated environment.
– Replaceablity: The replaceability sub-characteristic allows to
draw conclusions about how well software can replace other
software or parts of it.
Software Crisis
Software Crisis

• There were many difficulties in the development of


large software systems during the 1960s and 1970s.
The term “software crisis” dates from that time.
• The problems stemmed from an inability to apply the
techniques used to build small software systems to
the development of larger and more complex
systems.
• Software Crisis is a term used in computer science
for the difficulty of writing useful and efficient
computer programs in the required time.
Software Crisis

• With increase in the complexity of software, many


software problems arise because existing methods
were insufficient.
• If we will use same workforce, same methods and
same tools after fast increasing in software demand,
software complexity and software challenges, then
there arose some problems like software budget
problem, software efficiency problem, software
quality problem, software managing and delivering
problem etc.
• This condition is called software crisis.
Causes of Software Crisis

• The objectives were not clear.


• Improper table work.
• Not having the proper feel of the organization.
• Lack of project management methodology.
• HR laps or insufficient skilled staff.
• Coordination gaps between venders.
• Performance and efficiency issues.
• Over budgeting.
Solution to Software Crisis

• Knowledge of basic statistics and experimental


design.
• Basic understanding of commonly used software
life cycle models, at least to the level covered in
an introductory senior or graduate-level software
engineering course
• Experience working as a team member on a
software development project.
Software Evolution
Software Evolution

• The process of developing a software


product using software engineering principles
and methods is referred to as software
evolution.
• This includes the initial development of
software and its maintenance and updates,
till desired software product is developed,
which satisfies the expected requirements.
Software Evolution

• Evolution starts from the requirement gathering


process.
• After which developers create a prototype of the
intended software and show it to the users to get their
feedback at the early stage of software product
development.
• The users suggest changes, on which several
consecutive updates and maintenance keep on
changing too.
• This process changes to the original software, till the
desired software is accomplished.
Software Evolution

• Even after the user has desired software in


hand, the advancing technology and the
changing requirements force the software
product to change accordingly.
• Re-creating software from scratch and to go
one-on-one with requirement is not feasible.
• The only feasible and economical solution is to
update the existing software so that it matches
the latest requirements.
Software Engineering- A Layered
Approach

• Software engineering is a fully layered technology.


• To develop a software, we need to go from one
layer to another.
• All these layers are related to each other and each
layer demands the fulfillment of the previous layer.
Software Engineering- A Layered
Approach
Software Engineering- A Layered
Approach

1. Quality focus (Degree of correctness)


The characteristics of good quality software are:
• Correctness of the functions required to be
performed by the software.
• Maintainability of the software
• Integrity i.e. providing security so that the
unauthorized user cannot access information or
data.
• Usability i.e. the efforts required to use or operate
the software.
Software Engineering- A Layered
Approach

2. Process (What to?)


• It is the base layer or foundation layer for the
software engineering.
• The software process is the key to keep all levels
together.
• It defines a framework that includes different
activities and tasks.
• In short, it covers all activities, actions and tasks
required to be carried out for software
development.
Software Engineering- A Layered
Approach

3. Methods (How to?)


• The method provides the answers of all 'how-to'
that are asked during the process.
• It provides the technical way to implement the
software.
• It includes collection of tasks starting from
communication, requirement analysis, analysis
and design modelling, program construction,
testing and support.
Software Engineering- A Layered
Approach

4. Tools
• The software engineering tool is an automated
support for the software development.
• The tools are integrated i.e the information
created by one tool can be used by the other tool.
THANKS

You might also like