ADOO Clase 1 Manual

19
ANÁLISIS Y DISEÑO ORIENTADO A OBJETO. CLASE 1

Transcript of ADOO Clase 1 Manual

Page 1: ADOO Clase 1 Manual

ANÁLISIS Y DISEÑO ORIENTADO A OBJETO.

CLASE 1

Page 2: ADOO Clase 1 Manual

Análisis y diseño Orientado a

Objeto – Semana 1

Esta semana conocerás algunos conceptos básicos de orientación a

objetos, aprenderás de su importancia y comenzarás a realizar los

primeros procesos de análisis utilizando esta metodología.

Page 3: ADOO Clase 1 Manual

Introducción al análisis y

diseño Orientado a Objetos

Bienvenido al mundo de los objetos! te felicito por

emprender este camino, aprenderás a ver tu entorno de

una forma distinta. Para ello comenzaremos trabajando

con la forma en que piensas y cambiaremos el modo en

la que analizas las cosas, el objetivo es convertirte en

una persona capaz de hacer un buen análisis sobre las

situaciones que te rodean, ya que esto tendrá un directo

beneficio en los programas computacionales que crearás

en el futuro próximo y la forma en la que entregarás

soluciones al medio que te rodea. Mientras mejor

entendamos nuestro entorno podremos tomar mejores

decisiones. Todos hemos utilizado software alguna vez y

de seguro que has encontrado algunos mejores que

otros, probablemente en este momento estés recordando

dos o más software que hayas usado y cuál de ellos te

agradó más, no sólo considerando la usabilidad o lo

vistoso del software, sino a un mundo completo que esta

detrás que aún no conoces pero del cual serás partícipe

muy pronto, que va en desde cómo utiliza el hardware en

el que funciona, la velocidad en la que se comunica por la

red con otros componentes de software e incluso con la

optimización con la que realiza cálculos y los entrega al

usuario. ¿Quién se encarga de todo eso? ¿Existe algún

responsable de que todas las partes trabajen en forma

eficiente? ¿Quién debe velar porque lo que se construye

solucione de la mejor forma posible un problema? Como

Page 4: ADOO Clase 1 Manual

me imagino ya lo adivinarás esa persona en un futuro

cercano serás tú.

Por eso es tan importante tener una buena capacidad de

análisis, de esta forma comprenderás mejor las cosas y

podrás tomar mejores decisiones, mientras más

comprendemos menos deberemos memorizar.

El primer paso consiste en hacer análisis, entender el

problema de tu cliente e identificar una buena solución. El

segundo paso será diseñarla, el paso previo a construirla.

Muchos software comienzan a ser codificados sin un buen

análisis, lo que da como resultado un producto deficiente

que no soluciona el problema del cliente. Un mal diseño

provocara un software con errores en el cual se habrá

trabajado probablemente el doble de lo necesario, los

errores en diseño comienzan notarse tarde en el

desarrollo haciendo que una gran cantidad de programas

queden en el 90% de su construcción, haciendo que el

10% restante implique incluso más trabajo que el 90%

anterior. Para que te hagas una idea esto no es algo que

no pase en el resto de las disciplinas, ¿has pensado en

cómo quedaría un edificio si la constructora comienza su

tarea sin un análisis y diseño apropiado? y si lo logra,

¿soportará el próximo temblor? Ahora pensemos en qué

sucede si el diseño es apropiado, pero proviene de un mal

análisis de requerimiento y si bien el edificio queda bonito

con 80 pisos, grandes ventanales y piscina en la azotea,

pero después de construido y luego de una larga y

pausada conversación con tu cliente en la cual te tomas

más tiempo para entenderlo, haces un mejor análisis y te

Page 5: ADOO Clase 1 Manual

das cuenta que lo que en realidad necesitaba era un

bunker subterráneo para sobrevivir al paso de un

tornado. A estas alturas ya no hay nada que hacer,

desarmar el edificio, para dejar el terreno libre para luego

comenzar a diseñar y construir un bunker llevará sin

duda a tu empresa a un fracaso, deja a tus clientes sin

