Pergunta

I am curious if anyone knows of any methodologies that are significantly different (not a recombination) and I would especially appreciate anyone who brought forward any experience with alternatives.

Foi útil?

Solução

Wikipedia lists these as methodologies/development processes:

  • Agile - based on iterative and incremental development, where requirements and solutions evolve through collaboration between self-organizing, cross-functional teams.

  • Cleanroom - the focus of the Cleanroom process is on defect prevention, rather than defect removal.

  • Iterative - a cyclic software development process developed in response to the weaknesses of the waterfall model. It starts with an initial planning and ends with deployment with the cyclic interactions in between.
    iterative diagram

  • RAD - uses minimal planning in favor of rapid prototyping. The "planning" of software developed using RAD is interleaved with writing the software itself.

  • RUP - The Rational Unified Process (RUP) is an adaptable iterative software development process framework, intended to be tailored by selecting the elements of the process that are appropriate.

  • Spiral - combining elements of both design and prototyping-in-stages, in an effort to combine advantages of top-down and bottom-up concepts. This model of development combines the features of the prototyping model and the waterfall model.
    spiral model diagram

  • Waterfall - sequential through the phases of Conception, Initiation, Analysis, Design, Construction, Testing and Maintenance.
    waterfall diagram

  • Lean - a translation of Lean manufacturing and Lean IT principles and practices to the software development domain; everything not adding value to the customer is considered to be waste.

  • V-Model - Instead of moving down in a linear way, the process steps are bent upwards after the coding phase, to form the typical V shape. The V-Model demonstrates the relationships between each phase of the development life cycle and its associated phase of testing.
    v-model diagram

  • TDD - relies on the repetition of a very short development cycle: first the developer writes a failing automated test case that defines a desired improvement or new function, then produces code to pass that test and finally refactors the new code to acceptable standards.

Outras dicas

Cowboy Coding

Pure unstructured, unmanaged, freeform development. It can be useful for small hobby projects that lack a deadline or even a clear goal, but likely won't work in a corporate setting.

The Spiral Model

The spiral model is a software development process combining elements of both design and prototyping-in-stages, in an effort to combine advantages of top-down and bottom-up concepts. Also known as the spiral lifecycle model (or spiral development), it is a systems development method (SDM) used in information technology (IT). This model of development combines the features of the prototyping model and the waterfall model. The spiral model is intended for large, expensive and complicated projects.

-Wikipedia alt text

Plan

Sit down with the client (or end user) and design a series of use cases.

Design

Layout the system on paper / whiteboard over a few beers and pizza. Snicker when something looks phallic.

Confirm

Confirm design with client (or end user) and freeze requirements.

Code

Self explanatory.

This Waterfall argument has been around for awhile and used by the agile thought leaders early on. They too encountered the "reality" of waterfall as a "red alert."

When you start working on a software development project you will quickly discover that the development methodology used will have a major part to play in the speed and quality of the code developed.Since Agile methodology is so widely used it is important that you understand the advantages and disadvantages of agile so you are able to determine whether it is the best fit for your project deliverables.

Agile software development is a conceptual framework for undertaking software engineering projects.Most agile methods attempt to minimize risk by developing software in short timeboxes, called iterations, which typically last one to four weeks. Each iteration is like a miniature software project of its own, and includes all of the tasks necessary to release the mini-increment of new functionality: planning, requirements analysis, design, coding, testing, and documentation.

It's a good process for the company because it include the customer in the development process and make it responsible for the product delivery. In the other side customers are happy because they find theirs self participating in the development of the product.

Demerits for Agile:

  • Agile is too programmer-centric leaving it unclear how to balance work across an organization.
  • If You Don't Know Where You're Going, Agile Won't Get You There!
  • Creation of frameworks without clear needs.
  • Overuse of language features (inappropriately).
  • No test-first mentality.

Well for an interesting methodology which might work as an alternative for AGILE may be best viewed under these 3 links :

Kanban as Alternative Agile Implementation

Kanban software development

Lean software development on the cloud

Licenciado em: CC-BY-SA com atribuição
scroll top