CSC/ECE 517 Spring 2014/ch1 1w1m bm: Difference between revisions
No edit summary |
|||
Line 19: | Line 19: | ||
=== Agile Development === | === 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", | 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>[http://agilemanifesto.org/ 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). ([http://www.versionone.com/Agile101/Agile-Development-Methodologies-Scrum-Kanban-Lean-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">[https://www.udemy.com/blog/agile-vs-waterfall/ 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. | |||
== Examples == | == Examples == |
Revision as of 03:27, 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.
When following the waterfall model, during the Conception, Initiation, Analysis, and Design stages, the specifications for the project are permanent. This is essentially a blueprint that software developers will use to construct the product. 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.
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. Furthermore, 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.
Examples
Narration
Terminology
References
<references />