Escolar Documentos
Profissional Documentos
Cultura Documentos
com/2017/01/03/introduccion-al-modelado-y-al-proceso-de-
desarrollo-de-software/
Vemos el curso que hace parte del master en desarrollo web dictado por la U politécnica de Madrid.
Según una definición bastante convencional el Análisis Orientado a Objetos (OOA por sus siglas
en inglés de Object Oriented Analysis) sería un método de análisis que examina los
requerimientos desde la perspectiva de las clases y objetos encontrados en el vocabulario de del
dominio del problema.
A su vez, el Diseño Orientado a Objetos resultaría un método de diseño para abarcar el proceso
de descomposición orientado a objetos y una notación para representar ambos modelos lógico y
físico.
Sobre estas premisas puede decirse que las metodologías POO son muy abundantes, entre las más
conocidas y estudiadas hasta antes de la fulgurante aparición del UML estarían:
Actualmente las metodologías más importantes de análisis y diseño de sistemas han confluido en lo
que se denomina el UML, bajo el respaldo del Object Management Group Los sistemas de
información, sistemas informáticos y las organizaciones son elementos cuyo desarrollo o desempeño
están notablemente ligados, de ahí que su éxito esté estrechamente vinculado, de tal forma que los
logros de uno inciden notablemente en el éxito del otro.
Para entender estos aspectos debemos partir de la idea sistema que es un conjunto de partes,
elementos o cosas interdependientes e interrelacionadas para la consecución de un fin. Aplicado a los
sistemas de información este mismo concepto se entiende como un todo unitario y organizado de
procesos, procedimientos, tareas, métodos y recursos materiales, tecnológicos y humanos
interdependientes, de los que se vale una organización para alcanzar un objetivo, y es fácilmente
identificable por los límites de su medio ambiente. Así las cosas, las organizaciones son sistemas
abiertos, cada una a su vez compuesta por subsistemas de mayor o menor tamaño o complejidad, que
asimismo tiene límites claramente definidos. Todos poseen funciones y objetivos particulares, que
unidos forman las funciones y objetivos de la empresa u organización. Pues bien, si así está
constituida la realidad empresarial, de manera análoga están conformados o estructurados los
sistemas informáticos, también sujetos al correcto desempeño de las funciones de cada subsistema,
para lograr así el buen funcionamiento del sistema y la consecución de todas sus metas.
Al entrar en juego dentro del sistema la información, el sistema quedaría entonces definido como un
medio organizado de proporcionar información pasada, presente y hasta futura relacionada con las
operaciones internas y el conocimiento externo de la organización.
Esto quiere decir que un sistema de información es un ente que sigue una estructura bien organizada
y claramente planteada con el fin de emitir y generar información histórica, actual y proyecciones
futuras inclusive, todo esto con la espina vertebral de las operaciones llevadas a cabo por la
organización.
Los modelos del diseño orientado a objetos reflejan la importancia de plasmar explícitamente las
jerarquías de clases y objetos del sistema que se diseña. Estos modelos cubren también el espectro de
las decisiones de diseño relevantes que hay que considerar en el desarrollo de un sistema complejo, y
así animan a construir implantaciones que posean los atributos de los sistemas complejos bien
formados.
También se dijo del DOO que es un método que abarca el proceso de descomposición orientada a
objetos y una notación para describir los modelos lógico y físico, así como los modelos estático y
dinámico del sistema que se diseña; el soporte para la descomposición orientada a objetos es lo que
hace al diseño orientado a objetos diferente del diseño estructurado. El primero, utiliza abstracciones
de clases y objetos para estructurar lógicamente los sistemas, y el segundo, utiliza abstracciones
algorítmicas.
Dentro de este ámbito, la Programación Orientada a Objetos (POO) aparece como un método
de implementación en el que los programas se organizan como colecciones cooperativas de objetos,
cada uno de los cuales representa una instancia de alguna clase, y cuyas clases son, todas ellas,
miembros de una jerarquía de clases unidas mediante relaciones de herencia.
¿Cómo se conjugan estos tres pilares? Los resultados obtenidos durante el análisis orientado a objetos
sirven como modelo o punto de partida para realizar el diseño orientado a objetos del sistema.
Posteriormente, se procederá, tomando como base dicho modelo realizado en el DOO, a desarrollar
el sistema computacional utilizando para tal fin la metodología de programación orientada a objetos
suministrada por determinado lenguaje de programación igualmente orientado a objetos.
El modelo lógico nos servirá para describir la existencia y significado de las abstracciones
principales y los mecanismos que forman el espacio del problema, o para definir la arquitectura del
sistema. Detallará las características primordiales de las entidades principales (clases y objetos), así
como la forma de trabajo de estas entidades, estructurando sus límites, los pros y contras del
problema planteado, para luego definir o identificar la arquitectura del sistema.
b) Diagrama de Clases: Se utiliza para mostrar la existencia de clases y sus relaciones en la visión
lógica de un sistema. Durante el análisis, se utiliza para indicar los cometidos y responsabilidades
comunes de las entidades que caracterizan el comportamiento de un sistema. Durante el diseño, se
utilizan para plasmar la estructura de las clases que forman la arquitectura del sistema.
Del modelo físico por su parte, es la composición concreta en cuanto a hardware y software del
contexto o implantación del sistema.
Esto no es más que la descripción de la estructura física, o sea el hardware y lógica o software que
componen al sistema. Para representar gráficamente al modelo físico, existen dos diagramas, a saber:
Tal como se mencionó anteriormente el modelo de desarrollo orientado a objetos está conformado
por los modelos lógico y físico, así como también por los modelos estático y dinámico, estos modelos
explican que, algunos diagramas son estáticos mientras que otros son de carácter dinámico. Por
ejemplo, los diagramas implementados en el modelo físico son fuertemente estáticos. No representan
o simbolizan ningún tipo de relaciones que involucren el movimiento o flujo de acciones que disparen
eventos, lo que genera una visión sumamente estática del sistema. Mientras que los diagramas del
modelo lógico amplían la visión del modelo físico, generando de esta forma una visión sumamente
amplia de cómo actúa el sistema.
Aunque no siempre están bien delimitadas las etapas de análisis y diseño en la POO, se pueden
sintetizar de alguna forma las ideas claves de las distintas tecnologías existentes dentro del desarrollo
orientado a objetos al que denominaremos diseño.
Así, se considera que las etapas del proceso en un desarrollo orientado a objetos son:
Estas etapas suelen seguirse por la mayoría de los métodos de diseño OO existentes.
De hecho, para los sistemas orientados a objetos se suelen definir según el siguiente formato en
pirámide.sss
La capa del subsistema. Contiene una representación de cada uno de los subsistemas que le
permiten al software conseguir los requisitos definidos por el cliente e implementar la
infraestructura técnica que los soporta.
La capa de clases y Objetos. Contiene las jerarquías de clase que permiten crear el sistema
usando generalizaciones y especializaciones mejor definidas. Esta capa también contiene
representaciones de diseño para cada objeto.
La capa de mensajes. Contiene los detalles que le permiten a cada objeto comunicarse con sus
colaboradores. Esta capa establece las interfaces externas e internas para el sistema.
Al igual que el diseño de software convencional, el DOO aplica diseño de datos (cuando se representan
atributos), diseño de interfaces (cuando se presenta el intercambio de mensajes) y diseño
procedimental (en el diseño de operaciones), no obstante el diseño arquitectónico es diferente. La
arquitectura de diseño OO se centra más en las colaboraciones entre los objetos que con el flujo de
control de datos. De esta manera las capas de la pirámide se renombran para reflejar de forma más
exacta la naturaleza del DOO. La siguiente figura muestra ahora la correspondencia entre el AOO con
las correspondientes capas de la pirámide de diseño OO.
Algunos criterios nos permiten juzgar la capacidad que posee un método de diseño en poder lograr
ciertos elementos importantes tales como la modularidad:
Composición. Grado con el cual un método de diseño asegura que los componentes de un programa
(módulos), una vez diseñados y construidos, pueden reusarse para crear otros sistemas.
Continuidad. Facilidad de hacer pequeños cambios en un programa y hacer que estos se manifiesten
por sí mismos en cambios correspondientes solamente en no o unos pocos módulos más.
Estos criterios y principios de diseño pueden aplicarse a cualquier método de diseño, incluyendo el
antiguo diseño estructurado. No obstante, el método de diseño orientado a objetos logra cada uno de
los principios de manera más eficiente que otros enfoques y el resultado final es una arquitectura
modular que permite cumplir con todos los principios de modularidad de una manera más eficiente.
Al estudiar las metodologías de análisis y diseño orientadas a objetos, se manejan algunos conceptos
que es bueno delimitar de manera precisa.
Modelo es una representación formal de un sistema con cierto nivel de abstracción. En las etapas de
especificación de requerimientos y análisis el nivel de abstracción normalmente es alto, omitiendo
detalles de implementación.
Metamodelo. Es un modelo que describe otros modelos, describe los conceptos del método modelo
y sus relaciones, define los modelos legales que pueden ser construidos dentro del método, describe
la información que debe ser capturada usando herramientas CASE que soporten el método.
Vistas y notaciones. Son útiles en la presentación fundamental del modelo de información para
que los seres humanos puedan comprenderla, examinarla y modificarla en su caso. Una vista solo
muestra una parte de la semántica o información del modelo y diferentes vistas pueden presentar la
misma información en varias formas. Mientras que la notación consigue construir, examinar y
manipular modelos. El mismo modelo se puede dibujar de diferentes maneras mediante el uso de
diferentes símbolos, donde algunos de ellos pueden tener el mismo significado. Cada persona puede
adoptar su propio formato para describir sus diagramas.
Artifacts. Término anglosajón que remite a los modelos y los diagramas del proceso de
desarrollo. Estos los documentos de desarrollo que los expertos del dominio, directores y clientes
pueden examinar, comentar acerca de ellos y criticar. Son las variables que miden el progreso, los
archivos que pueden ser intercambiados entre diseñadores y entre herramientas.
Proceso. Es la guía que indica como producir un modelo, proporciona un esqueleto o plataforma de
trabajo (frameworks) para el desarrollo, describe los artifacts a ser producidos y las etapas para
producirlos. A alto nivel, describe el desarrollo del ciclo de vida y las etapas de iteración dentro de él.
A bajo nivel describe un esqueleto de trabajo para la producción de modelos; las etapas para la
construcción del modelo, principios de diseño a seguirse, mediciones de calidad, referencias cruzadas,
reglas de consistencia y banderas rojas para identificar posibles problemas.
Patrón. Es una solución estándar escrita para resolver un problema, basada en una secuencia de
tiempo. No existen museos de programas donde los nuevos diseñadores puedan aprender, emulando
programas que allí existen, mas bien, tratan de captar ideas de los diseñadores expertos. Actualmente
existe un Movimiento de Patrones, con el propósito de coleccionar, catalogar y explicar patrones
útiles de diseño, de tal forma que otros diseñadores puedan aprender de ellos. Por lo tanto, los
Patrones, son resúmenes de casos de diseño basados en la experiencia.
Una vez conocido todo lo explicado en los epígrafes precedentes, estamos en condiciones de
comprender algunas propuestas teóricas y metodológicas de análisis y diseño de software orientado
a objetos. Es opinión extendida que dentro de los enfoques AOO y DOO existen dos corrientes
principales:
Estáticos (enfocados a datos), en lo que lo importante es la estructura de datos anexa a los objetos y
las operaciones que sobre ella operan.
Lo cierto es que ésta es una diferencia puramente teórica. La mayoría de las metodologías tiende a los
esquemas puramente dinámicos. En general, cualquier metodología buscará que:
Los cambios de diseño necesarios estén localizados, y resulten improbables las interacciones
inesperadas con otros módulos del programa.
El diseño basado en objetos sea adecuado para una realización distribuida, paralela o secuencial.
Procurará eliminar las zonas compartidas de datos, reduciendo, de esta manera, la posibilidad de
modificaciones inesperadas, así como otras anomalías en la actualización.
Los métodos de diseño orientados a objetos compartirán los siguientes pasos básicos de diseño,
aunque en su detalle final pueda haber grandes diferencias:
Identificar los objetos y sus atributos, así como los nombres de los métodos.
Metodología de Booch: El método original de Booch comienza por un análisis de flujo de datos,
que se utiliza entonces como ayuda para identificar objetos, buscando tanto objetos concretos como
objetos abstractos en el espacio del problema, que se encontraran a partir de las burbujas y almacenes
de datos en el diagrama de flujo de datos (DFD). La notación y método de diseño revisados de Booch
consta de 4 actividades principales y 6 notaciones. Los primeros pasos tratan los aspectos estáticos
del sistema, tanto en su aspecto lógico como en su aspecto físico.
Diagramas de clases
Diagramas de objetos
Estructura física:
Diagramas de módulos
Diagramas de procesos
Dinámica de clases
Diagramas de transición de estados
Dinámica de instancias
Diagramas temporales
El método Booch es uno de los métodos mejor desarrollado y con más éxito comercial, en el que se
han inspirado otros muchos teóricos de la metodología y aplicado numerosas empresas de desarrollo
de software.
Método Hood: La noción de la jerarquía de prioridades es aprovechada también por otro método,
HOOD. La “H” de HOOD quiere decir jerárquico. En HOOD los objetos son o pasivos o activos. Los
objetos pasivos solamente son capaces de utilizar los objetos de otros objetos pasivos, pero los activos
pueden utilizar los servicios de cualquier objeto. HOOD es un método de refinamiento progresivo que
se basa en la descomposición de un objeto del máximo nivel y, posteriormente, en la descomposición
de los objetos así resultantes. El método HOOD utiliza un cierto número de pasos para descomponer
cada objeto, comenzando por un paso de diseño básico que podría implicar técnicas de realización de
diagramas de procedentes de otros métodos de análisis y diseño estructurado. El paso siguiente
consiste en generar una estrategia informal de soluciones. Esto se descompone en un cierto número
de tareas: un esbozo del lenguaje natural, diagramas HOOD de primera mano y una descripción del
nivel actual de abstracción. El tercer paso consiste en formalizar la estrategia de solución. Esto se hace
por fases, identificando y describiendo los objetos y sus operaciones.
Método OOSD: Es el diseño estructurado orientado a objetos (OOSD), que fuera presentado por
Wasserman, Picher y Muller (1990). Hablando estrictamente, OOSD no es un método sino una
notación a la cual se pueden agregar reglas metodológicas. Esta notación es probablemente la que
más próxima se encuentra al espíritu de la orientación a objetos. OOSD es una notación para el diseño
arquitectónico, que cambia el diseño por refinamiento progresivo estructurado y el diseño orientado
a objetos. Una vez más, OOSD emplea una notación que se deriva de la de Booch, pero, también tiene
influencia de los diagramas estructurales. OOSD no es tanto un método como un tipo de notación
para apoyar los métodos de diseño orientado a objetos en general. Los usuarios de OOSD pueden
añadir reglas de diseño según cuál sea el método concreto que esté utilizando. Otros puntos
importantes de OOSD son la facilidad con la que es aceptado por los desarrolladores que ya están
familiarizados con el diseño estructurado así como lo adecuado que resulta para los sistemas de
tiempo real. OOSD es una de las notaciones de diseño más avanzadas y adecuada para el diseño
arquitectónico o lógico más que para el diseño físico.