HomePočetnaAboutO namaServicesUslugeISO 42001ISO 42001TeamTimIndustriesIndustrijeProjectsProjektiBlogBlogGet in TouchKontakt

Structured Decision-Making - From Gut Feel to Defensible Choices with AHPStrukturirano donošenje odluka - od osjećaja do utemeljenih izbora sa AHP-om

Every design choice is a trade-off. You choose constantly: framework, database, cloud provider, build vs. buy, which integration path to take.

The usual process is a hallway chat, the loudest voice, or a gut call - rarely written down. That works until someone asks why six months later, or until two stakeholders remember the decision differently.

Structured multi-criteria decision-making turns that implicit reasoning into an explicit, comparable, repeatable pipeline - from screening a long list to a weighted ranking you can hand to leadership.


The setup: options × criteria

Options are the candidate solutions - the things you pick between.

Criteria are the yardsticks you judge them by.

The whole problem is a grid. To fill it you need the right criteria, their weights, and a score per cell.

Option Scalability Security Ease of use Cost
Option A ··· ··· ··· ···
Option B ··· ··· ··· ···
Option C ··· ··· ··· ···

Where criteria come from

  • Functional requirements - what the thing must do. Usually pass/fail filters: anything that cannot do the job is dropped. They rarely separate the survivors from each other.
  • Non-functional requirements + context - how well it performs and under what constraints. These are the trade-off dimensions where survivors actually differ: scalability, security, ease of use, cost, time-to-market, team familiarity, vendor lock-in, maintainability, ecosystem support.

The criteria in a decision matrix are almost always non-functional requirements plus context.

Generating honest options

Choosing criteria and finding options are different jobs. Criteria come from requirements; options come from the solution space:

  1. Prior art - what peers and the ecosystem already run
  2. Build / buy / partner - the three fundamentally different shapes
  3. Vendor and market scan - who sells a fit; shortlist the credible ones
  4. Compose - assemble sub-components into a solution

Keep it honest: 3–6 serious options. Too few creates a false choice you have already made. Too many leads to analysis paralysis. Filter with functional must-haves first.


Method 1: the Pugh matrix (screening)

The Pugh matrix is a fast relative screen:

  1. Pick a baseline - the datum (often the incumbent).
  2. For each criterion, mark every option better (+), same (0), or worse (−) than the datum.
  3. Sum the marks per option. Fast, relative, great for narrowing a long list.
CriterionDatum (A)Option BOption C
Scalability0++
Security00
Ease of use0
Cost0++
Net vs datum00+1

Option C screens ahead of the incumbent; B is a wash. Enough to shorten the list - not for the final call.

The limitation: equal weights

The basic Pugh matrix weights every criterion the same. A "+" on Security counts exactly as much as a "+" on Ease of use.

In reality Security might matter several times more - equal weights hide the trade-off that actually decides the call. You need weights, and a principled way to get them.


Method 2: Analytic Hierarchy Process (AHP)

AHP (Thomas Saaty, 1970s) breaks one hard call into many easy pairwise comparisons, then derives weights and checks your own consistency.

Step 1: compare two at a time

Humans are poor at absolute weights but good at pairwise calls: "Is security more important than cost - and by how much?"

Answer on the Saaty 1–9 intensity scale:

Intensity Meaning
1 Equal importance
3 Moderately more important
5 Strongly more important
7 Very strongly more important
9 Extremely more important
2, 4, 6, 8 Intermediate values
1/3 … 1/9 Reciprocal (the reverse comparison)

With n criteria you need n(n−1)/2 comparisons - one per edge in a fully connected graph. Four criteria → six judgments. The count grows like n²/2, so keep the set small (≈7 or fewer). Beyond that, group criteria into a hierarchy - the "H" in AHP.

Step 2: the reciprocal matrix and weights

Fill a reciprocal matrix A:

  • Diagonal is 1 - every criterion equals itself.
  • aᵢⱼ = how many times more important i is than j.
  • aⱼᵢ = 1 / aᵢⱼ - the mirror is forced automatically.

You only elicit the upper triangle. Read it: Security vs. Ease of use = 4 → Ease of use vs. Security = 1/4.

Weights are the principal eigenvector of A - the one weighting consistent with all pairwise ratios at once. Example output for a four-criterion matrix:

