0% found this document useful (0 votes)
5 views

unit 1 part 1 se

notes

Uploaded by

kkdsam2
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
5 views

unit 1 part 1 se

notes

Uploaded by

kkdsam2
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 10

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.
• By following the principles of software engineering and using the appropriate
tools and methodologies, software developers can create high-quality,
reliable, and maintainable software that meets the needs of its users.
• The main goal of Software Engineering is to develop software applications for
improving quality, budget, and time efficiency.
• Software Engineering ensures that the software that has to be built should be
consistent, correct, also on budget, on time, and within the required
requirements.

Key Principles of Software Engineering


1. Modularity
2. Abstraction
3. Encapsulation
4. Reusability
5. Maintenance
6. Testing
7. Design Patterns
8. Agile methodologies
9. Continuous Integration & Deployment

Modularity:-
The module simply means the software components that are been created by
dividing the software.
The software is divided into various components that work together to form a single
functioning item but sometimes they can perform as a complete function if not
connected with each other.

New Section 3 Page 1


Abstraction
Abstraction is a fundamental concept in software engineering that
involves removing unnecessary details to focus on the most important aspects of a
system.
It's a key part of creating scalable software systems.

Encapsulation
Encapsulation in software engineering is a technique that restricts access to some
components of an object, which protects the data from being modified or exposed.
It's a fundamental concept in object-oriented programming (OOP).

Reusability
• Reusability in software engineering is the practice of reusing existing software
components, code, and other assets to develop new software.

Maintenance
• Maintainability is a software engineering term that refers to how easily a

New Section 3 Page 2


• Maintainability is a software engineering term that refers to how easily a
software system can be modified, updated, or repaired.
• It's important because it can impact the long-term viability and sustainability of
a software system.

Testing
• Software Testing is a method to assess the functionality of the software
program.
• The process checks whether the actual software matches the expected
requirements and ensures the software is bug-free.
• The purpose of software testing is to identify the errors, faults, or missing
requirements in contrast to actual requirements.

Design Pattern
• Reusable solutions for typical software design challenges are known as
design patterns.
• Expert object-oriented software engineers use these best practices to write
more structured, manageable, and scalable code.
○ Creational Design Pattern
○ Structural Design Pattern
○ Behavioral Design Pattern

Agile methodologies
• Agile methodologies are project management frameworks that break projects
into phases and emphasize collaboration and flexibility.
• They are used in software engineering to develop software quickly and
efficiently.

Continuous Integration & Deployment


Continuous integration and deployment (CI/CD) is a software engineering
practice that automates the process of integrating, testing, and delivering code
changes. CI/CD helps organizations release new features to users faster.

Importance of Software Engineering

New Section 3 Page 3


1. Reduces complexity:
Software engineering has a great solution to reduce the complication of any project.
Software engineering divides big problems into various small issues.

2. To minimize software cost:


Software needs a lot of hardwork and software engineers are highly paid experts.
A lot of manpower is required to develop software with a large number of codes.
But in software engineering, programmers project everything and decrease all those
things that are not needed.

3. To decrease time:
Anything that is not made according to the project always wastes time. And if you are
making great software, then you may need to run many codes to get the definitive running
code.
This is a very time-consuming procedure, and if it is not well handled, then this can take a
lot of time. So if you are making your software according to the software engineering
method, then it will decrease a lot of time.

4. Handling big projects:


Big projects are not done in a couple of days, and they need lots of patience, planning, and
management. And to invest six and seven months of any company, it requires heaps of
planning, direction, testing, and maintenance.

5. Reliable software:
Software should be secure, means if you have delivered the software, then it should work
for at least its given time or subscription. And if any bugs come in the software, the
company is responsible for solving all these bugs. Because in software engineering,
testing and maintenance are given, so there is no worry of its reliability.

6. Effectiveness:
Effectiveness comes if anything has made according to the standards. Software standards
are the big target of companies to make it more effective. So Software becomes more
effective in the act with the help of software engineering.

Software Characteristics – Software


Engineering

New Section 3 Page 4


Functionality:-
Functionality refers to the set of features and capabilities that a software program
or system provides to its users.
It is one of the most important characteristics of software, as it determines the
usefulness of the software for the intended purpose.
Examples of functionality in software include:
• Data storage and retrieval
• Data processing and manipulation
• User interface and navigation
• Communication and networking
• Security and access control
• Reporting and visualization
• Automation and scripting
The more functionality a software has, the more powerful and versatile it is, but
also the more complex it can be.

Reliability:

A set of attributes that bears on the capability of software to maintain its level of
performance under the given condition for a stated period of time.
Reliability is a characteristic of software that refers to its ability to perform its
intended functions correctly and consistently over time.
Examples of factors that can affect the reliability of software include:
• Bugs and errors in the code
• Lack of testing and validation
• Poorly designed algorithms and data structures
• Inadequate error handling and recovery
• Incompatibilities with other software or hardware
To improve the reliability of software, various techniques, and methodologies can
be used, such as testing and validation, formal verification, and fault tolerance.

Efficiency:

New Section 3 Page 5


It refers to the ability of the software to use system resources in the most effective
and efficient manner. The software should make effective use of storage space and
executive command as per desired timing requirements.
Examples of factors that can affect the efficiency of the software include:
• Poorly designed algorithms and data structures
• Inefficient use of memory and processing power
• High network latency or bandwidth usage
• Unnecessary processing or computation
• Unoptimized code

