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
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
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
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)
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
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
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
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
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:
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
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
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
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
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.
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
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
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.
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
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
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
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)
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
07/03/2011
23
Programación Programación estructuradaestructurada
POOPOO
Casos de UsoCasos 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
07/03/2011
25
POOPOO
DiseñoDiseño
ImplementaciónImplementación