Chapter 1
Chapter 1
Bridging Communities
SOFTWARE ENGINEERING
Chapter 1 : Introduction
3
Introduction (1/2)
• Software is a collection of instructions, data, or
programs used to operate computers and execute
specific tasks.
• Software is a set of programs (sequence of
instructions) that allows the users to perform a well-
defined function or some specified task.
• It is the non-tangible component of computers.
4
Introduction (2/2)
5
Importance of Software (1/1)
Software plays a crucial role in modern technology,
enabling communication, automation, and innovation
across industries.
It serves as a bridge between the user and the
computer hardware, allowing users to interact with
machines and perform various tasks efficiently.
6
Types of Software (1/3)
7
Types of Software (2/3)
❑ System Software: Manages hardware and software
resources (e.g., Operating Systems like Windows,
Linux, iOS, MacOS, Android, CentOS, Unix).
❑ Application Software: Programs designed for end-
users (e.g., Microsoft Office, web browsers).
❑ Utility Software: Performs maintenance tasks (e.g.,
antivirus software, disk management tools, WinZip).
❑ Embedded Software: Used in embedded systems
like car control systems, washing machines. 8
Types of Software (3/3)
❑ Web-based Software: Hosted on servers and
accessed via web browsers (e.g., Gmail, Google
Docs).
❑ Open Source vs. Proprietary Software:
o Open Source: Software with source code available for
modification (e.g., Linux).
o Proprietary: Software owned by an individual or a
company with restrictions on modification and
distribution (e.g., Microsoft Windows). 9
Software Characteristics (1/1)
10
Software Myths (1/1)
11
Software Terminologies (1/1)
12
History of Software Design and
Development (1/4)
❑ Early Beginnings (1950s-1960s):
o The term "software engineering" was coined during
the 1968 NATO Software Engineering Conference.
o Focus was primarily on assembly language and
simple procedural programming.
o Development of early programming languages like
FORTRAN and COBOL.
13
History of Software Design and
Development (2/4)
❑ 1970s-1980s:
o Emergence of structured programming with
languages like C.
o Introduction of Waterfall Model by Winston Royce in
1970.
o Object-oriented programming began gaining traction
with the development of languages like Smalltalk.
14
History of Software Design and
Development (3/4)
❑ 1990s-2000s:
o Rise of Agile methodologies in response to the
inflexibility of the Waterfall model.
o Development of the Unified Modeling Language
(UML).
o Rapid growth in the use of the Internet and web-
based applications.
15
History of Software Design and
Development (4/4)
❑ 2010s-Present:
o Emphasis on DevOps practices, continuous
integration, and continuous delivery.
o Growth of cloud computing, microservices, and
containerization.
o Increased focus on cybersecurity in software
development.
16
Software Development Principles (1/3)
Modularity: Break down software into smaller,
manageable modules.
DRY (Don't Repeat Yourself): Avoid code
duplication by abstracting common logic.
KISS (Keep It Simple, Stupid): Simplify design and
avoid unnecessary complexity.
YAGNI (You Ain't Gonna Need It): Avoid adding
functionality until it's necessary.
17
Software Development Principles (2/3)
SOLID Principles:
Single Responsibility Principle: Each class should
have only one reason to change.
Open/Closed Principle: Software entities should be
open for extension but closed for modification.
Liskov Substitution Principle: Objects should be
replaceable with instances of their subtypes.
18
Software Development Principles (3/3)
Interface Segregation Principle: No client should be
forced to depend on methods it does not use.
Dependency Inversion Principle: Depend on
abstractions, not on concrete implementations.
19
Software Development Qualities (1/1)
20
Software Engineering (1/3)
• Software engineering is the systematic application of
engineering approaches to the development of
software.
• Software engineering is the systematic design and
development of software products and the
management of the software process.
21
Software Engineering (2/3)
• It encompasses all aspects of software production,
from the early stages of system specification to
maintaining the system after it has gone into use.
• It has as one of its primary objectives the production
of programs that meet specifications, and are
demonstrably accurate, produced on time, and within
budget.
22
Software Engineering (3/3)
23
Key Characteristics of Software
Engineering (1/1)
24
History of Software Engineering (1/1)
⚫ The 1960s Crisis: Software projects started to fail
due to the complexity, leading to the need for a more
structured approach.
⚫ NATO Conference, 1968: The term "Software
Engineering" was first coined at this conference,
addressing the need for better software development
processes.
25
Need for Software Engineering (1/3)
Changes in requirement: With frequent changes in the
business requirements and the environment, a properly
documented and well-defined system of software
development is required which makes it eminent to use
Software Engineering.
Large and complex software: With large and complex
software, it becomes difficult to handle the software
product but with the concept of software engineering, it
is comparatively easier to build and manage them.
26
Need for Software Engineering (2/3)
Scalability: Scalability is used to describe the ability
of the software to grow and manage according to the
increasing demand of the market.
Adaptability: It also helps in creating software that is
adaptable to the changing needs of software usage
efficiently.
Quality assurance: Ensures that software meets
functional and non-functional requirements.
27
Need for Software Engineering (3/3)
Cost and time efficiency: Reduces costs and time
through systematic planning and execution.
Risk management: Identifies potential risks early and
implements strategies to mitigate them.
To reduce the time: When software engineering
concepts are employed, proper development process
and tools are used that makes it possible to develop
the software within the time-lines.
28
Attributes of Software Engineering (1/2)
29
Attributes of Software Engineering (2/2)
30
Key Principles of Software Engineering
(1/1)
31
Roles in Software Engineering (1/1)
32
Software Engineering Tools and
Environments (1/1)
33
Software Engineering Challenges (1/1)
34
Emerging Trends in Software
Engineering (1/1)
35
Conclusion (1/1)
• Software engineering continues to evolve,
incorporating new methodologies, tools, and
technologies to meet the growing demands of the
software industry.
• As technology advances, software engineering will
play a critical role in shaping the future of computing
and digital solutions.
36
Reading Lists (1/1)
1. Software Engineering by Ian Sommerville, 7th edition,
Addison-Wesley, 2006.
2. Software Engineering: A practitioner's approach by
Roger S. Pressman, 6th edition, McGraw-Hill
International edition, 2005.
37
38