Sei sulla pagina 1di 10

Prcticas de Programacin

Tema 1. Introduccin al anlisis y diseo de programas Tema 2. Clases y objetos Tema 3. Herencia y Polimorfismo Tema 4. Tratamiento de errores Tema 5. Aspectos avanzados de los tipos de datos Tema 6. Modularidad y abstraccin: aspectos avanzados Tema 7. Entrada/salida con ficheros Tema 8. Verificacin y prueba de programas

Prcticas de Programacin

M. Aldea y M. Gonzlez 11/05/09

Tema 1. Introduccin al anlisis y diseo de programas

Tema 1. Introduccin al anlisis y diseo de programas


1.1. Ingeniera del software 1.2. Actividades en el desarrollo del software 1.3. Modelo clsico: desarrollo en cascada 1.4. Objetivos de los nuevos modelos 1.5. Modelo de desarrollo evolutivo 1.6. Modelo de desarrollo en espiral 1.7. Introduccin al anlisis de requisitos 1.8. Diagrama de Clases en UML 1.9. Anlisis orientado a objetos 1.10. Diseo orientado a objetos 1.11. Programacin orientada a objetos 1.12. Resumen 1.13. Bibliografa
Prcticas de Programacin M. Aldea y M. Gonzlez 11/05/09

Tema 1. Introduccin al anlisis y diseo de programas 1.1 Ingeniera del software

1.1 Ingeniera del software


Meta: desarrollo costeable de sistemas software Surge en 1968 debido a la crisis del software el aumento de potencia de los computadores haca pensar que sera posible abordar problemas cada vez ms complejos pero las aplicaciones se finalizaban con retraso, costando mucho ms de lo presupuestado y con muchos errores
100 % coste HardWare

0 1955

SoftWare actualidad

Principal aportacin de la Ingeniera del Software: Definicin de modelos de proceso de desarrollo del software: conjunto de actividades y resultados asociados utilizados para concebir, desarrollar, instalar y mantener un producto software La Ingeniera del Software todava es una disciplina en evolucin
Prcticas de Programacin M. Aldea y M. Gonzlez 11/05/09

Tema 1. Introduccin al anlisis y diseo de programas 1.2 Actividades en el desarrollo del software

1.2 Actividades en el desarrollo del software


No existe un proceso de desarrollo universal depende de la naturaleza del producto y de la empresa Todos los procesos incluyen las siguientes actividades: Anlisis de requisitos: estudio de la naturaleza del problema y definicin de qu debe hacer el sistema software Diseo e implementacin: comienza con el diseo de la estructura general del software para, tras sucesivas etapas de refinamiento, alcanzar la fase de escritura del cdigo Pruebas e integracin: suelen ser fases cclicas, en las que de forma incremental se van probando e integrando las diversas partes del sistema Mantenimiento: reparacin de problemas, adaptacin a nuevas condiciones, mejoras, etc.
Prcticas de Programacin M. Aldea y M. Gonzlez 11/05/09

Tema 1. Introduccin al anlisis y diseo de programas 1.3 Modelo clsico: desarrollo en cascada

1.3 Modelo clsico: desarrollo en cascada


Se basa en una secuencia de pasos que son optimizados uno a uno a nivel individual
Tiempo Anlisis de requisitos Diseo Avance Codificacin y Depuracin
Eliminacin de errores de alto coste

Eliminacin de errores

Pruebas e Integracin Operacin y Mantenimiento

Implementacin

Prcticas de Programacin

M. Aldea y M. Gonzlez 11/05/09

Tema 1. Introduccin al anlisis y diseo de programas 1.3 Modelo clsico: desarrollo en cascada

Resultados de las etapas


Cada etapa se basa en los resultados de la anterior
Requisitos Informales Documento de requisitos Documento de Arquitectura

Anlisis de requisitos

Diseo de la Arquitectura

Programa final
Prcticas de Programacin

Resultados de las Pruebas

Pruebas e Integracin
M. Aldea y M. Gonzlez 11/05/09

c di go

Codificacin y Depuracin 6

Tema 1. Introduccin al anlisis y diseo de programas 1.3 Modelo clsico: desarrollo en cascada

Limitaciones del modelo de desarrollo en cascada


