cap1IntroIngSW.ppt [Modo de compatibilidad] · ADOO, mas allá de POO ... dentro de un proceso, en...

25
07/03/2011 1 Introducción a la Introducción a la Ingeniería de la Ingeniería de la Programación Programación Informática Industrial Informática Industrial A/DOO A/DOO EUITI EUITI – UPM UPM Índice Índice Intro Intro ¿Qué es el software y la ingeniería del software? ¿Qué es el software y la ingeniería del software? Problemas de la Ingeniería del Software Problemas de la Ingeniería del Software El paradigma orientado a objetos El paradigma orientado a objetos Programación estructurada vs. POO Programación estructurada vs. POO – POO POO Ciclo de vida del SW Ciclo de vida del SW Modelo lineal Modelo lineal Modelo de construcción de prototipos Modelo de construcción de prototipos Desarrollo rápido de aplicaciones Desarrollo rápido de aplicaciones Modelos evolutivos Modelos evolutivos El proceso unificado El proceso unificado Herramientas case Herramientas case Problemas Problemas

Transcript of cap1IntroIngSW.ppt [Modo de compatibilidad] · ADOO, mas allá de POO ... dentro de un proceso, en...

Page 1: cap1IntroIngSW.ppt [Modo de compatibilidad] · ADOO, mas allá de POO ... dentro de un proceso, en este caso ... –– Dirigido por casos de uso Dirigido por casos de uso

07/03/2011

1

Introducción a la Introducción a la Ingeniería de la Ingeniería de la ProgramaciónProgramación

Informática IndustrialInformática IndustrialA/DOOA/DOOEUITI EUITI –– UPMUPM

ÍndiceÍndice

IntroIntro¿Qué es el software y la ingeniería del software?¿Qué es el software y la ingeniería del software?–– Problemas de la Ingeniería del SoftwareProblemas de la Ingeniería del Software

El paradigma orientado a objetosEl paradigma orientado a objetos–– Programación estructurada vs. POOProgramación estructurada vs. POO–– POOPOO

Ciclo de vida del SWCiclo de vida del SW–– Modelo linealModelo lineal–– Modelo de construcción de prototiposModelo de construcción de prototipos–– Desarrollo rápido de aplicacionesDesarrollo rápido de aplicaciones–– Modelos evolutivosModelos evolutivos

El proceso unificadoEl proceso unificadoHerramientas caseHerramientas caseProblemasProblemas

Page 2: cap1IntroIngSW.ppt [Modo de compatibilidad] · ADOO, mas allá de POO ... dentro de un proceso, en este caso ... –– Dirigido por casos de uso Dirigido por casos de uso

07/03/2011

2

IntroducciónIntroducciónSociedad actual condicionada a la tecnologíaSociedad actual condicionada a la tecnologíaEjemplosEjemplos–– Gestión: Ofimática, contabilidad, etcGestión: Ofimática, contabilidad, etc–– Economía: bolsa, bancosEconomía: bolsa, bancos–– Entretenimiento: videojuegos, multimediaEntretenimiento: videojuegos, multimedia–– IngenieríaIngeniería–– MedicinaMedicina–– Vida diariaVida diaria

TelefoníaTelefoníaInternetInternetAutomociónAutomociónElectrodomésticosElectrodomésticos

¿Controlado por?¿Controlado por?Los avances en el hardware impresionantes, pero nada escapa del Los avances en el hardware impresionantes, pero nada escapa del softwaresoftware–– Millones de desarrolladores intentan codificar, transmitir inteligencia a las Millones de desarrolladores intentan codificar, transmitir inteligencia a las

maquinas (ejemplos)maquinas (ejemplos)

SoftwareSoftware

SW es una disciplina de la ciencia muy reciente, y prácticamente no ha habido SW es una disciplina de la ciencia muy reciente, y prácticamente no ha habido una estructuración formal del conocimientouna estructuración formal del conocimiento

–– SW vs. Edificación (metodología obtenida con la experiencia de miles de años)SW vs. Edificación (metodología obtenida con la experiencia de miles de años)–– Años 60 había software, pero el volumen era muy inferior.Años 60 había software, pero el volumen era muy inferior.

En los últimos 30 años ha habido grandes saltos cuantitativos:En los últimos 30 años ha habido grandes saltos cuantitativos:–– Nuevos lenguajes de programaciónNuevos lenguajes de programación–– Nuevos procedimientosNuevos procedimientos–– Se han ido acumulando y…Se han ido acumulando y…

Recientemente, los investigadores han desarrollado una metodología para la Recientemente, los investigadores han desarrollado una metodología para la creación de softwarecreación de software

–– Salto cualitativoSalto cualitativo–– Investigadores! Investigadores! No absolutamente extendidaNo absolutamente extendida–– Recientemente:Recientemente:

1995 GoF “Patrones de diseño” (en castellano en el 2003)1995 GoF “Patrones de diseño” (en castellano en el 2003)UML 1.0 en 1997UML 1.0 en 1997UP en 1998UP en 1998

Este curso trata precisamente de transmitir esta metodología para la Este curso trata precisamente de transmitir esta metodología para la producción de software del SXXIproducción de software del SXXI

