Sei sulla pagina 1di 33

Table of Contents

LIST OF FIGURES..................................................................................................................3
A.

CLOUD COMPUTING............................................................................................................4

1.

EVOLUTION OF CLOUD.......................................................................................................4

1.1. Evolution of Cloud Computing..........................................................................................4


1.2. Study of Cloud Computing................................................................................................6
1.3. Entering into the Clouds.................................................................................................7
1.4. Web Services...................................................................................................................... 7
1.5. Types of Cloud Delivery Models........................................................................................9
1.6. Software as a Service (SaaS):.........................................................................................10
1.7. Platform as a Service (PaaS):..........................................................................................11
1.8. Infrastructure as a Service (IaaS):.................................................................................11
2.

Deployment Models......................................................................................................... 12

3.

Advantages of Cloud Computing....................................................................................14

4.

Disadvantages of Cloud Computing...............................................................................15

5.

Cloud Computing Security...............................................................................................17

5.1. Protecting the Users........................................................................................................17


5.2. Data Security.................................................................................................................... 18
5.3. Recovery and Investigation............................................................................................18
6.

Future of Cloud computing..............................................................................................18

6.1. Level of Competition in Cloud Computing Industry......................................................19


B.

Software Development Lifecycle....................................................................................20

1.

Software Development Lifecycle (Conventional Waterfall Vs. Agile).........................20

2.

SDLC Models..................................................................................................................... 22

2.1. Waterfall Model................................................................................................................ 22


2.2. Agile Model....................................................................................................................... 25
3.

Comparison: Waterfall vs Agile.......................................................................................30

LIST OF FIGURES
Figure 1 Evolution of cloud computing...........................................................................................
4
Figure 2 Application Service Provision...........................................................................................
5
Figure 3 Grid Computing..............................................................................................................
5
Figure 4 Cloud Computing Context.................................................................................................
6
Figure 5 Web Services Stack..........................................................................................................
7
Figure 6 Exposing the hardware and the OS as a Service....................................................................
8
Figure 7 Exposing the Runtime + SDK as a Service..........................................................................
8
Figure 8 Web App as a Service.......................................................................................................
9
Figure 9 Cloud computing delivery models......................................................................................
9
Figure 10 Delivery models chart.....................................................................................................
10
Figure 11 Cloud App = Software as a Service...................................................................................
10
Figure 12 PaaS is the focus area of developers and architects..............................................................
11
Figure 13 Cloud OS = Infrastructure as a Service..............................................................................
11
Figure 14 Cloud computing types...................................................................................................
12
Figure 15 Public Cloud..................................................................................................................
13
Figure 16 Hybrid Cloud.................................................................................................................
14
Figure 17 Private Cloud.................................................................................................................
14
Figure 18 Current Enterprise Cloud Services....................................................................................
17
Figure 19 SDLC Software Development Lifecycle.........................................................................

21
Figure 20 Waterfall Model - A........................................................................................................
24
Figure 21 Waterfall Model - B........................................................................................................
25
Figure 22 Agile Model...................................................................................................................
28
Figure 23 SCRUM Model..............................................................................................................
29
Figure 24 SCRUM Development Framework...................................................................................
29

A.

CLOUD COMPUTING

1. EVOLUTION OF CLOUD
1.1. Evolution of Cloud Computing
There are multiple factors that led to the evolution of Cloud Computing. One
of the key factors is the way Internet Service Providers (ISP) matured over a
period of time. From the initial days of ofering basic internet connectivity
to offering software as a service, the ISPs have come a long way. ISP 1.0
was all about providing internet access to their customers. ISP 2.0 was the
phase where ISPs ofered hosting capabilities. The next step was colocation, ISP 3.0, through which the ISPs started leasing out the rack space
and bandwidth. By this, companies could host their servers running custom,
Line of Business (LoB) applications that could be accessed over the web by its
employees, trading partners and customers.

Figure 1 Evolution of cloud computing


It all started with Application Service Provision. Application service provision
(ASP) is a deployment option that delivers software as a service. Clients
custom applications can also be loaded onto the environment taking away
the need to have large amounts of money tied up in their own expensive server
hardware. The diagrammatic representation is shown below:

Figure 2 Application Service Provision


Then came grid computing. It is a computer network in which each
computer's resources are shared with every other computer in the system.
Processing power, memory and data storage are all community resources
that authorized users can tap into and leverage for specific tasks. A grid
computing system can be as simple as a collection of similar computers
running on the same operating system or as complex as inter-networked
systems comprised of every computer platform one can think of. The
diagram below displays grid computing.

