Resumen Ingenieria de Software
Resumen Ingenieria de Software
Resumen Ingenieria de Software
El producto
Los modelos de procesos de software describen la secuencia de actividades y tareas que se deben llevar a
cabo para desarrollar un software. Estos modelos proporcionan una guía para el equipo de desarrollo de
software sobre qué hacer en cada etapa del proceso de desarrollo.
Modelo en Cascada
Esta metodología es lineal y consta de algunas fases que hay que seguir y completar para poder avanzar a la
fase siguiente. El ciclo de vida de un programa realizado bajo la metodología en cascada, es extenso pero
muy bien estructurado. El detalle aquí es que no se puede saltarte fases ni volver a repetirlas. Por ejemplo: Si
se realiza un análisis de requerimientos, avanzamos a diseñar el programa y ya estamos en el desarrollo y de
momento el cliente nos dice que desea modificar los requerimientos, digamos que por tratarse del modelo en
cascada, no es posible volver atrás. Por lo tanto se tendría que reiniciar el proyecto o bien concluirlo y ver
como queda el software al final.
Modelo en el Espiral
El modelo espiral en ingeniería del software tiene un enfoque muy distinto al modelo de cascada,
principalmente porque su enfoque va dirigido hacia el análisis de riesgos. El modelo de ciclo de vida en
espiral, consiste en realizar diversas iteraciones, pasando por cada una de sus fases una y otra vez. A
diferencia del modelo cascada que no tiene vuelta atrás, en el modelo en espiral se pueden hacer las
iteraciones que se consideren necesarias. Entre las principales ventajas de desarrollar un proyecto con el
modelo espiral, es que los riesgos se van disminuyendo conforme avanzan los ciclos o iteraciones, de hecho
no se puede avanzar a un ciclo nuevo, si no se ha dado solución a todos los riesgos latentes.
Lamentablemente el modelo es realmente costoso y para que se pueda tener un alto nivel de eficacia en la
evaluación final del proyecto con este ciclo de vida, se necesita que del equipo tenga un gran nivel de
conocimientos y si es posible buena experiencia para superar cualquier riesgo al que se puedan enfrentar.
Se centra en la entrega de software funcional en pequeñas iteraciones llamadas "sprints", en lugar de esperar
hasta que todo el proyecto esté completamente desarrollado. Se centran en la entrega rápida y continua de
software funcional, colaboración con los clientes, capacidad de responder rápidamente a los cambios,
retroalimentación y adaptación a cambios durante todo el proceso de desarrollo.
El Proceso Unificado de Desarrollo (PUD) no es un modelo de desarrollo en sí mismo, sino más bien es un
marco o metodología de desarrollo de software que puede incorporar elementos de varios modelos de
desarrollo, incluyendo los mencionados: Modelo de Desarrollo Ágil, Modelo Incremental o Evolutivo,
Modelo Iterativo o por Prototipos, Modelo en Espiral y Modelo en Cascada. (Marco o Metodología VS
Modelo: Un marco o metodología es un enfoque general y flexible que proporciona principios y guías para
abordar el desarrollo de software, mientras que un modelo es una representación más específica y detallada
que define la secuencia de actividades y tareas en el proceso de desarrollo)
“Conjunto de actividades necesarias para transformar los requisitos del usuario en un sistema software”.
Está dirigido por Casos de Uso (se enfoca en las necesidades del usuario y en cómo el sistema
puede satisfacer esas necesidades).
Está centrado en la Arquitectura (lo que ayuda a identificar los riesgos y las complejidades
técnicas temprano en el proceso).
Es un proceso iterativo e incremental. Múltiples iteraciones de los 5 flujos por cada fase.
El modelado de casos de uso es una técnica utilizada para comprender, capturar y documentar los requisitos
del usuario. Describen las interacciones entre los actores y el sistema. Los CU representan una acción
concreta en infinitivo y son una forma de tomar requerimientos, dirigir el proceso e idear la
arquitectura. El enfoque dirigido por casos de uso de PUD se centra en definir los requisitos funcionales
del sistema para planificar las iteraciones del proyecto. Dado que un sistema ve la luz para brindar algo a sus
usuarios, tiene sentido guiar el desarrollo partiendo de los requerimientos de los mismos. Son los C.U.
quienes capturan estos requrimientos siendo un C.U. un fragmento funcional del sistema. Los Caso de Uso
dirigen el proceso e idean la arquitectura.
Centrado en la arquitectura
La arquitectura es una visión general del modelo del sistema que resalta las caracterisiticas clave sin dar
demasiada importancia en los detalles. Si los C.U. son la funcionalidad del sistema, entonces la arq. es la
forma del sistema. La arquitectura es una vista del diseño completo con las características más importantes
resaltadas, dejando los detalles de lado.
Los casos de uso y la arquitectura están profundamente relacionados. Los casos de uso deben encajar en la
arquitectura, y a su vez la arquitectura debe permitir el desarrollo de todos los casos de uso requeridos,
actualmente y a futuro.
La arquitectura de software se refiere a la estructura del software y cómo las diferentes partes del software se
relacionan entre sí.
La arquitectura de software se define en la fase de elaboración del PUD y se utiliza como una guía para el
equipo de desarrollo durante la fase de construcción. La arquitectura de software también se utiliza para
fomentar la reutilización y hacer evolucionar al sistema.
Iterativo e incremental
Es práctico dividir el trabajo en iteraciones, los cuales tienen como resultado un incremento. De esta forma
se reduce el riesgo y los costos (identificación temprana de problemas, retroalimentación constante, mejora
en la estimación de tiempos y costos …).
El proceso se divide en cuatro fases principales: inicio, elaboración, construcción y transición. Cada fase se
compone de múltiples iteraciones y cada fase debe completarse para avanzar a la siguiente fase.
1. Inicio:
En la fase de inicio, se identifican los requisitos y se establece una visión general del proyecto. También se
identifican los objetivos del proyecto, los riesgos y las limitaciones. Se presenta el análisis de negocio. El
objetivo de esta fase es ayudar al equipo de proyecto a decidir cuales son los verdaderos objetivos del
proyecto, los riesgos y las limitaciones. La fase de inicio concluye con la aprobación de un documento
llamado Visión del Proyecto.
2. Elaboración:
La fase de elaboración se enfoca en la definición de la arquitectura del sistema y la identificación de los
requisitos. En esta fase, se elabora un plan detallado del proyecto y se crean prototipos del software. Al final
de la fase, se debe tener un documento de requisitos completado, una arquitectura definida y una lista de
tareas detallada. El resultado de esta fase es la línea base de la arquitectura.
3. Construcción:
Durante la fase de construcción se crea el producto. La línea base de la arquitectura crece hasta convertirse
en el sistema completo. Al final de esta fase, el producto contiene todos los casos de uso implementados, sin
embargo puede que no este libre de defectos.
La fase de construcción es la fase principal del proceso de desarrollo. En esta fase, se construye el software
y se realizan pruebas exhaustivas para garantizar la calidad. Durante la fase de construcción, el software se
divide en iteraciones, y cada iteración se enfoca en un conjunto específico de funcionalidades. Al final de
cada iteración, se realiza una revisión de la funcionalidad completada y se planifica la siguiente iteración.
4. Transición:
La fase de transición es la fase final del proceso de desarrollo. En esta fase, se realiza la transición del
software desde el equipo de desarrollo hasta el equipo de mantenimiento. Durante esta fase, se realiza una
prueba final y se entrega el software al cliente.
Entonces..
El Proceso Unificado de Desarrollo se dirige por casos de uso para identificar los requisitos del sistema, se
enfoca en la arquitectura para diseñar una estructura sólida y flexible, y utiliza un proceso iterativo e
incremental para mejorar la calidad del sistema a través de pruebas y validación continua.
Las 4 "P" del desarrollo de software
Elementos fundamentales que se deben considerar durante el proceso de desarrollo de software:
Personas: importancia de tener un equipo de trabajo altamente capacitado y motivado para el éxito
del proyecto.
Procesos: los procesos deben ser eficientes, efectivos y adaptables para asegurar la calidad del
software y la satisfacción del cliente.
Productos: el software debe cumplir con los requisitos del cliente y ser de alta calidad. Debe ser
fácil de usar, seguro y escalable.
Proyectos: Se refiere a la gestión del proyecto, esto implica la definición de objetivos claros, la
gestión adecuada del tiempo y recursos, y la identificación y gestión de riesgos y problemas.
FLUJOS:
- Entendible por el usuario: Esto significa que los requisitos deben ser escritos en un lenguaje claro
y conciso, evitando términos técnicos complejos.
En algunos casos comenzamos haciendo un modelo del negocio (diagrama de casos de uso )o partimos
de uno ya desarrollado. El modelo de negocio describe cómo los actores interactúan con el sistema y los
procesos y flujos de trabajo que ocurren dentro del sistema. Ayuda a entender la lógica del negocio y a
definir los requisitos funcionales del sistema.
En otros casos si es un sistema acotado que no da soporte al negocio podemos partir de un modelo de
objetos sencillo como un modelo del dominio (diagrama de clases). Describe las clases que componen el
sistema, sus propiedades y métodos, y las relaciones entre ellas. Este modelo nos proporciona una visión
de donde está ubicado el sistema.
La principal diferencia entre el modelo de negocio y el modelo de dominio es que el modelo de negocio se
enfoca en cómo una empresa crea valor a través de sus actividades comerciales, mientras que el modelo
de dominio se enfoca en la representación de conceptos clave en un dominio específico.
En otros casos el cliente puede ya haber desarrollado una especificación completa de requisitos no
basada en objetos, de la cual podemos partir.
1. Enumerar requisitos candidatos: Implica la identificación de los posibles requisitos que el sistema
debe cumplir. Se pueden obtener a través de diversas fuentes, como la experiencia de los usuarios, el
análisis de sistemas similares, etc.
2. Comprender el contexto del sistema: Para expresar el contexto del sistema se utiliza el Modelo de
dominio o el modelo de negocio.
3. Capturar requisitos funcionales: Requisitos que describen lo que el sistema debe hacer (Modelo de
caso de uso).
4. Capturar requisitos no funcionales: Requisitos que describen cómo el sistema debe hacer lo que
debe hacer. Representan restricciones, condiciones o propiedades del sistema. Los que son más
genéricos se documentan por medio de una lista de requisitos adicionales.
Los requisitos funcionales se refieren a las funciones que debe realizar el sistema (“el usuario debe ser
capaz de iniciar sesión”), mientras que los requisitos no funcionales se refieren a cómo debe hacerlo (“el
tiempo de respuesta no debe ser mayor a 10 seg”).
Requisitos adicionales*: son requerimientos No funcionales que no pueden asociarse a ningún caso de
uso en particular.
Artefactos*: Son elementos tangibles que se generan durante el proceso de desarrollo de software. Estos
pueden incluir documentos, diagramas, modelos, código fuente y ejecutables. Los artefactos permiten a
los miembros del equipo comunicarse y colaborar de manera efectiva, además de documentar el progreso
y los resultados del proyecto.
○ Precondiciones
○ Camino básico
○ Caminos
alternativos
○ Postcondiciones
○ No Funcionales
“Modelamos el sistema y encontramos su forma para que soporte todos los requisitos incluyendo los
no funcionales”.
Propósito
● Comprensión profunda de los requisitos no funcionales, restricciones de los lenguajes de
programación, componentes reutilizables, sistemas operativos, tecnologías de distribución y
concurrencia, etc.
● Crear un punto de partida para la implementación.
● Descomponer los trabajos de implementación en partes más manejables.
● Capturar las interfaces entre subsistemas antes del ciclo del software.
● Poder visualizar y reflexionar sobre el diseño.
● Crear una abstracción de la implementación.
Analisis vs Diseño
Diseño en el ciclo de vida
Flujo de Trabajo
1) Diseño de la Arquitectura
Configuración de red:
● Capacidad de hardware (qué nodos, cpu, memoria)
● Conexión y protocolo (velocidad, disponibilidad y calidad)
● Redundancia, modos de fallo, migración, mantenimiento de copia de seguridad, etc.
El diagrama de despliegue es una representación visual que muestra cómo se distribuyen los nodos y cómo
se comunican entre sí a través de la red.
2 - Identificar subsistemas y sus interfaces (Diag. de Subsistemas)
Los subsistemas son un medio para organizar el modelo de diseño en piezas manejables. El sistema se divide
en subsistemas para poder distribuirlos en los nodos.
● Capa intermedia:
La capa intermedia, también conocida como capa de servicios o middleware, actúa como una interfaz
entre los diferentes componentes del sistema y se encarga de facilitar la comunicación y la
coordinación entre ellos. Ej: máquina virtual java, creo que python, etc.
● Clases activas: Las clases activas son aquellas que representan objetos o componentes del sistema
que tienen un comportamiento activo y pueden realizar acciones o ejecutar métodos. Estas clases son
responsables de llevar a cabo las operaciones y procesos del sistema. Por lo general, se asocian con
los elementos que ejecutan la lógica del negocio o implementan funcionalidades específicas.
4 - Identificar los mecanismos genéricos de diseño
Patrones o enfoques comunes que se utilizan en el diseño:
● Persistencia
● Distribución transparente (ocultar la complejidad de la infraestructura y permitir una experiencia de
usuario coherente y sin interrupciones)
● Características de Seguridad
● Recuperación de Errores
● Transacciones
● Etc.
4) Diseño de un Subsistema
El principal resultado del diseño es el modelo de diseño que se esfuerza en conservar la estructura del
sistema impuesta por el modelo de análisis, y que sirve como esquema para la implementación.
El diseño también obtiene como resultado el modelo de despliegue, que describe todas las configuraciones
de red sobre las cuáles debería implantarse el sistema.
4) Implementación
La implementación juega un papel importante en la fase de construcción del software.
Objetivos
● Implementar clases y subsistemas.
● Planificar integraciones en cada iteración.
● Asignar a nodos los componentes ejecutables.
● Probar componentes individualmente.
Flujo de trabajo
Implementación de la arquitectura
Una vez que los componentes individuales del sistema se han implementado, es necesario
integrarlos para formar un sistema coherente y funcional.
Implementar un subsistema
En algunos casos, puede ser necesario implementar un subsistema específico antes de completar
todo el sistema
Implementar una clase
Durante la implementación, es crucial realizar pruebas de unidad para asegurarse de que cada
componente, subsistema o clase funciona correctamente de manera individual.
5) Pruebas
Objetivos
● Planificar las pruebas necesarias en cada iteración.
● Diseñar e implementar las pruebas creando los casos y procedimientos de prueba.
● Realizar las pruebas y manejar los resultados de cada una sistemáticamente.
Flujo de trabajo
Planificar pruebas
se identifican los requisitos de prueba y se elabora un plan de pruebas que incluye el alcance de
las pruebas, los recursos necesarios, el cronograma y los criterios de aceptación.
* es un documento formal que describe en detalle cómo se llevarán a cabo las actividades de
prueba en un proyecto de desarrollo de software
* criterios de aceptación: son condiciones específicas que un producto o proyecto debe cumplir
para que se considere satisfactorio y se acepte como completado.
Diseñar pruebas
Un Caso de Prueba es una especificación detallada de una funcionalidad o escenario particular que se va a
probar en el software.
○ Diseñar Casos de Prueba de Regresión: Se utilizan para asegurarse de que los cambios no
hayan afectado de forma negativa la funcionalidad existente.
Implementar pruebas
Una vez diseñados los casos de prueba, se implementan en un entorno de pruebas. Esto implica
configurar el ambiente de prueba, preparar los datos necesarios y asegurarse de que las
herramientas de pruebas estén listas para su ejecución.
se ejecutan las pruebas de integración para verificar que los diferentes componentes del software
se comunicen y funcionen correctamente en conjunto
se llevan a cabo pruebas más amplias para evaluar el sistema en su conjunto y verificar si cumple
con los requisitos y expectativas establecidos.
Evaluar pruebas
Una vez que se han completado las pruebas, se realiza una evaluación exhaustiva de los
resultados. Esto implica analizar los informes de pruebas, registrar y seguir los problemas
encontrados, priorizar y solucionar los errores, y evaluar si se ha cumplido con los criterios de
aceptación establecidos.
Gestión de configuración de software (GCS)
Se denomina GCS a los elementos que componen toda la información producida como parte del proceso
de ingeniería del software.
Objetivos:
Identificar productos/elementos que pueden cambiar (ECS).
Organizar y controlar las modificaciones (controlador de versiones).
Garantizar que el cambio se implementó de forma adecuada.
Auditar los cambios e informar a todo el equipo en cada cambio.
Elementos de Configuración:
Programas de computadora (tanto en forma de código fuente como ejecutable).
Documentos que describen los programas de computadora (tanto técnicos como de usuario).
Datos (contenidos en el programa o externos a él).
Fuentes de cambio
Nuevos negocios o condiciones comerciales que dictan los cambios en los requisitos del producto
o en las normas comerciales.
Nuevas necesidades del cliente que demandan la modificación de los datos producidos,
funcionalidades entregadas por productos o servicios entregados por un sistema.
Reorganización o crecimiento/reducción del negocio que provoca cambios en las prioridades
del proyecto.
Restricciones presupuestarias o de planificación.
Línea base
Una especificación o producto que se ha revisado formalmente y sobre el que se ha llegado a un
acuerdo. A partir de ahí se realizan futuros desarrollos. Puede cambiarse solamente a través de
procedimientos formales de control de cambios.
UML*: es un lenguaje de modelado visual utilizado para representar sistemas de software. UML se utiliza
en el PUD para describir la estructura, el comportamiento y las interacciones entre los diferentes
componentes del sistema de software. UML se compone de diferentes tipos de diagramas, como
diagramas de casos de uso, diagramas de clases, diagramas de secuencia y diagramas de estado.
Métodos Ágiles
Los "Métodos Ágiles" no son una metodología, son una mentalidad y comportamiento guiados por valores
y principios establecidos en el Manifiesto Ágil y se centran en la flexibilidad, la adaptabilidad y la entrega
incremental de software. Ejemplos de métodos ágiles incluyen Scrum, Kanban, Extreme Programming
(XP), entre otros..
Valores
Scrum
Scrum es una metodología ágil de gestión de proyectos que se utiliza comúnmente en el desarrollo de
software y en otros campos donde se requiere un enfoque iterativo e incremental
Se utiliza para gestionar y organizar equipos de desarrollo y se basa en roles, eventos, artefactos y reglas
claras. Scrum se enfoca en la entrega continua de funcionalidades.
Una historia de usuario es una técnica utilizada para expresar los requisitos funcionales desde la
perspectiva del usuario final o del cliente. Se trata de una descripción concisa y fácil de entender de una
característica o funcionalidad que el equipo de desarrollo debe implementar en un producto o sistema de
software. Cada historia de usuario representa un pequeño incremento de valor que el equipo se
compromete a desarrollar durante un sprint, que es un período de tiempo fijo y corto (generalmente de una
a cuatro semanas). Como [tipo de usuario], quiero [acción/demanda], para [objetivo/beneficio].
El ingrediente vital de Scrum es la comunicación. Con el modelo scrum se debe estar comunicado con el
equipo de trabajo en todo momento, para estar al tanto de los sucesos.
Sprint (de dos a cuatro semanas): Ceremonia de SCRUM. Contiene a los demás eventos. Es un
ciclo de trabajo de 2 a 4 semanas, cuyo resultado es un incremento. Este posee un objetivo que
durante el sprint no debe ser modificado.
1. Spring Planning: se realiza al comienzo de cada sprint para establecer los objetivos y entregables
del sprint. Durante este evento, el equipo de Scrum trabaja con el dueño del producto para revisar y
refinar el backlog del producto, y luego selecciona un conjunto de elementos del backlog que
pueden ser completados durante el sprint.El resultado del sprint planning es el sprint backlog.
Sprint backlog: El sprint backlog es una lista de elementos seleccionados del backlog del producto
y se divide en tareas que se asignan a los miembros del equipo.
2. Daily Scrum: Reunión diaria para sincronizar el progreso y discutir cualquier problema que haya
surgido.
3. Sprint review: al final del sprint, el equipo de desarrollo muestra el software funcionando al
propietario del producto y otros interesados, para recibir comentarios.
4. Retrospectiva del sprint: al final de cada sprint, el equipo de desarrollo se centra en áreas a
mejorar.
* Product Backlog: Es una lista de requerimientos ordenados según la importancia en base al criterio del
Product Owner. Contiene el objetivo del producto. Se encuentre presente durante todo el ciclo de vida del
sistema. Siempre se está actualizando.
Gráfico BurnDown (gráfico de trabajo pendiente)
Es una herramienta utilizada en Scrum para visualizar el progreso del equipo en la entrega del producto.
Este gráfico muestra la cantidad de trabajo restante en un eje vertical y el tiempo transcurrido en un eje
horizontal. El gráfico BurnDown permite al equipo identificar posibles retrasos y ajustar el plan de trabajo
para cumplir con los objetivos del proyecto.
Kamba
Consiste en la creación de un tablero con etiquetas, donde se seccionan cada una de las fases de su
desarrollo, además se clasifica de acuerdo a los equipos de trabajo y se les asignan objetivos a corto,
mediano y largo plazo. Destaca el hecho de no tener un orden tal cual, de hecho todas las fases
comienzan a trabajar a la par, no hay tiempos de espera y básicamente su objetivo es que los
desarrolladores y programadores están trabajando todo el tiempo.
Planning Poker
Su propósito es estimar el esfuerzo y duración de las tareas en cada Sprint. El objetivo del planning poker
es obtener una medida de tamaño relativo de todas las historias respecto a sí mismas. En un primer
momento, el modelo inicial consta de 8 cartas donde cada participante consta de un juego de cartas. De
forma individual cada participante estima el esfuerzo que puede demorar una tarea, luego todos muestran
su carta boca arriba y se suma el esfuerzo estima
Calidad
¿Qué es?
Es la conformidad de las expectativas del consumidor/cliente.
Evolución
1. Primero surgió el Control de calidad, que se centra en el producto e intenta reducir la variabilidad.
2. Luego vino el Aseguramiento de la calidad, que se centra en el proceso. Algunas herramientas para
mejorar la calidad son la ISO 9001 (mejora la gestión de la calidad) y la CMMI (mejora los
procesos)
3. Por último el concepto de calidad total, el cual hace referencia a mejorar la cultura en todos los
ámbitos de la organización.
“El trabajo debe ser revisado por el mismo motivo que los lápices necesitan gomas, errar es humano.”
El objetivo principal de estas revisiones es encontrar errores o fallos y documentarlos, no solucionarlos.
La revisión del software es una actividad que nos da garantía sobre la calidad del mismo. El objetivo es:
encontrar Errores durante el proceso antes de que estos se conviertan en fallos/defectos para el cliente.
● Tener en cuenta:
○ Revisar el producto y no a la persona (no en juzgar al desarrollador).
○ Fijar agenda y mantenerla.
○ Limitar el debate (registrar el problema y listo, no debatir para solucionarlo).
○ No intentar solucionar los problemas (la solución se hace en otra etapa posterior).
○ Registrar los resultados de la revisión (para poder planear acciones).
Tener calidad:
● Costos de prevención:
○ Planificación SQA
○ Revisiones técnicas.
○ Capacitación.
○ RRHH.
● Costos de evaluación:
○ Inspecciones del proceso.
○ Pruebas
○ Auditorias
● Costos de solución de los errores encontrados.
No tener calidad
● Resolución de fallos.
● Resolución de quejas.
● Devoluciones
● Soporte en línea (asistencia para brindar soluciones a los usuarios)
● Costos de imágen (pérdida de reputación o imagen de la empresa)
Métricas
¿Qué es?
“Un indicador que proporciona una visión profunda que permite al gestor de proyectos o a los ingenieros de
software ajustar el producto, el proyecto o el proceso para que las cosas salgan mejor”
Las mediciones se realizan durante todo el ciclo de vida. Ej: cantidad de líneas en un método.
¿Para qué?
● Indicar la calidad de un producto.
● Evaluar la productividad de la gente.
● Establecer línea base para la estimación.
● Justificar herramientas o formación adicional.
Tipos de medidas
Directas
Indirectas
Se mide de forma indirecta ya que no tiene una unidad de medición como tal.
● Usabilidad
● Mantenibilidad
● Curva de aprendizaje
● Escalabilidad
Actividades
Formulación
Se establecen el objetivo, la pregunta y la métrica. Por ejemplo, el objetivo podría ser mejorar la calidad
del código, la pregunta podría ser "¿Cuál es el nivel de complejidad del código?" y la métrica podría ser
"Número de líneas de código por método".
Análisis de los datos: Cálculo de las métricas utilizando los datos recolectados.
Interpretación
Una vez que se han calculado las métricas, es importante interpretar/evaluar los resultados obtenidos. La
interpretación puede involucrar comparar los resultados con umbrales predefinidos, realizar análisis de
tendencias o identificar patrones relevantes.
Retroalimentación
Implica tomar acciones basadas en los resultados e interpretaciones obtenidas. Si las métricas revelan áreas
problemáticas o oportunidades de mejora, se deben tomar medidas adecuadas.
Clasificación
Métricas de Productividad
Métricas de Calidad
Estas métricas se utilizan para identificar defectos, errores y problemas en el software, y para evaluar la
satisfacción del usuario final.
Métricas Técnicas
Las métricas técnicas se centran en evaluar aspectos técnicos del software, como su diseño, estructura y
mantenibilidad. Estas métricas se utilizan para medir y evaluar la calidad interna del software y su capacidad
para ser modificado y mantenido a largo plazo.
Patrones de diseño
Los patrones de diseño son soluciones a problemas que ocurren con frecuencia en el diseño de software. Son
como planos prefabricados que se pueden personalizar para resolver un problema de diseño recurrente
en el código. Nos ayudan a solucionar problemas comunes hablando un lenguaje habitual entre los
desarrolladores.
- Los patrones estructurales tratan la manera en que los objetos se conectan con otros objetos, para
asegurar que los cambios del sistema no requieren cambiar esas conexiones.
- Los patrones de comportamiento se encargan de una comunicación efectiva y la asignación
de responsabilidades entre objetos.