Mostrando entradas con la etiqueta Orientación a Objetos. Mostrar todas las entradas
Mostrando entradas con la etiqueta Orientación a Objetos. Mostrar todas las entradas

DSN_XP y el método BOOCH

El método de Booch

DSN_XP en su versión 1.0 encuentra en el estudio de UML los modelos técnicos que eran utilizados por las metodologías que dieron soporte al lenguaje de modelado universal.

Metodología Booch

Fuente de conocimientos DSN_XP

El Método de Booch y su Influencia en DSN_XP 1.0

El desarrollo de software ha evolucionado a lo largo de los años, buscando siempre metodologías que permitan crear sistemas más eficientes, robustos y adaptables. En este contexto, el Método de Booch, con su enfoque en la orientación a objetos, ha dejado una huella significativa. En este artículo, exploraremos este método y su relevancia en el desarrollo de DSN_XP 1.0.

¿Qué es el método de Booch?

El Método de Booch es una metodología de desarrollo de software orientado a objetos creados por Grady Booch en Rational Software Corporation (posteriormente adquirido por IBM). Se centra en cuatro pilares fundamentales:

  • Abstracción: Simplificar la complejidad del sistema mediante la identificación de los aspectos esenciales.
  • Encapsulamiento: Ocultar los detalles de implementación y exponer solo las interfaces necesarias.
  • Modularidad: Dividir el sistema en componentes independientes e interconectados.
  • Jerarquía: Organizar los componentes en una estructura jerárquica para facilitar la comprensión y el mantenimiento.

Componentes Clave del Método

El método se compone de tres elementos principales:

  • Notación: Un lenguaje para representar los modelos del sistema (como UML).
  • Proceso: Las actividades que guían la construcción ordenada de los modelos.
  • Herramientas: Los artefactos que automatizan tareas y ayudan a detectar errores e inconsistencias en los modelos.

Modelos en el Diseño Orientado a Objetos

El diseño orientado a objetos, promovido por Booch, busca crear software resistente al cambio y con una expresión concisa. Se basa en la creación de varios modelos:

  • Modelo Lógico: Representa la estructura conceptual del sistema.
  • Modelo Físico: Describe la implementación física del sistema, incluyendo hardware y software.
  • Modelo Estático: Muestra la estructura del sistema en un momento dado.
  • Modelo Dinámico: Describe el comportamiento del sistema a lo largo del tiempo.

Filosofía y Principios del Diseño según Booch

Booch enfatiza la importancia de una etapa de análisis seguida por una de diseño. El diseño se define como una aproximación disciplinada para resolver un problema, guiando desde los requerimientos hasta la implementación.

Principios clave del diseño:

  • Crear una arquitectura interna clara y sencilla.
  • Equilibrar los requisitos en conflicto.
  • Utilizar modelos para razonar sobre las estructuras y facilitar la toma de decisiones.

Los modelos permiten simular y probar el sistema en condiciones controladas, identificando posibles fallos y realizando ajustes antes de la implementación.

Valores en la Construcción de Sistemas

La construcción de un sistema implica:

  • Satisfacer los requisitos funcionales.
  • Adaptarse a las limitaciones del entorno.
  • Cumplir con los requisitos implícitos y explícitos sobre la forma del artefacto.
  • Respetar las restricciones del proceso de diseño, como el tiempo, el coste y las herramientas disponibles.

El Ciclo de Vida Iterativo e Incremental

Booch recomienda el modelo iterativo e incremental para el ciclo de vida del software. Este enfoque permite refinar la arquitectura a través de iteraciones sucesivas y entregar incrementos funcionales del sistema.

DSN_XP 1.0 y la influencia del método de Booch

DSN_XP 1.0 reconoce la importancia de los modelos técnicos utilizados en las metodologías que dieron origen a UML. Se opone a dos extremos: la anarquía (falta de un ciclo de vida definido) y la dictadura (exceso de rigidez que sofoca la creatividad).

DSN_XP 1.0 promueve un proceso iterativo e incremental, donde se refina la arquitectura orientada a objetos a través de iteraciones sucesivas, incorporando la experiencia de cada iteración. Este enfoque permite converger hacia una solución que cumpla con los requisitos del usuario, siendo a la vez simple, confiable y adaptable.

DSN_XP y su base de conocimientos

Base de conocimientos DSN_XP

DSN_XP.BaseKnow

