Instituto Tecnológico de Hermosillo
Fundamentos de desarrollo de sistemas Prof. Ana Luisa Millán Castro
Enfoques:
Estructurado y Orientado a objetos Humberto Miranda Clavero Ing. en Sistemas Computacionales - 19 de marzo de 2012
Análisis y Diseño Estructurado
Análisis y diseño Orientado a Objetos
Examina los sistemas desde el punto de vista de las funciones o tareas que deben realizar, tareas que se van descomponiendo sucesivamente en otras tareas mas pequeñas y que forman los bloques o módulos de las aplicaciones. Se produce una división entre los dos elementos de un sistema: funciones que llevan a cabo los programas y datos que se almacenan en archivos o bases de datos. las herramientas que utilizan para el análisis son: Diagramas de Flujos de Datos, Diccionarios de Datos, Diagramas Entidad-Relación, Diagramas de Transición de Estado, Especificaciones de procesos. Requiere comprender primero el dominio del problema y a continuación documentar las funciones y subfunciones que debe proporcionar el sistema.
Cobra mucho más importancia el aspecto de "modelado" del sistema, examinando el dominio del problema como un conjunto de objetos que interactúan entre sí.
El software desarrollado suele ser más frágil al realizar cambios; pues si estos cambian, un sistema basado en descomposición funcional puede requerir una restructuración masiva. Modela los sistemas desde un punto de vista más próximo a su implementación en un ordenador (entrada/proceso/salida).
El software se mantiene mejor ante los cambios de requisitos, porque las modificaciones necesarias pueden ser más fácilmente localizables.
Incorpora modelos de datos, de procesos y de comportamiento.
El modelado de datos está más orientado al diseño de bases de datos y se centra exclusivamente en la identificación de los datos que maneja un sistema y en las relaciones estáticas que se establecen entre esos datos.
Da un enfoque unificador de ambos aspectos, que se unen en los objetos.
Emplea distintos modelos que depende de la metodología, entre los principales están Modelo de objetos, Modelo de Estado u Objeto-Estado, entre otros. Invierte el método estructurado, se centra en primer lugar en identificar los objetos del dominio de aplicación y después en establecer procedimientos que los manejen.
Se basa en modelar el sistema mediante los objetos que forman parte de él y las relaciones estáticas (herencia y composición) o dinámicas (uso) entre estos objetos. Este enfoque pretende conseguir modelos que se ajusten mejor al problema real. Utiliza los mismos modelos que el análisis estructurado. Las diferencias principales consisten en la mayor importancia que se da al modelo de datos, por encima de los otros dos, y en el enfoque orientado a objetos de este modelo. Los objetos encapsulan tanto atributos como procedimientos, e incorpora además conceptos como el polimorfismo o la herencia que facilitan la reutilización de código. El uso de AOO puede facilitar mucho la creación de prototipos, y las técnicas de desarrollo evolutivo de software. Eliminan fronteras entre fases debido a la naturaleza iterativa del desarrollo orientado al objeto. Aparece una nueva forma de concebir los lenguajes de programación y su uso al incorporarse bibliotecas de clases y otros componentes reutilizables. Hay un alto grado de iteración y solapamiento, lo que lleva a una forma de trabajo muy dinámica.
¿Se complementan ambos enfoques? Creo que el enfoque estructurado hace algo más que solo complementar al Orientado a objetos. El enfoque estructurado es la base del enfoque Orientado a objetos, siendo algo más que un complemento. Y si se quisiera tener únicamente el enfoque Orientado a objetos, implícitamente implementas el enfoque Estructurado, porque aunque manejes los datos y estructuras exclusivamente como objetos, tienes que dividir las tareas y lo harías como una estructura que contiene objetos, no objetos dentro de objetos simplemente. Aunque podría funcionar al revés, haciendo el enfoque Orientado a objetos complemento del enfoque Estructurado, dependiendo de dónde o cómo se aplicaría, según sea el proyecto.