You are on page 1of 87

INTRODUCCIN A LA INGENIERA DE SOFTWARE

Universidad Nacional del Sur

2do cuatrimestre 2013 M. Clara Casalini

Departamento de Cs. e Ing. de la Computacin

Bibliografa
2

Bsica
Ingeniera del software. Un enfoque prctico - R. Pressman Captulo 1 El software y la ingeniera de software Captulo 2 Modelos del proceso Captulo 3 Desarrollo gil Captulo 4 Principios que guan la prctica Ingeniera de software . Teora y Prctica - S. L. Pflegger Captulo 2 Modelado del proceso y del ciclo de vida

Ingeniera de Software
Proceso. Modelos de Proceso. Ciclo de vida. Metodologas giles. Principios.

Proceso

Proceso
5

Conjunto de actividades, acciones y tareas a ejecutar para crear algn producto. Actividad: objetivo amplio, se desarrolla en cualquier dominio de aplicacin, tamao del proyecto o grado de rigor del trabajo Accin: conjunto de tareas para obtener un producto del trabajo Tarea: objetivo pequeo, bien definido, con resultado tangible

Caractersticas de un proceso
6

Establece las principales actividades Utiliza recursos y est sujeto a restricciones Est compuesto por subprocesos encadenados y/o jerarquizados Cada actividad tiene criterios de entrada y de salida Conjunto de principios orientadores que explican las metas de cada actividad

Proceso vs. procedimiento


7

Procedimiento: combinacin estructurada de herramientas y tcnicas Proceso: conjunto de procedimientos

Ciclo de vida
8

Cuando el proceso implica la construccin de algn producto, se suele hablar de Ciclo de vida Al proceso de desarrollo de software se lo denomina Ciclo de vida del software

Concepcin Implementacin Entrega Utilizacin Mantenimiento

Proceso del software


9

Estructura general: 1. Comunicacin 2. Planificacin 3. Modelado 4. Construccin 5. Despliegue

Proceso del software


10

Actividades sombrilla
Seguimiento y control del proyecto Administracin del riesgo Aseguramiento de la calidad del sw Revisiones tcnicas Medicin Administracin de la configuracin Administracin de la reutilizacin Preparacin y produccin del producto

Flujo del proceso


11

Organizacin de las actividades y sus tareas con respecto a secuencia y tiempo: Lineal Iterativo Evolutivo Paralelo

Flujo del proceso - Lineal


12

Lineal: secuencia de actividades

Comunicacin

Planificacin

Modelado

Construccin

Despliegue

Flujo del proceso - Iterativo


13

Iterativo: repite una o ms de las actividades antes de pasar a la siguiente

Comunicacin

Planificacin

Modelado

Construccin

Despliegue

Flujo del proceso - Evolutivo


14

Evolutivo: cada circuito lleva a una versin ms completa del producto


Planificacin Modelado

Comunicacin

Despliegue

Construccin

Flujo del proceso - Paralelo


15

Paralelo: se ejecutan una o ms actividades en paralelo con otras


Comunicacin Planificacin

Modelado

Construccin tiempo

Despliegue

16

Modelos de proceso

Modelos de proceso
17

Cascada

Modelo en V

Incremental Iteraciones: modelo evolutivo


Prototipos Espiral

Concurrente

Modelo de cascada
18

El trabajo fluye de manera lineal desde la primera actividad (comunicacin, anlisis de requerimientos) hasta la ltima (despliegue o mantenimiento) Requerimientos bien definidos o para mejora de sistema existente.

R.Pressman

Modelo de cascada
19

S. Pfleeger

Modelo de cascada
20

Ventajas:
Es simple de explicar y entender para personas no familiarizadas con el desarrollo de software Explicita productos intermedios necesarios para avanzar de etapa

Desventajas:
No refleja la realidad ms frecuente. No es flexible, no se puede aplicar cuando hay requerimientos dinmicos El cliente debe esperar por una versin funcional

Modelo V
21

Variante del modelo de cascada Permite visualizar las acciones de verificacin y validacin Hace ms explcita la necesidad de iteracin para rehacer tareas si hay cambios o errores