Criterion Weight
Security 47%
Scalability 26%
Cost 16%
Ease of use 11%

That is the payoff of splitting into pairs: linear algebra recombines many small, defensible judgments into a single ranking.

Step 3: consistency ratio (CR)

People contradict themselves. Inconsistency is intransitivity - A beats B beats C, yet C beats A.

A perfectly consistent matrix has λ_max = n; the excess measures the contradiction:

  • CI (Consistency Index) = (λ_max − n) / (n − 1)
  • CR (Consistency Ratio) = CI / RI, where RI is the Random Index baseline for a matrix of random judgments
n 3 4 5 6 7 8 9 10
RI .58 .90 1.12 1.24 1.32 1.41 1.45 1.49

Rule of thumb: CR < 0.10 → trust the weights. Otherwise go back and revise the worst judgments.

Example for n = 4: λ_max = 4.045, CI = 0.015, RI = 0.90, CR = 0.017 ✓

Computing it in code

Power iteration finds the principal eigenvector (matvec and norm are ordinary linear-algebra helpers). CR is two numbers and one verdict:

def ahp_weights(A):
    # A: n x n reciprocal matrix
    n = len(A)
    w = [1 / n] * n          # start from a uniform guess
    while True:
        v = matvec(A, w)     # matrix-vector product
        v = [x / sum(v) for x in v]
        if norm(v, w) < 1e-9:
            break
        w = v
    Aw = matvec(A, w)
    lambda_max = sum(Aw[i] / w[i] for i in range(n)) / n
    return w, lambda_max

RI = {1: 0.00, 2: 0.00, 3: 0.58, 4: 0.90, 5: 1.12,
      6: 1.24, 7: 1.32, 8: 1.41, 9: 1.45, 10: 1.49}

def consistency_ratio(lambda_max, n):
    CI = (lambda_max - n) / (n - 1)
    return CI / RI[n]       # CR < 0.10 -> accept

Putting it together: score, weight, sum

Once weights exist, score each option on each criterion (0–1, or another AHP round per criterion), multiply by the weight, and add up:

score(option) = Σ wᵢ · sᵢ

Weighted totals Score
A · Managed 0.732
B · Cloud-native 0.711
C · Self-hosted 0.595

On raw specs, B looked best (0.76 average). Weighting by what you actually care about - Security at 47% - puts A on top. The matrix is the paper trail behind the decision.

Every step is explicit and recorded. The same pipeline evaluates a datastore, a cloud provider, a partner tier, or a build-vs-buy call - only the criteria and options change.


Real-world application: KYC/KYB provider evaluation

We applied this framework to evaluate six KYC/KYB providers against seventeen criteria - a decision where gut feel and spreadsheet averages would not survive procurement review. That many criteria is too many for one flat pairwise round (136 comparisons), so they were grouped into a hierarchy - the "H" in AHP.

The team used the Delphi technique to reach consensus on pairwise comparisons across stakeholders. The Pugh screen confirmed a front-runner; AHP agreed on the winner but showed the margin was much larger than equal-weight scoring suggested. That turned a "we think Option X is slightly better" into "here is why X wins, with weights and a consistency check attached."

That is the consulting move: make the trade-off explicit, comparable, and repeatable - not just implement the chosen vendor.


Why it matters for engineering and consulting

  • Explicit trade-offs - the reasoning is on the page, not in someone's head.
  • Argue the right thing - people debate weights, not conclusions; far more productive.
  • Repeatable and auditable - rerun it, hand it off, defend it months later.
  • Catches contradictions - CR flags when your own judgments do not add up.
  • Stakeholder alignment - a shared artifact leadership can actually review.
  • Fast - minutes of structure beats hours of circular debate.

Open question: what if you do not pick just one?

Pugh and AHP assume a single winner. But options can be complementary - use several together. Then it is not "rank and pick", it is subset / portfolio selection: value includes synergies and redundancies under a budget or constraint, like a knapsack problem.

AHP can still rank; it will not compose. Combined options (A + C as one hybrid) can be treated as a new alternative in the evaluation. That extension is where structured decision-making meets real architecture work.


