Proceso de desarrollo de un proyecto de software

Comienza Ya. Es Gratis
ó regístrate con tu dirección de correo electrónico
Proceso de desarrollo de un proyecto de software por Mind Map: Proceso de desarrollo de un proyecto de software

1. Componentes de un modelo de proceso

1.1. Arquitectura

1.1.1. Define la estructura general de un sistema y se adapta con el problema a resolver

1.1.2. Se busca escoger de manera que minimice cambios en el futuro

1.1.3. Ejemplos: Tiempo real (con restricciones de tiempo), interactivos (eventos externos), Transformación en lote (Batch) y Administración de transacciones (interactúan con bases de datos)

1.2. Actividad

1.2.1. Es la unidad básica en un proceso

1.2.2. En el proceso de software las actividades básicas para su desarrollo definen el ciclo de vida

1.2.2.1. Requisitos

1.2.2.1.1. Especifican las necesidades del sistema a desarrollar. Define y delimita las funcionalidades del sistema de software.

1.2.2.2. Análisis

1.2.2.2.1. Permite comprender los requisitos del sistema con el fin de estructurar la arquitectura del sistema.

1.2.2.3. Diseño

1.2.2.3.1. Se refina la arquitectura obtenida durante el análisis con el fin adaptarla al ambiente de implementación.

1.2.2.4. Implementación

1.2.2.4.1. Se expresa la arquitectura en un lenguaje de programación adecuado para el ambiente de implementación.

1.2.2.5. Integración

1.2.2.5.1. Se combinan los componentes de la arquitectura implementados independientemente para formar el sistema completo.

1.2.2.6. Pruebas

1.2.2.6.1. Se valida y verifica el sistema como un todo y sus componentes individuales.

1.2.2.7. Documentación

1.2.2.7.1. Se reportan los aspectos de interés de las actividades anteriores con el fin que usuarios externos e internos pueden mantener el sistema y extenderlo.

1.2.2.8. Mantenimiento

1.2.2.8.1. Se corrigen errores no detectados en las actividades anteriores. También se extiende el sistema si surgen necesidades adicionales.

1.3. Métodos y metodologías

1.3.1. Métodos: Definen cómo se realizará en la práctica las actividades. Indica las reglas para transformar los pasos internos de las actividades para ejecutarlas.

1.3.2. Metodologías: Definen el conjunto de métodos.

1.3.3. Estructuradas o tradicionales

1.3.3.1. Modela el sistema mediante funciones. Muestran una descomposición funcional del sistema.

1.3.3.2. Herramientas de modelado

1.3.3.2.1. Diagrama de flujo de datos: Modela la transformación de datos entre funciones del sistema.

1.3.3.2.2. Diagrama de transición de estados: modela el comportamiento en el tiempo del sistema.

1.3.3.2.3. Diagrama entidad-relación: Modela el almacenamiento de datos.

1.3.4. Orientadas a objetos

1.3.4.1. Modela el sistema mediante objetos. Identifica los objetos y luego su comportamiento.

1.3.4.2. Herramientas de modelado

1.3.4.2.1. Diagrama de clases: Describe los componentes esenciales de la arquitectura de un sistema.

1.3.4.2.2. Diagrama de casos de uso: Especifica un sistema en términos de su funcionalidad.

1.3.4.2.3. Diagrama de transición de estados: Describe los cambios de estado entre objetos.

1.3.4.2.4. Diagrama de secuencia entre objetos: Describe los aspectos dinámicos del sistema, mostrando el flujo de eventos entre objetos en el tiempo.

1.3.4.2.5. Diagrama de colaboración: Describe la comunicación entre objetos de un sistema.

1.3.4.2.6. Diagrama de subsistemas: Describe agrupaciones de clase de un subsistema.

1.4. Estrategia

1.4.1. Plan para lograr un objetivo en el proceso. Impactan la arquitectura, el orden en que se realizan las actividades y las metodologías usadas.

1.4.2. Tipos

1.4.2.1. Desarrollo: Involucra la selección de tecnología base para el sistema, como el lenguaje de programación a usar

1.4.2.2. Prototipo: Busca intencionalmente producir una versión preliminar o incompleta del sistema. Con el fin de ayudar a tomar rápidamente decisiones en las realizaciones de las actividades del sistema.

1.4.2.3. Reutilización: Busca intencionalmente la explotación de componentes desarrollados en el proyecto u otros proyectos. Esto con el fin de reducir costos en el desarrollo de las actividades.

1.5. Herramientas

1.5.1. Son aplicaciones que apoyan la administración del proceso de software, y tienen como objetivo el de asistir al desarrollador de software durante todas las actividades del ciclo de vida del proceso de software.

1.5.2. Ejemplos: Editores de texto (Sublime), generadores de diagramas (Draw.io), compiladores (gcc), generadores de código (jetbrain), depuradores (gdb) y administradores de proyectos (Jira), entre otros.

2. Conceptos básicos

2.1. ¿Qué es un proceso?

2.1.1. Define quien hace qué, cuando y como para alcanzar un objetivo

2.2. ¿Modelo de proceso de software?

2.2.1. Define como solucionar la problemática del desarrollo de sistemas de software

2.3. Ciclo de vida

2.3.1. Conjunto de las fases a realizar en un proceso

3. Considera para su realización

3.1. Estructura organizacional

3.2. Reglas

3.3. Políticas

3.4. Metodologías

4. Implementaciones de modelo de software

4.1. Clásicas

4.1.1. Cascada: Se busca definir una secuencia de actividades, donde la finalidad es seguir el ciclo de vida del proceso de software con puntos de revisión de avances bien definidos. Estos puntos se conocen como milestones.

4.1.2. Incremental: Se busca un desarrollo inicial de la arquitectura completa del sistema, seguido de incrementos y versiones parciales de dichas arquitecturas. Cada incremento agrega funcionalidades al sistema.

4.1.3. Evolucionario: Es una extensión del modelo incremental. Donde cada incremento se hace de manera secuencial y no paralela.

4.1.4. Espiral: Es una extensión del modelo en cascada. Busca generar documentos de las actividades frecuentemente para reducir la incertidumbre en el proceso, esto realizando ciclos cortos de trabajo.

4.2. Modernas

4.2.1. Gana-Gana: Extiende el modelo de espiral haciendo énfasis en mejorar las probabilidades de éxitos para todos los involucrados en el proceso de software al minimizar los riesgos. Esto se hace teniendo en cuenta todas las partes involucradas en el planeamiento.

4.2.2. Programación extrema: Busca agilidad en el proceso al utilizar equipos pequeños de programadores con el fin de reducir el riesgo en el ciclo de vida.

4.2.3. Proceso unificado: Este modelo de proceso de software se especifican los requerimientos del sistema mediante casos de uso.