Modelo incremental
22

Secuencias lineales aplicadas de manera escalonada Puede haber un grado de paralelismo entre las distintas secuencias Cada secuencia produce incrementos en el software Es til cuando no se dispone de personal suficiente para la implementacin completa Ayuda a la administracin de riesgos tcnicos

Modelo incremental
23

Modelo por iteraciones


24

El sistema se entrega completo al comienzo Las iteraciones modifican (mejoran, corrigen, extienden) la funcionalidad

Modelo por iteraciones


25

El sistema se entrega completo al comienzo Las iteraciones modifican (mejoran, corrigen, extienden) la funcionalidad

Modelo evolutivo - prototipos


26

Inicialmente se planea rpidamente una iteracin para producir un primer prototipo Cada iteracin refina el conocimiento, el plan y el modelo, y genera un nuevo prototipo Es til cuando inicialmente el cliente solo define objetivos generales y no identifica requerimientos detallados Algunos prototipos son desechables, otros evolucionan

Modelo evolutivo - prototipos


27

Ventajas
Dar una idea real ms temprana al usuario Obtener mejor definicin de los requerimientos

Desventajas

Riesgo de perder de vista que lo que se obtiene es un prototipo y no el producto definitivo

Modelo evolutivo - prototipos


28

Cascada con prototipos

Modelo evolutivo - espiral


29

Se itera en forma de espiral Las primeras iteraciones pueden producir modelos o prototipos En cada iteracin se ajustan todos los documentos: plan, definicin, modelos, costos, incluso el nmero de iteraciones necesarias Es adaptable para usarse durante todo el ciclo de vida del sistema

Modelo evolutivo - espiral


30

Modelo concurrente
31

Define una serie de eventos que desencadenan transiciones de un estado a otro para cada una de las actividades, acciones o tareas de la ingeniera de software

Modelos de proceso especializados


32

Tienen las caractersticas de los procesos vistos. Se aplican para enfoques especficos.

Desarrollo basado en componentes Mtodos formales Orientado a aspectos

Desarrollo basado en componentes


33

Componentes de software como productos Se integran en el software a construir Naturalmente evolutivo, tiene caractersticas del modelo en espiral
1. 2. 3. 4. 5.

Investigar y evaluar productos disponibles Considerar aspectos de integracin Disear la arquitectura Integrar componentes en la arquitectura Realizar pruebas exhaustivas

Desarrollo basado en componentes


34

Ventajas
Aumenta la reutilizacin Se hace ms medible el proceso y el producto

Desventajas
Perdida de control Costo de integracin

Mtodos formales
35

Especificacin matemtica del software y sus caractersticas Especificar, desarrollar y verificar los productos de manera rigurosa

Mtodos formales
36

Ventajas
Es posible verificar y validar de manera rigurosa Permite descubrir ambigedades e inconsistencias Baja los costos de mantenimiento

Desventajas
Hay pocos desarrolladores con la capacitacin adecuada Puede encarecer el desarrollo Es dificil de utilizar para comunicarse con los clientes

Desarrollo orientado a aspectos


37

Proceso y enfoque metodolgico para definir, especificar, disear y construir caractersticas globales del sistema Preocupaciones globales que tienen efecto a travs de toda la arquitectura del software Tiene caractersticas del modelo evolutivo y del concurrente

Desarrollo orientado a aspectos


38

Ejemplos
Interfaces de usuario Trabajo en colaboracin Distribucin Persistencia Seguridad Integridad

Proceso unificado de software


39

El trabajo de Rumbaugh, Booch y Jacobson en un mtodo unificado resulta en la definicin del Lenguaje de modelado unificado (UML) Desarrollan el proceso unificado, estructura para la ingeniera de software orientado a objetos que utiliza UML Proceso impulsado por el caso de uso, centrado en la arquitectura, iterativo e incremental

Proceso unificado de software


40

Fase de concepcin: agrupa actividades de comunicacin con el cliente y planificacin


Identificar requerimientos del negocio Proponer arquitectura Desarrollar plan

Proceso unificado de software


41

Fase de elaboracin: actividades de planificacin y modelo general del proceso