Key takeaways

  • The decision is a grid: options × criteria - and criteria are mostly non-functional requirements plus context.
  • Pugh matrix = fast screening, but every criterion weighted equally.
  • AHP = pairwise comparisons → eigenvector weights, in just n(n−1)/2 judgments.
  • Always check consistency - CR < 0.10 catches your own contradictions.
  • Weighted sum ranks the options; mind the single-winner assumption when options could combine.

We use structured decision frameworks like this when clients face high-stakes vendor selection, architecture forks, or build-vs-buy calls where the answer needs to survive scrutiny. Get in touch if you want help running a defensible evaluation on your next decision.

Svaki izbor u dizajnu je kompromis. Stalno birate: softverski okvir, bazu podataka, cloud provajdera, izradu ili kupovinu, koji integracioni put izabrati.

Uobičajeni proces je razgovor u hodniku, najglasniji glas ili odluka po osjećaju - rijetko zapisana. To funkcioniše dok neko ne pita zašto šest mjeseci kasnije, ili dok dvije zainteresovane strane ne pamte odluku drugačije.

Strukturirano donošenje odluka sa više kriterijuma pretvara to implicitno razmišljanje u eksplicitan, uporediv i ponovljiv tok - od sužavanja duge liste do ponderisanog rangiranja koje možete predati rukovodstvu.


Postavka: opcije × kriterijumi

Opcije su kandidatska rješenja - stvari između kojih birate.

Kriterijumi su mjerila po kojima ih ocjenjujete.

Cijeli problem je matrica. Da biste je popunili, trebaju vam pravi kriterijumi, njihove težine i ocjena po ćeliji.

Opcija Skalabilnost Sigurnost Jednostavnost Cijena
Opcija A ··· ··· ··· ···
Opcija B ··· ··· ··· ···
Opcija C ··· ··· ··· ···

Odakle dolaze kriterijumi

  • Funkcionalni zahtjevi - šta rješenje mora da uradi. Obično su filteri prolaz/pad: sve što ne može da obavi posao otpada. Rijetko razdvajaju preživjele opcije međusobno.
  • Nefunkcionalni zahtjevi + kontekst - koliko dobro radi i pod kojim ograničenjima. To su dimenzije kompromisa gdje se preživjele opcije zaista razlikuju: skalabilnost, sigurnost, jednostavnost korištenja, cijena, vrijeme do tržišta, iskustvo tima, vezanost za dobavljača, lakoća održavanja, ekosistem i podrška.

Kriterijumi u matrici odluke gotovo uvijek su nefunkcionalni zahtjevi plus kontekst.

Generisanje iskrenih opcija

Biranje kriterijuma i pronalaženje opcija su različiti poslovi. Kriterijumi dolaze iz zahtjeva; opcije iz prostora rješenja:

  1. Prethodna praksa - šta kolege i ekosistem već koriste
  2. Izrada / kupovina / partnerstvo - tri fundamentalno različita oblika
  3. Pregled dobavljača i tržišta - ko prodaje odgovarajuće rješenje; uži izbor vjerodostojnih
  4. Sastavljanje - spajanje pod-komponenti u cjelinu

Budite iskreni: 3–6 ozbiljnih opcija. Premalo stvara lažan izbor koji ste već napravili. Previše vodi u analitičku paralizu. Prvo filtrirajte opcije pomoću obaveznih funkcionalnih zahtjeva.


Metoda 1: Pughova matrica (sužavanje)

Pughova matrica je brzi relativni filter:

  1. Odaberite referentnu tačku - polaznu opciju (često postojeće rješenje).
  2. Za svaki kriterijum označite svaku opciju kao bolju (+), istu (0) ili goru (−) u odnosu na polaznu.
  3. Saberite oznake po opciji. Brzo, relativno, odlično za sužavanje duge liste.
KriterijumPolazna (A)Opcija BOpcija C
Skalabilnost0++
Sigurnost00
Jednostavnost0
Cijena0++
Neto naspram polazne00+1

Opcija C prolazi ispred postojećeg rješenja; Opcija B je neriješena. Dovoljno da skratite listu - ne za konačnu odluku.

Ograničenje: jednake težine

Osnovna Pughova matrica daje svakom kriterijumu istu težinu. „+“ na Sigurnosti vrijedi isto kao „+“ na Jednostavnosti.

