Oddělení zodpovědností (informatika)
From Wikipedia, the free encyclopedia
V programování se proces oddělení zodpovědností (Separation of Concerns - SoC) rozumí rozdělení počítačového programu na různé části tak, aby se z hlediska funkcionality tyto části co možná nejméně překrývaly. To znamená, aby určitou funkcionalitu vykonávala pouze část programu k tomu určená. Další část programu by pak neměla kopírovat v sobě stejnou funkcionalitu.
Zodpovědnost je typicky synonymem pro jakoukoliv funkcionalitu nebo chování programu. Kvalitní dodržení zásady oddělení zodpovědností bývá často dosahováno za pomoci dalších zásad programování, jako je například modularita, zapouzdření a ukrývání implementace. Vícevrstvá architektura je také důsledkem oddělení zodpovědností. Když máme například třívrstvou architekturu, kdy jsou odděleny části, které se starají o práci s daty, samotnou aplikační logiku a zobrazení výsledků zpracování uživateli.
Architektura orientovaná na služby (Service Oriented Architecture – SOA) vychází rovněž z principu oddělení zodpovědností, kdy jednotlivé služby pokrývají řešení určitého problému a poskytují ho za pomocí rozhraní ostatním službám. Každá služba by se měla starat pouze o jí přidělenou funkcionalitu a neměla by překrývat funkcionalitu služby druhé. Druhá služba jí poskytne potřebnou funkcionalitu skrze rozhraní.
Pojem oddělení zodpovědností se může vyskytnout ve více oborech. Může se jednat například o obory, které mají něco společného s architekturou, jako jsou územní plánování nebo architektura samo o sobě. Cílem tohoto přístupu je navrhnout dané systémy, ať už se jedná o dům nebo program, tak, aby se dali co nejjednodušeji spravovat a upravovat za doby jejich využití. Jednotlivé funkce systému je nutné navrhnout tak, aby mohly být průběžně optimalizovány, a aby tato optimalizace nezasáhla další funkce a části systému, jak se většinou stává a potom následuje kaskádové rozšíření problémů po celém systému. Dalším důležitým aspektem oddělení odpovědností je fakt, že složitý systém je potřeba vždy určitým způsobem pochopit. Oddělení odpovědností nás vede k návrhu systému tak, aby byl co nejlépe pochopitelný a upravovatelný, což je dnes jeden z hlavních požadavků na veškeré systémy, jelikož požadavky zákazníků se v dnešní době mění neustále. Běžným příkladem může být vedení elektrického proudu v domě pro jednotlivé pokoje a dnes už i pro jednotlivé spotřebiče zvlášť místo například napojení obývacího pokoje na kuchyň, kde je velké množství spotřebičů. Při závadě nebo vyřazení elektrického proudu v kuchyni dojde k vyřazení i obývacího pokoje. Takto se snaží oddělení odpovědností přistoupit i k návrhu programových systémů.