Ingeniería de Software

Slides:



Advertisements
Presentaciones similares
EL PROCESO DE DESARROLLO DEL SOFTWARE
Advertisements

Ciclo de vida de desarrollo de software
MODELOS ORIENTADOS A OBJETOS
Fundamentos de Diseño de Software INFT.1
PROCESO Y MODELOS EN LA INGENIERIA DE SOFTWARE
Metodologías Ágiles Patricio Letelier
Guía metodológica para la gestión de proyectos de software en PyMEs que no son fábricas de software por medio de Metodologías ágiles.
METODOLOGÍAS ÁGILES “PROCESO UNIFICADO ÁGIL (AUP)
METODOLOGIAS AGILES DE CONSTRUCCION DE SOFWARE
Guía metodológica para la gestión de proyectos de software en PyMEs que no son fábricas de software por medio de Metodologías ágiles.
Otros métodos de Diseño de Sistemas...
Análisis y Diseño de Aplicaciones Ingeniería de Software
Ingeniería del Software
Metodologías Ágiles y XP
HERRAMIENTAS CASE.
Laura Patricia Pinto Prieto Ingeniera de sistemas.
Análisis y Diseño de un Software
Metodologías Ágiles.
Ingeniería de Software
Ingeniería de Software Orientado a Objetos
¿Cómo surge? Metodologías ágiles de desarrollo de software Se entiende como Desarrollo ágil de Software a un paradigma de Desarrollo de Software basado.
Metodología La metodología para el desarrollo de software es un modo sistemático de realizar, gestionar y administrar un proyecto para llevarlo a cabo.
Ciclo de Vida del Software Paradigmas de Desarrollo
Gestión de Proyectos Informáticos Sesión N° 5 Ciclo de Vida de un Proyecto Roberto Jijena I.
Tema 1: Introducción al análisis y diseño de aplicaciones software
Ingeniería de Software: Metodologías Agustín J. González ElO329: Diseño y Programación Orientados a Objeto Adaptado de:
Ingeniería del Software
Ingeniería de Software: Parte 2 Agustín J. González ElO329: Diseño y Programación Orientados a Objeto Adaptado de:
Ingeniería de Requerimiento
Diseño: Fundamento y Documentación ISF5501 Ingeniería de Software Semana 13/2.
Ximena Romano – Doris Correa
Tema 1: Introducción a la Ingeniería de Software
INGENIERÍA DEL SOFTWARE
Importancia en la efectividad del:
INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWARE
VISIÓN GENERAL DE LA IS Con independencia del modelo de proceso hay tres fases genéricas: Fase de definición Fase de desarrollo Fase de mantenimiento Cada.
“condición que necesita el usuario para resolver un problema o conseguir un objetivo determinado”. Los requisitos de un sistema son los aspectos que el.
Análisis y Diseño de Aplicaciones
INGENIERIA DE SOFTWARE
Ingeniería de Software
INGENIERÍA DEL SOFTWARE GESTIÓN DE PROYECTOS
TIPOS DE AUDITORÍAS EN SISTEMAS DE INFORMACIÓN
UML.
METODOLOGÍAS ÁGILES “PROCESO UNIFICADO ÁGIL (AUP)
LA MEJORA DE LOS PROCESOS
 Capacidad para adaptar el curso del desarrollo a la evolución de los requisitos y a las circunstancias del entorno de los proyectos.
PROCESOS DE DESARROLLO DE SOFTWARE
Actividades en el Proceso de desarrollo de Software
Modelo Prescriptivos de proceso
Ingeniería del Software I
Estructurar tus ideas para hacerlas realidad
Ciclo de Vida del Software
Ingeniería en Informática F UNDAMENTOS DE C OMPUTACIÓN B ACHILLERATO EN I NGENIERÍA I NFORMÁTICA L IC. C ARLOS H. G UTIÉRREZ L EÓN.
INGENIERIA DE SOFTWARE
Desarrollar un buen software depende de un gran número de actividades y etapas, donde el impacto de elegir la metodología para un equipo en un determinado.
METODOLOGÍADE DESARROLLO ÁGIL DSDM - FDD
CONCEPTO DE CICLO DE VIDA 1 En los departamentos de Sistemas se debe definir un marco de referencia común que debe ser:  Pueda ser empleado por todos.
Fundamentos de Computación
Las fases del ciclo de la vida de desarrollo de sistemas
NZ/EA/abril Introducción Julio NZ/EA/abril ¿ Que es la IS ? Disciplina que trata los aspectos concernientes al desarrollo de sistemas.
RAPID APPLICATION DEVELOPMENT RAD. Proceso de RAD Involucrar en todos los aspectos al usuario en el desarrollo del sistema Uso continuo y repetitivo de.
Software de Comunicaciones
Modelo de procesos de software
Universidad “Gran Mariscal de Ayacucho” Ingeniería de Sistemas Dirección de Operaciones I Participantes: Montes, Kimberlys Mosquera, Johanbert Suarez,
Verificación y Validación del Software
VERIFICACIÓN Y VALIDACIÓN DE SISTEMAS 3.10 Fase de manejo de requerimientos 4.1 Modelado de pruebas en UML Ponente: ing. Alejandro tapia vazquez.
Entregables del Proyecto
Metodologías de Desarrollo Ágil
Desarrollo iterativo e incremental
Transcripción de la presentación:

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.

Ingeniería de Software Desarrollo basado en Reuso

Ingeniería de Software Desarrollo basado en Reuso con Espiral

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

Ingeniería de Software Transformaciones Formales

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

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.

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.

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

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

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

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

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”.

Ingeniería de Software Metodologías Ágiles

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

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)

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

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

Ingeniería de Software Metodologías Ágiles Crystal Methodologies, Alistarir Cockburn, www.crystalmethodologies.org SCRUM, Ken Schwaber & Jeff Sutherland, www.controlchaos.com DSDM (Dynamic Systems Development Method), www.dsdm.org Lean Programming, Mary Poppendieck, www.poppendieck.com FDD (Feature-Driven Development), Peter Coad & Jeff De Luca, www.nebulon.com/fdd, www.coad.com/peter/#fdd Extreme Programming, Kent Beck www.extremeprogramming.org, www.xprogramming.com Adaptative Software Development, Jim Highsmith www.adaptivesd.com