0% found this document useful (0 votes)
78 views

Software Engineering

Software engineering is an engineering discipline that applies scientific principles to software development. It involves systematic, disciplined, and quantifiable approaches to developing, operating, and maintaining software. The IEEE defines software engineering as the application of engineering principles to software development, including a systematic approach and consideration of quality attributes. Key challenges in software engineering include understanding complex requirements, undefined system boundaries, changing requirements, and properly managing documentation and budgets.

Uploaded by

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

Software Engineering

Software engineering is an engineering discipline that applies scientific principles to software development. It involves systematic, disciplined, and quantifiable approaches to developing, operating, and maintaining software. The IEEE defines software engineering as the application of engineering principles to software development, including a systematic approach and consideration of quality attributes. Key challenges in software engineering include understanding complex requirements, undefined system boundaries, changing requirements, and properly managing documentation and budgets.

Uploaded by

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

Software engineering is an engineering branch associated with

development of software product using well-defined scientific principles,


methods and procedures. The outcome of software engineering is an
efficient and reliable software product.

IEEE defines software engineering as:


(1) The application of a systematic, disciplined,quantifiable approach to
the development,operation and maintenance of software; that is, the
application of engineering to software.
(2) The study of approaches as in the above statement.

What are challenges facing software engineering?


1 .Understanding large and complex system requirements is difficult

2. Undefined system boundaries


3. Customers/Stakeholders are not clear about their needs. –

4. Conflicting requirements are there

5.Changing requirements is another issue


6. Partitioning the system suitably to reduce complexity –.
7. Validating and Tracing requirements
8.Identifying critical requirements

9 .Resolving the “to be determined” part of the requirements

10.Proper documentation, proper meeting time and budget constraints –


Distinguish between software architecture & software Design

Software Architecture
Architecture serves as a blueprint for a system. It provides an abstraction to manage
the system complexity and establish a communication and coordination mechanism
among components.
 It defines a structured solution to meet all the technical and operational
requirements, while optimizing the common quality attributes like
performance and security.
 Further, it involves a set of significant decisions about the organization
related to software development and each of these decisions can have a
considerable impact on quality, maintainability, performance, and the
overall success of the final product. These decisions comprise of −
o Selection of structural elements and their interfaces by which the
system is composed.
o Behavior as specified in collaborations among those elements.
o Composition of these structural and behavioral elements into large
subsystem.
o Architectural decisions align with business objectives.
o Architectural styles guide the organization.

Software Design
Software design provides a design plan that describes the elements of a system, how
they fit, and work together to fulfill the requirement of the system. The objectives of
having a design plan are as follows −
 To negotiate system requirements, and to set expectations with
customers, marketing, and management personnel.
 Act as a blueprint during the development process.
 Guide the implementation tasks, including detailed design, coding,
integration, and testin
Software Engineering | Classical Waterfall
Model
Classical waterfall model is the basic software development life
cycle model. It is very simple but idealistic. Earlier this model was
very popular but nowadays it is not used. But it is very important
because all the other software development life cycle models are
based on the classical waterfall model.
Classical waterfall model divides the life cycle into a set of phases.
This model considers that one phase can be started after completion
of the previous phase. That is the output of one phase will be the input
to the next phase. Thus the development process can be considered
as a sequential flow in the waterfall. Here the phases do not overlap
with each other. The different sequential phases of the classical
waterfall model are shown in the below figure:

Let us now learn about each of these phases in brief details:


1. Feasibility Study: The main goal of this phase is to determine
whether it would be financially and technically feasible to develop
the software.
The feasibility study involves understanding the problem and
then determine the various possible strategies to solve the
problem. These different identified solutions are analyzed based
on their benefits and drawbacks, The best solution is chosen and
all the other phases are carried out as per this solution strategy.
2. Requirements analysis and specification: The aim of the
requirement analysis and specification phase is to understand
the exact requirements of the customer and document them
properly. This phase consists of two different activities.

3. Design: The aim of the design phase is to transform the


