Ingeniería de Software – Ingeniería de Sistemas1 Ingeniería de software.

45
Ingeniería de Software – Ingeniería de Sistemas 1 ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS Ingeniería de software Sesión 1 :

Transcript of Ingeniería de Software – Ingeniería de Sistemas1 Ingeniería de software.

Page 1: Ingeniería de Software – Ingeniería de Sistemas1 Ingeniería de software.

Ingeniería de Software – Ingeniería de Sistemas1

ESCUELA PROFESIONAL DE

INGENIERIA DE SISTEMAS

Ingeniería de softwareSesión 1 :

Page 2: Ingeniería de Software – Ingeniería de Sistemas1 Ingeniería de software.

2 Ingeniería de Software – Ingeniería de Sistemas

Temario ...

Presentación de Silabo

Prueba de Entrada

Introducción

Metodologías

Mensaje Final

Preguntas

Page 3: Ingeniería de Software – Ingeniería de Sistemas1 Ingeniería de software.

3 Ingeniería de Software – Ingeniería de Sistemas

Presentación del SilaboPRIMERA UNIDAD Lunes Jueves

01 LA INGENIERIA DE SOFTWARE 25.Ago

28.Ago

02 PROCESO UNIFICADO DE DESARROLLO DE SOFTWARE 01.Set 04.Set

03 PROCESO DE SOFTWARE Y GESTION DE PROYECTOS DE SOFWARE

08.Set 11.Set

04 REQUERIMIENTOS 15.Set 18.Set

05 CASOS DE USO 22.Set 25.Set

06 INTRODUCCION A LA ORIENTACION A OBJETOS 29.Set 02.Oct

SEGUNDA UNIDAD Lunes Jueves

07 DOCUMENTACION DIAGRAMAS DE MODELOS DE DOMINIO

06.Oct 09.Oct

08 COMPORTAMIENTOS DE OBJETOS 13. .Oct

16.oCT

09 AQUITECTURA DE HW. Y SW. 20. .Oct

23.Oct

10 DIAGRAMA E CLASE Y DIAGRAMAS DE COLABORACION

27. .Oct

30.Oct

11 EXAMEN PARCIAL 03.Nov 06.Nov

Page 4: Ingeniería de Software – Ingeniería de Sistemas1 Ingeniería de software.

4 Ingeniería de Software – Ingeniería de Sistemas

Presentación del SilaboTERCERA UNIDAD Lunes Jueves

12 MODELO DE DISEÑO 10.Nov

13.Nov

13 PRUEBAS 17.Nov

20.Nov

14 METRICAS 24.Nov

27.Nov

15 SUSTENTACION DEL PROYECTO 01.Dic 04.Dic

16 EXAMEN FINAL 08.Dic 11.Dic

17 EXAMEN DE REZAGADOS Y SUSTITUTORIO 15.Dic 18.DicREFERENCIA BIBLIOGRAFICA

005.1 P93PRESSMAN, Roger. Ingeniería de Software. 6ta Edición. México D.F.: McGraw-Hill, 2010. 777p. ISBN: 9786071503145

005.133 J88

JOYANES, Luis. Programación en C ++. Madrid.: McGraw-Hill Interamericana, 2006. 847p. ISBN: 844814645X

005.133 J99

JOYANES, Luis. Programación en C, C ++, Java y UML. México D.F.: McGraw-Hill, 2010. 930p. ISBN: 9789701069493

Page 5: Ingeniería de Software – Ingeniería de Sistemas1 Ingeniería de software.

5 Ingeniería de Software – Ingeniería de Sistemas

Prueba de Entrada

Page 6: Ingeniería de Software – Ingeniería de Sistemas1 Ingeniería de software.

Ingeniería de Software – Ingeniería de Sistemas6

Introducción ...

Page 7: Ingeniería de Software – Ingeniería de Sistemas1 Ingeniería de software.

7 Ingeniería de Software – Ingeniería de Sistemas

IngenieríaConjunto de conocimientos y técnicas científicas

Conjunto de instrucciones que permite al Hardware desempeñar trabajo útil.

Software

Page 8: Ingeniería de Software – Ingeniería de Sistemas1 Ingeniería de software.

8 Ingeniería de Software – Ingeniería de Sistemas

¿Qué es Ingeniería de Software?

Es una disciplina o área de la informática o ciencia de la computación, que ofrece conocimientos, técnicas y métodos para desarrollar y mantener software de calidad que resuelva problemas de todo tipo.

Page 9: Ingeniería de Software – Ingeniería de Sistemas1 Ingeniería de software.