La calidad del proceso se ve limitada ya que este modelo: Exige la toma de decisiones en fases iniciales, sin conocer su efecto en fases sucesivas Considera que los requisitos del programa estn definidos antes de que ste haya sido diseado Se basa en criterios tales como la experiencia del programador, y es difcil de automatizar Hace muy difcil y costoso el proceso de mantenimiento del software Sin embargo, su uso reporta muchos beneficios con respecto a un proceso desordenado, en el que no se siga una metodologa clara

Prcticas de Programacin

M. Aldea y M. Gonzlez 11/05/09

Tema 1. Introduccin al anlisis y diseo de programas 1.4 Objetivos de los nuevos modelos

1.4 Objetivos de los nuevos modelos


Los nuevos modelos de desarrollo tratan de: Proporcionar a los usuarios un objeto ejecutable en las etapas iniciales del proceso para clarificar los requisitos Posibilitar que el usuario acte como analista Minimizar los errores cometidos en las etapas iniciales del desarrollo Facilitar el mantenimiento Mantener actualizada la documentacin Analizar y reducir el riesgo Se pueden utilizar en combinacin con el modelo clsico, o una combinacin de varios de ellos

Prcticas de Programacin

M. Aldea y M. Gonzlez 11/05/09

Tema 1. Introduccin al anlisis y diseo de programas 1.5 Modelo de desarrollo evolutivo

1.5 Modelo de desarrollo evolutivo


Se basa en evolucionar un prototipo hasta lograr el sistema final se crea un prototipo inicial al comienzo del proyecto (posiblemente con funcionalidad reducida) se entrega al usuario - lo que le permite definir ms claramente sus requisitos: sabr lo que quiero cuando lo vea el prototipo se va refinando en sucesivas versiones Cuando el prototipo alcanza un nivel adecuado se puede: Transformar en el sistema completo - Se corre el peligro de que tenga una estructura deficiente Iniciar un nuevo proceso de desarrollo en cascada basndose en la experiencia adquirida - Ms costoso, pero normalmente ms seguro
Prcticas de Programacin M. Aldea y M. Gonzlez 11/05/09

Tema 1. Introduccin al anlisis y diseo de programas 1.5 Modelo de desarrollo evolutivo

Esquema del modelo de desarrollo evolutivo


Lista de cambios propuesta por el usuario requisitos del sistema (informales e incompletos) Desarrollo del sistema final por evolucin del prototipo

Requisitos del prototipo

Prototipo

Sistema Final

Arquitectura del prototipo

Desarrollo del sistema final por mtodo en cascada

Requisitos acordes a los deseos del usuario

Diseo de la Arquitectura

Codificacin

Sistema Final

Prcticas de Programacin

M. Aldea y M. Gonzlez 11/05/09

10

Tema 1. Introduccin al anlisis y diseo de programas 1.6 Modelo de desarrollo en espiral

1.6 Modelo de desarrollo en espiral


Trata de aunar las ventajas de los modelos clsico y evolutivo realiza el desarrollo del producto a travs de varias etapas aade un elemento nuevo: el anlisis de riesgos Cada etapa se compone de las siguientes fases: Planificacin: determinacin de objetivos, alternativas, y restricciones, de acuerdo con la etapa actual. Salvo en la primera etapa, se tendrn en cuenta las valoraciones del cliente Anlisis de riesgo: anlisis de las alternativas, e identificacin y valoracin de riesgos. Como resultado se eligen las alternativas de menor riesgo, o si el riesgo es demasiado alto se abandona el proyecto Implementacin: desarrollo del producto del siguiente nivel Evaluacin del cliente: valoracin de los resultados por parte del cliente
Prcticas de Programacin M. Aldea y M. Gonzlez 11/05/09

11

Tema 1. Introduccin al anlisis y diseo de programas 1.6 Modelo de desarrollo en espiral

Esquema del modelo de desarrollo en espiral

Recoleccin inicial de requisitos y planificacin inicial del proyecto Planificacin basada en los comentarios del cliente Evaluacin del cliente

Planificacin

Anlisis de riesgo

Anlisis de riesgo basado en los requisitos iniciales Anlisis de riesgo basado en la reaccin del cliente

Decisin de seguir o no Prototipo inicial Prototipo del siguiente nivel Hacia el sistema final Evaluacin del cliente Implementacin 1 versin sistema completo

Prcticas de Programacin

M. Aldea y M. Gonzlez 11/05/09

12

Tema 1. Introduccin al anlisis y diseo de programas 1.7 Introduccin al anlisis de requisitos

