0 Introduction to Software
Engineering
1
Learning Objectives:
By the end of the session, students should be able to:
Define software and software engineering.
Describe the nature of software.
Explain the importance and challenges of software engineering.
Recognize different types of software.
What is Software?
Software is a collection of programs, procedures, and documentation
that perform tasks on a computer system.
Types of software:
System software – Operating systems, device drivers (e.g., Windows,
Linux)
Application software – Programs for users (e.g., MS Word, games)
Embedded software – Built into devices (e.g., washing machines, traffic
lights)
Web software – Web-based apps (e.g., Gmail, Facebook)
AI software – Smart systems (e.g., chatbots, recommendation engines)
What is Software Engineering?
Software Engineering is the application of engineering principles to
the design, development, testing, and maintenance of software
systems.
IEEE Definition:
“Software engineering is the application of a systematic, disciplined,
quantifiable approach to the development, operation, and maintenance
of software.”
Note: IEEE stands for the Institute of Electrical and Electronics Engineers. It is a
professional association dedicated to advancing technology for the benefit of
humanity.
Nature of Software
Intangible – Cannot be touched like hardware.
Easy to change – Flexible but may lead to instability.
Never wears out – But it can become outdated or unmaintainable.
Custom-built or generic – Built for specific clients or for mass use.
Importance of Software Engineering
Helps in managing complexity.
Promotes team collaboration.
Reduces costs and development time.
Ensures software quality and reliability.
Makes software scalable and maintainable.
Challenges in Software Engineering
Rapid technology change
Unclear or changing requirements
Time and budget constraints
Ensuring quality and security
Managing team communication
DEFINITION AND IMPORTANCE OF SOFTWARE OF ENGINEERING
Definition:
A systematic, disciplined, and quantifiable approach to the development,
operation,
and maintenance of software. It is the application of engineering principles to
software
development in a methodical way.
Importance:
• Complexity Management: Software engineering provides structured
approaches to
handle complex systems, ensuring that software is built systematically and
efficiently.
• Quality Assurance: It emphasizes the importance of quality in software
products,
ensuring they meet user needs and are reliable, maintainable, and scalable.
• Cost and Time Efficiency: By applying engineering principles, software
projects can be
completed within budget and on time, reducing waste and rework.
• Consistency and Reusability: Software engineering promotes the use of
standards and
best practices, leading to consistent and reusable code.
• Risk Management: Identifies potential risks early in the development
process and
provides strategies to mitigate them, ensuring project success.
• Maintenance and Evolution: Provides methods for maintaining and evolving
software
post-deployment, ensuring longevity and relevance.