Análisis y
diseño orientado a objetos: Modelo orientado a objetos, aplicando la programación
orientada a objetos
Para el desarrollo de software orientado a objetos no
basta usar un lenguaje orientado a objetos. También se necesitará realizar un análisis
y diseño orientado a objetos.
Hoy en día esta tecnología se viene aplicando en el análisis y
diseño con mucho éxito, al igual que en las bases de datos. Es que para hacer
una buena programación orientada a objetos hay que desarrollar todo el sistema
aplicando esta tecnología, de ahí la importancia del análisis y el diseño orientado a objetos.
Como representa el método
más reciente para modelar con precisión el mundo real en las aplicaciones de
software, la orientación a objetos es un concepto inclusivo que se utiliza para
describir un conjunto de tecnologías que habilitan productos de software muy
modulares y reutilizables. Las aplicaciones, los datos, las redes y los
sistemas se tratan como objetos que se pueden mezclar y combinar de manera
flexible en vez de tratarse como componentes de un sistema con relaciones
integradas. Como resultado, una aplicación no necesita estar unida a un
determinado sistema o a datos específicos de la aplicación. Los cuatro
conceptos centrales de la orientación a objetos son la encapsulación, el paso
de mensajes, la herencia y el enlace en tiempo de ejecución.
El modelamiento visual es la clave para realizar el
análisis OO. Desde los inicios del desarrollo de software OO han existido
diferentes metodologías para hacer esto del modelamiento, pero sin lugar a
duda, el Lenguaje de Modelamiento Unificado (UML) puso fin a la guerra de
metodologías.
Según los mismos diseñadores del lenguaje UML, éste
tiene como fin modelar cualquier tipo de sistemas (no solamente de software)
usando los conceptos de la orientación a objetos. Y además, este lenguaje debe
ser entendible para los humanos y máquinas.
Actualmente en la industria del desarrollo de software
tenemos al UML como un estándar para el modelamiento de sistemas OO. Fue la
empresa Racional que creó estas definiciones y especificaciones del estándar UML,
y lo abrió al mercado. La misma empresa creó uno de los programas más conocidos
hoy en día para este fin; el Racional Rose, pero también existen otros
programas como el Poseidon que trae licencias del tipo community edition que
permiten su uso libremente.
El UML consta de todos los elementos y diagramas que
permiten modelar los sistemas en base al paradigma orientado a objetos. Los
modelos orientados a objetos cuando se construyen en forma correcta, son
fáciles de comunicar, cambiar, expandir, validar y verificar. Este modelamiento
en UML es flexible al cambio y permite crear componentes plenamente
reutilizables.
La metodología orientada a objetos ha derivado de las metodologías
anteriores a éste. Así como los métodos de diseño estructurado realizados guían
a los desarrolladores que tratan de construir sistemas complejos utilizando
algoritmos como sus bloques fundamentales de construcción, similarmente los
métodos de diseño orientado a objetos han evolucionado para ayudar a los
desarrolladores a explotar el poder de los lenguajes de programación basados en
objetos y orientados a objetos, utilizando las clases y objetos como bloques de
construcción básicos.
el modelo de objetos ha probado ser un concepto uniforme en las
ciencias de la computación, aplicable no sólo a los lenguajes de programación
sino también al diseño de interfaces de usuario, bases de datos y arquitectura
de computadoras por completo. La razón de ello es, simplemente, que una
orientación a objetos nos ayuda a hacer frente a la inherente complejidad de
muchos tipos de sistemas.
Actualmente, el Análisis Orientado a Objetos (AOO) va
progresando como método de análisis de requisitos por derecho propio y como
complemento de otros métodos de análisis. En lugar de examinar un problema
mediante el modelo clásico de entrada-proceso-salida (flujo de información) o
mediante un modelo derivado exclusivamente de estructuras jerárquicas de
información, el AOO introduce varios conceptos nuevos. Estos conceptos nuevos
le parecen inusuales a mucha gente, pero son bastante naturales.
Análisis y
diseño estructurado: Modelo orientado al
flujo de datos y a componentes, pudiendo aplicar los paradigmas procedimental,
modular, abstracción de datos e incluso programación genérica.
El análisis estructurado destaca el flujo de datos y el proceso a través del
cual los datos se transforman. Su herramienta principal es el diagrama de flujo
de datos. El diseño y la programación estructuradas son disciplinas de diseño
de software que producen un software confiable y bien documentado con una
estructura sencilla y clara que es fácil para los demás de entender y mantener.
Las tablas de decisiones, los árboles de decisiones y el pseudocódigo describen
a la lógica de procesamiento en una forma tabular, gráfica y narrativa, respectivamente.
Los diagramas de flujo de sistemas son útiles para documentar los aspectos
físicos del diseño de sistemas.
Análisis y Diseño Estructurado:
Sólo se puede
obtener reutilización de dos formas: rutinas de bajo nivel (operar con datos) o
subsistemas completos (la aplicación de cartera que enlaza con cualquier
facturación). Esto limita fuertemente la reutilización, porque reaprovechar una
aplicación quiere decir aceptarla como es al 100%. Como mucho se puede intentar
parametrizar una aplicación potencialmente reutilizable si se logran prever
futuros requerimientos al programa y flexibilizar su uso. El precio es
complicar mucho más el programa y dificultar su mantenimiento, sin eliminar del
todo la necesidad de modificar el programa cuando los requerimientos de los
clientes no pueden conseguirse con la parametrización.
el ANÁLISIS y diseño estructurado consiste en las
siguientes etapas:
No enfoca apropiadamente el diseño de familias de
programas.
Asume una progresión relativa uniforme de pasos de
elaboración.
No acomoda el
tipo de desarrollo evolutivo.
No enfoca los
posibles modos futuros de desarrollo de software.
Al terminar un sistema es casi imposible reutilizar el
código en otra aplicación.
• Proponen la
creación de modelos del sistema que representan:
– Los procesos
– Los flujos
– La
estructura de los Datos
• Enfoque
Top-Down
– De visión
general a nivel de abstracción más sencillo
• Tipos:
– Orientadas a
Procesos
– Orientadas a
Datos
Estructuras de Datos Jerárquicas
Estructuras de Datos no Jerárquicas
– Mixtas
• Metodologías
Orientadas a Procesos
– Se apoyan en
técnicas gráficas para obtener:
ESPECIFICACIÓN
ESTRUCTURADA
Modelo gráfico, particionado, descendente y jerárquico de los
procesos del sistema y de los datos utilizados por éstos.
Componentes:
Diagrama de Flujo de
Datos
Diccionario de Datos
analisis y diseño
orientado a objetos.
El paradigma
(la forma de pensar y representar la realidad) de la orientación a objetos es
mucho mas potente que el estructurado y permite obtener más
reusabilidad, por dos razones. En primer lugar porque se puede tener reusabilidad
por separado, tanto del análisis como del diseño y la programación; no estamos
obligados a tomar un paquete entero: si sólo nos interesa el análisis, lo
podemos reutilizar con un diseño diferente del que se había utilizado
originalmente. La segunda razón es la herencia. Si una aplicación tiene algunas
partes que no se adecuan a nuestras necesidades, podemos modificarlos sin
'parchear' mediante la herencia. Es decir, la programación pasa a ser como el
'prêt-a-porter' en la industria textil. Podemos tener la mayor parte hecha
industrialmente y adaptarla a cada cliente según sus necesidades.
el ANÁLISIS y diseño orientado a objetos consiste en
las siguientes etapas:
Análisis.
Une a los usuarios y a los diseñadores.
Permite proporcionar una descripción completa del problema, legible
y revisable por las partes interesadas y verificable contra la realidad.
Si tenemos correctamente definidas nuestras jerarquías de clase,
hacer modificaciones no es tan costoso como en el caso de la programación
estructurada. Sólo tenemos que entrar en la parte de Evolución para
hacer modificaciones.
Diseño.
Inicia
aún antes de concluir con la etapa de análisis.
Se recomienda analizar un poco y diseñar.
Esta etapa debe concluir una vez que se establecieron claves y
mecanismos importantes.
Evolución.
Incorpora los
aspectos tradicionales de programación, verificación e integración.
El proceso de desarrollo consiste en una producción incremental de
series de prototipos que evolucionan a la implantación final.
Posibles cambios que pueden presentarse en esta etapa:
Agregar una
clase.
Modificar la
implantación de una clase.
Modificar la representación de una clase.
Reorganizar la estructura de clases.
Cambiar la interfaz de una clase.
Modificación.
Un programa que
se usa en un ambiente real necesariamente debe cambiar. Los cambios difieren un
poco de los requeridos en evolución, pues contemplan la introducción de nuevas
funcionalidades no previstas en el problema original.
• Cambio en los principios de las metodologías estructuradas:
– Estructurado: Examinar el sistema desde las funciones y tareas
– OO: Modelado del Sistema examinando el dominio del problema como
un conjunto de objetos que interactúan entre sí
– Objetos: Encapsulan Funciones + Datos
• Enfoques:
– “Revolucionarios” o “Puros”
La OO se entiende como un cambio profundo de las metodologías
estructuradas que se ven como obsoletas
OOD (Booch), CRC/RDD
(Wirfs-Brock)
– “Sintetistas” o “Evolutivos”
Ánalisis y Diseño Estructurado se consideran como la base
para el desarrollo OO, OMT, UML.
es importante señalar:
La programación orientada a objetos también es mucho mas
fiable por diversas razones. En primer lugar por el desarrollo incremental
y la programación por diferencia, al poder ir añadiendo funcionalidad vía herencia.
El tamaño medio de una rutina en entornos orientados a objetos es de 4 o 5
líneas; y se ha de tener en cuenta que sólo se tienen rutinas, ya que no
existe el concepto de programa principal. La utilización masiva de
librerias de clases garantiza la fiabilidad, ya que los componentes sólo se
añaden a la libreria cuando se ha verificado la corrección de su
funcionamiento.
proyecto web:
El análisis y el diseño se puede realizar en UML.
Durante el análisis analizaremos el dominio del
problema para construir un modelo del mundo real utilizando objetos.
Investigaremos para hacer una descripción del problema y obtención de los
requerimientos.
El diseño consiste en el refinamiento de los modelos de análisis para
crear especificaciones adicionales que enriquecen el modelo de análisis con
detalles próximos a la implementación. Una solución lógica, de forma que se
cumplan los requerimientos (asignación de responsabilidades, interacciones
entre objetos, etc.)
La implementación la podemos realizar
en un lenguaje orientado a objetos, durante la cual codificaremos el diseño
obtenido en las fases de análisis y diseño. (Lenguajes OO: Java, C++, Delphi,
etc.)
Analisis y diseño orientado a objetos
...El propósito de AOO es definir las clases
(relaciones y comportamientos) que son relevantes al problema a resolver...
La orientación
a objetos se basa en tres pilares básicos: - encapsulación y ocultación de la información
- abstracción y clasificación.
Este enfoque resolvió los
dos problemas planteados. Primeramente, ofrecía una forma natural de partir un
programa muy complejo y, en segundo lugar, el mantenimiento pasaba a ser
controlable.
Una metodología
de desarrollo por lo tanto representa
el camino a seguir para desarrollar Software de manera sistematica.
Análisis y
diseño orientado a objetos: Modelo orientado a objetos, aplicando la
programación orientada a objetos
Proceso de diseño orientado
a objetos ( OOP) Es interactivo
e incremental, se compone por las siguientes actividades: 1. Identificar clases
y objetos. 2. Identificar la semántica de clases y objetos. 3. Identificar
interrelaciones de clases y objetos. 4. Implementar clases y objetos.