Nuestra base de conocimientos se establece gracias a las siguientes fuentes de información DSN_XP que son:

  • Biblioteca que contiene todos los libros que se han buscado en la red sobre un contexto específico de apoyo teórico para una investigación DSN_XP.
  • Investigaciones que son aquellos temas que debemos consultar para lograr definir un contexto apropiado para una intervención en la cual aplicaremos DSN_XP en cualquiera de sus versiones.
  • Actores que son aquellos personajes que hemos investigado como proponentes de una teoría o escuela de pensamiento que estamos consultando para describir un escenario de uso o experimentación con DSN_XP.

Conocimiento base

El primer nivel de conocimiento describe los principios básicos de un arte, ciencia o técnica, esto nos llevó a profundizar en aquellos aspectos académicos con los cuales podíamos contar como plataforma de conocimientos en aquel entonces.  

El conocimiento científico

Estudio inverso del método con DSN_XP
DSN_XP es una metodología para desarrollar conocimiento, como metodología posee la facultad de estudiar el método, por lo tanto, dicho estudio implica el uso de la técnica de observación y experimentación, este razonamiento es la fuente principal de conocimiento que aplica DSN_XP para conceptuar un modelo como artefacto, bajo esta premisa, DSN_XP está en la capacidad de definir lineamientos para una lectura adecuada y un uso apropiado del modelo.

Academia

Nuestra base de conocimientos estaba determinada tanto por nuestra formación académica como analista programador para pasar luego a formarnos como ingeniero en sistemas y finalmente como consultor técnico.

Nuestra base de conocimientos se conformaría inicialmente entre:

  • Técnicas de modelado, modelos y métodos en la historia del software. 
  • Herramientas y buenas prácticas referidas en los contextos de desarrollo de software.

Base de conocimientos DSN_XP

Conocimientos académicos

DSN_XP conceptúa como núcleo de su marco de trabajo, al desarrollo de una base de conocimientos que fueron obtenidos durante nuestra formación como Tecnólogo analista programador y luego como Ingeniero en sistemas.  

Estos conocimientos que forman nuestra base de conocimientos académicos, junto con las investigaciones temáticas desarrolladas, son referidos en cualquier intervención técnica que requiera de las recomendaciones de DSN_XP, así como el estudio y actualización constante de nuestros propios conocimientos para el modelado avanzado de software y el desarrollo de investigaciones temáticas

Escuelas de pensamiento

La información está disponible en cualquier parte, es preciso entonces su interpretación para comenzar a definir un conocimiento como la facultad de entender y juzgar una cosa. Bajo este razonamiento, se entiende entonces que son necesarias diversas áreas de conocimiento para conceptuar de forma holística todo el proceso de desarrollar software.

SWEBOK (IEEE)

Base de conocimientos sobre la ingeniería software


Las diversas áreas de conocimiento que estudiamos del SWEBOK son:
  • Requisitos del software
  • Diseño de software
  • Construcción de software
  • Pruebas de software (testing)
  • Mantenimiento de software
  • Administración de la configuración del software
  • Administración de la ingeniería software
  • Procesos de ingeniería software
  • Herramientas y métodos de la ingeniería software
  • Calidad del software

PMBOK (PMI)

Base de conocimientos sobre gestión de proyectos


Las diversas áreas de conocimiento que estudiamos del PMBOK son:
  • Gestión de la integración
  • Gestión del alcance
  • Gestión del tiempo
  • Gestión de la calidad
  • Gestión de costos
  • Gestión del riesgo
  • Gestión de recursos humanos
  • Gestión de la comunicación
  • Gestión de las compras y adquisiciones

BABOK (IIBA)

Base de conocimientos sobre el análisis de negocios


Las diversas áreas de conocimiento que soporta el BABOK son:
  • Análisis empresarial
  • Planificación de requerimientos y gestión
  • Elicitación de requerimientos
  • Análisis de requerimientos y documentación
  • Aseguramiento de la solución y validación

AGILE/LEAN/ADAPTIVE 

Base de conocimientos sobre gestión de proyectos ágiles

DSN_XP reconoce que todo proyecto software intrínsecamente contiene un factor de riesgo el cual debe ser gestionado adecuadamente, por ello, adopta la filosofía propuesta por el movimiento ágil.
Valoramos al equipo y su interacción, por encima de los procesos y las herramientas.
(TeamView)

El software que funciona, por encima de la documentación exhaustiva. 
(SoftwareView)

La colaboración con el cliente, por encima de la negociación contractual. 
(BusinessView)

La respuesta al cambio, por encima del seguimiento de un plan.
(Adaptive Framework)
El marco adaptativo requiere necesariamente de stakeholders participativos e involucrados en el proyecto, el riesgo al igual que el éxito o el fracaso de un proyecto es de responsabilidad compartida entre los miembros del equipo asignado a este. Pese a ello, el fracaso de un proyecto es de utilidad para el entorno ya que genera un aprendizaje de la cultura y el proceso se mejora continuamente.

