1-Definición de software
La industria del software es un sector económico que se dedica al desarrollo, diseño, producción,
distribución y mantenimiento de programas informáticos, aplicaciones y sistemas de software.
Componentes de la IndSW.
1. Desarrolladores de software
- Son los profesionales que crean el código para construir aplicaciones y sistemas de software. Pueden ser
desarrolladores de front-end, back-end, full-stack, móviles, entre otros.
2. Diseñadores de UX/UI (Experiencia de Usuario/Diseño de Interfaz de Usuario)
- Se enfocan en la experiencia del usuario y el diseño de la interfaz de las aplicaciones para que sean
intuitivas, atractivas y funcionales.
3. Gestión de Proyectos
- Incluye roles como Project Managers, Scrum Masters, Product Owners, entre otros, que se encargan de
planificar, coordinar y gestionar el desarrollo de software de principio a fin.
4. Ingenieros de Calidad (QA)
- Son responsables de asegurar la calidad del software a través de pruebas, automatización, control de
calidad y aseguramiento de calidad.
5. Infraestructura/Operaciones
- Involucra roles como DevOps Engineers, Site Reliability Engineers (SRE), que se encargan de la
infraestructura, despliegue continuo, monitoreo y mantenimiento de sistemas.
6. Analistas
- Ayudan a comprender y definir los requisitos del software, traduciendo las necesidades del cliente en
especificaciones detalladas para los equipos de desarrollo.
7. Data Scientists/Analistas de Datos
- En ciertos contextos, se necesitan para trabajar en análisis de datos, machine learning y soluciones
basadas en datos.
Cadena de producción especializada en el desarrollo de software
1. Requerimientos y Análisis:
- En esta etapa, se recopilan y analizan los requisitos del software. Se identifican las necesidades del cliente
y se traducen en especificaciones técnicas.
### 2. Diseño:
- Los diseñadores de UX/UI crean los diseños de la interfaz de usuario y los arquitectos de software diseñan
la estructura general del sistema.
3. Desarrollo:
- Los desarrolladores crean el código del software según las especificaciones y el diseño previamente
establecido.
4. Pruebas:
- Los ingenieros de calidad (QA) realizan pruebas de software para identificar errores, asegurarse de que
cumple con los requisitos y garantizar su calidad.
5. Despliegue:
- Una vez que el software ha pasado las pruebas, se despliega en un entorno de producción para su uso por
parte de los usuarios finales.
6. Mantenimiento y Soporte:
- Después del despliegue, el software requiere mantenimiento continuo para corregir errores, actualizar
funcionalidades y garantizar su buen funcionamiento.
Centros de la UCI(no sé si desarrollo de software porque no me deja acceder a las páginas de la UCI)
Centro de Tecnologías para la Formación (FORTES)
Centro de Informatización de la Gestión Documental CIGED
Los Centros de Desarrollo de Software por Facultades(no me sale informacion)
Definición de aplicación informática y servicio informatico
Aplicación informática:
Una aplicación informática es un programa de computadora diseñado para realizar tareas específicas o
resolver problemas en un entorno informático. Estas aplicaciones pueden ser tan simples como un
procesador de texto o tan complejas como un software de diseño 3D. Generalmente, las aplicaciones
informáticas se crean con un propósito específico y siguen un conjunto de reglas o algoritmos para llevar a
cabo su función.
Servicio informático:
Por otro lado, un servicio informático se refiere a un conjunto de recursos informáticos proporcionados a
través de una red para ayudar a los usuarios a lograr sus objetivos. Esto puede incluir servicios en la nube,
almacenamiento de datos, mantenimiento de servidores, seguridad informática, entre otros. Los servicios
informáticos suelen estar diseñados para ser escalables, confiables y accesibles para satisfacer las
necesidades de los usuarios.
Definicion de proceso de Desarrollo de software y servicio informatico
El proceso de desarrollo de software y servicios informáticos es un conjunto de actividades planificadas y
estructuradas que se llevan a cabo para diseñar, implementar, probar y mantener productos de software y
servicios relacionados con la tecnología de la información.
Fuentes:
- Pressman, R. (2014). Ingeniería del Software: Un enfoque práctico. McGraw-Hill.
- Sommerville, I. (2010). Ingeniería de Software. Pearson.
Clasificacion de los procesos de desarrollo de software y servicios informaticos
1. Clasificación según la estructura del proceso:
- Secuenciales o lineales: En estos procesos, las fases de desarrollo se realizan de manera secuencial, donde
cada fase comienza una vez que la anterior ha finalizado. Un ejemplo de este enfoque es el modelo en
cascada.
- Iterativos e incrementales: Estos procesos realizan ciclos de desarrollo en los que se van refinando y
mejorando el software en etapas sucesivas. El desarrollo ágil es un ejemplo de este tipo de enfoque.
2. Clasificación según la flexibilidad y adaptabilidad:
- Procesos ágiles: Estos procesos se caracterizan por su flexibilidad y capacidad de respuesta a los cambios
en los requisitos del cliente. Ejemplos son Scrum, Kanban y Extreme Programming (XP).
- Procesos tradicionales: Se refiere a enfoques más estructurados y planificados, como el modelo en
cascada o el modelo en espiral.
3. Clasificación según la metodología de desarrollo:
- Metodologías tradicionales: Incluyen procesos lineales como el modelo en cascada y el modelo en espiral.
- Metodologías ágiles: Se centran en la adaptación al cambio, la entrega continua y la colaboración con el
cliente y el equipo. Algunos ejemplos son Scrum, Kanban, Extreme Programming (XP) y Lean Software
Development.
4. Clasificación según la complejidad del proceso:
- Procesos simples: Se refieren a enfoques sencillos y directos, ideales para proyectos pequeños y bien
definidos.
- Procesos complejos: Son enfoques más elaborados que implican una planificación detallada, gestión de
riesgos y mayor estructuración. Ejemplos incluyen RUP (Rational Unified Process) y SAFe (Scaled Agile
Framework).
Fuentes:
- Pressman, R. (2014). Software Engineering: A Practitioner's Approach. McGraw-Hill.
- Sommerville, I. (2010). Software Engineering. Pearson.
Sistema de roles en la industria de software
1. Desarrollador de Software: Son los profesionales encargados de escribir, probar y mantener el código de
los programas informáticos. Pueden especializarse en diferentes lenguajes de programación y tecnologías.
2. Ingeniero de Software: Diseñan, desarrollan y prueban aplicaciones informáticas. Tienen una formación
académica más específica en ingeniería de software y suelen trabajar en proyectos complejos.
3. Diseñador de Experiencia de Usuario (UX Designer): Se enfocan en crear interfaces de usuario intuitivas y
atractivas. Su objetivo es mejorar la interacción entre el usuario y el software, garantizando una experiencia
positiva.
4. Diseñador de Interfaz de Usuario (UI Designer): Trabajan en el diseño visual de las interfaces de usuario,
asegurando que sean estéticas y funcionales. Colaboran estrechamente con los diseñadores de UX.
5. Analista de Sistemas: Son responsables de analizar los requisitos del cliente y traducirlos en
especificaciones técnicas para el equipo de desarrollo. Participan en la planificación y diseño de sistemas
informáticos.
6. Gerente de Proyecto: Encargado de la planificación, coordinación y ejecución de proyectos de software.
Supervisa al equipo de desarrollo, gestiona recursos y se asegura de que el proyecto se complete a tiempo y
dentro del presupuesto.
7. Tester o Analista de Pruebas: Realiza pruebas de software para identificar errores y garantizar su calidad.
Su objetivo es asegurar que el software funcione correctamente y cumpla con los requisitos del cliente.
8. Arquitecto de Software: Diseña la estructura técnica y la arquitectura de un sistema de software. Define
las tecnologías y los componentes necesarios para crear un sistema robusto y escalable.
9. Especialista en Seguridad Informática: Se encarga de proteger los sistemas informáticos y los datos contra
amenazas cibernéticas. Implementa medidas de seguridad y desarrolla estrategias para prevenir ataques.
Fuentes:
- Sommerville, I. (2015). Software Engineering. Pearson.
- Senn, J. A. (2010). Analisis y diseño de sistemas de informacion. Cengage Learning.
Procesos de desarrollo
1. Modelo en Cascada: Este es uno de los modelos más antiguos y lineales. En este enfoque, las fases de
desarrollo (requisitos, diseño, implementación, pruebas y mantenimiento) se realizan de forma secuencial.
Cada fase debe completarse antes de pasar a la siguiente etapa.
2. Modelo en Espiral: Este modelo combina elementos del modelo en cascada con la iteración y la gestión de
riesgos. Se divide el proyecto en ciclos (o espirales) donde se planifica, se implementa, se evalúa y se ajusta
iterativamente, con un énfasis en la gestión de riesgos.
3. Desarrollo Ágil: Los métodos ágiles (como Scrum, Kanban, Extreme Programming) se centran en la
flexibilidad, la adaptación al cambio y la entrega continua de software funcional. Se trabaja en ciclos cortos
de desarrollo, entregando valor de forma incremental.
4. Desarrollo en Prototipos: En este enfoque se desarrollan prototipos rápidos o versiones preliminares del
software para validar los requisitos y obtener retroalimentación temprana del usuario. Se utilizan para
refinar y ajustar el diseño final del sistema.
5. Desarrollo en Espiral: Combina la flexibilidad de los métodos ágiles con la gestión de riesgos del modelo en
espiral. Se va navegando por ciclos de desarrollo, evaluación y ajuste continuo, priorizando la mitigación de
riesgos y la adaptación a cambios.
6. Desarrollo Basado en Componentes: Se enfoca en la reutilización de componentes de software existentes
para acelerar el proceso de desarrollo y mejorar la calidad. Se basa en la integración de componentes
preexistentes en lugar de construir todo desde cero.
7. Desarrollo Lean: Inspirado en los principios de la fabricación lean, este enfoque busca minimizar el
desperdicio, maximizar el valor y optimizar los flujos de trabajo en el desarrollo de software. Se centra en la
entrega rápida y eficiente de funcionalidades.
Fuentes:
- S. McConnell, S. (1996). Rapid Development: Taming Wild Software Schedules. Microsoft Press.
- Larman, C., & Basili, V. R. (2002). Iterative and Incremental Development: A Brief History. IEEE Computer,
36(6), 47–56.
Roles de la industria de software
### 1. Desarrollador de Software:
- Desarrollador Frontend: Se enfoca en la parte del software que los usuarios ven y con la que interactúan.
- Desarrollador Backend: Trabaja en la parte no visible del software, como la lógica y la base de datos.
- Desarrollador Full Stack: Capaz de trabajar tanto en el frontend como en el backend de una aplicación.
### 2. Ingeniero de Calidad de Software:
- Tester (QA): Encargado de asegurar la calidad del software a través de pruebas exhaustivas.
- Ingeniero de Automatización: Desarrolla scripts y herramientas para automatizar pruebas.
### 3. Arquitecto de Software:
- Diseña la estructura general del software, define tecnologías y toma decisiones clave de diseño.
### 4. Analista de Sistemas:
- Analiza las necesidades de los usuarios y traduce esos requisitos en especificaciones de software.
### 5. Administrador de Sistemas:
- Encargado de mantener y administrar la infraestructura de tecnología de la información.
### 6. Product Owner:
- Representa a los stakeholders y es responsable de maximizar el valor del producto.
### 7. Scrum Master:
- Lidera y facilita un equipo de desarrollo ágil, asegurando que se sigan las prácticas adecuadas.
### 8. Especialista en Seguridad Informática:
- Protege el software y los sistemas contra posibles vulnerabilidades y ataques.