0% found this document useful (0 votes)
6 views8 pages

Se 1

Software engineering is a systematic approach to software development, focusing on design, testing, and maintenance to ensure high-quality applications. The field has evolved from unstructured programming in the 1950s to a disciplined engineering practice, addressing challenges like the software crisis of the 1960s and adopting modern methodologies such as Agile. Key impacts include improved software quality, efficient development, enhanced security, and wider accessibility of technology.

Uploaded by

computercoding07
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)
6 views8 pages

Se 1

Software engineering is a systematic approach to software development, focusing on design, testing, and maintenance to ensure high-quality applications. The field has evolved from unstructured programming in the 1950s to a disciplined engineering practice, addressing challenges like the software crisis of the 1960s and adopting modern methodologies such as Agile. Key impacts include improved software quality, efficient development, enhanced security, and wider accessibility of technology.

Uploaded by

computercoding07
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/ 8

SOFTWARE ENGINEERING

1. Basics of Software Engineering Designs & Life Cycle Models

Software Engineering: Software engineering is the application of a systematic,


disciplined, quantifiable approach to the development, operation, and maintenance of
software; that is, the application of engineering to software.
 Software Engineering is the process of designing, developing, testing, and
maintaining software applications in a systematic, efficient, and reliable way. It
applies engineering principles to software development to ensure that the software is
high-quality, meets user needs, and can be maintained and updated over time

Software engineering has evolved significantly over the past few decades, driven by the
growing complexity of software systems and the need for reliable, efficient, and user-
friendly applications. Here’s a look at its evolution and impact.

1.1 Know the Evolution and Impact of the Software Engineering


Evolution of Software Engineering

1. Early Days (1950s - 1960s): In the early days of computers, software was created for
specific tasks, often scientific or military. Software was written by a small number of
developers, and there were no standard methods or tools for development. Bugs and
failures were common due to a lack of organized processes.
2. Software Crisis (1960s - 1970s): As software complexity increased, developers began
to struggle with delivering large projects on time and within budget. Many projects
failed, leading to the term "software crisis." The crisis highlighted the need for
systematic approaches to software development.
3. Birth of Software Engineering (Late 1960s): To address the software crisis, the field
of software engineering was formally established. Engineers began using structured
approaches, such as design, testing, and documentation, to manage software
development. New methodologies, such as the Waterfall model, emerged to guide
development steps.
4. Agile and Modern Methods (2000s - Present): In recent years, flexible methods like
Agile, Scrum, and DevOps have become popular. These approaches allow teams to
adapt quickly to changes and produce high-quality software in shorter timeframes.
Software engineering now includes collaboration, rapid feedback, and continuous
improvement.

Impact of Software Engineering

Software engineering has transformed technology and improved many areas of life by
providing a structured way to build reliable and user-friendly applications. Here are some
key impacts:
N.D.PRASANNA (6019)
SOFTWARE ENGINEERING

1. Improved Software Quality: Software engineering processes like testing and version
control help ensure that software is reliable and has fewer bugs. This improves user
experience and reduces maintenance costs.
2. Efficient Development: Methods like Agile and DevOps help teams work more
efficiently and deliver software quickly. This is especially important in industries like
e-commerce and social media, where rapid updates are essential.
3. Enhanced Security: With systematic approaches, software engineers can integrate
security practices to protect applications from cyber threats. For example, banking
apps have security layers like encryption to protect user data.
4. Scalability: Software engineering allows companies to develop software that can
handle growing numbers of users or increasing data volumes. Social media platforms
like Facebook rely on these principles to manage millions of users simultaneously.
5. Wider Accessibility: By following user-centred design principles, software engineers
create applications that are easy to use and accessible to people of all ages and
abilities, making technology more inclusive.

Real-Time Examples

1. Banking Apps: Early banking software was limited to basic transactions, but modern
banking apps provide complex features like loans, investments, and AI-powered
financial advice. Software engineering enables these applications to be secure,
reliable, and user-friendly.
2. E-Commerce Websites: Platforms like Amazon or eBay are built using advanced
software engineering methods. These sites can handle millions of transactions daily,
provide a smooth user experience, and protect user data through secure software
practices.
3. Self-Driving Cars: The software in autonomous vehicles must make real-time
decisions based on sensor data. Software engineering ensures this software is tested
thoroughly to be reliable and safe.

In summary, software engineering has transformed from unstructured programming to a


well-organized discipline that provides efficient, secure, and high-quality software, which
greatly impacts our daily lives.

1.1.1 Evolution of an Art to an Engineering Discipline

Software development began as a creative, unstructured process, much like an art. Over time,
as software grew in complexity and importance, it transformed into an engineering discipline
with standardized practices and principles.

