Metodologia de Sistemas 1

← Volver atrás
Apunte Metodología de Sistemas 1

Cursada: 56 hs

Examen: 8 hs

Total: 64 hs

Profesor/a:

Rosalía Insaurralde

8/4/2025

Escrito por: Felipe Arce

Metodología de Sistemas

Otra vez volvemos a tener una hermosa materia con la excelente profesora Rosalía Insaurralde, es increible lo que transmite y sabe esta profesora , hace que la carrera se nutra un poco mas de de conocimientos

Clase 1

jue 3 abr 2025
¿Qué es el desarrollo de Software?

El desarrollo de software es el proceso mediante el cual se crea un programa informático. Este proceso no solo implica escribir código, sino también actividades de diseño, pruebas, mantenimiento y distribución. El desarrollo de software tiene como objetivo crear aplicaciones que resuelvan problemas específicos o satisfagan necesidades de los usuarios.

Ciclo de vida del Softwarte (SDLC)

El ciclo de vida del desarrollo de software (SDLC) describe todas las etapas que atraviesa el desarrollo de un programa, desde la concepción de la idea hasta su mantenimiento a largo plazo. Cada fase del ciclo de vida está interrelacionada y tiene un propósito específico en la construcción del software.

Beneficios del SDLC

  • Claridad de requisitos
    La fase de análisis del SDLC asegura una recopilación detallada de requisitos, reduce malentendidos y alinea al equipo de desarrollo con las expectativas de las partes interesadas desde el principio.

  • Precisión en el diseño
    La fase de diseño del SDLC permite la creación de planos arquitectónicos detallados, que guían a los desarrolladores y minimizan el riesgo de errores significativos en el diseño.

  • Consistencia del código
    Siguiendo un enfoque estructurado, el SDLC promueve prácticas de codificación consistentes, haciendo que la base de código sea más fácil de entender, mantener y extender.

  • Detección temprana de errores
    Las fases rigurosas de pruebas en el SDLC, como las pruebas unitarias, de integración y del sistema, ayudan a identificar y corregir errores temprano, reduciendo el costo y el esfuerzo requeridos para correcciones posteriores.

  • Mitigación de riesgos
    Al identificar riesgos potenciales durante las fases de planificación y análisis, el SDLC permite desarrollar estrategias de gestión de riesgos, reduciendo la probabilidad de fallos en el proyecto.

  • Escalabilidad
    La documentación y las fases de diseño estructuradas aseguran que la arquitectura del software sea escalable, facilitando la adición de nuevas características o el manejo de cargas incrementadas en el futuro.

  • Garantía de cumplimiento
    Los procesos del SDLC incluyen documentación y pruebas exhaustivas, que ayudan a asegurar que el software cumpla con los estándares de la industria y los requisitos regulatorios, reduciendo riesgos legales.

  • Satisfacción del cliente
    Al involucrar a las partes interesadas a lo largo del proceso de desarrollo y asegurar que el producto final cumpla con sus necesidades, el SDLC mejora la satisfacción del cliente y construye confianza en el equipo de desarrollo.

  • Mejora en el seguimiento del proyecto
    El SDLC proporciona hitos y entregables claros en cada fase, facilitando el seguimiento del progreso del proyecto y asegurando la finalización a tiempo.

  • Mayor seguridad
    El SDLC incluye consideraciones de seguridad durante las fases de diseño y pruebas, asegurando que se aborden las vulnerabilidades y que el software sea robusto contra posibles amenazas.

EtapaDescripción
Comunicación inicialDurante esta etapa inicial se establece el primer contacto entre el desarrollador y el cliente. En esta fase se acuerdan los lineamientos fundamentales del proyecto, se presentan de manera global los desafíos, los requerimientos principales y las restricciones existentes.
Estudio de FactibilidadNo todos los desafíos pueden ser abordados exitosamente a través de un sistema informático o mediante un enfoque tradicional de desarrollo de software. En ocasiones, pueden surgir proyectos que no sean factibles. Además, la solución sugerida puede no ser eficiente o efectiva. Es en esta etapa donde, así como el presupuesto y los plazos disponibles, pueden determinar si el proyecto puede o debe llevarse a cabo. Por lo tanto, es fundamental evaluar la factibilidad del proyecto antes de decidir continuar adelante con su ejecución.
Plan y PresupuestoEs necesario realizar un proyecto de desarrollo en su totalidad. Habrá que tener en cuenta recursos: Humanos (involucra la contratación y/o asignación temporal de personal); de software (licencias, entornos de desarrollo, librerías reutilizables, etc.); y hardware (servidores, estaciones de trabajo, dispositivos móviles, etc.). También debe incluir una estimación de los plazos. Una vez definida esta etapa, se debe seleccionar el modelo de desarrollo a utilizar.
Construcción de la aplicación utilizando un modeloLos modelos de desarrollo de software abarcan las etapas de análisis, diseño, codificación, pruebas y puesta en marcha. Cada uno de estos modelos se caracteriza por una secuencia lógica según las características del software y el entorno en el que se desarrollará.
GarantíaLa garantía de software tiene como fin de hacer más explícita y a veces incluso contractual la obligación de asegurar el correcto funcionamiento del software una vez entregado. Involucra pruebas de calidad, correcciones y posibles ajustes tras la entrega inicial.
MantenimientoEl mantenimiento de software incluye una serie de actividades que permiten resolver errores funcionales o lógicos no detectados previamente. También se ocupa de actualizar el sistema frente a nuevas versiones de los sistemas operativos o entornos. A su vez, implica la mejora de las prestaciones y la adición de funcionalidades adicionales. En algunos casos, esta etapa puede no llevarse a cabo.
Fases del Proceso de Desarrollo de Software