Figure 3
Grid Computing
After grid computing a new concept called utility computing came into
existence. The principle of utility computing is very simple. One company
pays another company for computing services. The services might include
hardware rental, data storage space, use of specific computer applications
or access to computer processing power. It all depends on what the client
wants and what the utility computing company can ofer. SaaS was
followed after utility computing. The concept of it very similar to that in
cloud computing. Then finally evolved the concept of cloud computing which
is still being explored for its wider applications.

1.2.

Study of Cloud Computing

Gartner defines cloud computing as:


"A style of computing where massively scalable IT related capabilities are
provided 'as a service' using Internet technologies to multiple external
customers."
Forrester defines cloud computing as:
A form of standardized IT-based capability such as Internet-based
services, software, or IT infrastructure offered by a service provider that is
accessible via Internet protocols from any computer, is always available and
scales automatically to adjust to demand, is either pay-per-use or

advertising- based, has Web- or programmatic-based control interfaces, and


enables full customer self-service.

Figure 4 Cloud Computing Context


In the diagram above we can see how an enterprise is using services
provided by the cloud through the internet network serving as a bridge for
connectivity between the two.

1.3.

Entering into the Clouds

Traditionally, developers and architects used a picture of cloud to illustrate a


remote resource connected via the web. Eventually cloud became the
logical connector between the local and remote resources on the internet.
According to the developers, their Web Services are already hosted on
the Cloud and that can be potentially called as Cloud Services. While there
is some truth in this argument, it is a not very accurate way of describing
Cloud Computing.
Let us look at Cloud Computing through the eyes of a developer.

1.4.

Web Services

Web Services accept one or more input parameters and invoke processing
logic which will result in an output. Web Services are a part of web
applications that run on a typical stack that has hardware, a Server OS,
application development platform.

Figure 5 Web Services Stack

Cloud OS
Imagine h/w and the OS are exposed as a Web Service over the public internet.
Based on the principles of Web Services, we could send a request to this service
along with a few parameters. OS is expected to act as an interface to the CPU
and the devices; we can invoke a service that accepts a job that will be
processed by the OS and the underlying hardware. Technically, this Web Service
has just turned the OS + H/W combination into a Service. We can start
consuming this service by submitting CPU intensive tasks to this new breed of
Web Service.

Figure 6 Exposing the hardware and the OS as a Service


Cloud FX
Developers always develop and deploy their applications on the application
development platforms. Some examples of development platforms are .NET
and Java. Imagine a scenario where the application development platform is

offered as a service. Through this, we will be able to develop and test


applications on a low end, notebook PC but will able to submit code to run
on the most powerful hardware infrastructure.

Figure 7 Exposing the Runtime + SDK as a Service

Cloud Application
Today, most of the desktop applications like word processors and spreadsheet
packages are available over the web. These applications just need a browser
and ofer high fidelity with the desktop software. This fundamentally changes
the way software is deployed and licensed. We need not double click
setup.exe to install an Office suite on our desktop. Just subscribe to the
applications and the features that we need and only pay for what we use. This
is almost equivalent to exposing the application as a service. These
applications may be called as Cloud Applications.

Figure 8 Web App as a Service

1.5.

Types of Cloud Delivery Models

A Cloud is a set of IT infrastructure optimization techniques rolled into one


and offered as a shared service to its customers. Todays Cloud delivery models
can be broadly classified into three categories:

Figure 9 Cloud computing delivery models

Following is a chart explaining the different levels in cloud computing:

Figure 10 Delivery models chart

1.6.

Software as a Service (SaaS):

Figure 11 Cloud App = Software as a Service


The consumer uses an application, but does not control the operating system,
hardware or network infrastructure on which it's running. The Software as a
Service Cloud service providers ofer specific application services delivered over
the Internet on some form of on-demand payment system.

1.7.

Platform as a Service (PaaS):

Figure 12 PaaS is the focus area of developers and architects


The consumer uses a hosting environment for their applications. The
consumer controls the applications that run in the environment (and
possibly has some control over the hosting environment), but does not

control the operating system, hardware or network infrastructure on which


they are running. The platform is an application framework.

1.8.

Infrastructure as a Service (IaaS):

Figure 13 Cloud OS = Infrastructure as a Service


