Software_Engineering_Note_Unit1_And_Unit2
Software_Engineering_Note_Unit1_And_Unit2
1
By: Manoj Sapkota, Nepal Polytechnic Institute
Characteristics of software:
1. Functionality: It refers to the degree of performance of the software
against its intended purpose. It determines the usefulness of the software
for the given purpose.
2. Reliability: It refers to the capability of software to maintain its level of
performance under the given condition for a stated period of time. It is
the ability to perform its intended functions correctly and consistently
over time.
3. Efficiency: It refers to the ability of the software to use system resources
such as memory, processing power, network bandwidth etc. in the most
effective and efficient manner.
4. Usability: It refers to the level to which the software can be used with
ease. It is the amount of time or effort required to learn how to use the
software.
5. Maintainability: It refers to the comfort with which the modifications can
be made in a software to improve its performance, extend functionality or
correct errors.
6. Portability: It refers to the ability of a software to be transferred from one
environment to another, without any change with minimal changes.
(a) System software: It is the type of software that is used to control the
activities of computer and hardware components. It interacts with hardware
and provides the platform for running the application software. Some common
types of system software are explained below.
2
By: Manoj Sapkota, Nepal Polytechnic Institute
3
By: Manoj Sapkota, Nepal Polytechnic Institute
• Full experience components: These are the components that are derived
from the existing past projects which are similar to the software to be
built for the current project and team members have full experience.
• Partial experience components: These are the components that are
derived from the existing past projects which are related to the software
to be built for the current project but needs significant modifications.
• Off the shelf components: These are the components that can be
acquired from a third party.
• New components: These are the components that must be built by the
software team for the need of the current project.
1) Definition phase: This phase focuses on ‘what’. That means, during this
phase, the software engineer tries to identify following things to define a
successful system:
• what information is to be processed.
• what functions are required.
• what system behavior can be expected.
• what interfaces are to be established.
• what validation criteria are required.
2) Development phase: This phase focuses on ‘how’. That means, during this
phase, the software engineering tries to identify following things to develop a
successful system.
• how data are to be structured.
• how functions are implemented.
• how interfaces are characterized.
• how the design is translated into a programming language.
• how the testing is performed.
4
By: Manoj Sapkota, Nepal Polytechnic Institute
The development phase includes the activities such as software design, coding,
and software testing.
3) Maintenance phase: This phase focuses on ‘change’. That means, during this
phase, the software engineering tries to identify following things to maintain a
successful system.
• Changes associated with error correction.
• Changes associated with change in environment.
• Changes associated with the change in customer requirements.
The maintenance phase includes the activities such as fixing the bugs,
adaptation, enhancement and prevention.
5
By: Manoj Sapkota, Nepal Polytechnic Institute
Several software process models are available. These are also called as SDLC
(software development life cycle) models. Some of these are:
• Waterfall model
• Incremental model
• Spiral model
• Prototyping model
• RAD model
• Agile model
OLD/MODEL QUESTIONS:
1. What is software? Explain the types of software in brief.
2. What is program? Differentiate between software and program.
3. What are the (good) characteristics of software? Explain.
4. Differentiate between software process and software process model.
6
By: Manoj Sapkota, Nepal Polytechnic Institute
1. Requirement gathering and analysis: This is the first stage in the SDLC
cycle. This stage involves gathering and analyzing the user requirements
to determine the necessity and scope of the software. It includes
understanding the business needs and documenting the requirements.
2. Design: In this phase, the overall architecture of the software is designed.
It includes defining the system components, interfaces and data
structures. This stage produces detailed specifications that are used as a
basis for implementation.
3. Implementation and coding: This is the stage where the software is
actually developed. The implementation is done based on the design
specifications. It involves writing the code with a preferred programming
language.
7
By: Manoj Sapkota, Nepal Polytechnic Institute
SDLC Models: There are various SDLC models that have been developed and
used in the process of software development. The choice of SDLC model
depends on the specific needs and requirements of a software project and the
available resources.
In this model, the software development process is divided into two phases:
(a) Build phase
(b) Fix phase
8
By: Manoj Sapkota, Nepal Polytechnic Institute
1. Build phase: In this phase, the software is developed without any formal
planning or design. The emphasis is put on to build the software as quickly as
possible to meet the immediate needs of the customer.
2. Fix phase: In this phase, the software is tested and the errors and bugs are
fixed if found. The process is repeated until the software is found to be error-
free and ready for release.
9
By: Manoj Sapkota, Nepal Polytechnic Institute
The various phases of the waterfall model are shown in figure below.
1. Requirements: This is the first phase where all the requirements of the
software are gathered. Information is collected from stakeholders such as
customers, end-users etc. to understand the business need of the
software.
2. Analysis: This stage analyzes the user requirements to determine the
necessity and scope of the project. The feasibility of the requirements is
studied and then documented.
3. Design: In this stage, the overall architecture of the software is designed.
This stage produces detailed specifications that are used as a basis for
implementation.
4. Implementation: This is the stage where the software is actually
developed. The implementation is done based on the design
specifications.
10
By: Manoj Sapkota, Nepal Polytechnic Institute
11
By: Manoj Sapkota, Nepal Polytechnic Institute
12
By: Manoj Sapkota, Nepal Polytechnic Institute
In this model, the software development process is broken down into multiple
iterations. Each iteration consists of four main stages as shown in figure below.
13
By: Manoj Sapkota, Nepal Polytechnic Institute
After each iteration, the system is reviewed and feedback is obtained. The
feedback is used to plan the next iteration. The next iteration builds upon the
previous iteration, adding new features and functionality to the system.
14
By: Manoj Sapkota, Nepal Polytechnic Institute
2. Risk analysis: In this phase, the identified risks are analyzed, and the
potential solutions are proposed. The goal of this phase is to develop a
plan to manage the risks and reduce their impact on the project.
3. Development and Testing: In this phase, the software is designed,
implemented and tested. The software is developed in small iterations,
with each iteration adding new features or functionality to the software.
4. Evaluation: In this phase, the software is evaluated to identify any
defects or issues and to determine its effectiveness.
15
By: Manoj Sapkota, Nepal Polytechnic Institute
16
By: Manoj Sapkota, Nepal Polytechnic Institute
By considering these criteria, the developers can select a model that is best
suited to the specific needs of their project.
OLD/MODEL QUESTIONS:
1. What is SDLC? Briefly explain the different phases in software
development.
2. Describe waterfall model with its advantages and disadvantages.
3. Explain prototyping model with its advantages and disadvantages.
4. Explain iterative enhancement model with its advantages and
disadvantages.
5. Describe spiral model with its advantages and disadvantages.
6. Explain Rapid Application Development model with its advantages
and disadvantages.
17