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

Introduction To Software Engineering Chap 1 and More

Software engineering is the systematic and disciplined approach to software development that aims to produce high-quality software. It includes techniques like requirements analysis, design, testing, and maintenance. The main goals of software engineering are to develop software applications on time, within budget, and that meet requirements.

Uploaded by

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

Introduction To Software Engineering Chap 1 and More

Software engineering is the systematic and disciplined approach to software development that aims to produce high-quality software. It includes techniques like requirements analysis, design, testing, and maintenance. The main goals of software engineering are to develop software applications on time, within budget, and that meet requirements.

Uploaded by

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

Chapter1 Introduction to Software Engineering

Software is a program or set of programs containing instructions that provide


desired functionality. Engineering is the process of designing and building
something that serves a particular purpose and finds a cost-effective solution
to problems.
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.
1. Software engineering includes a variety of techniques, tools, and
methodologies, including requirements analysis, design, testing, and
maintenance.
2. It is a rapidly evolving field, and new tools and technologies are
constantly being developed to improve the software development process.
3. 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.
4. Software Engineering is mainly used for large projects based on software
systems rather than single programs or applications.
5. The main goal of Software Engineering is to develop software applications
for improving quality, budget, and time efficiency.
6. 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: 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.
Main Attributes of Software Engineering
Software Engineering is a systematic, disciplined, quantifiable study and
approach to the design, development, operation, and maintenance of a software
system. There are four main Attributes of Software Engineering.
1. Efficiency: It provides a measure of the resource requirement of a
software product in an efficient way.
2. Reliability: It provides the assurance that the product will deliver the
same results when used in similar working environment.
3. Reusability: This attribute makes sure that the module can be used in
multiple applications.
4. Maintainability: It is the ability of the software to be modified, repaired,
or enhanced easily with changing requirements.
Dual Role of Software
There is a dual role of software in the industry. The first one is as a product
and the other one is as a vehicle for delivering the product. We will discuss
both of them.
1. As a Product
 It delivers 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
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

Parameters Program Software Product

Definition A program is a set of Software is when a


instructions that are program is made available
Parameters Program Software Product

given to a computer in for commercial business


order to achieve a specific and is properly
task. documented along with its
licensing.
Software Product =
Program + Documentation
+ Licensing.

Software Development
usually follows a life cycle,
Program is one of the which involves the
stages involved in the feasibility study of the
Stages Involved
development of the project, requirement
software. gathering, development of a
prototype, system design,
coding, and testing.

Advantages of Software Engineering


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, the 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 of Software Engineering
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 processes 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.
What is the Need of Software Engineering?
Software engineering is a technique through which we can develop or create
software for computer systems or any other electronic devices. It is a
systematic, scientific and disciplined approach to the development,
functioning, and maintenance of software.
Basically, Software engineering was introduced to address the issues of low-
quality software projects. Here, the development of the software uses the well-
defined scientific principal method and procedure.
In other words, software engineering is a process in which the need of users are
analyzed and then the software is designed as per the requirement of the user.
Software engineering builds this software and application by using designing
and programming language.
In order to create complex software, we need to use software engineering
techniques as well as reduce the complexity we should use abstraction and
decomposition, where abstraction describes only the important part of the
software and remove the irrelevant things for the later stage of development so
the requirement of the software becomes simple. Decomposition breakdown of
the software in a number of modules where each module procedure as well
defines the independent task
Need of Software Engineering:
 Handling Big Projects: A corporation must use a software engineering
methodology in order to handle large projects without any issues.
 To manage the cost: Software engineering programmers plan everything
and reduce all those things that are not required.
 To decrease time: It will save a lot of time if you are developing software
using a software engineering technique.
 Reliable software: It is the company’s responsibility to deliver software
products on schedule and to address any defects that may exist.
 Effectiveness: Effectiveness results from things being created in
accordance with the standards.
 Reduces complexity: Large challenges are broken down into smaller
ones and solved one at a time in software engineering. Individual
solutions are found for each of these issues.
 Productivity: Because it contains testing systems at every level, proper
care is done to maintain software productivity.

Software engineering is the process of designing, developing, testing, and


maintaining software. It is needed because software is a complex and
constantly evolving field that requires a structured approach to ensure that the
end product is of high quality, reliable, and meets the needs of the users.
Additionally, software engineering helps to manage the costs, risks and
schedule of the software development process. It also provides a way to improve
the software development process over time through testing and feedback.
 Software engineering is a discipline that involves applying engineering
principles to the development of software. It is a systematic approach to
designing, developing, testing, and maintaining software that ensures
that the end product is of high quality, reliable, and meets the needs of
the users. The goal of software engineering is to produce software that is
efficient, easy to use, and easy to maintain.
 One of the main challenges in software development is managing the
complexity of large software systems. Software engineering provides a set
of techniques and methodologies that help to manage this complexity
and improve the software development process. For example, software
engineering practices such as Agile methodologies, Scrum, and Waterfall
provide a framework for managing the software development process.
 Another important aspect of software engineering is testing and quality
assurance. Software engineering provides a variety of testing methods
and tools to ensure that the software meets its requirements and is free
of bugs. This includes unit testing, integration testing, and acceptance
testing.
 In addition to these technical aspects, software engineering also involves
project management and team collaboration. A software development
project typically involves many people with different roles and
responsibilities. Software engineering provides a way to manage the
resources, schedule, and budget of the project, and to ensure that the
team is working together effectively.
 Overall, software engineering is essential for creating high-quality
software that meets the needs of the users and is easy to maintain. It
provides a structured approach to software development and helps to
manage the costs, risks, and schedule of the project.

You might also like