Вы находитесь на странице: 1из 12

Data & Process Modelling (CPT305)

Assignment 1

Table of Contents

 

Abstract

2

1.0

Introduction

3

1.1 What is Agile?

3

1.2 What is NOT Agile?

3

2.0

Literature Review

4

3.0

Agile Methods

5

3.1 Extreme Programming

6

3.2 Scrum

7

3.3 Adaptive Software Development

8

3.4 Crystal

9

4.0

Conclusion

10

Bibliography

11

1

Data & Process Modelling (CPT305)

Assignment 1

Abstract

Today, agile methodologies are taking over the software development process and are replacing the traditional methods. This report was developed to understand the usage and benefits of agile methods in software development. Report contains a study on 4 agile methods and the study is focused only on its benefits and usage. Information was collected from the web alone. Works by different authors were analyzed in coming up with the report.

2

Data & Process Modelling (CPT305)

Assignment 1

1.0 Introduction

As explained by (Waters, 2007), the traditional methods to software development projects were facing failure repeatedly. Due to this, in 2001 a group of people discussed the matter and came up with the agile manifesto. Agile manifesto describes set of principles for agile project management.

This report will focus on different types of agile methodologies, why are they useful and to which type of projects are each applied to. Before going any further, it will be a good idea to first be aware of what is and what is not agile.

1.1 What is Agile?

Agile is a product development approach where by development is carried out in increments. This means products are built as increments over an iterative process in a fixed amount of time. This helps to better understand the product requirements and adapt to changes that come along in the product development phase (Reed, 2013).

Agile at its early days were only focused on software development and delivery. However, as of today, it refers to development and delivery of any product.

1.2 What is NOT Agile?

Knowing the common properties of agile methods can help understand what agile is not. As per (Waters, 2007), agile methods should:

Have active user involvement

Empower development teams to make decisions

Capture requirements throughout the product development.

Have incremental releases of the product

Complete the feature till requirements are matched

Test the product throughout the project lifecycle

Should have great cooperation among all stakeholders

If an organization follows a product development model that doesn’t fit well with the above mentioned, then it can be said that the methodology that is being followed is not agile.

3

Data & Process Modelling (CPT305)

Assignment 1

2.0 Literature Review

Agile software development methodologies are picking up pace and are widely adopted throughout different parts of the world. This report looks into some of these agile methods that are being used today, especially in software development field. Purpose of this study is to know the benefits and application of these agile methods.

This report does not look deep into each agile method and does not discuss the flaws related to each. Instead it is focused towards technical people and assumes that they have the knowledge

of agile methods discussed.

A Comprehensive study was carried out in order to gain knowledge about the focused agile

methods discussed in this report. Works of different authors on agile development, Extreme

Programming, Scrum, Crystal and Adaptive Software Development has been cited and included into this report.

Since there were disagreements with the authors, additional studies were carried out in order

to compare and contrast the authors views based on facts. Although there were also points

where all the authors seem to agree upon.

Firstly no author has mentioned about agile methodologies being able to work as hybrids. Especially in the case of Extreme Programming and Scrum, both of the authors, (Coffin & Lane, 2006) and (Jeffries, 2011) has not mentioned that both being able to work as a hybrid. This argument is back by the 1 st Annual State of Agile Survey which was conducted in 2006 which showed that most used agile method (77%) was a hybrid of Extreme Programming and Scrum. Moreover, as (Coffin & Lane, 2006) has written articles on both Scrum and Extreme Programming, they have mentioned that the latter was the most popular. However, as of today from the 7 th , 8 th and 9 th Annual State of Agile Survey it was found that Scrum methodology has been dominating for a long period of time. Hence, aforementioned argument on Extreme Programming being the most popular can be outdated information.

Other than the above-mentioned all the authors have agreed that the key principles behind all agile methods are same. (Coffin & Lane, 2006), have written a very comprehensive study on seven agile methods which even today is mostly correct. Also, there is agreement between the mentioned authors and (Boehem, 2011) about Crystal method being the only one focused of project criticality.

4

Data & Process Modelling (CPT305)

Assignment 1

3.0 Agile Methods

This section will focus of types of agile methodologies and where they are applied to and advantages and disadvantages of using each method. As there are many agile methodologies, this report will focus on 4 methodologies. Namely, Extreme Programming, Scrum, Adaptive Software Development and Crystal methods.

Below is a list of agile methods along with the aforementioned.

Extreme Programming (XP)

Scrum

Adaptive Software Development (ASD)

Dynamic System Development Method (DSDM)

Feature Driven Development (FDD)