Page 3: cap1IntroIngSW.ppt [Modo de compatibilidad] · ADOO, mas allá de POO ... dentro de un proceso, en este caso ... –– Dirigido por casos de uso Dirigido por casos de uso

07/03/2011

3

¿Software?¿Software?

¿Que es el software? Según IEEE:¿Que es el software? Según IEEE:–– ProgramasProgramas–– Datos (ficheros, bases de datos, interacción con Datos (ficheros, bases de datos, interacción con

otros componentes)otros componentes)–– DocumentaciónDocumentación

Categorías de softwareCategorías de software

SOSOTiempo realTiempo realGestiónGestiónEmpotradosEmpotradosIngeniería y científicoIngeniería y científicoOcioOcio

Page 4: cap1IntroIngSW.ppt [Modo de compatibilidad] · ADOO, mas allá de POO ... dentro de un proceso, en este caso ... –– Dirigido por casos de uso Dirigido por casos de uso

07/03/2011

4

¿Que relación tenéis con el SW?¿Que relación tenéis con el SW?

UsuariosUsuariosProgramadoresProgramadores–– ¿Sabéis crear una ¿Sabéis crear una

aplicación SW?aplicación SW?El SW no es una obra de El SW no es una obra de arte, es un producto arte, es un producto industrial con características industrial con características especiales:especiales:–– Producto singularProducto singular–– Extremadamente complejoExtremadamente complejo–– No se estropeaNo se estropea–– ¿Mantenimiento?¿Mantenimiento?–– ObsolescenciaObsolescencia

Arquitectos (software)Arquitectos (software)

Page 5: cap1IntroIngSW.ppt [Modo de compatibilidad] · ADOO, mas allá de POO ... dentro de un proceso, en este caso ... –– Dirigido por casos de uso Dirigido por casos de uso

07/03/2011

5

Ingeniería softwareIngeniería software

Una Ingeniería es un conjunto Una Ingeniería es un conjunto dede–– Procedimientos: es un Procedimientos: es un

conjunto de:conjunto de:Técnicas: Para aplicarlas se Técnicas: Para aplicarlas se utilizanutilizan

–– HerramientasHerramientas

Ingeniería del SW es la rama Ingeniería del SW es la rama de la ingeniería orientada a de la ingeniería orientada a aplicar los principios necesarios aplicar los principios necesarios para lograr buenas soluciones para lograr buenas soluciones en el desarrollo de SWen el desarrollo de SWEl proceso de la Ingeniería del El proceso de la Ingeniería del SW es un conjunto de etapas SW es un conjunto de etapas ordenadas para obtener ordenadas para obtener software de calidadsoftware de calidad

ArquitecturaArquitectura ControlControl Ingeniería Ingeniería SoftwareSoftware

Requerimientos Requerimientos del clientedel cliente

Especificaciones Especificaciones de diseñode diseño

Captura de Captura de requisitosrequisitos

Analisis del Analisis del entornoentorno

Identificacion y Identificacion y modeladomodelado

AOO AOO (investigacion (investigacion del dominio)del dominio)

ProyectoProyecto DiseñoDiseño DOO (diseño DOO (diseño orientado a orientado a objetos)objetos)

ConstruccionConstruccion ImplementacionImplementacion ProgramacionProgramacion

Problemas de la Problemas de la ingeniería del softwareingeniería del software

La calidad y productividad del La calidad y productividad del SW no ha alcanzado la de SW no ha alcanzado la de otras tecnologíasotras tecnologías–– SW caroSW caro–– SW lento (producción)SW lento (producción)

Los proyectos empiezan desde Los proyectos empiezan desde ceroceroPero en Arquitectura también…Pero en Arquitectura también…–– ReutilizaciónReutilización

POOPOO–– Recientemente se ha Recientemente se ha

empezado a utilizar realmente empezado a utilizar realmente software prefabricadosoftware prefabricado

Componentes COM, ActiveXComponentes COM, ActiveXPatrones de diseñoPatrones de diseñoMarcos de trabajo Marcos de trabajo (framework). STL, MFC, etc(framework). STL, MFC, etc

Page 6: cap1IntroIngSW.ppt [Modo de compatibilidad] · ADOO, mas allá de POO ... dentro de un proceso, en este caso ... –– Dirigido por casos de uso Dirigido por casos de uso

07/03/2011

6

IndiceIndice

IntroIntro¿Qué es el software y la ingenieria del software?¿Qué es el software y la ingenieria del software?–– Problemas de la Ingenieria del SoftwareProblemas de la Ingenieria del Software

El paradigma orientado a objetosEl paradigma orientado a objetos–– Programacion estructurada vs. POOProgramacion estructurada vs. POO–– POOPOO

Ciclo de vida del SWCiclo de vida del SW–– Modelo linealModelo lineal–– Modelo de construccion de prototiposModelo de construccion de prototipos–– Desarrollo rapido de aplicacionesDesarrollo rapido de aplicaciones–– Modelos evolutivosModelos evolutivos

El proceso unificadoEl proceso unificadoHerramientas caseHerramientas caseProblemasProblemas

Paradigma OOParadigma OO

FilosofíaFilosofíaUniverso computacional como poblaciones de Universo computacional como poblaciones de objetosobjetos–– Objeto tiene estado (atributos), comportamiento e Objeto tiene estado (atributos), comportamiento e

