SlideShare una empresa de Scribd logo
1 de 54
Descargar para leer sin conexión
Análisis y Diseño
de Software

Introducción
Análisis y Diseño
Carlos A. Iglesias <cif@gsi.dit.upm.es>

Departamento de Ingeniería de Sistemas Telemáticos
http://moodle.dit.upm.es
Temario
●

Ciclo de vida software

●

Análisis y Diseño Software

●

Técnicas OO de Diseño Descendente
–
–

●

Tarjetas CRC
Identificación de clases y métodos

Técnicas de Diseño Ascendente
–

●

Refactorización y Patrones de Diseño

Pruebas
Introducción. Diseño

2
Leyenda
Teoría

Ejercicio práctico en el ordenador

Ampliación de conocimientos

Lectura / Vídeo / Podcast

Práctica libre / Experimentación

Introducción. Diseño

3
Objetivos
●

Entender el ciclo de vida del software

Conocer qué es el análisis y el diseño
software
●

●

Aprender técnicas de diseño básicas

Aplicar estas técnicas en el desarrollo de
un programa Java
●

Introducción. Diseño

4
Ciclo de vida sofware
SDLC – Software
Development Life
Cycle
●

Fases de desarrollo
software
●

Introducción. Diseño

5
Fases del ciclo de vida

Introducción. Diseño

6
Secuenciación SDLC
Clásico o en
cascada (waterfall):
fases sucesivas
●

Iterativo o espiral:
cascada sucesiva
●

Ágil: énfasis en
código de calidad, e
ir haciendo mejoras
en el código
●

Introducción. Diseño

7
Análisis software

Introducción. Diseño

8
Diseño software y
programación

Introducción. Diseño

9
Venta e Instalación en el
cliente

Introducción. Diseño

10
Operación y facturación

Introducción. Diseño

11
Soporte

Introducción. Diseño

12
SDLC
¿Qué diferencias
ves entre una
secuencia en
cascada o en
espiral?
●

¿Qué contratarías?

●

¿Qué seguirías si
montas una startup?
●

Introducción. Diseño

13
Análisis Software = QUÉ
Determinar qué
quiere realmente el
usuario
●

Permitir valorar qué
es importante y qué
no de entre las
cosas que pide
●

Introducción. Diseño

14
Análisis
¿Piensas que es
difícil entender qué
quiere un usuario?
¿Por qué?
●

¿Qué sucede si le
entendemos mal?
●

Introducción. Diseño

15
Evaluación de alternativas
Viendo qué quiere el
cliente, podemos:
●

–

Realizarlo nosotros (y
pasamos a diseño)

–

Subcontrarlo

–

Comprar un producto
(COTS,
Commercial-Off-TheSh
elf Software)
•

Licencia o servicio en la
nube

Introducción. Diseño

16
Evaluar alternativas
¿Qué criterios
seguirías para
diseñar, subcontratar
o comprar un
producto?
●

¿Qué opción es la
más habitual?
●

Introducción. Diseño

17
Diseño Software = CÓMO
Determinamos qué
elementos SW
(paquetes, clases,
métodos, funciones,
…) realizan las
funcionalidades que
deseamos
●

Introducción. Diseño

18
Diseño
¿Crees que hay un
diseño que es 'el
bueno'?
●

¿Son todos los
posibles diseños
igual de buenos?
●

¿Cómo sabes si un
diseño es 'bueno'?
●

Introducción. Diseño

19
Desarrollo software...

Introducción. Diseño

20
Especificación de requisitos
Lista de cosas que el proyecto debe
cumplir
●

–

Normalmente priorizados (obligatorios,
opcionales, deseables)

–

Distinguimos entre
•
•

Qué debe hacer = requisitos funcionales
Requisitos y preferencias que deseamos que
cumpla (requisitos no funcionales)
–

Seguridad, Almacenamiento, Compatibilidad con una
plataforma, Velocidad, Eficiencia, ...
Introducción. Diseño

21
Técnicas de especificación
●

Casos de uso
–

Ver cómo el usuario
'usa el sistema'

–

Distinguimos casos
'normales' y
excepciones (qué
pasa si hay un error)

Introducción. Diseño

22
Diseño
Depende del paradigma de programación
(objetos, funciones, …)
●

