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).2
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. Utilizan 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. De hecho, según Brookings Institute (enlace externo a ibm.com), esas empresas "representan menos de la mitad de las empresas que realizan desarrollo de software".
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.
El desarrollo de software generalmente implica los siguientes pasos:
Los pasos del proceso de desarrollo de software se integran en la gestión del ciclo de vida de aplicaciones (ALM). La solución IBM Engineering Management es un superconjunto de ALM que permite la gestión del desarrollo mecánico, eléctrico y de software al mismo tiempo.
Los pasos del proceso de desarrollo de software se pueden agrupar en las etapas del ciclo de vida, pero la importancia de este es que vuelve a repetirse para permitir la mejora continua. Por ejemplo, los problemas de los usuarios que surgen en la etapa de mantenimiento y soporte pueden convertirse en requisitos al comienzo del siguiente ciclo.
El desarrollo de software también es importante porque es generalizado. Como el Vicepresidente de IBM y bloguero Dibbe Edwards señala: "El software ha surgido como un diferenciador fundamental en muchos productos, desde automóviles hasta lavadoras y termostatos, con un creciente Internet de las cosas que los conecta".
Algunos ejemplos son:
Usar el desarrollo de software para diferenciar marcas y ganar ventaja competitiva requiere dominio de las técnicas y tecnologías que pueden acelerar el despliegue, la calidad y la eficacia del software.
Una solución de eficacia comprobada para actividades de modelado y diseño que le ayuda a ofrecer sistemas y software de mayor calidad más rápido.
El control de versiones de software avanzado, la gestión de espacios de trabajo, el control de origen distribuido y el soporte de desarrollo paralelo para personas y equipos mejora la productividad mediante el seguimiento automático de los cambios. El software permite una funcionalidad prácticamente ilimitada de suspensión y reanudación para manejar interrupciones de trabajo.
Proporciona conexiones entre las herramientas de IBM Engineering Lifecycle Management y herramientas de terceros como Git, GitLib y GitHub para gestionar el control de versiones de software.
Encuentre código, contenido, comunidad y más
Regístrese para obtener información de los temas más importantes
Satisfaga necesidades empresariales complejas con rapidez y agilidad al conectar sus herramientas de desarrollo de software
1 Software, Techopedia (enlace externo a ibm.com)
2 Software integrado, Wikipedia (enlace externo a ibm.com)
3 Ingeniero de software vs. desarrollador de software: ¿cuál es la diferencia? Fullstack Academy (enlace externo a ibm.com)
4 The Forrester Wave™: Plataformas de desarrollo de código bajo para profesionales de AD&D, cuarto trimestre de 2021 John R. Rymer, Forrester Research, Inc. 23 de octubre de 2017 (enlace externo a ibm.com)