Introducción Análisis y Diseño

50 %
50 %
Information about Introducción Análisis y Diseño
Technology

Published on February 5, 2014

Author: CarlosIglesias3

Source: slideshare.net

Description

Introducción análisis y diseño

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

Add a comment

Related presentations

Presentación que realice en el Evento Nacional de Gobierno Abierto, realizado los ...

In this presentation we will describe our experience developing with a highly dyna...

Presentation to the LITA Forum 7th November 2014 Albuquerque, NM

Un recorrido por los cambios que nos generará el wearabletech en el futuro

Um paralelo entre as novidades & mercado em Wearable Computing e Tecnologias Assis...

Microsoft finally joins the smartwatch and fitness tracker game by introducing the...

Related pages

INTRODUCCIÓN DE ANÁLISIS Y DISEÑO | Análisis y Diseño I

ANÁLISIS DE SISTEMAS El análisis de sistemas es la ciencia encargada del análisis de sistemas grandes y complejos y la interacción entre esos sistemas.
Read more

Introducción al Análisis y Diseño de Circuitos Eléctricos ...

Dorf - Introducción al Análisis y Diseño de Circuitos Eléctricos (ACCESO RÁPIDO) jetzt kaufen. ISBN: 9789701505175, Fremdsprachige Bücher ...
Read more

Una introducción al análisis y diseño orientado a objetos ...

Una introducción al análisis y diseño orientado a objetos y al proceso unificado - Free download as PDF File (.pdf), Text File (.txt) or read online for ...
Read more

Introducción al Curso - Análisis y Diseño de Sistemas de ...

Entonces el análisis y diseño de sistemas es un enfoque sistemático para la identificacion de problemas, oportunidades y objetivos analizando los ...
Read more

Introducción al Análisis y Diseño de Sistemas

Indagar en los conceptos modernos, técnicas y herramientas para el análisis y diseño de sistemas de información.
Read more

INTRODUCCIÓN AL ANÁLISIS Y DISEÑO DE SISTEMAS DE INFORMACIÓN

INTRODUCCIÓN AL ANÁLISIS Y DISEÑO DE SISTEMAS DE INFORMACIÓN El análisis comprende un conjunto de procedimientos para determinar hechos, principios y ...
Read more

1.1 NECESIDAD DEL ANALISIS Y DISEÑO DE SISTEMAS

El análisis y diseño de sistema, tal como lo realizan los analistas de sistemas, tiene el propósito de analizar sistemáticamente la entrada o el flujo ...
Read more