Desarrollo de software de código abierto
Es difícil llevar un proyecto de código abierto siguiendo un método de desarrollo de "software" más tradicional como el modelo en cascada, porque en estos métodos tradicionales no se permite volver atrás a una fase anterior. En el desarrollo de "software" de código abierto, los requisitos raramente se reúnen antes de empezar el proyecto, en vez de eso estos se basan versiones previas de productos de "software", como describe Robbins . Más allá de los requisitos, personal voluntario a menudo se ve atraído para ayudar a desarrollar el producto de "software" basado en las versiones anteriores del "software". Este efecto de red es esencial de acuerdo con Abrahamsson et al.:" si el prototipo reúne suficiente atención, gradualmente empezará a atraer a más y más desarrolladores" Abrahamsson et al también apunta que la comunidad es muy dura, tanto como en el mundo empresarial del "software" de código cerrado: "si encuentras cliente sobrevives, pero sin ellos mueres".
Release Management
Muchos nuevos desafíos han aparecido en los últimos años. Muchas veces el software no es desarrollado por un equipo principal sino que el desarrollo se distribuye entre equipos e incluso entre compañías. Los diseñadores deben tener presente componentes ya existentes y las dependecias entre las componentes, sobre todo en el caso de equipos trabajando en lugares geográficamente alejados. El software debe ser descrito acusiosamente. Uno de los aspectos más importantes son las dependencias con otros sistemas. La localización, recepción y revisión de componentes puede ser fuente de errores. Hoek (1997&2003) señala que el gestor de entrega de software en un puente entre las organizaciones donde se escribe y produce una componente y las organizaciones donde son integrados en una aplicación.