Subido por franjaviercc.fc1993

TESIS EMPRESARIAL DESARROLLO DE SOFTWARE

Anuncio
TESIS EMPRESARIAL DESARROLLO DE SOFTWARE






¿Por qué es importante el desarrollo de software?
Características clave de un desarrollo de software eficaz
Glosario
Herramientas y soluciones de desarrollo de software
Recursos para el desarrollo de software
Dé el siguiente paso
¿Qué es el desarrollo de software?
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.
GuíaLogre flexibilidad en el lugar de trabajo con DaaS
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.
Contenido relacionado
Regístrese para recibir la guía sobre la nube híbrida
Pasos en el proceso de desarrollo de software
El desarrollo de software suele constar de los siguientes pasos:

Seleccionar una metodología para establecer un marco en el que se apliquen los
pasos del desarrollo de software. Implica describir un proceso de trabajo global o
una hoja de ruta para el proyecto. Las metodologías pueden incluir el desarrollo ágil










de software, las prácticas DevOps, el desarrollo rápido de aplicaciones (RAD), el
marco Scaled Agile Framework (SAFe), el desarrollo en cascada y más.
Recopilar requisitos para comprender y documentar lo que necesitan los usuarios y
otras partes interesadas.
Elegir o construir una arquitectura como estructura subyacente dentro de la cual
operará el software.
Desarrollar un diseño en torno a soluciones a los problemas presentados por los
requisitos, lo que a menudo implica modelos de procesos y guiones gráficos.
Crear un modelo con una herramienta de modelado que utilice un lenguaje de
modelado como SysML o UML para llevar a cabo la validación temprana, la
creación de prototipos y la simulación del diseño.
Construir código en el lenguaje de programación adecuado. Implica la revisión por
pares y en equipo para eliminar problemas de forma temprana y producir software
de calidad más rápido.
Realizar pruebas con escenarios planificados de antemano como parte del diseño y
la codificación del 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, pruebas) y crear distintas versiones. Implica
establecer prioridades de control de calidad y criterios de publicación para abordar y
hacer un seguimiento de los defectos.
Implementar el software para su uso y resolver los problemas de los usuarios.
Migrar datos al software nuevo o actualizado desde aplicaciones o fuentes de datos
existentes, si es necesario.
Gestionar y medir el proyectopara mantener la calidad y la entrega a lo largo del
ciclo de vida de la aplicación, y evaluar el proceso de desarrollo con modelos como
el Modelo de Madurez de Capacidades (CMM).
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.





Análisis y especificación de requisitos
Diseño y desarrollo
Pruebas
Implementación
Mantenimiento y soporte
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.
¿Por qué es importante el desarrollo de software?
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:

Soul Machines (enlace externo a ibm.com) utiliza software para crear asesores
artificiales en línea que mejoran el servicio de 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. Al utilizar
IBM watsonx Assistant para incorporar capacidades de inteligencia artificial (IA) al
proceso de desarrollo, Soul Machines puede crear y poner en marcha un asesor
artificial de 8 a 12 semanas.
 "Estamos en una carrera", dice Erik Bak-Mikkelsen. "Tenemos que mantenernos al
día con lo que sucede en el mercado". Bak-Mikkelsen es responsable de operaciones
en la nube en car2go (enlace externo a ibm.com). Entiende que aportar nuevas
características y funciones a las aplicaciones y vehículos de transporte compartido
de car2go es clave para conseguir y mantener el liderazgo. Para ello, car2go trasladó
su desarrollo de operaciones a un servicio gestionado en la nube y adoptó un
modelo de desarrollo DevOps. El resultado son ciclos de desarrollo acelerados,
plazos de comercialización más cortos y capacidad de ampliación para futuros
crecimientos.
 Trabajar con líneas de alta tensión puede ser mortal. Para mantener la seguridad, los
ingenieros establecen "bloqueos" eléctricos mediante etiquetas físicas y candados
para desviar la corriente de los lugares de trabajo. La empresa energética
francesa Enedis (enlace externo a ibm.com) colaboró con IBM Garage for
Cloud para desarrollar un software que instrumentalizase estos candados y etiquetas
y los vinculase a una red compartida. Las etiquetas y los candados detectan cada vez
que se retiran de la furgoneta de un ingeniero y comunican la hora y la
geolocalización. Cuando el ingeniero coloca los candados, su ubicación se registra
en un mapa digital. Todas las partes interesadas comparten una vista del mapa para
garantizar la seguridad, reducir el tiempo de inactividad y facilitar las reparaciones.
El desarrollo en colaboración IBM Cloud Garage Approach permitió a Enedis
desarrollar prototipos listos para usar en tres meses.
Características clave de un desarrollo de software eficaz
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.

