0% found this document useful (0 votes)
63 views3 pages

UNIT 1 SE Notes

UNIT_1_SE_Notes

Uploaded by

ramesh.n
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
63 views3 pages

UNIT 1 SE Notes

UNIT_1_SE_Notes

Uploaded by

ramesh.n
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 3

Academic Year : 2024-25 Course & Branch : B.

Tech(CSE)
Year &Semester : II & II Course Name : SOFTWARE ENGINEERING
Course Code : 23A05403 Faculty : Dr. N. Ramesh Babu

UNIT I:
Introduction: Evolution, Software development projects, Exploratory style of software
developments, Emergence of software engineering, Notable changes in software development
practices, Computer system engineering.
Software Life Cycle Models: Basic concepts, Waterfall model and its extensions, Rapid
application development, agile development model, Spiral model.
What is software engineering?
A popular definition of software engineering is: “A systematic collection of good program
development practices and techniques”. Good program development techniques have
resulted from research innovations as well as from the lessons learnt by programmers through
years of programming experiences. An alternative definition of software engineering is: “An
engineering approach to develop software”. Based on these two point of views, we can
define software engineering as follows:
“Software engineering discusses systematic and cost-effective techniques for software
development. These techniques help to develop software using an engineering approach.”
Keywords: Analysis, estimation, prototyping, planning, designing, and testing.
EVOLUTION
Evolution of an Art into an Engineering Discipline

Over the past 60 years, software engineering principles have evolved significantly,
transitioning from an art to a structured engineering discipline. Early programmers relied on
ad hoc methods such as "build and fix" and "exploratory" programming styles. The "build
and fix" approach involved developing software without any formal plan or design, making
modifications as issues arose. Similarly, exploratory programming lacked established rules,
with programmers relying on intuition and experience to create software.

While these methods often led to unmaintainable and costly code for non-trivial problems,
they were widely used in the early days of computing. Skilled programmers of the past, often
likened to artists, could craft effective programs using their intuition and expertise, leaving
others in awe. However, modern software development emphasizes well-defined principles
and methodologies, reducing reliance on intuition and enhancing efficiency, quality, and
maintainability in the software industry.
Evolution Pattern for Engineering Disciplines
The evolution of software development mirrors the progression of other engineering
disciplines, transitioning from an art to a craft and finally to a structured engineering field. In
its early stages, programming was akin to an esoteric art, where only a few skilled individuals
had the expertise, often keeping their methods as closely guarded secrets. This phase parallels
ancient practices in industries like iron making, where knowledge was confined to specific
groups and passed down generationally.
As programming matured, it entered the craft stage. Here, knowledge was shared more
openly among tradesmen and apprentices, gradually expanding the collective understanding.
Over time, systematic organization, documentation, and scientific principles transformed
software development into a modern engineering discipline. This process mirrors the
historical shift in iron making from secretive practices to advanced steel production, driven
by scientific advancements and formalized techniques.
Software engineering's structured evolution has unified principles and practices, enabling
broader accessibility and reliability in modern development processes. This journey from
intuition-driven practices to a science-backed field highlights the universal trajectory of
technological advancements across disciplines.

Figure 1: Evolution of technology with time.

Software engineering principles are now a cornerstone of the industry, enabling the
development of high-quality, cost-effective, and timely software solutions. Despite its
success, critics argue that some methodologies lack scientific rigor, remain subjective, and
are occasionally inadequate for addressing complex challenges. Nonetheless, these principles
have proven essential, particularly for large-scale software projects where consistency,
scalability, and collaboration are critical.
The dynamism of software engineering stems from its rapid evolution, with new techniques
and frameworks emerging regularly to meet the demands of changing technology landscapes.
While exploratory or ad hoc styles can still be effective for small, non-critical programs, such
as student assignments, they fall short for professional and enterprise-level software, where
structured approaches ensure better maintainability, reliability, and efficiency. This
adaptability and proven value make software engineering an indispensable discipline in
modern technology development.
A Solution to the Software Crisis

Software engineering offers solutions to the ongoing software crisis, characterized by soaring
software costs compared to hardware. Over time, organizations have spent increasingly more
on software, with software budgets surpassing hardware expenses. If unchecked, this trend
might reverse the norm, where hardware could be bundled for free with costly software.

Key causes of this crisis include rapidly growing software complexity, insufficient training in
software engineering, skill shortages, and minimal productivity gains. To address these
challenges, adopting widespread software engineering practices and advancing the discipline
are critical. Next, we explore the types of software projects undertaken by companies.

SOFTWARE DEVELOPMENT PROJECTS

You might also like