Lean Software Development (LSD)

Agile Unified Process (AUP)

Crystal

(FDD)  Lean Software Development (LSD)  Agile Unified Process (AUP)  Crystal Figure 1: Agile

Figure 1: Agile Methodologies

5

Data & Process Modelling (CPT305)

Assignment 1

3.1 Extreme Programming

Extreme Programming is one of the more well-known among other agile processes. It is a software development method based on simplicity, communication, feedback and courage. The development team works by following simple practices with enough feedback to know where they are going and adapt to changes that come along the way (Jeffries, 2011).

From the name itself it can be known that it is applied to software development projects. To be specific, Extreme Programming is used:

When development involves including prototypes and where requirements change rapidly.

In research projects where result is not the software product itself but the knowledge gained through the process.

When the software projects are easily manageable through informal methods (Select Business Solutions, n.d.).

There are several ways Extreme Programming benefits in the aforementioned cases. Following are reasons why extreme programming is useful as described by (Nayab & Richter, 2010).

This approach helps develop the software faster with few defects. Regular testing helps to achieve robustness.

Collection of feedback throughout the development phase helps to better understand the requirements and adapt accordingly.

As changes are accepted from the beginning of development till the end, the cost of changes are reduced by using this method.

There is lesser risk in programming as it does not depend on one lead programmer, instead it is divided among many and the team works in collaboration.

As work is carried out in small increments and at a level that employees can handle, helps to keep employees satisfied and motivated.

6

Data & Process Modelling (CPT305)

Assignment 1

3.2 Scrum

Scrum is another popular agile development methodology where a project team of 4 to 9 members work together with the primary goal of deploying software increments over iterations known as sprints which is between 2 to 4 weeks. It focuses on providing the highest business value possible by meeting customer requirement throughout the software development life cycle (Coffin & Lane, 2006).

Survey held by (VersionOne Inc, 2014), showed that Scrum methodology is the most adapted agile technology in Europe and America. This might be due to the successful projects that were completed with this method over years that help it gain more popularity. Moreover, being able to implement Scrum methodology along with Extreme Programming as a hybrid agile method contributes to this argument.

While Extreme Programming is applicable to small projects, Scrum on the other hand is used when the software development projects are large and complex. As mentioned by (Thompson, n.d.), scrum is applicable when:

Requirements for the software in question are not fully understood.

There is lot of change in the development phase.

Estimates for the project are not reliable.

Development requires constant invention.

According to (Stefanini, 2014), Scrum is useful because:

It helps to keep the team devoted to work at hand by empowering them to take decision and be involved only in the work related to the project at hand.

It helps to better understand the customer needs. This is achieved by collecting feedback over the sprints in the project.

Just like Extreme Programming, it helps to build robust software through incremental releases. Which helps to complete the features successfully before moving on to next.

It helps to better understand and adjust the scope of the project and change priorities accordingly. This in turn helps reduce the risk of failure and save on cost.

Helps to provide the best quality final product to its final customer. Also within the time limit whenever possible.

7

Data & Process Modelling (CPT305)

Assignment 1

3.3 Adaptive Software Development

Adaptive Software Development evolved from on the Rapid Application Development (RAD). Unlike its evolution from RAD which have an end date for projects, the development process in Adaptive Software Development is never ending. Stable and new releases of the software are provided over a very long period of time or until the software is obsolete (McGee & Fritsky,

2015).

From the definition above it is well known when to use Adaptive Software Development. A software that is going to have to last for a very long time can use this method. Good example for application of this methodology can be Operating Systems which last for a very long time. Continuous updates are released. Some of the Operating Systems last longer than others. Linux releases which occur every 6 months, can be updated from one to other without having to dump away the previous release. Another good example would be web browsers. Stable versions are released to browsers while adapting to continuous changes that occur in web technologies.

By understanding the Adaptive Software Development, its benefits are easily understood.

Continuous feedback from customers can help improve the product as technologies change.

Change in technologies will bring about easier ways of completing a task which can be integrated to the product in order to attract more customers. Example introduction of HTML5 and quick updates to Google Chrome has been attracting customers toward the browser.

Although there will always be a maintenance cost, bugs can be eliminated with the help of customers and development team. This leads to high performance products that adheres to latest technologies.

At start the product might not be very user friendly, but as development and improvement progresses, it is bound to become more user-friendly.

Workload is minimized after the first release. This is because after the first release improvements are made release after release at a manageable levels.

8

Data & Process Modelling (CPT305)

Assignment 1

3.4 Crystal