Conocer el ciclo de vida de un proyecto permite controlar mejor sus fases y reducir situaciones innecesarias. En cualquier proyecto, las fases son las mismas, aunque cada proyecto requiere su propio conjunto único de procesos. Normalmente, encontramos una fase inicial, un proceso de desarrollo y un producto final. A este patrón se le denomina ciclo de vida de un software.

Fases del Ciclo de Vida del Desarrollo de Software
  • Fase 1: Planificación

    • Se trazan objetivos y se valoran las necesidades del proyecto.
    • Se realiza:
      • Estudio de viabilidad: análisis técnico, financiero y legal.
      • Análisis de riesgos: preparación ante contratiempos.
      • Planificación de fases: desarrollo ordenado del proyecto.
    • Se documentan funcionalidades, características y objetivos.
  • Fase 2: Análisis

    • Se definen funciones del software y características clave.
    • Tareas principales:
      • Asignación de costes (difícil al inicio, pero apoyada en experiencia y descomposición del proyecto).
  • Fase 3: Diseño y estructura

    • Se estudian alternativas y se define:
      • Estructura de base de datos: facilita la gestión de información.
      • Lógica del flujo de datos: diagramas visuales del sistema.
      • Interfaz de usuario: debe ser intuitiva y ágil para el usuario final.
  • Fase 4: Desarrollo

    • Comienza la programación del software.
    • Actividades:
      • Elección de lenguaje de programación.
      • Uso de buenas prácticas para asegurar escalabilidad.
      • Desarrollo del código fuente con librerías y frameworks.
  • Fase 5: Pruebas

    • Se corrigen errores y se mejora el software antes de su uso real.
    • Tipos de pruebas:
      • Unitarias
      • Integración
      • Sistema
      • Aceptación
  • Fase 6: Implementación

    • Se pone en marcha el sistema en el entorno real.
    • Incluye:
      • Despliegue en servidores/dispositivos.
      • Instalación y migración de datos.
      • Ajustes de configuración.
      • Supervisión del rendimiento y corrección de errores iniciales.
  • Fase 7: Mantenimiento

    • El software ya está operativo.
    • Se realiza:
      • Corrección de errores.
      • Actualizaciones de rendimiento.
      • Incorporación de nuevas funcionalidades.
      • Adaptaciones a cambios técnicos o del entorno.
Modelos de Desarrollo de Software

Los modelos nos permiten establecer una metodología que nos servirá de guía para validar todas las partes de nuestro proyecto. A continuación, vamos a ver cuáles son los distintos modelos que se utilizan en el desarrollo y la preparación de un software.

Desarrollo de sistemas Dirigidos por un Plan. El enfoque clásico estructurado

La teoría de construcción de sistemas planteó, desde sus comienzos, que, para lograr el éxito del proyecto de software, deben desarrollarse una serie de actividades sucesivas. Este primer marco teórico planteado es conocido como modelo lineal, modelo clásico, o secuencial. Como su nombre lo sugiere, las etapas se encadenan. Una vez concluida una etapa, se pasa a la siguiente.

  • Modelo 1: Cascada

    • Método secuencial donde cada fase debe completarse antes de iniciar la siguiente.
    • Todo está bien organizado y las fases no se mezclan.
    • Ventajas:
      • Proceso sencillo y fácil de entender.
      • Estructurado y fácil de gestionar.
    • Desventajas:
      • Rígido y poco flexible ante cambios.
      • Los errores se detectan en fases tardías.
    • Flujo: lineal, fase por fase.
  • Modelo 2: Incremental

    • Divide el desarrollo en incrementos funcionales entregados progresivamente.
    • Cada incremento mejora el software poco a poco.
    • Ventajas:
      • Resultados funcionales más rápidos.
      • Permite cambios en etapas posteriores.
    • Desventajas:
      • No se define completamente desde el inicio.
      • Posibles problemas de integración entre incrementos.
  • Modelo 3: en V

    • Basado en el modelo cascada, pero con estructura descendente y ascendente:
      • Fase descendente: diseño y desarrollo.
      • Fase ascendente: control de calidad.
    • Ventajas:
      • Minimiza riesgos gracias a planificación estructurada.
      • Mejora la calidad con control integrado.
    • Desventajas:
      • Estructura rígida, poco flexible ante cambios durante el desarrollo.
  • Modelo 4: de Prototipos

    • Permite una vista previa del software enfocándose en lo visible para el usuario.
    • Se realizan versiones sucesivas hasta llegar al producto final.
    • Ventajas:
      • Participación activa del usuario.
      • Detección temprana de errores.
      • Mejora la comunicación del equipo.
      • Menor riesgo de rechazo por parte del cliente.
    • Desventajas:
      • Si el prototipo inicial no convence, el cliente puede perder interés.
      • Requiere mucho tiempo y puede ralentizar el proceso.
      • Cambios constantes según la evaluación del cliente.
  • Modelo 5: en Espiral

    • Organización por fases cíclicas (espirales), cada bucle representa una iteración del proyecto.
    • Inicia con definición de objetivos, seguido de desarrollo, mejora y mantenimiento.
    • Ventajas:
      • Modelo flexible y adaptable.
      • Involucra tempranamente a usuarios y stakeholders.
      • Permite comprobaciones periódicas centradas en el riesgo.
      • Máximo control sobre costos, recursos y calidad.
    • Desventajas:
      • Requiere mucho esfuerzo de gestión.
      • Las decisiones constantes pueden alargar el proyecto.
      • No recomendable para proyectos pequeños con bajo riesgo.