U stvarnosti Sigurnost može biti nekoliko puta važnija - jednake težine skrivaju kompromis koji zapravo odlučuje. Trebaju vam težine i principijelan način da ih dobijete.


Metoda 2: Analitički hijerarhijski proces (AHP)

AHP (Thomas Saaty, 1970-e) razbija jednu tešku odluku na mnogo lakših poređenja u parovima, zatim izvodi težine i provjerava vašu konzistentnost.

Korak 1: uporedite dva po dva

Ljudi su loši u apsolutnim težinama, ali dobri u poređenjima u parovima: „Da li je sigurnost važnija od cijene - i koliko?“

Odgovorite na Saaty skali intenziteta 1–9:

Intenzitet Značenje
1 Jednaka važnost
3 Umjereno važnije
5 Znatno važnije
7 Veoma važnije
9 Ekstremno važnije
2, 4, 6, 8 Međuvrijednosti
1/3 … 1/9 Recipročna (obratno poređenje)

Sa n kriterijuma treba vam n(n−1)/2 poređenja - jedno po ivici u potpuno povezanom grafu. Četiri kriterijuma → šest procjena. Broj raste kao n²/2, pa držite skup mali (≈7 ili manje). Preko toga grupišite kriterijume u hijerarhiju - „H“ u AHP-u.

Korak 2: recipročna matrica i težine

Popunite recipročnu matricu A:

  • Dijagonala je 1 - svaki kriterijum jednak samom sebi.
  • aᵢⱼ = koliko puta je i važnije od j.
  • aⱼᵢ = 1 / aᵢⱼ - ogledalo se automatski popunjava.

Samo gornji trougao unosite ručno. Čitanje: Sigurnost naspram Jednostavnosti = 4 → Jednostavnost naspram Sigurnosti = 1/4.

Težine su glavni sopstveni vektor matrice A - jedno ponderisanje konzistentno sa svim omjerima u parovima. Primjer izlaza za matricu sa četiri kriterijuma:

Kriterijum Težina
Sigurnost 47%
Skalabilnost 26%
Cijena 16%
Jednostavnost 11%

U tome je korist razbijanja na parove: linearna algebra spaja mnogo malih, utemeljenih procjena u jedno rangiranje.

Korak 3: koeficijent konzistentnosti (CR)

Ljudi protivrječe sami sebi. Nekonzistentnost je intransitivnost - A pobjeđuje B, B pobjeđuje C, a C pobjeđuje A.

Savršeno konzistentna matrica ima λ_max = n; višak mjeri kontradikciju:

  • CI (Consistency Index, indeks konzistentnosti) = (λ_max − n) / (n − 1)
  • CR (Consistency Ratio, koeficijent konzistentnosti) = CI / RI, gdje je RI nasumični indeks - referentna vrijednost za matricu nasumičnih procjena
n 3 4 5 6 7 8 9 10
RI 0,58 0,90 1,12 1,24 1,32 1,41 1,45 1,49

Praktično pravilo: CR < 0,10 → vjerujte težinama. Inače vratite se i revidirajte najgora poređenja.

Primjer za n = 4: λ_max = 4,045, CI = 0,015, RI = 0,90, CR = 0,017 ✓

Računanje u kodu

Metoda potencije (power iteration) pronalazi glavni sopstveni vektor (matvec i norm su obične pomoćne funkcije linearne algebre). CR su dva broja i jedna presuda:

def ahp_weights(A):
    # A: n x n recipročna matrica
    n = len(A)
    w = [1 / n] * n          # početna uniformna pretpostavka
    while True:
        v = matvec(A, w)     # množenje matrice i vektora
        v = [x / sum(v) for x in v]
        if norm(v, w) < 1e-9:
            break
        w = v
    Aw = matvec(A, w)
    lambda_max = sum(Aw[i] / w[i] for i in range(n)) / n
    return w, lambda_max

RI = {1: 0.00, 2: 0.00, 3: 0.58, 4: 0.90, 5: 1.12,
      6: 1.24, 7: 1.32, 8: 1.41, 9: 1.45, 10: 1.49}

def consistency_ratio(lambda_max, n):
    CI = (lambda_max - n) / (n - 1)
    return CI / RI[n]       # CR < 0.10 -> prihvati

