View
131
Download
1
Category
Preview:
Citation preview
ANÁLISIS Y DISEÑO ORIENTADO A OBJETO.
CLASE 1
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.
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
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
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.
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
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.
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
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.
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.
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.
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
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
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).
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.
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
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.
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:
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
Recommended