Elección de un modelo adecuado Es importante tener en cuenta que estos modelos no deben considerarse como caminos rígidos que se deben seguir de manera obligatoria. Un proyecto puede requerir el uso de características de varios modelos en su desarrollo. De cualquier manera, es posible dar algunas recomendaciones genéricas, comparando los problemas habituales a los cuales se enfrentan los desarrollos, con las características propias de cada modelo:

Problema para resolverModelos recomendados
El tamaño- Modelo lineal secuencial para proyectos pequeños.
- Modelos evolutivos para dividir grandes proyectos en etapas.
Complejidad de requerimientos- Uso de prototipos para entender mejor las necesidades del cliente.
- Modelos evolutivos que permiten definir requerimientos de forma progresiva.
Complejidad técnica- Prototipos para validar funciones técnicamente complejas.
- Modelo en espiral para controlar riesgos técnicos desde el inicio.
Tiempos disponibles- Modelo de desarrollo rápido de aplicaciones para entregar en menor tiempo.
Entornos riesgosos- Modelo en espiral para detectar, evaluar y mitigar riesgos en cada iteración del proyecto.

Métodos Ágiles
El enfoque ágil es más flexible y se centra en la entrega continua de pequeñas partes del software de forma iterativa.
Los equipos ágiles trabajan en ciclos cortos llamados sprints para ir entregando nuevas funcionalidades.
Este modelo promueve la colaboración con el cliente, la adaptación a los cambios y la retroalimentación continua.

Ventajas:

  • Flexibilidad para adaptarse a cambios en los requisitos.
  • Mejor comunicación entre el cliente y el equipo de desarrollo.

Desventajas:

  • Puede ser difícil de gestionar en proyectos grandes.
  • Requiere un alto nivel de compromiso del cliente.

Principales metodologías ágiles:

  1. Scrum

    • Se trabaja por ciclos o Sprints.
    • Requiere equipos multidisciplinares donde cada miembro puede asumir varias tareas.
    • El equipo se reúne diariamente para unificar criterios y realizar adaptaciones necesarias.
  2. Kanban

    • No hay jerarquía de roles, cada miembro tiene tareas concretas.
    • No se trabaja por Sprints, el flujo es continuo.
    • Equipos formados por especialistas para maximizar la eficiencia.

Modelos DevOps
DevOps es un enfoque que integra el desarrollo (Dev) con las operaciones (Ops).
La idea es que ambos equipos trabajen colaborativamente para acelerar la entrega de software, mejorar la calidad y permitir una integración y despliegue continuo (CI/CD).

Ventajas:

  • Reducción de tiempos de desarrollo y despliegue.
  • Mejor calidad y mayor fiabilidad.

Desventajas:

  • Requiere una gran inversión en infraestructura y herramientas.
  • Cambios culturales y organizacionales necesarios.

Componentes del proceso de desarrollo de software
A lo largo del ciclo de vida del desarrollo de software, hay varios componentes clave que se utilizan en las distintas fases:

  • Lenguajes de Programación: Herramientas fundamentales para la implementación del software. Ejemplos: Python, Java, C++, JavaScript.
  • Herramientas de Desarrollo: IDEs como Visual Studio, Eclipse, o PyCharm, que facilitan la programación con funciones como autocompletado y depuración.
  • Herramientas de Control de Versiones: Ayudan a gestionar y hacer seguimiento de los cambios, como Git y GitHub.
  • Sistemas de Gestión de Bases de Datos: Facilitan el almacenamiento y la administración de datos. Ejemplos: MySQL, PostgreSQL, MongoDB.
  • Herramientas de Pruebas: Automatizan pruebas unitarias e integraciones. Ejemplos: JUnit, Selenium.

Conclusión
El proceso de desarrollo de software es complejo y requiere una planificación cuidadosa.
Es fundamental elegir los enfoques y herramientas adecuadas según las características del proyecto, priorizando la flexibilidad, la colaboración con el cliente y la gestión eficiente del tiempo y recursos.