Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% found this document useful (0 votes)
3 views

Software_Engineering_Note_Unit1_And_Unit2

Uploaded by

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

Software_Engineering_Note_Unit1_And_Unit2

Uploaded by

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

By: Manoj Sapkota, Nepal Polytechnic Institute

Unit-1: Introduction to software engineering

Software engineering: It is the application of a systematic and disciplined


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

It is an engineering discipline that is concerned with various aspects of


software production. It is the application of a method and scientific knowledge
to create a practical cost-effective solution for the design, construction,
operation and maintenance of a software.

Software: Software is a set of instructions, data or programs that enables


hardware or computer to perform certain applications.

It is opposite to that of hardware, that describes the physical aspects of a


computer. Software is a term that is used to refer to scripts and programs that
run on a device.

Program vs software: The difference between program and software is given


below.
Program Software
1. Program is a set of instructions 1. It is a set or a collection of
that is used to perform a specific programs that is used to perform an
task or a function. entire application.
2. It is usually developed by an 2. It is usually developed by a group
individual to operate small tasks. of developers/engineers working in a
team.
3. It takes very less time to be 3. It takes more time to be developed.
developed.
4. It has fewer features and limited 4. It has more features and
functionalities. functionalities.
5. It is smaller in size, and its size 5. It is larger in size, and its size
generally ranges from kilobyte(Kb) generally ranges from Megabyte(Mb)
to Megabyte(Mb). to Gigabyte(Gb).
6. It is mainly dependent on 6. It is mainly dependent on operating
compiler. system.
7. It is not properly documented. 7. It is properly documented.
8. It doesn’t have a user interface. 8. It has a user interface.
8. Examples of program are: 9. Examples of software: Adobe
malware, simple calculator etc. photoshop, PowerPoint etc.

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.

Some more characteristics of software are:


• It is intangible, meaning it cannot be seen or touched.
• It does not wear out. It does not degrade over time.
• It is easy to replicate. That means, it can be copied and distributed
easily.
• It is developed and not manufactured.
• It can be complex, that means, it can have many interrelated parts and
features.
• It can be affected by bugs and other issues. It needs to be tested and
debugged to ensure its proper functionality.

Types of software: Software is generally categorized as system software and


application software as shown in figure below.

(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

• Operating system: It guides the computer hardware to perform different


activities under variety of conditions. It performs resource management
and provides interface between user and machine.
• Device driver: It controls the operation and functionality of different
devices. Functioning of the devices such as keyboard, monitor etc. is
controlled by the device drivers.
• Language translator: It translates the program written in high level
languages to machine language consisting of sequence of 0s and 1s.
• Utility software: It is used to maintain, support, enhance and secure
existing program. Examples of utility software are: antivirus, data
recovery software, disk management etc.

(b) Application software: It is the type of software that is designed to perform


specific task. It needs system software for its execution. Some of the common
types of application software are explained below.
• Word Processor: It is used to create documents such as reports, articles
etc. in the required format. Microsoft Word is an example of a word
processor.
• Spreadsheet: It is used to store records, calculations and numeric
operations. It enables the user to manipulate the table of data for various
purposes. Microsoft Excel is an example of a spreadsheet.
• Image Editor: It is used for the manipulation in images such as cropping,
editing, adjusting contrast etc. Adobe Photoshop and Microsoft Paint are
the examples of image editor.
• Database Management System: It is used to create and maintain a
database for storing, extraction and manipulation of data. Microsoft
Access and MySQL are the examples of database management system.
• Web Browsers: It is used to view web pages and allow communication on
the internet. Google Chrome and Firefox are the examples of web
browsers.

Software component: It is a building block of the computer software. It is a


portable, replaceable and reusable set of functions that encloses its
implementation and exposes a set of interfaces.

There are various types of software components. They are as follows:

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.

Generic view of software engineering: The process of software engineering


can be categorized into three generic phases:
1) Definition phase
2) Development phase
3) Maintenance phase

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.

The definition phase includes the activities such as information gathering,


software project planning and requirement analysis.

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.

Software process: It is a set of related activities that leads to the production of


the software. These activities may involve the development of the software from
the scratch, or, modifying an existing system.

A software process typically includes the following four activities:


1) Software specification: The main functionalities of the software and the
constraints (limitations, restrictions) around them are defined.
2) Software design and implementation: The software is designed and
programmed.
3) Software verification and validation: The software has to meet its
specification and fulfil the customer’s needs.
4) Software evolution: The software is modified to meet the change in
customer’s requirement.

Software process model: It is the abstract representation of a software


development process. It is a description of a software process that is presented
in a structured way. It represents the order in which the activities of a software
development will be undertaken.

A software process model will define the following:


• The tasks to be performed
• The input and output of each task
• The pre and post conditions for each task
• The flow and sequence of each task

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