requirements specified in the SRS document into a structure that
is suitable for implementation in some programming language.
4. Coding and Unit testing: In coding phase software design is
translated into source code using any suitable programming
language. Thus each designed module is coded. The aim of the
unit testing phase is to check whether each module is working
properly or not.
5. Integration and System testing: Integration of different
modules are undertaken soon after they have been coded and
unit tested. Integration of various modules is carried out
incrementally over a number of steps. During each integration
step, previously planned modules are added to the partially
integrated system and the resultant system is tested. Finally,
after all the modules have been successfully integrated and
tested, the full working system is obtained and system testing is
carried out on this.
System testing consists three different kinds of testing activities
as described below :
1. Alpha testing: Alpha testing is the system testing
performed by the development team.
2. Beta testing: Beta testing is the system testing performed
by a friendly set of customers.
3. Acceptance testing: After the software has been
delivered, the customer performed the acceptance testing
to determine whether to accept the delivered software or to
reject it.
6. Maintainence: Maintenance is the most important phase of a
software life cycle. The effort spent on maintenance is the 60%
of the total effort spent to develop a full software. There are
basically three types of maintenance :
1. Corrective Maintenance: This type of maintenance is
carried out to correct errors that were not discovered during
the product development phase.
2. Perfective Maintenance: This type of maintenance is
carried out to enhance the functionalities of the system
based on the customer’s request.
3. Adaptive Maintenance: Adaptive maintenance is usually
required for porting the software to work in a new
environment such as work on a new computer platform or
with a new operating system.
Advantages of Classical Waterfall Model
Classical waterfall model is an idealistic model for software
development. It is very simple, so it can be considered as the basis for
other software development life cycle models. Below are some of the
major advantages of this SDLC model:
 This model is very simple and is easy to understand.
 Phases in this model are processed one at a time.
 Each stage in the model is clearly defined.
 This model has very clear and well undestood milestones.
 Process, actions and results are very well documented.
 Reinforces good habits: define-before- design,
design-before-code.
 This model works well for smaller projects and projects where
requirements are well
understood.
Drawbacks of Classical Waterfall Model
Classical waterfall model suffers from various shortcomings, basically
we can’t use it in real projects, but we use other software development
lifecycle models which are based on the classical waterfall model.
Below are some major drawbacks of this model:
 No feedback path: In classical waterfall model evolution of a
software from one phase to another phase is like a waterfall. It
assumes that no error is ever committed by developers during
any phases. Therefore, it does not incorporate any mechanism
for error correction.
 Difficult to accommodate change requests: This model
assumes that all the customer requirements can be completely
and correctly defined at the beginning of the project, but actually
customers’ requirements keep on changing with time. It is difficult
to accommodate any change requests after the requirements
specification phase is complete.
 No overlapping of phases: This model recommends that new
phase can start only after the completion of the previous phase.
But in real projects, this can’t be maintained. To increase the
efficiency and reduce the cost, phases may overlap.

Explain the spiral model

Spiral model is one of the most important Software Development Life


Cycle models, which provides support for Risk Handling. In its
diagrammatic representation, it looks like a spiral with many loops.
The exact number of loops of the spiral is unknown and can vary from
project to project. Each loop of the spiral is called a Phase of the
software development process. The exact number of phases
needed to develop the product can be varied by the project manager
depending upon the project risks. As the project manager dynamically
determines the number of phases, so the project manager has an
important role to develop a product using spiral model.
The Radius of the spiral at any point represents the expenses(cost) of
the project so far, and the angular dimension represents the progress
made so far in the current phase.
Below diagram shows the different phases of the Spiral Model:
Each phase of Spiral Model is divided into four quadrants as shown in
the above figure. The functions of these four quadrants are discussed
below-
1. Objectives determination and identify alternative
solutions: Requirements are gathered from the customers and
the objectives are identified, elaborated and analyzed at the start
of every phase. Then alternative solutions possible for the phase
are proposed in this quadrant.
2. Identify and resolve Risks: During the second quadrant all the
possible solutions are evaluated to select the best possible
solution. Then the risks associated with that solution is identified
and the risks are resolved using the best possible strategy. At the
end of this quadrant, Prototype is built for the best possible
solution.
3. Develop next version of the Product: During the third
quadrant, the identified features are developed and verified
through testing. At the end of the third quadrant, the next version
of the software is available.
4. Review and plan for the next Phase: In the fourth quadrant, the
Customers evaluate the so far developed version of the software.
In the end, planning for the next phase is started.