… e incluso del framework (Android, ...)

●

Introducción. Diseño

23
Paradigmas y lenguajes de
programación

Introducción. Diseño

24
Estrategias de Diseño
Diseño

Descendente (top-down)

Ascendente (bottom-up)

Técnicas: especificación diseño

Técnicas: refactorización

Programación

Introducción. Diseño

25
Especificación diseño OO
Identificamos clases
principales, sus
atributos y relaciones
●

–

Tarjetas CRC

–

Análisis del dominio
(nombres, ...)

Empleamos una
notación gráfica
●

–

UML (Unified Modeling
Language)
Introducción. Diseño

26
Identificación Clases
●

Identifica clases candidatas
–

Busca nombres y frases nominales (clases),
adjetivos (atributos) y verbos (métodos) en
casos de uso o descripción del problema

–

Técnica tarjetas CRC
(Class-Resonsibility-Collaborator)

Introducción. Diseño

27
Tarjetas CRC

Introducción. Diseño

28
Calidad del diseño
●

Acoplamiento
–

●

Cambios de código en una clase, implica
cambiar otra(s)

Cohesión
–

Variedad de funcionalidades
(responsabilidades) que debe realizar una
clase

Introducción. Diseño

29
Ejemplo

Introducción. Diseño

30
Ejemplo

Introducción. Diseño

31
Refactorización
Introducimos buenas prácticas en el
código
●

●

Normalmente asistidos por el IDE

●

Ejemplos
–

Renombrar una variable

–

Extraer una interfaz de una clase

–

Extraer un método de un trozo de código

–

Eliminar variables auxiliares
Introducción. Diseño

32
Ejemplo – Eliminar variables
auxiliares
public boolean bisiesto(int año) {
return (año % 4 == 0 && (!(año % 100 == 0))) || año % 400 == 0;
}

public boolean bisiesto(int año) {
boolean multiplo4 = año % 4 == 0;
boolean multiplo100 = año % 100 == 0;
boolean multiplo400 = año % 400 == 0;
return (multiplo4 && (! multiplo100)) ||
multiplo400;
}

Introducción. Diseño

33
Ejemplo. Extraer métodos
// cálculo de la diagonal mayor de un paralepípedo rectangular
public double getDiagonalMayor(double a, double b, double c) {
return Math.sqrt(Math.sqrt(a * a + b * b) *
Math.sqrt(a * a + b * b) + c * c);
}
// cáclulo de la diagonal mayor de un paralepípedo rectangular
public double getDiagonalMayor(double a, double b, double c) {
return hipotenusa(hipotenusa(a, b), c);
}
 
// teorema de Pitágoras
private double hipotenusa(double x, double y) {
return Math.sqrt(x * x + y * y);
}
Introducción. Diseño

34
Ejemplo. Extraer métodos
public void testSimetria(String s) {
boolean esSimetrica = true;
for (int i = 0; i < s.length(); i++) {
int j = s.length() - 1 - i;
if (j < i)
break;
char c1 = s.charAt(i);
char c2 = s.charAt(j);
if (c1 != c2) {
esSimetrica = false;
break;
}
}
System.out.println(esSimetrica);
}

public void testSimetria2(String s) {
System.out.println(isSimetrica(s));
}
 
private boolean isSimetrica(String s) {
for (int i = 0; i < s.length(); i++) {
int j = s.length() - 1 - i;
if (j < i)
return true;
char c1 = s.charAt(i);
char c2 = s.charAt(j);
if (c1 != c2)
return false;
}
return true;
}

Introducción. Diseño

35
Fallos típicos

http://jungla.dit.upm.es/~pepe/doc/adsw/apuntes/fallos.htm
Introducción. Diseño

36
Fallos típicos

Introducción. Diseño

37
Fallos típicos
●

No hacer "private" los campos de las clases.
–

Todos los campos deben ser privados, salvo que se indique explícitamente
lo contrario

Usar variables globales (de objeto) para cálculos locales (de
método)
●

–

●

Las variables siempre deben tener el ámbito más estrecho posible. Una
variable global es fuente habitual de errores de difícil detección.

Hacer más cosas de las que se piden
–

No vamos a bajar la nota por hacer de más; pero es seguro que tampoco
vamos a subirla por hacer cosas que no se piden.

