2008-09-19 39 views
92

¿Qué es la separación de preocupaciones?
¿Qué es una preocupación?
¿Cómo se puede dividir una aplicación en "preocupaciones diferentes"?¿Qué es la separación de preocupaciones?

+0

Lea las preguntas frecuentes sobre la formación adecuada de preguntas. – FlySwat

+0

Este artículo es increíble: https://www.viget.com/articles/client-side-separation-of-concerns-are-we-doing-it-wrong y cubre la separación de las preocupaciones de una manera realmente agradable. – Costa

Respuesta

88

Las preocupaciones son los diferentes aspectos de la funcionalidad del software. Por ejemplo, la "lógica comercial" del software es una preocupación, y la interfaz a través de la cual una persona usa esta lógica es otra.

La separación de las preocupaciones es mantener el código para cada una de estas preocupaciones por separado. Cambiar la interfaz no debería requerir cambiar el código de lógica de negocios, y viceversa.

El patrón de diseño Modelo-Vista-Controlador (MVC) es un excelente ejemplo de separación de estas preocupaciones para una mejor capacidad de mantenimiento del software.

Para más información:

+0

Esta respuesta necesita actualizarse esos días. En mi opinión, se trata de la encapsulación o la abstracción de un problema. Algunos pueden pensar en CSS, JS como una sección, siempre y cuando encapsule un problema específico. Esto es aceptable esos días. Leonardo C – Leonardo

+1

En realidad, MVC es un buen ejemplo de "falla" de separación de preocupaciones, ya que el controlador debe saber bastante bien todo sobre el modelo y la vista. –

4

Wikipedia:

En informática, la separación de las preocupaciones (SoC) es el proceso de descomposición de un programa de ordenador en características distintas que se solapan en la funcionalidad lo menos posible. Una preocupación es cualquier interés o enfoque en un programa. Por lo general, las preocupaciones son sinónimos de características o comportamientos. El progreso hacia SoC se logra tradicionalmente a través de la modularidad y la encapsulación, con la ayuda del ocultamiento de la información.

Publico esto no para ganar reputación, sino para preguntarme por qué harías una pregunta que pueda ser respondida tan fácilmente.

12

http://en.wikipedia.org/wiki/Separation_of_concerns

En informática, la separación de las preocupaciones (SoC) es el proceso de descomposición de un programa de ordenador en características distintas que se solapan en la funcionalidad lo menos posible. Una preocupación es cualquier interés o enfoque en un programa. Por lo general, las preocupaciones son sinónimos de características o comportamientos. El progreso hacia SoC se logra tradicionalmente a través de la modularidad y la encapsulación, con la ayuda del ocultamiento de la información.

1

Este principio establece que un problema determinado implica diferentes tipos de preocupaciones, que deben identificarse y separarse para hacer frente a la complejidad y para lograr los factores de calidad de ingeniería requeridos tales como robustez, adaptabilidad, facilidad de mantenimiento y reutilización. Link

2
No

realmente una respuesta a su pregunta, pero si usted está interesado en esto, hay un patrón de diseño relacionado llamado Dependencia Inversión.

Digamos que tiene una clase con un método que necesita ser influenciado desde fuera de la clase, o necesita múltiples implementaciones de la misma, o el hecho de que es un método de esa clase dificulta las pruebas unitarias. Puede poner ese método en una clase completamente separada y pasar la instancia de la primera clase como un parámetro.

Esto es especialmente útil cuando se utilizan simula interfaces. Puede probar el método pasando los simulacros para la otra clase con valores codificados y resultados esperados.

+0

Creo que se refería a la inyección de dependencia. –

+0

Con respecto a esos términos, ver Wikipedia: [Dependency Injection] (https://en.wikipedia.org/wiki/Dependency_injection) | [Inversión de control] (https://en.wikipedia.org/wiki/Inversion_of_control) | [Inversión de dependencia] (https://en.wikipedia.org/wiki/Dependency_inversion_principle). –

41

¿Conoce HTML y CSS? Esa es la separación de las preocupaciones allí mismo.

El archivo HTML (posiblemente XML) define la estructura del documento. El archivo CSS define cómo se presenta el documento en su pantalla.

+4

¡Buen ejemplo! Se puede adaptar fácilmente a diferentes programas, separando la lógica del controlador de la capa de presentación (vale, un ejemplo trivial). –

6

se describe en la wikipedia: http://en.wikipedia.org/wiki/Separation_of_concerns

Es el valor que se indica en el Principio de Responsabilidad individual, de que un/clase/método de función deben hacer sólo una cosa. Que debería hacerlo todo, hacerlo bien y hacerlo solo.

Básicamente, significa que no debe juntar sus ideas juntas en una pasta grumosa, pero debe separar sus ideas limpiamente en el código. Si no lo hace, es difícil cambiar, probar o depurar el código. Si los separas, entonces tienes un poco de libertad para cambiar. Por ejemplo, si envía su generador de html a su consulta, le resultará difícil cambiar el formato y le resultará difícil cambiar a una consulta diferente. Si los separa, entonces ambas cosas se vuelven fáciles. O más fácil, al menos.

0

Los datos se pueden representar de muchas maneras diferentes y si podemos traducir entre las representaciones, no importará qué representación elegimos usar porque deberíamos poder acceder y manipular esos datos. Si tuviéramos un traductor de idiomas universal, no importaría que alguien nos dijera la hora en francés, alemán o árabe; nuestra capacidad de traducir aseguraría que sabríamos la hora. En términos de datos, hay tres representaciones clave que son importantes:  la representación física de dónde y cómo se almacenan los datos;  la representación lógica de qué datos se pueden almacenar, su semántica y las relaciones con otros datos;  y la representación externa, que es cómo aparece a los usuarios. Asumir que es posible traducir entre las diferentes representaciones permite a las personas comprender y usar los datos de la manera que prefieran. Por lo tanto, a nivel físico, un técnico de bases de datos podría optimizar el almacenamiento físico de los datos independientemente de la descripción lógica o la descripción externa siempre que ajusten la descripción almacenada y la traducción entre las representaciones. Al separar estas preocupaciones, es posible crear colecciones de datos de propósito general que pueden ser utilizadas por diferentes usuarios con diferentes requisitos y que utilizan representaciones diferentes, sin la necesidad de duplicar los datos. Revisaremos estas características a lo largo de este curso

Cuestiones relacionadas