un bunker y a tí en un serio problema, por esto una

buena capacidad tanto de análisis como de diseño es tan

importante.

Page 6: ADOO Clase 1 Manual

Definición del análisis y diseño

orientado a objetos

El análisis y diseño orientado a objetos es un enfoque de

la ingeniería de software que permite modelar un sistema

como un conjunto de objetos relacionados que

interactúan entre si. Para lograr esta tarea, el análisis y

diseño orientado a objetos propone una serie de

diagramas entre los que destacan los diagramas

propuestos en UML (Unified Modeling Language o

Lenguaje Unificado de Modelado) que surge como una

estandarización de los diagramas propuestos por muchos

teóricos de esta disciplina alrededor del mundo.

El proceso de análisis y diseño orientado a objetos (desde

ahora ADOO) se basa en analizar un problema

(generalmente asociado al manejo de datos) y tratar de

resolverlo utilizando para esto estructuras del mundo

real. La unidad básica es el objeto, que combina datos y

comportamientos que se realizan con estos datos y que

se unen en una estructura atómica.

Importancia del análisis y

diseño orientado a objetos

El ADOO es parte de un proceso que se conoce como

Ingeniería de Requerimientos, que consiste en tratar de

recopilar la mayor cantidad de datos disponible respecto

a una serie de procesos para los cuales se requiere

construir una solución utilizando tecnologías de

Page 7: ADOO Clase 1 Manual

información. Las tecnologías de información son un grupo

de tecnologías cuyo propósito es gestionar los datos que

son importantes para una organización. Por lo tanto los

sistemas que utilizan tecnologías de información, no sólo

hacen referencia al software, sino que también a los

procesos, las personas y la infraestructura (hardware)

necesario para poder administrar de la mejor forma

posible los datos que son necesarios para que la

organización realice su propósito.

Un correcto proceso de análisis permitirá a los ingenieros

de software tomar mejores decisiones para la creación,

gestión y administración de proyectos de tecnologías de

información. Un análisis incorrecto puede generar un

enorme costo para la organización, pues ésta puede

tomar malas decisiones respecto a su negocio por no

contar con la información correcta en el momento

adecuado. Adicionalmente, el desarrollo de un proyecto

de tecnologías de información no es un proceso que se

realiza de un día para otro, sino que requiere de un

tiempo que es difícil de estimar en un principio y por lo

tanto su costo puede elevarse en demasía si el análisis

inicial no está bien hecho, por lo que esta etapa resulta

crucial en el desarrollo de los proyectos de tecnologías de

información.

Page 8: ADOO Clase 1 Manual

Diferentes metodologías de

análisis de sistemas.

Al realizar el análisis de procesos en las organizaciones,

existen diferentes metodologías que se pueden ocupar

para lograr el resultado esperado.

Como definición formal podemos decir que una

metodología “…hace referencia al conjunto de

procedimientos racionales, utilizados para alcanzar una

gama de objetivos que rigen en una investigación

científica, una exposición doctrinal o tareas que requieran

habilidades, conocimientos o cuidados específicos.

Alternativamente puede definirse la metodología como el

estudio o elección de un método pertinente para un

determinado objetivo.”1.

De esta forma podemos decir que las metodologías como

un conjunto de pasos para lograr un objetivo, se pueden

clasificar utilizando el enfoque que se aplica para el

proceso, existiendo dos metodologías básicas, una

metodología estructurada y una metodología orientada a

objetos.

La metodología estructurada se originó en los lenguajes

de programación estructurados para dar soporte a las

necesidades del lenguaje. Esta metodología sentó las

primeras estructuras para la definición de la llamada

“ingeniería de software” es decir se definieron fases y

etapas para dar solución a proyectos de software que se

1 http://es.wikipedia.org/wiki/Metodolog%C3%ADa

Page 9: ADOO Clase 1 Manual

van a desarrollar utilizando un lenguaje de programación

estructurado.

Adicionalmente a ésta, surge la metodología orientada a

objetos, la cual se ha desarrollado y ha permanecido en

el tiempo siendo el paradigma de análisis y diseño de

