Software Engineering
Introduction
Software Engineering
The term software engineering is composed of two
words, software and engineering.
Software is a collection of instructions or set of
instructions, data, and programs that tell a computer
how to perform specific tasks.
Unlike hardware, which refers to the physical
components of a computer, software is intangible
and exists in the form of code and data structures.
Software 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 libraries and
documentations.
Software, when made for a specific requirement is called
software product.
Engineering on the other hand, is all about developing
products, using well-defined, scientific principles and
methods.
Software 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.
Software Engineering
IEEE defines software engineering as:
The application of a systematic, disciplined,
quantifiable (measureable, computable) approach
to the development, operation and maintenance of
software.
Software Engineering
Software Engineering is the science and art of
building significant software systems that are:
1) on time
2) on budget
3) with acceptable performance
4) with correct operation.
Types of Software
Software can be categorized into different types based on
its functionality and purpose. The main types of software
are:
System Software
Windows, macOS, Linux, Android, iOS.
Application Software
(General and Customized)
Utility Software
(Antivirus software, Disk cleanup tools, Backup software etc.)
Problems in software development
The final software does not fulfill the needs of the
customer
Hard to extend and improve: if you want to add a
functionality later its mission impossible
Bad documentation
Bad quality: frequent errors, hard to use, ...
More time and costs than expected
Software can have huge impact
in any aspect of our society
Where can we find software?
Some popular ones…
Some popular ones…
And even in…
What is Programming (Coding)?
Programming (or coding) is the process of writing
instructions for a computer to execute. These
instructions, known as code, are written using
programming languages such as Python, Java, C++,
etc.
Key Components of Programming:
Syntax: The set of rules defining the structure of a
programming language.
Logic: The logical flow that determines how the
program processes data.
Algorithms: Step-by-step procedures to solve
problems efficiently.
Debugging: Identifying and fixing errors in the
code.
Compilation & Interpretation: Translating code
into machine-readable form.
The economies of all developed nations are
dependent on software.
More and more systems are software controlled.
Software engineering is concerned with theories,
methods and tools for professional software
development.
Key Aspects of Software Engineering:
Requirement Analysis: Understanding what the
software must accomplish.
Design: Creating architecture and data structures.
Implementation/ Development: Writing and
implementing the software code.
Integration and Testing: Verifying the software's
correctness and performance.
Deployment & Maintenance: Installing, updating,
and maintaining the software.
Difference Between Software Engineering and
Programming
Aspect Software Engineering Programming
The application of engineering principles for Writing and implementing code to
Definition
software development solve specific problems
Entire software development process Writing code for specific
Focus
(design, development, testing, maintenance) functionalities
Large-scale, complex projects with Smaller-scale projects or individual
Scope
structured methodologies components of software
Uses systematic development models Typically focuses on coding and
Process
(SDLC, Agile, etc.) debugging
Involves teams of engineers, testers, Can be done individually or in small
Collaboration
designers, and managers teams
Tools & Project management, UML diagrams, Code editors, compilers, interpreters,
Techniques version control (Git), testing frameworks debugging tools
NEED OF SOFTWARE ENGINEERING
The need of software engineering arises because of higher
rate of change in user requirements and environment on
which the software is working.
Large software - It is easier to build a wall than to a
house or building, likewise, as the size of software
become large engineering has to step to give it a scientific
process.
Scalability- If the software process were not based on
scientific and engineering concepts, it would be easier to
re-create new software than to scale an existing one.
Cost- The cost of software remains high if proper
process is not adapted.
Dynamic Nature- If the nature of software is always
changing, new enhancements need to be done in the
existing one. This is where software engineering plays a
good role.
Quality Management- Better process of software
development provides better and quality software
product.
Well-Engineered Software
Well-engineered software is one that has the following
characteristics:
It Provides the required functionality
It is reliable (Trustworthy)
It has acceptable performance
It is of good quality
It is cost-effective
It is User-friendly (good Interface)
“Software does not wear out!”
Unlike physical hardware, which deteriorates over
time due to wear and tear, software does not
physically degrade.
Once written, software remains the same unless
modified, updated, or affected by external factors
like bugs or compatibility issues.
(Wear out: exhaust or get tired through overuse or great
strain or stress, tear out.)
Even though software does not wear out, it may
become obsolete or malfunction due to:
Example: Software Bugs & Errors:
Some programs may contain coding mistakes that
cause failures over time.
Example: A banking app may crash due to a
programming error in a new update.
Hardware parts like a hard drive or a keyboard
can break or wear out over time due to continuous
usage.
Software is just a set of instructions stored
digitally, so it does not degrade like physical
materials.
Summary
Programming is just one phase of software
development that involves writing code.
Software Engineering is a broader discipline that
includes design, development, testing, maintenance,
and project management to ensure high-quality
software production.
Books for reference
Software Engineering
Sommerville
Software Engineering : A practitioners Approach
Roger S. Pressman