identidad (Ej. perro)identidad (Ej. perro)–– La estructura y comportamiento de objetos similares La estructura y comportamiento de objetos similares

están definidos en una clase comúnestán definidos en una clase común–– Platon, similitud con la forma de pensar humanaPlaton, similitud con la forma de pensar humana

Page 7: cap1IntroIngSW.ppt [Modo de compatibilidad] · ADOO, mas allá de POO ... dentro de un proceso, en este caso ... –– Dirigido por casos de uso Dirigido por casos de uso

07/03/2011

7

Programación estructuradaProgramación estructurada

Lenguajes antiguos utilizaban GOTOLenguajes antiguos utilizaban GOTO–– Difícilmente legibles, y difíciles de mantener.Difícilmente legibles, y difíciles de mantener.

A finales de los años 70, Dijkstra:A finales de los años 70, Dijkstra:–– Cualquier programa se puede codificar comoCualquier programa se puede codificar como

Secuencias de instruccionesSecuencias de instruccionesLa sentencia condicional if…elseLa sentencia condicional if…elseEl bucle while()El bucle while()

–– GOTO innecesarioGOTO innecesario programacion estructurada o programacion estructurada o programacion sin GOTOprogramacion sin GOTO

C, Pascal, ADA programación estructurada (aunque C, Pascal, ADA programación estructurada (aunque mantienen GOTO)mantienen GOTO)CaracterísticasCaracterísticas–– Algoritmos (funciones) + datos = programaAlgoritmos (funciones) + datos = programa

Programación OOProgramación OO

Dejar de pensar en funciones Dejar de pensar en funciones pensar en objetospensar en objetosNo basta con aprender un lenguaje como C++, hay No basta con aprender un lenguaje como C++, hay que cambiar la forma de pensar desde la base.que cambiar la forma de pensar desde la base.Saber poner ladrillos no te hace un arquitecto. Saber poner ladrillos no te hace un arquitecto. –– Mucha gente conoce C++, Java, pero no sabe POO. Esto Mucha gente conoce C++, Java, pero no sabe POO. Esto

es el objetivo del cursoes el objetivo del cursoIntroduccion al A/DOOIntroduccion al A/DOO

–– Utilizando UML como herramientaUtilizando UML como herramientaPatrones de diseñoPatrones de diseñoIntroduccion al UPIntroduccion al UP

Page 8: cap1IntroIngSW.ppt [Modo de compatibilidad] · ADOO, mas allá de POO ... dentro de un proceso, en este caso ... –– Dirigido por casos de uso Dirigido por casos de uso

07/03/2011

8

ADOO, mas allá de POOADOO, mas allá de POO

Introduccion al A/DOOIntroduccion al A/DOO–– La produccion de SW necesita La produccion de SW necesita

etapas que van desde recogida de etapas que van desde recogida de requisitos hasta el analisis y requisitos hasta el analisis y diseño. En estas etapas se diseño. En estas etapas se necesitan disciplinas y mecanismos necesitan disciplinas y mecanismos para realizarlas (A/DOO)para realizarlas (A/DOO)

RequisitosRequisitos Saber lo que quiere el Saber lo que quiere el clienteclienteAnalisis Analisis Investigar el problema Investigar el problema y los requisitos (Dominio)y los requisitos (Dominio)Diseño busca una solución Diseño busca una solución conceptual al problemaconceptual al problemaUML es una notación (como UML es una notación (como Autocad o PSPICE)Autocad o PSPICE)

Patrones de diseñoPatrones de diseño–– Asignación de responsabilidadesAsignación de responsabilidades

Introduccion al UPIntroduccion al UP–– Todo lo anterior se enmarca Todo lo anterior se enmarca

dentro de un proceso, en este caso dentro de un proceso, en este caso sera un proceso iterativo.sera un proceso iterativo.

Otras habilidades muy importantes:

-Diseño GUI, usabilidad

-Diseño DB

UMLUML

CNiCanPort(f rom Functional)

CNiCanPortDlg(f rom Interf ace)

CIFBSimCamApp(f rom Interf ace)

CAboutDlg(f rom Interf ace)

CRealPort(f rom Functional)

CIFBSimServer(f rom Functional)

CIFB(f rom Funct ional)

CIFBSimCamDlg(f rom Interf ace)

+nican_port_dlg_a+nican_port_dlg_b

+server

CIFBCpu(f rom Funct ional)

+p_other_cpu

+cpu_a+cpu_b

CECSim(f rom Functional)

CIFBSim(f rom Functional)

+p_ifb_sim

1..36

1

1..36

1

+ifb_simulator

+ec_a+ec_b

CXFibussPort(f rom Functional)

+port

CBusSim(f rom Functional)

#bus_a#bus_b

Page 9: cap1IntroIngSW.ppt [Modo de compatibilidad] · ADOO, mas allá de POO ... dentro de un proceso, en este caso ... –– Dirigido por casos de uso Dirigido por casos de uso

07/03/2011

9

IndiceIndice

IntroIntro¿Qué es el software y la ingenieria del software?¿Qué es el software y la ingenieria del software?–– Problemas de la Ingenieria del SoftwareProblemas de la Ingenieria del Software

