Você está na página 1de 10

AGILE SOFTWARE DEVELOPMENT

Abstract
Agile - denoting the quality of being agile; readiness for motion; nimbleness, activity, dexterity in motion software development methods are attempting to offer an answer to the eager business community asking for lighter weight along with faster and nimbler software development processes. This is especially the case with the rapidly growing and volatile Internet software industry as well as for the emerging mobile application environment. The new agile methods have evoked a substantial amount of literature and debates. However, academic research on the subject is still scarce, as most of existing publications are written by practitioners or consultants. The aim of this paper is to begin filling this gap by systematically reviewing the existing literature on agile software development methodologies. This paper has three purposes. First, it proposes a definition and a classification of agile software development approaches. Second, it analyses ten software development methods that can be characterized as being agile against the defined criteria. Third, it compares these methods and highlights their similarities and differences. Based on this analysis, future research needs are identified and discussed.[1]

INTRODUCTION

Agile software development is a conceptual framework for software engineering that promotes development iterations throughout the life-cycle of the project.[3] There are many agile development methods; most minimize risk by developing software in short amounts of time. Software developed during one unit of time is referred to as an iteration, which may last from one to four weeks. Each iteration is an entire software project: including planning, requirement analysis, design, coding, testing, and documentation. An iteration may not add enough functionality to warrant releasing the product to market but the goal is to have an available release (without bugs) at the end of each iteration. At the end of each iteration, the team re-evaluates project priorities. Agile methods emphasize face-to-face communication over written documents. Most agile teams are located in a single open office sometimes referred to as a bullpen. At a minimum, this includes programmers and their "customers" (customers define the product; they may be product managers, business analysts, or the clients). The office may include testers, interaction designers technical writers, and managers. Agile methods also emphasize working software as the primary measure of progress. Combined with the preference for face-to-face communication, agile methods produce very little written documentation relative to other methods. This has resulted in criticism of agile methods as being undisciplined

Agile Modeling is a practice-based methodology for modeling and documentation of softwarebased systems. It is intended to be a collection of values, principles, and practices for modeling software that can be applied on a software development project in a more flexible manner than traditional modeling methods.[4] Agile Modeling is a supplement to other agile methodologies such as: Extreme Programming("XP") Agile Unified Process Scrum

AGILE MODELS A model is an abstraction that describes one or more aspects of a problem or a potential solution addressing a problem. Traditionally, models are thought of as zero or more diagrams plus any corresponding documentation. However, non-visual artifacts such as use cases, a textual description of one or more business rules, or a collection of class responsibility collaborator are also models. An agile model is a model that is just barely good enough for the simulation at hand. Agile models are just barely good enough when they exhibit the following traits: Agile models fulfill their purpose. Agile models are understandable. Agile models are sufficiently accurate. Agile models are sufficiently consistent Agile models are sufficiently detailed. Agile models provide positive value. Agile models are as simple as possible.[2]

The Agile modeling (AM) method defines a collection of values, principles and practices which describes how to streamline your modeling and documentation efforts. The focus of AM is to make your modeling and documentation efforts lean and effective. It does not address the complete system lifecycle and so should be characterized as partial process. Agile modeling is rather practical than theoretical. In other way round it does not define the detail procedures for how to create a given type of model. [2]. It defines a collection of core and supplementary practices based on the principles of AM. [5]. OVERVIEW AND DEFINITION The Agile software development has published a manifesto which paved a path for the software industry to see the light of the day. The main manifesto is presented by the Agilists are Individuals and interactions over processes and tools. Working software over comprehensive documentation. Customer collaboration over contract negotiation. Responding to a change over following a plan.[1]

CHARACTERIZATION Miller (2001) gives the following characteristics to Agile software processors from the fast delivery point of view which allows shortening the life cycle of projects. Modularity on development process level Iterative with short cycles enabling fast verification and corrections Time bound with iteration cycles from one to six weeks Parsimony in development process removes all unnecessary activities Adaptive with possible emergent new risks Incremental process approach that allow functioning application building in small steps Convergent approach minimizes the risk People oriented i.e. Agile processes favor people over processes over technology Collaborative and communicative working style. [1].

EXISTING AGILE METHODS Agile modeling is a supplement to other Agile methodologies such as Extreme programming (XP) Agile unified process Scrum. [4].

