¿Qué es ingeniería en Software?

Get Started. It's Free
or sign up with your email address
¿Qué es ingeniería en Software? by Mind Map: ¿Qué es ingeniería en Software?

1. Conceptos principales

1.1. Big data

1.1.1. Uso de tecnologías avanzadas que permiten un análisis inteligente

1.2. Internet de las cosa

1.2.1. Fenómeno de conexión digital del todo con todo

1.3. Robótica

1.3.1. Ámbito industrial

1.3.2. Uso enfocado en facilitar la vida de las personas estrechamente en contacto con ellas

1.4. La nube

1.5. Aprendizaje automatizado

1.6. Las máquinas

2. Características

2.1. Uso de conjunto avanzado de tecnologías

2.2. Análisis inteligente de datos

2.3. Se desarrolla o modifica con intelecto

2.4. No se desgasta

2.5. Mayormente se construye para un uso individualizado

3. Paradigmas y metodologías

3.1. Comercio

3.1.1. Insertar publicidad de forma segmentada para llegar mejor al cliente

3.2. Automoción

3.2.1. Analítica inteligente de datos para seguridad de sus vehículos

3.3. Energía

3.3.1. Mejorar la eficiencia y reducir cibersabotajes

3.4. Salud

3.4.1. Mejorar la segmentación de perfiles y jerarquización de los procesos relacionados con ensayos clínicos

3.4.2. Monitorizar la actividad física a partir de pulseras y relojes inteligentes

3.5. Banca

3.5.1. Proporcionan un amplio abanico de datos acerca de consumidores y comerciantes

3.6. Deporte

3.6.1. Predicciones para el sueldo, lesiones y sus momentos más óptimos para el descanso

3.7. Medio ambiente

3.7.1. La modelización permite vaticinar catástrofes y otros fenómenos naturales

3.8. Emergencias

3.8.1. Información en tiempo real para obtener indicadores que adelantan patrones y alertan de posibles situaciones críticas

3.9. Música

3.9.1. Tecnologías de análisis de piezas musicales para producir composiciones de altísima calidad

3.10. Cartografía digital

3.10.1. Generación de mapas digitales sobre cualquier actividad

4. Métodos de análisis de sistemas

4.1. Análisis inteligente de datos

4.1.1. Permite deducir pautas y tendencias de comportamiento de la gente

4.2. Uso intensivo de redes

4.2.1. Reside en una red y debe atender las necesidades de una comunidad diversa de clientes

4.3. Concurrencia

4.3.1. Puede acceder a un gran número de usuarios a la vez

4.4. Carga impredecible

4.4.1. El número de usuarios cambia en varios órdenes

4.5. Rendimiento

4.5.1. Si la aplicación es muy lenta, tal vez, no se usada

4.6. Disponibilidad

4.6.1. No es razonable un 100% de disponibilidad, pero estar atento a tiempo de demanda

4.7. Orientadas a los datos

4.7.1. El uso de hipermedios para compartir datos

4.8. Contenido sensible

4.8.1. La calidad y naturaleza estética del contenido constituye un rasgo importante de la calidad

4.9. Evolución continua

4.9.1. Capacidad de evolución para actualizar sus funciones y contenido

4.10. Inmediatez

4.10.1. Velocidad de salida a favor de la necesidad apremiante del software

4.11. Seguridad

4.11.1. Implementa medidas de seguridad a través de una infraestructura de apoyo

4.12. Estética

4.12.1. Su apariencia y percepción

5. Principios de diseño

5.1. Sobreingeniería

5.1.1. Agregar librerías o funciones extras por la idea de su utilidad futura

5.1.1.1. Mayor coste de tiempo y presupuesto

5.1.1.2. Aumento de la complejidad del código

5.1.1.3. Peor rendimiento de la aplicación

5.1.1.4. Aumento del riesgo a tener nuevos bugs

5.2. MoSCoW

5.2.1. Niveles de prioridad

5.2.1.1. Must

5.2.1.1.1. Mínimos para considerar la entrega completada

5.2.1.2. Should

5.2.1.2.1. Importantes pero negociables

5.2.1.3. Could

5.2.1.3.1. Deseables pero no prioritarios

5.2.1.4. Won not

5.2.1.4.1. Descartados para esta entrega

5.3. RSW

5.3.1. No reinventes la rueda

5.4. DRY

5.4.1. No repitas código, abstráelo y reúsalo

5.4.1.1. Utiliza patrones de diseño de software estructurado

5.5. RERO

5.5.1. Release early, Release often

5.5.1.1. Metodología con la idea principal de no desviarse de lo que el cliente quiere, otorgándole la oportunidad de supervisar los avances y detectar cualquier desviación en la entrega

5.5.1.1.1. Entornos de acceso restringido a los desarrolladores, el equipo de pruebas y algunos usuarios finales

5.6. YAGNI

5.6.1. No añadas ninguna funcionalidad que no vayas a usar

5.6.1.1. Escribe las pruebas primero y desarrolla el código después (test-driven-development)

5.7. KISS

5.7.1. Mantén tu código simple y evita compledjidad innecesaria

5.7.1.1. Evita el código espagueti, divide las funciones grandes en subfunciones y minimiza las dependencias siempre que puedas

6. Métodos de diseño y modelado de datos

6.1. Red que facilite la innovación

6.1.1. Mayor visibilidad y conocimiento, y optimice la experiencia del cliente.

6.2. Funcionalidad dual

6.2.1. Vehículo

6.2.2. Producto

6.3. Software de sistemas

6.3.1. Programas escritos para dar servicio a otros programas

6.4. Software de aplicación

6.4.1. Programas aislados que resuelven una necesidad específica

6.5. Software de ingeniería y ciencias

6.5.1. Algoritmos devoradores de números

6.6. Software inscrustado

6.6.1. Implementar y controlar características y funciones para el usuario final y el sistema en si (reside dentro de un sistema)

6.7. Software de línea de productos

6.7.1. Se centra en un mercado limitado y particular, proporcionando una capacidad especifica para uso de muchos consumidores

6.8. Aplicaciones web

6.8.1. Software de redes que agrupa una amplia gama de aplicaciones

6.9. Software de inteligencia artificial

6.9.1. Algoritmos no numéricos para resolver problemas complejos que no son fáciles de tratar computacionalmente o con el análisis directo

6.10. Software heredado

6.10.1. Programas escritos hace varias décadas que son modificados para adaptarse a las demandas

6.10.1.1. Debe adaptarse

6.10.1.2. Mejorado para implementar nuevos requerimientos

6.10.1.3. Ampliarse para ser operable con otros sistemas y bases de datos

6.10.1.4. Re diseñarse para hacerla viable dentro de un ambiente de redes

7. Proceso

7.1. Comunicación

7.1.1. Es critico comunicarse y colaborar con el cliente, buscando definir las características y funciones del software

7.2. Planeación

7.2.1. Crear un mapa de planeación para guiar el desarrollo de las actividades

7.3. Modelado

7.3.1. Crear un prototipo con el fin de hacer entender el panorama general

7.4. Construcción

7.4.1. Generar y probar el código

7.5. Despliegue

7.5.1. La entrega al consumidor para su evaluación y retroalimentación