CSC/ECE 517 Spring 2014/ch1 1w1m bm: Difference between revisions

From Expertiza_Wiki
Jump to navigation Jump to search
Line 45: Line 45:


== Examples ==
== Examples ==
=== An Empirical Study in Agile Development ==
The paper [http://www.producao.ufrgs.br/arquivos/disciplinas/507_artigo_3_empirical_systematic_review.pdf Empirical studies of agile software development: A systematic review], published in 2008, sought to determine how exactly agile software methodologies were being used in the real world. As agile was not a widely known concept until 2001, they analyzed published findings concerning agile software development between 2001 and 2005. During that time, a survey of American and European countries showed that only 14% of companies were using agile methodologies, while 49% were interesting in adopting them. During an analysis of some 36 papers, it was uncovered that customers often praised agile methodologies for letting them feel that they had complete control over the development process. In addition, customers reported that daily meetings kept them up to date on the product's status, and developers were often more clear about what their development objectives were. However, in some cases, the collaborative nature of agile methodologies proved difficult in outsourced projects, as some customers were required to become acclimatizes the working processes of outside developers.
From a developer's standpoint, many papers reported that developers felt more comfortable using an agile methodology like XP or paired programming. In particular, many developers reported that paired programming seemed to make the process quicker; however, they also reported that this process seemed more tiring, as it required intense concentration. Furthermore, Scrums were favored by developers, and they even led to a reduction in overtime in certain cases.
As for productivity, for the 36 papers studied, 42% reported an increase in productivity over traditional development methods. The majority of the productivity gain was often seen during the first iteration of the software. In addition, many of the papers reported reduced errors and better overall quality for products developed using agile methodologies.


== Narration ==
== Narration ==

Revision as of 04:24, 19 February 2014

Comparison of Waterfall, Prototype, and Agile Development

Introduction

Project management can concern many different types of activity or project, and project managers are in charge of executing the planning, organization, management and control of resources to make it happen. Project managers identify a number of steps/strategies to complete a project. This article seeks to provide information about different development strategies, comparing their efficacy through empirical research.

Background

Software development methodology is a framework that is used to structure,plan and control the process of development.Over the past few years, the trend in software development has been to use an agile approach. Before this, traditional approaches required precise and extensive planning, which left the process vulnerable to changing requirements and unforeseen problems. Agile development, on the other hand, attempts to adapt to changing conditions and requirements. Similarly, prototyping helps decide what specifications and features should be implemented in a product by providing a working model that users can interact with, thus allowing them to provide more beneficial feedback. The following sections provide a quick overview of these software development processes.

Traditional (Waterfall) Development

As stated before, waterfall relies on extensive planning, mapping out an entire process from start to finish. Progress flows steadily in one direction (as in a waterfall). The phases in this process include Conception, Initiation, Analysis, Design, Construction, Testing, and Maintenance <ref>Understanding the pros and cons of the Waterfall Model of software development</ref>.In the early days of software development, this methodology was adapted from construction and manufacturing industries because there was no formal model for software development. The first stage of waterfall model considers the development of the project with an initial project plan. This is essentially a blueprint that software developers will use to construct the product which remains constant throughout the various phases of the model. These designs may be in the form of different components that will be later combined to produce functionality; however, a new phase may not be started until the first is completely done. Any project for which complete and consistent requirements are available is amenable to the waterfall model. In general, this will tend to be a very small project.The only large projects that are amenable to the waterfall model would be projects of re-engineering an existing system, where all the requirements are known well before starting the process of change.

Advantages

Traditional software development has the advantage of fully understanding the problem from the outset and producing a clear, and finalized set of specifications. This allows progress to clearly be identified, as each step in the process can be measured. This also allows all team members to be on the same page; if someone is unsure about an aspect of the project, they can refer to the concrete list of specifications. Because so much effort goes into planning before writing code actually begins, it is also easy to identify design flaws.

Disadvantages

While fully understanding a problem before software development begins is great, this is often not the case in the real world. In reality, customers often do not know what they want, or if they do, this often changes once they see the product in action. Since the project plan is framed at a very early stage, the estimations can be inaccurate. The inaccurate measures trickles down till the last phase and the final product suffers many flaws. Studies as mentioned in <ref>https://dspace.mit.edu/bitstream/handle/1721.1/34801/57553849.pdf?sequence=1</ref> show that an estimate done at early stages result in 50-100% inaccurate. Another disadvantage with the waterfall model is analyzing various risk factors. List of potential risk factors include aspects like finance, resource, schedule and technology. Rapidly evolving technologies often make fully understanding a problem before development difficult. More often, it is not known how something will be implemented before development begins, or a theoretical design may prove unfeasible.

Agile Development

In contrast to traditional development, agile software development attempts to adapt nimbly to changing environments. These may include accelerated deadlines and changes in user requirements. According to the "agile manifesto",<ref>The Agile Manifesto</ref>, the agile software development process values:

  • Individuals and interactions over processes and tools
  • Working software over comprehensive documentation
  • Customer collaboration over contract negotiation
  • Responding to change over following a plan

Within agile development, there are several different types, including Scrum and Extreme Programming (XP). (A more substantial list of agile methodologies with descriptions.)

Advantages

Agile software methodologies offer flexibility, promoting evolutionary development. As the product is developed, customer feedback and testing are incorporated simultaneously. <ref name="Waterfall: Evaluating The Pros And Cons">Agile Vs. Waterfall: Evaluating The Pros And Cons</ref> In this manner, agile software development is especially beneficial when a customer's requirements are changing or unclear. Furthermore, as stated in the agile manifesto, agile methodologies promote teamwork and cohesion.

Disadvantages

The changing nature of agile software development makes things like schedule and budgets somewhat hard to predict. <ref name="Waterfall: Evaluating The Pros And Cons"></ref> While the collaborative nature of agile methodologies can be a benefit, it is also a hindrance, since team members are often involved for the life of the project. This requires designers to still attend to the project's changing specifications after initial design has been completed.

Prototype Development

The prototype development process can be used to provide a working model of a product or some aspect of the product for testing and feedback. This is often done during the early stages of development, and it provides the customer a means of proofing the product. <ref name="Software Prototyping and Agile Development">Software Prototyping and Agile Development</ref> As the prototype often changes and evolves during the process, it is essentially used to figure out exactly how a component should work.

Advantages

Software prototyping essentially provides a means for agile software development because it opens a discussion about what customers want. Customers can use the prototype, see what they like and dislike, and this reduces the cost of making the change later in the project. As customers and software developers often have different vocabularies and interpretations of the requirements, a prototype allows customers and other users to provide more meaningful feedback.

Disadvantages

Because prototypes often do not depict the entire project, their use can lead to misinterpretation. The limited prototype can distract users from the big picture, which can lead to overlooking other solutions. In the case of customers, they may see a limited prototype as an insufficient substitute for the product as a whole, and they may not provide the beneficial feedback the prototype was intended for. Another problem is that too much time, effort, and money can be invested in a prototype that is intended to be thrown away. <ref name="Software Prototyping Wiki">Software Prototyping Wiki</ref>

Examples

= An Empirical Study in Agile Development

The paper Empirical studies of agile software development: A systematic review, published in 2008, sought to determine how exactly agile software methodologies were being used in the real world. As agile was not a widely known concept until 2001, they analyzed published findings concerning agile software development between 2001 and 2005. During that time, a survey of American and European countries showed that only 14% of companies were using agile methodologies, while 49% were interesting in adopting them. During an analysis of some 36 papers, it was uncovered that customers often praised agile methodologies for letting them feel that they had complete control over the development process. In addition, customers reported that daily meetings kept them up to date on the product's status, and developers were often more clear about what their development objectives were. However, in some cases, the collaborative nature of agile methodologies proved difficult in outsourced projects, as some customers were required to become acclimatizes the working processes of outside developers.

From a developer's standpoint, many papers reported that developers felt more comfortable using an agile methodology like XP or paired programming. In particular, many developers reported that paired programming seemed to make the process quicker; however, they also reported that this process seemed more tiring, as it required intense concentration. Furthermore, Scrums were favored by developers, and they even led to a reduction in overtime in certain cases.

As for productivity, for the 36 papers studied, 42% reported an increase in productivity over traditional development methods. The majority of the productivity gain was often seen during the first iteration of the software. In addition, many of the papers reported reduced errors and better overall quality for products developed using agile methodologies.

Narration

Terminology

References

<references />