El paradigma orientado a objetosEl paradigma orientado a objetos–– Programacion estructurada vs. POOProgramacion estructurada vs. POO–– POOPOO

Ciclo de vida del SWCiclo de vida del SW–– Modelo linealModelo lineal–– Modelo de construccion de prototiposModelo de construccion de prototipos–– Desarrollo rapido de aplicacionesDesarrollo rapido de aplicaciones–– Modelos evolutivosModelos evolutivos

El proceso unificadoEl proceso unificadoHerramientas caseHerramientas caseProblemasProblemas

El problema del software El problema del software es:es:

Page 10: cap1IntroIngSW.ppt [Modo de compatibilidad] · ADOO, mas allá de POO ... dentro de un proceso, en este caso ... –– Dirigido por casos de uso Dirigido por casos de uso

07/03/2011

10

El ciclo de vida del SWEl ciclo de vida del SW

Se necesita una forma coordinada de Se necesita una forma coordinada de trabajar, un proceso que integre todas la trabajar, un proceso que integre todas la partes del desarrollo:partes del desarrollo:–– Una guía del orden de actividadesUna guía del orden de actividades–– Gestione las actividades individuales de las Gestione las actividades individuales de las

personas y del equipo en conjuntopersonas y del equipo en conjunto–– Especifique los artefactos (documentos, Especifique los artefactos (documentos,

herramientas, codigo, etc) que deben herramientas, codigo, etc) que deben desarrollarsedesarrollarse

–– Permita controlar y medir las actividadesPermita controlar y medir las actividades

Modelo lineal secuencialModelo lineal secuencial

ClásicoClásico

Analisis de requisitos

Analisis dominio

Estructura del programa y arquitectura

Interfaz

Algoritmos

Programacion Caja blanca

Caja negra (validacion)

Errores de desarrollo

Nuevos entornos (SO)

Mejoras funcionales o de rendimiento

Page 11: cap1IntroIngSW.ppt [Modo de compatibilidad] · ADOO, mas allá de POO ... dentro de un proceso, en este caso ... –– Dirigido por casos de uso Dirigido por casos de uso

07/03/2011

11

Desarrollo rápido de Desarrollo rápido de aplicacionesaplicaciones

Adaptación a alta velocidad del modelo lineal secuencialAdaptación a alta velocidad del modelo lineal secuencial–– Basado en componentesBasado en componentes–– Cortos periodos de tiempo (60Cortos periodos de tiempo (60--90 90 diasdias) para sistemas ) para sistemas

funcionalesfuncionales–– Se generan componentes reutilizables en posteriores proyectosSe generan componentes reutilizables en posteriores proyectos–– Sacrificar funcionalidad no críticaSacrificar funcionalidad no crítica

Solo se puede aplicar si:Solo se puede aplicar si:–– Se conocen y comprenden muy bien los requisitos (los conoce ya Se conocen y comprenden muy bien los requisitos (los conoce ya

el desarrollador, el desarrollador, pqpq los pone el o tiene experiencia)los pone el o tiene experiencia)–– Se delimita muy bien el ámbito del problemaSe delimita muy bien el ámbito del problema–– La interacción del SW con el sistema es perfectamente conocidaLa interacción del SW con el sistema es perfectamente conocida–– Se dispone de recursosSe dispone de recursos

Modelo de construcción Modelo de construcción de prototiposde prototipos

Los prototipos Los prototipos sirven para detallar sirven para detallar requisitosrequisitos–– Centrado en el Centrado en el

clientecliente

El prototipo se El prototipo se suele desecharsuele desechar–– En su conjunto, En su conjunto,

pero no todopero no todo

Page 12: cap1IntroIngSW.ppt [Modo de compatibilidad] · ADOO, mas allá de POO ... dentro de un proceso, en este caso ... –– Dirigido por casos de uso Dirigido por casos de uso

07/03/2011

12

Modelos evolutivosModelos evolutivos

Modelo incrementalModelo incremental–– Adaptación del modelo lineal secuencial, con la Adaptación del modelo lineal secuencial, con la

filosofía iterativa de desarrollo de prototiposfilosofía iterativa de desarrollo de prototipos

Modelos evolutivosModelos evolutivos

Modelo en espiralModelo en espiral–– También combina el También combina el

modelo lineal modelo lineal secuencial con la secuencial con la construcción de construcción de prototipos, pero con prototipos, pero con la idea del la idea del desarrollo rápido de desarrollo rápido de aplicacionesaplicaciones

Page 13: cap1IntroIngSW.ppt [Modo de compatibilidad] · ADOO, mas allá de POO ... dentro de un proceso, en este caso ... –– Dirigido por casos de uso Dirigido por casos de uso

07/03/2011

13

IndiceIndice

IntroIntro¿Qué es el software y la ingeniería del software?¿Qué es el software y la ingeniería del software?–– Problemas de la Ingeniería del SoftwareProblemas de la Ingeniería del Software

El paradigma orientado a objetosEl paradigma orientado a objetos–– Programación estructurada vs. POOProgramación estructurada vs. POO–– POOPOO

Ciclo de vida del SWCiclo de vida del SW–– Modelo linealModelo lineal–– Modelo de construcción de prototiposModelo de construcción de prototipos–– Desarrollo rápido de aplicacionesDesarrollo rápido de aplicaciones–– Modelos evolutivosModelos evolutivos