Unit-2: Software Development Life Cycle Models

SDLC: It stands for Software Development Life Cycle. It is a process that


defines various stages involved in the development of a software. It is a process
to design, develop and test high quality software. It consists of a detailed plan
describing how to develop, maintain and enhance specific software. It contains
various stages (phases) as shown in figure below.

Figure: Various phases (stages) of the SDLC

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

4. Testing: In this stage, the software is tested to ensure that it is free of


errors and meets the user requirements. It includes various testing and
debugging methods such as functional testing, performance testing,
security testing, usability testing etc.
5. Deployment: In this phase, the software is deployed to the production
environment and delivered to customers. This is the stage that ensures
that the product is ready to operate and is installed on the user’s
machines.
6. Maintenance: This is the final stage of the SDLC cycle. Once the software
is deployed, it needs regular update and maintenance. This stage
involves fixing bugs, providing updates and adding new features to the
software.

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.

Some of the commonly used SDLC models are:


1) Build and fix model
2) Waterfall model
3) Prototyping model
4) Iterative enhancement model
5) Spiral model
6) Rapid application development (RAD) model

1) Build and fix model: It is a simple and informal approach to software


development where the focus is done on building the software and then fixing
any bugs or errors that arise during the process.

In this model, the software development process is divided into two phases:
(a) Build phase
(b) Fix phase

These phases are shown in the figure below.

8
By: Manoj Sapkota, Nepal Polytechnic Institute

Figure: Build and fix model

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.

Advantages of this model:


• It is simple and easy to understand, making it a popular choice for small
projects.
• It is a quick and inexpensive approach to software development, making
it ideal for projects with low budgets and deadlines.

Disadvantages of this model:


• The lack of documentation can make it difficult to maintain and enhance
the software over time.
• The software may lack quality since there is no formal planning and
design.
• The bugs and errors are fixed after the software has been built which can
be problematic and can result in delay of the product.

9
By: Manoj Sapkota, Nepal Polytechnic Institute

2. Waterfall Model: It is a widely used software development process that


follows a linear, sequential approach to software development. It consists of
various phases, each of which must be completed before moving on to the next.
So, in this model, each phase depends on the previous phase.

The various phases of the waterfall model are shown in figure below.

Figure: Waterfall Model

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

5. Testing: In this phase, the software is tested to ensure that it is free of


errors and meets the user requirements.
6. Deployment: In this phase, the software is released to the customers.
This is the stage that ensures that the product is ready to operate and is
installed on the user’s machines.
7. Maintenance: This stage involves fixing bugs, providing updates and
adding new features to the software.

Advantages of this model:


• It has a clear and well-structured framework.
• It is easy to understand, use and follow.
• Each phase of this model is well defined and properly documented.
• It is a good approach for small projects.

Disadvantages of this model:


• It is inflexible. Changes and modifications are not easy once the phase is
complete.
• It does not provide early prototype.
• It is a risky model. Any errors made in the earlier phases can impact the
entire project if not discovered earlier.
• It limits the involvement of customer in the development process. Any
misunderstandings about the user requirements might lead to high
development cost and time.

3. Prototyping Model: It is a software development process in which a


prototype (initial version of the software) is developed prior to the actual
software. The initial prototype will have limited functional capabilities and
performance when compared to the actual software. Dummy functions are
used to create the prototypes. The main objective of this model is to gather
feedback from the users to refine the software requirements, design and
functionality.

It consists of various phases as shown in figure below.

11
By: Manoj Sapkota, Nepal Polytechnic Institute

Figure: Prototyping model

1. Requirements gathering: This is the first step in the prototyping model


where all the requirements of the software are gathered, analyzed and
documented.
2. Quick design: In this phase, a quick design of the software is created
based on the requirements. The design focuses on to develop an initial
prototype of the software.
3. Building prototype: In this stage, a prototype is developed based on the
quick design. The prototype should be a working model of the software
that can demonstrate its key features and functionality.
4. Customer evaluation: In this phase, the prototype is evaluated with
users, stakeholders and developers. Feedback from them is collected and
analyzed.
5. Refining prototype: In this stage, the software requirements, design and
functionality are refined based on the collected feedback.
6. Repeat: The prototyping process is repeated as shown in the above figure
until the software meets the requirements of the customer.
7. Engineer product: Once the customer approves the prototype, it is used
as a basis for developing the final product.

Advantages of this model:


• This model allows for early feedback from users, which can help to
identify and correct issues early in the development process.
• It is flexible. Changes and modifications can be done easily based on the
collected feedback.
• It helps to improve the understanding of the software requirements and
design.

12
By: Manoj Sapkota, Nepal Polytechnic Institute

Disadvantages of this model:


• The customers may request for additional features and changes to the
software product that might be out of scope of the original software
requirements.
• Too much feedback and too much request for change may increase the
delivery time of the product.
• Building a decent prototype may require additional time and resources,
which can increase the cost of the project.

4. Iterative enhancement model: It is the software development process that


involves the development of a system through multiple iterations, each of
which adds new features and functionality to the system.

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.

Figure: Iterative enhancement model

1. Requirements: In this stage, the requirements for the iteration are


gathered, and the objectives are defined.
2. Analysis: In this stage, the requirements are analyzed and detailed
understanding of the requirements is gained.
3. Design: During this stage, the overall system architecture is designed in
detail.
4. Coding: In this stage, the code is written and the system is tested.
5. Software product increment: A software product increment is delivered at
the end of every iteration which is the improved version of the previous
increment.

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.

Advantages of this model:


• It is flexible. Modifications and changes can be made according to
feedback received.
• It allows for receiving the feedback that ensures that the software meets
the user requirements.
• The initial delivery of the product is faster and cheaper.
• The important requirements can be prioritized and developed early.

Disadvantages of this model:


• The delivery of the final product can be time consuming and expensive if
it involves many iterations.
• It requires the effective planning of iterations.
• It may require a significant number of dedicated developers and testers.

5. Spiral model: It is an iterative software development process that follows a


cyclic approach. It is developed to manage risks and uncertainties in software
development projects. The spiral model consists of four phases, each of which
is repeated in a continuous spiral until the software is complete. These phases
are as shown in figure below:

Figure: Spiral model

1. Planning: In this phase, the requirements of the software are defined,


and the risks associated with the project are identified. This phase
involves defining the objectives and creating a project plan.

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.

Advantages of this model:


• It is flexible and modifications can be done at any stage of the
development process.
• It focuses on identifying risks throughout the development process,
which reduces the chances of project failure.
• It encourages the customer involvement and feedback, which ensures
that the final product meets the user requirements.
• It is suitable for large and complex projects.

Disadvantages of this model:


• It is more complex than other models and requires more effort to
manage.
• It involves multiple iterations, and the need for risk analysis can be time-
consuming.
• It can be expensive to use.
• It is not suitable for small projects because of its complexity.

6. Rapid Application Development (RAD) model: It is a software


development process that focuses on rapid prototyping and iterative
development. The objective of this model is to enable fast and efficient software
development, with a focus on delivering the working software quickly. It
encourages the reuse of existing software components to reduce the
development time and improve quality.

The RAD model consists of various phases as shown in figure below.

15
By: Manoj Sapkota, Nepal Polytechnic Institute

Figure: Rapid Application Development (RAD) model

1. Requirements Planning: In this phase, the software requirements are


gathered and analyzed. The most important features and functionality of
the software are prioritized.
2. User Design: During this phase, the software is designed to meet the
requirements gathered in the previous phase. The prototypes are
developed and tested with users to ensure that the software meets their
needs.
3. Construction: In this phase, the software is developed and tested in small
increments. The goal is to create a working version of the software that
includes the features identified in the previous phases.
4. Cut-over: In this phase, the software is deployed and integrated into the
production environment.

Advantages of this model:


• It enables faster development of the product.
• It allows to get feedback from the customer at the initial stages.
• It encourages the reuse of existing software components, which reduces
the development time and improve quality.
• It is adaptable and flexible. Modifications can be easily made.

Disadvantages of this model:


• It needs high skilled developers.
• It requires a high degree of collaboration and frequent user feedback.
• It relies heavily on prototyping.
• It is suitable for only those projects which have a small development
time.

16
By: Manoj Sapkota, Nepal Polytechnic Institute

Selection criteria of a lifecycle model: The selection of a lifecycle model is a


critical decision in the software development because it can have a significant
impact on the success of the project. Some of the important selection criteria
that can be considered when choosing a lifecycle model are as follows:
1. Project requirements: The requirements of the project should be carefully
considered when selecting a lifecycle model. The size of the project, its
complexity and scope should be evaluated to select the most suitable
model.
2. Development team experience: The experience and expertise of the
development team should also be taken into account when selecting a
model.
3. Project timeline: The project timeline can also influence the selection of a
lifecycle model. Some models may be better suited to shorter timelines,
while others may be better for longer and complex projects.
4. Project budget: The budget of the project should also be considered.
Some models may be more expensive than others.
5. Project risks: The risks associated with the project are also taken into
account when selecting a lifecycle model. An agile model or spiral model
may be preferred for high-risk projects.
6. Customer involvement: The involvement of customer in the project can
also be considered for selecting the model.
7. Regulatory requirements and industry standards: Regulatory
requirements and industry standards should also be considered when
selecting a lifecycle model.

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

You might also like