La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Ingeniería de Software

Presentaciones similares


Presentación del tema: "Ingeniería de Software"— Transcripción de la presentación:

1 Ingeniería de Software
Desarrollo basado en Reuso Basado en la reutilización sistemática, los sistemas se integran con componentes existentes o con sistemas comerciales Etapas del proceso Análisis de componentes Modificación de requisitos Diseño del sistema con reutilización Desarrollo e integración Este enfoque está cobrando cada vez más importancia pero todavía hay una experiencia limitada con él.

2 Ingeniería de Software
Desarrollo basado en Reuso

3 Ingeniería de Software
Desarrollo basado en Reuso con Espiral

4 Ingeniería de Software
Transformaciones Formales Se basa en la transformación de una especificación “matemática” a un programa ejecutable Se basan en la necesidad de razonar formalmente sobre las aplicaciones desarrolladas, y ser capaces no sólo de verificar que satisfacen las especificaciones del usuario, sino de poder demostrar ciertas propiedades sobre ellas Las transformaciones pueden demostrarse y el programa final es conforme con su especificación

5 Ingeniería de Software
Transformaciones Formales

6 Ingeniería de Software
Transformaciones Formales – Notación Z Z es una notación formal basada en la teoría de conjuntos de Zermelo Utiliza los conceptos básicos de esa teoría (conjuntos, relaciones, funciones y variables) para describir sistemas y aplicaciones Z define los denominados esquemas, que permiten la construcción estructurada y modular de especificaciones software. Los esquemas sirven para modelar los aspectos tanto estáticos como dinámicos de un sistema

7 Ingeniería de Software
Transformaciones Formales – Notación Z Aspectos estáticos Los estados que puede alcanzar el sistema. Los invariantes que se conservan en todas las transiciones entre estados. Aspectos dinámicos Las posibles operaciones que se pueden realizar sobre él. Las relaciones entre las entradas y salidas del sistema. Los cambios de estado del sistema, cuándo y cómo se producen.

8 Ingeniería de Software
Transformaciones Formales – Notación Z Ejemplo: el siguiente esquema describe una estructura de datos que es una secuencia de números naturales de longitud menor que 10 La parte superior es la de declaraciones, en donde se expresa el nombre de las variables y sus tipos La parte inferior expresa, de forma declarativa, las relaciones entre las variables que forman parte del esquema.

9 Ingeniería de Software
Transformaciones Formales Problemas Se necesitan habilidades y el entrenamiento especializados para aplicar la técnica Es difícil especificar formalmente algunos aspectos del sistema tales como la interfaz de usuario Aplicabilidad Sistemas críticos donde la seguridad o la fiabilidad debe garantizarse antes de que el sistema se ponga en explotación

10 Ingeniería de Software
Metodologías Ágiles En los 80 y principios de los 90, existía un acuerdo generalizado en que la mejor forma de desarrollar buen software era a través de: Cuidadosa planificación del proyecto Formalizar el aseguramiento de calidad Métodos de análisis y diseño soportados por herramientas CASE Proceso de desarrollo controlado y riguroso

11 Ingeniería de Software
Metodologías Ágiles Procedía de la experiencia de desarrollo de sistemas software grandes, de larga vida Muchas veces estos sistemas eran críticos Grandes equipos de desarrollo, a veces geográficamente dispersos, a veces trabajando incluso para empresas distintas En estos sistemas era necesario una sobrecarga en planificación, diseño y documentación del sistema

12 Ingeniería de Software
Metodologías Ágiles ¿Qué ocurre cuando se aplican estos métodos heavyweight a una aplicación de gestión de tamaño medio o pequeño? La sobrecarga de trabajo (requisitos, diseño, documentación) domina el proceso de desarrollo Se dedica más tiempo a cómo el sistema será desarrollado que a programación y prueba Cada vez que cambia un requisito hay que hacer mucho trabajo de rediseño y redocumentación Insatisfacción del cliente y del equipo de desarrollo

13 Ingeniería de Software
Metodologías Ágiles A finales de los 90, aparecen “métodos ágiles” (lightweight) como extreme programming (Beck2000) Como reacción a los procesos muy burocratizados Atención al software más que al diseño y la documentación Enfoque basado en el desarrollo y la entrega de incrementos de funcionalidad muy limitada. Iterativos e incrementales Mejora constante del código, implicación del usuario en el equipo de desarrollo y la programación “sin complejos”.

14 Ingeniería de Software
Metodologías Ágiles

15 Ingeniería de Software
Metodologías Ágiles Las Metodologías Ágiles (MAs) valoran: Al individuo y las interacciones en el equipo de desarrollo más que a las actividades y las herramientas Desarrollar software que funciona más que conseguir una buena documentación  Minimalismo respecto del modelado y la documentación del sistema La colaboración con el cliente más que la negociación de un contrato Responder a los cambios más que seguir estrictamente una planificación

16 Ingeniería de Software
Metodologías Ágiles ¿Cuándo son útiles? (Sommerville2004) Útiles para aplicaciones de gestión y productos software de tamaño pequeño o medio con requisitos que cambian rápidamente durante el proceso de desarrollo No son útiles en desarrollo de software de gran escala con equipos de desarrollo en lugares distintos y con interacciones complejas con otros sistemas software y hardware. Tampoco son útiles en sistemas críticos en los que es necesario un análisis detallado de los requisitos del sistema para comprender las implicaciones de seguridad (security safety)

17 Ingeniería de Software
Metodologías Ágiles Metodología Ágil Metodología Tradicional Pocos Artefactos. El modelado es prescindible, modelos desechables. Más Artefactos. El modelado es esencial, mantenimiento de modelos Pocos Roles, más genéricos y flexibles Más Roles, más específicos No existe un contrato tradicional, debe ser bastante flexible Existe un contrato prefijado Cliente es parte del equipo de desarrollo (además in-situ) El cliente interactúa con el equipo de desarrollo mediante reuniones

18 Ingeniería de Software
Metodología Ágil Metodología Tradicional Orientada a proyectos pequeños. Corta duración (o entregas frecuentes), equipos pequeños (< 10 integrantes) y trabajando en el mismo sitio Aplicables a proyectos de cualquier tamaño, pero suelen ser especialmente efectivas/usadas en proyectos grandes y con equipos posiblemente dispersos La arquitectura se va definiendo y mejorando a lo largo del proyecto Se promueve que la arquitectura se defina tempranamente en el proyecto Énfasis en los aspectos humanos: el individuo y el trabajo en equipo Énfasis en la definición del proceso: roles, actividades y artefactos Se esperan cambios durante el proyecto Se espera que no ocurran cambios de gran impacto durante el proyecto

19 Ingeniería de Software
Metodologías Ágiles Crystal Methodologies, Alistarir Cockburn, SCRUM, Ken Schwaber & Jeff Sutherland, DSDM (Dynamic Systems Development Method), Lean Programming, Mary Poppendieck, FDD (Feature-Driven Development), Peter Coad & Jeff De Luca, Extreme Programming, Kent Beck Adaptative Software Development, Jim Highsmith


Descargar ppt "Ingeniería de Software"

Presentaciones similares


Anuncios Google