–

De todas formas, lo frustrante es que el que hace más cosas introduce
nuevas posibilidades de fallos, en lo obligatorio y en lo extra; y esos fallos
si bajan la nota.

–

Por tu interés: haz lo que se pide, ni más, ni menos.
Introducción. Diseño

38
Tufos 'Bad smells'
Campos públicos en una
clase
●

●

Métodos largos

Malos nombres en clases
/ atributos / métodos
●

Clases (o métodos )
fuertemente acopladas
que hay modificar a la vez
●

Clases que parecen un
cajón de sastre
●

Introducción. Diseño

39
Patrones de diseño
●

Buenas prácticas

●

Ej. MVC (Model, View, Controller)
–

Separación de preocupaciones (concerns)

–

Definición de responsabilidades

–

Alta cohesión

–

Bajo acoplamiento

Introducción. Diseño

40
De un vistazo...

¿Qué era
cada cosa?

Introducción. Diseño

41
Pruebas

Introducción. Diseño

42
Pruebas...
●

Unitarias: de una funcionalidad

●

De Integración: con otros sistemas

De Usuario (end-to-end): usabilidad con el
usuario
●

●

No funcionales: de estrés, de carga, ...

Aceptación: pruebas especificadas en los
requisitos
●

Introducción. Diseño

43
Test Driven Development

Introducción. Diseño

44
Pensamientos
“Probar programas puede ser una forma
efectiva de mostrar la presencia de bugs,
pero es totalmente inadecuado para mostrar
su ausencia” - E. W. Dijkstra
●

Introducción. Diseño

45
Pensamientos
“Si hubiese preguntado a mis clientes qué
querían, me hubieran dicho que “caballos
más rápidos”, Henry Ford
●

Introducción. Diseño

46
Pensamientos
“No importa cómo de bueno es un diseño
sino si el diseño mejora o empeora. Si
mejora, día a día, puedo vivir con él para
siempre. Si empeora, estoy muerto”, Kent
Beck
●

Introducción. Diseño

47
Referencias
Objects First with
Java: A Practical
Introduction Using
BlueJ, D. Barnes and
M. Kölling, Prentice
Hall, 2011, capítulo 6
●

Introducción. Diseño

48
Referencias
Head First
Object-Oriented Analysis
and Design, Brett
McLaughlin; Gary Pollice;
David West, O'Reilly
Media, Inc., 2006
●

http://proquest.safariboo
ksonline.com/book/softw
are-engineering-and-dev
elopment/object/0596008
678
●

Introducción. Diseño

49
Referencias
Refactoring: Improving
the Design of Existing
Code, Martin Fowler;
Kent Beck; John Brant;
William Opdyke; Don
Roberts, Addison-Wesley
Professional, 1999
●http://proquest.safariboo
ksonline.com/book/softw
are-engineering-and-dev
elopment/refactoring/020
1485672
●

Introducción. Diseño

50
Referencias
Objects First with
Java: A Practical
Introduction Using
BlueJ, D. Barnes and
M. Kölling, Prentice
Hall, 2011, capítulo 6
●

Introducción. Diseño

51
Enlaces
●

Glosario
–

●

Pruebas
–

●

http://www.lab.dit.upm.es/~fprg/curso/temario/glosario.htm
http://www.dit.upm.es/~pepe/doc/adsw/apuntes/junit.pdf

Vademécum
–
–

●

http://jungla.dit.upm.es/~pepe/libros/vademecum.pdf
http://jungla.dit.upm.es/~pepe/libros/vademecum/index.html

Fallos típicos
–

http://jungla.dit.upm.es/~pepe/doc/adsw/apuntes/fallos.htm

Introducción. Diseño

52
Resumen
El ciclo de vida software tiene diversas
fases para concebir y diseñar el software
●

Hay varias técnicas, tarjetas CRC,
reconocer nombres para realizar identificar
clases durante el diseño.
●

Introducción. Diseño

53
¿Preguntas?

Introducción. Diseño

54

Más contenido relacionado

La actualidad más candente (6)

Clase 09a frameworks
Clase 09a frameworksClase 09a frameworks
Clase 09a frameworks
 
Nociones algoritmos
Nociones algoritmosNociones algoritmos
Nociones algoritmos
 