Ampliar casos de uso Aumentar la representacin de la arquitectura para incluir cinco puntos de vista: casos de uso, requerimientos, diseo, implementacin, despliegue Revisar el plan

Proceso unificado de software


42

Fase de construccin: desarrolla o adquiere componentes


Completar modelo de requerimientos y diseo Implementa en cdigo Realizar tareas de integracin Obtener y ejecutar las pruebas de aceptacin

Proceso unificado de software


43

Fase de transicin: ultimas etapas de construccin y primeras de despliegue general


Realizar pruebas con los usuarios Generar documentacin de apoyo para el lanzamiento Lanzar el software

Proceso unificado de software


44

Fase de produccin: actividad de despliegue


Vigilar el uso Brindar apoyo en la operacin Reportar defectos y solicitudes

45

Metodologas giles

Manifiesto gil
46

Grupo conocido como Alianza gil firma: Estamos descubriendo formas mejores de desarrollar software , desarrollandolo y ayudando a otros a desarrollarlo. Ese trabajo nos ha hecho valorar:

Los individuos y sus interacciones ms que a los procesos y las herramientas El software que funciona ms que la documentacin exhaustiva La colaboracin con el cliente ms que la negociacin de contratos Responder al cambio ms que seguir un plan

Agilidad
47

Responder de manera apropiada a los cambios Reconocer que al software lo desarrollan individuos trabajando en equipo, la colaboracin es clave Recomendar estructuras y actitudes que favorezcan la comunicacin Entregar software funcional rpidamente (restando importancia a la documentacin intermedia) Adoptar al cliente como parte del equipo Reconocer la necesidad de planificaciones flexibles

Costo del cambio


48

El costo se incrementa de manera no lineal con el avance del proyecto

Proceso gil
49

Suposiciones
Es difcil predecir: persistencia de los requerimientos, cambios de prioridades del cliente En muchos tipos de software el diseo y la construccin se superponen: deben ser simultneos Anlisis, diseo, construccin y pruebas no son tan predecibles como quisieramos: es difcil planificar

El proceso debe ser adaptable, debe hacerlo incrementalmente y debe permitir la retroalimentacin con el cliente

Principios de agilidad
50

1.

2.

3.

La prioridad ms alta es satisfacer al cliente mediante la entrega pronta y continua de software valioso. Los requerimientos cambiantes son bienvenidos, an en etapas avanzadas del desarrollo. Los procesos giles aprovechan el cambio para la ventaja competitiva del cliente. Entregar software funcional con frecuencia, entre dos semanas y dos meses, de preferencia lo ms pronto posible.

Principios de agilidad
51

4.

5.

6.

Las personas de negocio y los desarrolladores deben trabajar juntos, a diario, durante todo el proyecto. Desarrollar proyectos con gente motivada. Darles el ambiente y el apoyo que necesiten, y confiar en que harn bien su trabajo. El mtodo ms eficiente y eficaz para transmitir informacin a los integrantes de un equipo, y entre estos, es la conversacin cara a cara

Principios de agilidad
52

7.

8.

9.

La medida principal del avance es el software que funciona Los procesos giles promueven el desarrollo sostenible. Los patrocinadores, desarrolladores y usuarios deben poder mantener un ritmo constante en forma indefinida. La atencin continua a la excelencia tcnica y el buen diseo mejora la agilidad

Principios de agilidad
53

10.

11.

12.

La simplicidad es esencial el arte de maximizar la cantidad de trabajo no realizado. Las mejores arquitecturas, requerimientos y diseos surgen de los equipos con organizacin propia. El equipo reflexiona a intervalos regulares sobre cmo ser ms eficaz, para despus afinar y ajustar su comportamiento en consecuencia.

Procesos giles
54

Diferentes modelos enfatizan distintos principios. Todos siguen un espritu gil. Enfatizan la importancia de factores personales:

Competencia, Enfoque comn, Colaboracin, Habilidad para tomar decisiones, Capacidad para resolver problemas difusos, Confianza y respeto mutuos, Organizacin propia.

Programacin Extrema (XP)


55

