Prescriptive Process Models and Agile Methodology
Prescriptive Process Models and Agile Methodology
Prescriptive Process Models and Agile Methodology
Process Models
and Agile
methodology
Personal and Team Process Models (PSP
& TSP )
PSP TSP
• The Personal Software Process (PSP) is a • The Team software process (TSP) provides a defined
structured software development process that is designed to operational process framework that is designed to help
help software engineers better understand and improve their teams of managers and engineers organize projects and
performance by bringing discipline to the way they develop produce software for products that range in size from small
software and tracking their predicted and actual projects of several thousand lines of code to very large
development of the code. projects greater than half a million lines of code.
• PSP has two review phases : Design review , Code review •TSP has two principal components: team-building and
team-working
•It works on 2 stages : PSP0 – and progresses in process
maturity to the final level – PSP2.1. •
Prescriptive Process Models
• The Waterfall Model :
i. It is simple but idealistic.
ii. In fact, it is hard to put this model into use in any non-trivial software development project.
One might wonder if this model is hard to use in practical development projects, then why
study it at all? The reason is that all other life cycle models can be thought of as being
extensions of the classical waterfall model.
iii. Therefore, to first understand the classical waterfall model, in order to be able to develop a
proper understanding of other life cycle models. Besides, we shall see later in this text that
this model though not used for software development; is implicitly used while documenting
software.
Phases of Waterfall Model –
i. Feasibility Study :
The main focus of the feasibility study stage is to determine whether it would be financially and
technically feasible to develop the software.
feasibility study involves carrying out several activities such as collection of basic information
relating to the software such as the different data items that would be input to the system, the
processing required to be carried out on these data, the output data required to be produced by the
system, as well as various constraints on the development.
ii. Requirement Analysis and Specification :
The aim of the requirements analysis and specification phase is to understand the exact
requirements of the customer and to document them properly.
This phase consists of two distinct activities, requirements gathering and analysis, and
requirements specification.
Iii. Design :
The goal of the design phase is to transform the requirements specified in the SRS document into
a structure that is suitable for implementation in some programming language.
Two approaches are present –procedural design approach and Object oriented approach.
▪Procedural design approach -This traditional design technique is based on the data flow-oriented
design approach. It includes – structured analysis and structured design.
▪ Object oriented approach – It has lower development time and effort, and better maintainability
of the software.
iv . Coding and Unit testing :
The purpose of the coding and unit testing phase is to translate a software design into source code
and to ensure that individually each function is working correctly. The coding phase is also
sometimes called the implementation phase, The main objective of unit testing is to determine the
correct working of the individual modules. The specific activities carried out during unit testing
include designing test cases, testing, debugging to fix problems, and management of test cases.
v . Integration and System testing –
Integration of different modules is after they have been coded and unit tested. During the
integration and system testing phase, the different modules are integrated in a planned manner.
Finally, after all the modules have been successfully integrated and tested, the full working
system is obtained. System testing is carried out on this fully working system.
The total effort spent on maintenance of a typical software during its operation phase is much
more than that required for developing the software itself.
•Corrective maintenance:
•Perfective maintenance:
•Adaptive maintenance
Weakness :
• Inhibits flexibility.
Automobile industry , Car or bike production – Requirements are drafted. Once they are
finalized then design phase starts. Now requirements do not change unless the car or bike is
completely ready .
Strengths :
• Easy to understand
i. V-model is a variant of the waterfall model. This model gets its name from its visual
appearance .
ii. In this model verification and validation activities are carried out throughout the
development life cycle, and therefore the chances bugs in the work products considerably
reduce.
iii. This model is therefore generally considered to be suitable for use in projects concerned with
development of safety-critical software that are required to have high reliability.
• There are two main phases—development and validation phases. The left half of the model
comprises the development phases and the right half comprises the validation phases.
• Development phase :
Along with the development of a work product, test case design and the plan for testing the
work product are carried out, whereas the actual testing is carried out in the validation phase.
• Validation phase :
Testing is carried out in three steps—unit, integration, and system testing. The purpose of these
three different steps of testing during the validation phase is to detect defects that arise in the
corresponding phases of software development requirements analysis and specification, design,
and coding respectively.
Phases of V model :
Strengths :
• this model usually leads to a shorter testing phase and an overall faster product development as
compared to the iterative model.
• the test team is associated with the project from the beginning. Therefore they build up a good
understanding of the development artifacts, and this in turn, helps them to carry out effective
testing of the software.
Weakness :
• Inhibits flexibility.
ii. In this life cycle model, first a simple working system implementing only a few basic
features is built and delivered to the customer. Over many successive iterations successive
versions are implemented and delivered to the customer until the desired system is realized.
iii. When an incremental model is used, the first increment is often a core product. That is, basic
requirements are addressed, but many supplementary features (some known, others
unknown) remain undelivered. The core product is used by the customer (or undergoes
detailed review). As a result of use and/or evaluation, a plan is developed for the next
increment. The plan addresses the modification of the core product to better meet the needs
of the customer and the delivery of additional features and functionality. This process is
repeated following the delivery of each increment, until the complete product is produced.
Strengths
• Reduces chances of errors in the core modules of the final product, leading to greater reliability
of the software.
• This model obviates the need for the customer to commit large resources at one go for
development of the system. It also saves the developing organisation from deploying large
resources and manpower for a project in one go.
Weakness
• Needs clear view of the entire system before it can be broken down and built incrementally
ii. Developer and customer meet and define the overall objectives for the software, identify
whatever requirements are known, and outline areas where further definition is mandatory. A
"quick design" then occurs. The quick design focuses on a representation of those aspects of
the software that will be visible to the customer/user (e.g., input approaches and output
formats).
iii. The prototype is evaluated by the customer/user and used to refine requirements for the
software to be developed. Iteration occurs as the prototype is tuned to satisfy the needs of the
customer, while at the same time enabling the developer to better understand what needs to
be done.
Strengths
• User gets a chance to experiment with a partially developed software much before the complete
requirements are developed. As a result, the change requests after delivery of the complete
software gets substantially reduced.
• In this model, handling change requests is easier as no long term plans are made. Consequently,
reworks required due to change requests are normally much smaller compared to the sequential
models
Weakness
• It is difficult to divide the required features into several parts that can be incrementally
implemented and delivered.
• Since at a time design for only the current increment is done, the design can become ad hoc
without specific attention being paid to maintainability and optimality.
Agile Software Methodology
Agile Methodology
• The agile software development model was proposed in the mid-1990s to overcome the serious
shortcomings of the waterfall model of development identified above.
• The agile model was primarily designed to help a project to adapt to change requests quickly. Thus, a
major aim of the agile models is to facilitate quick project completion.
• Agility is achieved by fitting the process to the project, i.e. removing activities that may not be
necessary for a specific project. Also, anything that that wastes time and effort is avoided.
• In the agile model, the requirements are decomposed into many small parts that can be incrementally
developed. The agile model adopts an iterative approach. Each incremental part is developed over an
iteration.
• At a time, only one increment is planned, developed, and then deployed at the customer site. No
long-term plans are made. The time to complete an iteration is called a time box. The implication
of the term time box is that the end date for an iteration does not change
•Frequent delivery of incremental versions of the software to the customer in intervals of few
weeks.
•Requirement change requests from the customer are encouraged and are efficiently incorporated.
• Having competent team members and enhancing interactions among them is considered much
more important than issues such as usage of sophisticated tools or strict adherence to a
documented process. It is advocated that enhanced communication among the development team
members can be realised through face-to-face communication rather than through exchange of
formal documents.
• Continuous interaction with the customer is considered much more important rather than
effective contract negotiation. A customer representatives is required to be a part of the
development team, thus facilitating close, daily co-operation between customers and developers.
Agile Testing Methodology
• Ensuring that right test types are run at the right time.
•The agile methods derive much of their agility by relying on the tacit knowledge of the team
members about the development project and informal communications to clarify issues, rather
than spending significant amounts of time in preparing formal documents and reviewing them.
Weakness
•Lack of formal documents leaves scope for confusion and important decisions taken during
different phases can be misinterpreted at later points of time by different team members.
•In the absence of any formal documents, it becomes difficult to get important project decisions
such as design decisions to be reviewed by external experts.
•When the project completes and the developers disperse, maintenance can become a problem.
Agile Process Models
•Crystal
•Feature-driven development
• Scrum
• Lean development
•Unified process
Scrum :
• Scrum advocates Whole Team approach , in the sense that every team member has to take part in every
project activity.
• The whole team works together on Test Strategy, Test Planning, Test Specification, Test Execution, Test
Evaluation, and Test Results Reporting.
• This approach also encourages proper use of the team talent instead of restricting to one activity. Testers
also participate in all the project and development activities contributing their expertise in testing.
• In the scrum model, a project is divided into small parts of work that can be incrementally developed and
delivered over time boxes that are called sprints.
• The software therefore gets developed over a series of manageable chunks. Each sprint typically
takes only a couple of weeks to complete.
•At the end of each sprint, stakeholders and team members meet to assess the progress made and
the stakeholders suggest to the development team any changes needed to features that have
already been developed and any overall improvements that they might feel necessary.
•In the scrum model, the team members assume three fundamental roles— software owner, scrum
master, and team member. The software owner is responsible for communicating the customers
vision of the software to the development team. The scrum master acts as a liaison between the
software owner and the team, thereby facilitating the development work.
Scrum Process Flow
•Sprint:
A Sprint is a time-box of one month or less. A new Sprint starts immediately after the completion
of the previous Sprint.
• Release:
When the product is completed then it goes to the Release stage.
•Sprint Review:
If the product still have some non-achievable features then it will be checked in this stage and
then the product is passed to the Sprint Retrospective stage.
•Sprint Retrospective:
In this stage quality or status of the product is checked.
•Product Backlog:
According to the prioritize features the product is organized.
•Sprint Backlog:
Sprint Backlog is divided into two parts Product assigned features to sprint and Sprint planning
meeting.
Agile tools : IceScrum
• IceScrum is an online Scrum tool that offers Dashboard and Timeline views, Product Backlog,
Release, and Sprint Plans, as well as Actors and Team functionality.
•It facilitates visual management with the help of virtual sticky notes.
•IceScrum is free for one team with an unlimited number of people, but the number of public
projects is limited to just one in the free version.
• The software is a Java web application and requires Java container to run.
DevOps
•DevOps is the combination of cultural philosophies, practices, and tools that increases an
organization’s ability to deliver applications and services at high velocity: evolving and
improving products at a faster pace than organizations using traditional software development
and infrastructure management processes.
•This speed enables organizations to better serve their customers and compete more effectively in
the market.
• DevOps is a new term emerging from the collision of two major related trends. The first was
also called “agile infrastructure” or “agile operations”; it sprang from applying Agile and Lean
approaches to operations work. The second is a much expanded understanding of the value of
collaboration between development and operations staff throughout all stages of the development
lifecycle when creating and operating a service, and how important operations has become in our
increasingly service-oriented world .
• DevOps is a set of practices that combines software development (Dev) and IT operations (Ops).
It aims to shorten the system development life cycle and provide continuous delivery with
high software quality.
• Agile and DevOps serve complementary roles: several standard DevOps practices such as
automated build and test, continuous integration, and continuous delivery originated in the Agile .
• Agile can be viewed as addressing communication gaps between customers and developers,
while DevOps addresses gaps between developers and IT operations / infrastructure.Also,
DevOps has focus on the deployment of developed software, whether it is developed via Agile or
other methodologies.
PRESCRIPTIVE MODEL AGILE MODEL
• Also known as classical model , It is a set • It is evolved over the period of time.
of predefined steps .
• Focuses on deliverables that fulfils user
• Focuses on every activity equally. requirements.
• Takes more time that may not be realistic. • Takes much less time .
• XP is based on frequent releases (called iteration ), during which the developers implement “user
stories”. User stories are similar to use cases, but are more informal and are simpler. A user story
is the conversational description by the user about a feature of the required.
• Coding
• Testing
• Listening
• Designing
• Feedback
• Simplicity