Softwarové inženýrství
Softwarový proces
Proces obecně je po částech uspořádaná množina kroků směřujících k dosažení cíle. Je-li cíl vytvoření softwaru pak mluvíme o softwarovém procesu. Disciplína zabývající se problémy softwarového procesu se nazývá softwarové inženýrství.
Struktura překladače
Překladač provádí dvě základní činnosti - analyzuje zdrojový kód a následně jej přeložit do cílového programu. Součástí analýzy je lexikální, syntaktická a strukturální analýza.
Činnost překladače je následující: Zdrojový kód -> pre-procesor -> lexikální analyzátor -> syntaktický analyzátor -> tvorba mezikódu -> optimalizátor -> generování výsledného kód -> optimalizace závislá na zařízení
Specifikace požadavků
Specifikace a analýza požadavků je první fáze vývoje softwaru. Cílem je definovat požadavky na software a popsat jeho funkčnost. Výsledkem této fáze by měly být dokumenty, které se stanou součásti smlouvy mezi zadavatelem a vývojovým týmem.
Návrhové vzory
Návrhové vzory jsou metodiky (šablony) pro řešení různých problému, se kterými vývojář může setkat. Objektově orientované návrhové vzory typicky ukazují vztahy a interakce mezi třídami a objekty, aniž by určovaly implementaci konkrétní třídy.
Návrh implementace
Návrh implementace je druhá fáze vývoje softwaru. Jde o abstrakci zdrojového kódu, která bude sloužit jako hlavní dokument programátorům v další implementační fázi.
Mapování UML diagramů na kód
K mapování UML diagramů na kód dochází v první části implementační fáze vývoje. Jde o automatické vygenerování zdrojového kódu z UML diagramu.
Z diagramu tříd například vygeneruje jednotlivé rozhraní, třídy s proměnnými a prázdnými metodami. Velmi hezký tutoriál o tom jak se mapuje class diagram na kód najdete zde.
Z diagramů komponent pak vyčte a do generovaného kódu přidá požadované komponenty. Komponenta je už existující a vyměnitelná část systému s daným rozhraním skrze které jí systém používá. Jde o komponentu napsanou v zdrojovém kódu, nebo už zkompilovanou komponentu v binárním kódu, či další komponenty reprezentovanými databázovými tabulkami, dokumenty, apod. 
Úkolem samotné implementace je pak dopsat těla metod, jejichž chování může být pospáno v diagramu aktivit.
Deklarativní programování
Deklarativní programování se zabývá tím co se počítá a neřeší jak se to počítá (Např. u logického programování definujeme v kódu výrazy a vztahy a pak se dotazujeme na další klauzule, které z toho vyplývají. Jak probíhá samotné vyhodnocení klauzulí se neřeší.). Program je chápan jako funkce, která na základě vstupů vrátí výstup. Stejná funkce se stejnými argumenty dává u deklarativního prog. vždy stejný výsledek (vyhýbají se používání globálních proměnných).
Opakem tohoto principu je imperativní programování popisující jednotlivé úkony pomocí algoritmů. Zjednodušeně to lze popsat tak, že imperativní programy obsahují algoritmy, kterými se dosáhne chtěný cíl, zatímco deklarativní jazyky specifikují cíl a algoritmizace je ponechána programu (interpretu) daného jazyka.
Abstract factory
Abstract factory neboli továrna je návrhový vzor který řeší univerzálnost kódu. Cílem továrny je odstínit klienta od vytváření konkrétních objektů (to má na starost factory). Klient se nestará o to, které konkrétní objekty vyrábí která konkrétní továrna, protože používá jednotné rozhraní abstraktní továrny. Vzor tudíž odděluje detaily implementace skupiny objektů od jejich obecného používání.

Příklad Abstract factory:
Jde o to, aby například programátor při změně nějakého grafického prvku, nemusel překopávat celý kód který s tímto prvkem pracuje. Chceme-li mít například univerzální GUI jak pro Windows tak pro Linux, ale v programu nechceme rozlišovat zda pracujeme s linuxovským či windovským tlačítkem. Tuhle univerzalitu zajistím tak, že vytvořím univerzální tlačítko UButton (rozhraní, abstraktní třída), které bude mít definované metody pro práci s tlačítkem. V programu tedy budeme pracovat tlačítkem typu UButton a o konkrétní instanci se postará třída Factory (odtud název návrhového vzoru). Factory na základě operačního systému vytvoří instanci konkrétního tlačítka, které je specializované už pro daný operační systém WinButton nebo LinuxButton. Vzhledem k tomu, že obě tyto třídy implementovaly rozhraní UButton
class WinButton implements UButton
class LinuxButton implements UButton
pracuje s nimi hlavní program jako s jedním typem tlačítka UButton a jestli je to vevnitř WinButton nebo LinuxButton ho nezajímá.

Překladač
Překladač je program, který překládá programy z jednoho programovací jazyka do jiného. Překladač tedy přečte zdrojový program napsaný v zdrojovém jazyce přeloží ho do ekvivalentního programu (cílový program), který je však napsaný v jiném (cílovém) jazyce. 
Singleton
Singleton (česky jedináček) je návrhový vzor, který využijeme při řešení problému, kdy je potřeba, aby v celém programu běžela pouze jedna instance třídy. Tento návrhový vzor zabezpečí, že třída bude mít pouze jedinou instanci a poskytne k ní globální přístupový bod. To můžeme potřebovat například pro různé třídy, které něco řídí a vznik více instancí takovýchto Manager tříd by způsoboval chaos (např. třída zajišťující přístup k databázi) nebo například pro různé messengery apod.
Realizace tohoto návrhového vzoru spočívá v implementaci public konstruktoru a metody getInstance(), která zkontroluje zda ještě nebyla instance vytvořena a podle toho vrátí již existující instanci, nebo vytvoří novou.
public class Jedinacek{
private static Jedinacek instance;
//zablokovani konstruktoru:
private Jedinacek(){}
//metoda pro vytvoreni objektu (misto konstruktoru)
public getInstance(){
if (instance == null){
instance = new Jedinacek ();
}
return instance;
}

Další články...
- Kompozit
- Observer
- Objektově orientované paradigma.
- Správa paměti
- Disciplína sběr a analýza požadavků
- Formální metody
- OCL (Object Constraint Language)
- Čtyřvrstvá architektura
- Klasifikace, prioritizace, správa, vysledovatelnost a závislost požadavků.
- Plánování projektu
- Řízení projektu
- Řízení rizik
- Kvalitativní a kvantitativní analýza rizik
- Testovací plán
- Modelovací jazyky byznys procesů – IDEF0, UML, EPC, BPMN
- Struktura OS
- Builder
- Facade