proyectos de tecnologías de información más utilizada en

estos tiempos. Esta metodología que comenzó a

desarrollarse a finales de los años sesenta de la mano del

desarrollo de lenguajes de programación orientados a

objetos, ha evolucionado durante todos estos años,

estableciendo una serie de pasos que han sido

extraordinariamente probados en una serie de proyectos.

Esta metodología evoluciona constantemente y los

estudiosos del tema desarrollan nuevas formas

optimizadas y cada vez más específicas para el análisis y

diseño en situaciones particulares llamadas patrones de

diseño.

El desarrollo de proyectos de tecnologías de información

orientados a objetos, requieren técnicas orientadas a

objetos que se aplican durante las etapas de análisis,

construcción e implementación del proyecto. Estas

metodologías requieren que se detecten los objetos del

sistema, cómo éstos interactúan, cómo se comportan en

el tiempo y las responsabilidades que asumen al

relacionarse con otros objetos. El análisis orientado a

objetos mira todos los objetos en el sistema, agrupa sus

características y comportamientos comunes, estudia sus

diferencias y cómo el sistema maneja estos objetos para

lograr su objetivo.

Page 10: ADOO Clase 1 Manual

En términos sencillos, el análisis y diseño orientado a

objetos está basado en identificar a los objetos en un

sistema y sus interrelaciones. Una vez que esta parte

está hecha, es necesario modelar el sistema, esta etapa

es similar a la etapa de la metodología estructurada, pues

también se sigue un proceso secuencial pero con una

aproximación diferente. Las etapas básicas del diseño de

sistemas en un modelo orientado a objetos, se pueden

listar de la siguiente forma:

Análisis de Sistemas.

Diseño del sistema.

Diseño de los objetos.

Implementación.

La etapa de análisis de sistemas es la primera parte del

proceso de desarrollo de proyectos de tecnologías de

información orientados a objetos, al igual que en las otras

metodologías. En esta fase es necesario interactuar con

los usuarios del sistema (los que realizan las acciones)

para identificar sus necesidades y analizar el sistema

para entender su funcionalidad.

Basándose en el sistema estudiado, se prepara un

modelo del sistema definido. Este modelo está basado

puramente en lo que se requiere que el sistema haga. En

esta etapa los detalles de implementación (como se van a

hacer las cosas) no son tomados en cuenta. Sólo se

prepara un modelo del sistema basándose en la idea de

que el sistema es un conjunto de objetos que

interactúan.

Page 11: ADOO Clase 1 Manual

La etapa de diseño del sistema es la siguiente etapa de

desarrollo dónde se decide la arquitectura del modelo

completo (hardware y software). Este sistema complejo

es organizado en un conjunto de sub procesos, cada uno

con su proyecto individual, los cuales van a interactuar

unos con otros. Mientras se diseña el sistema, es

necesario poner especial atención a las especificaciones

de los procesos definidos en la etapa anterior por parte

de los usuarios. Como el análisis orientado a objetos

percibe los sistemas como un conjunto de objetos que

interactúan, así mismo los sistemas más grandes y

complejos se pueden ver como un conjunto de pequeños

sistemas que interactúan entre sí.

En la etapa de diseño de los objetos, se definen los

detalles del análisis del sistema y del diseño para definir

cómo serán implementados. Acá se decide la forma en la

que se van a construir los objetos de manera de

implementar las estructuras de datos, los

comportamientos y las relaciones entre cada uno de los

objetos.

La fase de implementación implica transformar el diseño

de los objetos a código, utilizando algún lenguaje de

programación. Adicionalmente se construyen todas las

estructuras que darán soporte al funcionamiento del

software (hardware y procedimientos). También se

construyen los almacenes de datos o bases de datos,

para dar una forma lo más funcional posible al sistema.

Page 12: ADOO Clase 1 Manual

Las metodologías orientadas a objeto se basan en la

identificación de los objetos del sistema. Cuando se

observan de forma detenida, los objetos muestran ciertas

características y comportamientos que les son propios.

Mientras se desarrolla el proyecto, se utilizan ciertos