1.7 Introduccin al anlisis de requisitos


Anlisis de requisitos Diseo Codificacin Pruebas Operacin Resultado final del anlisis

Documento de Requisitos

Para construir algo lo primero que debemos saber es qu es ese algo Anlisis de requisitos: proceso de entender y documentar lo que queremos hacer generalmente se centra en qu debe hacer el sistema no en cmo debe hacerlo Requisito (requerimiento o requirement): necesidad o restriccin que debe satisfacer un producto software para contribuir a la solucin de un problema real
Prcticas de Programacin M. Aldea y M. Gonzlez 11/05/09

13

Tema 1. Introduccin al anlisis y diseo de programas 1.7 Introduccin al anlisis de requisitos

Requisitos del cliente y del desarrollador


Existen dos tipos de requisitos: Requisitos del cliente (C-requisitos): lo que el cliente quiere y necesita, expresado en un lenguaje claro para l Requisitos del desarrollador (D-requisitos): ms detallados que los C-requisitos y expresados en un lenguaje ms formal y estructurado
Escritos por el Cliente Con colaboracin y revisin del desarrollador Escritos por el Desarrollador Con colaboracin y revisin del cliente

Descripcin breve del proyecto y principales caractersticas

C-requisitos Audiencia principal: cliente y usuario Audiencia secundaria: desarrollador

D-requisitos Audiencia principal: desarrollador Audiencia secundaria: cliente


M. Aldea y M. Gonzlez 11/05/09

Prcticas de Programacin

14

Tema 1. Introduccin al anlisis y diseo de programas 1.7 Introduccin al anlisis de requisitos

Requisitos funcionales y no funcionales


Tanto los C- como los D-requisitos pueden clasificarse en: Requisitos Funcionales: describen la funcionalidad del sistema - El sistema de control medir la temperatura y la humedad de la habitacin Requisitos No Funcionales: Prestaciones - La captura del vdeo debe realizarse al menos a 12 imgenes por segundo Fiabilidad - No se debe experimentar ms de un error fatal al mes Restricciones: - Debe utilizarse el lenguaje de programacin Ada2005
M. Aldea y M. Gonzlez 11/05/09

Prcticas de Programacin

15

Tema 1. Introduccin al anlisis y diseo de programas 1.7 Introduccin al anlisis de requisitos

Cmo se expresan los C-requisitos


En lenguaje natural, de la forma ms clara y precisa posible El sistema debe permitir al cliente acceder al saldo de su cuenta posiblemente apoyado por tablas y diagramas sencillos Como casos de uso: muestran las interacciones entre los agentes externos (actores) y la aplicacin
Busca libro

Registra Usuario Usuario Bibliotecario Da de alta libro

Prcticas de Programacin

M. Aldea y M. Gonzlez 11/05/09

16

Tema 1. Introduccin al anlisis y diseo de programas 1.7 Introduccin al anlisis de requisitos Cmo se expresan los C-requisitos (cont.)

Con casos de uso detallados: describen una interaccin entre un actor y la aplicacin

Ejemplo: Caso de uso Registra Usuario 1. El bibliotecario selecciona la opcin Registrar Usuario 2. La aplicacin muestra una ventana que permite introducir el nombre y el DNI del usuario 3. El bibliotecario introduce los datos solicitados 4. La aplicacin aade el nuevo usuario a la lista de usuarios registrados de la biblioteca - En el caso de que ya exista un usuario registrado con el mismo DNI se notifica el error y no se aade el nuevo usuario
Prcticas de Programacin M. Aldea y M. Gonzlez 11/05/09

17

Tema 1. Introduccin al anlisis y diseo de programas 1.7 Introduccin al anlisis de requisitos

Cmo se expresan los D-requisitos


Pueden usarse los mismos mecanismos utilizados para expresar los C-requisitos: lenguaje natural, casos de uso y casos de uso detallados aunque quizs alcanzando un mayor nivel de detalle Tambin pueden utilizarse diagramas de clases (si estamos realizando un anlisis orientado a objetos) muestra las principales clases de objetos existentes en nuestro problema y las relaciones entre ellas (modelo del dominio) Los lmites C-requisitos D-requisitos Diseo no estn claros C-requisitos D-requisitos: el lmite depende del grado de conocimientos tcnicos del cliente D-requisitos Diseo: en los D-requisitos no deben aparecer detalles correspondientes a la implementacin
Prcticas de Programacin M. Aldea y M. Gonzlez 11/05/09