El proceso unificadoEl proceso unificadoHerramientas caseHerramientas caseProblemasProblemas

El Proceso Unificado (UP)El Proceso Unificado (UP)

Proceso de desarrollo de SWProceso de desarrollo de SW–– Actividades Actividades RequisitosRequisitos SistemaSistema SWSW–– Relativamente extendido (pero no Relativamente extendido (pero no

absolutamente)absolutamente)CaracterísticasCaracterísticas–– Estructura organizada de A/DOOEstructura organizada de A/DOO

Las ideas centrales del curso, A/DOO, patrones, UML Las ideas centrales del curso, A/DOO, patrones, UML son independientes del procesoson independientes del proceso

–– Dirigido por casos de usoDirigido por casos de uso–– Centrado en la arquitectura y el riesgoCentrado en la arquitectura y el riesgo–– Iterativo e incrementalIterativo e incremental

Page 14: cap1IntroIngSW.ppt [Modo de compatibilidad] · ADOO, mas allá de POO ... dentro de un proceso, en este caso ... –– Dirigido por casos de uso Dirigido por casos de uso

07/03/2011

14

UP: Iterativo e UP: Iterativo e incrementalincremental

Corta duración 2Corta duración 2--6 semanas6 semanas–– Variable entre iteracionesVariable entre iteraciones–– Si se prevee mayor, redefinir Si se prevee mayor, redefinir

la iteracionla iteracion–– Solo en casos extremos, > 6 Solo en casos extremos, > 6

semanassemanasCada iteración aborda nuevos Cada iteración aborda nuevos requisitosrequisitos–– Nuevas funcionalidadesNuevas funcionalidades–– MejoraMejora

RetroalimentaciónRetroalimentaciónEl producto de cada iteración El producto de cada iteración es “final”, no un prototipo es “final”, no un prototipo desechabledesechablePuede necesitar muchas Puede necesitar muchas iteraciones 10iteraciones 10--1515

Motivos para fijar la Motivos para fijar la duración de una iteraciónduración de una iteración

Ley de Parkinson (58): El trabajo se expande de manera que Ley de Parkinson (58): El trabajo se expande de manera que llena el tiempo disponible para su terminaciónllena el tiempo disponible para su terminación–– Mas critico cuanto mas tiempo se disponeMas critico cuanto mas tiempo se dispone

Asignar prioridades y tomar decisiones. Asignar prioridades y tomar decisiones. –– Progreso visible en las primeras etapasProgreso visible en las primeras etapas

Satisfacción del equipoSatisfacción del equipo–– Factores psicológicos son importantesFactores psicológicos son importantes

Confianza del personal involucradoConfianza del personal involucrado–– Personal de negocio, administrativos, clientes. Personal de negocio, administrativos, clientes. –– Temprana realimentación, involucrando a los usuariosTemprana realimentación, involucrando a los usuarios

Mitigacion de riesgos altos (técnicos, requisitos, objetivos, Mitigacion de riesgos altos (técnicos, requisitos, objetivos, usabilidad)usabilidad)El conocimiento adquirido en cada iteración se utiliza El conocimiento adquirido en cada iteración se utiliza metódicamente en las siguientes, mejorando el propio metódicamente en las siguientes, mejorando el propio proceso.proceso.

Page 15: cap1IntroIngSW.ppt [Modo de compatibilidad] · ADOO, mas allá de POO ... dentro de un proceso, en este caso ... –– Dirigido por casos de uso Dirigido por casos de uso

07/03/2011

15

Buenas practicas del UPBuenas practicas del UPAbordar cuestiones de alto riesgo en las primeras iteracionesAbordar cuestiones de alto riesgo en las primeras iteraciones

–– Ej. Atender a 2000 clientes en menos de 1 segundoEj. Atender a 2000 clientes en menos de 1 segundo–– Es mejor fracasar pronto que tardeEs mejor fracasar pronto que tarde–– Se dice que el UP esta Se dice que el UP esta dirigido por el riesgodirigido por el riesgo

Falta de habilidad o recursos, Falta de habilidad o recursos, tecnicostecnicos, facilidad de uso, facilidad de uso

Usuarios (clientes) involucrados continuamenteUsuarios (clientes) involucrados continuamenteAtención en las primeras etapas a construir una arquitectura básica cohesivaAtención en las primeras etapas a construir una arquitectura básica cohesiva

–– El UP esta centrado en la arquitectura El UP esta centrado en la arquitectura Atender el riesgo, ya que la arquitectura es un riesgoAtender el riesgo, ya que la arquitectura es un riesgoVerificar continuamente la calidad, desde el principio y con frecuencia.Verificar continuamente la calidad, desde el principio y con frecuencia.

–– El coste de los defectos se incrementa en el tiempoEl coste de los defectos se incrementa en el tiempoModelar el software visualmenteModelar el software visualmente

–– UML ha ido en UML ha ido en pareleloparelelo al UPal UP–– Un equilibrio entre muchos y pocos diagramasUn equilibrio entre muchos y pocos diagramas

Utilización de componentesUtilización de componentes–– Bloques software con una interfaz bien definida.Bloques software con una interfaz bien definida.