These Cloud service providers ofer computational resources such as servers,
network, and storage from a shared facility managed by the provider to
Cloud users on an on-demand basis. IaaS providers allow users dynamically
grow and shrink their resource allocations to match their demands.
However, the responsibility of utilizing this elasticity effectively rests with the
Cloud user.

2. Deployment Models
The NIST definition defines three deployment models:

Figure 14 Cloud computing types


a) Public cloud
Public cloud or external cloud describes cloud computing in the traditional
mainstream sense, whereby resources are dynamically provisioned on a finegrained, self-service basis over the Internet, via web applications/web services,
from an of-site third-party provider who shares resources and bills on a finegrained utility computing basis.

Figure 15 Public Cloud

b) Hybrid cloud
A hybrid cloud environment consisting of multiple internal and/or external
providers will be typical for most enterprises".
It is a combination of a public and private cloud that interoperates. It is a cloud
computing environment in which an organization provides and manages some
resources in-house and has others provided externally. For example, an
organization might use a public cloud service, such as Amazon's Elastic Compute
Cloud (EC2) for general computing but store customer data within its own data
center.
Although cloud computing is often said to be the future of the industry, the
hybrid model is more prevalent for a number of reasons. Large enterprises often
already have substantial investments in the infrastructure required to provide
resources in-house. Furthermore, many organizations would prefer to keep
sensitive data under their own control to ensure security.

Figure 16 Hybrid Cloud

c) Private cloud

Private cloud and internal cloud are neologisms that some vendors have recently
used to describe oferings that emulate cloud computing on private networks.
These (typically virtualisation automation) products claim to "deliver some
benefits of cloud computing without the pitfalls", capitalising on data security,
corporate governance, and reliability concerns. They have been criticized on the
basis that users "still have to buy, build, and manage them" and as such do not
benefit from lower up-front capital costs and less hands-on management,
essentially " the economic model that makes cloud computing such an intriguing
concept".

Figure 17 Private Cloud

3. Advantages of Cloud Computing

Everything from generic word processing software to customized computer


programs designed for a specific company could work on a cloud
computing system.
Cost is claimed to be greatly reduced and capital expenditure is converted
to operational expenditure. This ostensibly lowers barriers to entry, as
infrastructure is typically provided by a third-party and does not need to
be purchased for one-time or infrequent intensive computing tasks. Pricing
on a utility computing basis is fine-grained with usage-based options and
fewer IT skills are required for implementation (in-house). Some would
argue that given the low cost of computing resources, that the IT burden
merely shifts the cost from in-house to outsourced providers. Furthermore,
any cost reduction benefit must be weighed against a corresponding loss
of control, access and security risks.
Device and location independence enable users to access systems using a
web browser regardless of their location or what device they are using
(e.g., PC, mobile). As infrastructure is of-site (typically provided by a thirdparty) and accessed via the Internet, users can connect from anywhere.

Multi-tenancy enables sharing of resources and costs across a large pool of


users thus allowing for:
Centralization of infrastructure in locations with lower costs (such as real
estate, electricity, etc.)
Peak-load capacity increases (users need not engineer for highest possible
load-levels)
Utilization and efficiency improvements for systems that are often only 10
20% utilized.
Reliability improves through the use of multiple redundant sites, which
makes cloud computing suitable for business continuity and disaster
recovery. Nonetheless, many major cloud computing services have
sufered outages, and IT and business managers can at times do little
when they are afected.
Scalability via dynamic ("on-demand") provisioning of resources on a finegrained, self-service basis near real-time, without users having to engineer
for peak loads. Performance is monitored, and consistent and looselycoupled architectures are constructed using web services as the system
interface.
Security typically improves due to centralization of data, increased
security-focused resources, etc., but concerns can persist about loss of
control over certain sensitive data.
Sustainability comes about through improved resource utilization, more
efficient systems, and carbon neutrality.
Clients would be able to access their applications and data from anywhere
at any time. They could access the cloud computing system using any
computer linked to the Internet. Data wouldn't be confined to a hard drive
on one user's computer or even a corporation's internal network.
Servers and digital storage devices take up space. Some companies rent
physical space to store servers and databases because they don't have it
available on site. Cloud computing gives these companies the option of
storing data on someone else's hardware, removing the need for physical
space on the front end.

4. Disadvantages of Cloud Computing

