Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 6

DESAROLLO DE SOFWARE

¿Qué es el desarrollo de software?

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.
Pasos del proceso de desarrollo de software

El desarrollo de software generalmente implica los siguientes pasos:

 Seleccionar una metodología para establecer un marco en el que se apliquen


los pasos del desarrollo de software. Describe un proceso de trabajo general o un
roadmap para el proyecto. Las metodologías pueden incluir Desarrollo
ágil, DevOps, Desarrollo rápido de aplicaciones (RAD), Marco ágil
escalado (SAFe), Cascada y otros. (Consulte el glosario).
 Recopilar requisitos para comprender y documentar lo que requieren los
usuarios y otros stakeholders.
 Elegir o crear una arquitectura como la estructura subyacente dentro de la
cual operará el software.
 Desarrollar un diseño en torno a soluciones para los problemas presentados por
los requisitos, que a menudo involucran modelos de proceso y guiones gráficos.
 Crear un modelo con una herramienta de modelado que utiliza lenguaje de
modelado como SysML o UML para realizar la validación temprana, la creación
de prototipos y la simulación del diseño.
 Crear código en el lenguaje de programación apropiado. Involucra la revisión
de expertos y en equipo para solucionar problemas en etapas tempranas y
producir software de calidad más rápido.
 Realizar pruebas con escenarios planificados previamente como parte del
diseño y codificación de software, y realizar pruebas de rendimiento para
simular pruebas de carga en la aplicación.
 Gestionar la configuración y los defectos para comprender todos los artefactos
del software (requisitos, diseño, código, prueba) y crear distintas versiones del
software. Establecer prioridades de garantía de calidad y criterios de
lanzamiento para abordar y realizar un seguimiento de los defectos.
 Desplegar el software para su uso y responder y resolver problemas del usuario.
 Migrar datos al software nuevo o actualizado desde aplicaciones o fuentes de
datos existentes si es necesario.
 Gestionar y medir el proyecto para mantener la calidad y la entrega durante el
ciclo de vida de la aplicación, y evaluar el proceso de desarrollo con modelos
como el Modelo de capacidad de madurez (CMM).

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.

 Análisis y especificación de requisitos


 Diseño y desarrollo
 Pruebas
 Despliegue
 Mantenimiento y soporte
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.
¿Por qué es importante el desarrollo de software?

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:

 Soul Machines (enlace externo a ibm.com) utiliza software para crear asesores
en línea artificiales que mejoran la atención al cliente y la eficiencia. Los
asesores tienen rostros, expresiones y voces humanas que reaccionan de manera
inteligente, empática y eficiente a las preguntas y necesidades de los clientes.
Pueden responder a más del 40 % de las consultas de los clientes sin
intervención humana y aprenden de sus interacciones para mejorar con el
tiempo. Usando IBM Watson Assistant para incorporar funciones de IA en el
proceso de desarrollo, Soul Machines puede crear y desplegar un asesor artificial
en aproximadamente 8 a 12 semanas.
 "Es una carrera", indica Erik Bak-Mikkelsen. "Tenemos que mantenernos al día
con lo que está sucediendo en el mercado". Bak-Mikkelsen es Jefe de
operaciones en la nube de car2go (enlace externo a ibm.com). Entiende que
ofrecer nuevas características y funciones en las aplicaciones y vehículos de
viajes compartidos de car2go es esencial para obtener una ventaja competitiva y
mantenerse a la vanguardia. Para hacerlo, car2go migró sus operaciones de
desarrollo a una nube de servicios gestionados y adoptó un modelo de desarrollo
DevOps. Como resultado, obtuvo ciclos de desarrollo acelerados, un tiempo de
comercialización más rápido y la capacidad de escalar para crecer en el futuro.
 Trabajar con líneas de energía eléctrica puede ser mortal. Para mantenerse
seguros, los ingenieros establecen "bloqueos" eléctricos utilizando etiquetas
físicas y candados para desviar la energía de los lugares de trabajo. La empresa
francesa de energía Enedis (enlace externo a ibm.com) trabajó con IBM Garage
for Cloud para desarrollar software que equipa estos candados y etiquetas y los
vincula a una red compartida. Las etiquetas y los candados detectan cada vez
que son retirados de la camioneta de un ingeniero y comunican la hora y la
ubicación geográfica. A medida que el ingeniero coloca los candados, su
ubicación se registra en un mapa digital. Todos los stakeholders comparten una
vista del mapa para garantizar la seguridad, reducir el tiempo de inactividad y
facilitar las reparaciones. El enfoque de desarrollo colaborativo de IBM Cloud
Garage permitió a Enedis desarrollar prototipos listos para usar en terreno en tres
meses.
Características principales del desarrollo de software eficaz

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.

 Inteligencia artificial (IA): La IA permite que el software imite la toma de


