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

Unit 1 1 Software Engineering Introduction

Uploaded by

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

Unit 1 1 Software Engineering Introduction

Uploaded by

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

Software Engineering | Introduction to Software

Engineering

Software is a program or set of programs containing instructions that


provide desired functionality. And Engineering is the process of designing
and building something that serves a particular purpose and finds a cost-
effective solution to problems.
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.

Some key principles of software engineering include:

1. Modularity: Breaking the software into smaller, reusable


components that can be developed and tested independently.
2. Abstraction: Hiding the implementation details of a component and
exposing only the necessary functionality to other parts of the
software.
3. Encapsulation: Wrapping up the data and functions of an object
into a single unit, and protecting the internal state of an object from
external modifications.
4. Reusability: Creating components that can be used in multiple
projects, which can save time and resources.
5. Maintenance: Regularly updating and improving the software to fix
bugs, add new features, and address security vulnerabilities.
6. Testing: Verifying that the software meets its requirements and is
free of bugs.
7. Design Patterns: Solving recurring problems in software design by
providing templates for solving them.
8. Agile methodologies: Using iterative and incremental
development processes that focus on customer satisfaction, rapid
delivery, and flexibility.
9. Continuous Integration & Deployment: Continuously integrating
the code changes and deploying them into the production
environment.
Software engineering is a rapidly evolving field, and new tools and
technologies are constantly being developed to improve the software
development process. 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.
Software Engineering is mainly used for large projects based on software
systems rather than single programs or applications. The main goal of
software Engineering is to develop software application for improving the
quality, budget and time efficiency. Software Engineering ensures that the
software that has to build should be consistent, correct, also on budget, on
time and within the required requirements. There are Four main Attributes of
Software Engineering: -
 Efficiency
 Reliability
 Robustness
 Maintainability

Software Engineering is a systematic, disciplined, quantifiable study and


approach to the design, development, operation, and maintenance of a
software system.

Dual Role of Software:

1. As a product –

 It delivers the computing potential across networks of Hardware.


 It enables the Hardware to deliver the expected functionality.
 It acts as an information transformer because it produces,
manages, acquires, modifies, displays, or transmits information.
2. As a vehicle for delivering a product –

 It provides system functionality (e.g., payroll system)


 It controls other software (e.g., an operating system)
 It helps build other software (e.g., software tools)

Objectives of Software Engineering:


1. Maintainability –
It should be feasible for the software to evolve to meet changing
requirements.
2. Efficiency –
The software should not make wasteful use of computing devices
such as memory, processor cycles, etc.
3. Correctness –
A software product is correct if the different requirements as
specified in the SRS document have been correctly implemented.
4. Reusability –
A software product has good reusability if the different modules of
the product can easily be reused to develop new products.
5. Testability –
Here software facilitates both the establishment of test criteria and
the evaluation of the software with respect to those criteria.
6. Reliability –
It is an attribute of software quality. The extent to which a program
can be expected to perform its desired function, over an arbitrary
time period.
7. Portability –
In this case, the software can be transferred from one computer
system or environment to another.
8. Adaptability –
In this case, the software allows differing system constraints and
the user needs to be satisfied by making changes to the software.
9. Interoperability – Capability of 2 or more functional units to
process data cooperatively.
Program vs Software Product:
1. A program is a set of instructions that are given to a computer in
order to achieve a specific task whereas software is when a
program is made available for commercial business and is properly
documented along with its licensing.
Software=Program+documentation+licensing.
2. A program is one of the stages involved in the development of the
software, whereas a software development usually follows a life
cycle, which involves the
 feasibility study of the project,
 requirement gathering,
 development of a prototype,
 system design,
 coding, and
 testing.

Advantages:

There are several advantages to using a systematic and disciplined


approach to software development, such as:
1. Improved quality: By following established software engineering
principles and techniques, software can be developed with fewer
bugs and higher reliability.
2. Increased productivity: Using modern tools and methodologies
can streamline the development process, allowing developers to be
more productive and complete projects faster.
3. Better maintainability: Software that is designed and developed
using sound software engineering practices is easier to maintain
and update over time.
4. Reduced costs: By identifying and addressing potential problems
early in the development process, software engineering can help to
reduce the cost of fixing bugs and adding new features later on.
5. Increased customer satisfaction: By involving customers in the
development process and developing software that meets their
needs, software engineering can help to increase customer
satisfaction.
6. Better team collaboration: By using Agile methodologies and
continuous integration, software engineering allows for better
collaboration among development teams.
7. Better scalability: By designing software with scalability in mind,
software engineering can help to ensure that software can handle
an increasing number of users and transactions.
8. Better Security: By following the software development life cycle
(SDLC) and performing security testing, software engineering can
help to prevent security breaches and protect sensitive data.
In summary, software engineering offers a structured and efficient approach
to software development, which can lead to higher-quality software that is
easier to maintain and adapt to changing requirements. This can help to
improve customer satisfaction and reduce costs, while also promoting better
collaboration among development teams.

Disadvantages:

While software engineering offers many advantages, there are also some
potential disadvantages to consider:
1. High upfront costs: Implementing a systematic and disciplined
approach to software development can be resource-intensive and
require a significant investment in tools and training.
2. Limited flexibility: Following established software engineering
principles and methodologies can be rigid and may limit the ability
to quickly adapt to changing requirements.
3. Bureaucratic: Software engineering can create an environment
that is bureaucratic, with a lot of process and paperwork, which may
slow down the development process.
4. Complexity: With the increase in the number of tools and
methodologies, software engineering can be complex and difficult
to navigate.
5. Limited creativity: The focus on structure and process can stifle
creativity and innovation among developers.
6. High learning curve: The development process can be complex,
and it requires a lot of learning and training, which can be
challenging for new developers.
7. High dependence on tools: Software engineering heavily depends
on the tools, and if the tools are not properly configured or are not
compatible with the software, it can cause issues.
8. High maintenance: The software engineering process requires
regular maintenance to ensure that the software is running
efficiently, which can be costly and time-consuming.
In summary, software engineering can be expensive and time-consuming,
and it may limit flexibility and creativity. However, the benefits of improved
quality, increased productivity, and better maintainability can outweigh the
costs and complexity. It’s important to weigh the pros and cons of using
software engineering and determine if it is the right approach for a particular
software project.

You might also like