Because cloud computing does not allow users to physically possess the
storage of their data (the exception being the possibility that data can be
backed up to a user-owned storage device, such as a USB flash drive or hard
disk) it does leave responsibility of data storage and control in the hands of

the provider.
Cloud computing has been criticized for limiting the freedom of users and
making them dependent on the cloud computing provider, and some
critics have alleged that it is only possible to use applications or services
that the provider is willing to ofer. Thus, The London Times compares
cloud computing to centralized systems of the 1950s and 60s, by which
users connected through "dumb" terminals to mainframe computers.
Typically, users had no freedom to install new applications and needed
approval from administrators to achieve certain tasks. Overall, it limited
both freedom and creativity. The Times argues that cloud computing is a
regression to that time.
One of the important issues in cloud computing that needs to be
addressed is that once you upload your data to cloud computing service
provider, you lose control over your data and if computing service provider
is experiencing problems, you may not be able to access your data at all.
Also, in most of the cases, at least this is true for free services, there is no
one on the provider's side to assist you with a problem (if you are having
one).
Further to Stallman's observation, It would be a challenge for
hosting/deploying intranet and access restricted (for Govt., defense,
institutional, etc) sites and their maintenance. Commercial sites using
tools such as web analytics may not be able to capture right data for their
business planning etc.
Richard Stallman, founder of the Free Software Foundation, believes that
cloud computing endangers liberties because users sacrifice their privacy
and personal data to a third party. He stated that cloud computing is
"simply a trap aimed at forcing more people to buy into locked, proprietary
systems that would cost them more and more over time."

Following is a list of the major global telecom operators and their work in
cloud computing as per Forresters report.

Figure 18 Current Enterprise Cloud Services

5. Cloud Computing Security

Security is one of the biggest concerns of businesses in any form. Whether a


business is a small brick-and-mortar or a multi-million online ventures, security
should be implemented. Exposing the company to diferent security flaws is
always inviting to diferent elements with malicious intent. A single security
strike could mean millions of dollars for businesses and might close the business
down.

Proper implementation of security measures is highly recommended for cloud


computing. The mere fact that the application is launched through internet
makes it vulnerable to any time of attack. An application available in LAN (Local
Area Network) only could even be infiltrated from the outside so placing an

application over the internet is always a security risk. This is the unique situation
of cloud computing. Implementation of cloud computing could require millions of
dollars in infrastructure and applications development but it still places itself at
risk for diferent types of attacks.

5.1.

Protecting the Users

Above everything else, cloud computing or any type of online application format
should consider protecting its users. Developers should make sure that data
related to the user should not be mishandled and could be extracted just by one.
There are two ways to ensure cloud computing security: restrictive user access
and certifications.

Restrictive access could come from simple username/password challenge to


complicated CAPTCHA log in forms. But applications in cloud computing should
not only base itself on these challenges. IP specific applications and user timeouts are only some of the security measures that should be implemented.

The challenge in restrictive user access is to limit the access privilege of the
user. Each user will have to be assigned manually with security clearance to
ensure limitation of access to diferent files.
Certifications are also important for user certification. Developers have to open
their application to security specialists or companies that provide certifications
for security. This is one way of assuring users that the application has been fully
tested against diferent types of attacks. This is often the dilemma for cloud
computing as external security checks might open the company secrets on cloud
computing. But this has to be sacrificed to ensure the security of their users.

5.2.

Data Security

Aside from user protection against diferent types of attacks, the data itself

should be protected. In this aspect, the hardware and software linked to cloud
computing should be scrutinized. Again, a certification is highly desired in this
part of cloud computing.

The hardware component for cloud computing on the other hand requires a
diferent type of security consideration. The location of data center should not
only be selected because of its proximity to controllers and intended users but
also on its security (and even secrecy) from external problems. The data center
should be protected against diferent types of weather conditions, fire and even
physical attacks that might destroy the center physically.
With regards to the hardware component in relation to the application, certain
manual components have to be available for increased security. Among them is
manual shutdown to prevent further access of the information. Although data
could be controlled with another application that data could be infiltrated unless
the application is shutdown immediately.

5.3.

Recovery and Investigation

Cloud computing security should not only focus itself on prevention. Ample
resources should also be focused on recovery if the unfortunate event really
strikes. Even before disaster happens, certain plans have to be in place to ensure
that everyone will be working in unison towards recovery. The plans do not have
to be focused on software attacks alone certain external disasters such as
weather conditions should have separate recovery plans.
When everything has been recovered, developers and the company handling the
application should have the means to investigate the cause of the problem.
Through investigation, certain conditions that lead to the event could be realized
and insecurities could be discovered. Even legal actions could be done if security
has been breached on purpose.