Aplicar casos de usoAplicar casos de uso–– ¿Que es un caso de uso?¿Que es un caso de uso?–– En contra de lo que es una lista de requisitosEn contra de lo que es una lista de requisitos

Gestión de requisitos cuidadosa.Gestión de requisitos cuidadosa.–– No se trata de congelar los requisitos en una etapa temprana del proceso, sino llevar un orden en No se trata de congelar los requisitos en una etapa temprana del proceso, sino llevar un orden en

los cambios y su gestiónlos cambios y su gestiónControl de cambiosControl de cambios

–– Aunque el UP sea un proceso adaptable, no se trata de que se pueda cambiar todo sobre la Aunque el UP sea un proceso adaptable, no se trata de que se pueda cambiar todo sobre la marcha. Los cambios se deben estudiar, justificarse, analizar su viabilidad y la influencia e marcha. Los cambios se deben estudiar, justificarse, analizar su viabilidad y la influencia e impacto sobre el proyectoimpacto sobre el proyecto

Aceptando los cambiosAceptando los cambios

En vez de luchar contra los En vez de luchar contra los cambios, mediante una cambios, mediante una planificación exhaustiva y planificación exhaustiva y “congelar” los requisitos“congelar” los requisitosNo fomenta la adición de No fomenta la adición de requisitos, pero si esta requisitos, pero si esta preparado para ella.preparado para ella.Retroalimentación en etapa Retroalimentación en etapa temprana vale su peso en oro:temprana vale su peso en oro:–– “Si, esto es lo que pedi, pero “Si, esto es lo que pedi, pero

ahora que lo veo, lo que ahora que lo veo, lo que quiero es…”quiero es…”

–– “No se entendio lo que pedi”“No se entendio lo que pedi”En las iteraciones iniciales, los En las iteraciones iniciales, los cambios son mayores:cambios son mayores:–– Las decisiones criticas se Las decisiones criticas se

toman aqui.toman aqui.–– La arquitectura se define aquí.La arquitectura se define aquí.

Early iterations are farther from the "true path" of the system. Via feedback and adaptation, the system converges towards the most appropriate requirements and design.

In late iterations, a significant change in requirements is rare, but can occur. Such late changes may give an organization a competitive business advantage.

one iteration of design, implement, integrate, and test

0

5

10

15

20

25

30

35

40

10 100 1000 10000Project Size in Function Points

Req

uire

men

ts c

hang

e

Page 16: cap1IntroIngSW.ppt [Modo de compatibilidad] · ADOO, mas allá de POO ... dentro de un proceso, en este caso ... –– Dirigido por casos de uso Dirigido por casos de uso

07/03/2011

16

Fases del UPFases del UPCuatro fasesCuatro fases

–– InicioInicioAnalisis del negocio, alcance, Analisis del negocio, alcance, viabilidad, estimaciones viabilidad, estimaciones imprecisasimprecisas

–– ElaboraciónElaboraciónNúcleo, mayor riesgoNúcleo, mayor riesgoCuando termina, se puede saber Cuando termina, se puede saber con mas exactitud los plazoscon mas exactitud los plazos

–– ConstrucciónConstrucciónMenor riesgoMenor riesgoPreparar despliegue (manuales Preparar despliegue (manuales de usuario, etc)de usuario, etc)Pruebas alfaPruebas alfa

–– TransiciónTransiciónPruebas beta, despliegue Pruebas beta, despliegue (conversion de datos, (conversion de datos, simultanear versiones, simultanear versiones, marketing)marketing)

No corresponden con requisitos, No corresponden con requisitos, diseño, implementacion!!diseño, implementacion!!

inc. elaboration construction transition

iteration phase

development cycle

release

A stable executable subset of the final product. The end of each iteration is a minor release.

increment

The difference (delta) between the releases of 2 subsequent iterations.

final production release

At this point, the system is released for production use.

milestone

An iteration end-point when some significant decision or evaluation occurs.

Disciplinas del UPDisciplinas del UP

¿Que son las disciplinas?¿Que son las disciplinas?–– Actividades de trabajoActividades de trabajo

Asociadas a la iteraciónAsociadas a la iteración–– RequisitosRequisitos–– Modelado del negocio (análisis)Modelado del negocio (análisis)–– DiseñoDiseño–– ImplementaciónImplementación–– PruebasPruebas

Asociadas a gestiónAsociadas a gestión–– Gestión del proyectoGestión del proyecto

Page 17: cap1IntroIngSW.ppt [Modo de compatibilidad] · ADOO, mas allá de POO ... dentro de un proceso, en este caso ... –– Dirigido por casos de uso Dirigido por casos de uso

07/03/2011

17

EjemploEjemplo

Iteration 1 Iteration 2 Iteration 3 Iteration 4 Iteration 5

20%2%

requ

irem

ents

softw

are

30%

5%

requ

irem

ents

softw

are

50%

8%

90% 90%

20%10%

requirements workshops

Imagine this will ultimately be a 20-iteration project.

In evolutionary iterative development, the requirements evolve over a set of the early iterations, through a series of requirements workshops (for example). Perhaps after four iterations and workshops, 90% of the requirements are defined and refined. Nevertheless, only 10% of the software is built.