Usability:

It refers to the extent to which the software can be used with ease. the amount of
effort or time required to learn how to use the software.
Required functions are:

Maintainability:

It refers to the ease with which modifications can be made in a software system to
extend its functionality, improve its performance, or correct errors.
Required functions are:

Portability:

A set of attributes that bears on the ability of software to be transferred from one
environment to another, without minimum changes.
Required functions are:

New Section 3 Page 6


What is Software?
"Software is a set of programs (sequence of instructions) that allows the users to
perform a well-defined function or some specified task."

Types of Software
It is a collection of data that is given to the computer to complete a particular task.

1. System Software
○ Operating System
○ Language Processor
○ Device Driver
2. Application Software
○ General Purpose Software
○ Customize Software
○ Utility Software

System Software
System Software is software that directly operates the computer hardware and
provides the basic functionality to the users as well as to the other software to
operate smoothly.
System software basically controls a computer’s internal functioning and also
controls hardware devices such as monitors, printers, and storage devices, etc.
It is like an interface between hardware and user applications, it helps them to
communicate with each other because hardware understands machine
language(i.e. 1 or 0) whereas user applications are work in human-readable
languages like English, Hindi, German, etc.
System software converts the human-readable language into machine language
and vice versa.
New Section 3 Page 7
and vice versa.

Types of System Software

It has two subtypes which are:


1. Operating System:
• It is the main program of a computer system.
• When the computer system ON it is the first software that loads into the
computer’s memory. Basically, it manages all the resources such
as computer memory , Cpu , printer hard disk, etc., and provides an
interface to the user, which helps the user to interact with the computer
system. It also provides various services to other computer software.
• Examples of operating systems are Linux, Apple macOS, Microsoft
window, etc.

2. Language Processor:
• As we know that system software converts the human-readable
language into a machine language and vice versa. So, the conversion is
done by the language processor.
• It converts programs written in high-level Programming
language like Java , C++ Python etc(known as source code), into sets of
instructions that are easily readable by machines(known as object code
or machine code).

3. Device Driver:
• A device driver is a program or software that controls a device and helps
that device to perform its functions.
• Every device like a printer, mouse, modem etc. needs a driver to connect
with the computer system eternally. So, when you connect a new device
with your computer system, first you need to install the driver of that
device so that your operating system knows how to control or manage
that device.

Features of System Software

• System Software is closer to the computer system.


• System Software is written in a low-level language in general.
• System software is difficult to design and understand.
• System software is fast in speed(working speed).
• System software is less interactive for the users in comparison to
application software.

Application Software
Software that performs special functions or provides functions that are much more
than the basic operation of the computer is known as application software. Or in
other words, application software is designed to perform a specific task for end-
users.
It is a product or a program that is designed only to fulfill end-users’ requirements.
It includes word processors, spreadsheet, database management, inventory, payroll
programs, etc.
New Section 3 Page 8
programs, etc.

Types of Application Software

1. General Purpose Software:


• This type of application software is used for a variety of tasks and it is not
limited to performing a specific task only.
• For example, MS-Word, MS-Excel, PowerPoint, etc.
2. Customized Software:
• This type of application software is used or designed to perform specific
tasks or functions or designed for specific organizations.
• For example, railway reservation system, airline reservation system,
invoice management system, etc.
3. Utility Software:
• This type of application software is used to support the computer
infrastructure. It is designed to analyze, configure, optimize and maintains
the system, and take care of its requirements as well.
• For example, antivirus, disk fragmenter, memory tester, disk repair, disk
cleaners, registry cleaners, disk space analyzer, etc.

Features of Application Software

• An important feature of application software is it performs more specialized


tasks like word processing, spreadsheets, email, etc.
• Mostly, the size of the software is big, so it requires more storage space.
• Application software is more interactive for the users, so it is easy to use and
design.
• The application software is easy to design and understand.
• Application software is written in a high-level language in general.

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.
Suppose we use the same workforce, same methods, and same tools after the fast
increase in software demand, software complexity, and software challenges.
In that case, there arise some issues like software budget problems, software
efficiency problems, software quality problems, software management and delivery
problems, etc. This condition is called a Software Crisis.

New Section 3 Page 9


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.

Factors Contributing to Software Crisis


• Poor project management.
• Lack of adequate training in software engineering.
• Less skilled project members.
• Low productivity improvements.

What is software paradigm.


Software paradigm refers to method and steps, which are taken while designing the
software. Programming paradigm is a subset of software design paradigm which is
further a subset of software development paradigm.
Software paradigm is a theoretical framework that serves as a guide for the
development and structure of a software system. There are several software
paradigms, including:
Imperative paradigm: This is the most common paradigm and is based on the
idea that a program is a set of instructions that tell a computer what to do. It is
often used in languages such as C and C++.
Object-oriented paradigm: This paradigm is based on the idea of objects, which
are self-contained units that contain both data and behavior. It is often used in
languages such as Java, C#, and Python.
Functional paradigm: This paradigm is based on the idea that a program is a
set of mathematical functions that transform inputs into outputs. It is often
used in languages such as Haskell, Lisp, and ML.
Logic paradigm: This paradigm is based on the idea that a program is a set of
logical statements that can be used to infer new information. It is often used in
languages such as Prolog and Mercury.

New Section 3 Page 10

You might also like