Del ingls: eXtreme Programming Variante: IXP = Industrial eXtreme Programming Pone el nfasis en la colaboracin estrecha pero informal entre clientes y desarrolladores para establecer metforas que comuniquen conceptos importantes, en la retroalimentacin continua y en evitar documentacin voluminosa

Programacin Extrema (XP)


56

Cuatro actividades estructurales: planificacin, diseo, codificacin y pruebas.

Programacin Extrema (XP)


57

Planificacin:
recabar requerimientos, crear historias y asignarles valores, asignar costo medido en semanas de desarrollo. Luego de la primera entrega se calcula velocidad

Diseo:
Mantenerlo sencillo Si es difcil: realizar prototipos

Programacin Extrema (XP)


58

Codificacin:
No codificar! Sino disear pruebas unitarias. Luego desarrollar el cdigo. Utilizar programacin por parejas.

Pruebas:
Automatizarlas siempre que sea posible. Efectuar pruebas de integracin a diario.

Otros modelos de proceso giles


59

Desarrollo adaptativo de software (DAS) Scrum Mtodo de desarrollo de sistemas dinmicos (MDSD) Cristal Desarrollo impulsado por las caractersticas (DIC) Desarrollo esbelto de software Modelado gil Proceso unificado gil

Desarrollo adaptativo de software


60

Se centra en la colaboracin humana y en la organizacin propia del equipo.

Scrum
61

Scrum
62

Actividades estructurales:
Requerimientos Anlisis Diseo Evolucin Entrega

Cada actividad realiza las tareas bajo un patrn de proceso llamado sprint

Scrum
63

Scrum
64

Backlog (pendientes o acumulados) Sprints: unidades de trabajo necesarias para alcanzar un requerimiento. No introducir cambios. Reuniones scrum: breves y diarias, para responder tres preguntas claves
Qu hiciste desde la ltima reunin del equipo? (ayer) Qu obstculos estas encontrando? Qu planeas hacer hasta la prxima reunin?

Demostraciones preliminares: entrega de incremento

Mtodo de desarrollo de sistemas dinmicos


65

Filosofa tomada de la regla de Pareto: 80% de la aplicacin puede entregarse en el 20% del tiempo que tomara entregarla completa. Enfoque para sistemas que cumplan restricciones apretadas de tiempo mediante la realizacin de prototipos incrementales en un ambiente controlado.

Mtodo de desarrollo de sistemas dinmicos


66

Dos actividades iniciales y tres ciclos iterativos


Estudio de factibilidad Estudio del negocio Iteracin del modelo funcional Diseo e iteracin de la construccin Implementacin

Se combina con XP

Proceso unificado gil


67

Adopta una filosofa en serie para lo grande e iterativa para lo pequeo Fases clsicas del PU: concepcin, elaboracin, construccin y transicin. Dentro de cada actividad el equipo itera para alcanzar la agilidad y entregar incrementos de software significativos

68

Principios

Principios
69

El ingeniero de software aplica de manera cotidiana un conjunto de mtodos, herramientas y principios. Las tcnicas y metodologas pueden cambiar, las herramientas pueden renovarse o modificarse, pero los principios bsicos en los que basamos la profesin se conservan y dan sustento a todo lo dems

Principios
70

Para guiar el proceso Para guiar la prctica De comunicacin De planificacin De modelado De construccin De despliegue

Principios para guiar el proceso


71

1. 2. 3. 4. 5.

6. 7.

8.

Ser gil Centrarse en la calidad Poder adaptar Formar un equipo eficaz Establecer mecanismos para la comunicacin y coordinacin Administrar el cambio Evaluar el riesgo Crear productos que agreguen valor para otros

Principios para guiar la prctica


72

1. 2. 3. 4.

5.
6. 7.

8.

Dividir y conquistar Entender y usar la abstraccin Buscar coherencia Centrarse en la transferencia de informacin Modularizar eficazmente Buscar patrones Usar perspectivas diferentes Pensar en quien dar mantenimiento al software

Principios para la comunicacin


73

Uno de los mayores desafos de la profesin: lograr una comunicacin efectiva.


1.