1 2 3 4 5 ... 20

week 1

M T W Th F

week 2

M T W Th F

week 3

M T W Th F

kickoff meeting clarifying iteration goals with the team. 1 hour

team agile modeling & design, UML whiteboard sketching.5 hours

start coding & testing

a 3-week iteration

de-scope iteration goals if too much work

final check-in and code-freeze for the iteration baseline

demo and 2-day requirements workshop

next iteration planning meeting;2 hours

Most OOA/D and applying UML during this period

Use-case modeling during the workshop

Disciplinas del UPDisciplinas del UP

Business Modeling

Requirements

Design

Implementation

Test

Deployment

Configuration & Change Management

Project Management

Environment

Focus of this book

Note that although an iteration includes work in most disciplines, the relative effort and emphasis change over time.

This example is suggestive, not literal.

A four-week iteration (for example). A mini-project that includes work in most

disciplines, ending in a stable executable.

Page 18: cap1IntroIngSW.ppt [Modo de compatibilidad] · ADOO, mas allá de POO ... dentro de un proceso, en este caso ... –– Dirigido por casos de uso Dirigido por casos de uso

07/03/2011

18

Disciplinas y fasesDisciplinas y fases

SampleUP Disciplines

Business Modeling

Requirements

Design

Implementation

...

The relative effort in disciplines shifts across the phases.

This example is suggestive, not literal.

incep-tion elaboration construction transi-

tion

...

Marco de desarrolloMarco de desarrolloLa elección de los artefactos del UP para un proyecto La elección de los artefactos del UP para un proyecto concreto se puede recoger en un Marco de desarrollo concreto se puede recoger en un Marco de desarrollo (Curso: requisitos, análisis y diseño)(Curso: requisitos, análisis y diseño)Adaptación del UP a un proyecto concretoAdaptación del UP a un proyecto concreto

Page 19: cap1IntroIngSW.ppt [Modo de compatibilidad] · ADOO, mas allá de POO ... dentro de un proceso, en este caso ... –– Dirigido por casos de uso Dirigido por casos de uso

07/03/2011

19

UP ágilUP ágil

Proceso pesadoProceso pesado–– Muchos artefactos burocráticosMuchos artefactos burocráticos–– Rigidez y controlRigidez y control–– Planificación detalladaPlanificación detallada–– Predictivo mas que adaptablePredictivo mas que adaptable

Modelo secuencialModelo secuencialProceso ágilProceso ágil–– Adaptable y ligeroAdaptable y ligero–– Acepta el cambio como motor inevitableAcepta el cambio como motor inevitable–– Listo para responder rápido ante los cambiosListo para responder rápido ante los cambios–– Como se consigue:Como se consigue:

Optar por un conjunto pequeño de actividades y artefactosOptar por un conjunto pequeño de actividades y artefactosNo finalizar los requisitos antes del diseño e implementaciónNo finalizar los requisitos antes del diseño e implementaciónNo hay un plan detalladoNo hay un plan detallado

–– Plan de FASE (hitos importantes)Plan de FASE (hitos importantes)–– Plan de Iteración (una iteración por adelantado)Plan de Iteración (una iteración por adelantado)

No se entiende el UP si:No se entiende el UP si:

Se piensa que la fase de inicio=requisitos, elaboracion=diseño y Se piensa que la fase de inicio=requisitos, elaboracion=diseño y construccion=implementacionconstruccion=implementacionSe piensa que el objetivo de la elaboracion es definir modelos Se piensa que el objetivo de la elaboracion es definir modelos completos y cuidadososcompletos y cuidadososDentro de las iteraciones:Dentro de las iteraciones:–– Se intenta definir la mayoría de requisitos antes de comenzar el diseño y Se intenta definir la mayoría de requisitos antes de comenzar el diseño y

la implementaciónla implementación–– Se intenta definir totalmente el diseño antes de implementarSe intenta definir totalmente el diseño antes de implementar–– Se establecen iteraciones>6 semanas (excepto si cientos de Se establecen iteraciones>6 semanas (excepto si cientos de

programadores)programadores)–– Se piensa que los diagramas UML deben definir totalmente el código, de Se piensa que los diagramas UML deben definir totalmente el código, de

tal forma que este se hace automáticamentetal forma que este se hace automáticamenteSe piensa que UP obliga a seguir todas las disciplinas y crear muchos Se piensa que UP obliga a seguir todas las disciplinas y crear muchos documentos y que UP es un proceso formal y exigentedocumentos y que UP es un proceso formal y exigenteSe intenta planificar todo el proyecto en detalle desde el principio y Se intenta planificar todo el proyecto en detalle desde el principio y predecir de manera especulativa todas las iteracionespredecir de manera especulativa todas las iteracionesSe quieren planes y estimaciones creíbles antes de que termine la Se quieren planes y estimaciones creíbles antes de que termine la fase de elaboraciónfase de elaboración

Page 20: cap1IntroIngSW.ppt [Modo de compatibilidad] · ADOO, mas allá de POO ... dentro de un proceso, en este caso ... –– Dirigido por casos de uso Dirigido por casos de uso

07/03/2011

20

Programación ExtremaProgramación Extrema