Nociones algoritmos
Nociones algoritmosNociones algoritmos
Nociones algoritmos
 
D - Desarrollo del Trabajo de Investigacion - 3
D - Desarrollo del Trabajo de Investigacion - 3D - Desarrollo del Trabajo de Investigacion - 3
D - Desarrollo del Trabajo de Investigacion - 3
 
(Fases)
(Fases)(Fases)
(Fases)
 
Clase 01 agilidad
Clase 01 agilidadClase 01 agilidad
Clase 01 agilidad
 

Destacado

Marifer y alondra
Marifer y alondraMarifer y alondra
Marifer y alondra
mfmondragon
 

Destacado (9)

Marifer y alondra
Marifer y alondraMarifer y alondra
Marifer y alondra
 
Ads curso01 cap01
Ads curso01 cap01Ads curso01 cap01
Ads curso01 cap01
 
Analisis y diseño sistemas introducción
Analisis y diseño sistemas introducciónAnalisis y diseño sistemas introducción
Analisis y diseño sistemas introducción
 
Historia de las computadoras con sus generaciones
Historia de las computadoras con sus generacionesHistoria de las computadoras con sus generaciones
Historia de las computadoras con sus generaciones
 
Historia y generaciones de las computadoras
Historia y generaciones de las computadorasHistoria y generaciones de las computadoras
Historia y generaciones de las computadoras
 
Historia De Las Computadoras
Historia De Las ComputadorasHistoria De Las Computadoras
Historia De Las Computadoras
 
Sistema De Gestion De Notas
Sistema De Gestion De NotasSistema De Gestion De Notas
Sistema De Gestion De Notas
 
Introduccion al análisis de sistemas de información
Introduccion al análisis de sistemas de informaciónIntroduccion al análisis de sistemas de información
Introduccion al análisis de sistemas de información
 
Historia de las Computadoras con sus Generaciones
Historia de las Computadoras con sus GeneracionesHistoria de las Computadoras con sus Generaciones
Historia de las Computadoras con sus Generaciones
 

Similar a Introducción Análisis y Diseño

Ingeniería de software
Ingeniería de softwareIngeniería de software
Ingeniería de software
mat3matik
 
Ingeniería%20de%20 software[1], maryy
Ingeniería%20de%20 software[1], maryyIngeniería%20de%20 software[1], maryy
Ingeniería%20de%20 software[1], maryy
nelly
 
Ingeniería de software16
Ingeniería de software16Ingeniería de software16
Ingeniería de software16
Ramon
 
Ingenier%c3%ada de software
Ingenier%c3%ada de softwareIngenier%c3%ada de software
Ingenier%c3%ada de software
Marilupe
 
Ingen de software
Ingen de softwareIngen de software
Ingen de software
erikapoh
 
Ingeniería de software
Ingeniería de softwareIngeniería de software
Ingeniería de software
samantha
 
Ingeniería de software
Ingeniería de softwareIngeniería de software
Ingeniería de software
142918
 

Similar a Introducción Análisis y Diseño (20)

Clase 01
Clase 01Clase 01
Clase 01
 
Ingeniería de software
Ingeniería de softwareIngeniería de software
Ingeniería de software
 
Ingeniería%20de%20 software[1], maryy
Ingeniería%20de%20 software[1], maryyIngeniería%20de%20 software[1], maryy
Ingeniería%20de%20 software[1], maryy
 
Ingeniería de software16
Ingeniería de software16Ingeniería de software16
Ingeniería de software16
 
Ingenier%c3%ada de software
Ingenier%c3%ada de softwareIngenier%c3%ada de software
Ingenier%c3%ada de software
 
Ingen de software
Ingen de softwareIngen de software
Ingen de software
 
Ingeniería de software
Ingeniería de softwareIngeniería de software
Ingeniería de software
 
Clase 11
Clase 11Clase 11
Clase 11
 
Ingeniería de software
Ingeniería de softwareIngeniería de software
Ingeniería de software
 
Proceso de dasarrollo de software
Proceso de dasarrollo de softwareProceso de dasarrollo de software
Proceso de dasarrollo de software
 
Modelo cocomo
Modelo cocomoModelo cocomo
Modelo cocomo
 
Arquitectura del computador.
Arquitectura del computador.Arquitectura del computador.
Arquitectura del computador.
 
