Proyecto de software

Actividad 1: Etapa de contextualizacion

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

1. 1. Planificacion

1.1. Requerimientos

1.1.1. Recopilacion de requisitos: Se realiza por decirlo asi un chequeo de los requerimientos del proyecto mediante entrevistas con los stakeholders, cuestionarios, talleres, y reuniones. Es crucial entender qué es lo que el cliente necesita y espera del software.

1.1.2. Análisis de necesidades del cliente: Se analizan las necesidades identificadas para priorizarlas, desglosarlas y entender cómo se pueden convertir en características técnicas. Aquí en este punto se identifican también posibles limitaciones técnicas y se evalúan los riesgos.

1.1.3. Documentación de Especificaciones: Se crean documentos detallados de especificaciones funcionales y no funcionales que servirán como referencia durante todo el proyecto. Estos incluyen diagramas de flujo, casos de uso, historias de usuario, y requisitos de calidad (rendimiento, seguridad, etc.).

1.2. Recursos

1.2.1. Asignación de Personal: Se determina qué miembros del equipo serán asignados al proyecto y en qué roles se les da a la gente, se pueden desempeñar como (desarrolladores, testers, diseñadores, project managers, etc.).

1.2.2. Herramientas y Tecnología Necesarias: Se seleccionan las herramientas y tecnologías que se utilizarán durante el desarrollo, como entornos de desarrollo integrado (IDEs), plataformas de gestión de proyectos, frameworks, y sistemas de control de versiones.

1.2.3. Presupuesto: Organizacionalmente es un punto clave, se estima el coste total del proyecto, incluyendo salarios del equipo,costos de licencias de software, infraestructura, y posibles gastos imprevistos. El presupuesto debe alinearse con los recursos disponibles y los objetivos del proyecto.

1.3. Cronograma

1.3.1. Estimación de Tiempos: Se descomponen las tareas del proyecto para estimar el tiempo necesario para cada una. Se utilizan metodologías como PERT, estimación por puntos de función o Scrum para hacer proyecciones precisas.

1.3.2. Definición de Hitos: Se identifican puntos clave a lo largo del proyecto donde se realizarán revisiones o entregas parciales. Estos hitos permiten verificar el avance y hacer ajustes en la planificación si es necesario.

1.3.3. Planificación de Entregas: Se establecen fechas para la entrega de diferentes módulos o versiones del software, asegurando que se cumplan las expectativas del cliente.

2. 2. Diseño

2.1. Arquitectura

2.1.1. Diseño de la Estructura del Software: Se define la arquitectura general del sistema, es decir, cómo los diferentes componentes interactuarán entre sí. Esto incluye la elección entre arquitecturas monolíticas o basadas en microservicios, el uso de capas (presentación, lógica de negocio, datos), y la separación de responsabilidades.

2.1.2. Definición de Patrones de Diseño: Se seleccionan patrones de diseño (como MVC, Singleton, Factory, Observer) que serán aplicados para resolver problemas comunes en la organización del código.

2.1.3. Selección de Tecnología y Plataformas: Se eligen los lenguajes de programación, frameworks y plataformas que se utilizarán, considerando la escalabilidad, mantenibilidad, y el entorno de despliegue.

2.2. Intefaces de usuarios

2.2.1. Prototipos: Se crean versiones preliminares de las interfaces de usuario utilizando herramientas como Figma, Adobe XD o Sketch. Los prototipos permiten validar con el cliente la usabilidad y el diseño visual antes de la implementación real.

2.2.2. Diseño de UX/UI: Se trabajan los aspectos de la experiencia de usuario (UX) y la interfaz de usuario (UI), asegurando que el software sea intuitivo, accesible, y visualmente atractivo.

2.2.3. Flujos de Usuario: Se diagraman los flujos de interacción de los usuarios con el software, identificando posibles caminos y puntos críticos donde pueden surgir problemas o confusión.

2.3. Modelos de datos

2.3.1. Diseño de Base de Datos: Se diseña la base de datos, determinando las tablas, campos, tipos de datos, y relaciones entre ellos. Esto incluye la normalización para evitar redundancias y mejorar la eficiencia.

2.3.2. Diagrama de Entidad-Relación (ERD): Se crea un diagrama ERD para visualizar las entidades principales del sistema, sus atributos y las relaciones entre ellas.

2.3.3. Definición de Relaciones y Dependencias: Se detallan las relaciones entre diferentes componentes de datos, como claves foráneas, índices, y restricciones de integridad.

3. Desarrollo

3.1. Codificacion

3.1.1. Implementación de Funcionalidades: Se comienza la codificación según el diseño, implementando las características y funcionalidades requeridas. Esto se hace de manera iterativa, comenzando por los componentes más críticos.