9 Ingeniería de Software – Ingeniería de Sistemas

¿Qué es Software de Calidad?

Es la aptitud de un producto o servicio para satisfacer la necesidades del usuario.

• Funcionalidad• Fiabilidad• Usabilidad• Eficiencia• Mantenibilidad• Portabilidad

Page 10: Ingeniería de Software – Ingeniería de Sistemas1 Ingeniería de software.

10 Ingeniería de Software – Ingeniería de Sistemas

Calidad de Producto – ISO 9126 Características

Page 11: Ingeniería de Software – Ingeniería de Sistemas1 Ingeniería de software.

11 Ingeniería de Software – Ingeniería de Sistemas

• La Ing.Software es una tecnología multicapa– Enfoque de Calidad– Proceso– Métodos– Herramientas

Capas de la Ingeniería de Software

Page 12: Ingeniería de Software – Ingeniería de Sistemas1 Ingeniería de software.

12 Ingeniería de Software – Ingeniería de Sistemas

PROCESOS Es la unión que mantiene juntas las capas de

tecnología y que permite un desarrollo racional y oportuno de la ingeniería de software.

Asegurando un Producto Excelente

Capas de la Ingeniería de Software

Page 13: Ingeniería de Software – Ingeniería de Sistemas1 Ingeniería de software.

13 Ingeniería de Software – Ingeniería de Sistemas

METODOS Indican como construir técnicamente el software Abarcan una gran gama de tareas que incluyen análisis de

requisitos, diseño, construcción de programas, pruebas y mantenimiento.

HERRAMIENTAS Uso de tecnologías para asistir el desarrollo del software y

asegurar el cumplimiento de los objetivos del software Proporcionan un enfoque automático / semiautomático

para el proceso y para las metodologías.

Capas de la Ingeniería de Software

Page 14: Ingeniería de Software – Ingeniería de Sistemas1 Ingeniería de software.

14 Ingeniería de Software – Ingeniería de Sistemas

El estado de desarrollo de software

La mayoría de los proyectos de desarrollo de software fallan Qué significa fallar?

No cumplir los cronogramas No cumplir el presupuesto No satisfacer la funcionalidad requerida Demasiados defectos una vez en producción Demasiado frágil a los cambios...

Page 15: Ingeniería de Software – Ingeniería de Sistemas1 Ingeniería de software.

15 Ingeniería de Software – Ingeniería de Sistemas

¿Qué tipo de Problemas Surgen?

Retrasos en los proyectos. Falta de calidad. Incumplimiento con la funcionalidad acordada. Desarrolladores innovadores. Exceso de requerimientos y funcionalidad. Falta de planificación. Motivación débil, Falta de participación. No existe gestión de riesgos.

ALLSOFT, S.A.. de C.V., 2002

Page 16: Ingeniería de Software – Ingeniería de Sistemas1 Ingeniería de software.

16 Ingeniería de Software – Ingeniería de Sistemas

La gestión tradicional en la ing. de software

Page 17: Ingeniería de Software – Ingeniería de Sistemas1 Ingeniería de software.

17 Ingeniería de Software – Ingeniería de Sistemas

Planificar y Evaluar Proyectos ...

¿Podré cumplir con los plazos?¿Estaré dentro de lo presupuestado?¿El cliente quedará satisfecho?

Las Metodologías pueden ser la ayuda que necesitamos, si podemos usarlas correctamente !!

Page 18: Ingeniería de Software – Ingeniería de Sistemas1 Ingeniería de software.

Ingeniería de Software – Ingeniería de Sistemas18

Metodologías ...

Page 19: Ingeniería de Software – Ingeniería de Sistemas1 Ingeniería de software.

19 Ingeniería de Software – Ingeniería de Sistemas

¿Qué es una Metodología ...

Las metodologías imponen un proceso disciplinado sobre el

desarrollo de software con el fin de hacerlo más predecible y

eficiente.

Page 20: Ingeniería de Software – Ingeniería de Sistemas1 Ingeniería de software.

20 Ingeniería de Software – Ingeniería de Sistemas

Metodologías ...

Metodología Monumental

Existen hace mucho tiempo, no han sido exitosas porque son muy burócratas, se han orientado al documento más

que a los resultados.

Page 21: Ingeniería de Software – Ingeniería de Sistemas1 Ingeniería de software.

21 Ingeniería de Software – Ingeniería de Sistemas

Es necesario establecer un enfoque disciplinado y sistemático para desarrollar un proyecto de software.

