El software se refiere tanto a los sistemas operativos de las computadoras como a los programas y aplicaciones diseñados para ejecutarse en las computadoras. El desarrollo de software es el diseño y la escritura de software, incluido el desarrollo de la arquitectura del programa y la interfaz de usuario y la programación del código fuente. El proceso de desarrollo de software es el enfoque adoptado para el desarrollo de software, y existen muchos modelos bien desarrollados para este proceso. En general, contienen variaciones en las fases de realizar un análisis de requisitos, especificar el producto, crear la arquitectura del software, implementar el código, probar y documentar el producto, brindar capacitación y soporte, y mantener y mejorar la versión. Cualquiera que sea el modelo que se esté utilizando, el proceso de desarrollo de software a veces puede estar dirigido al desarrollo de nuevos productos, mientras que en otras ocasiones se centra en la revisión, por ejemplo, cuando se crea una versión puntual para corregir errores, y en otras ocasiones, puede Esté preparado para una nueva versión del software existente, agregando características significativas y ofreciendo correcciones de errores.
El modelo de cascada para el proceso de desarrollo de software es un modelo temprano y también uno con limitaciones inherentes. Prescribe un enfoque estrictamente unidireccional para el desarrollo, moviéndose en un solo sentido a través de la secuencia de fases de desarrollo de software, sin volver nunca a una etapa anterior o cambiar la especificación, una vez que ha comenzado el desarrollo. El modelo en espiral, por el contrario, utiliza un proceso iterativo, en el que una secuencia de requisitos, seguida por el diseño, la implementación y finalmente la prueba, es seguida por un segundo ciclo en el que se agregan más características y componentes. En los modelos ágiles del proceso de desarrollo de software, de los cuales hay varios, los proyectos de desarrollo se dividen en subconjuntos de una semana a un mes llamados timeboxes, cada uno de los cuales pasa por una versión miniaturizada de un proceso completo de desarrollo de software, incluido un lanzamiento en el fin. Otras características del desarrollo ágil incluyen la proximidad del equipo colaborador y el uso de los clientes para responder al producto durante todo el proceso.
El proceso de desarrollo de software puede ser radicalmente diferente para una gran empresa y para un programador individual. Por ejemplo, un editor de software comercial, como Sibelius Software®, una parte de Avid Technology®, podría pasar varios años en el proceso de desarrollo de software para cada versión y lanzar una aplicación de software que tiene un tamaño de cientos de MB y es utilizada por miles de personas. . Por otro lado, una persona como Roman Molino Dunn, The Music Transcriber®, que programa un complemento en respuesta al deseo de alguien de poder hacer algo diferente con un software comercial, podría crear un software de 4 kb. dentro de una hora de tener la idea, en un caso extremo.