Professional Documents
Culture Documents
Software Engineering CHP 2
Software Engineering CHP 2
PSP: The personal software process is focused on individuals to improve their performance. The PSP is an
individual process, and it is a bottom-up approach to software process improvement. The PSP is a prescriptive
process, it is a more mature methodology with a well-defined set of tools and techniques.
Key Features of PSP :
Process-focused: PSP is a process-focused methodology that emphasizes the importance of following a
disciplined approach to software development.
Personalized: PSP is personalized to an individual’s skill level, experience, and work habits. It recognizes that
individuals have different strengths and weaknesses, and tailors the process to meet their specific needs.
Metrics-driven: PSP is metrics-driven, meaning that it emphasizes the collection and analysis of data to
measure progress and identify areas for improvement.
Incremental: PSP is incremental, meaning that it breaks down the development process into smaller, more
manageable pieces that can be completed in a step-by-step fashion.
Quality-focused: PSP is quality-focused, meaning that it emphasizes the importance of producing high-
quality software that meets user requirements and is free of defects.
Advantages :
Improved productivity: PSP provides a structured approach to software development that can help
individuals improve their productivity by breaking down the development process into smaller, more
manageable steps.
Improved quality: PSP emphasizes the importance of producing high-quality software that meets user
requirements and is free of defects. By collecting and analyzing data throughout the development process,
individuals can identify and eliminate sources of errors and improve the quality of their work.
Personalized approach: PSP is tailored to an individual’s skill level, experience, and work habits, which can
help individuals work more efficiently and effectively.
Improved estimation: PSP emphasizes the importance of accurate estimation, which can help individuals
plan and execute projects more effectively.
Continuous improvement: PSP promotes a culture of continuous improvement, which can help individuals
learn from past experiences and apply that knowledge to future projects.
Disadvantages :
Time-consuming: PSP can be time-consuming, particularly when individuals are first learning the
methodology and need to collect and analyze data throughout the development process.
Complex: PSP can be complex, particularly for individuals who are not familiar with software engineering
concepts or who have limited experience in software development.
Heavy documentation: PSP requires a significant amount of documentation throughout the development
process, which can be burdensome for some individuals.
Limited to individual use: PSP is designed for individual use, which means that it may not be suitable for
team-based software development projects.
TSP: TSP is a team-based process. It is focused on team productivity. Basically, it is a top-down approach. The
TSP is an adaptive process, and process management methodology.
Key Features of TSP :
Team-focused: TSP is team-focused, meaning that it emphasizes the importance of collaboration and
communication among team members throughout the software development process.
Process-driven: TSP is process-driven, meaning that it provides a structured approach to software
development that emphasizes the importance of following a disciplined process.
Metrics-driven: TSP is metrics-driven, meaning that it emphasizes the collection and analysis of data to
measure progress, identify areas for improvement, and make data-driven decisions.
Incremental: TSP is incremental, meaning that it breaks down the development process into smaller, more
manageable pieces that can be completed in a step-by-step fashion.
Quality-focused: TSP is quality-focused, meaning that it emphasizes the importance of producing high-
quality software that meets user requirements and is free of defects.
Feedback-oriented: TSP is feedback-oriented, meaning that it emphasizes the importance of receiving
feedback from peers, mentors, and other stakeholders to identify areas for improvement.
Advantages of TSP :
Improved productivity: TSP provides a structured approach to software development that can help teams
improve their productivity by breaking down the development process into smaller, more manageable steps.
Improved quality: TSP emphasizes the importance of producing high-quality software that meets user
requirements and is free of defects. By collecting and analyzing data throughout the development process,
teams can identify and eliminate sources of errors and improve the quality of their work.
Team collaboration: TSP promotes team collaboration, which can help teams work more efficiently and
effectively by leveraging the skills and expertise of all team members.
Improved estimation: TSP emphasizes the importance of accurate estimation, which can help teams plan
and execute projects more effectively.
Continuous improvement: TSP promotes a culture of continuous improvement, which can help teams learn
from past experiences and apply that knowledge to future projects.
Disadvantages of TSP :
Time-consuming: TSP can be time-consuming, particularly when teams are first learning the methodology
and need to collect and analyze data throughout the development process.
Complex: TSP can be complex, particularly for teams that are not familiar with software engineering
concepts or who have limited experience in software development.
Heavy documentation: TSP requires a significant amount of documentation throughout the development
process, which can be burdensome for some teams.
Requires discipline: TSP requires teams to follow a disciplined approach to software development, which
can be challenging for some teams who prefer a more flexible approach.
Cost: TSP can be costly to implement, particularly if teams need to invest in training or software tools to
support the methodology.
DIFFERENCE:
PSP TSP
PSP is more formal and structured than TSP. TSP is less formal and structured than PSP.
PSP is based on the waterfall model. TSP is based on the agile model.
PSP is more suited for large projects. TSP is more suited for small projects.
PSP is a high-level language and it is easy to TSP is a low-level language and it is difficult to learn and
learn and use. use.
PSP is a structured language and it is easy to TSP is an unstructured language and it is difficult to read
read and write. and write.
PSP programs are written in English and they TSP programs are written in assembly language and they
are easy to understand. are difficult to understand.
PSP is a portable language and it can be run on TSP is a platform-dependent language and it can be run
any platform. only on specific platforms.
PSP is an interpreted language and it does not TSP is a compiled language and it needs to be compiled
need to be compiled. before it can be run.
PSP is a free language and it can be TSP is a commercial language and it is not available for
downloaded from the internet. free.
PSP is an open-source language and it is TSP is a closed-source language and it is not available to
available to everyone. everyone.
V-MODEL: The V-Model is a software development life cycle (SDLC) model that provides a systematic and
visual representation of the software development process. It is based on the idea of a “V” shape, with the
two legs of the “V” representing the progression of the software development process from requirements
gathering and analysis to design, implementation, testing, and maintenance.
V-Model Design
1. Requirements Gathering and Analysis: The first phase of the V-Model is the requirements gathering
and analysis phase, where the customer’s requirements for the software are gathered and analyzed to
determine the scope of the project.
2. Design: In the design phase, the software architecture and design are developed, including the high-
level design and detailed design.
3. Implementation: In the implementation phase, the software is built based on the design.
4. Testing: In the testing phase, the software is tested to ensure that it meets the customer’s
requirements and is of high quality.
5. Deployment: In the deployment phase, the software is deployed and put into use.
6. Maintenance: In the maintenance phase, the software is maintained to ensure that it continues to
meet the customer’s needs and expectations.
7. The V-Model is often used in safety: critical systems, such as aerospace and defence systems, because
of its emphasis on thorough testing and its ability to clearly define the steps involved in the software
development process.
The following illustration depicts the different phases in a V-Model of the SDLC.
Verification Phases:It involves a static analysis technique (review) done without executing code. It is the
process of evaluation of the product development phase to find whether specified requirements are met.
There are several Verification phases in the V-Model:
Business Requirement Analysis:This is the first step of the designation of the development cycle where
product requirement needs to be cured from the customer’s perspective. in these phases include proper
communication with the customer to understand the requirements of the customers. these are the very
important activities that need to be handled properly, as most of the time customers do not know exactly
what they want, and they are not sure about it at that time then we use an acceptance test design planning
which is done at the time of business requirement it will be used as an input for acceptance testing.
System Design:Design of the system will start when the overall we are clear with the product requirements,
and then need to design the system completely. This understanding will be at the beginning of complete
under the product development process. these will be beneficial for the future execution of test cases.
Architectural Design:In this stage, architectural specifications are comprehended and designed. Usually,
several technical approaches are put out, and the ultimate choice is made after considering both the technical
and financial viability. The system architecture is further divided into modules that each handle a distinct
function. Another name for this is High-Level Design (HLD).
At this point, the exchange of data and communication between the internal modules and external systems
are well understood and defined. During this phase, integration tests can be created and documented using
the information provided.
Module Design:This phase, known as Low-Level Design (LLD), specifies the comprehensive internal design for
every system module. Compatibility between the design and other external systems as well as other modules
in the system architecture is crucial. Unit tests are a crucial component of any development process since they
assist in identifying and eradicating the majority of mistakes and flaws at an early stage. Based on the internal
module designs, these unit tests may now be created.
Coding Phase:The Coding step involves writing the code for the system modules that were created during the
Design phase. The system and architectural requirements are used to determine which programming language
is most appropriate.The coding standards and principles are followed when performing the coding. Before the
final build is checked into the repository, the code undergoes many code reviews and is optimized for optimal
performance.
Validation Phases:It involves dynamic analysis techniques (functional, and non-functional), and testing done
by executing code. Validation is the process of evaluating the software after the completion of the
development phase to determine whether the software meets the customer’s expectations and
requirements. So, V-Model contains Verification phases on one side of the Validation phases on the other side.
The verification and Validation phases are joined by the coding phase in a V-shape. Thus, it is called V-Model.
There are several Validation phases in the V-Model:
Unit Testing:Unit Test Plans are developed during the module design phase. These Unit Test Plans are
executed to eliminate bugs in code or unit level.
Integration testing:After completion of unit testing Integration testing is performed. In integration testing, the
modules are integrated and the system is tested. Integration testing is performed in the Architecture design
phase. This test verifies the communication of modules among themselves.
System Testing:System testing tests the complete application with its functionality, inter-dependency, and
communication. It tests the functional and non-functional requirements of the developed application.
User Acceptance Testing (UAT):UAT is performed in a user environment that resembles the production
environment. UAT verifies that the delivered system meets the user’s requirement and the system is ready for
use in the real world.
Design Phase:
Requirement Analysis: This phase contains detailed communication with the customer to understand their
requirements and expectations. This stage is known as Requirement Gathering.
System Design: This phase contains the system design and the complete hardware and communication
setup for developing the product.
Architectural Design: System design is broken down further into modules taking up different
functionalities. The data transfer and communication between the internal modules and with the outside
world (other systems) is clearly understood.
Module Design: In this phase, the system breaks down into small modules. The detailed design of modules
is specified, also known as Low-Level Design (LLD).
Testing Phases:
Unit Testing: Unit Test Plans are developed during the module design phase. These Unit Test Plans are
executed to eliminate bugs at the code or unit level.
Integration testing: After completion of unit testing Integration testing is performed. In integration testing,
the modules are integrated, and the system is tested. Integration testing is performed in the Architecture
design phase. This test verifies the communication of modules among themselves.
System Testing: System testing tests the complete application with its functionality, interdependency, and
communication. It tests the functional and non-functional requirements of the developed application.
User Acceptance Testing (UAT): UAT is performed in a user environment that resembles the production
environment. UAT verifies that the delivered system meets the user’s requirement and the system is ready
for use in the real world.
Incremental Model
In the incremental model, we first build the project with
basic features and then evolve the project in every
iteration, it is mainly used for large projects. The first step is
to gather the requirements and then perform analysis,
design, code, and test and this process goes the same over
and over again until our final project is ready.
Spiral Model
The spiral model is a combination of waterfall and iterative
models and in this, we focused on risk handling along with
developing the project with the incremental and iterative
approach, producing the output quickly as well as it is good for
big projects. The software is created through multiple iterations
using a spiral approach. Later on, after successive development
the final product will develop, and the customer interaction is
there so the chances of error get reduced.