El desarrollo de software se refiere 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 una computadora lo que debe hacer. Es independiente del hardware y hace que las computadoras sean programables. Existen tres tipos básicos:
Software de sistema para proporcionar funciones básicas como sistemas operativos, gestión de discos, utilidades, gestión de hardware y otras necesidades operativas.
Software de programación para proporcionar 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 oficina, el software de gestión de datos, los reproductores multimedia y los programas de seguridad son algunos ejemplos. Las aplicaciones también se refieren a aplicaciones web y móviles como las que se utilizan para comprar en Amazon.com, socializar en Facebook o publicar fotos en Instagram.1
Un posible cuarto tipo es el software incrustado. El software de sistemas incrustados se utiliza para controlar máquinas y dispositivos que no suelen considerarse computadoras: redes de telecomunicaciones, automóviles, robots industriales, entre otros. 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. Estas funciones interactúan y se solapan. Además, la dinámica entre ellos varía enormemente en los distintos departamentos y comunidades de desarrollo.
Los programadores, o codificadores, escriben el código fuente para programar computadoras para tareas específicas como la fusión de bases de datos, el procesamiento de pedidos en línea, el enrutamiento de las comunicaciones, la realización de búsquedas o la visualización de 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 que resuelvan problemas. Utilizan un lenguaje de modelado y otras herramientas para idear soluciones que a menudo pueden aplicarse a los problemas de forma general, en lugar de limitarse a resolver un caso o 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 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. No solo hay más productos que dependen del software para diferenciarse en el mercado, sino que su desarrollo debe coordinarse con el trabajo de desarrollo mecánico y eléctrico del producto.
Los desarrolladores de software juegan un papel menos formal que los ingenieros y pueden participar activamente en áreas específicas del proyecto (por ejemplo, la escritura de código). Al mismo tiempo, generan todo el ciclo de vida del desarrollo del software, incluyendo el trabajo en 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 codificadores o a los equipos de desarrollo. Profesionales como científicos, fabricantes de dispositivos y fabricantes de hardware también crean código de software aunque su actividad principal no sea el desarrollo 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 el Brookings Institute (enlace externo a ibm.com), esos negocios "representan menos de la mitad de las empresas que realizan desarrollo de software".
Una distinción importante es el desarrollo de software personalizado frente al desarrollo de software comercial. El desarrollo de software personalizado es el proceso de diseño, creación, implementación y mantenimiento de software para un conjunto específico de usuarios, funciones u organizaciones. Por el contrario, el software comercial disponible (COTS) se diseña 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 el despliegue de las aplicaciones on premises.
Regístrese para obtener la guía sobre la nube híbrida
El desarrollo de software suele implicar los siguientes pasos:
Los pasos del proceso de desarrollo de aplicaciones 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 pueden agruparse 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 comienzo del siguiente ciclo.
El desarrollo de software también es importante porque es generalizado. Como señala la vicepresidenta de IBM y bloguera Dibbe Edwards: "El software ha surgido como un diferenciador clave en muchos productos (desde automóviles hasta lavadoras y termostatos) con un creciente Internet de las cosas que los conecta".
Algunos ejemplos:
Utilizar el desarrollo de software para diferenciar las marcas y obtener una ventaja competitiva requiere dominar las técnicas y tecnologías que pueden acelerar el despliegue, la calidad y la eficacia del software.
Una solución comprobada para actividades de elaboración de modelos y diseño que le ayuda a ofrecer sistemas y software de mejor 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 habilita una característica de suspensión y reanudación prácticamente ilimitada para manejar 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.
Regístrese para recibir información sobre los temas que más le interesan.
Satisfaga las complejas necesidades empresariales con rapidez y agilidad conectando sus herramientas de desarrollo de software.
En la actualidad, nuestra investigación en informática se enfoca en descubrir avances en automatización, proceso de la información y computación.
1 Software, Techopedia (enlace externo a ibm.com)
2 Embedded software, Wikipedia (Software incrustado, Wikipedia) (enlace externo a ibm.com)
3 Software Engineer vs. Software Developer – What’s the Difference? (Ingeniero de Software vs. Desarrollador de Software - ¿Cuál es la Diferencia?) 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 October, 2017 (The Forrester Wave: Plataformas de desarrollo de código bajo para profesionales de AD&D, cuarto trimestre de 2017, John R. Rymer, Forrester Research, Inc. 23 de octubre de 2017) (enlace externo a ibm.com)