Separazione delle preoccupazioni
Protocollo Internet stackEdit
La separazione delle preoccupazioni è fondamentale per la progettazione di Internet. Nella suite di protocolli Internet, sono stati fatti grandi sforzi per separare le preoccupazioni in livelli ben definiti. Ciò consente ai progettisti di protocolli di concentrarsi sulle preoccupazioni in un livello e ignorare gli altri livelli. Il protocollo SMTP a livello di applicazione, ad esempio, è preoccupato per tutti i dettagli di condurre una sessione di posta elettronica su un servizio di trasporto affidabile (di solito TCP), ma non è minimamente preoccupato per il modo in cui il servizio di trasporto rende tale servizio affidabile. Allo stesso modo, TCP non si preoccupa del routing dei pacchetti di dati, che viene gestito a livello Internet.
HTML, CSS, JavaScriptEdit
HyperText Markup Language (HTML), Cascading Style Sheets (CSS) e JavaScript (JS) sono linguaggi complementari utilizzati nello sviluppo di pagine web e siti web. HTML viene utilizzato principalmente per l’organizzazione del contenuto della pagina web, CSS viene utilizzato per la definizione di stile di presentazione del contenuto, e JS definisce come il contenuto interagisce e si comporta con l’utente. Storicamente, questo non era il caso: prima dell’introduzione del CSS, l’HTML svolgeva entrambi i compiti di definizione della semantica e dello stile.
Programmazione orientata al soggettomodifica
La programmazione orientata al soggetto consente di affrontare problemi separati come costrutti software separati, ciascuno su un piano di parità con gli altri. Ogni preoccupazione fornisce la propria struttura di classe in cui sono organizzati gli oggetti in comune e contribuisce allo stato e ai metodi al risultato composito in cui si tagliano l’uno sull’altro. Le regole di corrispondenza descrivono come le classi e i metodi nelle varie preoccupazioni sono correlati tra loro nei punti in cui interagiscono, consentendo al comportamento composito di un metodo di derivare da diverse preoccupazioni. La separazione multidimensionale delle preoccupazioni consente di manipolare l’analisi e la composizione delle preoccupazioni come una “matrice” multidimensionale in cui ogni preoccupazione fornisce una dimensione in cui vengono enumerati diversi punti di scelta, con le celle della matrice occupate dagli artefatti software appropriati.
Programmazione orientata agli aspetti
La programmazione orientata agli aspetti consente di affrontare le preoccupazioni trasversali come preoccupazioni primarie. Ad esempio, la maggior parte dei programmi richiede una qualche forma di sicurezza e registrazione. La sicurezza e la registrazione sono spesso preoccupazioni secondarie, mentre la preoccupazione principale è spesso sulla realizzazione di obiettivi di business. Tuttavia, quando si progetta un programma, la sua sicurezza deve essere integrata nella progettazione fin dall’inizio invece di essere trattata come una preoccupazione secondaria. L’applicazione della sicurezza in seguito spesso si traduce in un modello di sicurezza insufficiente che lascia troppe lacune per gli attacchi futuri. Questo può essere risolto con la programmazione orientata agli aspetti. Ad esempio, un aspetto può essere scritto per imporre che le chiamate a una determinata API siano sempre registrate o che gli errori vengano sempre registrati quando viene generata un’eccezione, indipendentemente dal fatto che il codice procedurale del programma gestisca l’eccezione o la propaghi.
Livelli di analisi nell’intelligenza artificialemodifica
Nelle scienze cognitive e nell’intelligenza artificiale, è comune riferirsi ai livelli di analisi di David Marr. In un dato momento, un ricercatore può concentrarsi su (1) quale aspetto dell’intelligenza deve calcolare, (2) quale algoritmo impiega o (3) come tale algoritmo è implementato nell’hardware. Questa separazione delle preoccupazioni è simile alla distinzione di interfaccia / implementazione nell’ingegneria del software e dell’hardware.
Sistemi normalizzatimodifica
Nei sistemi normalizzati la separazione delle preoccupazioni è uno dei quattro principi guida. Aderire a questo principio è uno degli strumenti che aiuta a ridurre gli effetti combinatori che, nel tempo, vengono introdotti nel software che viene mantenuto. Nei sistemi normalizzati la separazione delle preoccupazioni è attivamente supportata dagli strumenti.
SoC tramite classi partialEdit
La separazione delle preoccupazioni può essere implementata e applicata tramite classi parziali.
SoC tramite classi parziali in RubyEdit
bear_hunting.rb
class Bear def hunt forest.select(&:food?) endend
bear_eating.rb