Advantages of Spiral Model: Below are some of the advantages of the Spiral Model.
 Risk Handling: The projects with many unknown risks that occur as the
development proceeds, in that case, Spiral Model is the best development model
to follow due to the risk analysis and risk handling at every phase.
 Good for large projects: It is recommended to use the Spiral Model in large and
complex projects.
 Flexibility in Requirements: Change requests in the Requirements at later phase
can be incorporated accurately by using this model.
 Customer Satisfaction: Customer can see the development of the product at the
early phase of the software development and thus, they habituated with the system
by using it before completion of the total product.

Disdvantages of Spiral Model: Below are some of the main disadvantages of the
spiral model.
 Complex: The Spiral Model is much more complex than other SDLC models.
 Expensive: Spiral Model is not suitable for small projects as it is expensive.
 Too much dependable on Risk Analysis: The successful completion of the
project is very much dependent on Risk Analysis. Without very highly experienced
expertise, it is going to be a failure to develop a project using this model.
 Difficulty in time management: As the number of phases is unknown at the start
of the project, so time estimation is very difficult.

Difference between Waterfall Model and


Spiral Model

S.NO. WATERFALL MODEL SPIRAL MODEL

Waterfall model works in sequential While spiral model works in

1. method. evolutionary method.

In waterfall model errors or risks are

identified and rectified after the In spiral model errors or risks are

2. completion of stages. identified and rectified earlier.

Waterfall model is adopted by While spiral model is adopted by

3. customers. developers.

4. Waterfall model is applicable for While Spiral model is used for


small project. large project.

While in spiral model requirements

In waterfall model requirements and and early stage planning is

5. early stage planning is necessary. necessary if required.

Flexibility to change in waterfall Flexibility to change in spiral

6. model is Difficult. model is not Difficult.

There is high amount risk in waterfall There is low amount risk in spiral

7. model. model.

Software Engineering | Rapid application


development model (RAD)
The Rapid Application Development Model was first proposed by IBM
in 1980’s. The critical feature of this model is the use of powerful
development tools and techniques.
A software project can be implemented using this model if the project
can be broken down into small modules wherein each module can be
assigned independently to separate teams. These modules can finally
be combined to form the final product.
Development of each module involves the various basic steps as in
waterfall model i.e analyzing, designing, coding and then testing, etc.
as shown in the figure.
Another striking feature of this model is a short time span i.e the time
frame for delivery(time-box) is generally 60-90 days.

The use of powerful developer tools such as JAVA, C++, Visual


BASIC, XML, etc. is also an integral part of the projects.
This model consists of 4 basic phases:
1. Requirements Planning –
It involves the use of various techniques used in requirements
elicitation like brainstorming, task analysis, form analysis, user
scenarios, FAST (Facilitated Application Development
Technique), etc. It also consists of the entire structured plan
describing the critical data, methods to obtain it and then
processing it to form final refined model.
2. User Description –
This phase consists of taking user feedback and building the
prototype using developer tools. In other words, it includes re-
examination and validation of the data collected in the first
phase. The dataset attributes are also identified and elucidated in
this phase.
3. Construction –
In this phase, refinement of the prototype and delivery takes
place. It includes the actual use of powerful automated tools to
transform process and data models into the final working
product. All the required modifications and enhancements are too
done in this phase.
4. Cutover –
All the interfaces between the independent modules developed
by separate teams have to be tested properly. The use of
powerfully automated tools and subparts makes testing easier.
This is followed by acceptance testing by the user.
The process involves building a rapid prototype, delivering it to the
customer and the taking feedback. After validation by the customer,
SRS document is developed and the design is finalised.
Advantages –
 Use of reusable components helps to reduce the cycle time of
the project.
 Feedback from the customer is available at initial stages.
 Reduced costs as fewer developers are required.
 Use of powerful development tools results in better quality
products in comparatively shorter time spans.
 The progress and development of the project can be measured
through the various stages.
 It is easier to accommodate changing requirements due to the
short iteration time spans.
Disadvantages –
 The use of powerful and efficient tools requires highly skilled
professionals.
 The absence of reusable components can lead to failure of the
project.
 The team leader must work closely with the developers and
customers to close the project in time.
 The systems which cannot be modularized suitably cannot use
this model.
 Customer involvement is required throughout the life cycle.
 It is not meant for small scale projects as for such cases, the cost
of using automated tools and techniques may exceed the entire
budget of the project.

Agile Model
The meaning of Agile is swift or versatile."Agile process model" refers to a
software development approach based on iterative development. Agile
methods break tasks into smaller iterations, or parts do not directly involve
long term planning. The project scope and requirements are laid down at the
beginning of the development process. Plans regarding the number of
iterations, the duration and the scope of each iteration are clearly defined in
advance.

Each iteration is considered as a short time "frame" in the Agile process


model, which typically lasts from one to four weeks. The division of the
entire project into smaller parts helps to minimize the project risk and to
reduce the overall project delivery time requirements. Each iteration
involves a team working through a full software development life cycle
including planning, requirements analysis, design, coding, and testing before
a working product is demonstrated to the client.
Phases of Agile Model:
1. Requirements gathering
2. Design the requirements
3. Construction/ iteration
4. Testing/ Quality assurance
5. Deployment
6. Feedback

1. Requirements gathering: In this phase, you must define the


requirements. You should explain business opportunities and plan the time
and effort needed to build the project. Based on this information, you can
evaluate technical and economic feasibility.

2. Design the requirements: When you have identified the project, work
with stakeholders to define requirements. You can use the user flow diagram
or the high-level UML diagram to show the work of new features and show
how it will apply to your existing system.
3. Construction/ iteration: When the team defines the requirements, the
work begins. Designers and developers start working on their project, which
aims to deploy a working product. The product will undergo various stages of
improvement, so it includes simple, minimal functionality.

4. Testing: In this phase, the Quality Assurance team examines the


product's performance and looks for the bug.

5. Deployment: In this phase, the team issues a product for the user's
work environment.

6. Feedback: After releasing the product, the last step is feedback. In this,
the team receives feedback about the product and works through the
feedback.

When to use the Agile Model?


o When frequent changes are required.
o When a highly qualified and experienced team is available.
o When a customer is ready to have a meeting with a software team all
the time.
o When project size is small.

Advantage(Pros) of Agile Method:


1. Frequent Delivery
2. Face-to-Face Communication with clients.
3. Efficient design and fulfils the business requirement.
4. Anytime changes are acceptable.
5. It reduces total development time.
Disadvantages(Cons) of Agile Model:
1. Due to the shortage of formal documents, it creates confusion and
crucial decisions taken throughout various phases can be
misinterpreted at any time by different team members.
2. Due to the lack of proper documentation, once the project completes
and the developers allotted to another project, maintenance of the
finished project can become a difficulty.

V-Model
V-Model also referred to as the Verification and Validation Model. In this, each
phase of SDLC must complete before the next phase starts. It follows a sequential
design process same as the waterfall model. Testing of the device is planned in
parallel with a corresponding stage of development.
Verification: It involves a static analysis method (review) done without executing code. It
is the process of evaluation of the product development process to find whether specified
requirements meet.

Validation: It involves dynamic analysis method (functional, non-functional), testing is


done by executing code. Validation is the process to classify the software after the
completion of the development process to determine whether the software meets the
customer expectations and requirements.

There are the various phases of Verification Phase of V-model:

1. Business requirement analysis: This is the first step where product


requirements understood from the customer's side. This phase
contains detailed communication to understand customer's
expectations and exact requirements.
2. System Design: In this stage system engineers analyze and interpret
the business of the proposed system by studying the user
requirements document.
3. Architecture Design: The baseline in selecting the architecture is
that it should understand all which typically consists of the list of
modules, brief functionality of each module, their interface
relationships, dependencies, database tables, architecture diagrams,
technology detail, etc. The integration testing model is carried out in a
particular phase.
4. Module Design: In the module design phase, the system breaks
down into small modules. The detailed design of the modules is
specified, which is known as Low-Level Design
5. Coding Phase: After designing, the coding phase is started. Based on
the requirements, a suitable programming language is decided. There
are some guidelines and standards for coding. Before checking in the
repository, the final build is optimized for better performance, and the
code goes through many code reviews to check the performance.

There are the various phases of Validation Phase of V-model:

1. Unit Testing: In the V-Model, Unit Test Plans (UTPs) are developed
during the module design phase. These UTPs are executed to eliminate
errors at code level or unit level. A unit is the smallest entity which can
independently exist, e.g., a program module. Unit testing verifies that
the smallest entity can function correctly when isolated from the rest
of the codes/ units.
2. Integration Testing: Integration Test Plans are developed during the
Architectural Design Phase. These tests verify that groups created and
tested independently can coexist and communicate among
themselves.
3. System Testing: System Tests Plans are developed during System
Design Phase. Unlike Unit and Integration Test Plans, System Tests
Plans are composed by the client?s business team. System Test
ensures that expectations from an application developer are met.
4. Acceptance Testing: Acceptance testing is related to the business
requirement analysis part. It includes testing the software product in
user atmosphere. Acceptance tests reveal the compatibility problems
with the different systems, which is available within the user
atmosphere. It conjointly discovers the non-functional problems like
load and performance defects within the real user atmosphere.

When to use V-Model?


o When the requirement is well defined and not ambiguous.
o The V-shaped model should be used for small to medium-sized
projects where requirements are clearly defined and fixed.
o The V-shaped model should be chosen when sample technical
resources are available with essential technical expertise.

Advantage (Pros) of V-Model:


1. Easy to Understand.
2. Testing Methods like planning, test designing happens well before
coding.
3. This saves a lot of time. Hence a higher chance of success over the
waterfall model.
4. Avoids the downward flow of the defects.
5. Works well for small plans where requirements are easily understood.

Disadvantage (Cons) of V-Model:


1. Very rigid and least flexible.
2. Not a good for a complex project.
3. Software is developed during the implementation stage, so no early
prototypes of the software are produced.
4. If any changes happen in the midway, then the test documents along
with the required documents, has to be updated.

Prototyping Model

The Prototyping Model is one of the most popularly used Software


Development Life Cycle Models (SDLC models).This model is used
when the customers do not know the exact project requirements
beforehand. In this model, a prototype of the end product is first
developed, tested and refined as per customer feedback repeatedly till
a final acceptable prototype is achieved which forms the basis for
developing the final product.
n this process model, the system is partially implemented before or
during the analysis phase thereby giving the customers an opportunity
to see the product early in the life cycle. The process starts by
interviewing the customers and developing the incomplete high-level
paper model. This document is used to build the initial prototype
supporting only the basic functionality as desired by the customer.
Once the customer figures out the problems, the prototype is further
refined to eliminate them. The process continues till the user approves
the prototype and finds the working model to be satisfactory.
There are 2 approaches for this model:
1. Rapid Throwaway Prototyping –
This technique offers a useful method of exploring ideas and
getting customer feedback for each of them. In this method, a
developed prototype need not necessarily be a part of the
ultimately accepted prototype. Customer feedback helps in
preventing unnecessary design faults and hence, the final
prototype developed is of a better quality.
2. Evolutionary Prototyping –
In this method, the prototype developed initially is incrementally
refined on the basis of customer feedback till it finally gets
accepted. In comparison to Rapid Throwaway Prototyping, it
offers a better approach which saves time as well as effort. This
is because developing a prototype from scratch for every
iteration of the process can sometimes be very frustrating for the
developers.
3. Incremental Prototyping
Incremental prototyping refers to building multiple functional prototypes of the various
sub-systems and then integrating all the available prototypes to form a complete
system.

4. Extreme Prototyping
Extreme prototyping is used in the web development domain. It consists of three
sequential phases. First, a basic prototype with all the existing pages is presented in
the HTML format. Then the data processing is simulated using a prototype services
layer. Finally, the services are implemented and integrated to the final prototype. This
process is called Extreme Prototyping used to draw attention to the second phase of
the process, where a fully functional UI is developed with very little regard to the actual
services

You might also like