18

Tema 1. Introduccin al anlisis y diseo de programas 1.8 Diagrama de Clases en UML

1.8 Diagrama de Clases en UML


El Lenguaje Unificado de Modelado (UML) sirve para: analizar, construir y documentar un sistema software El UML se est convirtiendo en un estndar de-facto en el desarrollo de software Define varios tipos de diagramas para modelar el sistema Casos de uso, diagramas de actividad, diagramas de clases, diagramas de objetos, diagramas de secuencia, ... En la asignatura slo usaremos dos: casos de uso y diagramas de clases

Prcticas de Programacin

M. Aldea y M. Gonzlez 11/05/09

19

Tema 1. Introduccin al anlisis y diseo de programas 1.8 Diagrama de Clases en UML

Representacin de clases y objetos


Clases NombreClase + atributoPblico - atributoPrivado NombreClase + mtodoPblico - mtodoPrivado Modificadores de visibilidad + pblico - privado # protegido ~ paquete

Objetos :NombreClase

nombreObjeto:NombreClase + atributoPblico - atributoPrivado + mtodoPblico - mtodoPrivado

nombreObjeto

Prcticas de Programacin

M. Aldea y M. Gonzlez 11/05/09

20

Tema 1. Introduccin al anlisis y diseo de programas 1.8 Diagrama de Clases en UML

Relaciones entre clases


Sensor - umbralDeAlarma - estadoDeAlarma + cambiarUmbral + hayAlarma 1..* Sistema de alarma - modoDeOperacin - tiempoActivacin - tiempoSirena - contrasea Contiene a Se relaciona con Extensin de Panel de control - estadoDeLuces - estadoDeTeclas + encenderLuz + apagarLuz + leerTecla

Sensor de proximidad

Sensor de humo - estadoPila + estPilaCargada

1 Sirena - encendida + encender + apagar Multiplicidad 0..1 1 1..* * uno o ninguno siempre 1 uno o ms cero o ms 21

Prcticas de Programacin

M. Aldea y M. Gonzlez 11/05/09

Tema 1. Introduccin al anlisis y diseo de programas 1.9 Anlisis orientado a objetos

1.9 Anlisis orientado a objetos


Tradicionalmente el software se desarrollaba desde una perspectiva algortmica el principal bloque estructurador es la funcin este enfoque conduce a software difcil de adaptar y mantener La tendencia actual es utilizar mtodos orientados a objetos todo el ciclo de desarrollo del software est basado en los conceptos de objeto y clase Las principales ventajas del desarrollo orientado a objetos son: es fcilmente comprensible puesto que existe un paralelismo entre las entidades del mundo real y las del sistema software ese paralelismo permite al cliente participar en las primeras etapas del desarrollo facilita la reutilizacin de cdigo
Prcticas de Programacin M. Aldea y M. Gonzlez 11/05/09

22

Tema 1. Introduccin al anlisis y diseo de programas 1.9 Anlisis orientado a objetos

Objetos y clases
Objeto: entidad que existe en el espacio y en el tiempo, posee: identidad: nombre modelo estado: atributos Coche color comportamiento: operaciones que otros matrcula objetos pueden realizar sobre l
pinta()

Clase: descripcin de un conjunto de objetos con los mismos atributos y comportamiento El anlisis orientado a objetos realiza el modelado del problema en trminos de: - clases - objetos - comunicacin entre objetos - herencia y polimorfismo
Prcticas de Programacin

instancias de la clase (objetos)

mundo real
23

M. Aldea y M. Gonzlez 11/05/09

Tema 1. Introduccin al anlisis y diseo de programas 1.9 Anlisis orientado a objetos

Identificacin de clases
Durante las primeras fases del anlisis se procede a la identificacin de las clases que componen nuestro problema: espacio de nombres del problema candidatos a clases relaciones (verbos) entre los nombres candidatos a casos de uso (u operaciones de las clases)
El alumno deber matricularse como mnimo de cinco asignaturas candidatos a operaciones candidatos a clases

El cliente deber poder acceder al saldo de su cuenta desde cualquier cajero automtico

Prcticas de Programacin

M. Aldea y M. Gonzlez 11/05/09

24

Tema 1. Introduccin al anlisis y diseo de programas 1.9 Anlisis orientado a objetos

Modelo de anlisis
Se comienza identificando las clases que forman el dominio de nuestro problema Asignatura
Alumno Curso

