Desarrollador de software

De Wikipedia, la enciclopedia libre
Saltar a: navegación, búsqueda

Un desarrollador de software es un programador que se dedica a uno o más aspectos del proceso de desarrollo de software. Se trata de un ámbito más amplio de la programación. El desarrollador puede contribuir a la visión general del proyecto más a nivel de aplicación que a nivel de componentes o en las tareas de programación individuales

Conforme pasa el tiempo, las diferencias entre el diseño de "sistemas informáticos", el desarrollo de software y la programación se van haciendo más claras. Ya en el nicho de mercado actual puede encontrarse una separación entre programadores y desarrolladores, siendo estos últimos los que diseñan la estructura o jerarquía de clases. Incluso esos desarrolladores se convierten en arquitectos de sistemas informáticos, aquellos que diseñan la arquitectura a varios niveles o las interacciones entre componentes de un proyecto de software grande.

El concepto de desarrollo de software incluye:

  • un trabajo en equipo: los proyectos son en general una colaboración entre varios desarrolladores, que tratan cada uno una parte del programa, y también de otros colaboradores como los comerciales, que definen con el cliente la finalidad del producto, diseñadores gráficos que definen el aspecto y la ergonomía...
  • la concepción (diseño): a partir de un pliego de condiciones (user requirement specifications), definir las especificaciones técnicas (estructura de los datos, comunicación entre los módulos...)
  • las pruebas, que sirven para detectar las no conformidades y los errores
  • el mantenimiento: la corrección de los errores después de la salida del programa informático, y la mejora para hacer evolucionar el producto.

¿Top-down o bottom-up?[editar]

El mundo del desarrollo informático ha estado mucho tiempo debatiendo esta cuestión. Modos de desarrollo:

  • top-down, el que corresponde a la descomposición progresiva de Descartes mencionada aquí. Se va de lo complejo a lo simple.
    • Ventaja: La complejidad de lo que se estudia se reduce en cada etapa.
    • Inconveniente 1: La manera de dividirse no tiene una única razón de ser, y probablemente no se elija el mejor. El problema se repite y se acumula en cada nueva etapa de descomposición.
    • Inconveniente 2: La división de un problema en tramos puede eludir involuntariamente las cuestiones transversales que no pertenecen específicamente ni a un tramo, ni a otro. Peor: en el momento en que se examina cada tramo, se puede creer de buena fe que el problema transversal incumbe al otro. Ahora bien, para un problema complejo apenas parece posible guardar en cabeza simultáneamente todos los problemas transversales pendientes, excepto que se sepa formalizar bien por razones de costumbre.

Estas consideraciones conducen a no poner en entredicho el modelo top-down en un caso: el de los problemas que más o menos se conocen bien.

  • bottom-up, el que corresponde al control progresivo de elementos simples, y que se combinan para avanzar hacia una complejidad cada vez mayor. Se va de lo simple a lo complejo.
    • Inconveniente: muchas ensayos y errores, y no siempre en la buena dirección. Se titubea.
    • Pero como contrapartida se familiariza con los elementos de la resolución, se ve dónde se ponen los pies, se adquiere una base estable.

En resumen, cada método tiene su ámbito de uso óptimo:

  • El top-down para todo lo que se controla a grandes rasgos
  • El bottom-up para explorar eficazmente los terra incógnita.

Véase también[editar]