El desarrollo de software hace referencia a un conjunto de actividades informáticas dedicadas al proceso de creación, diseño, implementación y soporte de software.
El software propiamente dicho es el conjunto de instrucciones o programas que indican a un ordenador lo que debe hacer. Es independiente del hardware y hace que los ordenadores sean programables. Hay tres tipos básicos:
Software de sistema, que proporciona funciones básicas, como sistemas operativos, gestión de discos, servicios, gestión de hardware y otras necesidades operativas.
Software de programación, que proporciona herramientas a los programadores, como editores de texto, compiladores, enlazadores, depuradores y otras herramientas para crear código.
Software de aplicación (aplicaciones o apps), que ayuda a los usuarios a realizar tareas. Por ejemplo, conjuntos de productividad ofimática, software de gestión de datos, reproductores multimedia y programas de seguridad. Las aplicaciones también se refieren a aplicaciones web y móviles como las que se utilizan para comprar en Amazon.com, socializar con Facebook o publicar fotos en Instagram.1
Un posible cuarto tipo es el software embebido. El software de sistemas embebidos se utiliza para controlar máquinas y dispositivos que normalmente no se consideran ordenadores: redes de telecomunicaciones, automóviles, robots industriales, etc. Estos dispositivos, y su software pueden conectarse 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 de desarrollo y las comunidades.
Los programadores escriben código fuente para programar ordenadores que realicen tareas específicas, como fusionar bases de datos, procesar pedidos en línea, enrutar comunicaciones, realizar búsquedas o mostrar textos 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 el lenguaje de modelado y otras herramientas para idear soluciones que a menudo se pueden aplicar a los problemas de una manera general en lugar de limitarse a resolver un caso o problema de un cliente concreto. Las soluciones de ingeniería de software se rigen por el método científico y deben funcionar en el mundo real, como ocurre con los puentes o los ascensores. Su responsabilidad ha crecido a medida que los productos se han vuelto cada vez más inteligentes con la incorporación de microprocesadores, sensores y software. Además de que cada vez más productos dependen del software para diferenciarse en el mercado, el desarrollo del software debe coordinarse con las tareas de diseño mecánico y eléctrico.
Los desarrolladores de software tienen un papel menos formal que los ingenieros y pueden estar estrechamente involucrados en áreas específicas del proyecto, incluida la escritura de código. Al mismo tiempo, dirigen todo el ciclo de vida del desarrollo de software, lo que implica colaborar con los equipos funcionales para transformar los requisitos en características, gestionar los equipos y procesos de desarrollo, y realizar pruebas y mantenimiento del software.3
El trabajo de desarrollo de software no se limita a los programadores o a los equipos de desarrollo. Algunos profesionales, como los científicos, los fabricantes de dispositivos y los fabricantes de hardware, también crean código de software aunque no se dediquen principalmente al desarrollo de software. Tampoco se limita a los sectores tradicionales de la tecnología de la información, como las empresas de software o semiconductores. De hecho, según el Brookings Institute (enlace externo a ibm.com), esas empresas "representan menos de la mitad de las que se dedican al desarrollo de software".
Una distinción importante es el desarrollo de software a medida en comparación con el desarrollo de software comercial. El desarrollo de software a medida consiste en diseñar, crear, implementar y mantener 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.
Lea cómo el escritorio como servicio (DaaS) permite a las empresas lograr el mismo nivel de rendimiento y seguridad que la implementación de las aplicaciones en las instalaciones.
Regístrese para recibir la guía sobre la nube híbrida
El desarrollo de software suele constar de los siguientes pasos:
Los pasos del proceso de desarrollo de software encajan en la gestión del ciclo de vida de las aplicaciones (ALM). La solución IBM Engineering Management es un superconjunto de ALM que permite gestionar en paralelo el desarrollo mecánico, eléctrico y de software.
Los pasos del proceso de desarrollo de software se pueden agrupar en las fases del ciclo de vida, pero la importancia del ciclo de vida es que se recicla para permitir una mejora continua. Por ejemplo, los problemas de los usuarios que surgen en la fase de mantenimiento y soporte pueden convertirse en requisitos al inicio del siguiente ciclo.
El desarrollo de software también es importante porque es omnipresente. Como señala Dibbe Edwards, vicepresidenta y bloguera de IBM: "El software se ha convertido en un elemento diferenciador clave en muchos productos, desde coches y lavadoras hasta termostatos, con una creciente Internet de las cosas que los conecta".
Por ejemplo:
Utilizar el desarrollo de software para diferenciar las marcas y obtener ventajas competitivas exige dominar las técnicas y la tecnología que pueden acelerar la implementación, la calidad y la eficacia del software.
Esta solución de eficacia probada para actividades de modelado y diseño le ayuda a ofrecer sistemas y software de mayor calidad con mayor rapidez.
El control avanzado de versiones de software, la gestión del espacio de trabajo, el control de fuentes distribuidas y el soporte de desarrollo paralelo para individuos y equipos mejoran la productividad mediante el seguimiento automático de los cambios en los artefactos. El software ofrece una característica de suspensión y reanudación prácticamente ilimitada para gestionar las interrupciones del 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 del software.
Código, contenido, comunidad y más.
Suscríbase a los temas que más le interesan.
Satisfaga las necesidades empresariales complejas con rapidez y agilidad conectando sus herramientas de desarrollo de software.
En la actualidad, nuestra investigación en informática se centra en el descubrimiento de avances en automatización, procesamiento de la información y computación.
1 Software, Techopedia (enlace externo a ibm.com)
2 Embedded software, Wikipedia (enlace externo a ibm.com)
3 Software Engineer vs. Software Developer – What’s the Difference? Fullstack Academy (enlace externo a ibm.com)
4 The Forrester Wave™: Low-Code development Platforms for AD&D Pros, Q4 201 John R. Rymer, Forrester Research, Inc. 23 de octubre, 2017 (enlace externo a ibm.com)