Articles

Separación de preocupaciones

Apilamiento de protocolo de InternetEditar

La separación de preocupaciones es crucial para el diseño de Internet. En el Conjunto de Protocolos de Internet, se han hecho grandes esfuerzos para separar las preocupaciones en capas bien definidas. Esto permite a los diseñadores de protocolos centrarse en las preocupaciones de una capa e ignorar las otras capas. El protocolo de capa de aplicación SMTP, por ejemplo, se preocupa por todos los detalles de la realización de una sesión de correo electrónico a través de un servicio de transporte confiable (generalmente TCP), pero no le preocupa en lo más mínimo cómo el servicio de transporte hace que ese servicio sea confiable. Del mismo modo, TCP no se preocupa por el enrutamiento de paquetes de datos, que se maneja en la Capa de Internet.

HTML, CSS, JavaScriptEdit

El lenguaje de marcado de hipertexto (HTML), las hojas de estilo en Cascada (CSS) y JavaScript (JS) son lenguajes complementarios utilizados en el desarrollo de páginas web y sitios web. HTML se utiliza principalmente para la organización del contenido de la página web, CSS se utiliza para la definición del estilo de presentación del contenido, y JS define cómo el contenido interactúa y se comporta con el usuario. Históricamente, este no era el caso: antes de la introducción de CSS, HTML realizaba las dos tareas de definir la semántica y el estilo.

Programación orientada a la asignaturaeditar

La programación orientada a la asignatura permite abordar preocupaciones separadas como construcciones de software separadas, cada una en pie de igualdad con las demás. Cada preocupación proporciona su propia estructura de clases en la que se organizan los objetos en común, y contribuye con el estado y los métodos al resultado compuesto donde se cruzan entre sí. Las reglas de correspondencia describen cómo las clases y los métodos en las diversas preocupaciones se relacionan entre sí en los puntos donde interactúan, lo que permite que el comportamiento compuesto de un método se derive de varias preocupaciones. La separación multidimensional de preocupaciones permite que el análisis y la composición de preocupaciones se manipulen como una «matriz» multidimensional en la que cada preocupación proporciona una dimensión en la que se enumeran diferentes puntos de elección, con las células de la matriz ocupadas por los artefactos de software apropiados.

Programación orientada a los aspectoseditar

La programación orientada a los aspectos permite abordar las preocupaciones transversales como preocupaciones principales. Por ejemplo, la mayoría de los programas requieren algún tipo de seguridad y registro. La seguridad y el registro a menudo son preocupaciones secundarias, mientras que la preocupación principal a menudo es lograr los objetivos comerciales. Sin embargo, al diseñar un programa, su seguridad debe integrarse en el diseño desde el principio en lugar de tratarse como una preocupación secundaria. La aplicación de seguridad posterior a menudo resulta en un modelo de seguridad insuficiente que deja demasiadas brechas para ataques futuros. Esto se puede resolver con programación orientada a aspectos. Por ejemplo, un aspecto puede escribirse para exigir que las llamadas a una determinada API siempre se registren, o que los errores siempre se registren cuando se lanza una excepción, independientemente de si el código de procedimiento del programa maneja la excepción o la propaga.

Niveles de análisis en inteligencia artificialedItar

En ciencia cognitiva e inteligencia artificial, es común referirse a los niveles de análisis de David Marr. En un momento dado, un investigador puede centrarse en (1) lo que algún aspecto de la inteligencia necesita calcular, (2) qué algoritmo emplea, o (3) cómo se implementa ese algoritmo en el hardware. Esta separación de preocupaciones es similar a la distinción entre interfaz e implementación en ingeniería de software y hardware.

Sistemas normalizadoseditar

En sistemas normalizados, la separación de preocupaciones es uno de los cuatro principios rectores. Adherirse a este principio es una de las herramientas que ayuda a reducir los efectos combinatorios que, con el tiempo, se introducen en el software que se mantiene. En los Sistemas normalizados, las herramientas apoyan activamente la separación de preocupaciones.

SoC a través de clases partialeseditar

La separación de preocupaciones se puede implementar y aplicar a través de clases parciales.

SoC a través de clases parciales en RubyEdit

caza de osos.rb

class Bear def hunt forest.select(&:food?) endend

bear_eating.po