Diseño orientado a objeto
Diseño orientado a objetoDiseño orientado a objeto
Diseño orientado a objeto
 
Software engineeringparte2 (1)
Software engineeringparte2 (1)Software engineeringparte2 (1)
Software engineeringparte2 (1)
 
GESTION DE PROYECTOS INFORMATICOS
GESTION  DE PROYECTOS INFORMATICOSGESTION  DE PROYECTOS INFORMATICOS
GESTION DE PROYECTOS INFORMATICOS
 
Ciclo De Vida De Los Sistemas
Ciclo De Vida De Los SistemasCiclo De Vida De Los Sistemas
Ciclo De Vida De Los Sistemas
 
Ciclo De Vida De Los Sistemas
Ciclo De Vida De Los SistemasCiclo De Vida De Los Sistemas
Ciclo De Vida De Los Sistemas
 
Tipos de modelos de procesos
Tipos de modelos de procesosTipos de modelos de procesos
Tipos de modelos de procesos
 
Ciclo de vida cascada
Ciclo de vida cascadaCiclo de vida cascada
Ciclo de vida cascada
 
Modelo de desarrollo de software
Modelo de desarrollo de softwareModelo de desarrollo de software
Modelo de desarrollo de software
 

Más de Carlos A. Iglesias

Tema 4.2 Desarrollo Android e instalacion
Tema 4.2 Desarrollo Android e instalacionTema 4.2 Desarrollo Android e instalacion
Tema 4.2 Desarrollo Android e instalacion
Carlos A. Iglesias
 

Más de Carlos A. Iglesias (20)

GSI Research Group Presentation
GSI Research Group PresentationGSI Research Group Presentation
GSI Research Group Presentation
 
Entorno PHP
Entorno PHPEntorno PHP
Entorno PHP
 
Bootstrap 3.
Bootstrap 3.Bootstrap 3.
Bootstrap 3.
 
Introducción CSS
Introducción CSSIntroducción CSS
Introducción CSS
 
Introducción HTML
Introducción HTMLIntroducción HTML
Introducción HTML
 
Presentación TEWC
Presentación TEWCPresentación TEWC
Presentación TEWC
 
UPM GSI Presentation
UPM GSI PresentationUPM GSI Presentation
UPM GSI Presentation
 
PHP. Bases de Datos
PHP. Bases de DatosPHP. Bases de Datos
PHP. Bases de Datos
 
PHP. Tecnologías Web.
PHP. Tecnologías Web.PHP. Tecnologías Web.
PHP. Tecnologías Web.
 
1 intro php
1 intro php1 intro php
1 intro php
 
0 entorno php
0 entorno php0 entorno php
0 entorno php
 
Introducción TEWC
Introducción TEWCIntroducción TEWC
Introducción TEWC
 
Tema 4.1 Introduccion Android
Tema 4.1 Introduccion AndroidTema 4.1 Introduccion Android
Tema 4.1 Introduccion Android
 
Tema 4.2 Desarrollo Android e instalacion
Tema 4.2 Desarrollo Android e instalacionTema 4.2 Desarrollo Android e instalacion
Tema 4.2 Desarrollo Android e instalacion
 
Tema 4.3 Ejemplo sobre teleco
Tema 4.3 Ejemplo sobre telecoTema 4.3 Ejemplo sobre teleco
Tema 4.3 Ejemplo sobre teleco
 
Tema 4.4 Actividades
Tema 4.4 ActividadesTema 4.4 Actividades
Tema 4.4 Actividades
 
Tema 4.5 interfaces
Tema 4.5 interfacesTema 4.5 interfaces
Tema 4.5 interfaces
 
Tema 4.6 Intenciones
Tema 4.6 IntencionesTema 4.6 Intenciones
Tema 4.6 Intenciones
 
Tema 4.7 Acceso a datos
Tema 4.7 Acceso a datosTema 4.7 Acceso a datos
Tema 4.7 Acceso a datos
 
Tema 4.8 Preferencias
Tema 4.8 PreferenciasTema 4.8 Preferencias
Tema 4.8 Preferencias
 

Último

EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
FagnerLisboa3
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
241521559
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
silviayucra2
 

Último (10)

International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 

Introducción Análisis y Diseño