Separação de preocupações
protocolo Internet stackEdit
separação de preocupações é crucial para a concepção da Internet. Na suíte de Protocolo da Internet, grandes esforços foram feitos para separar as preocupações em camadas bem definidas. Isso permite que os designers de Protocolo se concentrem nas preocupações em uma camada, e ignorem as outras camadas. O protocolo de camada de Aplicação SMTP, por exemplo, está preocupado com todos os detalhes de realizar uma sessão de E-mail sobre um serviço de transporte confiável (geralmente TCP), mas não no mínimo preocupado sobre como o serviço de transporte torna esse serviço confiável. Da mesma forma, o TCP não está preocupado com o roteamento de pacotes de dados, que é tratado na camada de Internet.
HTML, CSS, JavaScriptEdit
HyperText Markup Language (HTML), Cascading Style Sheets (CSS), e JavaScript (JS) são linguagens complementares utilizadas no desenvolvimento de páginas web e websites. HTML é usado principalmente para a organização do conteúdo da webpage, CSS é usado para a definição do estilo de apresentação do conteúdo, e JS define como o conteúdo interage e se comporta com o usuário. Historicamente, este não era o caso: antes da introdução do CSS, o HTML desempenhava ambas as funções de definir semântica e estilo.
Subject-oriented programmingEdit
Subject-oriented programming allows separate concerns to be addressed as separate software constructs, each on an equal patching with the others. Cada preocupação fornece sua própria estrutura de classe em que os objetos em comum são organizados, e contribui estado e métodos para o resultado composto, onde eles cortam entre si. As regras de correspondência descrevem como as classes e métodos nas várias preocupações estão relacionados uns com os outros em pontos onde interagem, permitindo um comportamento composto para um método a ser derivado de várias preocupações. A separação multidimensional de preocupações permite que a análise e composição de preocupações sejam manipuladas como uma “matriz” multidimensional na qual cada preocupação fornece uma dimensão na qual diferentes pontos de escolha são enumerados, com as células da matriz ocupada pelos artefatos de software apropriados.
Programmingedit
Programação Orientada a aspectos permite que preocupações transversais sejam abordadas como preocupações primárias. Por exemplo, a maioria dos programas requerem alguma forma de segurança e registro. A segurança e a exploração madeireira são muitas vezes preocupações secundárias, ao passo que a principal preocupação é frequentemente a realização de objectivos empresariais. No entanto, ao projetar um programa, sua segurança deve ser construída no projeto desde o início, em vez de ser tratada como uma preocupação secundária. A aplicação da segurança depois, muitas vezes resulta em um modelo de segurança insuficiente que deixa muitas lacunas para futuros ataques. Isto pode ser resolvido com programação orientada a aspectos. Por exemplo, um aspecto pode ser escrito para impor que as chamadas para uma determinada API são sempre registradas, ou que os erros são sempre registrados quando uma exceção é lançada, independentemente de o código processual do programa lidar com a exceção ou propagá-la.
níveis de análise em inteligência artificial
Em Ciência Cognitiva e inteligência artificial, é comum referir-se aos níveis de análise de David Marr. A qualquer momento, um pesquisador pode estar focando em (1) o que algum aspecto da inteligência precisa para computar, (2) que algoritmo emprega, ou (3) como esse algoritmo é implementado em hardware. Esta separação de preocupações é semelhante à distinção interface/implementação em Engenharia de software e hardware.
sistema normalizado edit
em sistemas normalizados, a separação de preocupações é um dos quatro princípios orientadores. Aderir a este princípio é uma das ferramentas que ajuda a reduzir os efeitos combinatórios que, ao longo do tempo, são introduzidos em software que está sendo mantido. Em sistemas normalizados, a separação de preocupações é ativamente apoiada pelas ferramentas.
SoC via partial classesEdit
separação de preocupações pode ser implementada e executada através de classes parciais.
SoC via partial classes in RubyEdit
bear_hunting.rb
class Bear def hunt forest.select(&:food?) endend
bear_eating.rb