Tehnologija · Razvoj programske opreme
Razvoj programske opreme po meri.
Razvijamo poslovne aplikacije, interne sisteme, portale in informacijske rešitve za procese, kjer standardna programska oprema ne zadošča. Prevzamemo lahko posamezen modul ali celoten projekt od arhitekture do podpore.
Sistem prilagodimo vašemu procesu, ne vašega procesa sistemu.
Kdaj nas običajno vključijo
- obstoječi sistem ne zadošča več
- delo poteka v preglednicah
- podatki se podvajajo med sistemi
- potrebujete novo aplikacijo
- želite prenoviti star sistem
- razvijate nov digitalni produkt
Ni vedno treba razviti vsega na novo
Če lahko obstoječi sistem kakovostno prenovimo ali povežemo z drugimi, je to pogosto hitrejše in cenejše od nove aplikacije. Najprej pogledamo, kaj je vredno ohraniti.
Sistem ostane vaš
- izvorna koda
- tehnična dokumentacija
- podatkovni model
- dostop do okolij
- navodila za namestitev
- uporabniška dokumentacija
- izobraževanje ekipe
Kaj to pomeni za vas
- Manj preglednic in ročnih statusov.
- Manj podvajanja podatkov med sistemi.
- Enoten pregled procesa za vodstvo in ekipo.
- Sistem, ki raste skupaj s podjetjem.
- Manj odvisnosti od posameznika, ki »edini ve, kako gre«.
Problem → rešitev
Kaj razvijamo
- interne poslovne sisteme
- spletne aplikacije
- administracijske sisteme
- uporabniške portale
- CRM module
- rezervacijske sisteme
- platforme
- podatkovne sisteme
- API-je
- integracije med sistemi
Kdaj je razvoj po meri smiseln
- uporabljate več nepovezanih sistemov
- veliko dela poteka v Excelu
- podatki se podvajajo in si nasprotujejo
- standardni CRM ne ustreza vašim procesom
- potrebujete zelo specifične uporabniške vloge
- razvijate nov digitalni produkt
- obstoječega sistema ni več mogoče nadgraditi
Kaj konkretno izvajamo
Frontend
Moderni uporabniški vmesniki, ki so hitri in razumljivi brez uvajanja.
- Komponentni sistem
- Odzivnost in dostopnost
- Delo z velikimi tabelami
- Realno-časovni prikazi
Backend
Poslovna logika, API-ji, podatkovne baze in procesi.
- Podatkovni model
- Poslovna pravila
- Opravila v ozadju
- Zmogljivost pri rasti
Arhitektura
Sistem načrtujemo tako, da omogoča rast in nadgradnje.
- Moduli in meje sistema
- Okolja
- Načrt integracij
- Utemeljene tehnične odločitve
Integracije
Povezujemo obstoječe sisteme, da se podatki ne vnašajo dvakrat.
- ERP in CRM
- Plačilni sistemi
- Registri in zunanji API-ji
- Datotečni prenosi
Varnost
Uporabniške pravice, prijava, revizijske sledi in ravnanje s podatki.
- Vloge in pravice
- SSO in dvofaktorska prijava
- Dnevnik dostopov
- Šifriranje in hramba
Testiranje
QA, regresija ter avtomatski in ročni testi.
- Scenariji iz realne uporabe
- Regresijski nabor
- Prevzemno testiranje
- Poročilo o napakah
Uvedba
Ločeno testno in produkcijsko okolje z nadzorovanimi objavami.
- CI/CD
- Migracije podatkov
- Postopna objava
- Vrnitev na prejšnjo verzijo
Vzdrževanje
SLA, monitoring in nadaljnji razvoj po predaji.
- Odzivni časi
- Spremljanje napak
- Redne posodobitve
- Načrt nadgradenj
Kako poteka projekt
Analiza
Popis procesa, uporabnikov in obstoječih sistemov.
Specifikacija
Funkcionalnosti, vloge, pravice in faze.
Prototip
Klikljiv prototip ključnih zaslonov pred razvojem.
Razvoj
Delujoča verzija na testnem okolju ob koncu vsake faze.
Integracije
Povezava z obstoječimi sistemi in migracija podatkov.
Testiranje
Testni scenariji, regresija in prevzemno testiranje.
Predaja
Produkcija, dokumentacija, izobraževanje, dostopi.
Vzdrževanje
SLA, monitoring in nadaljnji razvoj.
Primeri uporabe
Zamenjava preglednic
Proces, ki ga ni več mogoče voditi v Excelu, dobi sistem z vlogami, zgodovino in poročili.
Sistem za več lokacij
Enotni podatki in pravice po enotah, s pregledom za vodstvo.
Portal za partnerje
Naročila, cene in dokumentacija za zunanje uporabnike.
Celoten življenjski cikel razvoja
Razvoj poslovnega sistema ni samo programiranje. Med prvim pogovorom in dnem, ko sistem prevzame delo v podjetju, je vrsta korakov, ki jih je treba opraviti v pravem vrstnem redu: razumeti proces, zapisati zahteve, določiti arhitekturo, oblikovati uporabniško izkušnjo, razviti, testirati, prenesti podatke, uvesti, dokumentirati in prevzeti v vzdrževanje.
Projekt lahko prevzamemo v celoti ali kot posamezen projektni sklop. Če ima naročnik lastno razvojno ekipo, se lahko vključimo samo v analizo, arhitekturo, mobilni del, integracije, QA ali uvedbo. Pri večjih projektih določimo projektnega vodjo, odgovornosti ekip, roke, način komunikacije in poročanja.
Poslovna analiza
Cilji, uporabniki, proces, poslovna pravila, izjeme, obstoječi sistemi in viri podatkov.
Zahteve
Funkcionalne zahteve povedo, kaj mora sistem omogočati; nefunkcionalne, pod kakšnimi pogoji.
Arhitektura
Moduli, meje sistema, podatkovni model, integracijski sloj, okolja in tehnične odločitve z utemeljitvijo.
UX/UI
Informacijska arhitektura, uporabniške poti, žični okvirji, prototip in oblikovni sistem.
Razvoj
Frontend, backend, podatkovna baza, API-ji, integracije, pravice dostopa, obveščanje in poročanje.
QA
Testni scenariji, ročno in avtomatizirano testiranje, regresija, testiranje integracij in zmogljivosti.
Migracija in uvedba
Prenos podatkov, testna uvedba, prevzemno testiranje in prehod v produkcijo.
Primopredaja
Dokumentacija, dostopi, prenos znanja in dogovorjen model vzdrževanja.
Poslovna analiza pred razvojem
Največ napak v projektu ne nastane pri programiranju, ampak prej: pri nerazumljenem procesu. Zato pred razvojem popišemo, kdo dela kaj, v kakšnem vrstnem redu, kje se proces ustavi, kje se podatki prepisujejo ročno in katera pravila v resnici veljajo - vključno z izjemami, ki jih v postopkovniku ni.
Rezultat analize je dokument, ki ga razume tudi nekdo, ki ni tehnik: proces, uporabniške vloge, poslovna pravila, seznam sistemov, s katerimi se je treba povezati, in seznam odprtih vprašanj. Ta dokument je podlaga za obseg dela in za merila prevzema.
- cilji sistema in merilo, po katerem bo projekt ocenjen kot uspešen
- uporabniške vloge in kaj sme videti in spreminjati vsaka od njih
- proces po korakih, vključno s koraki, ki danes potekajo zunaj sistemov
- poslovna pravila in izjeme od njih
- obstoječi sistemi, ki ostanejo v uporabi, in način povezave z njimi
- viri podatkov, njihovo stanje in lastništvo
- omejitve: varnostne, zakonske, infrastrukturne in organizacijske
Funkcionalne in nefunkcionalne zahteve
Funkcionalna zahteva določa, kaj mora sistem narediti. Nefunkcionalna zahteva določa, pod kakšnimi pogoji mora to narediti. Projekti, ki popišejo samo prve, se običajno zapletejo pozno - takrat, ko se izkaže, da sistem sicer deluje, vendar ne dovolj hitro, ne za dovolj uporabnikov hkrati ali ne dovolj varno.
| Vrsta zahteve | Kaj določa | Primer |
|---|---|---|
| Funkcionalna | kaj sistem omogoča | uporabnik odda zahtevek in ta gre v odobritev |
| Zmogljivost | odzivni čas in obnašanje pod obremenitvijo | seznam z veliko zapisi se odpre brez čakanja |
| Razpoložljivost | kdaj mora sistem delovati | delovni čas, vzdrževalna okna, obnašanje ob izpadu |
| Varnost | kdo sme kaj in kaj se beleži | pravice po vlogah, revizijska sled, hramba |
| Dostopnost | uporabnost brez miške in za bralnike zaslona | tipkovnica, kontrast, oznake polj, fokus |
| Vzdržnost | kako enostavno je sistem spreminjati | dokumentacija, testi, ločena okolja |
Nefunkcionalne zahteve zapišemo v merljivi obliki takrat, ko so znane. Kjer številke niso znane ali dogovorjene, jih ne izmišljamo - določimo jih skupaj z naročnikom pred razvojem, ne po njem.
Tipična arhitektura poslovnega sistema
Večina poslovnih sistemov ima podobno hrbtenico. Uporabnik dela v spletnem, mobilnem ali portalnem vmesniku; ta govori z aplikacijskim vmesnikom, ki ga varuje prijava in preverjanje pravic; za njim je poslovna logika, ki uveljavlja pravila; podatki so v bazi in v dokumentnem delu; integracijski sloj skrbi za pogovor z zunanjimi sistemi; poročanje bere iz teh virov.
| Sloj | Naloga |
|---|---|
| Vmesnik | zasloni, obrazci, seznami in prikazi za posamezno vlogo uporabnika |
| API | vstopna točka v sistem; preverjanje prijave, pravic in vhodnih podatkov |
| Poslovna logika | pravila, stanja zapisov, delovni tokovi, odobritve in izračuni |
| Podatki | podatkovni model, zgodovina sprememb, dokumenti in priloge |
| Integracije | izmenjava z ERP, CRM, DMS, registri in zunanjimi storitvami |
| Poročanje | pregledi, kazalniki, izvozi in razporejena poročila |
| Nadzor delovanja | dnevniki, meritve, sledenje napakam in opozorila |
Tehnične odločitve prilagodimo projektu
Vsak projekt ne potrebuje mikrostoritev, mobilne aplikacije, umetne inteligence, podatkovnega skladišča ali kompleksne infrastrukture v oblaku. Arhitekturo določimo glede na število uporabnikov, obseg podatkov, integracije, varnostne zahteve, pričakovano rast in način vzdrževanja po uvedbi. Pretirana arhitektura je pri manjšem sistemu prav tako napaka kot premalo premišljena pri velikem.
| Odločitev | Kdaj prva možnost | Kdaj druga možnost |
|---|---|---|
| Enoten sistem ali moduli | manjši obseg, ena ekipa, en cikel objav | več neodvisnih domen, ločene ekipe, različni cikli |
| Oblak ali lastna infrastruktura | nihanje obremenitve, hitra postavitev okolij | zahteve glede lokacije podatkov in obstoječa infrastruktura |
| Splet ali mobilna aplikacija | delo za mizo, kompleksni obrazci in tabele | delo na terenu, kamera, koda, lokacija, delo brez povezave |
| Ena koda ali domorodna aplikacija | podobna funkcionalnost na obeh platformah | tesna povezava s strojno opremo in sistemskimi funkcijami |
| Sinhrona ali asinhrona integracija | uporabnik potrebuje odgovor takoj | obdelava traja ali zunanji sistem ni vedno dosegljiv |
| Centralni ali porazdeljeni podatki | en vir resnice, manj sinhronizacije | sistemi z lastnim življenjskim ciklom in lastnimi podatki |
| Razviti ali povezati | proces je specifičen in je konkurenčna prednost | obstaja preverjen sistem, ki proces že pokriva |
Kaj lahko vključuje obseg razvoja
Spodnji seznam ni obvezen nabor. Je pregled sklopov, ki jih projekt lahko vsebuje; kaj od tega je v obsegu, se določi po analizi in zapiše v pogodbeni obseg.
Analiza in specifikacija
Popis procesa, funkcionalna in tehnična specifikacija ter merila prevzema za pomembne funkcije.
UX/UI in prototip
Informacijska arhitektura, žični okvirji, klikljiv prototip in oblikovni sistem, ki ga razvoj uporabi naprej.
Arhitektura in podatkovni model
Moduli, meje sistema, podatkovni model, integracijski načrt in utemeljene tehnične odločitve.
Frontend in backend
Uporabniški vmesnik ter poslovna logika, API-ji, obdelave v ozadju in podatkovna baza.
Mobilni del
Mobilna aplikacija, kadar je delo na terenu del procesa - z obveščanjem, delom brez povezave ali uporabo strojne opreme naprave.
Integracije
Povezava z ERP, CRM, DMS, registri, plačilnimi sistemi in drugimi zunanjimi storitvami.
Prijava in pravice
Prijava, enotna prijava, uporabniške vloge, pravice dostopa in revizijska sled.
Poročanje
Pregledi, kazalniki, razporejena poročila in izvozi za nadaljnjo obdelavo.
Migracija podatkov
Prenos iz obstoječih sistemov s čiščenjem, preverjanjem in usklajevanjem.
QA in prevzemno testiranje
Testni scenariji, regresija, testiranje integracij ter uporabniško prevzemno testiranje.
Uvedba in okolja
Razvojno, testno in produkcijsko okolje, nadzorovane objave in možnost vrnitve na prejšnjo različico.
Dokumentacija in primopredaja
Tehnična in uporabniška dokumentacija, prenos dostopov, izobraževanje in dogovorjeno vzdrževanje.
Nov sistem, nadgradnja ali prevzem
Nov sistem
Gradimo od začetka. Prednost je, da arhitekturo in podatkovni model postavimo za znane zahteve; zahteva pa več časa za analizo in migracijo podatkov iz sistemov, ki ostanejo v uporabi.
Nadgradnja obstoječega
Obstoječe jedro ohranimo in ga razširimo. Pred tem pregledamo kodo, arhitekturo, odvisnosti in stanje podatkov, da vemo, kaj je vredno ohraniti in kaj je treba zamenjati.
Prevzem od drugega izvajalca
Sistem prevzamemo v vzdrževanje in nadaljnji razvoj. Potrebujemo dostop do izvorne kode, infrastrukture, baze, zunanjih storitev in dokumentacije; rezultat pregleda so ugotovitve, seznam tveganj in načrt stabilizacije.
Okolja, objave in nadzor delovanja
Razvojno, testno in produkcijsko okolje so ločena. V testnem okolju ne uporabljamo pravih osebnih podatkov. Spremembe gredo skozi pregled in testiranje, preden se objavijo v produkcijo; pri večjih spremembah je predvidena tudi vrnitev na prejšnjo različico.
Po uvedbi je pomembno, da je vidno, kaj se v sistemu dogaja: dnevniki aplikacije, meritve infrastrukture, sledenje napakam, stanje integracij in opozorila. Brez tega se napake odkrijejo takrat, ko jih prijavi uporabnik - običajno prepozno.
QA, merila prevzema in uporabniško testiranje
»Razvito« in »sprejeto« nista isto. Za pomembne funkcije zato vnaprej zapišemo, kaj je vhod, kaj je pričakovan izhod, kako se sistem obnaša v mejnih primerih in pod katerimi pogoji je funkcija sprejeta. To odpravi večino kasnejših razprav o tem, ali nekaj deluje pravilno.
Testiranje poteka po testnih scenarijih, ročno in avtomatizirano, vključno s testi v CI/CD. Po potrebi lahko QA izvaja ekipa, ločena od razvojne. Uporabniško prevzemno testiranje izvedejo ključni uporabniki naročnika po scenarijih iz njihovega vsakdanjega dela; napake se zabeležijo, popravijo in ponovno preverijo pred potrditvijo.
- merila prevzema za pomembne funkcije
- funkcionalno in regresijsko testiranje
- testiranje integracij in API-jev
- testiranje v različnih brskalnikih in na napravah
- testiranje zmogljivosti, kadar je to zahteva
- varnostni pregled pred uvedbo
- uporabniško prevzemno testiranje in evidenca napak
Varnost in osebni podatki
Varnost ni razdelek na koncu projekta. Prijava, uporabniške vloge, pravice dostopa po načelu najmanjših potrebnih pravic, revizijska sled, ravnanje s skrivnostmi, posodabljanje odvisnosti in varnostne kopije so del zasnove sistema.
Pri sistemih z osebnimi podatki je treba že v zasnovi določiti namen obdelave, pravice dostopa, čas hrambe, izvoz, brisanje in revizijsko sled. To ni pravno svetovanje; pravno presojo opravi naročnik oziroma njegova pooblaščena oseba, mi poskrbimo za tehnično izvedbo dogovorjenih zahtev.
- prijava, enotna prijava in dvofaktorsko preverjanje, kadar je zahtevano
- uporabniške vloge in pravice po načelu najmanjših potrebnih pravic
- revizijska sled za spremembe pomembnih zapisov
- šifriranje prenosa in hrambe v skladu z dogovorjenimi zahtevami
- ločeno ravnanje s skrivnostmi in dostopi
- redne varnostne posodobitve in upravljanje odvisnosti
- varnostne kopije in preverjena obnovitev
Tipična projektna ekipa
Ekipa se sestavi glede na projekt; ni nujno, da vsak projekt vključuje vse spodnje vloge. Pri manjšem sistemu jih nekaj združi ena oseba, pri večjem so vloge ločene in imajo vsaka svojega nosilca.
Projektni vodja
Vodi obseg, roke, tveganja in komunikacijo z naročnikom; skrbi, da so odločitve zapisane in da jih sprejme pristojna oseba.
Poslovni analitik
Prevede poslovni proces v zahteve, pravila in merila prevzema, ki jih razume tako naročnik kot razvoj.
Solution architect
Določi arhitekturo, podatkovni model, integracijski pristop in tehnične odločitve z utemeljitvijo.
UX/UI oblikovalec
Oblikuje uporabniške poti, zaslone in oblikovni sistem, da je delo v sistemu hitro tudi brez uvajanja.
Frontend razvijalec
Razvije uporabniški vmesnik, delo z velikimi seznami, obrazce in prikaze v realnem času.
Backend razvijalec
Razvije poslovno logiko, API-je, podatkovni model in obdelave v ozadju.
Mobilni razvijalec
Razvije mobilni del, kadar je v obsegu - vključno z obveščanjem, delom brez povezave in uporabo strojne opreme naprave.
QA inženir
Pripravi testne scenarije, izvaja ročno in avtomatizirano testiranje ter vodi evidenco napak.
DevOps in cloud inženir
Postavi okolja, objave, nadzor delovanja, varnostne kopije in obnovitev.
Strokovnjak za podatke
Pokriva migracijo, kakovost podatkov, poročanje in analitiko, kadar je to del projekta.
Strokovnjak za varnost
Pregleda arhitekturo in dostope ter sodeluje pri zahtevah za regulirana okolja.
Jedrno projektno strukturo Epixa lahko pri večjih projektih razširimo s preverjenimi specialističnimi in partnerskimi razvojnimi ekipami. V širši projektni in specialistični mreži je na voljo več kot 190 strokovnjakov različnih profilov; koga vključimo, določajo zahtevane kompetence, tehnologije, obseg, roki in pogoji naročnika. Naročnik kljub temu sodeluje skozi eno jasno določeno projektno strukturo.
Kaj potrebujemo od naročnika
Projekt teče hitreje, kadar so na strani naročnika znani nosilci odločitev in dostopi. Rok projekta namreč ni odvisen samo od razvojne ekipe: nanj vplivajo tudi dostopi, zunanje integracije, tretji ponudniki, potrditve, stanje podatkov in spremembe zahtev.
- odgovorno osebo za vsebinske odločitve
- ključne uporabnike, ki proces dejansko izvajajo
- seznam obstoječih sistemov, ki ostanejo v uporabi
- obstoječo dokumentacijo, tudi če ni popolna
- dostop do API-jev in testnih okolij zunanjih sistemov
- vzorčne podatke za testiranje in migracijo
- poslovna pravila in izjeme, ki v postopkovniku niso zapisane
Kaj naročnik prejme
- delujoč sistem v produkcijskem okolju
- izvorno kodo v skladu z dogovorjenim modelom projekta
- tehnično dokumentacijo: arhitektura, podatkovni model, integracije, okolja
- navodila za uvedbo in postopek objave
- uporabniško in administratorsko dokumentacijo
- rezultate testiranja in evidenco napak ob prevzemu
- dostope, skrivnosti in podatke o zunanjih storitvah
- seznam znanih omejitev in odprtih zadev
Izvorna koda in podatki so last naročnika; dokumentacija, dostopi in gesla so del primopredaje. Licence, pravice uporabe in dostop do posameznih komponent se natančneje določijo v pogodbi glede na model projekta. Končni seznam predanih rezultatov je del pogodbenega obsega.
Kaj gre pogosto narobe in kako to obravnavamo
| Tveganje | Kako ga obravnavamo |
|---|---|
| nejasne ali nedokončane zahteve | analiza pred razvojem, zapisana pravila in merila prevzema za pomembne funkcije |
| integracija, za katero se izve pozno | popis sistemov in podatkovnih tokov že v analizi |
| slabo stanje podatkov v obstoječih sistemih | zgodnji testni prenos, čiščenje in usklajevanje pred končno migracijo |
| ni testnih scenarijev in ni jasno, kdo potrdi | scenariji in nosilec potrditve dogovorjeni pred razvojem |
| ni ločenega testnega okolja | ločena okolja in objava šele po testiranju |
| zastarele odvisnosti in varnostne luknje | pregled odvisnosti in redne varnostne posodobitve |
| spremembe obsega med izvedbo | zahtevek za spremembo z oceno vpliva na obseg, roke in odvisnosti |
| odvisnost od enega človeka | dokumentacija, pregled kode in več ljudi, ki poznajo sistem |
Vzdrževanje po uvedbi
Po uvedbi lahko prevzamemo nadzor delovanja, odpravo napak, tehnične in varnostne posodobitve ter nadaljnji razvoj. Obseg podpore se dogovori s pogodbo; prijave razvrstimo po resnosti, odzivni časi pa se določijo glede na kritičnost sistema in dogovor z naročnikom.
| Razred | Kaj pomeni |
|---|---|
| 1 - izpad | sistem ali ključni del ne deluje; obravnava ima najvišjo prednost |
| 2 - motnja | sistem deluje, posamezna funkcija ne; obravnava po dogovorjeni prednosti |
| 3 - napaka | manjša napaka brez vpliva na poslovanje; uvrsti se v naslednjo objavo |
| 4 - zahteva | sprememba ali nadgradnja; ocenimo obseg in uskladimo termin |
Univerzalnih odzivnih časov ne objavljamo, ker so odvisni od kritičnosti sistema in dogovorjene ravni podpore.
Kako sistem zgradimo
Arhitektura
Podatkovni model, moduli in meje sistema določimo pred razvojem, da kasnejše širitve ne zahtevajo prepisa.
UX/UI
Uporabniške poti in prototip ključnih zaslonov potrdite, preden se pišejo funkcionalnosti.
Frontend in backend
Vmesnik in strežniški del razvijamo z istim standardom: berljiva koda, pokrita z avtomatskimi testi.
Integracije
Povezave z ERP, CRM, dokumentnimi sistemi in registri, z beleženjem in ponovnimi poskusi.
Podatki
Migracija, čiščenje in pravila za kakovost podatkov, da nov sistem ne podeduje starih napak.
Varnost, kakovost, uvedba
Varnost
Prijava in pravice, šifriranje v prenosu in mirovanju, revizijska sled ter pregled pred objavo.
Testiranje
Avtomatski testi, regresija in prevzemno testiranje po vaših merilih, ne po naših.
Uvedba
Ločena okolja, postopna objava in možnost vrnitve na prejšnjo različico v nekaj minutah.
Primopredaja
Koda, dostopi, dokumentacija in izobraževanje ekipe. Sistem ostane vaš.
Vzdrževanje
Dogovorjen odzivni čas, nadzor delovanja in mesečni obseg ur za nadgradnje.
Sorodno delo
Tehnologije
Podstrani
Pogosta vprašanja
Koliko časa traja razvoj?
Manjši interni sistem tipično 6-12 tednov, kompleksnejša platforma več mesecev. Po discoveryju dobite časovnico po fazah.
Ali lahko sistem prevzame naša ekipa?
Da. Koda, dokumentacija in okolja so vaši; primopredajo in izobraževanje izvedemo kot del projekta.
Kaj pa migracija podatkov iz starega sistema?
Migracija je del projekta: popis, čiščenje, testni prenos in končni prenos ob prehodu.
Preberite tudi
Sorodne rešitve
Se sliši kot vaš projekt?
Pošljite opis projekta, obstoječi sistem, razpisno dokumentacijo ali datum dogodka.