Inteligencia artificial (IA): la IA permite a los programas informáticos emular la
toma de decisiones y el aprendizaje humanos. Las redes neuronales, el machine
learning, el procesamiento del lenguaje natural y las capacidades cognitivas
presentan a desarrolladores y empresas la oportunidad de ofrecer productos y
servicios que alteren los mercados y se adelanten a la competencia. IBM
watsonx ofrece a los desarrolladores una forma de conectar con los servicios de
inteligencia artificial y utilizarlos como parte de su aplicación a través de interfaces
de programación de aplicaciones o API. También puede utilizar IBM watsonx para
mejorar los requisitos de sus productos mediante la comprobación de ambigüedad,






actores poco claros, requisitos compuestos o negativos, falta de unidades o
tolerancias, requisitos incompletos y cantidades no específicas.
Desarrollo nativo de la nube: el desarrollo nativo de la nube es una forma de
construir aplicaciones para utilizar entornos en la nube. Una aplicación nativa de la
nube consta de componentes discretos y reutilizables que se conocen como
microservicios y que están diseñados para integrarse en cualquier entorno de nube.
Estos microservicios actúan como bloques de construcción y a menudo se
empaquetan en contenedores. Gracias a esta arquitectura, la aplicación nativa de la
nube puede utilizar entornos de nube para mejorar el rendimiento, la flexibilidad y
la extensibilidad de la aplicación.
Desarrollo basado en la nube: al igual que las organizaciones de TI recurren a la
nube para mejorar la gestión de recursos y reducir costes, también lo hacen las
organizaciones de desarrollo de software. De este modo, la nube puede utilizarse
como un entorno de desarrollo integrado (IDE) o plataforma como servicio
(PaaS) de desarrollo rápido, flexible y rentable. Los entornos de desarrollo basados
en la nube pueden apoyar la codificación, el diseño, la integración, las pruebas y
otras funciones de desarrollo. También pueden ofrecer acceso a API,
microservicios, DevOps y otras herramientas de desarrollo, servicios y experiencia.
Blockchain: blockchain es un libro de contabilidad seguro y vinculado digitalmente
que elimina los costes y la vulnerabilidad que introducen partes como bancos,
organismos reguladores y otros intermediarios. Esta tecnología está transformando
las empresas liberando capital, acelerando los procesos, reduciendo los costes de
transacción y mucho más. Blockchain presenta una enorme oportunidad para el
desarrollo de software. Los desarrolladores están trabajando con libros de
contabilidad distribuidos y tecnología de código abierto Hyperledger (enlace
externo a ibm.com) para cambiar el modo de operar de las empresas.
Low code: Forrester define el low code de la siguiente forma: "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 que están disponibles para los clientes a
bajo o ningún coste en dinero y formació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 construir o ayudar a construir aplicaciones rápidamente
y a menor coste.
Análisis: la demanda anual de científicos de datos, desarrolladores de datos e
ingenieros de datos alcanzará cerca de 700 000 vacantes en 2020. La demanda pone
de manifiesto lo crucial que es para las empresas obtener conocimiento y valor de la
explosión de datos. En consecuencia, los desarrolladores de software están
integrando capacidades avanzadas de análisis en sus aplicaciones. Los servicios
basados en la nube y las API simplifican la exploración de datos, automatizan el
análisis predictivo y crean paneles de control que ofrecen nuevas perspectivas 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 tempranos, simulación y
análisis de diseños de software para su validación temprana. Construir diseños en
MBSE le ayuda a analizar y elaborar los requisitos del proyecto y a pasar
rápidamente del diseño a la implementación.

Móvil: una de las capacidades clave para los desarrolladores de software es crear
aplicaciones móviles con conexiones profundas a los datos que enriquezcan y
eleven la experiencia del usuario. Forrester ha descubierto que "integrar
profundamente los datos de los clientes digitales/móviles tiene un fuerte efecto en la
forma en que los clientes interactúan con las marcas".
Breve glosario
 El desarrollo ágil de software divide los requisitos en funciones consumibles y
ofrece rápidamente esas funciones mediante un desarrollo incremental. Un bucle de
retroalimentación ayuda a encontrar y corregir defectos a medida que la
funcionalidad sigue implementándose.
 El Modelo de Madurez de Capacidades (CMM) evalúa la competencia de los
procesos de desarrollo de software. Realiza un seguimiento del progreso desde las
acciones ad hoc hasta los pasos definidos, los resultados medidos y los procesos
optimizados.
 DevOps, una combinación de desarrollo y operaciones, es un enfoque ágil que aúna
el desarrollo de software y las operaciones de TI en el diseño, desarrollo,
implementación y soporte de software.

El desarrollo rápido de aplicaciones (RAD) es un método no lineal que condensa
el diseño y la construcción del código en un solo paso interconectado.

El marco Scaled Agile Framework (SAFe) proporciona una manera de escalar la
metodología ágil a un equipo u organización de desarrollo de software más grande.

El desarrollo en cascada, a menudo considerada la metodología tradicional de
desarrollo de software, es un conjunto de pasos lineales en cascada que van desde la
planificación y la recopilación de requisitos hasta la implementación y el
mantenimiento.
Descargar