1. Software as an Art (1950s - 1960s)

N.D.PRASANNA (6019)
SOFTWARE ENGINEERING

In the early days, software development was seen as an art form. Developers relied on their
creativity, intuition, and personal methods. There were no formal processes, tools, or
standards.

Example:

Imagine an artist painting a picture. They have full freedom, but there’s no guarantee the
painting will meet specific needs or be completed on time. Early programmers wrote code
the same way, which often led to errors and unpredictable results.

2. The Software Crisis (1960s - 1970s)

As software became essential in industries like banking, aerospace, and healthcare, its
complexity grew. Many projects faced problems like:

 Delays in delivery.
 High costs.
 Frequent failures and bugs.

This situation was called the "software crisis."

Example:

NASA's software failures in the 1960s delayed space missions. Engineers realized they
needed better planning and quality control for reliable software.

3. Software as an Engineering Discipline (1970s - Present)

To solve these issues, software development adopted engineering principles. This shift
introduced:

 Systematic methods: Standard processes like Waterfall, Agile, and DevOps.


 Testing and Quality Assurance: Identifying bugs early to reduce failures.
 Collaboration tools: Version control systems like Git.
 Metrics: Measuring performance, cost, and timelines.

Example:

Modern software development is like constructing a building. Just as architects create


blueprints and engineers follow structured plans, software engineers now design, test, and
build software systematically to meet user needs.

N.D.PRASANNA (6019)
SOFTWARE ENGINEERING

1.1.2 A Solution to the Software Crisis?


What is Software Crisis?
Software Crisis is a term used in computer science for the difficulty of writing useful and
efficient computer programs in the required time. The software crisis was due to using the
same workforce, same methods, and same tools even though rapidly increasing software
demand, the complexity of software, and software challenges. With the increase in software
complexity, many software problems arose because existing methods were insufficient.
Causes of Software Crisis:
Following are the causes of Software Crisis:
 The cost of owning and maintaining software was as expensive as developing the
software.
 At that time Projects were running overtime.
 At that time Software was very inefficient.
 The quality of the software was low quality.
 Software often did not meet user requirements.
 The average software project overshoots its schedule by half.
 At that time Software was never delivered.
 Non-optimal resource utilization.
 Challenging to alter, debug, and enhance.
 The software complexity is harder to change.
Factor Contributing to Software Crisis are:
 Poor project management.
 Lack of adequate training in software engineering.
 Less skilled project members.
 Low productivity improvements.
Solution of Software Crisis:
There is no single solution to the crisis. One possible solution to a software crisis is Software
Engineering because software engineering is a systematic, disciplined, and quantifiable
approach. For preventing software crises, there are some guidelines:
 Reduction in software over budget.
 The quality of the software must be high.
 Less time is needed for a software project.
 Experienced and skilled people working on the software project.
 Software must be delivered.
 Software must meet user requirements.
1.2 write the difference between programs and software products
N.D.PRASANNA (6019)
SOFTWARE ENGINEERING

PROGRAMS:
 A computer program is a set of instructions that is used as a process of creating a
 Software program by using programming language.
 Can be as simple as a single line of code.
 Often created by a single individual or a small group.
 Generally smaller in size, ranging from KBs to MBs.
 Do not have a user interface.
 Limited features, focused on specific functionalities.
 Basic programming knowledge might be sufficient.
 Performs a specific operation or set of operations.
 Depends on compilers or interpreters for execution.
 Example. A script that calculates loan interest.
Software products:
 Software is a set of programs that enables the hardware to perform a specific task.
 Consists of multiple programs, libraries, and data.
 Usually developed by multiple people or larger teams.
 Larger in size, ranging from MBs to GBs.
 Includes sophisticated user interfaces (GUI, CLI).
 Wide range of features and functionalities.
 Requires advanced knowledge and expertise in software design.
 Provides a platform for programs to run and manage tasks.
 Depends on the operating system for its execution.
 Microsoft Office suite, Operating Systems like Windows.
1.3 Explain the following
1.3.1 Early Computer Programming:
The history of programming dates back to the early 19th century when mathematician
Ada Lovelace created an algorithm for Charles Babbage's Analytical Engine, which is
Considered the first computer. However, the first actual programming language was
Developed in the 1950s, called FORTRAN (Formula Translation). This language was
Used for scientific and engineering calculations.
In the 1960s, programming languages such as COBOL (Common Business-Oriented
Language), BASIC (Beginners All-Purpose Symbolic Instruction Code), and ALGOL
(Algorithmic Language) were developed. These languages were used to write
Applications for business and research.
The 1970s saw the development of languages such as C and Pascal, which were used to
Write operating systems and applications. In the 1980s, the first object-oriented language,
Smalltalk, was created. This language allowed developers to create reusable code and was
Used for graphical user interfaces.

