You are on page 1of 28

Process Models III

Software Engineering Trends

Gather requirements before development starts. However, if the requirements are to be


changed later, then following is usually noticed −

Resistance to the changes at a later stage of development.


There is a requirement of a rigorous change process that involves a change control board that
may even push the changes to later releases.
The delivery of a product with obsolete requirements, not meeting the customer’s
expectations.
Inability to accommodate the inevitable domain changes and technology changes within the
budget.

2
Find and eliminate defects early in the development life cycle in
order to cut the defect-fix costs

Testing starts only after coding is complete and testing is considered as a


tester’s responsibility though the tester is not involved in development.
Measure and track the process itself. This becomes expensive because of −
Monitoring and tracking at the task level and at the resource level.

Defining measurements to guide the development and measuring every


activity in the development.
Management intervention.

3
Elaborate, analyze, and verify the models before development.

A model is supposed to be used as a framework. However, focus on


the model and not on the development that is crucial will not yield the
expected results.

4
Coding, which is the heart of development is not given enough
emphasis. The reasons being −

Developers, who are responsible for the production, are usually


not in constant communication with the customers.

Coding is viewed as a translation of design and the effective


implementation in code is hardly ever looped back into the
design.

5
Testing is considered to be the gateway to check for defects before
delivery.

Schedule overruns of the earlier stages of development are compensated


by overlooking the test requirements to ensure timely deliveries.

This results in cost overruns fixing defects after delivery.

Testers are made responsible and accountable for the product quality
though they were not involved during the entire course of development.

6
Limiting resources (mainly team) to accommodate budget leads to −

Resource over allocation

Team burnout.

Loss in effective utilization of team competencies.

Attrition.

7
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.
Agile is a time-bound, iterative approach to software delivery that builds software
incrementally from the start of the project, instead of trying to deliver all at once.

8
9
Agile

10
Why Agile?

Technology in this current era is progressing faster than ever, enforcing the global software
companies to work in a fast-paced changing environment. Because these businesses are operating
in an ever-changing environment, it is impossible to gather a complete and exhaustive set of
software requirements. Without these requirements, it becomes practically hard for any
conventional software model to work.
The conventional software models such as Waterfall Model that depends on completely specifying
the requirements, designing, and testing the system are not geared towards rapid software
development. As a consequence, a conventional software development model fails to deliver the
required product.
This is where the agile software development comes to the rescue. It was specially designed to
curate the needs of the rapidly changing environment by embracing the idea of incremental
development and develop the actual final product.

11
Characteristics of Agility

Agility in Agile Software Development focuses on the culture of the whole team with
multi-discipline, cross-functional teams that are empowered and selforganizing.
It fosters shared responsibility and accountability.
Facilitates effective communication and continuous collaboration.
The whole-team approach avoids delays and wait times.
Frequent and continuous deliveries ensure quick feedback that in in turn enable the
team align to the requirements.
Collaboration facilitates combining different perspectives timely in implementation,
defect fixes and accommodating changes.

12
Characteristics of Agility

Progress is constant, sustainable, and predictable emphasizing transparency.

13
Principles:

Highest priority is to satisfy the customer through early and continuous delivery of valuable
software.
It welcomes changing requirements, even late in development.
Deliver working software frequently, from a couple of weeks to a couple of months, with a
preference to the shortest timescale.
Build projects around motivated individuals. Give them the environment and the support they need,
and trust them to get the job done.
Working software is the primary measure of progress.
Simplicity the art of maximizing the amount of work not done is essential.
The most efficient and effective method of conveying information to and within a development team
is face-to-face conversation.

14
how agile actually works.

A Software company named ABC wants to make a new web browser for the
latest release of its operating system. The deadline for the task is 10 months.
The company’s head assigned two teams named Team A and Team B for this
task. In order to motivate the teams, the company head says that the first
team to develop the browser would be given a salary hike and a one week
full sponsored travel plan. With the dreams of their wild travel fantasies, the
two teams set out on the journey of the web browser. The team A decided to
play by the book and decided to choose the Waterfall model for the
development. Team B after a heavy discussion decided to take a leap of faith
and choose Agile as their development model.

15
how agile actually works.

The Development plan of the Team A is as follows:

Requirement analysis and Gathering – 1.5 Months


Design of System – 2 Months
Coding phase – 4 Months
System Integration and Testing – 2 Months
User Acceptance Testing – 5 Weeks

16
how agile actually works.

The Development plan for the Team B is as follows:

Since this was an Agile, the project was broken up into several iterations.
The iterations are all of the same time duration.
At the end of each iteration, a working product with a new feature has to be delivered.
Instead of Spending 1.5 months on requirements gathering, They will decide the core features that are
required in the product and decide which of these features can be developed in the first iteration.
Any remaining features that cannot be delivered in the first iteration will be delivered in the next
subsequent iteration, based in the priority
At the end of the first iterations, the team will deliver a working software with the core basic features.

17
Both the team have put their best efforts to get the product to a complete stage. But
then out of blue due to the rapidly changing environment, the company’s head come
up with an entirely new set of features and want to be implemented as quickly as
possible and wanted to push out a working model in 2 days. Team A was now in a fix,
they were still in their design phase and did not yet started coding and they had no
working model to display. And moreover, it was practically impossible for them to
implement new features since waterfall model there is not reverting back to the old
phase once you proceed to the next stage, that means they would have to start from
the square one again.

18
That would incur them heavy cost and a lot of overtime. Team B was
ahead of Team A in a lot of aspects, all thanks to Agile Development.
They also had the working product with most of the core requirement
since the first increment. And it was a piece of cake for them to add
the new requirements. All they had to do is schedule these
requirements for the next increment and then implement them.

19
Agile is a framework which defines how the software
development needs to be carried on. Agile is not a single
method, it represents the various collection of methods and
practices that follow the value statements provided in the
manifesto. Agile methods and practices do not promise to solve
every problem present in the software industry (No Software
model ever can). But they sure help to establish a culture and
environment where solutions emerge.

20
Agile Vs Traditional SDLC Models

Agile is based on the adaptive software development methods, whereas the


traditional SDLC models like the waterfall model is based on a predictive approach.
Predictive teams in the traditional SDLC models usually work with detailed planning
and have a complete forecast of the exact tasks and features to be delivered in the
next few months or during the product life cycle.

Predictive methods entirely depend on the requirement analysis and planning done in
the beginning of cycle. Any changes to be incorporated go through a strict change
control management and prioritization.

21
Agile uses an adaptive approach where there is no detailed planning and there is
clarity on future tasks only in respect of what features need to be developed. There is
feature driven development and the team adapts to the changing product
requirements dynamically. The product is tested very frequently, through the release
iterations, minimizing the risk of any major failures in future.

Customer Interaction is the backbone of this Agile methodology, and open


communication with minimum documentation are the typical features of Agile
development environment. The agile teams work in close collaboration with each
other and are most often located in the same geographical location.

22
Phases of Agile Model:

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

Requirements gathering
Design the requirements
Construction/ iteration
Testing/ Quality assurance
Deployment
Feedback

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

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

25
Agile Testing Methods:

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

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

27
Scrum

28

You might also like