2.
3. 4.

5.

Escuchar Prepararse previamente Determinar un facilitador o lder Comunicarse cara a cara Tomar notas y documentar decisiones

Principios para la comunicacin


74

6. 7. 8. 9.

10.

Buscar la colaboracin Centrarse, modularizar la discusin Utilizar dibujos para clarificar Avanzar! al acordar, si no se puede acordar, si no se puede aclarar, avanzar. Negociar no es competir, lo ideal es que todos ganen.

Principios para la planificacin


75

1. 2. 3.

4.
5. 6.

Entender el alcance del proyecto Involucrar a los participantes en la planificacin Reconocer la necesidad de iterar Estimar basandose en conocimiento previo Considerar los riesgos Ser realista

Principios para la planificacin


76

7. 8. 9.

10.

Ajustar la granularidad Definir cmo se buscar la calidad Describir cmo se administrar el cambio Realizar seguimiento frecuente del plan y ajustar en la medida que sea necesario

Principios para el modelado


77

Dos* clases de modelos:


1. 2.

De requerimientos De diseo

Requerimientos: dominio de la informacin, de la funcionalidad y del comportamiento Diseo: arquitectura, interfaz de usuario y detalle a nivel de componentes

Principios para el modelado


78

Modelado de los requerimientos (anlisis)


1. 2. 3. 4.

5.

Representar y entender el dominio del problema Definir las funciones del software Representar el comportamiento del software Dividir los modelos: informacin, funcin, comportamiento Avanzar desde lo esencial hacia el detalle

Principios para el modelado


79

Modelado del diseo


1. 2. 3. 4.

5.
6. 7. 8. 9.

Rastreable a los requerimientos Tener en cuenta la arquitectura a construir Es tan importante disear datos como funciones Cuidar las interfaces Resaltar facilidad de uso y necesidades del usuario Independencia funcional de los componentes Buscar buen acoplamiento de componentes Los modelos deben ser fciles de comprender Hacerlo iterativo, buscando sencillez

Principios para el modelado


80

Calidad externa: propiedades del software observables fcilmente por el usuario Calidad interna: propiedades que sirven al ingeniero de software La calidad interna conduce a la calidad externa. Se deben buscar LAS DOS CALIDADES.

Principios para la construccin


81

Preparacin:
Entender el problema Comprender conceptos y principios bsicos de diseo Elegir el lenguaje de programacin correcto Seleccionar un ambiente de desarrollo adecuado Crear pruebas unitarias para aplicar al terminar

Principios para la construccin


82

Programacin
Programacin estructurada Seleccionar cuidadosamente las estructuras de datos Entender la arquitectura, crear acorde a ella Mantener la lgica condicional sencilla Cuidar el anidamiento Seguir estandares Usar nombres significativos Escribir cdigo autodocumentado y legible

Principios para la construccin


83

Validacin
Recorrer el cdigo Realizar pruebas unitarias Corregir errores detectados Redisear el cdigo cuando resulte apropiado

Principios para la construccin


84

Pruebas
Pensar la prueba como proceso que tiene como objetivo encontrar un error Un caso de prueba bueno tiene probabilidades altas de encontrar errores no detectados Una prueba exitosa es aquella que encontr un error no detectado

Principios para la construccin


85

Pruebas
Rastreables a los requerimientos Planeadas con anterioridad Principio de Pareto: proporciones 80-20

El 80% de los errores no detectados durante las pruebas, se relacionan con el 20% de los componentes del programa.

Comenzar en lo pequeo y avanzar a lo grande Es imposible hacer pruebas exhaustivas

Principios para el despliegue


86

Entrega Apoyo Retroalimentacin


1. 2.

3.
4. 5.

Manejar la expectativa del cliente Ensamblar y probar paquete completo Establecer previamente el soporte a brindar Proporcionar material de aprendizaje Los defectos primero se corrigen

Principios - resumen
87

Los proyectos, los mtodos, los conceptos y las herramientas son diferentes, los principios se aplican en todos los casos. Ayudan en la aplicacin de una ingeniera de software eficaz. Guan al equipo de software durante todo el proceso.

You might also like