Crystal is not formally a methodology itself but a family of methodologies which emphasizes on the changing environment and the specific features of the project. Crystal methodology founder Alistair Cockburn says that there can’t be a methodology that is perfect for all types and sizes of projects. Projects tend to grow and even sometimes shrink in size. Which in turn might need additional or fewer resources. Alistair developed the methodology such that it can change and adapt according to the size and criticality of the project. The methods are assigned colors to identify the projects criticality and to follow the rules related to the particular level. Colors are Crystal clear which is most agile, followed by Crystal yellow, orange, and red (Boehem, 2011).

Crystal methodology is used when the size of the project is known. Number of people involved, the duration and the criticality of the project helps to choose the crystal method to be applied. Crystal method alone identifies and emphasizes of criticality of the project among all other agile methods. It can be said that crystal methods can be applied to all kinds of projects since there is a set of rule for each crystal method which is different to projects according to their criticality.

However, from the 9 th annual state of agile survey which was conducted in 2014 showed that this methodology is not among the well-known agile methods (VersionOne Inc, 2014).

As per (McDonald, 2007) and (Coffin & Lane, 2006), following are the benefits of using crystal methods in software development.

Helps to keep employees motivated as it focuses on people.

The focus on improving the communication helps to better understand the state of the current project and requirements. This helps to act accordingly.

This method is flexible, if the business can afford change in projects they can utilize the resources in most effective way as the projects criticality increases or decreases.

Can be applied many projects and along with other methods like scrum.

As all other methods, the product is tested rigorously in order to deliver the best final outcome.

9

Data & Process Modelling (CPT305)

Assignment 1

4.0 Conclusion

Agile development provides the advantage of understanding customer requirements better by providing frequent incremental product deployments. This is not the case with traditional methods of development where by the clients have to wait for the product to be fully completed which might not even satisfy their requirement level. Although this document only focused on benefits of using different agile methods, as these are also methods developed by humans they do have disadvantages as well. However, these flaws can be overcome by careful planning and hard work.

The method chosen will depend on lot of factors such as the business itself, project duration, size etc. Due to careful studying and development, the agile methods have taken a step ahead in the ever growing list of software development methodologies. Today, some of the agile methods are even applicable to projects other than software development. It may be safe to say that any agile method that is implemented well is bound to provide the business with better project manageability, team productivity, project visibility, along with better customer satisfaction.

10

Data & Process Modelling (CPT305)

Assignment 1

Bibliography

Boehem, B. (2011). SEMaterials. Retrieved from CSC:

agile.csc.ncsu.edu/SEMaterials/AgileMethods.pdf

Coffin, R., & Lane, D. (2006, October 11). A Practical Guide to Seven Agile Methodologies, Part 1 :

Page 3. Retrieved from DevX: http://www.devx.com/architect/Article/32761/0/page/3

Jeffries, R. E. (2011, March 16). What is Extreme Programming? Retrieved from Ron Jeffries:

http://ronjeffries.com/xprog/what-is-extreme-programming/

McDonald, K. J. (2007). Agile Method Brief - Crystal. Retrieved from Project Connections:

http://www.projectconnections.com/templates/detail/agile-techniques-crystal.html

McGee, M., & Fritsky, L. (2015, March 16). What Is Adaptive Software Development? Retrieved from Wise Geek: http://www.wisegeek.com/what-is-adaptive-software-development.htm

Nayab, N., & Richter, L. (2010, September 20). Advantages of Extreme Programming. Retrieved from Bright Hub Project Management: http://www.brighthubpm.com/methods-

strategies/87839-advantages-of-extreme-programming/

Reed, C. (2013, June 3). AGILE MISCONCEPTIONS: WHAT AGILE IS NOT. Retrieved from Business Analyst Times: http://www.batimes.com/articles/agile-misconceptions-what-agile- is-not.html

Select Business Solutions. (n.d.). What is Extreme Programming? (XP). Retrieved from Select Business Solutions: http://www.selectbs.com/process-maturity/what-is-extreme-programming

Stefanini. (2014, February 6). The advantages of SCRUM. Retrieved from Stefanini:

https://stefanini.com/en/2014/02/advantages_scrum/

Thompson, K. (n.d.). When to Use Scrum? Retrieved from cPrime:

https://www.cprime.com/2012/09/when-to-use-scrum/

VersionOne Inc. (2014, October). 9th Annual State of Agile Survey.

Waters, K. (2007, February 10). What Is Agile? (10 Key Principles of Agile). Retrieved from All About Agile: http://www.allaboutagile.com/what-is-agile-10-key-principles/

11