0% found this document useful (0 votes)
18 views39 pages

Lecture 1 SE-3

The document provides an introduction to software engineering, covering its definition, goals, objectives, and phases of the Software Development Life Cycle (SDLC). It outlines key characteristics of software, umbrella activities that support development, and differentiates between application software types. The content emphasizes the systematic approach to software development aimed at creating high-quality, reliable, and maintainable software.
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)
18 views39 pages

Lecture 1 SE-3

The document provides an introduction to software engineering, covering its definition, goals, objectives, and phases of the Software Development Life Cycle (SDLC). It outlines key characteristics of software, umbrella activities that support development, and differentiates between application software types. The content emphasizes the systematic approach to software development aimed at creating high-quality, reliable, and maintainable software.
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/ 39

Introduction to Software

Engineering
Prepared By
Umer Tanveer
Lecturer of Computer Science
AWKUM
Topic Covered in Lecture 1:
• Introduction to Software Engineering
• Phases of S/w engineering
• Umbrella activities
• Characteristics of software in S/W engineering
• Application Software
What is Software and 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.
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.
Goal of Software Engineering:
• 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 built
should be consistent, correct, also on budget, on time and within the
required requirements.
Objectives of Software Engineering:
• Maintainability –
It should be feasible for the software to evolve to meet changing
requirements.
• Efficiency –
The software should not make wasteful use of computing devices
such as memory, processor cycles, etc.
• Correctness –
A software product is correct if the different requirements as
specified in the software requirements specifications (SRS) document
have been correctly implemented.
Continue……
• Reusability –
A software product has good reusability if the different modules of
the product can easily be reused to develop new products.
• Testability –
Here software facilitates both the establishment of test criteria and
the evaluation of the software with respect to those criteria.
• 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.
Continue….
• Portability –
In this case, the software can be transferred from one computer
system or environment to another.
• Adaptability –
In this case, the software allows differing system constraints and the
user needs to be satisfied by making changes to the software.
• Interoperability – Capability of 2 or more functional units to process
data cooperatively.
Phases of S/W Engineering:
• The Software Development Life Cycle refers to the phases of work
involved in producing software applications.These stages of work
include:
• Requirements Gathering,
• Software Design,
• Software Development,
• Test and Integration,
• Deployment,
• Operationalization and Maintenance.
1. Requirement Phase
• This is the most crucial phase of the software development life cycle
for the developing team as well as for the project manager.
• During this phase, the client states requirements, specifications,
expectations, and any other special requirement related to the
product or software. All these are gathered by the business manager
or project manager or analyst of the service providing company.
2. Design Phase
• The design phase includes a detailed analysis of new software according to the
requirement phase. This is the high priority phase in the development life cycle of
a system because the logical designing of the system is converted into physical
designing.
• The output of the requirement phase is a collection of things that are required,
and the design phase gives the way to accomplish these requirements.
• The decision of all required essential tools such as programming language like
Java, .NET, PHP, a database like Oracle, MySQL, a combination of hardware and
software to provide a platform on which software can run without any problem is
taken in this phase.
3. Build /Development Phase
• After the successful completion of the requirement and design phase, the next
step is to implement the design into the development of a software system.
• In this phase, work is divided into small units, and coding starts by the team of
developers according to the design discussed in the previous phase and according
to the requirements of the client discussed in requirement phase to produce the
desired result.
• this is the coding phase, it takes the longest time and more focused approach for
the developer in the software development life cycle.
4. Testing Phase
• Testing is the last step of completing a software system. In this phase, after
getting the developed GUI and back-end combination, it is tested against the
requirements stated in the requirement phase.
• Testing determines whether the software is actually giving the result as per the
requirements addressed in the requirement phase or not.
• The Development team makes a test plan to start the test. This test plan includes
all types of essential testing such as integration testing, unit testing, acceptance
testing, and system testing. Non-functional testing is also done in this phase.
5. Deployment/ Deliver Phase
• When software testing is completed with a satisfying result, and there are no
remaining issues in the working of the software, it is delivered to the
customer for their use.
• As soon as customers receive the product, they are recommended first to do
the beta testing.
• After the solution of all types of bugs and changes, the software finally
deployed to the end-user.
6. Maintenance
• The maintenance phase is the last and long-lasting phase of SDLC
because it is the process which continues until the software's life cycle
comes to an end.
• When a customer starts using software, then actual problems start to
occur, and at that time there's a need to solve these problems.
• This phase also includes making changes in hardware and software to
maintain its operational effectiveness like to improve its performance,
enhance security features and according to customer's requirements
with upcoming time. This process to take care of product time to time is
called maintenance.
"So, all these are six phases of software development life cycle
(SDLC) under which the process of development of software takes
place. All are compulsory phases without any one of the development
cannot be possible because development continues for the lifetime of
software with maintenance phase."
Umbrella Activities in S/w Engineering:
• Umbrella activities are steps in software engineering that support the
main development phases, ensuring quality, consistency, and risk
management.
• These activities run parallel to core tasks like coding and testing,
providing a framework for tracking, reviewing, and improving
progress.
• Examples include project tracking, configuration management, risk
assessment, and quality assurance, which collectively enhance the
development process.
• By addressing cross-cutting concerns, umbrella activities ensure the
software meets technical and business objectives efficiently.
Umbrella activities include:
1. Software Project Tracking and Control
2. Formal Technical Reviews
3. Software Quality Assurance
4. Software Configuration Management
5. Document Preparation and Production
6. Re-usability Management
7. Measurement and Metrics
8. Risk Management
1. Software Project Tracking and Control:
• Before the actual development begins, a schedule for developing the
software is created. Based on that schedule the development will be
done.
• However, after a certain period of time it is required to review the
progress of the development to find out actions which are in need to
be taken to complete the development, testing etc. in time. The
outcome of the review might require the development to be
rescheduled.
2.Formal Technical Reviews:
• Software engineering is done in clusters or modules, after completing
each module, it is good practice to review the completed module to
find out and remove errors so their propagation to the next module
can be prevented.
• After each module is developed, it is reviewed to identify and fix
errors.
• This prevents errors from propagating into subsequent modules.
• Example: During code reviews, developers check for bugs, adherence
to standards, and optimization opportunities.
3. Software Quality Assurance:
• The quality of the software such user experience, performance, load
handling capacity etc. should be tested and confirmed after reaching
predefined milestones.
• This reduces the task at the end of the development process. It should be
conducted by dedicated teams so that the development can keep going on.
• Ensures that the software meets predefined quality standards for user
experience, performance, and load-handling capacity.
• SQA tasks are distributed across the project timeline to reduce the burden
at the end.
• Example: Regular performance tests during development to ensure the
application scales well under load.
4. Software Configuration Management:
• Software configuration management (SCM) is a set of activities
designed to control change by identifying the work products
that are likely to change, establishing relationships among them,
defining mechanisms for managing different versions of these
work products.
• Tracks and manages changes in work products like source code,
documentation, and design files.
• Establishes relationships between these items and manages
their versions.
• Example: Version control systems like Git help manage code
updates collaboratively
5. Document preparation and production:
• All the project planning and other activities should be hardly
copied and the production get started here.
• Detailed records of project planning, development, and other
activities are maintained.
• Hard copies or digital backups ensure availability for
reference.
• Example: A project report includes all design decisions and
test plans.
6. Re-usability Management:
• This includes the backing up of each part of the software
project they can be corrected or any kind of support can be
given to them later to update or upgrade the software at
user/time demand.
• Components of the software are backed up for reuse in future
projects.
• Example: A library created for one project may be reused in
another to save time.
7. Measurement & Metrics:
• This will include all the measurement of every aspects of
the software project.
• Quantifies aspects of the project such as progress,
performance, and quality.
• Example: Tracking the number of defects identified per
module to gauge the testing phase's effectiveness.
8. Risk Management:
• Risk management is a series of steps that help a software team
to understand and manage uncertainty. It’s a really good idea to
identify it, assess its probability of occurrence, estimate its
impact, and establish a contingency plan that─ ‘should the
problem actually occur.
• Identifies potential risks, assesses their likelihood, and prepares
contingency plans.
• Example: If a key developer is unavailable, the team ensures knowledge
sharing to mitigate delays.
What is Software?
• Software is defined as collection of data, programs, procedures,
associated documentation and rules. which does not have any mass,
volume and colour. software does not wear out, get tired or degrade
over a long period of time.
Characteristics of Software in S/W Engineering:
• Software characteristics can be divided into six main groups:
1. Functionality
2. Reliability
3. Efficiency
4. Maintainability
5. Usability and
6. Portability.
Functionality:
• It refers to the suitability, accuracy, interoperability, compliance, security of software
which is measured as degree of performance of the software against its intended
purpose.
• Measures the software’s ability to perform its intended tasks accurately, securely,
and compliantly.
• Includes aspects like interoperability with other systems and adherence to standards.
• Example: An accounting software correctly calculating taxes and integrating with
banking APIs.
Reliability:
• Refers to the recoverability, fault tolerance, maturity of software,
which is basically a capability of the software that provide
required functionality under the given situations.
• Assesses the software’s maturity, fault tolerance, and ability to
recover from failures.
• Example: A flight booking system automatically handling database
failures without crashin
Efficiency:
• It is the ability of the software to use resources of system in the most
effective and efficient manner. Software must make effective use of
system storage and execute command as per required timing.
• Refers to optimized use of computing resources like memory and
processing power.
• Example: A video editing software efficiently rendering files without
overloading the system.
Usability:
• It is the extent to which the software can be utilized with ease and
the amount of effort or time required to learn how to use the
software.
• Measures the ease of learning and using the software, as well as the
user experience.
• Example: An intuitive interface in a mobile app with clear navigation
and minimal learning curve.
Maintainability:
• It is the ease with which the modifications can be made in a
software to extend or enhance its functionality, improve its
performance, or resolve bugs.
• Indicates how easily the software can be updated to fix bugs or add
new features.
• Example: Modular code design that allows quick updates without
affecting unrelated components.
Portability:
• It is the ease with which software developers can relaunch software
from one platform to another, without (or with minimum) changes. In
simple terms, software must be made in way that it should
be platform independent.
• Describes the ability of software to operate across different platforms
with minimal changes.
• Example: A cloud application running seamlessly on both Windows
and Linux servers.
Application Software:
• Application software is designed to fulfill the user’s requirement by
interacting with the user directly. It could be classified into two major
categories:-
• generic or customized.
• Generic Software is the software that is open to all and behaves the
same for all of its users. Its function is limited and not customized as
per the user’s changing requirements. However, on the other hand,
Customized software is the software products that are designed as
per the client’s requirement, and are not available for all.
Examples of Application Software
• Web browsers like Firefox, and Google Chrome, as well as Microsoft
Word and Excel, are examples of application software that is used on
a personal computer or laptop.
• It also includes smartphone apps such as WhatsApp and Telegram, as
well as games such as Candy Crush Saga and Ludo etc.
The End

You might also like