EXTREME PROGRAMMING It is the most prominent among the Agile software development methodologies which describe a set of daily stake holder practices that embody and encourage particular XP values. Proponents believe that exercising these practices that is traditional software engineering practices taken to so called extreme levels leads to a development process that is more responsive to customer needs than traditional methods. GOALS OF XP Extreme programming explained describes Extreme Programming as An attempt to reconcile humanity and productivity A mechanism for social change A path to improvement

A style of development A software development discipline.

APPLICATIONS OF EXTREME PROGRAMMING Project suitable to extreme programming is those that: Involve new or prototype technology, where the requirements change rapidly, or some development is required to discover unforeseen implementation problems Are research projects where the resulting work is not the software product itself but domain knowledge Are small and more easily managed through informal methods.[5].

AGILE UNIFIED PROCESS Agile unified process (AUP) is a simplified version of the Rational Unified Process (RUP). It describes a simple, easy to understand approach to developing business application software using Agile techniques and concepts. PHASES Like the RUP, the UP comprises four phases : 1. Inception Identify the initial scope of the project, a potential architecture for the system, and obtain initial project funding and stake holder acceptance. 2. Elaboration Prove the architecture of the system. 3. Construction Build working software on a regular, incremental basis which meets the highest priority needs of project stake holders. 4. Transition Validate and deploy the system into the production environment.

DESCIPLINES 1. MODEL: It understands the purpose of the organization, the problem domain of the project and identifies the solution to address the problem domain. 2. IMPLIMENTATION: Transform model into executable code and performs a basic level of testing unit testing in particular. 3. TEST: Performs an evaluation test to ensure quality. This includes finding defects, validating that the system works as designed and verifying that the requirements are met. 4. DEPLOYMENT: Plans for the delivery of the system and to execute the plan to make the system available to end users. 5. CONFIGURATION MANAGEMENT: Manage access to project artifacts, this includes not only tracking artifacts version over time but also controlling and managing changes to them. 6. PROJECT MANAGEMENT: Direct the activities that take place within the project i.e. managing risks, directing people and coordinating the people and system outside the scope of the project. 7. ENVIRONMENT: support the rest of the effort by ensuring that the proper process, guidance and tools are available to the team.[6]. SCRUM It is an Agile software development method for project management. Characteristics of Scrum: A product backlog of prioritized work to be done Completion of a fixed set of backlog items in a series of short iterations or sprints A brief daily meeting or scrum at which progress is explained , upcoming work is described and impediments are raised A brief sprint planning session in which the backlog items for the sprint will be defined. A brief sprint retrospective, at which all the team members reflect about the past sprint.

SCRUM ROLES The roles of scrum are divided into two groups, pigs and chicken. Pig roles: Pigs are the ones committed to the project and the scrum process, they are the ones with their bacon on the line. Chicken roles: Chicken roles are not part of the actual scrum process, but must be taken into account. An important aspect of Agile approach is the process of involving users, business and stake holders into the part of the process. It is important for the people to be engaged and provide feedback into the outputs for review and planning of each sprint. [7] CONCLUSION The traditional software development methodologies are not used in practice because they are too mechanistic to be used in detail. As a result software developers have become skeptical about new solution that is difficult to grasp and thus remain unused. Agile software development methods officially started with the publication of Agile manifesto make an attempt to bring about a paradigm shift in the field of software engineering. These methods claim to place more emphasis on people, interaction, working software, customer collaboration and change rather than on processes, tools, contracts and plans. A number of new promising methodologies claiming conformance to these Agile principles have been used. This paper has three purposes, firstly it synthesized the existing literature on what is actually meant by the term Agile. The conclusion was that this is the case when software development is Incremental Cooperative Straight forward Adaptive.

Secondly, based on this definition each method was described in terms of process, roles and responsibilities, practices, adoption and experiences, along with its research. Thirdly, this enabled the selection of criteria for comparing methods and pointing out their differences and similarities. [1]

REFERENCES [1]. Abrahamsson P, Salo O and Ronkainen J. Agile software development methods (Review and analysis). [2]. Scott W Ambler. Agile model driven development. [3]. Cohen D, Lindvall M, Costa P. Agile software development. [4]. http://en.wikipedia.org/wiki/Agile_Modeling. [5]. http://en.wikipedia.org/wiki/Extreme_Programming. [6]. http://en.wikipedia.org/wiki/Agile_Unified_process. [7]. http://en.wikipedia.org/wiki/Scrum_28development29.

Você também pode gostar