XP. Kent BeckXP. Kent Beck–– ValoresValores

SimplicidadSimplicidadComunicaciónComunicaciónRetroalimentacionRetroalimentacionCorajeCorajeRespetoRespeto

CaracteristicasCaracteristicas–– Iterativo e incrementalIterativo e incremental–– Pruebas unitarias Pruebas unitarias

continuascontinuas–– Programación en Programación en

parejasparejas–– Integración del clienteIntegración del cliente–– RefactorizaciónRefactorización–– Propiedad código Propiedad código

compartidacompartida

PruebasPruebas

UnitariasUnitarias–– AutomatizablesAutomatizables–– CompletasCompletas–– IndependientesIndependientes–– RepetiblesRepetibles–– ProfesionalesProfesionales

VentajasVentajas–– Facilitan cambiosFacilitan cambios–– Facilitan integraciónFacilitan integración–– DocumentanDocumentan–– DepuraciónDepuración

IntegraciónIntegraciónValidaciónValidación–– AlfaAlfa–– BetaBeta

UsabilidadUsabilidad

Page 21: cap1IntroIngSW.ppt [Modo de compatibilidad] · ADOO, mas allá de POO ... dentro de un proceso, en este caso ... –– Dirigido por casos de uso Dirigido por casos de uso

07/03/2011

21

ÍndiceÍndice

IntroIntro¿Qué es el software y la ingeniería del software?¿Qué es el software y la ingeniería del software?–– Problemas de la Ingeniería del SoftwareProblemas de la Ingeniería del Software

El paradigma orientado a objetosEl paradigma orientado a objetos–– Programación estructurada vs. POOProgramación estructurada vs. POO–– POOPOO

Ciclo de vida del SWCiclo de vida del SW–– Modelo linealModelo lineal–– Modelo de construcción de prototiposModelo de construcción de prototipos–– Desarrollo rápido de aplicacionesDesarrollo rápido de aplicaciones–– Modelos evolutivosModelos evolutivos

El proceso unificadoEl proceso unificadoHerramientas caseHerramientas caseProblemasProblemas

Herramientas CASEHerramientas CASE

Computer Aided Software EngineeringComputer Aided Software Engineering–– Apoyo al desarrollo, mantenimiento y Apoyo al desarrollo, mantenimiento y

documentacion del SWdocumentacion del SWNo son CASENo son CASE–– Las que no tienen esa finalidadLas que no tienen esa finalidad–– Las que se utilizan para codificarLas que se utilizan para codificar

Tipos de herramientas CASETipos de herramientas CASE–– Diagramaticas (Rational Rose)Diagramaticas (Rational Rose)–– Gestión de cambios o versiones (CVS)Gestión de cambios o versiones (CVS)–– Documentación (Doxygen)Documentación (Doxygen)

Page 22: cap1IntroIngSW.ppt [Modo de compatibilidad] · ADOO, mas allá de POO ... dentro de un proceso, en este caso ... –– Dirigido por casos de uso Dirigido por casos de uso

07/03/2011

22

Herramientas CASEHerramientas CASE

CNiCanPort(f rom Functional)

CNiCanPortDlg(f rom Interf ace)

CIFBSimCamApp(f rom Interf ace)

CAboutDlg(f rom Interf ace)

CRealPort(f rom Functional)

CIFBSimServer(f rom Functional)

CIFB(f rom Functional)

CIFBSimCamDlg(f rom Interf ace)

+nican_port_dlg_a+nican_port_dlg_b

+server

CIFBCpu(f rom Functional)

+p_other_cpu

+cpu_a+cpu_b

CECSim(f rom Functional)

CIFBSim(f rom Functional)

+p_ifb_sim

1..36

1

1..36

1

+ifb_s imulator

+ec_a+ec_b

CXFibussPort(f rom Functional)

+port

CBusSim(f rom Functional)

#bus_a#bus_b

EjemploEjemplo

Juego de dados, se lanzan dos dados, Juego de dados, se lanzan dos dados, si suman 7 gana, en caso contrario si suman 7 gana, en caso contrario pierdepierde–– Utilizar primero programación Utilizar primero programación

estructuradaestructurada–– Utilizar luego POOUtilizar luego POO

Page 23: cap1IntroIngSW.ppt [Modo de compatibilidad] · ADOO, mas allá de POO ... dentro de un proceso, en este caso ... –– Dirigido por casos de uso Dirigido por casos de uso

07/03/2011

23

Programación Programación estructuradaestructurada

POOPOO

Casos de UsoCasos de Uso

Page 24: cap1IntroIngSW.ppt [Modo de compatibilidad] · ADOO, mas allá de POO ... dentro de un proceso, en este caso ... –– Dirigido por casos de uso Dirigido por casos de uso

07/03/2011

24

POOPOO

Análisis del DominioAnálisis del Dominio–– Diagrama de clasesDiagrama de clases

POOPOO

Análisis del DominioAnálisis del Dominio–– DSSDSS

Page 25: cap1IntroIngSW.ppt [Modo de compatibilidad] · ADOO, mas allá de POO ... dentro de un proceso, en este caso ... –– Dirigido por casos de uso Dirigido por casos de uso

07/03/2011

25

POOPOO

DiseñoDiseño

ImplementaciónImplementación