Posteriormente se identifican las relaciones entre clases, sus atributos y sus mtodos
Alumno dni nombre 1..* alumnos 4 asignaturas Asignatura Alumno ttulo matriculaAlumno

Curso nombre

Prcticas de Programacin

M. Aldea y M. Gonzlez 11/05/09

25

Tema 1. Introduccin al anlisis y diseo de programas 1.10 Diseo orientado a objetos

1.10 Diseo orientado a objetos


Continuacin del anlisis profundizando en la descripcin de las clases
Anlisis de requisitos

Diseo de la Arquitectura
Identificacin de clases auxiliares (obviadas en el anlisis) Descripcin completa de la jerarqua de clases Interfaz de los mtodos pblicos Relaciones entre clases

Diseo

Diseo detallado
Representacin (tipo) de los atributos de cada clase Diseo de los mtodos (pseudocdigo)

refinamientos sucesivos

Codificacin y Depuracin

Documento de Arquitectura
Prcticas de Programacin M. Aldea y M. Gonzlez 11/05/09

Pruebas e Integracin

Operacin y Mantenimiento

26

Tema 1. Introduccin al anlisis y diseo de programas 1.10 Diseo orientado a objetos

Modelo de diseo
Aade detalles al modelo de anlisis (tipos, visibilidad, etc.) tambin se aaden clases auxiliares (en caso de que las haya)
Alumno -dni: string -nombre: string +dni(): string +nombre(): string Curso Alumno -nombre: string +nombre(): string 1..* -alumnos Asignatura Alumno -ttulo: string +ttulo(): string 4 +matriculaAlumno(a: Alumno) -asignaturas

El diagrama final deber incluir todo lo necesario para verificar todos los requisitos de nuestro sistema
Los problemas a tratar en esta asignatura sern sencillos por lo que, en general, no distinguiremos entre los modelos de anlisis y diseo
Prcticas de Programacin M. Aldea y M. Gonzlez 11/05/09

27

Tema 1. Introduccin al anlisis y diseo de programas 1.11 Programacin orientada a objetos

1.11 Programacin orientada a objetos


Anlisis Diseo Codificacin Resultado de la codificacin

Pruebas Operacin

La implementacin de un diseo orientado a objetos es mucho ms sencilla si se utiliza un lenguaje orientado a objetos Tambin es posible utilizar un lenguaje no orientado a objetos pero se repite mucho cdigo y no se aprovechan todas las ventajas del diseo Un lenguaje orientado a objetos (como Java): proporciona primitivas para definir clases y objetos soporta de forma directa la herencia y el polimorfismo
Prcticas de Programacin M. Aldea y M. Gonzlez 11/05/09

c di go

28

Tema 1. Introduccin al anlisis y diseo de programas 1.12 Resumen

1.12 Resumen
Proceso de desarrollo (sencillo) que seguiremos en la asignatura
Anlisis de requisitos Diseo Lenguaje natural Casos de uso Casos de uso detallados Documento de Requisitos Diagrama de clases UML Pseudocdigo Documento de Arquitectura

Codificacin y Depuracin Pruebas e Integracin

c di go

Veremos una breve introduccin en el tema 8

Operacin y Mantenimiento

En lenguaje Java

No tratado en la asignatura En cursos posteriores se vern modelos de proceso ms avanzados


Prcticas de Programacin M. Aldea y M. Gonzlez 11/05/09

29

Tema 1. Introduccin al anlisis y diseo de programas 1.13 Bibliografa

1.13 Bibliografa
Eric J. Braude, Ingeniera de Software. Alfaomega, 2003. Parte de los captulos 1, 3 y 4 Ian Sommerville, Ingeniera de software (6 edicin). Pearson Educacin de Mxico, 2002. Parte de los captulos 3 y 5 Russell Miles, Kim Hamilton. Learning UML 2.0. O'Reilly Media, Inc. April 25, 2006. Disponible on-line en la biblioteca:
http://proquestcombo.safaribooksonline.com/0596009828

Parte de los captulos 2, 4, 5 y 6


Este tema slo pretende ser una breve introduccin a algunos aspectos de la Ingeniera del Software. Los contenidos abordados abarcan una pequea parte de los contenidos tratados en los libros citados
Prcticas de Programacin M. Aldea y M. Gonzlez 11/05/09

30

Potrebbero piacerti anche