Articles

Huolien erottaminen

Internet-protokollan pinoaminen

huolien erottaminen on ratkaisevaa Internetin suunnittelun kannalta. Internet Protocol Suite-ohjelmassa on pyritty erottamaan huolet tarkoin määriteltyihin kerroksiin. Näin protokollasuunnittelijat voivat keskittyä yhden kerroksen huolenaiheisiin ja jättää muut kerrokset huomiotta. Sovelluskerroksen protokolla SMTP, esimerkiksi, on huolissaan kaikista yksityiskohdista suorittaa sähköpostisession yli luotettavan kuljetuspalvelun (yleensä TCP), mutta ei vähiten huolissaan siitä, miten kuljetuspalvelu tekee kyseisen palvelun luotettava. Vastaavasti TCP ei ole huolissaan datapakettien reitityksestä, joka hoidetaan Internet-kerroksella.

HTML, CSS, JavaScriptEdit

HyperText Markup Language (HTML), Cascading Style Sheets (CSS) ja JavaScript (JS) ovat toisiaan täydentäviä kieliä, joita käytetään verkkosivujen ja verkkosivujen kehittämisessä. HTML: ää käytetään pääasiassa verkkosivun sisällön järjestämiseen, CSS: ää käytetään sisällön esitystyylin määrittelyyn ja JS määrittelee, miten sisältö vuorovaikuttaa ja käyttäytyy käyttäjän kanssa. Historiallisesti näin ei ollut: ennen CSS: n käyttöönottoa HTML hoiti sekä semantiikan että tyylin määrittelyn tehtäviä.

subjekti-ohjelmointimedit

subjekti-ohjelmointi mahdollistaa erillisten kysymysten käsittelyn erillisinä ohjelmistokonstruktioina, kukin tasavertaisesti muiden kanssa. Jokainen huolenaihe tarjoaa oman luokkarakenteen, johon esineet yhteisiä on järjestetty, ja edistää valtion ja menetelmiä komposiitti tulos, jossa ne leikkaavat toisiaan. Kirjeenvaihtosäännöt kuvaavat, miten eri huolenaiheiden luokat ja menetelmät liittyvät toisiinsa kohdissa, joissa ne vuorovaikuttavat, jolloin yhdistelmäkäyttäytyminen menetelmälle voidaan johtaa useista huolenaiheista. Huolien moniulotteinen erottaminen mahdollistaa huolien analysoinnin ja koostumuksen manipuloinnin moniulotteisena ”matriisina”, jossa jokainen huolenaihe tarjoaa ulottuvuuden, jossa eri valintakohdat luetellaan, ja matriisin solut ovat asianmukaisten ohjelmistoartefaktien käytössä.

Aspect-oriented programmingEdit

Aspect-oriented programming mahdollistaa monialaisten kysymysten käsittelyn ensisijaisina huolenaiheina. Esimerkiksi useimmat ohjelmat vaativat jonkinlaista tietoturvaa ja kirjautumista. Turvallisuus ja puunkorjuu ovat usein toissijaisia huolenaiheita, kun taas ensisijainen huolenaihe on usein liiketoiminnan tavoitteiden saavuttaminen. Ohjelmaa suunniteltaessa sen turvallisuus on kuitenkin rakennettava suunnitteluun alusta alkaen sen sijaan, että sitä käsiteltäisiin toissijaisena huolenaiheena. Tietoturvan soveltaminen jälkikäteen johtaa usein riittämättömään tietoturvamalliin, joka jättää liikaa aukkoja tuleville hyökkäyksille. Tämä voidaan ratkaista aspektia painottavalla ohjelmoinnilla. Esimerkiksi, aspekti voidaan kirjoittaa valvoa, että puhelut tiettyyn API on aina kirjautunut, tai että virheet kirjataan aina, kun poikkeus heitetään, riippumatta siitä, käsitteleekö ohjelman menettelykoodi poikkeuksen tai levittää sitä.

tekoälyn Analyysitasot

kognitiotieteessä ja tekoälyssä on yleistä viitata David Marrin analyysitasoihin. Milloin tahansa tutkija voi keskittyä (1) siihen, mitä jokin älykkyyden osa-alue tarvitsee laskemiseen, (2) Mitä algoritmia se käyttää, tai (3) Miten algoritmi toteutetaan laitteistossa. Tämä huolien erottaminen on samanlainen kuin rajapinta – / toteutusero ohjelmisto-ja laitteistotekniikassa.

Normalized systemsEdit

in normalized systems separation of concerns is one of the four guiding principles. Tämän periaatteen noudattaminen on yksi työkaluista, jotka auttavat vähentämään kombinatorisia vaikutuksia, jotka ajan myötä otetaan käyttöön ylläpidettävissä ohjelmissa. Normalisoiduissa järjestelmissä huolien erottelua tuetaan aktiivisesti työkaluilla.

SoC kautta osittainen classesEdit

ongelmakohdat voidaan toteuttaa ja panna täytäntöön osittaisten luokkien kautta.

SoC via partial classes in RubyEdit

bear_hunting.rb

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

bear_eating.rb