decisiones y el aprendizaje humanos. Las redes neuronales, el machine learning,
el procesamiento del lenguaje natural y las capacidades cognitivas ofrecen a los
desarrolladores y empresas la oportunidad de ofrecer productos y servicios que
revolucionan los mercados y se adelantan a la competencia. IBM Watson ofrece
a los desarrolladores una forma de conectarse y utilizar servicios de inteligencia
artificial como parte de sus aplicaciones a través de interfaces de programación
de aplicaciones o API. También puede utilizar IBM Watson para mejorar los
requisitos de su producto comprobando la ambigüedad, actores poco claros,
requisitos compuestos o negativos, unidades o tolerancias faltantes, requisitos
incompletos y cantidades no específicas.
 Desarrollo nativo de la nube: El desarrollo nativo de la nube es una forma de
crear aplicaciones para aprovechar los entornos de la nube. Una aplicación
nativa de la nube consta de componentes discretos y reutilizables conocidos
como microservicios, diseñados para integrarse en cualquier entorno de nube.
Estos microservicios actúan como elementos básicos y a menudo se empaquetan
en contenedores. Debido a esta arquitectura, las aplicaciones nativas de la nube
pueden utilizar entornos de nube para mejorar el rendimiento, la flexibilidad y la
extensibilidad de las aplicaciones.
 Desarrollo basado en la nube: Así como las organizaciones de TI utilizan la
nube para mejorar la gestión de recursos y reducir costos, también lo hacen las
organizaciones de desarrollo de software. De esta manera, la nube se puede
utilizar como un entorno de desarrollo integrado (IDE) rápido, flexible y
rentable o una plataforma como servicio (PaaS). Los entornos de desarrollo
basados en la nube pueden admitir codificación, diseño, integración, pruebas y
otras funciones de desarrollo. También pueden ofrecer acceso a API,
microservicios, DevOps y otras herramientas, servicios y experiencia de
desarrollo.
 Blockchain: Blockchain es un libro mayor seguro y vinculado digitalmente que
elimina el costo y la vulnerabilidad generados por bancos, organismos
reguladores y otros intermediarios. Está transformando empresas al liberar
capital, acelerar procesos, reducir costos de transacción y más. Blockchain
presenta una gran oportunidad para el desarrollo de software. Los
desarrolladores están trabajando con libros mayores distribuidos y
tecnología Hyperledger (enlace externo a ibm.com) de código abierto para
cambiar la forma en que operan las empresas.
 Código bajo: Forrester define el código bajo como: "Productos y/o servicios en
la nube para el desarrollo de aplicaciones que emplean técnicas visuales y
declarativas en lugar de programación, y están disponibles para los clientes a un
bajo costo o sin costo en cuanto a dinero y capacitación (...)". 4 En resumen, es
una práctica de desarrollo que reduce la necesidad de codificar y permite a los
no codificadores o desarrolladores ciudadanos crear o ayudar a crear
aplicaciones rápidamente y a un costo menor.
 Analítica: La demanda anual de científicos de datos, desarrolladores de datos e
ingenieros de datos llegó a casi 700,000 vacantes en 2020. La demanda destaca
lo importante que es para las empresas obtener insights y valor de los datos. En
consecuencia, los desarrolladores de software están integrando funciones
analíticas avanzadas en sus aplicaciones. Los servicios basados en la nube y las
API simplifican la tarea de guiar la exploración de datos, automatizar la analítica
predictiva y crear paneles de control que brindan nuevos insights y mejoran la
toma de decisiones.
 Ingeniería de sistemas basada en modelos (MBSE): En MBSE, los lenguajes
de modelado de software se utilizan para realizar prototipos, simulaciones y
análisis tempranos de diseños de software para su validación temprana. La
creación de diseños en MBSE le ayuda a analizar y elaborar los requisitos del
proyecto y pasar rápidamente del diseño a la implementación.
 Móvil: Muchas de estas experiencias ocurren en entornos móviles. Una de las
funciones principales de los desarrolladores de software es la creación de
aplicaciones móviles con conexiones profundas a los datos que enriquecen y
mejoran las experiencias de los usuarios. Forrester ha descubierto que "la
integración profunda de los datos digitales/móviles de los clientes tiene un fuerte
impacto en la forma en que los clientes interactúan con las marcas".

Glosario rápido
 Desarrollo ágil divide los requisitos en funciones consumibles y ofrece
rápidamente esas funciones a través del desarrollo incremental. Un circuito de
retroalimentación ayuda a encontrar y corregir defectos a medida que la
funcionalidad continúa desplegándose.
El
 modelo de capacidad de madurez (CMM) evalúa la competencia de los
procesos de desarrollo de software. Realiza un seguimiento del progreso desde
acciones ad hoc hasta pasos definidos, resultados medidos y procesos
optimizados.
 DevOps, una combinación de desarrollo y operaciones, es un enfoque ágil que
une el desarrollo de software y las operaciones de TI en el diseño, desarrollo,
despliegue y soporte de software.
El
 desarrollo rápido de aplicaciones (RAD) es un enfoque no lineal que fusiona
el diseño y la creación del código en un paso interconectado.
El
 marco ágil escalado (SAFe) proporciona una forma de escalar la metodología
ágil a un equipo u organización de desarrollo de software más grande.
La
 cascada, a menudo considerada la metodología de desarrollo de software
tradicional, es un conjunto de pasos lineales en cascada desde la planificación y
la recopilación de requisitos hasta el despliegue y el mantenimiento.

También podría gustarte