3.1.2. Modularización del Código: El código se organiza en módulos o componentes para facilitar su mantenimiento, reutilización, y prueba. Se aseguran prácticas como el bajo acoplamiento y la alta cohesión.

3.1.3. Revisión de Código: Se realiza una revisión periódica del código por parte de otros desarrolladores para detectar errores, asegurar la calidad, y adherirse a los estándares de codificación.

3.2. Pruebas unitarias

3.2.1. Pruebas Individuales de Componentes: Se crean y ejecutan pruebas unitarias para verificar que cada componente o módulo del software funcione correctamente en aislamiento.

3.2.2. Automatización de Pruebas: Se implementan pruebas automatizadas que se ejecutan de manera continua, asegurando que los nuevos cambios no introduzcan errores en el código existente.

3.2.3. Integración Continua: Se configura un entorno de integración continua (CI) que permite la compilación, prueba y despliegue automáticos del código a medida que se realizan cambios.

3.3. Gestion de versiones

3.3.1. Control de Versiones (Git, SVN): Se utiliza un sistema de control de versiones para gestionar el historial de cambios del código, permitir colaboraciones, y revertir a versiones anteriores si es necesario.

3.3.2. Branching y Merging: Se crean ramas (branches) para trabajar en nuevas funcionalidades o correcciones de errores sin afectar el código principal. Luego se fusionan (merge) con la rama principal (main/master).

3.3.3. Documentación de Cambios: Cada cambio o mejora en el código se documenta adecuadamente, indicando qué se cambió, por qué, y cómo impacta en el sistema.

3.4. Pruebas

3.4.1. Pruebas de integracion

3.4.1.1. Verificación de Interacción entre Módulos: Se realizan pruebas para asegurarse de que los diferentes módulos del software interactúan correctamente entre sí, evitando errores en la comunicación o transferencia de datos.

3.4.1.2. Pruebas de API: Se prueban las interfaces de programación de aplicaciones (APIs) para verificar que funcionan correctamente y manejan los datos de manera segura y eficiente.

3.4.1.3. Pruebas de Rendimiento: Se evalúa el comportamiento del software bajo diferentes cargas de trabajo para asegurar que mantenga su rendimiento y responda adecuadamente en condiciones de estrés.

3.4.2. Pruebas de sistema

3.4.2.1. Validación del Sistema Completo: Se prueba el sistema en su totalidad, asegurándose de que cumple con todos los requisitos funcionales y no funcionales especificados durante la planificación.

3.4.2.2. Pruebas de Usabilidad: Se realizan pruebas con usuarios reales o simulados para evaluar la facilidad de uso del sistema, identificando posibles mejoras en la experiencia del usuario.

3.4.2.3. Pruebas de Seguridad: Se ejecutan pruebas para identificar y corregir vulnerabilidades de seguridad, como la protección contra ataques de inyección SQL, XSS, y otros.

3.4.3. Pruebas de aceptacion

3.4.3.1. Validación con el Cliente: Se presentan las versiones casi finales del software al cliente para que valide su cumplimiento con los requisitos acordados. Esta es una oportunidad para recibir retroalimentación directa.

3.4.3.2. Feedback y Ajustes: Basado en la retroalimentación del cliente, se realizan ajustes o mejoras adicionales antes de la entrega final.

3.4.3.3. Aprobación Final: Una vez que el cliente está satisfecho con el producto, se obtiene su aprobación formal para proceder con la implementación.

3.5. Implementacion

3.5.1. Despliegue

3.5.1.1. Preparación del Entorno de Producción: Se configura el entorno donde el software se ejecutará en vivo, asegurando que cumple con los requisitos de hardware, red, y software necesarios.

3.5.1.2. Migración de Datos: Si es necesario, se migran datos desde sistemas antiguos al nuevo software, asegurando que la integridad de los datos se mantiene.

3.5.1.3. Implementación del Software: Se despliega el software en el entorno de producción, haciendo las configuraciones finales y asegurando que esté listo para su uso.

3.5.2. Documentacion

3.5.2.1. Manuales de Usuario: Se preparan manuales y guías que ayuden a los usuarios finales a entender y utilizar el software de manera efectiva.

3.5.2.2. Documentación Técnica: Se crea documentación técnica detallada para desarrolladores y administradores del sistema, cubriendo aspectos como la arquitectura, configuración, y mantenimiento.

3.5.2.3. Guías de Mantenimiento: Se proporcionan guías para el mantenimiento regular del software, incluyendo la resolución de problemas comunes, actualización de sistemas y manejo de backups.

3.5.3. Capacitacion

3.5.3.1. Formacion para usuarios finales.