introducciÓn a la ingenierÍa del softwareis2_0910... · 2 1.1. introducción 1.2. la complejidad...
TRANSCRIPT
![Page 1: INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWAREIS2_0910... · 2 1.1. Introducción 1.2. La complejidad inherente del software 1.3. El ciclo de vida del software 1.4. Introducción a la](https://reader034.vdocumento.com/reader034/viewer/2022050101/5f40441e6499af34c57bfed6/html5/thumbnails/1.jpg)
1
INTRODUCCIÓNA LA INGENIERÍA DEL SOFTWARE
Bloque I. Tema 1.
Ingeniería del Software2º curso de ITISPaloma Cáceres
![Page 2: INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWAREIS2_0910... · 2 1.1. Introducción 1.2. La complejidad inherente del software 1.3. El ciclo de vida del software 1.4. Introducción a la](https://reader034.vdocumento.com/reader034/viewer/2022050101/5f40441e6499af34c57bfed6/html5/thumbnails/2.jpg)
2
1.1. Introducción
1.2. La complejidad inherente del software
1.3. El ciclo de vida del software
1.4. Introducción a la OO
![Page 3: INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWAREIS2_0910... · 2 1.1. Introducción 1.2. La complejidad inherente del software 1.3. El ciclo de vida del software 1.4. Introducción a la](https://reader034.vdocumento.com/reader034/viewer/2022050101/5f40441e6499af34c57bfed6/html5/thumbnails/3.jpg)
3
¿Qué es software?
????
![Page 4: INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWAREIS2_0910... · 2 1.1. Introducción 1.2. La complejidad inherente del software 1.3. El ciclo de vida del software 1.4. Introducción a la](https://reader034.vdocumento.com/reader034/viewer/2022050101/5f40441e6499af34c57bfed6/html5/thumbnails/4.jpg)
4
¿Qué es software?� Software son los programas, la
documentación y la configuración de los datos asociados.� Genéricos: Productos de uso genérico
(procesadores, bases de datos, etc.)� A medida: Productos específicos para un cliente
particular.
¡¡Son diferentes productos y más su especificación!!
![Page 5: INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWAREIS2_0910... · 2 1.1. Introducción 1.2. La complejidad inherente del software 1.3. El ciclo de vida del software 1.4. Introducción a la](https://reader034.vdocumento.com/reader034/viewer/2022050101/5f40441e6499af34c57bfed6/html5/thumbnails/5.jpg)
5
¿Qué es Ingeniería del Software?
“La Ingeniería del Software es la disciplina de ingeniería encargada de todos los aspectos relacionados con la producción de software desde sus etapas más tempranas de la especificación del sistema hasta el mantenimiento del sistema tras su puesta en marcha.”
![Page 6: INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWAREIS2_0910... · 2 1.1. Introducción 1.2. La complejidad inherente del software 1.3. El ciclo de vida del software 1.4. Introducción a la](https://reader034.vdocumento.com/reader034/viewer/2022050101/5f40441e6499af34c57bfed6/html5/thumbnails/6.jpg)
6
¿Qué es Ingeniería del Software?� “Disciplina de ingeniería”
� Uso apropiado de todas las herramientas, métodos y teorías para solucionar los problemas que aparecen. Incluso teniendo en cuenta restricciones económicas y de organización.
� “Todos los aspectos de la producción de software”� Procesos técnicos de desarrollo, dirección de
proyectos, generación de herramientas específicas para aplicar los métodos y teorías apropiados...
![Page 7: INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWAREIS2_0910... · 2 1.1. Introducción 1.2. La complejidad inherente del software 1.3. El ciclo de vida del software 1.4. Introducción a la](https://reader034.vdocumento.com/reader034/viewer/2022050101/5f40441e6499af34c57bfed6/html5/thumbnails/7.jpg)
7
Diferencia entre ingeniería del software y ciencia de la computación
� Ciencia de la computación: Teorías y métodos subyacentes a las computadoras y los sistemas software.
� Ingeniería del software: Resolución de problemas prácticos para producir software.
![Page 8: INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWAREIS2_0910... · 2 1.1. Introducción 1.2. La complejidad inherente del software 1.3. El ciclo de vida del software 1.4. Introducción a la](https://reader034.vdocumento.com/reader034/viewer/2022050101/5f40441e6499af34c57bfed6/html5/thumbnails/8.jpg)
8
Diferencia entre ingeniería del software e ingeniería de sistemas
� Los sistemas, hoy en día, incorporan software. Siendo un sistema algo más complejo que el software. Un sistema es un avión, una planta química.
� El software es una parte de casi todos los sistemas.
![Page 9: INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWAREIS2_0910... · 2 1.1. Introducción 1.2. La complejidad inherente del software 1.3. El ciclo de vida del software 1.4. Introducción a la](https://reader034.vdocumento.com/reader034/viewer/2022050101/5f40441e6499af34c57bfed6/html5/thumbnails/9.jpg)
9
¿Qué es el proceso software?
� Proceso software es el conjunto de actividades y resultados asociados para producir un producto software
� ¿¿ Procedimiento para matricularse en ITIS ??
� 4 actividades comunes:� Especificación software� Desarrollo software� Validación software� Evolución software
![Page 10: INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWAREIS2_0910... · 2 1.1. Introducción 1.2. La complejidad inherente del software 1.3. El ciclo de vida del software 1.4. Introducción a la](https://reader034.vdocumento.com/reader034/viewer/2022050101/5f40441e6499af34c57bfed6/html5/thumbnails/10.jpg)
10
Especificación software
� Los clientes e ingenieros definen el software a producir y las restricciones para su operación.
�Especificad cómo se hace una sangría
![Page 11: INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWAREIS2_0910... · 2 1.1. Introducción 1.2. La complejidad inherente del software 1.3. El ciclo de vida del software 1.4. Introducción a la](https://reader034.vdocumento.com/reader034/viewer/2022050101/5f40441e6499af34c57bfed6/html5/thumbnails/11.jpg)
11
Desarrollo software
� Relacionado con el diseño y programación del software.
�Realizad la sangría
![Page 12: INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWAREIS2_0910... · 2 1.1. Introducción 1.2. La complejidad inherente del software 1.3. El ciclo de vida del software 1.4. Introducción a la](https://reader034.vdocumento.com/reader034/viewer/2022050101/5f40441e6499af34c57bfed6/html5/thumbnails/12.jpg)
12
Validación del software
� El software se valida (comprueba) para asegurar que es lo que el cliente quiere y espera.
�Probad la sangría solos y luego dádsela a probar a quien os la encargó.
![Page 13: INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWAREIS2_0910... · 2 1.1. Introducción 1.2. La complejidad inherente del software 1.3. El ciclo de vida del software 1.4. Introducción a la](https://reader034.vdocumento.com/reader034/viewer/2022050101/5f40441e6499af34c57bfed6/html5/thumbnails/13.jpg)
13
Evolución del software
� El software se modifica para adaptarlo a los cambios solicitados por el cliente y/o a los requisitos del mercado.
�Echad más fruta o más azúcar a gusto del cliente. Y si hay diabéticos en la fiesta, haced una parte de sangría sin azúcar.
![Page 14: INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWAREIS2_0910... · 2 1.1. Introducción 1.2. La complejidad inherente del software 1.3. El ciclo de vida del software 1.4. Introducción a la](https://reader034.vdocumento.com/reader034/viewer/2022050101/5f40441e6499af34c57bfed6/html5/thumbnails/14.jpg)
14
¿Qué es un modelo de proceso software?� Modelo de proceso software es una descripción
simplificada de un proceso software (actividades, productos, roles,...)
� Modelos de proceso software� Modelo en cascada � Modelo incremental� Modelo de construcción de prototipos� Modelo en espiral
![Page 15: INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWAREIS2_0910... · 2 1.1. Introducción 1.2. La complejidad inherente del software 1.3. El ciclo de vida del software 1.4. Introducción a la](https://reader034.vdocumento.com/reader034/viewer/2022050101/5f40441e6499af34c57bfed6/html5/thumbnails/15.jpg)
15
Modelo en cascada
� Fases: Análisis, diseño, codificación y pruebas unitarias, integración y pruebas, explotación y mantenimiento
� Inicio de fase � Fin de la anterior� Resultados
� Requisitos bien entendidos
![Page 16: INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWAREIS2_0910... · 2 1.1. Introducción 1.2. La complejidad inherente del software 1.3. El ciclo de vida del software 1.4. Introducción a la](https://reader034.vdocumento.com/reader034/viewer/2022050101/5f40441e6499af34c57bfed6/html5/thumbnails/16.jpg)
16
Modelo en cascadaDefinición de requisitos
Diseño
Codificación ypr. unitarias
Integracióny pruebas
Operación ymantenimiento
![Page 17: INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWAREIS2_0910... · 2 1.1. Introducción 1.2. La complejidad inherente del software 1.3. El ciclo de vida del software 1.4. Introducción a la](https://reader034.vdocumento.com/reader034/viewer/2022050101/5f40441e6499af34c57bfed6/html5/thumbnails/17.jpg)
17
Modelo en cascada
� Críticas�No refleja realidad (hay iteraciones)
� Inversión de mucho tiempo�Producto funcionando en fase final
![Page 18: INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWAREIS2_0910... · 2 1.1. Introducción 1.2. La complejidad inherente del software 1.3. El ciclo de vida del software 1.4. Introducción a la](https://reader034.vdocumento.com/reader034/viewer/2022050101/5f40441e6499af34c57bfed6/html5/thumbnails/18.jpg)
18
Modelo incremental
� No lineal� Cada versión implica nuevas
funcionalidades� Integración de resultados
� Ajuste a proyectos de alta incertidumbre
![Page 19: INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWAREIS2_0910... · 2 1.1. Introducción 1.2. La complejidad inherente del software 1.3. El ciclo de vida del software 1.4. Introducción a la](https://reader034.vdocumento.com/reader034/viewer/2022050101/5f40441e6499af34c57bfed6/html5/thumbnails/19.jpg)
19
Modelo incremental
Definirrequisitos
Asignarrequisitos
a incrementos
Diseñar laarquitecturadel sistema
Desarrollarincremento
Validarincremento
Integrarincremento
Validarsistema
Sistema incompleto
Sistema final
![Page 20: INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWAREIS2_0910... · 2 1.1. Introducción 1.2. La complejidad inherente del software 1.3. El ciclo de vida del software 1.4. Introducción a la](https://reader034.vdocumento.com/reader034/viewer/2022050101/5f40441e6499af34c57bfed6/html5/thumbnails/20.jpg)
20
Modelo incremental
� Ventajas�Los clientes no tiene que esperar
�Los incrementos iniciales como prototipos�Requisitos críticos muy probados
� Problemas�¿Cómo deben ser los incrementos?
![Page 21: INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWAREIS2_0910... · 2 1.1. Introducción 1.2. La complejidad inherente del software 1.3. El ciclo de vida del software 1.4. Introducción a la](https://reader034.vdocumento.com/reader034/viewer/2022050101/5f40441e6499af34c57bfed6/html5/thumbnails/21.jpg)
21
Modelo construcción de prototipos� Clientes no muy explícitos� Responsable técnico no seguro
� Sistemas pequeños o de tiempo de vida corto
Construir /revisar prototipo
Cliente prueba el prototipo
Escucharal cliente
![Page 22: INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWAREIS2_0910... · 2 1.1. Introducción 1.2. La complejidad inherente del software 1.3. El ciclo de vida del software 1.4. Introducción a la](https://reader034.vdocumento.com/reader034/viewer/2022050101/5f40441e6499af34c57bfed6/html5/thumbnails/22.jpg)
22
Modelo construcción de prototipos� La especificación se desarrolla de forma
creciente y el cliente va viendo funcionalidades
� Pero:�estructura deficiente
�herramientas y técnicas específicas
![Page 23: INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWAREIS2_0910... · 2 1.1. Introducción 1.2. La complejidad inherente del software 1.3. El ciclo de vida del software 1.4. Introducción a la](https://reader034.vdocumento.com/reader034/viewer/2022050101/5f40441e6499af34c57bfed6/html5/thumbnails/23.jpg)
23
Modelo en espiral
� División del proyecto en ciclos� División en actividades estructurales
�Objetivos�Análisis de riesgos
�Desarrollo y validación�Planificación
� Cada ciclo se completa con una revisión
![Page 24: INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWAREIS2_0910... · 2 1.1. Introducción 1.2. La complejidad inherente del software 1.3. El ciclo de vida del software 1.4. Introducción a la](https://reader034.vdocumento.com/reader034/viewer/2022050101/5f40441e6499af34c57bfed6/html5/thumbnails/24.jpg)
24
Modelo en espiral
Riskanalysis
Riskanalysis
Riskanalysis
Riskanalysis Proto-
type 1
Prototype 2
Prototype 3Opera-tionalprotoype
Concept ofOperation
Simulations, models, benchmarks
S/Wrequirements
Requirementvalidation
DesignV&V
Productdesign Detailed
design
CodeUnit test
IntegrationtestAcceptance
testService Develop, verifynext-level product
Evaluate alternativesidentify, resolve risks
Determine objectivesalternatives and
constraints
Plan next phase
Integrationand test plan
Developmentplan
Requirements planLife-cycle plan
REVIEW
![Page 25: INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWAREIS2_0910... · 2 1.1. Introducción 1.2. La complejidad inherente del software 1.3. El ciclo de vida del software 1.4. Introducción a la](https://reader034.vdocumento.com/reader034/viewer/2022050101/5f40441e6499af34c57bfed6/html5/thumbnails/25.jpg)
25
Modelo en espiral
� Enfoque realista del desarrollo� Construcción de prototipos� Reduce los riesgos� Pero:
�Precisa expertos en riesgos
![Page 26: INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWAREIS2_0910... · 2 1.1. Introducción 1.2. La complejidad inherente del software 1.3. El ciclo de vida del software 1.4. Introducción a la](https://reader034.vdocumento.com/reader034/viewer/2022050101/5f40441e6499af34c57bfed6/html5/thumbnails/26.jpg)
26
¿Qué es CASE?
� CASE - Computer-Aided Software Engineering�Editores gráficos
�Generadores de código�Generadores de casos de prueba...
![Page 27: INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWAREIS2_0910... · 2 1.1. Introducción 1.2. La complejidad inherente del software 1.3. El ciclo de vida del software 1.4. Introducción a la](https://reader034.vdocumento.com/reader034/viewer/2022050101/5f40441e6499af34c57bfed6/html5/thumbnails/27.jpg)
27
Atributos de un buen software
� Mantenibilidad� Debe poder evolucionar para adecuarse a los cambios del
cliente o del negocio� Generadores de código
� Confiabilidad� Fiabilidad, protección y seguridad, por ejemplo. No daños físicos
ni económicos.� Eficiencia
� No malgastar recursos, como memoria y buenos tiempos de respuesta
� Usabilidad� Fácil de usar, sin esfuerzo adicional por parte del usuario.
Buena interfaz de usuario y documentación adecuada.
![Page 28: INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWAREIS2_0910... · 2 1.1. Introducción 1.2. La complejidad inherente del software 1.3. El ciclo de vida del software 1.4. Introducción a la](https://reader034.vdocumento.com/reader034/viewer/2022050101/5f40441e6499af34c57bfed6/html5/thumbnails/28.jpg)
28
1.1. Introducción
1.2. La complejidad inherente del software
1.3. El ciclo de vida del software
1.4. Introducción a la OO
![Page 29: INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWAREIS2_0910... · 2 1.1. Introducción 1.2. La complejidad inherente del software 1.3. El ciclo de vida del software 1.4. Introducción a la](https://reader034.vdocumento.com/reader034/viewer/2022050101/5f40441e6499af34c57bfed6/html5/thumbnails/29.jpg)
29
¿Por qué es complejo el software?
� Brooks: “La complejidad del software es una propiedad esencial y no accidental”
� Tres motivos:�La complejidad del dominio del problema.�La dificultad de controlar el proceso de
desarrollo.
�Los problemas para caracterizar sistemas discretos.
![Page 30: INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWAREIS2_0910... · 2 1.1. Introducción 1.2. La complejidad inherente del software 1.3. El ciclo de vida del software 1.4. Introducción a la](https://reader034.vdocumento.com/reader034/viewer/2022050101/5f40441e6499af34c57bfed6/html5/thumbnails/30.jpg)
30
La complejidad del dominio del problema (I)� Los problemas del mundo real son
complejos (miles de requisitos compitiendo y quizás contradictorios).
� Ahora, añade requerimientos no funcionales: eficiencia, coste, fiabilidad...
� Diferente perspectiva del mismo problema entre los usuarios y los desarrolladores.
![Page 31: INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWAREIS2_0910... · 2 1.1. Introducción 1.2. La complejidad inherente del software 1.3. El ciclo de vida del software 1.4. Introducción a la](https://reader034.vdocumento.com/reader034/viewer/2022050101/5f40441e6499af34c57bfed6/html5/thumbnails/31.jpg)
31
La complejidad del dominio del problema (y II)� Los requerimientos cambian durante el desarrollo.� Los grandes sistemas evolucionan a lo largo del tiempo:
� Mantenimiento: corregir errores.� Evolución: cambios de requerimientos.� Conservación: uso continuo de medios extraordinarios para
mantener operativo un sistema viejo.
� Ejemplo: ¿Podéis resumir qué pasos hay que dar para matricularos en la UNIVERSIDAD?
� Ejemplo: ¿Podéis resumir qué pasos hay que dar para solicitar una hipoteca bancaria?
![Page 32: INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWAREIS2_0910... · 2 1.1. Introducción 1.2. La complejidad inherente del software 1.3. El ciclo de vida del software 1.4. Introducción a la](https://reader034.vdocumento.com/reader034/viewer/2022050101/5f40441e6499af34c57bfed6/html5/thumbnails/32.jpg)
32
La dificultad de controlar el proceso de desarrollo (I)� Hay que dar impresión de simplicidad.
¡Imposible!� Miles de líneas de código. Atajar con
reutilización (de código, diseños reutilizables-patrones)
� Abordar complejidad por “divide y vencerás” ���� obtener módulos
� Aún así, cientos o miles de módulos.
![Page 33: INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWAREIS2_0910... · 2 1.1. Introducción 1.2. La complejidad inherente del software 1.3. El ciclo de vida del software 1.4. Introducción a la](https://reader034.vdocumento.com/reader034/viewer/2022050101/5f40441e6499af34c57bfed6/html5/thumbnails/33.jpg)
33
La dificultad de controlar el proceso de desarrollo (y II)
� Se necesita un equipo de desarrolladores
� Cuanto más cercanos entre sí, ¡¡mejor!!
![Page 34: INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWAREIS2_0910... · 2 1.1. Introducción 1.2. La complejidad inherente del software 1.3. El ciclo de vida del software 1.4. Introducción a la](https://reader034.vdocumento.com/reader034/viewer/2022050101/5f40441e6499af34c57bfed6/html5/thumbnails/34.jpg)
34
Los problemas para caracterizar sistemas discretos (I)� El software trabaja con sistemas con
estados discretos:�Conjunto de variables.
�Flujos de control.�Eventos externos.
� Los valores de cada uno dan el estado del sistema.
� El mundo real es analógico se puede describir por funciones continuas.
![Page 35: INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWAREIS2_0910... · 2 1.1. Introducción 1.2. La complejidad inherente del software 1.3. El ciclo de vida del software 1.4. Introducción a la](https://reader034.vdocumento.com/reader034/viewer/2022050101/5f40441e6499af34c57bfed6/html5/thumbnails/35.jpg)
35
Los problemas para caracterizar sistemas discretos (y II)� En sistemas discretos la transición entre
estados no puede modelarse con funciones continuas
� Cada evento externo puede cambiar el estado del sistema. ¿Al estado correcto y previsible?
� Necesidad de pruebas� complejo, costoso y en ocasiones imposible que
sean exhaustivas
� Ejemplo : Identificar estados (situaciones diferentes) en un reloj digital
![Page 36: INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWAREIS2_0910... · 2 1.1. Introducción 1.2. La complejidad inherente del software 1.3. El ciclo de vida del software 1.4. Introducción a la](https://reader034.vdocumento.com/reader034/viewer/2022050101/5f40441e6499af34c57bfed6/html5/thumbnails/36.jpg)
36
Ejercicio
Un reloj digital tiene una pantalla y dos botones p ara accionarlo, el botón A y el botón B. El reloj tiene dos modos de operación, visualizar la hora y establecer la. En el modo de visualización aparecen las horas y lo s minutos separados por dos puntos (:) intermitentes. El modo de establecer la hora tiene dos submodos: pone r las horas y poner los minutos. El botón A se utiliz a para seleccionar el modo de operación. Cada vez que se aprieta, el modo avanza en secuencia: visualizar la hora, poner hora, poner minutos, visualizar la hora , etc. Dentro de los submodos, el botón B se utiliza para avanzar una hora o un minuto cada vez que se apriet a. Prepare un diagrama de estados del reloj.
![Page 37: INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWAREIS2_0910... · 2 1.1. Introducción 1.2. La complejidad inherente del software 1.3. El ciclo de vida del software 1.4. Introducción a la](https://reader034.vdocumento.com/reader034/viewer/2022050101/5f40441e6499af34c57bfed6/html5/thumbnails/37.jpg)
37
Solución
![Page 38: INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWAREIS2_0910... · 2 1.1. Introducción 1.2. La complejidad inherente del software 1.3. El ciclo de vida del software 1.4. Introducción a la](https://reader034.vdocumento.com/reader034/viewer/2022050101/5f40441e6499af34c57bfed6/html5/thumbnails/38.jpg)
38
EjercicioUn semáforo de circulación, que tiene un visor para vehículos y otro para peatones, tiene el siguiente funcionamiento: El visor para vehículos muestra de forma alterna el color rojo, verde y ámbar. El viso r para peatones muestra igualmente el color rojo, verde y verde intermitente. El semáforo cada cierto tiempo cambia de estado para permitir el paso tanto de peatones como de vehículos, siendo estos tiempos programables por agentes de la circulación. Representar el diagrama de estados de funcionamient o de dicho semáforo.Modificar el diagrama, incluyendo un botón que permitirá el paso a los peatones cuando lo soliciten . Considere que el semáforo garantiza el paso de vehículos durante un tiempo mínimo.
![Page 39: INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWAREIS2_0910... · 2 1.1. Introducción 1.2. La complejidad inherente del software 1.3. El ciclo de vida del software 1.4. Introducción a la](https://reader034.vdocumento.com/reader034/viewer/2022050101/5f40441e6499af34c57bfed6/html5/thumbnails/39.jpg)
39
1.1. Introducción
1.2. La complejidad inherente del software
1.3. El ciclo de vida del software
1.4. Introducción a la OO
![Page 40: INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWAREIS2_0910... · 2 1.1. Introducción 1.2. La complejidad inherente del software 1.3. El ciclo de vida del software 1.4. Introducción a la](https://reader034.vdocumento.com/reader034/viewer/2022050101/5f40441e6499af34c57bfed6/html5/thumbnails/40.jpg)
40
Introducción al Ciclo de vida� Procesos: Conjunto de actividades para la producción de
software� Actividades: Conjunto de tareas� Tarea: Acción que transforma E en S
� Ciclo de desarrollo (Requisitos, análisis, diseño, implementación y pruebas).
� Requisitos <-> Entrega
� Ciclo de vida (Adquisición, suministro, desarrollo, explotación y mantenimiento del sw (IEEE 1074)).
� Concepción <-> Retirada
tCon
cepc
ión
Ret
irada
Req
uisi
tos
Ent
rega
![Page 41: INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWAREIS2_0910... · 2 1.1. Introducción 1.2. La complejidad inherente del software 1.3. El ciclo de vida del software 1.4. Introducción a la](https://reader034.vdocumento.com/reader034/viewer/2022050101/5f40441e6499af34c57bfed6/html5/thumbnails/41.jpg)
41
1.1. Introducción
1.2. La complejidad inherente del software
1.3. El ciclo de vida del software
1.4. Metodología PU (e Introducción a la OO)
![Page 42: INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWAREIS2_0910... · 2 1.1. Introducción 1.2. La complejidad inherente del software 1.3. El ciclo de vida del software 1.4. Introducción a la](https://reader034.vdocumento.com/reader034/viewer/2022050101/5f40441e6499af34c57bfed6/html5/thumbnails/42.jpg)
42
UN EJEMPLO:El Proceso Unificado de Desarrollo
The unified software development process, Ivar Jacobson, Grade Booch, James Rumbaug, Ed. Addison Wesley, 1999
El proceso unificado de desarrollo, Ivar Jacobson, Grade Booch, James Rumbaug, Ed. Addison Wesley, 1999
![Page 43: INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWAREIS2_0910... · 2 1.1. Introducción 1.2. La complejidad inherente del software 1.3. El ciclo de vida del software 1.4. Introducción a la](https://reader034.vdocumento.com/reader034/viewer/2022050101/5f40441e6499af34c57bfed6/html5/thumbnails/43.jpg)
43
Introducción
� Sistemas más complejos y más grandes.� Objetivo:
Desarrollo más rápido y software de calidad.� Es necesario un proceso que integre todas las facetas
de un desarrollo software:� De una guía para ordenar las actividades del equipo.� Dirija las tareas individuales y del equipo.� Especifique los productos que hay que desarrollar.� Ofrezca criterios para monitorizar y medir los
productos y actividades.
![Page 44: INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWAREIS2_0910... · 2 1.1. Introducción 1.2. La complejidad inherente del software 1.3. El ciclo de vida del software 1.4. Introducción a la](https://reader034.vdocumento.com/reader034/viewer/2022050101/5f40441e6499af34c57bfed6/html5/thumbnails/44.jpg)
44
El Proceso Unificado (UP)
� Unificación de tres metodologías de desarrollo basadas en el paradigma orientado a objetos.
�OOSE: Object Oriented Software Engineering(Casos de Uso) Jacobson, I.
�Booch (Diseño) Booch, G.
�OMT: Object Modeling Technique (Análisis) Rumbaugh, J.
![Page 45: INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWAREIS2_0910... · 2 1.1. Introducción 1.2. La complejidad inherente del software 1.3. El ciclo de vida del software 1.4. Introducción a la](https://reader034.vdocumento.com/reader034/viewer/2022050101/5f40441e6499af34c57bfed6/html5/thumbnails/45.jpg)
45
El Proceso Unificado (UP)
� Es un proceso de desarrollo software.� Un pds es un conjunto de actividades para
transformar los requisitos de usuario en un sistema software.
� Usa UML - Unified Modeling Language� Está caracterizado por:
� Dirigido por casos de uso.
� Centrado en la arquitectura.
� Iterativo e incremental.
![Page 46: INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWAREIS2_0910... · 2 1.1. Introducción 1.2. La complejidad inherente del software 1.3. El ciclo de vida del software 1.4. Introducción a la](https://reader034.vdocumento.com/reader034/viewer/2022050101/5f40441e6499af34c57bfed6/html5/thumbnails/46.jpg)
46
Dirigido por casos de uso
� Actor: alguien o algo.� Si hay una interacción del sistema con alguien o algo,
tiene que haber un caso de uso. (ejemplo cajero)� Un caso de uso:
� Es una función del sistema que da al actor un resultado útil o de interés.
� Captura los requisitos funcionales.� ¿Qué debe hacer el sistema para cada actor?� Modelo de casos de uso.
![Page 47: INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWAREIS2_0910... · 2 1.1. Introducción 1.2. La complejidad inherente del software 1.3. El ciclo de vida del software 1.4. Introducción a la](https://reader034.vdocumento.com/reader034/viewer/2022050101/5f40441e6499af34c57bfed6/html5/thumbnails/47.jpg)
47
Dirigido por casos de uso
� Conducen el proceso de desarrollo:� Los desarrolladores crean modelos de diseño e
implementación que realizan los casos de uso.� Los encargados de pruebas aseguran que los
componentes implementan los casos de uso.� Los casos de uso se especifican, se diseñan y sirven de
base para construir los casos de prueba.� Se desarrollan junto a la arquitectura del sistema.� Ambos evolucionan paralelamente.
![Page 48: INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWAREIS2_0910... · 2 1.1. Introducción 1.2. La complejidad inherente del software 1.3. El ciclo de vida del software 1.4. Introducción a la](https://reader034.vdocumento.com/reader034/viewer/2022050101/5f40441e6499af34c57bfed6/html5/thumbnails/48.jpg)
48
Iterativo - Incremental� División del proyecto.� Una iteración produce un incremento.� Iteraciones controladas.� Factores para la selección en una iteración:
� La iteración trata un grupo de casos que extienden la funcionalidad.
� La iteración trata los riesgos más importantes.� Cada iteración:
casos relevantes-diseño quiado por arquitectura- implementar-verificar
� Beneficios.
![Page 49: INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWAREIS2_0910... · 2 1.1. Introducción 1.2. La complejidad inherente del software 1.3. El ciclo de vida del software 1.4. Introducción a la](https://reader034.vdocumento.com/reader034/viewer/2022050101/5f40441e6499af34c57bfed6/html5/thumbnails/49.jpg)
49
Modelo Incremental
Análisis Diseño e Implantación GeneralizaciónPrueba
Análisis Diseño e Implantación GeneralizaciónPrueba
Análisis Diseño e Implantación GeneralizaciónPrueba
Grupo 1
Grupo 2
Grupo n
Tiempo
Tiempo
T
![Page 50: INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWAREIS2_0910... · 2 1.1. Introducción 1.2. La complejidad inherente del software 1.3. El ciclo de vida del software 1.4. Introducción a la](https://reader034.vdocumento.com/reader034/viewer/2022050101/5f40441e6499af34c57bfed6/html5/thumbnails/50.jpg)
50
Ciclo de vida
...
Entrega
Ciclos
Concepción Elaboración TransiciónConstrucción
Iter.1
Iter.2
... ...... ... ... ...Iter.n
Fases
Iterac.
� Varios ciclos que concluyen con un producto.� Código fuente, manuales y documentos.� Hitos por fases
![Page 51: INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWAREIS2_0910... · 2 1.1. Introducción 1.2. La complejidad inherente del software 1.3. El ciclo de vida del software 1.4. Introducción a la](https://reader034.vdocumento.com/reader034/viewer/2022050101/5f40441e6499af34c57bfed6/html5/thumbnails/51.jpg)
51
El productoModelo de análisis
Modelo de diseño
Modelo de despliegue
Modelo de implementación
Modelo de pruebas
Modelo de casos de uso
Especificado por
Soportado por
Distribuido por
Implementado por
Verificado por
![Page 52: INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWAREIS2_0910... · 2 1.1. Introducción 1.2. La complejidad inherente del software 1.3. El ciclo de vida del software 1.4. Introducción a la](https://reader034.vdocumento.com/reader034/viewer/2022050101/5f40441e6499af34c57bfed6/html5/thumbnails/52.jpg)
52
Fases en un ciclo
Requisitos
Diseño
Implementación
Prueba
Análisis
PlanificaciónAnál. RiesgosPreparación
Elaboración ConstrucciónVerificación
Transición
FASES
Workflow
Iteración-esInicial-es
Iter. #1
Iter. #2
Iter. #3
Iter. #4
Iter. #5
Iter. #6
Iter. #7
(Adaptado de Jacobson, 1999)
Iteración en Fase de Elaboración
![Page 53: INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWAREIS2_0910... · 2 1.1. Introducción 1.2. La complejidad inherente del software 1.3. El ciclo de vida del software 1.4. Introducción a la](https://reader034.vdocumento.com/reader034/viewer/2022050101/5f40441e6499af34c57bfed6/html5/thumbnails/53.jpg)
53
1.1. Introducción
1.2. La complejidad inherente del software
1.3. El ciclo de vida del software
1.4. Introducción a la OO
![Page 54: INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWAREIS2_0910... · 2 1.1. Introducción 1.2. La complejidad inherente del software 1.3. El ciclo de vida del software 1.4. Introducción a la](https://reader034.vdocumento.com/reader034/viewer/2022050101/5f40441e6499af34c57bfed6/html5/thumbnails/54.jpg)
54
Qué es Orientado a Objetos
� Organizar el software como una colección de objetos que contiene tanto estructuras de datos como comportamiento.
� Características� Identidad
�Clasificación�Polimorfismo
�Herencia
![Page 55: INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWAREIS2_0910... · 2 1.1. Introducción 1.2. La complejidad inherente del software 1.3. El ciclo de vida del software 1.4. Introducción a la](https://reader034.vdocumento.com/reader034/viewer/2022050101/5f40441e6499af34c57bfed6/html5/thumbnails/55.jpg)
55
Características de los Objetos
� Identidad� Los datos se cuantifican en objetos
� Clasificación� Objetos con la misma estructura de datos y
comportamiento se aglutinan y forman una clase� Polimorfismo
� Una misma operación puede comportarse de distinto modo en clases distintas (Calcular perímetro –Cuadrado, Círculo-, Mover Ficha –parchís, ajedrez-)
� Herencia� Compartir atributos y operaciones entre clases que
tienen una relación jerárquica
![Page 56: INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWAREIS2_0910... · 2 1.1. Introducción 1.2. La complejidad inherente del software 1.3. El ciclo de vida del software 1.4. Introducción a la](https://reader034.vdocumento.com/reader034/viewer/2022050101/5f40441e6499af34c57bfed6/html5/thumbnails/56.jpg)
56
Memoriaprivada
Operación a
Operación b
Operación c
Operación d
Protocolo de Comunicación-con el exterior-
Operacionesprivadas
Objeto
� Objeto: atributos + procedimientos (métodos, operaciones, servicios)
![Page 57: INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWAREIS2_0910... · 2 1.1. Introducción 1.2. La complejidad inherente del software 1.3. El ciclo de vida del software 1.4. Introducción a la](https://reader034.vdocumento.com/reader034/viewer/2022050101/5f40441e6499af34c57bfed6/html5/thumbnails/57.jpg)
57
� Los objetos son módulos software que contienen datos y funciones
� Cada objeto tiene su responsabilidad� Acceso a la memoria privada: solo
mediante operaciones en el protocolo� Protocolo: define el comportamiento del
objeto
Objeto
![Page 58: INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWAREIS2_0910... · 2 1.1. Introducción 1.2. La complejidad inherente del software 1.3. El ciclo de vida del software 1.4. Introducción a la](https://reader034.vdocumento.com/reader034/viewer/2022050101/5f40441e6499af34c57bfed6/html5/thumbnails/58.jpg)
58
Objeto. EjemploTUNE
VOLUME TONE BALANCE
L H L H L H
ON OFF
FM AM
FM 88 90 93 97 100 102 Mhz
AM 530 650 850 900 1200 Khz
memoria privada:estado del volumen estado del tonoestado del balance AM/FMapagado/encendido frecuencia seleccionadacassette introducido
![Page 59: INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWAREIS2_0910... · 2 1.1. Introducción 1.2. La complejidad inherente del software 1.3. El ciclo de vida del software 1.4. Introducción a la](https://reader034.vdocumento.com/reader034/viewer/2022050101/5f40441e6499af34c57bfed6/html5/thumbnails/59.jpg)
59
Objeto. Ejemplo
� protocolo :acciona volumen acciona tonoacciona balance selecciona AM/FMapaga/enciende selecciona frecuenciaavanza cinta
� operaciones privadas :reproducir otra cara cuando cinta al final
![Page 60: INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWAREIS2_0910... · 2 1.1. Introducción 1.2. La complejidad inherente del software 1.3. El ciclo de vida del software 1.4. Introducción a la](https://reader034.vdocumento.com/reader034/viewer/2022050101/5f40441e6499af34c57bfed6/html5/thumbnails/60.jpg)
60
Mensajes� Un mensaje es una solicitud de un servicio a un
objeto. Llamada a una rutina. Formado por :� Objeto.Método
� Método es una descripción formal de cómo la clase implementa un mensaje
� Participantes� Objeto Emisor (Agente activo)� Objeto Receptor (Agente pasivo). El método debe
estar definido y ser de la interfaz. � Los mensajes aparecen en el código del que llama.� Un objeto siempre devuelve otro objeto (a veces él
mismo) como respuesta a un mensaje
![Page 61: INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWAREIS2_0910... · 2 1.1. Introducción 1.2. La complejidad inherente del software 1.3. El ciclo de vida del software 1.4. Introducción a la](https://reader034.vdocumento.com/reader034/viewer/2022050101/5f40441e6499af34c57bfed6/html5/thumbnails/61.jpg)
61
Clases
� Una clase es una abstracción de un objeto. Una especificación para un nº arbitrario de objetos similares (profesor, nómina, coche, ordenador)
� Describe el comportamiento y los atributos de los objetos que representa la clase.
� Un objeto es una instancia de una clase. Todas las instancias de una misma clase tienen la misma memoria privada (seguramente con diferentes valores).
� Es la unidad modular en el paradigma OO
![Page 62: INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWAREIS2_0910... · 2 1.1. Introducción 1.2. La complejidad inherente del software 1.3. El ciclo de vida del software 1.4. Introducción a la](https://reader034.vdocumento.com/reader034/viewer/2022050101/5f40441e6499af34c57bfed6/html5/thumbnails/62.jpg)
62
� Es un mecanismo que permite definir una clase a partir de otra. La nueva clase hereda todos los atributos y métodos de la clase antecesora
� Si A es subclase de B:� A hereda de B� A es un refinamiento de B� A está más especializada que B� A es una subclase de B� B es superclase de A
� “es un”: A es un B� Tipos de herencia: simple y múltiple
Herencia
B
A
![Page 63: INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWAREIS2_0910... · 2 1.1. Introducción 1.2. La complejidad inherente del software 1.3. El ciclo de vida del software 1.4. Introducción a la](https://reader034.vdocumento.com/reader034/viewer/2022050101/5f40441e6499af34c57bfed6/html5/thumbnails/63.jpg)
63
Herencia simpleFigura:
colorrota, mueve, dibuja
F_cerrada:perímetro, área
Polígono:número_lados
Cuadrilátero:perímetro, área
Cuadrado:perímetro, área
Círculo:radioperímetro
Figura
F_abierta F_cerrada
Polígono
Triángulo Cuadrilátero
Cuadrado
Elipse
Círculo
![Page 64: INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWAREIS2_0910... · 2 1.1. Introducción 1.2. La complejidad inherente del software 1.3. El ciclo de vida del software 1.4. Introducción a la](https://reader034.vdocumento.com/reader034/viewer/2022050101/5f40441e6499af34c57bfed6/html5/thumbnails/64.jpg)
64
Herencia simple
Todas las figuras se pueden:rotarescalar
Todas tienen un color
Clases abstractas:FiguraF_CerradaF_AbiertaPolígono
Figura
F_abierta F_cerrada
Polígono
Triángulo Cuadrilátero
Cuadrado
Elipse
Círculo
![Page 65: INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWAREIS2_0910... · 2 1.1. Introducción 1.2. La complejidad inherente del software 1.3. El ciclo de vida del software 1.4. Introducción a la](https://reader034.vdocumento.com/reader034/viewer/2022050101/5f40441e6499af34c57bfed6/html5/thumbnails/65.jpg)
65
Polimorfismo
� Es la habilidad de dos o más clases de objetos de responder al mismo mensaje de forma diferente
� Por ejemplo: Perímetro � En las clases Cuadrado, Circulo, Triangulo se
puede definir el método Perimetro cada uno especializado para su clase
![Page 66: INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWAREIS2_0910... · 2 1.1. Introducción 1.2. La complejidad inherente del software 1.3. El ciclo de vida del software 1.4. Introducción a la](https://reader034.vdocumento.com/reader034/viewer/2022050101/5f40441e6499af34c57bfed6/html5/thumbnails/66.jpg)
66
Bases del Paradigma OO
� Abstracción: Proceso mental por el que el ser humano extrae las características esenciales de algo, e ignora los detalles superfluos
� Encapsulación: Proceso por el que se ocultan los detalles de las características de una abstracción
![Page 67: INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWAREIS2_0910... · 2 1.1. Introducción 1.2. La complejidad inherente del software 1.3. El ciclo de vida del software 1.4. Introducción a la](https://reader034.vdocumento.com/reader034/viewer/2022050101/5f40441e6499af34c57bfed6/html5/thumbnails/67.jpg)
67
Bases del Paradigma OO� Modularización:
Proceso de descomposición de un sistema en un conjunto de elementos con un índice bajo acoplamiento (independientes) y alto índice de cohesión (con significado propio)
� Jerarquización: Proceso de estructuración por el que se organizan un conjunto de elementos en distintos niveles, atendiendo a determinados criterios