0% found this document useful (0 votes)
14 views14 pages

CSE 1101 Intro

Software Engineering is a systematic process that involves designing, developing, testing, and maintaining software to ensure high quality, reliability, and efficiency. It encompasses various methodologies and principles such as modularity, abstraction, and agile practices, and is essential for large-scale software projects. The field also presents both advantages, like improved quality and customer satisfaction, and disadvantages, such as high upfront costs and limited flexibility.

Uploaded by

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

CSE 1101 Intro

Software Engineering is a systematic process that involves designing, developing, testing, and maintaining software to ensure high quality, reliability, and efficiency. It encompasses various methodologies and principles such as modularity, abstraction, and agile practices, and is essential for large-scale software projects. The field also presents both advantages, like improved quality and customer satisfaction, and disadvantages, such as high upfront costs and limited flexibility.

Uploaded by

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

Introduction to

Software Engineering
Software is a program or set of programs containing
instructions that provide the desired functionality.
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.
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 efficiently.

2. Reliability: It assures 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.
• 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 concerning those criteria.
6. Reliability: It is an attribute of software quality. The extent to which a Maintainabi
program can be expected to perform its desired function, over an Efficiency Correctness
lity
arbitrary constraints,.

7. Portability: In this case, the software can be transferred from one


computer system or environment to another. Reusability Testability Reliability

8. Adaptability: In this case, the software allows differing system


constraints, and the user needs to be satisfied by making changes to the
Interoperab
software. Portability Adaptability
ility
9. Interoperability: Capability of 2 or more functional units to process
What Careers Are There in Software
Engineering?
• SWE (Software Engineer) • Cloud Engineer ·

• SDE ( Software • Front-End Developer


Development Engineer)
• Back-End Developer
• Web Developer

• Quality Assurance Engineer • DevOps Engineer.

• Web Designer • Security Engineer.

• Software Test Engineer


What Tasks do Software
Engineers do?
Some of the key responsibilities of software engineer
are:
• Requirement Analysis: • Code Review: Participating in code
Collaborating with stakeholders to reviews to improve code quality,
understand and gather the ensure adherence to standards,
requirements to design and develop and facilitate knowledge sharing
software solutions. among team members.

• Maintenance: Updating and


• Design and Development: maintaining existing software
Creating well-structured, systems, fixing bugs, and
maintainable code that meets the improving performance or adding
functional requirements and adheres new features.
to software design principles.
• Documentation: Writing clear
• Testing and Debugging: Writing documentation, including code
and conducting unit tests, comments, API documentation, and
integration tests, and debugging design documents to help other
code to ensure software is reliable engineers and future developers
and bug-free. understand the system.
What Skills do Software Engineers
Need?
• Following are some must have technical skills to become Software Engineers:
• Coding and computer programming

• Software testing

• Object-oriented design (OOD)

• Software development

• Following are some must have soft skills to become Software Engineers:
• Communication skills

• Team player

• Problem solving

• Attention to detail
Human Factors in Software Engineering

Communication Productivity and Quality and


and Collaboration Performance Success

Cultural Diversity
Education and
and Organizational
Training
Factors
Advantages of Software Engineering
1. Improved Quality: By following 5. Increased Customer Satisfaction: By
established software engineering principles involving customers in the development
and techniques, the software can be process and developing software that
developed with fewer bugs and higher meets their needs, software engineering
reliability. can help to increase customer satisfaction.

2. Increased Productivity: Using modern 6. Better Team Collaboration: By using


tools and methodologies can streamline Agile methodologies and continuous
the development process, allowing integration, software engineering allows for
developers to be more productive and better collaboration among development
complete projects faster. teams.

3. Better Maintainability: Software that is 7. Better Scalability: By designing software


designed and developed using sound with scalability in mind, software
software engineering practices is easier to engineering can help to ensure that
maintain and update over time. software can handle an increasing number
of users and transactions.
4. Reduced Costs: By identifying and
addressing potential problems early in the 8. Better Security: By following the Software
development process, software Development Life Cycle (SDLC) and
engineering can help to reduce the cost of performing security testing, software
fixing bugs and adding new features later engineering can help to prevent security
on. breaches and protect sensitive data.
Disadvantages of Software Engineering
1. High upfront costs: Implementing a 5. Limited creativity: The focus on
systematic and disciplined approach structure and process can stifle
to software development can be resource- creativity and innovation among
intensive and require a significant developers.
investment in tools and training.
6. High learning curve: The development
2. Limited flexibility: Following established process can be complex, and it requires
software engineering principles and a lot of learning and training, which can
methodologies can be rigid and may limit
the ability to quickly adapt to changing
be challenging for new developers.
requirements.
7. High dependence on tools: Software
3. Bureaucratic: Software Engineering can engineering heavily depends on the
create an environment that is bureaucratic, tools, and if the tools are not properly
with a lot of processes and paperwork, configured or are not compatible with
which may slow down the development the software, it can cause issues.
process.
8. High maintenance: The software
4. Complexity: With the increase in the engineering process requires regular
number of tools and methodologies, maintenance to ensure that the software
software engineering can be complex and is running efficiently, which can be costly
difficult to navigate. and time-consuming.

You might also like