Introduction to Software Engineering
• The term software engineering is
composed of two words, software
and engineering.
• Software is more than just a program
code.
• A program is an executable code,
which serves some computational
purpose.
• Software is considered to be a
collection of executable
programming code, associated
Introduction to Software Engineering
cont’d
• Engineering on the other hand, is all
about developing products, using
well-defined, scientific principles and
methods.
• Software engineering-engineering
branch associated with the
development of software product
using well-defined scientific
principles, methods and procedures.
• The outcome of software engineering
Introduction to Software Engineering
cont’d
IEEE defines software engineering as:
• The application of a systematic,
disciplined, quantifiable approach to
the development, operation and
maintenance of software.
• Software has characteristics that are
considerably different than those of
hardware:
• Software is developed or engineered;
it is not manufactured in the classical
sense.
Introduction to Software Engineering
cont’d
• Software engineering is the
establishment and use of sound
engineering principles in order to obtain
economically software that is reliable
and works efficiently on real machines.
- Fritz Bauer
Software Engineering is concerned with:
• Technical processes of software
development
• Software project management
• Development of tools, methods and
theories to support software production
Introduction to Software Engineering
cont’d
• Often adopt a systematic and organized
approach
• Less formal development is particularly
appropriate for the development of
web-based systems
• Software Engineering is important
because
• Individuals and society rely on
advanced software systems
Introduction to Software Engineering
cont’d
• Produce reliable and trustworthy systems
economically and quickly
• Cheaper in the long run to use software
engineering methods and techniques for software
systems
General issues that affect many different types of
software:
a) Heterogeneity
• Operate as distributed systems across networks
• Running on general-purpose computers and
mobile phones
• Integrate new software with older legacy systems
written in different programming languages
• Challenge: build dependable software that is
Introduction to Software Engineering
cont’d
b) Business and social change
• Change existing software and rapidly develop
new software
• Traditional software engineering techniques are
time consuming
• Goal: reduce time to adapt to changing needs
c) Security and trust
• Software is intertwined with all aspects of our
lives
• See remote software systems (web page, web
service interface)
• Make sure malicious users cannot attack
software and information security is maintained
NEED OF SOFTWARE ENGINEERING
• Large Software: Bigger systems require
structured, engineering-based approaches
to manage complexity.
• Scalability: Scientific methods help scale
existing systems efficiently, rather than
rebuilding them.
• Cost: Proper engineering reduces long-
term software development costs.
• Dynamic Nature: Software must adapt to
changing user needs and environments—
engineering supports continuous updates.
• Quality Management: Defined processes
ensure high-quality, reliable software
CHARACTERESTICS OF GOOD
SOFTWARE
• A software product can be judged by what
it offers and how well it can be used.
• This software must satisfy on the following
grounds:
• Operational
• Transitional
• Maintenance
• Well-engineered and crafted software is
expected to have the following
characteristics:
Operational
This tells us how well software works in
operations.
It can be measured on:
•Budget: Cost to develop and maintain
the software.
•Usability: How easy the software is to
use.
•Efficiency: How well the software uses
system resources.
•Correctness: Accuracy in performing
intended functions.
Operational cont’d
•Functionality: The features and
capabilities the software provides.
•Dependability: Reliability and
consistency in operation.
•Security: Protection against
unauthorized access or attacks.
•Safety: Assurance that the software
won’t cause harm.
Transitional
This aspect is important when the software
is moved from one platform to another:
•Portability: Ability to run on different
platforms.
•Interoperability: Ability to work with
other systems or software.
•Reusability: Parts of the software can be
used in other projects.
•Adaptability: Easy to modify for new
requirements or environments.
Maintenance
• This aspect briefs about how well software has
the capabilities to maintain itself in the ever-
changing environment:
• Modularity
• Maintainability
• Flexibility
• Scalability
• In short, Software engineering is a branch of
computer science, which uses well-defined
engineering concepts required to produce
efficient, durable, scalable, in-budget and on-
time software product
THE SOFTWARE PROCESS
•A process is a set of activities, actions, and
tasks to create a software product.
•An activity targets a broad goal (e.g.,
stakeholder communication).
•An action is a group of tasks producing a
major work product (e.g., design model).
•A task has a specific goal and yields a
concrete result (e.g., unit testing).
•Software processes are adaptable, not
rigid; teams select suitable tasks.
•The goal is to deliver quality software on
time, meeting user and sponsor
expectations.
THE SOFTWARE PROCESS cont’d
A process framework:
•Defines core framework activities
used in all software projects.
•Applies regardless of project size or
complexity.
•Includes umbrella activities (e.g.,
quality assurance, risk management)
that support the entire process.
Activities of a generic process
framework for software engineering
Communication
• Involves engaging with customers and
stakeholders.
• Goal: Understand objectives and gather
software requirements.
Planning
• Creates a project plan (the roadmap).
• Defines tasks, risks, resources,
deliverables, and timelines.
Activities of a generic process
framework for software engineering
cont’d
Modeling.
A model is a simplification of the reality
Models are build to:
• Communicate the desired structure and
behavior of a system
• Visualize and control the system’s
architecture
• Better understand the system, to exposing
opportunities for simplifications and reuse
• Manage risks
Activities of a generic process
framework for software engineering
cont’d
Construction
This activity combines code generation (either
manual or automated) and the testing that is
required to uncover errors in the code.
Deployment
The software (as a complete entity or as a
partially completed increment) is delivered to the
customer who evaluates the delivered product
and provides feedback based on the evaluation.
• For many software projects, framework
activities are applied iteratively as a project
progresses. That is, communication, planning,
modeling, construction, and deployment are
applied repeatedly through a number of project
Activities of a generic process
framework for software engineering
cont’d
Framework activities (e.g.,
communication, planning) are repeated in
cycles.
•Each iteration delivers a software
increment with added features.
•Software evolves gradually with each
cycle/iteration.
Activities of a generic process
framework for software engineering
cont’d
• Software engineering process framework
activities are complemented by a number of
umbrella activities.
• In general, umbrella activities are applied
throughout a software project and help a
software team manage and control progress,
quality, change, and risk.
Typical umbrella activities include:
a) Software project tracking and control—
allows the software team to assess progress
against the project plan and take any necessary
action to maintain the schedule.
Activities of a generic process
framework for software engineering
cont’d
b) Risk management— assesses risks that may
affect the outcome of the project or the quality of
the product.
c) Software quality assurance— defines and
conducts the activities required to ensure
software quality.
d) Technical reviews— assesses software
engineering work products in an effort to uncover
and remove errors before they are propagated to
the next activity.
Activities of a generic process
framework for software engineering
cont’d
e) Measurement— defines and collects process,
project, and product measures that assist the
team in delivering software that meets
stakeholders’ needs; can be used in conjunction
with all other framework and umbrella activities.
f) Software configuration management— manages
the effects of change throughout the software
process.
g) Reusability management— defines criteria for
work product reuse (including software
components) and establishes mechanisms to
achieve reusable components
h) Work product preparation and production—
encompasses the activities required to create