modelos para identificar a los objetos. Básicamente se

usan tres modelos:

a) Modelo de objetos: Este modelo describe a los objetos

en un sistema y sus interrelaciones. Analiza al sistema

como un conjunto de elementos estáticos y no se

preocupa de la dinámica que estos puedan tener.

b) Modelo dinámico: Este modelo describe a los objetos

en su aspecto dinámico, es decir muestra los cambios

ocurridos en el estado de varios objetos que estén

interactuando en un momento determinado.

c) Modelo de flujo de datos: Este modelo describe

básicamente los datos que han sido transformados por el

sistema. De esta forma se describen los flujos de los

datos y los cambios que ocurren a los datos a través del

sistema

Comparada con las técnicas de desarrollo de sistemas

convencionales, el ADOO tiene muchas ventajas, algunos

de ellos son:

Reusabilidad: Las estructuras que se construyen

pueden ser utilizadas en otros proyectos, esto

permite reducir los tiempos de desarrollo, pues las

Page 13: ADOO Clase 1 Manual

clases que se construyen se crean de tal forma que

pueden ser mantenidas para usos posteriores.

Herencia: El concepto de herencia ayuda al

programador a usar código existente de otra forma,

es decir se pueden agregar nuevas funcionalidades

o extender la funcionalidad ya existente para crear

nuevas clases.

Ignorancia selectiva: la encapsulación es la

técnica que permite al programador esconder el

funcionamiento interno de los métodos al usuario.

La encapsulación separa la funcionalidad interna del

objeto de las funciones externas provistas al

usuario. Esto permite al programador proteger el

código de cambios realizados por el usuario.

Los sistemas diseñados utilizando este enfoque están

más cercanos al mundo real pues las funciones del

mundo real se mapean directamente a los sistemas.

La metodología orientada a objetos representa el dominio

del problema, pues es fácil reproducir e interpretar los

diseños.

Los objetos en el modelo son inmunes a los cambios en

los requerimientos, un objeto alumnos será un objeto

alumno independiente de más o menos atributos o

comportamientos que se agreguen. Por lo tanto los

cambios se pueden desarrollar de forma más fácil.

Los diseños realizados con esta metodología enfatizan la

reutilización. Las nuevas aplicaciones pueden usar

módulos ya existentes, por lo tanto se reduce el tiempo

Page 14: ADOO Clase 1 Manual

de análisis y desarrollo, redundando esto en un costo

final menor al término del ciclo de vida.

Las metodologías orientadas a objetos, tienen una

aproximación más natural, esto entrega mejores

estructuras para el pensamiento y la abstracción y

permite un diseño más modular.

Los datos, la información y su

importancia para las

organizaciones.

Todas las organizaciones basan su quehacer en la toma

de decisiones, estas decisiones se toman utilizando los

datos que la organización posee.

Los sistemas de información que poseen las

organizaciones y los que nosotros tengamos que construir

se basan en el proceso de capturar datos, almacenarlos,

procesarlos y obtener un resultado que es mostrado al

usuario. Los datos que son capturados corresponden a un

par ordenado de atributo con valor (atributo, valor) que

representa el registro de un hecho importante para la

organización sucedido en algún momento específico. El

atributo define qué es lo que quieres guardar y el valor

define el tipo de valor asociado, es decir los rangos

máximos y mínimos, y el tipo de dato. Los datos siempre

están formados por un par ordenado, ya que cada una de

las partes por separado no tienen sentido. Por ejemplo

(edad, 21 años).

Page 15: ADOO Clase 1 Manual

Cuando una organización registra información relativa a

procesos que son importantes, lo hace exclusivamente

para poder procesar estos datos, transformarlos en

información y luego analizar esta información y tomar

decisiones más acertadas. Este proceso de toma de

decisiones se ha especializado en extremo, como por

ejemplo con la minería de datos, que consiste en analizar

los datos ya almacenados y extraer información que se

desconocía que existía ahí, esto que si bien parece ser un

poco complicado, permite a las organizaciones descubrir

nuevas interpretaciones de los datos que tienen

almacenados, siempre con el propósito de tomar mejores

