Software Engineering Unit 1& 2
Software Engineering Unit 1& 2
Unit 1&2
PSP:
TSP:
PSP TSP
PSP is more formal and structured TSP is less formal and structured than
than TSP. PSP.
PSP is a free language and it can TSP is a commercial language and it is not
be downloaded from the internet. available for free.
S.
No. Product Process
In the case of products, the firm guidelines are In contrast, the process
3. followed. consistently follows guidelines.
Product patents are thought to offer a greater A process patent provides the
8. level of protection than process patents. inventor only limited protection.
The main goal of a project is to The main goal of the product is to complete
form a new product that has not the work successfully (solve a specific
2. already been made. problem).
S.NO
. Project Product
It focuses on increasing the A product focuses on the final result and the
performance of the software that is efficiency with which it can solve the given
4. being built. problem.
A project is done only once to get A product can be made again and again for
5. a new software. the purpose of distribution among users.
It exists before the software is It exists after the completion of the software
8. made. development phases.
Prototype model
Prototyping 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.
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.
Advantages of using Prototype Model :
1. This model is flexible in design.
2. It is easy to detect errors.
3. We can find missing functionality easily.
4. There is scope of refinement, it means new requirements can be easily
accommodated.
5. It can be reused by the developer for more complicated projects in the
future.
6. It ensures a greater level of customer satisfaction and comfort.
7. It is ideal for online system.
8. It helps developers and users both understand the system better.
9. Integration requirements are very well understood and deployment channels
are decided at a very early stage.
10. It can actively involve users in the development phase.
Disadvantages of using Prototype Model :
1. This model is costly.
2. It has poor documentation because of continuously changing customer
requirements.
3. There may be too much variation in requirements.
4. Customers sometimes demand the actual product to be delivered soon after
seeing an early prototype.
5. There may be sub-optimal solutions because of developers in a hurry to
build prototypes.
6. Customers may not be satisfied or interested in the product after seeing the
initial prototype.
7. There is certainty in determining the number of iterations.
8. There may be incomplete or inadequate problem analysis.
9. There may increase the complexity of the system.
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 the spiral model.
The Spiral Model is a software development life cycle (SDLC) model that
provides a systematic and iterative approach to software development. It is
based on the idea of a spiral, with each iteration of the spiral representing a
complete software development cycle, from requirements gathering and
analysis to design, implementation, testing, and maintenance.
The Spiral Model is a risk-driven model, meaning that the focus is on managing
risk through multiple iterations of the software development process. It consists
of the following phases:
1. Planning: The first phase of the Spiral Model is the planning phase, where
the scope of the project is determined and a plan is created for the next
iteration of the spiral.
2. Risk Analysis: In the risk analysis phase, the risks associated with the
project are identified and evaluated.
3. Engineering: In the engineering phase, the software is developed based on
the requirements gathered in the previous iteration.
4. Evaluation: In the evaluation phase, the software is evaluated to determine if
it meets the customer’s requirements and if it is of high quality.
5. Planning: The next iteration of the spiral begins with a new planning phase,
based on the results of the evaluation.
6. The Spiral Model is often used for complex and large software development
projects, as it allows for a more flexible and adaptable approach to software
development. It is also well-suited to projects with significant uncertainty or
high levels of risk.
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.
1. The below diagram shows the different phases of the Spiral Model: –
Each phase of the 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 are identified and the risks are resolved using
the best possible strategy. At the end of this quadrant, the 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.
Risk Handling in Spiral Model: A risk is any adverse situation that might affect
the successful completion of a software project. The most important feature of
the spiral model is handling these unknown risks after the project has started.
Such risk resolutions are easier done by developing a prototype. The spiral
model supports coping up with risks by providing the scope to build a prototype
at every phase of the software development.
Advantages of Spiral Model:
Below are some advantages of the 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:
Below are some main disadvantages of the 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.
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 a 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 taking feedback. After validation by the customer, the SRS document is
developed and the design is finalized.
Advantages:
The use of reusable components helps to reduce the cycle time of the
project.
Feedback from the customer is available at the initial stages.
Reduced costs as fewer developers are required.
The 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 the 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 in such cases, the cost of using
automated tools and techniques may exceed the entire budget of the project.
Requirements of Software are first broken down into several modules that can
be incrementally constructed and delivered. At any time, the plan is made just
for the next increment and not for any kind of long-term plan. Therefore, it is
easier to modify the version as per the need of the customer. The Development
Team first undertakes to develop core features (these do not need services
from other features) of the system.
Once the core features are fully developed, then these are refined to increase
levels of capabilities by adding new functions in Successive versions. Each
incremental version is usually developed using an iterative waterfall model of
development.
As each successive version of the software is constructed and delivered, now
the feedback of the Customer is to be taken and these were then incorporated
into the next version. Each version of the software has more additional features
than the previous ones.
After Requirements gathering and specification, requirements are then split into
several different versions starting with version 1, in each successive increment,
the next version is constructed and then deployed at the customer site. After the
last version (version n), it is now deployed at the client site.
Types of Incremental model:
1. Staged Delivery Model: Construction of only one part of the
project at a time.
2. Parallel Development Model – Different subsystems are developed at the
same time. It can decrease the calendar time needed for the development, i.e.
TTM (Time to Market) if enough resources are available.
Advantages-
1. Prepares the software fast.
2. Clients have a clear idea of the project.
3. Changes are easy to implement.
4. Provides risk handling support, because of its iterations.
Disadvantages-
1. A good team and proper planned execution are required.
2. Because of its continuous iterations the cost increases.
Agile Methodology Advantages and
Disadvantages
Agile Software Development Methodology is a process of software development
(such as other software development methodologies – waterfall model, V-
model, iterative model, etc.), however, the Agile development model is also a
type of incremental model. Software develops in incremental, rapid cycles. In
English, Agile means ‘the ability to move quickly and easily’ and respond to
change rapidly – this is an important aspect of Agile software development.
E=a(KLOC)^b
Time=c(Effort)^d
Person required=Effort/Time
1. The above formula is used for the cost estimation of for the basic COCOMO
model, and also is used in the subsequent models. The constant values
a,b,c, and d for the Basic Model for the different categories of the system:
Software Projects a b c d
1. Intermediate Model – The basic Cocomo model assumes that the effort is
only a function of the number of lines of code and some constants evaluated
according to the different software systems. However, in reality, no system’s
effort and schedule can be solely calculated on the basis of Lines of Code.
For that, various other factors such as reliability, experience, Capability.
These factors are known as Cost Drivers and the Intermediate Model utilizes
15 such drivers for cost estimation. Classification of Cost Drivers and their
attributes: (i) Product attributes –
Required software reliability extent
Size of the application database
The complexity of the product
Run-time performance constraints
Memory constraints
The volatility of the virtual machine environment
Required turnabout time
Analyst capability
Software engineering capability
Applications experience
Virtual machine experience
Programming language experience
Use of software tools
Application of software engineering methods
Required development schedule
2. Detailed Model – Detailed COCOMO incorporates all characteristics of the
intermediate version with an assessment of the cost driver’s impact on each
step of the software engineering process. The detailed model uses different
effort multipliers for each cost driver attribute. In detailed cocomo, the whole
software is divided into different modules and then we apply COCOMO in
different modules to estimate effort and then sum the effort. The Six phases
of detailed COCOMO are:
1. Planning and requirements
2. System design
3. Detailed design
4. Module code and test
5. Integration and test
6. Cost Constructive model
Advantages of the COCOMO model:
1. Provides a systematic way to estimate the cost and effort of a software
project.
2. Can be used to estimate the cost and effort of a software project at different
stages of the development process.
3. Helps in identifying the factors that have the greatest impact on the cost and
effort of a software project.
4. Can be used to evaluate the feasibility of a software project by estimating
the cost and effort required to complete it.
Disadvantages of the COCOMO model:
1. Assumes that the size of the software is the main factor that determines the
cost and effort of a software project, which may not always be the case.
2. Does not take into account the specific characteristics of the development
team, which can have a significant impact on the cost and effort of a
software project.
3. Does not provide a precise estimate of the cost and effort of a software
project, as it is based on assumptions and averages.