Professional Documents
Culture Documents
SIX SIGMA
– Poslovna strategija početno razvijena unutar tvrtke Motorola 1986. godine
• Metrika :3.4 DPMO
• Metodologija:DMAIC, DMADV
• Sustav upravljanja
• Cilj:
– Prepoznavanje i uklanjanje pogrešaka u procesu proizvodnje i razvojnom procesu radi postizanja
visoke razine kvalitete ( 99,9997 % )
– U softverskoj industriji primjenjuje se na samom kodu i na operacijama koje taj kod izvodi
• Defective Parts per Million Opportunities
One Sigma = 690000 DPMO = 31% efficiency
Two Sigma = 308000 DPMO = 69.2% efficiency
Three Sigma = 66800 DPMO = 93.32% efficiency
Four Sigma = 6210 DPMO = 99.379% efficiency
Five Sigma = 230 DPMO = 99.977% efficiency
Six Sigma = 3.4 DPMO = 99.9997% efficiency
o Primjena six sigma metode u razvojnom procesu fokusira organizaciju na:
• Razumijevanje i rukovanje zahtijevima korisnika
• Definiranje ključnih procesa za ostvarivanje tih zahtijeva
• Smanjivanje oscilacije u ključnim procesima koristeći strogu analizu podataka
• Brzo i kontinuirano upravljanje poboljšanja razvojnog procesa
o Temelji metodologije predstavljaju dva modela:
1.DMAIC (model za usavršavanje razvojnog procesa)
2.DMADV (model za razvoj novih proizvoda ili procesa)
1.DMAIC model:
• Define opportunity
• Measure performance
• Analyze opportunity
• Improve performance
• Control performance
2.DMADV model Poznat i pod imenom DFSS – (Design For Six Sigma)
• Define design goals
• Measure and identify CTQs
• Analyze to develop and design alternatives
• Design details
• Verify the design
Alati i metode korišteni od strane SIG SIGMA
• 5 Whys
• Analysis of variance
• ANOVA Gauge R&R
• Axiomatic design
• Business Process Mapping
• Catapult exercise on variability
• Cause & effects diagram (also known as fishbone or Ishikawa diagram)
• Chi-square test of independence and fits
• Control chart
• Correlation
• Cost-benefit analysis
• CTQ tree
• Quantitative marketing research through use of Enterprise Feedback Management (EFM) systems
• Design of experiments
• Failure mode and effects analysis (FMEA)
• General linear model Histograms
• Homoscedasticity
• Quality Function Deployment (QFD)
• Pareto chart
• Pick chart
• Process capability
• Regression analysis
• Root cause analysis
• Run charts
• SIPOC analysis (Suppliers, Inputs, Process, Outputs,Customers)
• StratificationQuantitative marketing research through use of Enterprise Feedback Management (EFM)
systems
o Agile metodologije
• 11.-13.02.2001 Snowbird skijalište, planine Wasatch ,američka savezna država Utah
• 17 osoba i područja razvojnih metodologija zajednički raspravljalo kako razvoj softvera učiniti bržim,
lakšim i kvalitetnijim
• Definirali tzv. Agile manifest u kojem opisuju osnovne principe Agile metodologije
Osnovne karakteristike:
• Prilagodljivost zahtjevima korisnika
• Češće isporuke, manje izmjene
– tendencija razbijanja većih projekata na više manjih
• Naglasak na testiranje
• Veća komunikacija izmenu članova tima
Skup razvojnih metoda
• Scrum
• XP – eXtreeme Programming
• DSDM – Dynamic System Development Metology
• FDD – Feature Driven Development
• AUP – Agile Unified Process
• EssUP – Essential Unified Process
• OpenUP – Open Unified Process
• Agile Data Method
• Lean Software Development
Agile tehnike
• TDD – Test Driven Development
• BDD – Behavior Driven Development
• Continuous Integration
• Pair programming
• Planning Poker
• RITE Method
Arhitektura aplikacija
SOA
multi tier
Multi-Tier aplikacije
• 2-tier
– klasična klijent-server arhitektura
– klijent :prezentacijski i aplikacijski sloj
– Server:podatkovni sloj
• 3-tier
– aplikacijska logika smještena na posebni server
• n-tier
– aplikacijska logika distribuirana na više servera
Multi-Tier Arhitektura
– Prezentacija
– Aplikacija
– Podaci
Tehnike i metode dizajna software-a
Poželjne karakteristike softvera
• Pouzdanost (Povratni rezultat programa odgovara početno definiranim zahtjevima uz minimalno
odstupanje)
• Nadogradivost (Mogućnost lake nadogradnje/izmjene softvera)
• Iskoristivost (Mogućnost korištenja pojedinog dijela softvera u druge namjene)
• Robusnost (Stabilnost izvođenja neovisno o nepravilnostima u ulaznim podacima, okruženju)
Dekompozicija
• Top-down
o Sustav se dijeli na više manjih podsustava koji se implementiraju zasebno (analiza)
o Karakteristika razvoja s proceduralnim jezicima
• Bottom-up
o Integracija manjih jednostavnih komponenti u kompleksni sustav (sinteza)
o Prisutan kod razvoja s objektno orijentiranim jezicima
Modularnost
• Kohezija (Mjera za određivanje stupnja povezanosti elemenata unutar istog modula.Bolja kohezija
znači i bolji dizajn)
• Uparenost (Mjera za određivanje stupnja povezanosti)
• Dostatnost (Modul sadrži dovoljno svojstava apstrakcije za suvislo korištenje)
• Potpunost (Modul sadrži sva suvisla svojstva apstrakcije)
• Primitivnost (svojstvo operacije da se može izvršiti samo direktnim pristupom na temeljni prikaz
apstrakcije)
Programske paradigme
• Deklarativno programiranje
• Imperativno programiranje
• Komponentno programiranje
• Meta programiranje
Deklarativno programiranje
• U ovu skupinu spadaju slijedeće paradigme
o Funkcionalno programiranje
o Ciljem navođeno programiranje
Suprotno imperativnom programiranju ne definira slijed naredbi kako riješiti neki problem, već skup pravila kojima se
definira što treba riješiti.Programi se satoje od niza formalnih pravila.
• Funkcionalno programiranje
o Koraci obrade izvršavaju se nalik matematičkim funkcijama
o Izrazi su sastavljeni od funkcija koje uporabljaju osnovne vrijednosti
o Programski jezici: (LISP, Haskell)
Imperativno programiranje
• Nestrukturirano (Iterativno)
• Strukturirano
Proceduralno programiranje
Modularno
Objektno orijentirano programiranje
Aspektno orijentirano programiranje
Naredba=najmanji element i imperativnom programu
Imperativni program=skup naredbi koje mijenjaju njegovo stanje;definiran slijed naredbi koje računalo treba izvršiti
Programski jezici ove skupine=Fortran, Pascal
• Strukturirano programiranje
o Uveo Edsger W. Dijkstra u kasnim 60ima (Razumljiviji kod,Minimiziranje grešaka)
o Niz pravila kako napraviti dobar softver (Izbjegavanje goto i jump naredbi)
o Usko vezano uz proceduralno programiranje
• Proceduralno programiranje
o Vrsta imperativnog programiranja u kojem su naredbe strukturirane unutar procedura
o Dekompozicija programa na dijelove (module - units)
o Svaka dio se sastoji od procedura ili funkcija koje obavljaju jednostavnije zadatke
• Modularno programiranje
o Modul:
Skup rutina koje zajedno obavljaju neku globalnu funkciju
Logički neovisna cjelina
Ima definirano sučelje
Elementi sučelje su globalno vidljivi ostalim modulima
o Ada, Fortran, Pascal, Modula-2, Perl, Python, Ruby
• Objektno orijentirano programiranje
o Program je skup objekata koji međusobno komuniciraju
o Objekt može biti fizički (vidljiv i opipljiv) ili konceptualan (rezultat je procesa apstrakcije).
o Svaki objekt ima definirane operacije i svojstva
o Opis objekta definiran klasama
• Aspektno orijentirano programiranje
o Složene sustave nije lako moguće opisati pomoću jedne paradigme
o Aspekt
predstavlja svojstvo sustava i ne opisuje njegovu funkcionalnost
često se presijeca sa drugim aspektima na raznim mjestima unutar koda
o Pojmovi:
Concern (Svojstva programa)
Core concern (Osnovno svojstvo nekog dijela programa)
Cross-cutting concern (Dodatna svojstva programa raspršena unutar različitih
dijelova programa)
Advice (Postupak definiranja koda koji će se izvršiti na određenoj točki spajanja)
Aspect (Opis svojstva sustava)
Točke spajanja (join points):Mjesto pokretanja advice-a
Pointcut (Postupak definiranja točki spajanja)
Uplitanje (Weaving) :Spajanje aspekata na nivou izvršnog koda
• Komponentno programiranje
o Komponenta
Softverski paket ili modul koji sadrži skup zadanih operacija i podataka
Svi procesi sustava su odjeljeni u zasebne komponente
Svaka komponenta ima definirano sučelje putem koje omogućuje obavljanje
određene funkcionalnosti
Predstavlja baznu platformu za servisno orijentirane sustave.
Koriste se u web servisima i SOA
• komponente se nadgrađuju u servise
• Metaprogramiranje
o Metaprogrami = Programi koji mogu manipulirati kodom drugih programa ili sebe samih
o Metajezik = Jezik kojim je pisan metaprogram
o Refleksivnost = Svojstvo programskog jezika koji je sam svoj metajezik
o Refleksivno programiranje = Svojstvo kojim programa može opažati i mijenjati vlastitu
strukturu i ponašanje
Nasljeđeni sustavi
• Stari sustavi unutar organizacija, koji su važni za normalan rad organizacije
• Osobine
o “mission critical” aplikacije
o Sustav u koji je uložena velika količina sredstava
o Glomazni sustavi raspodjeljeni na više aplikacija
o Sustavi razvijeni prije više desetljeća
o Pisani u jezicima ranih generacija (asm, COBOL
o Slabo dokumentirani
o Najčešći dizajn je “function oriented”
o Koriste IPO logiku (Input - Process – Output)
o Koriste strare sustave za upravljanje bazama podataka, često baziranim na tekstualnim
datotekama
Prikaz podataka u memoriji:
• LittleEndian, BigEndian (Redoslijed znamenki heksadecimalnih brojeva u memoriji)
• Dvojni komplement (Prikaz cijelih brojeva sa predznakom)
• LBC (Lead by Count), TBZ (Tail by Zero) : (Nizovi znakova)
• IEEE 754 (prikaz brojeva sa pokretnim zarezom)
• ASCII, EBCDIC, UNICODE (Kodiranje znakova)
Tipovi podataka
• Brojevi (cijeli, realni, kompleksni, sa ili bez predznaka)
• Adrese (Cijeli brojevi koji se odnose na lokaciju u memoriji računala)
• Znakovi (Kodirani (ASCII, EBCDIC, UNICODE))
• Niz znakova (Može biti zaseban tip ili polje znakova)
Organizacija podataka u programu
- Varijabla:
Simbol koji pohranjuje vrijednost koja se može mijenjati
Pohranjeni podatak određen je svojim tipom
– Struktura :
Skup neovisnih podataka koji zajedno tvore informacijski skup
Mogu se vektorizirati – polje struktura
Implementacija struktura podataka
o Homogena organizacija podataka
• Homogeni prostor memorije podijeljen na dijelove jednakih dimenzija
• U programu pristup elementima vrši se putem indeksa
• Na nižoj razini koriste se pokazivači
o Nehomogena organizacija
• Svaki element strukture može biti u bilo kojem dijelu memorije
• Element strukture sadrži prostor za podatke i pokazivač na idući/iduće element(e) u strukturi
• Pokazivači se koriste na višoj razini (unutar programa)
Strukture podataka:
• Polje
• Lista
• Red
• Stog
• Skup
• Mapa
• Stablo
• Graf
1.Polje (Array)
• zbirka od elemenata jednakog tipa podataka
• sadrži unaprijed definiran broj elemenata
• nije moguće naknadno mijenjati broj elemenata polja
• može biti višedimenzionalno
– 1D vektori, 2D matrice, …
• elementima se pristupa putem indeksa koji definiraju poziciju unutar polja
2.Lista (List)
• Povezana
– koristi pokazivače (adrese) za pristup elementima
• Dinamička
– Koristi organizaciju polja za pohranu/pristup elementima
-broj elemenata u listi ograničen je jedino memorijskim prostorom
-Primjer operacija nad elementima liste : add,get,remove,set,size
• jednostruko povezana lista
• dvostruko povezana lista
• cirkularna lista
3.Red (Queue)
• FIFO (First-In-First-Out) princip pisanja-čitanja
• Odvojen ulaz i izlaz za podatke
• Primjer operacija nad elementima reda :add,peek,poll
4.Stog (Stack)
• LIFO (Last-In-First-Out) princip pisanja-čitanja
• Zajednički ulaz i izlaz podataka
• Primjer operacija nad elementima stoga:push,pop,peek,empty,search
5.Skup (Set)
• Zbirka jedinstvenih podataka – nisu dozvoljeni duplikati
• Može se implementirati koristeći polje, povezane liste, stabla ili hash tablice
• Primjer operacija nad elementima skupa:add,remove,contains, size,clear
6.Mapa (Map)
• Zbirka parova (ključ, podatak)
• Svi ključevi u mapi su jedinstveni (skup ključeva)
• Operacije :put,get,remove,containsKey,containsValue,size,clear
7.Stablo (Tree)
• Vrste
– Binarna stabla, B-stabla, AVL stabla, …
• Karakteristike
– Izrazito brz dohvat podataka
– Koriste se pri indeksiranju baza podataka
» Informix, MySQL - B-stabla
– Koriste ih datotečni sustavi za organizaciju datoteka
» Windows NTFS - B-stabla
» Sun Solaris ZFS - AVL stabla
8.Hash tablice
• Svaki podatak treba imati definirani ključ (npr. Ime, Adresa, JMBG ... )
• Hash funkcija kao argument uzima ključ podatka te generira vrijednost (hash) koja označava poziciju
elementa u tablici (polju).
• Kolizija = – generirani hash već postoji, tada se elementi pohranjuju u listu
• Vrijeme dohvata jednako vremenu izračunavanja hash koda za pojedini ključ
• Pogodne za u aplikacijama gdje se traži brza dostupnost podataka
• Koriste ih programi prevoditelji (compilers)
9.Grafovi
• Graf G sastoji se od dva skupa
– G = (V,E), – V – skup čvorova, – E – skup grana – par elemenata iz V;» E = ( vx, vy )
• Usmjereni i neusmjereni grafovi
• Incidencija
• Susjedni čvorovi :Čvorovi povezani jednom granom
• Put (B):Skup čvorova i grana izmeñu polaznog i završnog čvora
• Ciklus (C):Zatvoreni put – put kod kojeg su početni i završni čvor jednaki
• Povezani graf (A, B, C):Za svaka dva čvora postoji put s početkom u jednom čvoru i krajem u drugom
čvoru.
• Slobodno stablo (E)
– Graf bez ciklusa
10.Algoritmi
– Big O notacija
• Koristi se kod definicije se složenost algoritama:
• O(k) – konstantna složenost
– push, pop kod stoga
• O(n) – linearna složenost
– linearno pretraživanje liste
• O(nk) – polinomijalna složenost
– Bubble sort algoritam
• O(log n) – logaritamska složenost
– Binarno pretraživanje sortirane liste
• O(n*log n) – “n log n” složenost
– QuickSort, MergeSort algoritmi sortiranja
• O(an), (a>1) – eksponencijalna složenost
– Rekurzivni Fibonacci, mostovi Hanoja
O(k) < O( log n ) < O (n log n) < O (nk) < O (an)
– Sortiranje
• Quick sort
• Heap sort
• Merge sort
• Shell sort
• Bubble sort
-Algoritmi za pretraživanje podataka
• Linearno pretraživanje
o Uspoređuju se sve vrijednosti u polju/listi
o Potrebno je prosječno N/2 usporedbi za pronalaženje podataka
o Radi na sortiranim i nesortiranim podacima
o Složenost algoritma je O(N)
• Binarno pretraživanje
o Radi isključivo na sortiranim podacima
o Prosječan broj usporedbi je: log2(N)- 1
o Složenost algoritma je O(log N)
Programski jezici
• Podjela na generacije: 1GL, 2GL, 3GL, 4GL, 5GL
• Podjela s obzirom na proces prevođenja i izvođenja
o „kompajlerski jezici”
o skriptni (interpreterski) jezici
• Strojni jezici (1GL)
o Naredbe predstavljaju skup binarnih ili heksadecimalnih brojeva
o Naredbe su usko vezane uz računala na kojima se izvode
• Mnemonici – assemblers (2GL)
o Strojne naredbe su predstavljene u simboličkom obliku
o Jedna simbolička naredbe predstavlja ekvivalent jednoj strojnoj naredbi
o Naredbe su i dalje usko vezane uz arhitekturu procesora na kojoj se izvode
• Viši programski jezici – (3GL) Cobol,Basic, C,C++,Fortran,Java,Pascal
o Jedna naredba višeg programskog jezika se prevodi u više strojnih naredbi
o Programi nisu usko vezani uz arhitekturu procesora
• Jezici četvrte generacije (4GL) SQL, RPG IBM
o Neproceduralni jezici
o Smanjuju složenost, vrijeme i troškove razvoja
o Zbog specifične namjene često se uspoređuju sa tzv. Domain specific programming
lanugages
o Rijetko se prevode u mašinski kod, češće se interpretiraju prilikom izvođenja
• Jezici pete generacije (5GL) Prolog,Mercury,OPS5
o Programski jezici orijentirani na rješavanje problema
problemi umjetne inteligencije
o Ne izvršavaju algoritme
o Koriste predikatnu logiku
Faze prevođenja programa
• Preprocesiranje
o Prevodi direktive koda ( # )
o Prevodi makro naredbe
• Prevođenje
o Provjerava ispravnost koda
Leksička analiza
Sintaksna analiza
o Generiranje međukoda
• Optimiranje (opcionalno)
o Po potrebi optimira korištenje memorije ili pokušava generirati brži kod
Optimira korištenje registara
• Generiranje strojnog koda
o Pretvorba assemblerskog koda ili međukoda u strojni jezik
o Stvara se tzv. objektni kod
o Adrese globalnih podataka i funkcija su relativne
• Povezivanje
o Povezuje objektni kod sa standardnim bibliotekama
o Definira apsolutne adrese za globalne podatke i funkcije
o Generira izvršnu datoteku
Objektno orijentirano programiranje
• Objekt
o Stanje
Ugrađena svojstva objekta i trenutne vrijednosti tih svojstava.
Mijenja se kao posljedica ponašanja objekta
o Ponašanje
Reakcija objekta na promjene stanja i primanje poruka.
o Identitet
Svojstvo po kojem se neki objekt jednoznačno razlikuje od ostalih.
Nije određeno samo njegovim stanjem ili samo načinom pristupa.
• Klasa
o Definira svojstva i operacije objekta
o Predstavlja nacrt/predložak koji opisuje svojstva i ponašanja objekta
o Svojstva (varijable/atributi)
o Ponašanje (operacije/metode)
• Operacija nad objektima
o Konstruktor (inicijalizacija objekta)
o Destruktor (oslobađanje stanja objekta)
o Modifikator (mijenjanje stanja objekta)
o Selektor (dohvaćanje stanja objekta bez izmjene istog)
o Iterator (dohvat svih dijelova objekta po unaprijed određenom redoslijedu)