Teorijas tēmu rādītājs

Šajā dokumentā minēti kursā aplūkotās teorētiskās koncepcijas, matemātiskie modeļi, u.c. lietas, kas nav viennozīmīgi saistāmas ar tādu vai citu rīka izvēli vai programmatūras rakstības veidu, bet kam ir vispārīgs raksturs. Ar laiku šo var izveidot par īstu rādītāju (indeksu, kur uzklikšķinot uz linkiem, var pāriet uz atbilstošo vietu lekcijās).

Kursā pagaidām nav paredzētas teorijas "biļešu jautājumi". Bet ja tādi būtu, tad tēmas teorijas biļetēm varētu atrast šeit.

Objektorientācija

  1. Klašu dzīvescikla un metožu kontrakti - klases sniegtās uzvedības garantijas, ja arī klients uzvedas saskaņā ar kontraktu. Komponentu testi, kas veidoti atbilstoši kontraktiem.
  2. Objektorientētas programmēšanas principi - Liskovas princips, Atvērts-Slēgts princips, reprezentācijas invarianta princips, modularitātes princips (katrai klasei ir tikai vienas rūpes).
  3. Izstrādes šabloni/paraugi. Singleton, Composite, Factory, AbstractFactory, utt. Lietojamības paraugi.

Sintaktiskā analīze

  1. Literāļi, escape-simboli un place-holder mainīgie izteiksmēs. SQL un SPARQL pieprasījumu piemēri ar place-holder'iem.
  2. Veidi kā definēt XML gramatiku (DTD, XML Schema)
  3. Veidi kā parsēt XML - SAX notikumi, DOM koks, attēlošana uz objektiem.
  4. Stringu ielasīšana dažādos objektos, PropertyEditor konfigurēšana. Datumu, skaitļu, u.c. formāti.
  5. Parsētāja izveidošana, aprakstot bezkonteksta gramatiku.

Kodēšanas principi un idiomas/šabloni/paraugi

  1. Masīva apstaigāšanas idioma ar for ciklu
  2. Iteratora apstaigāšanas idioma kolekcijai
  3. Zarošanās idioma zem "else" (nevis zem "if"). "Dangling else" divdomība; atšķirība no "switch".
  4. "short-circuit-evaluation" idioma. Pārbaude uz "null" pirms references izmantošanas.
  5. Mimālu redzamības apgabalu princips; mainīgo deklarēšana piemērotākajā apgabalā.
  6. Deklarējami un nedeklarējami izņēmumi; izņēmumu iepakošana; izņēmumu antipaterni.
  7. Objektu identitāte un semantiskā vienādība; metožu equals() un hashCode() kontrakti.
  8. Serializējami un neserializējami objekti. Serializācija par baitiem; objektu maršalēšana/atmaršalēšana par XML, JSON.
  9. Rekursija kā cikla ekvivalents funkcionālām programmēšanas valodām (tur, kur nav piešķiršanas un blakusefektu). XSLT transformāciju piemēri, kur nepieciešama rekursija.

Arhitektūras šabloni/paraugi

  1. Komponentu un konteineru sadarbības arhitektūra. Servisu kopuma piegādāšana komponentiem. Piemēri - Javas Web konteiners, Spring konteiners, Web Servisu konteiners, EJB konteiners.
  2. MVC (Modelis-Skats-Kontrolieris) arhitektūras paraugs
  3. Aspektorientācija - "horizontālo" rūpju konfigurēšana dažādiem notikumiem, lai izvairītos no tipveida koda atkārtošanās.
  4. Redzamības apgabalu kaskādes - īpašību piešķiršana atkarībā no aplikācijas, lietotāja lomas, lietotāja, sesijas, Weblapu plūsmas, HTTP pieprasījuma, lapas/šablona iestatījumiem.
  5. Dažādi klienta-servera arhitektūras piemēri.
  6. Kešošanas arhitektūra.
  7. Resursu dīķu izmantošana.

Tīklošanās un protokoli

  1. TCP protokola darbības principi. Soketu tipi, numuri, klientu un serveru soketi.
  2. HTTP protokola darbības principi. Būtiskākie hederi, MIME tipi, cepumi, "Keep-alive", rezultātu kešošana.
  3. Kodu tabulas (funkcijas starp baitu virknītēm un Unikoda tabulas segmentiem). HTTP saziņas kodējumu problēmas.