“Conjunto de filosofías, fases, procedimientos, reglas, técnicas, herramientas, documentación y aspectos de formación para los desarrolladores de sistemas de información.” - Maddison 1983

“Conjunto de procedimientos, técnicas, herramientas y un soporte documental que ayuda a los desarrolladores a realizar nuevo software.”

Las Metodologías nos describen:

Cómo se debe dividir un proyecto en etapas.

Qué tareas se llevan a cabo en cada una

Qué salidas se producen y cuándo

Qué restricciones se aplican

Qué herramientas se van a utilizar

Cómo se gestiona y controla un proyecto

Metodologías ...

Page 22: Ingeniería de Software – Ingeniería de Sistemas1 Ingeniería de software.

22 Ingeniería de Software – Ingeniería de Sistemas

Modelos Convencionales o Tradicionales

CascadaIncrementalPrototipado EvolutivoEspiral

Modelos de Desarrollo AGILES

Clasificación de las Metologías según el Modelo de Proceso

Page 23: Ingeniería de Software – Ingeniería de Sistemas1 Ingeniería de software.

23 Ingeniería de Software – Ingeniería de Sistemas

Modelo lineal o Cascada

El modelo lineal presenta una estructura secuencial (de ahí el nombre de Modelo en cascada)

Formada por seis fases o etapas: Definición de Requerimientos Análisis y Diseño Implementación Prueba Mantenimiento

El desarrollo de las fases, se produce de manera secuencial. El Modelo en cascada no permite retroceder, por lo que se

hace estrictamente necesario que al final de cada fase el analista de sistemas verifique y valide todo el trabajo realizado.

Page 24: Ingeniería de Software – Ingeniería de Sistemas1 Ingeniería de software.

24 Ingeniería de Software – Ingeniería de Sistemas

Modelo de Cascada (gráfica)

Definición de Requerimientos

Análisis y Diseñoy del Sistema

Implementación yPrueba de unidades

Integración y Prueba del Sistema

Operación yMantenimiento

Page 25: Ingeniería de Software – Ingeniería de Sistemas1 Ingeniería de software.

25 Ingeniería de Software – Ingeniería de Sistemas

Modelo incremental

El modelo incremental es una evolución del modelo de cascada; viene a suplir el problema de no poder retroceder en las fases de desarrollo del software.

Comienza con el análisis de los requisitos, tras el cual se prepara un primer diseño.

Este modelo ofrece la posibilidad de comenzar un diseño, arquitectura, estructura, etc del software, que de no convencer al cliente (o al propio programador) es rechazado y se comienza con una segunda iteración (o un segundo diseño), sin necesidad de realizar un nuevo análisis de requisitos.

Pueden realizarse tantas iteraciones como sean necesarias.

Page 26: Ingeniería de Software – Ingeniería de Sistemas1 Ingeniería de software.

26 Ingeniería de Software – Ingeniería de Sistemas

Modelo incremental

Análisis de Requerimientos

VersiónInicial

VersiónFinal

VersionesIntermedias

Análisis y Diseño

Desarrollo

Validación

ActividadesConcurrentes

Page 27: Ingeniería de Software – Ingeniería de Sistemas1 Ingeniería de software.

27 Ingeniería de Software – Ingeniería de Sistemas

Modelo de construcción de prototipos

Este modelo no secuencial, basado en la construcción de simulaciones o modelos ejecutables de aplicaciones más extensos

Persigue un objetivo principal: la participación directa del cliente en la construcción del software requerido.

Las fases son similares a las del modelo en cascada. El diseño rápido del prototipo se mostrará al cliente para que evalúe el

trabajo realizado. El prototipo es una versión reducida del programa completo. Tras

recoger los requisitos tanto del cliente como del sistema, se comienza con el diseño rápido del prototipo;

El diseño completo obedece al previo diseño de pequeños prototipos específicos para funciones individuales. Más tarde, estos diseños serán unidos en uno sólo.

Después, se procede a la construcción del mismo.

Page 28: Ingeniería de Software – Ingeniería de Sistemas1 Ingeniería de software.

28 Ingeniería de Software – Ingeniería de Sistemas

Modelo de construcción de prototipos

En Ingeniería de software la construcción de prototipos pertenece a los modelos de desarrollo evolutivo, El prototipo debe ser construido en poco tiempo, usando los programas adecuados y no se debe utilizar mucho dinero pues a partir de que este sea aprobado es que el desarrollador puede iniciar el verdadero desarrollo del software.

