MODULE 1
INTRODUCTION
Name: M R Zeba Rehaman
Assistant Professor, School of Computer Engineering
Manipal Institute of Technology Bengaluru
Manipal Academy of Higher Education, Manipal, INDIA
E-mail: [Link]@[Link]
1
Evolution from an art form to an engineering discipline
Software Engineering is a systematic and cost-effective technique for software development. It is an
engineering approach to developing software.
• For example: If someone wants to travel from Punjab to Delhi. There are two approaches one can
follow to achieve the same result:
• The normal approach is to go out and catch the bus/train that is available.
• A systematic approach is constructed as Firstly check on Google Maps distance and after
analyzing the timing of trains and buses online that, match the user's preference suppose the user
has some work till 4:00 PM and train slots are: 1:00 PM, 6:00 PM then the user will choose 6:00
PM time slot and reach Delhi.
2025 MANIPAL ACADEMY OF HIGHER EDUCATION
2
Is Software Engineering A Science Or An Art?
• It is based on Science where there are specific rules and names for each component, technique,
and working principle related to it and before they are standardized the experience is marked as
their thumb rule and on the basis of it, the rules are standardized by various organizations.
Similarly, in Software Engineering there is heavy use of knowledge which is gathered from the
experience of practitioners.
2025 MANIPAL ACADEMY OF HIGHER EDUCATION
3
What is Software Engineering?
• Software Engineering is the process of designing, developing, testing, and maintaining software.
It is a systematic and disciplined approach to software development that aims to create high-
quality, reliable, and maintainable software. Software engineering includes a variety of techniques,
tools, and methodologies, including requirements analysis, design, testing, and maintenance.
What is Software Development?
• Software Development is defined as the process of designing, creating, testing, and maintaining
computer programs and applications. Software development plays an important role in our daily
lives.
2025 MANIPAL ACADEMY OF HIGHER EDUCATION
4
Software Development Projects
• Software development projects in software engineering encompass the entire process of creating,
enhancing, or modifying software applications. This includes various stages like planning,
designing, coding, testing, deployment, and ongoing maintenance. These projects aim to fulfill
user needs, add business value, and streamline processes.
2025 MANIPAL ACADEMY OF HIGHER EDUCATION
5
Exploratory style of software development
Exploratory program development style refers to an informal development style or builds and
fix the style in which the programmer uses his own intuition to develop a program rather than
making use of the systematic body of knowledge which is categorized under the software
engineering discipline. This style of development gives complete freedom to programmers to choose
activities which they like to develop software.
2025 MANIPAL ACADEMY OF HIGHER EDUCATION
6
What's wrong with this model?
• In an exploratory development scenario, the effort and time required to develop professional
software increase with an increase in program size. An increase in development effort and time
with problem size has been indicated in the following figure : LOC (Line of Code)
2025 MANIPAL ACADEMY OF HIGHER EDUCATION
7
Evolution of Software Engineering
• Software engineering has evolved from being considered an art to becoming a recognized
engineering discipline. In the early days of computing, software development was primarily done
by individuals or small teams who wrote code based on their own experiences and knowledge.
This approach was often referred to as "hacking" or "programming by intuition." As the field of
computing grew, it became apparent that this approach was not sustainable and that a more
structured and systematic approach was needed.
2025 MANIPAL ACADEMY OF HIGHER EDUCATION
8
Emergence of Software Engineering
• 1. Early Days (1940s–1950s): Programming as an Art
In the early stages of computing, software was developed in an informal and unstructured manner.
Programs were small, hardware-specific, and typically written by scientists or engineers. Software
development lacked formal methods and was often considered secondary to hardware development.
• 2. The Software Crisis (1960s–1970s)
As software systems grew larger and more complex, a range of issues began to surface missed
deadlines, budget overruns, unreliable performance, and maintenance difficulties. These problems
collectively became known as the "software crisis." It highlighted the need for systematic
approaches to software development.
• In response, the term "Software Engineering" was introduced at the NATO conference in 1968. The
goal was to apply engineering principles to software development to ensure reliability,
predictability, and efficiency. 2025 MANIPAL ACADEMY OF HIGHER EDUCATION
9
• 3. Foundation and Growth of Software Engineering (1970s–1980s)
This period saw the introduction of foundational concepts such as structured programming, modular
design, and software life cycle models like the Waterfall Model. Software engineering began to be
recognized as a distinct discipline with formal processes, documentation standards, and development
methodologies.
• 4. Maturation of the Field (1990s–2000s)
The field evolved with the adoption of object-oriented programming, software design patterns, and
modeling tools like UML. New methodologies such as Agile emerged to address changing
requirements and promote iterative development. Emphasis was placed on software quality, testing,
and maintainability.
• 5. Modern Era (2010s–Present)
Contemporary software engineering involves advanced practices such as DevOps, continuous
integration and deployment (CI/CD), automated testing, and scalable architectures like
microservices. The use of cloud platforms and AI-assisted development tools has further
2025increased
MANIPAL ACADEMY OF HIGHER EDUCATION
10
Notable changes in software development practices
1. Shift from Ad Hoc to Structured Development
• Early development was informal and lacked planning.
• Introduction of software engineering brought structured methodologies, such as the Waterfall
Model and V-Model.
2. Rise of Agile and Iterative Methodologies
• Traditional linear models were replaced or supplemented by Agile, Scrum, and other iterative
approaches.
• Emphasis shifted to flexibility, customer collaboration, and rapid delivery.
3. Emphasis on Testing and Quality Assurance
• Testing evolved from a late-stage activity to an integral part of development. 2025 MANIPAL ACADEMY OF HIGHER EDUCATION
11
4. DevOps and Continuous Integration/Deployment
• Development and operations were integrated to streamline releases.
• CI/CD pipelines enable faster, more reliable software delivery.
5. Modular and Scalable Architectures
• Monolithic systems gave way to modular designs and microservices.
• Scalability and maintainability became critical design goals. And So on….
2025 MANIPAL ACADEMY OF HIGHER EDUCATION
12
Computer Systems Engineering
• Computer Systems Engineering (CSE) and Software Engineering (SWE) are closely related but
distinct fields, with CSE often encompassing a broader scope. CSE focuses on the design,
development, and maintenance of both hardware and software components of computer systems,
including embedded systems, networks, and integrated systems. Software Engineering, on the
other hand, primarily deals with the design, development, and maintenance of software
applications and systems
2025 MANIPAL ACADEMY OF HIGHER EDUCATION
13
Difference Between Computer System Engineering and Software Engineering
Aspect Computer System Engineering Software Engineering
Integration of hardware and software Design, development, and maintenance
Focus
systems of software
Embedded systems, circuits, hardware- Applications, systems software,
Scope
software interface web/mobile apps
Electronics, digital systems, computer Programming, algorithms, software
Key Knowledge Areas
architecture design patterns
Designing microcontrollers, firmware, Building applications, testing, software
Typical Work
system integration deployment
Hardware simulators, FPGA tools, IDEs, version control, testing
Tools Used
embedded C frameworks
End Products Embedded devices, control systems Desktop, mobile, web applications
2025 MANIPAL ACADEMY OF HIGHER EDUCATION
14