decisiones.

Page 16: ADOO Clase 1 Manual

Definición de los datos en el

contexto de un problema.

Cuando se definen los datos a almacenar es necesario

siempre pensar en el proceso que se desea registrar.

Recuerda que en todas las organizaciones, el proceso de

registro de datos no se hace al azar, es decir cuando se

registra el proceso es necesario determinar el contexto en

el cual se encuentra inmerso el proceso. Por ejemplo, si

tu organización realiza un proceso de compra y venta de

productos, te va a interesar fundamentalmente registrar

esos procesos y todos los otros anexos a ese proceso, por

eso es necesario determinar cuál es el proceso que se

quiere registrar, pues de este análisis dependerán los

datos que se elijan. Un punto muy importante a recalcar

en esta etapa es el hecho de que las organizaciones

realizan distintas acciones durante su ciclo de proceso,

pero hay algunos procesos que conforman el quehacer

básico de la organización. Ahora si bien es posible

detectar el quehacer de una organización de forma

relativamente simple, es necesario siempre hacer un

análisis en función de determinar los datos que se deben

registrar, por ejemplo, si analizamos los procesos que

realiza una panadería, nos podemos dar cuenta

fácilmente que el proceso fundamental de una panadería,

en la mayoría de los casos es fabricar y vender pan.

Ahora bien si te fijas también hay otros procesos en el

ciclo de vida de la organización como por ejemplo pagar

los sueldos, comprar las materias primas, distribuir el pan

Page 17: ADOO Clase 1 Manual

entre los clientes, llevar el registro contable, registrar las

ventas, etcétera. Ahora, una vez que has definido los

procesos, debes seleccionar los procesos más relevantes

para los cuales vas a registrar los datos, siempre

pensando en un contexto determinado. Así si lo que te

interesa es registrar los procesos productivos de la

empresa, deberás registrar los datos de las compras de

insumos, transformación de materias primas a pan y su

posterior venta.

Page 18: ADOO Clase 1 Manual

Si te fijas en este contexto dejamos varios procesos

fuera, pero eso es lo interesante de este trabajo, debes

concéntrate en lo importante, es decir sólo en el ámbito

que te incumbe en ese momento, pues no existe una

solución para todas las áreas al mismo tiempo. Esta

lógica de división de los proyectos en pequeños proyectos

que se preocupen de áreas específicas de la organización

garantiza dos cosas fundamentales, primero garantiza

menos costos iniciales en el desarrollo de la solución y

segundo, disminuye el tiempo de análisis y desarrollo

pues se disminuye la complejidad de los procesos a

analizar (son menos los procesos que se deben analizar al

mismo tiempo), lo cual genera la sensación al usuario de

que todo avanza más rápido.

Volviendo a la definición de los datos en el contexto, una

vez que defines el contexto y defines los procesos básicos

asociados a ese contexto, puedes definir las estructuras

de los datos. La estructura de un dato, está asociada al

concepto de dominio del dato, es decir al tipo de dato que

se seleccione (número entero, decimal, caracteres,

verdadero o falso, un objeto, etc.) y además los valores

permitidos, máximos y mínimos. Por ejemplo si

analizamos los datos que podemos registrar de un

alumno al momento de matricularlo (este es el contexto),

nos podrían interesar datos como los siguientes:

Page 19: ADOO Clase 1 Manual

Si analizamos ahora el dato de la edad, y nos detenemos

a pensar un momento, podemos determinar que este

dato por ejemplo es un valor numérico entero (raramente

tengo 15,76789 años), ahora el rango de los posibles

valores enteros es muy extenso y por lo tanto es

necesario el determinar cuales de estos valores me

sirven, así logro determinar que cuando recién vi la luz

del mundo, tenía 0 años y según Wikipedia, la persona

más longeva de la tierra tuvo 122 años2, por lo tanto el

valor máximo para este dato debería ser al menos 122,

de esta forma tenemos que la edad está compuesta por

valores numéricos enteros entre 0 y al menos 122.

2 http://es.wikipedia.org/wiki/Jeanne_Calment