El desarrollo de software se refiere a un conjunto de actividades informáticas dedicadas al proceso de creación, diseño, despliegue y compatibilidad de software.

El software en sí es el conjunto de instrucciones o programas que le dicen a una computadora qué hacer. Es independiente del hardware y hace que las computadoras sean programables. Hay tres tipos básicos:

  • Software del sistema para proporcionar funciones básicas como sistemas operativos, administración de discos, servicios, administración de hardware y otras necesidades operacionales.
  • Software de programación para brindar a los programadores herramientas como editores de texto, compiladores, enlazadores, depuradores y otras herramientas para crear código.
  • Software de aplicación (aplicaciones o apps) para ayudar a los usuarios a realizar tareas. Las suites de productividad de Office, el software de gestión de datos, los reproductores multimedia y los programas de seguridad son algunos ejemplos. Aplicaciones también se refiere a aplicaciones web y móviles como las que se utilizan para comprar en Amazon.com, socializar en Facebook o publicar imágenes en Instagram.1

Un posible cuarto tipo es el software integrado. El software de sistemas integrado se utiliza para controlar máquinas y dispositivos que normalmente no se consideran computadoras, como redes de telecomunicaciones, automóviles, robots industriales y más. Estos dispositivos, y su software, se pueden conectar como parte del Internet de las Cosas (IoT).

El desarrollo de software lo llevan a cabo principalmente programadores, ingenieros de software y desarrolladores de software. Estos roles interactúan y se superponen, y la dinámica entre ellos varía mucho entre los departamentos y comunidades de desarrollo.

  • Los programadores, o codificadores, escriben el código fuente para programar computadoras para realizar tareas específicas como fusionar bases de datos, procesar pedidos en línea, enrutar comunicaciones, realizar búsquedas o mostrar texto y gráficos. Los programadores suelen interpretar las instrucciones de los desarrolladores e ingenieros de software y utilizan lenguajes de programación como C++ o Java para llevarlas a cabo.
  • Los ingenieros de software aplican principios de ingeniería para crear software y sistemas para resolver problemas. Usan lenguaje de modelado y otras herramientas para idear soluciones que a menudo se pueden aplicar a problemas de manera general, en lugar de simplemente resolver solo una instancia o un cliente específico. Las soluciones de ingeniería de software se adhieren al método científico y deben funcionar en el mundo real, como con puentes o ascensores. Su responsabilidad ha aumentado a medida que los productos se han vuelto cada vez más inteligentes con la adición de microprocesadores, sensores y software. No solo hay más productos que dependen del software para diferenciarse de la competencia en el mercado, sino que el desarrollo de su software debe coordinarse con el trabajo de desarrollo mecánico y eléctrico del producto.
  • Los desarrolladores de software tienen un rol menos formal que los ingenieros y pueden participar de cerca en áreas específicas del proyecto, incluida la escritura de código. Al mismo tiempo, impulsan el ciclo de vida general del desarrollo de software mediante el trabajo en equipos funcionales para transformar los requisitos en funciones, la gestión de equipos y procesos de desarrollo y la realización de pruebas y mantenimiento de software.3

El trabajo del desarrollo de software no se limita a codificadores o equipos de desarrollo. Profesionales como científicos, fabricantes de dispositivos y fabricantes de hardware también crean código de software, aunque no son principalmente desarrolladores de software. Tampoco se limita a las industrias tradicionales de tecnología de la información, como las empresas de software o semiconductores.

Una diferencia importante es el desarrollo de software personalizado, contrario al desarrollo de software comercial. El desarrollo de software personalizado es el proceso de diseño, creación, despliegue y mantenimiento de software para un conjunto específico de usuarios, funciones u organizaciones. Por el contrario, el software comercial listo para usar (COTS) está diseñado para un amplio conjunto de requisitos, lo que permite empaquetarlo, comercializarlo y distribuirlo.