Security is one of the most difficult task to implement in cloud computing. It


requires constant vigilance against diferent forms of attacks not only in the
application side but also in the hardware components. Attacks with catastrophic
efects only needs one security flaw so its always a challenge for everyone
involved to make things secured.

6. Future of Cloud computing

Cloud computing may be a relatively new concept for some businesses and
consumers. But even though some businesses are only starting to adopt and
realizing the advantages of cloud computing, industry giants are already looking
forward to the next big step of cloud computing.
For now, cloud computing could be easily identified with grid computing wherein
the cloud become the application for business purposes. Although grid
computing is more focused on the server capabilities of the application, their
similarities are based on the focus on providing online and on-time services to
the enterprise.
But cloud computing is so much more than simplified cloud processing. The
business aim of getting things done no matter where they are without the
necessary of a local or desktop software is realized. The ease of data processing
with real time interaction and company-wide availability of data in an instant
could be done through proper implementation of cloud computing. Best of all,
these processes are aimed to be available with very little to no downtime.

The future of cloud computing should be highly considered by businesses in any


industry. The possibility of full adaptation of cloud computing by almost any
industry is slowly starting to happen. If a business will not consider their future in
cloud computing, the challenges as well as the advantages of cloud computing
may not be addressed and fully harnessed.

6.1.

Level of Competition in Cloud

Computing Industry
Competition is always good in any industry. Through competition, the best
services as well as the most competitive prices will come out. The cloud
computing industry is no exception to this rule. Companies such as Amazon,
Google, Sun Microsystems and SalesForce.com are only some of the highly
recognized companies in the cloud computing industry. These companies ofer
advantages that will fit the need of any businesses.

But the level of competition, as some industry experts predict, could soon be
gone. The previously mentioned companies are aggressively promoting their
services so that they could become the leader in the industry. These companies
are now spending millions of dollars in hardware upgrades, human resources and
even in advertising. Unfortunately, not every company will come out strong.
Some industry experts predict that one of the companies will come out of top
and might even become the synonym for cloud computing.
On the other hand, smaller companies who provide personalized services for
cloud computing are slowly coming out in the open. Their personalized services
would be limited to few clients which will give them the ability optimize the
services to their clients.

B.

Software Development Lifecycle

1. Software Development Lifecycle (Conventional Waterfall Vs.


Agile)
SDLC, Software Development Life Cycle is a process used by software
industry to design,
develop and test high quality software. The SDLC aims to produce high
quality software that meets or exceeds customer expectations, reaches
completion within times and cost estimates.
The following figure is a graphical representation of the various stages of a
typical SDLC.

Figure 19 SDLC Software Development Lifecycle

A typical Software Development life cycle consists of the following stages:


Stage 1
Planning and Requirement Analysis: Requirement analysis is the most
important and fundamental stage in SDLC. It is performed by the senior
members of the team with inputs from the customer, the sales
department, market surveys and domain experts in the industry. This
information is then used to plan the basic project approach and to conduct
product feasibility study in the economical, operational, and technical
areas.
Planning for the quality assurance requirements and identification of the
risks associated with the project is also done in the planning stage. The
outcome of the technical feasibility study is to define the various technical
approaches that can be followed to implement the project successfully
with minimum risks.
Stage 2
Defining Requirements: Once the requirement analysis is done the next
step is to clearly define and document the product requirements and get
them approved from the customer or the market analysts. This is done

through SRS Software Requirement Specification document which