Page 29: Ingeniería de Software – Ingeniería de Sistemas1 Ingeniería de software.

29 Ingeniería de Software – Ingeniería de Sistemas

Modelo espiral

Este modelo, también no secuencial, es algo más complejo que los anteriores, aunque incluye un elemento muy útil e importante en el desarrollo del software: análisis de riesgos.

El modelo en espiral concreta cuatro fases:Definición de ObjetivosEvaluación y reducción de riesgosDesarrollo y ValidaciónPlanificación

Si ésta última fase es afirmativa, el modelo continúa con la estructura del Ciclo de vida Clásico. Si el cliente no está satisfecho con el resultado, se cubre otra banda de la espiral y se vuelve a la primera fase (de planificación).

Page 30: Ingeniería de Software – Ingeniería de Sistemas1 Ingeniería de software.

30 Ingeniería de Software – Ingeniería de Sistemas

Modelo de Proceso de Espiral

Definición de objetivosAnálisis de riesgos

Análisis deRiesgos

Análisis deRiesgos

Análisis deRiesgos

Análisis de

Riesgos

Planificación Desarrollo y Pruebas

PrototipoOperacionalPrototipo

3Prototipo2Proto

tipo 3

Plan de requerimientosPlan del ciclo de vida

REVISIÓN

Plan de Desarrollo

Plan de Integracióny Prueba

Concepto deOperación

Simulaciones, modelos y benchmarks

Requerimientos de

SWValidación deRequerimientos

Diseño

Servicio

Prueba deAceptación

Prueba deIntegración

Prueba deUnidades

Codificación

DiseñoDetallado

AnalisisProducto

Page 31: Ingeniería de Software – Ingeniería de Sistemas1 Ingeniería de software.

31 Ingeniería de Software – Ingeniería de Sistemas

Metodologías ...

Son la justa medida entre “ningún proceso” y “demasiado proceso”, proporcionando simplemente “suficiente

proceso” para que el esfuerzo valga la pena !!!

Metodología Ágil

Page 32: Ingeniería de Software – Ingeniería de Sistemas1 Ingeniería de software.

32 Ingeniería de Software – Ingeniería de Sistemas

Modelos Tradicionales vs Agiles

Las Metodologías Tradicionales se centran especialmente el control del proceso, mediante un rigorosa definición de roles, actividades, artefactos y herramientas y notaciones para el modelado y documentación detallada. Muy efectivas y necesarias para proyectos grandes.

Las Metodologías Agiles dan mayor prioridad al individuo, a la colaboración con el cliente y al desarrollo incremental del software con interacciones muy cortas.

Metodología Ágil Metodología TradicionalPreparados para el cambio durante el proyecto Cierta resistencia al cambioPocos artefactos Más artefactosPocos roles Más rolesNo existe un contrato tradicional o al menos es bastante flexible

Existe un contrato prefijado

El cliente es parte del equipo de desarrollo (además in-situ)

El cliente interactúa con el equipo de desarrollo mediante reuniones

Grupos pequeños (< 10 integrantes) y trabajando en el mismo sitio

Grupos grandes

Menos énfasis en la arquitectura La arquitectura es esencial

Page 33: Ingeniería de Software – Ingeniería de Sistemas1 Ingeniería de software.

33 Ingeniería de Software – Ingeniería de Sistemas

Costo de los Cambio en la Costrucción de SW

A medida que avanza el tiempo, el costo es exponencial en el caso de la construcción mediante una metodología tradicional a diferencia de la metodología tradicional.

Page 34: Ingeniería de Software – Ingeniería de Sistemas1 Ingeniería de software.

34 Ingeniería de Software – Ingeniería de Sistemas

Principios de la Metología Agil

Satisfacer al cliente a través de tempranos y continuos entregables Abrazar el cambio, ya que los requisitos cambian todo el tiempo Entregar con frecuencia software que funcione, de dos semanas a un par de

meses Trabajar juntos diariamente en el proyecto tanto las personas del negocio

como los desarrolladores. El método mas eficiente y eficaz para transmitir información a los

integrantes de un equipo de desarrollo, es conversación cara a cara La medida principal de avance es el software que funciona Construir proyectos alrededor de individuos motivados Asumir simplicidad Promover el desarrollo sostenible

Page 35: Ingeniería de Software – Ingeniería de Sistemas1 Ingeniería de software.

35 Ingeniería de Software – Ingeniería de Sistemas

¿Cuando un método es ágil?

El desarrollo de software es

Incremental liberaciones pequeñas y ciclos rápidos.

