La ingeniería del software es el estudio de las técnicas
Y de la teoría que subyacen al desarrollo de software
De alta calidad.Objetivos
Resolver el problema correcto
◦ Comprender los detalles del problema
◦ Analizar el problema y desarrollar un conjunto completo y
Preciso de requisitos
Entregar una solución a tiempo y dentro del
Presupuesto
Entregar una solución de alta calidad que satisfaga a
Cliente y usuarios.Metodología Software
◦ Metodología: “conjunto de métodos, reglas y postulados utilizados por
Una disciplina”
◦ En Software hace referencia a la organización del propio proceso de
Desarrollo
Existen numerosas metodologías, y casi todas tienen en común:
◦ División en etapas: cada una compuesta de flujos de trabajos
◦ Flujos de trabajo: compuesto por actividades específicas
◦ Personal: persona que realiza una actividad
◦ Actividades: tareas en las que intervienen personal y artefactos
◦ Artefactos: información generada por una actividad (documentos,
Diagramas, e incluso un sistema)
Un modelo del ciclo de desarrollo define el proceso
Que hay que seguir durante el desarrollo
Todos los modelos del ciclo de desarrollo contemplan
Las cuestiones fundamentales del análisis, el diseño, la
Implementación y la evaluación
◦ El proceso de análisis implica la especificación del problema
◦ El proceso de diseño implica la especificación de una solución
◦ Implementación: implica transformar el diseño en un sistema
Funcional
◦ Evaluación: implica verificar que el sistema creado se ajusta a
Las especificaciones descritas durante el proceso de análisis.Flujos de trabajo en el DSOO
Captura de requisitos
Análisis
Arquitectura
Diseño
Implementación
Prueba
Implantación
(Mantenimiento)Análisis OO
◦ Investigación del problema
◦ Encontrar y describir los
Objetos (o conceptos) en
El dominio del problema
◦ Ejemplo de una biblioteca:
Libro, socio,…
Diseño OO:
◦ Solución del problema
◦ Definición de los objetos
Software y su colaboración
◦ Los diseños se
Implementan en un
Lenguaje
◦ Ejemplo: Objeto Libro,
Atributo título, método
ObtenerCapitulo.Es el proceso de planificar cómo resolver un problema
Mediante el software El diseño contiene información suficiente para que el
Equipo de desarrollo implemente la solución. Es el
Anteproyecto de la solución software
¿Qué se considera un buen diseño?
◦ Fácil de entender
◦ Fácil de cambiar → flexible
◦ Satisface los requisitosEn general, los modelos se construyen para averiguar si algo
Funcionará.
¿Por qué construir modelos de software?
¿Por qué se deben construir diseños comprensibles antes de
Codificar?
Los modelos permiten:
◦ Visualizar sistemas nuevos o ya existentes
◦
Diseños de planes de evaluación
Comunicar decisiones a los intervinientes del proyecto
◦ Documentar las decisiones realizadas en los flujo de trabajo
◦ Especificar la estructura y el comportamiento de los elementos de
Un sistema
◦ Utilizar una plantilla para construir la solución software.(UML)
Notación gráfica para dibujar diagramas de conceptos
Del software.
Fowler describe tres niveles: conceptual, especificación
E implementación.
Los diagramas de especificación e implementación
Tienen una conexión fuerte con el código fuente. Poca
Ambigüedad.
Los diagramas en el nivel conceptual no están tan
Fuertemente relacionados con el código. Los diagramas son muy útiles para comunicarse con los
Demás y resolver los problemas de diseño.
Recargar un diagrama con cantidades de adornos es
Posible pero contraproducente.
Mantén tus diagramas sencillos y claros.
Los diagramas no son código fuente y no deben ser
Considerados como el lugar para declarar cualquier
Método, variable o relación.UML define una notación que se expresa como diagramas y
Sirven para representar modelos/subsistemas o partes de ellos
El 80 por ciento de la mayoría de los problemas pueden
Modelarse usando alrededor del 20 por ciento de UML
UML es una herramienta, no un fin en sí mismo. Ayuda a pensar
Un los diseños y a comunicarlos.
Refinamiento de los diagramas de manera iterativaHacer todo en iteraciones cortas (ej. Ciclos de 2 semanas), cada
Uno comienza con un plan y finaliza con una entrega
La exploración inicial:
◦ No acaba en código.
◦ Responsable de los requisitos y las prioridades.
◦ Alcance del sistema.
◦ Casos de uso.
Estimar las carácterísticas:
◦ Estimamos cada CU o historia de usuario. Tener en cuenta la estimación de historias
Ya implementadas, en otro caso, usar los días de programación perfectos.
Sondeos:
◦ Calibrar nuestras estimaciones. Velocidad inicial del equipo.Planificación
Utilizar la velocidad actual para suponer qué historias se completarán en
Cada iteración,
Planificar entregas:
Comenzamos con la 1ª entrega. 6 iteraciones por la velocidad (25) hacen 150
Puntos de historias.
El cliente elige las más importantes para su negocio.
Planificar iteraciones:
El primer día de cada iteración se puede crear un plan.
Trocear las historias en tareas (4-10 hh). El cliente nos ayuda a realizar esta
División contándonos los detalles completos de la historia.
Cada desarrollador se hace un presupuesto de tareas.
A medio camino:
Evaluar lo que se lleva hecho y modificaremos la planificación con el cliente.
Realimentación de velocidad:
Al final de cada ciclo recalculamos nuestra velocidad, de manera que se ajusten el
Número de puntos de historia para la siguiente iteración.