consists of all the product requirements to be designed and developed
during the project life cycle.
Stage 3
Designing the product architecture: SRS is the reference for product
architects to come out with the best architecture for the product to be
developed. Based on the requirements specified in SRS, usually more than
one design approach for the product architecture is proposed and
documented in a DDS - Design Document Specification. This DDS is
reviewed by all the important stakeholders and based on various
parameters as risk Assessment, product robustness, design modularity,
budget and time constraints, the best design approach is selected for the
product.
Stage 4
Building or Developing the Product: In this stage of SDLC the actual
development starts and the product is built. The programming code is
generated as per DDS during this stage. If the design is performed in a
detailed and organized manner, code generation can be accomplished
without much hassle.
Developers have to follow the coding guidelines defined by their
organization and programming tools like compilers, interpreters,
debuggers etc. are used to generate the code. Diferent high level
programming languages such as C, C++, Pascal, Java, and PHP are used
for coding. The programming language is chosen with respect to the type
of software being developed.
Stage 5
Testing the Product: This stage is usually a subset of all the stages as in
the modern SDLC models, the testing activities are mostly involved in all
the stages of SDLC. However this stage refers to the testing where
products defects are reported, tracked, fixed and retested, until the
product reaches the quality standards defined in the SRS.
Stage 6
Deployment in the Market and Maintenance: Once the product is
tested and ready to be deployed it is released formally in the appropriate
market. Sometime product deployment happens in stages as per the
organizations business strategy. The product may first be released in a
limited segment and tested in the real business environment (UAT- User
acceptance testing).
Then based on the feedback, the product may be released as it is or with
suggested enhancements in the targeting market segment. After the

product is released in the market, its maintenance is done for the existing
customer base.

2. SDLC Models
There are various software development life cycle models defined and
designed which are followed during software development process. These
models are also referred as "Software Development Process Models". Each
process model follows a Series of steps unique to its type, in order to
ensure success in process of software development. Following are the
most important and popular SDLC models followed in the industry:

Waterfall Model
Iterative Model
Spiral Model
V-Model
Big Bang Model

2.1.

Waterfall Model

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 Waterfall model, typically, the outcome of one phase acts as
the input for the next phase sequentially.
Following is a diagrammatic representation of diferent phases of waterfall
model.

Requirem
ent
Analysis

System
Design

Implemen
tation

Testing

Deployme
nt

Maintena
nce

Figure 20 Waterfall Model - A

Figure 21 Waterfall Model - B

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
requirement specification doc.

System Design: The requirement specifications from first phase are


studied in this phase and system design is prepared. System Design helps
in specifying hardware and system requirements and also helps in
defining overall system architecture.
Implementation: With inputs from 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.
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.
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 of, so the name "Waterfall Model".
Waterfall Model Pros & Cons
The advantage of waterfall development is that it allows for
departmentalization and control. A schedule can be set with deadlines for
each stage of development and a product can proceed through the
development process model phases one by one. Development moves from
concept, through design, implementation, testing, installation,
troubleshooting, and ends up at operation and maintenance. Each phase
of development proceeds in strict order.
The disadvantage of waterfall development is that it does not allow for
much reflection or revision. Once an application is in the testing stage, it
is very difficult to go back and change something that was not welldocumented or thought upon in the concept stage.
Pros
Simple and easy to understand and
use

Cons
No working software is produced
until late during the life cycle.

Easy to manage due to the rigidity


of the model each phase has

High amounts of risk and


uncertainty.

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

Not a good model for complex and


object-oriented projects.
Poor model for long and on-going
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.
No working software is produced
until late in the life cycle.
Adjusting scope during the life cycle
can end a project
Integration is done as a "big-bang
at the very end, which doesn't allow
identifying any technological or
business bottleneck or challenges
early.

2.2.

Agile Model

Agile SDLC model is a combination of iterative and incremental process


models with focus on process adaptability and customer satisfaction by
rapid delivery of working software product.
Agile Methods break the product into small incremental builds. These
builds are provided in iterations. Each iteration typically lasts from about
one to three weeks. Every iteration involves cross functional teams
working simultaneously on various areas like planning, requirements
analysis, design, coding, unit testing, and acceptance testing
The scrum framework is used for developing and sustaining complex
inspection systems. Scrum framework allows projects to progress via a
series of iterations called agile sprints. Duration of each sprint is decided
basis the user requirements it covers and development activities involved.
Typically, a sprint encompasses planning meetings, development
activities, daily scrum meetings and a final sprint review. The Project

Manager acts as the ultimate product owner and sprint enablers such as
priority requirement traceability matrix, sprint log and sprint master
emulate the role of a product backlog and sprint backlog respectively.
Additionally a Scrum Master is appointed to ensure that the scrum
framework is well understood and scrum activities and meetings are
adequately facilitated.

Agile Methodology

Figure 22 Agile Model

SCRUM Model

Figure 23 SCRUM Model

Scrum Development Framework

Figure 24 SCRUM Development Framework

Phases in Agile Model:

Project Initiation: applies to understanding the broad