Estudio de artefactos y métodos

Base de conocimientos sobre metodologías y marcos de trabajo

DSN_XP como metodología estudia al método, artefacto, modelo, etc., que es recomendado como buena práctica para el desarrollo de software. Esto involucra el estudio en la práctica de las siguientes escuelas de diseño:
  • Ciclos de vida para el desarrollo de software.
  • Modelos para la abstracción de diseños.
  • Técnicas de comunicación entre equipos.
  • Patrones de diseño y marcos de trabajo para el desarrollo de software.
  • Aspectos legales detrás del diseño y propiedad intelectual.
  • Documentación del software

Estudio de escuelas de diseño

Base de conocimientos sobre diseño de software

DSN_XP por principio adopta los lineamientos de la escuela de orientación a objetos, sin embargo puede adaptarse a otras escuelas de diseño bajo su noción de perspectivas de uso y escenarios.
  • Programación orientada a objetos.
  • Programación orientada a aspectos.
  • Diseño de base de datos.
  • Diseño por contrato.
  • Diseño de código abierto.
  • Arquitecturas software y lenguajes de programación.

Estudio de personal humano

Base de conocimientos sobre la interacción con personas

DSN_XP como metodología estudia al ser humano y su comportamiento, para lo cual recurre a las siguientes escuelas de pensamiento:
  • Cuarto camino (integración del pensamiento fragmentado)
  • Filosofía (definición de modelos de pensamiento)
  • Psicología (definición del posible comportamiento humano)
  • Danzas y movimientos (para el equilibrio del ser humano)
  • Neurolingüística (para el uso adecuado del lenguaje corporal y hablado)
  • Mentoring, coaching, training de equipos multidisciplinares.

Estudio del entorno y la naturaleza

Base de conocimientos sobre la interacción entre el producto y su entorno

DSN_XP como metodología estudia al entorno para respetar su estatus, para ello recurre a las siguientes escuelas de pensamiento:
  • Permacultura (como adaptarse al entorno natural con cultura permanente)
  • Marco de trabajo adaptativo (para adaptarse al entorno del negocio).
  • Comportamiento organizativo (para la definición de un lenguaje apropiado para el entorno)
  • Marketing (para alinearse a los objetivos comerciales del cliente)
  • Bases de conocimientos (para el continuo aprendizaje del entorno)
  • Administración de riesgos (para el uso adecuado de los recursos del entorno)

DSN_XP y su versión 1.0.

Estudio avanzado de la ingeniería de software 

DSN_XP como arquitectura
En nuestra versión 1.0 el objetivo central es el definir un marco de trabajo para el diseño de software por experimentación, mediante ingeniería inversa de toda la codificación realizada para abstraer un diseño lógico.

Arquitectura 

Para poder esquematizar la versión 1.0 era necesario distinguir la presencia de la perspectiva que se dedica a investigar a la ingeniería del software desde sus inicios.  A esta perspectiva la denominamos como Software View y se encarga de analizar justamente a la ingeniería del software.

Ahora bien, la ingeniería de software en sus inicios se ve altamente influenciada por el desarrollo del hardware y su proceso de industrialización, sin embargo, la parte abstracta que es justamente la que caracteriza al software y en especial, a su característica programable, debía ser entendida dentro de la cobertura que se establece para el estudio del software o software View.

La idea de una máquina programable

Iniciar conforme la historia del desarrollo de la electrónica, ha motivado a superar muchas de las limitaciones que se tuvieron en un principio para lograr establecer lo que ahora, gracias a la tecnología y a la ciencia, se puede visualizar con un poco de mayor claridad.

Dentro de la perspectiva basada en el estudio del hardware, los intentos de la humanidad por abstraer el proceso de cálculo se remontan a las nociones matemáticas y de cálculo aplicado, razón por la cual se concluye que es la actividad humana productiva la que ha impulsado este proceso de abstracción que es motivo de nuestro estudio de la ingeniería de software.

Una vez que se ha establecido el método y con ello, se han establecido los principios, artefactos, técnicas y herramientas necesarias para poder profundizar en la investigación, arranca su base de conocimientos con aquellos conocimientos previos que han sido capturados en varios aspectos experimentados como proyectos de terceros para el desarrollo de software, bajo el apoyo y recomendaciones de DSN_XP.

Para cuando desarrollamos esta versión, en el mercado existía la programación estructurada y aparecieron ya algunos libros con referencias a una nueva escuela de diseño de software basada en la concepción de objetos, esto implicó para nosotros lograr profundizar en aquellos aspectos académicos del software y en especial el lograr desarmar la estructura rígida de la planificación anticipada.