Sve zajedno: ocjena, težina, suma

Kad težine postoje, ocijenite svaku opciju po svakom kriterijumu (0–1, ili novi AHP krug po kriterijumu), pomnožite težinom i saberite:

ocjena(opcija) = Σ wᵢ · sᵢ

Ponderisani zbirovi Ocjena
A · Upravljano 0,732
B · Cloud-native 0,711
C · Samostalno hostovano 0,595

Na sirovim specifikacijama B je izgledao najbolje (prosjek 0,76). Ponderisanje onim što vam je zaista važno - Sigurnost na 47% - stavlja A na vrh. Matrica je pisani trag iza odluke.

Svaki korak je eksplicitan i zabilježen. Isti tok procjenjuje skladište podataka, cloud provajdera, partnerski nivo ili izradu naspram kupovine - mijenjaju se samo kriterijumi i opcije.


Primjena u praksi: procjena KYC/KYB provajdera

Ovaj okvir primijenili smo na procjenu šest KYC/KYB provajdera prema sedamnaest kriterijuma - odluka gdje procjena po osjećaju i prosjeci u tabeli ne bi preživjeli pregled nabavke. Toliko kriterijuma je previše za jedan ravan krug poređenja u parovima (136 poređenja), pa su grupisani u hijerarhiju - „H“ u AHP-u.

Tim je koristio Delphi tehniku da postigne konsenzus o poređenjima u parovima među zainteresovanim stranama. Pughov filter je potvrdio favorita; AHP se složio oko pobjednika, ali je pokazao da je razlika mnogo veća nego što sugeriše ponderisanje jednakim težinama. To pretvara „mislimo da je Opcija X malo bolja“ u „evo zašto X pobjeđuje, sa težinama i provjerom konzistentnosti“.

To je konsultantski potez: učiniti kompromis eksplicitnim, uporedivim i ponovljivim - ne samo implementirati odabranog dobavljača.


Zašto je važno za inženjering i konsalting

  • Eksplicitni kompromisi - razmišljanje je na papiru, ne u nečijoj glavi.
  • Argumentujte pravu stvar - ljudi raspravljaju o težinama, a ne o zaključcima, što je mnogo produktivnije.
  • Ponovljivo i podložno reviziji - ponovite, predajte, branite mjesecima kasnije.
  • Hvata kontradikcije - CR signalizira kad se vaše procjene međusobno ne slažu.
  • Usklađivanje zainteresovanih strana - zajednički artefakt koji rukovodstvo može pregledati.
  • Brzo - minuti strukture pobjeđuju sate kružne rasprave.

Otvoreno pitanje: šta ako ne birate samo jednu?

Pughova matrica i AHP pretpostavljaju jednog pobjednika. Ali opcije mogu biti komplementarne - koristite nekoliko zajedno. Tada nije „rangiraj i izaberi“, već izbor podskupa / portfolija: vrijednost uključuje sinergije i redundancije pod budžetom ili ograničenjem - u duhu problema ranca (knapsack).

AHP i dalje može rangirati, ali ne i sastaviti rješenje. Kombinovane opcije (A + C kao hibrid) mogu se tretirati kao nova alternativa u procjeni. To proširenje je mjesto gdje se strukturirano donošenje odluka susreće sa stvarnim arhitektonskim radom.


Ključni zaključci

  • Odluka je matrica: opcije × kriterijumi - a kriterijumi su uglavnom nefunkcionalni zahtjevi plus kontekst.
  • Pughova matrica = brzo sužavanje, ali svaki kriterijum jednako ponderisan.
  • AHP = poređenja u parovima → težine iz sopstvenog vektora, u samo n(n−1)/2 procjena.
  • Uvijek provjerite konzistentnost - CR < 0,10 hvata vaše kontradikcije.
  • Ponderisana suma rangira opcije; imajte na umu pretpostavku jednog pobjednika kad se opcije mogu kombinovati.

Koristimo okvire poput ovog kad klijenti imaju odluke sa velikim ulogom: izbor dobavljača, arhitektonska raskršća ili izrada naspram kupovine gdje odgovor mora da izdrži provjeru. Javite nam se ako vam treba pomoć oko utemeljene procjene sljedeće odluke.