N.D.PRASANNA (6019)
SOFTWARE ENGINEERING

1.3.2 High Level Language Programming:


High-level languages are programming languages that are used for writing programs or
Software that can be understood by humans and computers. High-level languages are
Easier to understand for humans because they use a lot of symbols letters phrases to
Represent logic and instructions in a program. It contains a high level of abstraction
Compared to low-level languages.

Characteristics of High-Level Language:

 Abstraction: High-level language is the language that hides the complex details of
how computers work
 Human-Readable Syntax: A program written in high-level language contains
words and symbols that are easier to understand by humans.
 Portability: Programs written in a high-level language can be run on different
types of computers without any changes.
 Easy to Use: High-level languages are user-friendly, with clear commands and
helpful tools that make writing, and testing code easier.
 Productivity: High-level languages are easy to use, and help programmers write
code faster and build features more quickly.
 Automatic Memory Management: These languages take care of memory, so we
don’t have to worry about allocating and freeing up memory manually.
 Enhanced Debugging and Error Handling: High-level languages come with
tools that make finding and fixing mistakes in our code easier.
 Rich Standard Libraries: They include many pre-written pieces of code that help
us handle common tasks, so you don’t have to start from scratch every time.
1.3.3 CONTROL FLOW-BASED DESIGN:
Control flow-based design in software engineering is a way to visualize the order in which a
program's instructions are executed. It helps developers create flexible programs that can
make decisions, repeat tasks, and respond to inputs
It was a real time example for understanding control flow based design understanding
purpose only !!! No need to read this !!!
Imagine you're following a set of instructions for a recipe. You start at the beginning, follow
each step in order, making decisions along the way based on conditions like "if the water is
boiling, add pasta." This sequential, decision-based process is similar to how programs
operate.
In Control Flow-Based Design, we're concerned with organizing the sequence of instructions
and decision-making within a program.
Characteristics of Control Flow-Based Design:
N.D.PRASANNA (6019)
SOFTWARE ENGINEERING

1. Sequential Execution:
Just like reading a book from start to finish, programs execute instructions one after another
in a specific order.
2. Decision Making:
Programs need to make choices based on conditions. For example, in a game, if a player's
health is less than 0, they lose. We use constructs like if, else, and elif to handle these
decisions.
3. Repetition with Loops:
Sometimes, we need to repeat certain actions until a condition is met. This is where loops
like while and for come in handy. For instance, in a game, we might loop through all
enemies and check if they're within the player's attack range.
4. Structured Programming:
We like to write code in a way that's neat and easy to follow. Instead of using confusing
shortcuts, like the goto statement that can make the flow of the program messy, we use
simple, organized methods. This includes using functions (blocks of code that do specific
tasks) and loops (which repeat actions) to keep the code clear and logical. This way, anyone
reading the code can understand it easily.
5. Flowcharts and Diagrams:
To plan out the control flow of our programs, we often use diagrams like flowcharts. These
visual representations help us map out the sequence of actions and decisions, making it
easier to understand the program's logic.
Let's take a simple example:
Determining if a number is even or odd.
We'll follow the steps sequentially:
• We start by getting the number from the user.
• Then, we check if the number is divisible by 2.
• If it is, we say it's even; otherwise, it's odd.
This process of going step by step, making decisions along the way, is the essence of Control
Flow-Based Design.
In summary, Control Flow-Based Design is about structuring programs to follow a logical
sequence of instructions and decisions. By organizing our code in this way, we create
programs that are easier to understand, maintain, and debug.

N.D.PRASANNA (6019)
SOFTWARE ENGINEERING

A Control Flow Graph (CFG)


A Control Flow Graph (CFG) is the graphical representation of control flow or computation
during the execution of programs or applications. Control flow graphs are mostly used in
static analysis as well as compiler applications, as they can accurately represent the flow
inside a program unit. The control flow graph was originally developed by Frances E. Allen..
Characteristics of Control Flow Graph:
1. The control flow graph is process-oriented.
2. The control flow graph shows all the paths that can be traversed during a program
execution.
3. A control flow graph is a directed graph.
4. Edges in CFG portray control flow paths and the nodes in CFG portray basic blocks.
There exist 2 designated blocks in the Control Flow Graph:
1. Entry Block: The entry block allows the control to enter into the control flow graph.
2. Exit Block: Control flow leaves through the exit block.
Hence, the control flow graph comprises all the building blocks involved in a flow diagram
such as the start node, end node and flows between the nodes.
General Control Flow Graphs:
Control Flow Graph is represented differently for all statements and loops.

N.D.PRASANNA (6019)

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy