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

Software Engineering Notes1 - Module1

Software engineering is a systematic process for developing software products that involves requirements gathering, design, implementation, testing, deployment, and maintenance. It aims to deliver high-quality software solutions that meet user needs while adhering to constraints like time and budget. The document also discusses software classification, types, the software development life cycle (SDLC), and methodologies such as the Waterfall model.
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)
14 views35 pages

Software Engineering Notes1 - Module1

Software engineering is a systematic process for developing software products that involves requirements gathering, design, implementation, testing, deployment, and maintenance. It aims to deliver high-quality software solutions that meet user needs while adhering to constraints like time and budget. The document also discusses software classification, types, the software development life cycle (SDLC), and methodologies such as the Waterfall model.
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/ 35

5th Semester ECS Software Engineering

Q. Define software engineering.

Software Engineering is the process of developing a software product in a well-defined


systematic approach. Software engineering is the process of analyzing user needs and then
designing, constructing, and testing end-user applications that will satisfy these needs through
the use of software programming languages.

Software engineering is the systematic and disciplined approach to designing, developing,


testing, deploying, and maintaining software applications and systems. It involves applying
engineering principles and practices to create reliable, efficient, scalable, and maintainable
software products.

The international standard on software product quality suggests that software quality
comprises six main attributes:
 Reliability: The capability to provide failure-free service.
 Functionality: The capability to provide functions that meet stated and implied needs when
the software is used.
 Usability: The capability to be understood, learned, and used.
 Efficiency: The capability to provide appropriate performance relative to the amount of
resources used.
 Maintainability: the capability to be modified for purposes of making corrections,
improvements, or adaptations.
 Portability: The capability to be adapted for different specified environments without
applying actions or means other than those provided for this purpose in the product.

The main goal of software engineering is to deliver high-quality software solutions that meet the
needs of users, organizations, or businesses while adhering to the constraints of time, budget, and
other resources. It is a structured and methodical process that includes several key phases:

Q. Describe various phases of Software Engineering.

1. Requirements Gathering: Understanding and documenting the needs and expectations


of users and stakeholders to define the software's functionality and scope.
2. Design: Creating a detailed plan and architecture for the software, including data
structures, algorithms, and user interfaces.
3. Implementation: Writing the actual code that brings the design to life, following coding
standards and best practices.
4. Testing: Verifying that the software works as intended by systematically identifying and
correcting defects and issues.
5. Deployment: Releasing the software for production use, ensuring a smooth transition
from development to the operational environment.
6. Maintenance: Regularly updating and improving the software to fix bugs, add new
features, and adapt to changing requirements.
Throughout the software engineering process, collaboration and communication among team
members are essential to ensure a successful outcome. Different methodologies, such as Agile,
Waterfall, or DevOps, can be used to manage software development projects effectively.

Software engineers employ various tools, programming languages, and frameworks to streamline
the development process and optimize the software's performance. They also prioritize aspects
like security, reliability, scalability, and user experience to create robust and user-friendly
applications.

Q. Describe classification of software.

The software can be classified based on various criteria, including:


 Purpose: Software can be classified as system software (e.g. operating systems, device
drivers) or application software (e.g. word processors, games).
 Platform: Software can be classified as native software (designed for a specific operating
system) or cross-platform software (designed to run on multiple operating systems).
 Deployment: Software can be classified as installed software (installed on the user’s
device) or cloud-based software (hosted on remote servers and accessed via the internet).
 License: Software can be classified as proprietary software (owned by a single entity) or
open-source software (available for free with the source code accessible to the public).
 Development Model: Software can be classified as traditional software (developed using
a waterfall model) or agile software (developed using an iterative and adaptive approach).
 Size: Software can be classified as small-scale software (designed for a single user or
small group) or enterprise software (designed for large organizations).
 User Interface: Software can be classified as Graphical User Interface (GUI) software or
Command-Line Interface (CLI) software.

These classifications are important for understanding the characteristics and limitations of
different types of software, and for selecting the best software for a particular need.

Q. Explain the types of software.

Types of Software

The software is used extensively in several domains including hospitals, banks, schools, defense,
finance, stock markets, and so on. It can be categorized into different types:

 Based on Application

 Based on Copyright

Based on Application

The software can be classified on the basis of the application. These are to be done on this
basis.
1. System Software
System Software is necessary to manage computer resources and support the execution of
application programs. Software like operating systems, compilers, editors and drivers, etc.,
comes under this category. A computer cannot function without the presence of these. Operating
systems are needed to link the machine-dependent needs of a program with the capabilities of the
machine on which it runs. Compilers translate programs from high-level language to machine
language.
2. 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 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 designed per the client’s requirement, and are not
available for all.
3. Networking and Web Applications Software
Networking Software provides the required support necessary for computers to interact with each
other and with data storage facilities. Networking software is also used when software is running
on a network of computers (such as the World Wide Web). It includes all network management
software, server software, security and encryption software, and software to develop web-based
applications like HTML, PHP, XML, etc.
4. Embedded Software
This type of software is embedded into the hardware normally in the Read-Only Memory (ROM)
as a part of a large system and is used to support certain functionality under the control
conditions. Examples are software used in instrumentation and control applications like washing
machines, satellites, microwaves, etc.
5. Reservation Software
A Reservation system is primarily used to store and retrieve information and perform
transactions related to air travel, car rental, hotels, or other activities. They also provide access to
bus and railway reservations, although these are not always integrated with the main system.
These are also used to relay computerized information for users in the hotel industry, making a
reservation and ensuring that the hotel is not overbooked.
6. Business Software
This category of software is used to support business applications and is the most widely used
category of software. Examples are software for inventory management, accounts, banking,
hospitals, schools, stock markets, etc.
7. Entertainment Software
Education and Entertainment software provides a powerful tool for educational agencies,
especially those that deal with educating young children. There is a wide range of entertainment
software such as computer games, educational games, translation software, mapping software,
etc.
8. Artificial Intelligence Software
Software like expert systems, decision support systems, pattern recognition software, artificial
neural networks, etc. comes under this category. They involve complex problems which are not
affected by complex computations using non-numerical algorithms.
9. Scientific Software
Scientific and engineering software satisfies the needs of a scientific or engineering user to
perform enterprise-specific tasks. Such software is written for specific applications using
principles, techniques, and formulae particular to that field. Examples are software like
MATLAB, AUTOCAD, PSPICE, ORCAD, etc.
10. Utility Software
The programs coming under this category perform specific tasks and are different from other
software in terms of size, cost, and complexity. Examples are anti-virus software, voice
recognition software, compression programs, etc.
11. Document Management Software
Document Management Software is used to track, manage, and store documents to reduce the
paperwork. Such systems are capable of keeping a record of the various versions created and
modified by different users (history tracking). They commonly provide storage, versioning,
metadata, security, as well as indexing and retrieval capabilities.

Based on Copyright

Classification of Software can be done based on copyright. These are stated as follows:
1. Commercial Software
It represents the majority of software that we purchase from software companies, commercial
computer stores, etc. In this case, when a user buys software, they acquire a license key to use it.
Users are not allowed to make copies of the software. The company owns the copyright of the
program.
2. Shareware Software
Shareware software is also covered under copyright but the purchasers are allowed to make and
distribute copies with the condition that after testing the software, if the purchaser adopts it for
use, then they must pay for it. In both of the above types of software, changes to the software are
not allowed.
3. Freeware Software
In general, according to freeware software licenses, copies of the software can be made both for
archival and distribution purposes but here, distribution cannot be for making a profit. Derivative
works and modifications to the software are allowed and encouraged. Decompiling of the
program code is also allowed without the explicit permission of the copyright holder.
4. Public Domain Software
In the case of public domain software, the original copyright holder explicitly relinquishes all
rights to the software. Hence software copies can be made both for archival and distribution
purposes with no restrictions on distribution. Modifications to the software and reverse
engineering are also allowed.
Q. What is the Difference between system software and application software

Q. Explain software process framework in software engineering

Software Process Framework is an abstraction of the software development process. It details


the steps and chronological order of a process. Since it serves as a foundation for them, it is
utilized in most applications. Task sets, umbrella activities, and process framework activities all
define the characteristics of the software development process.

Software process includes:

 Tasks – focus on a small, specific objective.


 Action – set of tasks that produce a major work product.
 Activities – group of related tasks and actions for a major objective.
Process Framework Activities:

The process framework is required for representing common process activities. Five framework
activities are described in a process framework for software engineering. Communication,
planning, modeling, construction, and deployment are all examples of framework activities. Each
engineering action defined by a framework activity comprises a list of needed work outputs,
project milestones, and software quality assurance (SQA) points.

 Communication: By communication, customer requirement gathering is done.


Communication with consumers and stakeholders to determine the system’s objectives
and the software’s requirements.
 Planning: Establish engineering work plan, describes technical risk, lists resources
requirements, work produced and defines work schedule.
 Modeling: Architectural models and design to better understand the problem and for
work towards the best solution. The software model is prepared by:
 Analysis of requirements
 Design
 Construction: Creating code, testing the system, fixing bugs, and confirming that all
criteria are met. The software design is mapped into a code by:
o Code generation
o Testing
 Deployment: In this activity, a complete or non-complete product or software is
represented to the customers to evaluate and give feedback. On the basis of their
feedback, we modify the product for the supply of better products.

Q. Explain Umbrella activities in software process frame work.

Umbrella activities:

Umbrella Activities are that take place during a software development process for improved
project management and tracking.

Software project tracking and control: This is an activity in which the team can assess
progress and take corrective action to maintain the schedule. Take action to keep the project on
time by comparing the project’s progress against the plan.
Risk management: The risks that may affect project outcomes or quality can be analyzed.
Analyze potential risks that may have an impact on the software product’s quality and outcome.
Software quality assurance: These are activities required to maintain software quality. Perform
actions to ensure the product’s quality.
Formal technical reviews: It is required to assess engineering work products to uncover and
remove errors before they propagate to the next activity. At each level of the process, errors are
evaluated and fixed.
Software configuration management: Managing of configuration process when any change in
the software occurs.
Work product preparation and production: The activities to create models, documents, logs,
forms, and lists are carried out.

Reusability management: It defines criteria for work product reuse. Reusable work items
should be backed up, and reusable software components should be achieved.

Measurement: In this activity, the process can be defined and collected. Also, project and
product measures are used to assist the software team in delivering the required software.

Each of these umbrella activities extends beyond the individual phases of the software
development lifecycle and contributes to the success of the overall project. They ensure that
software development remains organized, manageable, and focused on delivering a high-quality
product that meets the project's goals and requirements.
Q. Explain software Development Life Cycle (SDLC) and why it is required.

The Software Development Life Cycle (SDLC) is a process used by software development
organizations to plan, design, develop, test, deploy, and maintain software applications.

SDLC (Software Development Life Cycle) is used in Every Software Development Company
because it is the root of the Development Cycle, if that model would not exist in the world, firstly
no software can build secondly if any how it would be made, it’s not going to succeed it has no
use, because of no maintenance, but Luckily SDLC model exist in Tech world But why we need
it Actually!

There are several reasons why organizations use the Software Development Life Cycle (SDLC)
when developing software applications:

To provide a structured and organized approach to software development: The SDLC


provides a framework for managing the software development process, which helps to ensure
that all necessary steps are taken and that the final product meets the requirements.

1. To ensure that the software is of high quality: The SDLC includes testing and quality
assurance phases, which help to ensure that the software is free of bugs and that it meets the
requirements.

2. To manage risks and costs: The SDLC helps organizations to identify and manage risks early
in the development process, which can help to reduce costs and minimize the impact of any
issues that do arise.

3. To improve communication and collaboration: The SDLC helps to ensure that all
stakeholders, including customers, end-users, and developers, are involved in the development
process and that their needs are taken into account.
4. To improve efficiency and productivity: The SDLC helps organizations to optimize the use
of resources and to streamline the development process, which can improve efficiency and
productivity.

5. To increase the likelihood of a successful project outcome: Following a well-defined SDLC


process can greatly increase the chances of success of the project, as the process guides the team
towards the goal in a systematic and efficient way.

Overall, the SDLC is a valuable tool for organizations to use when developing software
applications, as it helps to ensure that the final product is of high quality, meets the
requirements, and is delivered on time and within budget.

The SDLC typically includes the following phases:

1. Requirements gathering and analysis: This phase involves gathering information about the
software requirements from stakeholders, such as customers, end-users, and business analysts.

2. Design: In this phase, the software design is created, which includes the overall architecture of
the software, data structures, and interfaces. It has two steps:

 High-level design (HLD): It gives the architecture of software products.


 Low-level design (LLD): It describes how each and every feature in the product should
work and every component.

3. Implementation or coding: The design is then implemented in code, usually in several


iterations, and this phase is also called as Development.
 This is the longest phase in SDLC model.
 This phase consists of Front end + Middleware + Back-end.
 In front-end: Development of coding is done even SEO settings are done.
 In Middleware: They connect both the front end and back end.
 In the back-end: A database is created.

4. Testing: The software is thoroughly tested to ensure that it meets the requirements and works
correctly.
5. Deployment: After successful testing, The software is deployed to a production environment
and made available to end-users.
6. Maintenance: This phase includes ongoing support, bug fixes, and updates to the software.
There are different methodologies that organizations can use to implement the SDLC, such as
Waterfall, Agile, Scrum, V-Model and DevOps.

Q. Explain waterfall model in Software Engineering SDLC.

The Waterfall Model was the first Process Model to be introduced. It is also referred to as a
linear-sequential life cycle model. It is very simple to understand and use. In a waterfall model,
each phase must be completed before the next phase can begin and there is no overlapping in the
phases. The Waterfall model is the earliest SDLC approach that was used for software
development. The waterfall Model illustrates the software development process in a linear
sequential flow. This means that any phase in the development process begins only if the
previous phase is complete. In this waterfall model, the phases do not overlap.

The waterfall model is useful in situations where the project requirements are well-defined and
the project goals are clear. It is often used for large-scale projects with long timelines, where
there is little room for error and the project stakeholders need to have a high level of confidence
in the outcome.

Waterfall Model – Design


Waterfall approach was first SDLC Model to be used widely in Software Engineering to ensure
success of the project. In "The Waterfall" approach, the whole process of software development
is divided into separate phases. In this Waterfall model, typically, the outcome of one phase acts
as the input for the next phase sequentially.

The following illustration is a representation of the different phases of the Waterfall Model.
All these phases are cascaded to each other in which progress is seen as flowing steadily
downwards (like a waterfall) through the phases. The next phase is started only after the defined
set of goals are achieved for previous phase and it is signed off, so the name "Waterfall Model".
In this model, phases do not overlap.

The sequential phases in Waterfall model are −

 Requirement Gathering and analysis − All possible requirements of the system to be


developed are captured in this phase and documented in a software requirement
specification (SRS) document.
 System Design − The requirement specifications from first phase are studied in this
phase and the system design is prepared. This system design helps in specifying hardware
and system requirements and helps in defining the overall system architecture.
 Implementation − with inputs from the system design, the system is first developed in
small programs called units, which are integrated in the next phase. Each unit is
developed and tested for its functionality, which is referred to as Unit Testing.
 Testing (Integration and Testing) − All the units developed in the implementation
phase are integrated into a system after testing of each unit. Post integration the entire
system is tested for any faults and failures.
 Deployment of system − Once the functional and non-functional testing is done; the
product is deployed in the customer environment or released into the market.
 Maintenance − There are some issues which come up in the client environment. To fix
those issues, patches are released. Also to enhance the product some better versions are
released. Maintenance is done to deliver these changes in the customer environment.
Applications: This model is used where

 Requirements are very well documented, clear and fixed.


 Product definition is stable.
 Technology is understood and is not dynamic.
 There are no ambiguous requirements.
 Ample resources with required expertise are available to support the product.
 The project is short.

Advantages:

 Simple and easy to understand and use


 Easy to manage due to the rigidity of the model. Each phase has specific deliverables and
a review process.
 Phases are processed and completed one at a time.
 Works well for smaller projects where requirements are very well understood.
 Clearly defined stages.
 Well understood milestones.
 Easy to arrange tasks.
 Process and results are well documented.

Disadvantages:

 High amounts of risk and uncertainty.


 Not a good model for complex and object-oriented projects.
 Poor model for long and ongoing projects.
 Not suitable for the projects where requirements are at a moderate to high risk of
changing. So, risk and uncertainty is high with this process model.
 It is difficult to measure progress within stages.
 Cannot accommodate changing requirements.
 Integration is done as a "big-bang. at the very end, which doesn't allow identifying any
technological or business bottleneck or challenges early.
Q. Explain Iterative and Incremental model in Software Engineering SDLC.

Iterative & Incremental Model – Design


Iterative process starts with a simple implementation of a subset of the software requirements
and iteratively enhances the evolving versions until the full system is implemented. At each
iteration, design modifications are made and new functional capabilities are added. The basic
idea behind this method is to develop a system through repeated cycles (iterative) and in smaller
portions at a time (incremental). So it is both iterative and incremental model.

Fig: Incremental Model

In this incremental model, the whole requirement is divided into various builds. During each
iteration, the development module goes through the requirements, design, implementation and
testing phases. Each subsequent release of the module adds function to the previous release. The
process continues till the complete system is ready as per the requirement.
The advantages of the Iterative and Incremental SDLC Model are as follows:

 Some working functionality can be developed quickly and early in the life cycle.
 Results are obtained early and periodically.
 Parallel development can be planned.
 Progress can be measured.
 Less costly to change the scope/requirements.
 Testing and debugging during smaller iteration is easy.
 Risks are identified and resolved during iteration; and each iteration is an easily managed
milestone.
 Easier to manage risk - High risk part is done first.
 With every increment, operational product is delivered.
 Issues, challenges and risks identified from each increment can be utilized/applied to the
next increment.
 Risk analysis is better.
 It supports changing requirements.
 Initial Operating time is less.
 Better suited for large and mission-critical projects.

The disadvantages of the Iterative and Incremental SDLC Model are as follows −

 More resources may be required.


 More management attention is required.
 System architecture or design issues may arise because not all requirements are gathered
in the beginning of the entire life cycle.
 Defining increments may require definition of the complete system.
 Not suitable for smaller projects.
 Management complexity is more.
 End of project may not be known which is a risk.
 Highly skilled resources are required for risk analysis.
 Projects progress is highly dependent upon the risk analysis phase.

Q. Explain Evolutionary model in Software Engineering SDLC.

Evolutionary Model – Design


Evolutionary model is a combination of Iterative and Incremental model of software
development life cycle. The Evolutionary development model divides the development cycle into
smaller, incremental waterfall models in which users are able to get access to the product at the
end of each cycle. Feedback is provided by the users on the product for the planning stage of the
next cycle and the development team responds, often by changing the product, plan or process.
Therefore, the software product evolves with time. All the models have the disadvantage that the
duration of time from start of the project to the delivery time of a solution is very high.
Evolutionary model solves this problem in a different approach.
Evolutionary model suggests breaking down of work into smaller units, prioritizing them and
then delivering those chunks units to the customer one by one. The number of units is huge and
is the number of deliveries made to the customer. The main advantage is that the customer’s
confidence increases as he constantly gets quantifiable goods or services from the beginning of
the project to verify and validate his requirements. The model allows for changing requirements
as well as all work is broken down into maintainable work units.

Applications of Evolutionary Model:

1. It is used in large projects where you can easily find modules for incremental
implementation. Evolutionary model is commonly used when the customer wants to start
using the core features instead of waiting for the full software.
2. Evolutionary model is also used in object oriented software development because the
system can be easily portioned into units in terms of objects.

Necessary conditions for implementing this model:-

 Customer needs are clear and been explained in deep to the developer team.
 There might be small changes required in separate parts but not a major change.
 As it requires time, so there must be some time left for the market constraints.
 Risk is high and continuous targets to achieve and report to customer repeatedly.
 It is used when working on a technology is new and requires time to learn.
Advantages:

 In evolutionary model, a user gets a chance to experiment partially developed system.


 It reduces the error because the core modules get tested thoroughly.

Disadvantages:

 Sometimes it is hard to divide the problem into several versions that would be acceptable
to the customer which can be incrementally implemented and delivered.

Q. Explain RAD model in Software Engineering SDLC.

RAD Model – Design


The RAD (Rapid Application Development) model is based on prototyping and iterative
development with no specific planning involved. The process of writing the software itself
involves the planning required for developing the product.

Rapid Application Development focuses on gathering customer requirements through workshops


or focus groups, early testing of the prototypes by the customer using iterative concept, reuse of
the existing prototypes (components), continuous integration and rapid delivery.

In the RAD model, the functional modules are developed in parallel as prototypes and are integrated to
make the complete product for faster product delivery. Since there is no detailed preplanning, it makes
it easier to incorporate the changes within the development process.

RAD projects follow iterative and incremental model and have small teams comprising of developers,
domain experts, customer representatives and other IT resources working progressively on their
component or prototype.

When to use RAD Model?

When the customer has well-known requirements, the user is involved throughout the life cycle,
the project can be time-boxed, the functionality delivered in increments, high performance is not
required, low technical risks are involved and the system can be modularized. In these cases, we
can use the RAD Model. When it is necessary to design a system that can be divided into smaller
units within two to three months. When there is enough money in the budget to pay for both the
expense of automated tools for code creation and designers for modeling.

Multiple teams work on developing the software system using RAD model.
RAD Model - Applications

The following pointers describe the typical scenarios where RAD can be used −

 RAD should be used only when a system can be modularized to be delivered in an


incremental manner.
 It should be used if there is a high availability of designers for Modelling.
 It should be used only if the budget permits use of automated code generating tools.
 RAD SDLC model should be chosen only if domain experts are available with relevant
business knowledge.
 Should be used where the requirements change during the project and working prototypes
are to be presented to customer in small iterations of 2-3 months.

The advantages of the RAD Model are as follows –

 Changing requirements can be accommodated.


 Progress can be measured.
 Iteration time can be short with use of powerful RAD tools.
 Productivity with fewer people in a short time.
 Reduced development time.
 Increases reusability of components.
 Quick initial reviews occur.
 Encourages customer feedback.
 Integration from very beginning solves a lot of integration issues.

The disadvantages of the RAD Model are as follows −

 Dependency on technically strong team members for identifying business requirements.


 Only system that can be modularized can be built using RAD.
 Requires highly skilled developers/designers.
 High dependency on Modelling skills.
 Inapplicable to cheaper projects as cost of Modelling and automated code generation is
very high.
 Management complexity is more.
 Suitable for systems that are component based and scalable.
 Requires user involvement throughout the life cycle.
 Suitable for project requiring shorter development times.

Q. Explain Prototype model in Software Engineering SDLC.

Prototype Model – Design


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.
In 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 until the user approves the
prototype and finds the working model to be satisfactory.

Steps Prototyping Model


Step 1: Requirement Gathering and Analysis: This is the initial step in designing a prototype
model. In this phase, users are asked about what they expect or what they want from the system.

Step 2: Quick Design: This is the second step in Prototyping Model. This model covers the
basic design of the requirement through which a quick overview can be easily described.

Step 3: Build a Prototype: This step helps in building an actual prototype from the knowledge
gained from prototype design.

Step 4: Initial User Evaluation: This step describes the preliminary testing where the
investigation of the performance model occurs, as the customer will tell the strength and
weaknesses of the design, which was sent to the developer.
Step 5: Refining Prototype: If any feedback is given by the user, then improving the client’s
response to feedback and suggestions, the final system is approved.

Step 6: Implement Product and Maintain: This is the final step in the phase of the Prototyping
Model where the final system is tested and distributed to production, here program is run
regularly to prevent failures.

Advantages of Prototyping Model


 The customers get to see the partial product early in the life cycle. This ensures a greater
level of customer satisfaction and comfort.
 New requirements can be easily accommodated as there is scope for refinement.
 Missing functionalities can be easily figured out.
 Errors can be detected much earlier thereby saving a lot of effort and cost, besides
enhancing the quality of the software.
 The developed prototype can be reused by the developer for more complicated projects in
the future.
 Flexibility in design.
 Early feedback from customers and stakeholders can help guide the development process
and ensure that the final product meets their needs and expectations.
 Prototyping can be used to test and validate design decisions, allowing for adjustments to
be made before significant resources are invested in development.
 Prototyping can help reduce the risk of project failure by identifying potential
and addressing them early in the process.
 Prototyping can facilitate communication and collaboration among team members and
stakeholders, improving overall project efficiency and effectiveness.
 Prototyping can help bridge the gap between technical and non-technical stakeholders by
providing a tangible representation of the product.

Disadvantages of the Prototyping Model


 Costly with respect to time as well as money.
 There may be too much variation in requirements each time the prototype is evaluated by
the customer.
 Poor Documentation due to continuously changing customer requirements.
 It is very difficult for developers to accommodate all the changes demanded by the
customer.
 There is uncertainty in determining the number of iterations that would be required
before the prototype is finally accepted by the customer.
 After seeing an early prototype, the customers sometimes demand the actual product to
be delivered soon.
 Developers in a hurry to build prototypes may end up with sub-optimal solutions.
 The customer might lose interest in the product if he/she is not satisfied with the initial
prototype.
 The prototype may not be scalable to meet the future needs of the customer.
 The prototype may not accurately represent the final product due to limited functionality
or incomplete features.
 The focus on prototype development may shift the focus away from the final product,
leading to delays in the development process.
 The prototype may give a false sense of completion, leading to the premature release of
the product.
 The prototype may not consider technical feasibility and scalability issues that can arise
during the final product development.
 The prototype may be developed using different tools and technologies, leading to
additional training and maintenance costs.
 The prototype may not reflect the actual business requirements of the customer, leading
to dissatisfaction with the final product.

Applications of Prototyping Model

 The Prototyping Model should be used when the requirements of the product are not
clearly understood or are unstable.
 The prototyping model can also be used if requirements are changing quickly.
 This model can be successfully used for developing user interfaces, high-technology
software-intensive systems, and systems with complex algorithms and interfaces.
 The prototyping Model is also a very good choice to demonstrate the technical feasibility
of the product.

Q. Explain Spiral model in Software Engineering SDLC.

Spiral Model – Design


The spiral model combines the idea of iterative development with the systematic, controlled
aspects of the waterfall model. This Spiral model is a combination of iterative development
process model and sequential linear development model i.e. the waterfall model with a very high
emphasis on risk analysis. It allows incremental releases of the product or incremental
refinement through each iteration around the spiral.

Q. Why Spiral Model is called Meta Model?

The Spiral model is called a Meta-Model because it subsumes all the other SDLC models. For
example, a single loop spiral actually represents the Iterative Waterfall Model. The spiral model
incorporates the stepwise approach of the Classical Waterfall Model. The spiral model uses the
approach of the Prototyping Model by building a prototype at the start of each phase as a risk-
handling technique. Also, the spiral model can be considered as supporting the Evolutionary
model – the iterations along the spiral can be considered as evolutionary levels through which
the complete system is built.
The spiral model has four phases. A software project repeatedly passes through these phases in
iterations called Spirals.

Advantages of Spiral Model:

1. 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.
2. Good for large projects: It is recommended to use the Spiral Model in large and
complex projects.
3. Flexibility in Requirements: Change requests in the Requirements at later phase can be
incorporated accurately by using this model.
4. 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.
5. Iterative and Incremental Approach: The Spiral Model provides an iterative and
incremental approach to software development, allowing for flexibility and adaptability
in response to changing requirements or unexpected events.
6. Emphasis on Risk Management: The Spiral Model places a strong emphasis on risk
management, which helps to minimize the impact of uncertainty and risk on the software
development process.
7. Improved Communication: The Spiral Model provides for regular evaluations and
reviews, which can improve communication between the customer and the development
team.
8. Improved Quality: The Spiral Model allows for multiple iterations of the software
development process, which can result in improved software quality and reliability

Disadvantages of Spiral Model:

1. Complex: The Spiral Model is much more complex than other SDLC models.
2. Expensive: Spiral Model is not suitable for small projects as it is expensive.
3. Too much dependability on Risk Analysis: The successful completion of the project is
very much dependent on Risk Analysis. Without very highly experienced experts, it is
going to be a failure to develop a project using this model.
4. Difficulty in time management: As the number of phases is unknown at the start of the
project, so time estimation is very difficult.
5. Complexity: The Spiral Model can be complex, as it involves multiple iterations of the
software development process.
6. Time-Consuming: The Spiral Model can be time-consuming, as it requires multiple
evaluations and reviews.
7. Resource Intensive: The Spiral Model can be resource-intensive, as it requires a
significant investment in planning, risk analysis, and evaluations.

Q. When to use the Spiral Model?


 When a project is vast in software engineering, a spiral model is utilized.
 A spiral approach is utilized when frequent releases are necessary.
 When it is appropriate to create a prototype
 When evaluating risks and costs is crucial
 The spiral approach is beneficial for projects with moderate to high risk.
 The SDLC’s spiral model is helpful when requirements are complicated and ambiguous.
 If modifications are possible at any moment
 When committing to a long-term project is impractical owing to shifting economic
priorities.
Q. Differentiate in between waterfall and spiral model.

Waterfall Model and Spiral Model are two different software development life cycle models,
each with its own characteristics and approaches. Let's differentiate between them:

1. Basic Approach:

 Waterfall Model: The waterfall model follows a linear and sequential approach,
where each phase is completed before moving on to the next one. It is a structured
and well-defined model.
 Spiral Model: The spiral model is iterative and combines elements of both linear
and iterative models. It emphasizes risk assessment and addresses risks through
iterative development.

2. Phases:

 Waterfall Model: The development process in the waterfall model proceeds


through discrete phases, typically including requirements gathering, design,
implementation, testing, deployment, and maintenance.
 Spiral Model: The development process in the spiral model involves a series of
iterations, with each iteration including planning, risk analysis, engineering, and
evaluation.

3. Risk Management:

 Waterfall Model: In the waterfall model, risk analysis is generally minimal, and
risks are addressed late in the process, which can lead to challenges in handling
unexpected issues.
 Spiral Model: The spiral model emphasizes risk analysis and mitigation at each
iteration. It allows early identification and resolution of risks, making it more
adaptable to changing requirements.

4. Iterations:

 Waterfall Model: The waterfall model does not have iterations; once a phase is
completed, it rarely goes back to a previous phase.
 Spiral Model: The spiral model involves multiple iterations, and the software
evolves through each iteration, revisiting and refining previous phases as needed.

5. Flexibility:

 Waterfall Model: The waterfall model is less flexible when it comes to


accommodating changes in requirements during the development process.
 Spiral Model: The spiral model is more flexible and can incorporate changes due
to its iterative nature.
6. Applicability:

 Waterfall Model: The waterfall model is suitable for well-defined projects with
stable requirements, where changes are unlikely.
 Spiral Model: The spiral model is suitable for large and complex projects with
uncertain or evolving requirements, as it allows for risk-driven development.

7. Documentation:

 Waterfall Model: The waterfall model emphasizes extensive documentation at


each phase to provide a clear and complete understanding of the project.
 Spiral Model: While documentation is still important in the spiral model, the
focus is more on prototyping, risk analysis, and rapid development.

Both models have their strengths and weaknesses, and the choice between them depends on the
specific characteristics and requirements of the software project. The waterfall model is suitable
for projects with well-understood and stable requirements, while the spiral model is more
suitable for projects with changing or uncertain requirements and higher risks.

Q. Explain Concurrent Model in Software Engineering SDLC.

Concurrent Process Model – Design


Concurrent engineering is a product development methodology. In concurrent engineering,
various production phases and processes are worked on and executed concurrently.

Q. Where is concurrent model used?

Concurrent models are often utilized in software engineering as they provide a more systematic,
efficient, and flexible approach to developing software products. When deciding which model to
use, the project's specifics should be taken into account, as well as the preferences of the
software development team.

Concurrent development model is also known as concurrent engineering. According to this


model all the software engineering activities analysis design etc. Are built / performed parallel
with each other. And for each of the activity, a state transition diagram is made. All the events of
an activity are shown as states and there should be transitions among them. Such type of models
is applicable to all types of software development and provides an accurate picture of the current
state of a project.
Concurrent development model is quite different from the incremental model. The incremental
model is performed sequentially while the concurrent development model is performed
simultaneously. Instead of having a linear process flow, development processed creates a net-like
workflow. It derives from the evolutionary process flow.

In the concurrent development model, each activity has a state and occurs concurrently.
Transitions take place when an activity is triggered to move to another state [2]. Usually, these
transitions are caused by inconsistencies and improvements. Therefore, concurrent development
model can be defined as a series of activities, tasks, and associated states.

 The concurrent development model is called as concurrent model.


 The communication activity has completed in the first iteration and exits in the awaiting
changes state.
 The modeling activity completed its initial communication and then goes to the
underdevelopment state.
 If the customer specifies the change in the requirement, then the modeling activity moves
from the under development state into the awaiting change state.
 The concurrent process model activities moving from one state to another state

Advantages of this model:

 It is easy for understanding and use.


 High flexibility
 This model is applicable to all types of software development processes.
 It gives immediate feedback from testing.
 New features and designs may be further added
 Each component occurs simultaneously

Disadvantages of this model:

 Require a good teamwork


 Least-planned design
 Frequent errors and miscommunication during a process may trigger disruption
in other states

Q. Explain Component Based Model in Software Engineering SDLC.

Component Based Model (CBM) – Design


Characteristics of Component Assembly Model:

 Uses object-oriented technology.


 Components and classes encapsulate both data and algorithms.
 Components are developed to be reusable.
 Paradigm similar to spiral model, but engineering activity involves components.
 The system produced by assembling the correct components.

The component-based assembly model uses object-oriented technologies. In object-oriented


technologies, the emphasis is on the creation of classes. Classes are the entities that encapsulate
data and algorithms. In component-based architecture, classes (i.e., components required to build
application) can be uses as reusable components. This model uses various characteristics of
spiral model. This model is evolutionary by nature. Hence, software development can be done
using iterative approach. In CBD model, multiple classes can be used. These classes are basically
the prepackaged components. The model works in following manner:

 Step-1: First identify all the required candidate components, i.e., classes with the help of
application data and algorithms.
 Step-2: If these candidate components are used in previous software projects then they
must be present in the library.
 Step-3: Such preexisting components can be excited from the library and used for further
development.
 Step-4: But if the required component is not present in the library then build or create the
component as per requirement.
 Step-5: Place this newly created component in the library. This makes one iteration of
the system.
 Step-6: Repeat steps 1 to 5 for creating n iterations, where n denotes the number of
iterations required to develop the complete application.
Advantages of this model:

 Easier Maintenance
 Better Reusability
 Improved Scalability.
 Reduced development and testing time
 Enhanced reliability (because components are pre-tested), and
 Flexibility to change applications by adding or replacing components without major disruption.

Disadvantages of this model:

 Limited customization option


 Breaking of component
 Time consuming Process

Q. Explain Agile Model with its advantages and disadvantages.

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:

Following are the phases in the agile model are as follows:

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?

 When frequent changes are required.


 When a highly qualified and experienced team is available.
 When a customer is ready to have a meeting with a software team all the time.
 When project size is small.
Advantages of Agile Model:

1. Frequent Delivery
2. Face-to-Face Communication with clients.
3. Efficient design and fulfills the business requirement.
4. Anytime changes are acceptable.
5. It reduces total development time.

Disadvantages 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.

Agile Testing Methods:

 Scrum
 Crystal
 Dynamic Software Development Method(DSDM)
 Feature Driven Development(FDD)
 Lean Software Development
 eXtreme Programming(XP)

Q. Explain Agility principles.

Principles of Agile −

While Agile itself is more of an ideology or manifesto, there is different form of implementation
of the same as explained above. However, one look at those methodologies and one can figure
out that all of them have a common skeleton or some basic ideas over which all those
methodologies are based on. Based on the Agile manifesto, there are a total of 12 principles or
guideline which all the agile methodologies standby. Which are –

 Agile promotes early and continuous delivery of valuable software. That means while
customer satisfaction is one of the major focus in Agile, clients always look for faster
delivery and early or on time delivery is a way to keep your customers happy as at the
end of the day, they mainly care about the end product rather than the overall process.
 Being flexible about change at any point of development. One of agile’s primary focus
is customer satisfaction and agile is all about customer’s input and involvement
throughout the process including integrating requirement changes at any point of time
during the development.
 Working on frequent and short deliveries throughout the development process.
Those deliveries can be weekly or monthly based depending upon the cycle/ sprint
duration in order to keep the client updated periodically regarding present status of
development.
 Agile promotes transparency between business people and developers and requires
them to work together which helps in better coordination, risk management as well as
understanding of the product development flow both technically as well as from a
business point of view.
 Agile advocates for motivating individuals in the team. By providing a better
productive environment and providing them with all the support, motivation and respect,
there will be a team that is motivated and trust each other which is highly effective in
getting better productivity.
 While technical advancement has gifted us with many alternative ways to communicate,
agile believes in face to face communication as the most effective way to
communicate between and to development team.
 Agile focuses on through planning and designing in order to get a clear understanding of
the user requirement. Agile motivates continuous attention towards effective designing
and technical excellence through following optimal code standard. It can be done
through regular code inspection on technical reviews and refactoring based on the
reviews at regular intervals.
 Agile promotes sustainable development. The developers, users and sponsors should
work together in order to ship out delivery at a constant pace. As requirement changes as
well as blockages during the development process are bound to happen, the whole team
must work together so that the delivery process is followed indefinitely.
 Working software is the primary measure of progress. In simple terms, none of the
planning, designing or overall development process matters if the end product is not in
working condition. The properly working end software product is what the success of an
agile process depends on.
 Simplicity—the art of maximizing the amount of work not done—is essential. In
simple terms, to extract maximum result with less hard work. Agile promotes removing
unnecessary tasks and prioritizing activities can have maximum impact with less and
effective work done.
 The best architectures, requirements, and designs emerge from self-organizing
teams. Agile advocates encouraging and appreciating motivated individuals in a team,
who are passionate about the whole development process, take ownership of their tasks
and share ideas among each other through effective communication. This results in
having a team of motivated and highly valuable team players with a sense of ownership
working together to provide better productivity.
 At regular intervals, the team reflects on how to become more effective, then tunes
and adjusts its behavior accordingly. There is always a scope for change and
improvement. Agile promotes team members should focus on self –improvement. They
should do regular analysis and work on improving the overall delivery or the
development process.
Q. Write short notes on Scrum and eXtreme Programming.

Scrum

SCRUM is an agile development process focused primarily on ways to manage tasks in team-
based development conditions.

There are three roles in it, and their responsibilities are:

 Scrum Master: The scrum can set up the master team, arrange the meeting and remove
obstacles for the process
 Product owner: The product owner makes the product backlog, prioritizes the delay and
is responsible for the distribution of functionality on each repetition.
 Scrum Team: The team manages its work and organizes the work to complete the sprint
or cycle.

eXtreme Programming (XP)

This type of methodology is used when customers are constantly changing demands or
requirements, or when they are not sure about the system's performance. It is a framework that
enables teams to create high-quality software that helps improve their quality of life. It enables
software development alongside appropriate engineering practices. It is applicable while
handling changing software requirements risks caused due to new software, working with a
small, extended development team, and technology that allows automated unit and functional
tests.

Extreme Programming or simply called as XP prioritizes customer satisfaction over


anything else. Developed by Kent Beck, XP requires higher level of involvement from both
Client as well as developers. Development cases where there is frequent changes in customer
requirement can opt for XP as it is flexible regarding changes at any time of the production.

It focuses on short deliveries with checkpoints all over the project in order to analyze if there are
any changes in requirement and act accordingly. The small deliveries and iterative development
cycles happen in a more confusing manner without any clear picture. However it makes sense
once the whole development is completed. XP is largely dependent on its developer team’s
ability to coordinate.

There are 5 phases in Extreme programming, which are –

Planning −

The initial phase where clients and the developers meet and discuss about the requirement and
scope of the development. Based on the client input, developer team prepares short iterative user
stories or development cycles for the full development as a whole. Based on the stories created,
duration and cost of the project is defined.
Designing −

Here all the user stories are broken down into smaller tasks and further analysis is done regarding
the execution. Even development standards such as class and method names, architecture and
formats etc. are planned during designing. Test cases are concurrently prepared for those
iterative tasks. For probable problems even contingency plans as well as solutions are discussed.

Coding −

The most important phase where the development based on the planning takes place which
include coding based on requirement and simultaneous documentation for updating customer
regarding the present status. Coding standards and architectures defined during designing are
properly followed with a strictly 40 hours’ work a week follow up.

Testing −

Once the coding is done, user acceptance testing is started. XP integrates testing during the
coding phase itself for testing and development to run simultaneously. Based on the test results,
bugs are eliminated and then the product goes through customer acceptance testing which is
based on the customer requirements. Once the testing is passed, the product along with the test
result is then delivered to the customer.
Closure −

Here, once the product is delivered, the team awaits for customer as well as manager feedback.
Based on the feedback, they again follow the same planning-coding-testing iteration till customer
acceptance test is passed. The team also provides technical support during production in case of
further issue arises.

You might also like