Java-Web aplikāciju principi

  1. Klienta sesijas jēdziens; savienojumu protokola simulēšana ar bezsavienojuma protokolu. Dažādās tehniskās iespējas, kā HTML/HTTP var nodrošināt klienta sesijas (sesijas cepums, slēptie formu lauki, URLu pārrakstīšana).
  2. web.xml deskriptora struktūra; servleti, filtri un notikumu klausītāji.
  3. Stāvokļu automātu teorija un tās lietojums Spring Web Flow.
  4. Klienta aplikācijas spēja sekot stāvokļu pārejām; "Back" un "Refresh" problēma.
  5. Web anti-paterni. Saplūdušie slāņi, datu piekļuves neizolētība.
  6. HTTP pieprasījuma dzīvescikls MVC kontrolierī - .NET un JSF piemēri. Dzīvescikla pielāgošana dažādiem gadījumiem - statiskas komponentes, dinamiskas komponentes, inicializācijas un attēlošanas sagatavošanas fāzes.

Web lietojamības principi

  1. Graceful degradation princips.
  2. AJAX principi; asinhronie HTTP pieprasījumi; minimālistisks HTML;
  3. Formu validācija - deklaratīva un programmējama validācija. Regulāru izteiksmju lietošana validācijā.
  4. Šablonu valodu (Velocity, Freemarker, XSLT, JSP, Facelets, IKAT/RSF) salīdzinājums. Konfliktējošie skatu izveidošanas principi - skaļās kļūdas vs. klusās kļūdas (t.i. vai lapa izdod kļūdu, nesmuku paziņojumu vai neko gadījumos, kad trūkst šablonam vajadzīgo datu).
  5. Grāmatzīmjojamība; URLu izveides principi, lai tie tiktu indeksēti, būtu īsi, atkalizmantojami un atgrieztos vajadzīgajos skatos. Grāmatzīmju ieviešana AJAX aplikācijās.

Datubāzu projektēšana un lietošana

  1. Datubāzes normalizācijas līmeņi
  2. Id gjenerēšanas uzdevums un realizācija dažādās datubāzēs
  3. Datu ierobežojumi (constraints); primārās un ārējās atslēgas
  4. Dažādi join-u tipi un to salīdzinošais atmiņas patēriņš
  5. Objektu kolekciju attēlojums relāciju datubāzēs
  6. Objektu asociāciju attēlojums relāciju datubāzēs
  7. Mantošanas attiecību attēlojums relāciju datubāzēs
  8. Transakciju izolētības līmeņi

Web servisu un SOA principi

  1. Vispārīgais RPC implementācijas modelis - klients, klienta stubs, servera stubs un servera puses implementācija. Kopīgs interfeiss klienta stubam un implementācijai; interfeisa aprakstīšana ar WSDL.
  2. Regjistri un repozitoriji; servisu metainformācija. UDDI kā servisu regjistrs.
  3. Point-to-point integrāciju aizvietošana ar ESB un adapteriem.
  4. UML Workflow diagrammu principi; BPEL kā diagrammu implementācijas valoda.

Drošības paterni/šabloni/paraugi

  1. Apgabali, autentifikācija, drošības politikas.
  2. Simetriskā un asimetriskā šifrēšana
  3. Daidžestu veidošana un izmantošana elektroniskiem parakstiem, utml.
  4. CHAP protokols; paroļu droša pārraidīšana nedrošā tīklā.
  5. SSL protokols; rokasspiedieni.

Progamminženierija

  1. Koda caurskatīšana.
  2. DRY (Don't Repeat Yourself) princips
  3. Koda refaktorizācija. Klašu un metožu pārsaukšana, kopīgā koda iznešana augstākā abstrakcijas līmenī.
  4. Testējamība. 10-minūšu testējamības kritērijs labam dizainam
  5. Testu virzīta izstrāde.
  6. Programmatūras modeļi. Klašu diagrammas, koda iegūšana no diagrammām un diagrammu iegūšana no koda.
  7. Konfigurāciju pārvaldība. Izstrādes un ražošanas vide. Aplikācijas konteksti Spring karkasā.
  8. Maven2 un projekta dzīvescikls. Dzīvescikla fāžu pielāgošana.
  9. Maven2 un artifaktu atkarību deklarēšanas mehānisms. Transitīvās atkarības.