Cooperativo clientes y desarrolladores trabajando juntos.

Simple y Directo el método es fácil de aprender y modificar.

Adaptativo es posible realizar cambios de último momento.

Page 36: Ingeniería de Software – Ingeniería de Sistemas1 Ingeniería de software.

36 Ingeniería de Software – Ingeniería de Sistemas

Reflexión

Highsmith & Cockburn 2001

“Lo que es nuevo en los procesos ágiles no son las prácticas que usan, sino que reconozcan a las personas como primeros implicados en el éxito de un proyecto, además de un intenso foco en la efectividad y la manejabilidad. Esto genera una nueva combinación de valores y principios que definen una visión ágil del mundo.”

Page 37: Ingeniería de Software – Ingeniería de Sistemas1 Ingeniería de software.

37 Ingeniería de Software – Ingeniería de Sistemas

Las ágiles más conocidas ...

XP (Programación Extrema) La familia Cristal de Cockburn Código Abierto ASD (Desarrollo de Software Adaptable) SCRUM FFD (Desarrollo Manejado por Rasgos) DSDM (Método de desarrollo de sistema dinámico) RUP (Rational Unified Process)

Page 38: Ingeniería de Software – Ingeniería de Sistemas1 Ingeniería de software.

38 Ingeniería de Software – Ingeniería de Sistemas

Programación Extrema (XP)Creado por Kent Beck

Metodología ágilDiseñada para entornos dinámicos

Pensada para equipos pequeños (hasta 10 programadores)

Orientada fuertemente hacia la codificación

Énfasis en la comunicación informal, verbal

Basado en cinco valores 1. Comunicación Eficaz: Colaboración estrecha pero informal (verbal) entre los

clientes y los desarrolladores

2. Simplicidad: XP restringe a los desarrolladores para que diseñen solo para las necesidades inmediatas.

3. Retroalimentación: XP usa las pruebas unitarias como táctica principal de pruebas

4. Coraje y Valentía: Permite a los desarrolladores que se sientan cómodos con reconstruir su código cuando sea necesario.

Page 39: Ingeniería de Software – Ingeniería de Sistemas1 Ingeniería de software.

39 Ingeniería de Software – Ingeniería de Sistemas

Proceso de la Programación Extrema

Page 40: Ingeniería de Software – Ingeniería de Sistemas1 Ingeniería de software.

40 Ingeniería de Software – Ingeniería de Sistemas

SCRUM

SCRUM es un termino de Rugby, es la agrupación de los miembros del equipo. De esta manera el equipo trata de recorrer la distancia hacia la meta como una unidad, pasándose la pelota entre ellos.

Concebido por Jeff Sutherland y su equipo de desarrollo a principios de la década de 1990.

Page 41: Ingeniería de Software – Ingeniería de Sistemas1 Ingeniería de software.

41 Ingeniería de Software – Ingeniería de Sistemas

¿ Que es Scrum?

SCRUM es una metodología ágil de gestión de proyectos cuyo objetivo primordial es elevar al máximo la productividad de un equipo.

Reduce al máximo la burocracia y actividades no orientadas a producir software que funcione y produce resultados en periodos muy breves de tiempo (cada 30 días), por medio de iteraciones o Sprints.

Ideal para proyectos con un rápido cambio de requerimientos.

¿ Ciclo de Vida ?

Todo el trabajo es realizado en Sprints (30 días) Durante el Sprint se realizan reuniones que constituyen la inspección

empírica y las practicas de adaptación de Scrum.

Page 42: Ingeniería de Software – Ingeniería de Sistemas1 Ingeniería de software.

Ingeniería de Software – Ingeniería de Sistemas42

Mensaje Final ...

Page 43: Ingeniería de Software – Ingeniería de Sistemas1 Ingeniería de software.

43 Ingeniería de Software – Ingeniería de Sistemas

Mensaje Final ...

Hay prácticas que son aplicables a cualquier tipo de proyecto que uno quiera emprender.

Para romper paradigmas hay que tener la mente abierta.

Las metodologías nos dan la posibilidad de hacer mejor las cosas y generar valor.

El adoptar metodologías en una organización no es un proceso fácil y requiere de ayuda externa.

Page 44: Ingeniería de Software – Ingeniería de Sistemas1 Ingeniería de software.

Ingeniería de Software – Ingeniería de Sistemas44

Preguntas ...

Page 45: Ingeniería de Software – Ingeniería de Sistemas1 Ingeniería de software.

Ingeniería de Software – Ingeniería de Sistemas45

Gracias ...