requirements of the customer (internal / External) and carrying out
activities to ascertain the feasibility of the project.
Planning: applies to planning and resource allocation activities
which help guide the team through the execution and closure
phases of the project
Requirement: applies to understanding and finalizing business/
functional requirements and converting them into
functional/technical specifications
Design: applies to translation of system requirements into a logical
and physical representation of the system to be implemented
Development: applies to development and configuration activities
required to be executed during the SDLC. The development takes
place in the form of iterative agile sprints. Each sprint consists of the
following activities:
o Planning Meeting
o Development Activities
o Daily Scrum Meetings (Duration 15-20 minutes)
o Weekly Sprint Review
o Final Sprint Review

Testing & QA: applies to activities that ensure that the entire
system works as intended and complies with applicable regulations
and internal demands of the processes in scope.
Implementation: applies to installation and subsequent testing
activities to be performed, when delivering the completed system to
the customer.
Maintenance: applies to the ongoing support and change
management activities that the client provides to the customer after
the system has been successfully implemented.

Agile Model Pros and Cons


Pros

Cons

Is a very realistic approach to


software development

Not suitable for handling complex


dependencies

Promotes teamwork and cross


training

More risk of sustainability,


maintainability and extensibility

Functionality can be developed


rapidly and demonstrated

An overall plan, an agile leader and


agile PM practice is a must without
which it will not work

Resource requirements are


minimum

Strict delivery management


dictates the scope, functionality to
be delivered, and adjustments to
meet the deadlines.

Suitable for fixed or changing


requirements

Depends heavily on customer


interaction, so if customer is not
clear, team can be driven in the
wrong direction

Delivers early partial working


solutions

There is very high individual


dependency, since there is
minimum documentation generated

Good model for environments that


change steadily

Transfer of technology to new team


members may be quite challenging
due to lack of documentation

Minimal rules, documentation easily


employed
Enables concurrent development
and delivery within an overall
planned context
Little or no planning required

Easy to manage
Gives flexibility to developers

3. Comparison: Waterfall vs Agile


Parameters
Quality
Quality Control

Continual
Improvement
Risk
Customer Feedback
Scoping
Efort Estimation

Plan Review

Waterfall
Quality focus changes from
Analysis > Design> Code
> Test
Quality Control Detection &
fixing during system and
regression testing at the
last phase of project
Lessons learned from
previous release
implemented in next
release
No Risk Identification.
Firefighting during testing
phase
Customer Feedback at the
end of the project
Product owner decides
project scope
Project Manager provides
estimates and get approval
from Product Owner for
entire project
Team need to stick to base
lined project plan

Agile
Quality focus on all
aspects of SDLC at any
given time
Early detection & fixing
in each sprint followed
by stabilization
Lessons learned from
previous sprint
implemented in next
sprint
Early identification
&mitigation in every
sprint
At the end of every
sprint
Team decides the sprint
scope
Scrum Master facilitates
and Team does the
estimation. Story points
can be reviewed and
refined during sprint
planning meeting
Team can review during
mid-sprint planning

Goals

Goals are defined for each


phase by defining entry
and exit criteria. Delivering
artifacts.

Completing the
feature/storyin all
aspects within a sprint.
Delivering the shippable
product
Phase
Analysis and design will be Team gets divided into
completed for all stories
mini teams and each
before proceeding to
team focus on story
coding and testing
completion in all aspects
Resource Utilization Role specific. Resources
Everybody is ready to
restricted to the tasks that work any task
suits/matches their role
(analysis/design/dev/
only
test) so as to complete
the story
Ownership
Ownership changes from
Entire team is
role to role by phase to
responsible for story
phase. Roles play key role. completion in all
PM responsible for overall
aspects analysis,
delivery
design, development,
testing and demo
Task Assignment
Project Manager do the
Team members are
feature/task assignment
empowered to own the
for entire project
feature/tasks for every
sprint.
Status Report
Status report in prescribed Update version one on
template. More focus on
daily basis reflecting
Percentage done.
actual hours.
Testing Resources
Only Testers will identify,
Anyone in the team
prepare, and execute Test
identify, prepare and
scripts
execute Test scripts
New Feature Testing Test script preparation and Test script preparation
execution starts after
and execution starts in
analysis, design and
parallel with analysis
development phase
and design tasks and
completes within same
sprint
Regression Testing
After the completion of first Full coverage within the
cycle system testing
sprint.
Stabilization Phase
NA
Starts after the
completion of
development sprints. No
feature development.

Potrebbero piacerti anche