Dobici:
- Mogućnost mapiranja dovršetka uređivača, pomoćnika za ćaskanje, CLI agenta i kategorija automatizacije CI na zadatke
- Sposobnost prilagođavanja nivoa autonomije prema riziku i primjene discipline 'planiraj prvo' na CLI agente
- Sposobnost transformacije upotrebe AI u timski sistem zasnovan na validiranom alatu, kapiji za verifikaciju, transparentnosti i odgovornosti
Do sada smo naučili da koristimo AI u pojedinačnim zadacima (kodiranje, pregled, testiranje, otklanjanje grešaka). U ovoj završnoj cjelini sastavili smo dijelove: upoznavanje različitih alata za AI kodiranje, usklađivanje pravog alata s pravim poslom i njihovo sigurno ugrađivanje u vaš svakodnevni razvojni tok – od uređivača do kontrole verzija, od CI/CD pipelinea do upravljanja timom. Cilj je pretvoriti neurednu naviku „pitajte AI s vremena na vrijeme“ u dosljedan radni sistem koji se može kontrolirati.
Tipove vozila pokrivamo neutralnim kategorijama (određeni nazivi proizvoda se brzo mijenjaju; bitno je šta kategorija radi). Svaka kategorija ima “sweet spot” i profil rizika; Majstorstvo je znati koliko autonomije dati kojem zadatku.
Kategorije alata za AI kodiranje
1. Završetak u uređivaču. Dodaci koji predlažu linije/blokove dok kucate u svom IDE-u (razvojnom okruženju u kojem pišete kod). Slatka tačka: brzina u toku, standardna šifra. Rizik: uzak kontekst, prihvatanje sugestije bez razmišljanja.
2. Chat/pomoćnik bočne ploče. Interfejs za ćaskanje ugrađen u IDE sa vidljivošću u delu vaše kodne baze. Slatka tačka: opis, refaktor, testiranje, analiza grešaka. Rizik: ograničen na kontekst koji dajete, zahtijeva provjeru.
3. CLI agenti (agentski alati). Alati koji se pokreću iz komandne linije, mogu čitati i mijenjati više datoteka, pokretati naredbe i samostalno izvršavati zadatke u više koraka. Slatka točka: promjene u više datoteka, zadaci koji se ponavljaju, poslovi tipa "dodaj ovo svojstvo". Rizik: visoka autonomija = veliki uticaj; Ako se ne označi, proizvodi široke i teško provjerljive promjene.
4. Integracija linije/automatizacije. CI (Continuous Integration) botovi koji ostavljaju automatske komentare o PR-ovima, predlažu testove ili prave dnevnike promjena. Sweet spot: prvo cjedilo bez umora, konzistencije. Rizik: buka, lažno samopouzdanje.
Savjet: Kako se autonomija povećava, kontrola bi također trebala rasti. Pošto je završetak uređivača mali i trenutan, lagano se nadgleda; Modifikaciju više datoteka CLI agenta treba ispitati isto kao, ako ne i pažljivije, nego ljudski PR.
Korak po korak: Ugrađivanje AI u radni tok
- Mapirajte zadatak na alat. Mali dodatak u toku → završetak; razumjeti/refaktorirati/testirati → chat; rad sa više datoteka, ponavljajući rad → CLI agent; kontinuirani prvi filter → CI integracija.
- Odaberite nivo autonomije. Koliko slobode ima agent? Prijedlog samo za čitanje ili izmjena datoteke + izvršenje naredbe? Prilagodite riziku.
- Negujte kontekst. Trajno uvesti pravila projekta (stil, arhitektura, "ne treba") u alat; Koristite datoteku uputstava projekta umjesto da je objašnjavate iznova i iznova.
- Održavajte verifikacione kapije. Promjena umjetne inteligencije je poput ljudske promjene: prolazi kroz kompilaciju, testiranje, pregled i (ako je kritično) odobrenje stručnjaka. AI otvaranja PR ne zaobilazi odobrenje.
- Izmjerite i prilagodite. Gledajte šta zaista ubrzava, gdje se povećava opterećenje korekcije; Odrežite upotrebe koje ne rade.
Tri mini futrole
Slučaj 1 — CLI agent upravlja preimenovanjem više datoteka. Jedan tim bi preimenovao koncept koji se prostire na 60 fajlova. Zadatak su dali CLI agentu, prvo zatražili plan, odobrili plan, zatim izvršili promjenu i pokrenuli cijeli testni paket. Agent 3 je propustio rubni slučaj u dosijeu; Testovi su to uhvatili, popravili. Posao, koji je ručno trajao otprilike 3 sata, završen je za 50 minuta uz nadzor.
Slučaj 2 — Neprovjerena autonomija nije uspjela. Drugi programer je rekao agentu da "poboljša ovaj modul" i pusti ga; Agent je izmijenio 18 datoteka i dodao dvije zavisnosti. Promjena je bila toliko široka da se nije mogla pregledati i morala je biti povučena. Lekcija: dajte agentima uski opseg, jasne kriterije prihvatanja i disciplinu prvo planirajte-kasnije uradite.
Slučaj 3 — CI pregled bot je postao prvi filter. Jedan tim je napravio bota koji ostavlja automatizirane komentare AI pregleda na PR-ove. Jednom kada je bot uhvatio propuste nulte provjere i probleme sa stilom, ljudski recenzenti su mogli posvetiti svoje vrijeme poslovnoj logici. Međutim, tim je jasno stavio do znanja da bot nije dao "odobrenje": još je potrebno najmanje jedno ljudsko odobrenje. Kako bi smanjili buku, podesili su čamac da ostavlja samo buku visokog/srednjeg intenziteta.
Četiri predloška koji se mogu kopirati
Disciplina "Prvo planiraj" za CLI agenta:
Zadatak: {{jasan, uski zadatak}}Kriterijumi prihvatanja: {{mjerljivi rezultat}}Ograničenje: rad samo na {{sljedećem direktoriju/fajlotu}}; dodavanje nove zavisnosti. Prvo predstavite plan BEZ PROMENE: koji fajlovi, šta će se promeniti, koje testove treba pokrenuti. Sačekajte da ODOBRIM plan. Zatim ga primijenite korak po korak, izvršavajući testove u svakom koraku.
Datoteka instrukcija projekta (trajni kontekst za alate):
Trajna pravila za AI alate u ovom projektu:- Jezik/verzija: {{...}}. Stil: {{...}}.- Arhitektonsko ograničenje: {{npr. smjer između slojeva}}.- NIKADA: ugrađivanje tajni, korištenje proizvodnih podataka, {{zabranjene biblioteke}}.- Svaka promjena mora biti testirana; Promjena javnog API potpisa BEZ pitanja. - Kad ste u nedoumici, stanite i pitajte.
Odluka o mapiranju alata zadataka:
Definiram sljedeći zadatak: {{task}}. Koju klasu alata treba da uradim sa: (a) dovršavanjem uređivača, (b) pomoćnikom za ćaskanje, (c) CLI agentom, (d) CI automatizacijom? Napišite svoje obrazloženje, rizik i preporučeni nivo autonomije (puki prijedlog / promjena datoteke / naredba za pokretanje).
Kodeks ponašanja botova za reviziju CI:
Ostavite samo nalaze VISOKE i SREDNJE ozbiljnosti kao komentare u PR pregledu. Svaki nalaz: kategorija, težina, predložena korekcija. Prikupite bilješke na nivou željenog stila u poseban, jedan sažetak komentara. NE PRISTAJETE; potrebno ljudsko odobrenje.
Slaba prompt / Jaka prompt
Slabo: (CLI agentu) "Učinite modul plaćanja boljim."
Jako: (Za CLI agenta) "Pokreni samo pod src/payments/. Zadatak: Izdvoji logiku rekurzivne validacije iz funkcije refund() u jedan pomoćnik; ponašanje i potpisi se ne mijenjaju. Prvo predstavi plan i čekaj moje odobrenje; zatim izvrši i pokreni testove/plaćanja/paket. Dodaj novu ovisnost."
Jaka verzija sužava opseg, postavlja kriterijume prihvatanja i ograničenja, i nameće disciplinu "prvo planiraj". Nejasni zahtjevi „uradi bolje“ su osnovni uzrok ogromnih i nekontrolisanih promjena.
klasa vozila
U čemu je najbolji
autonomija
inspekcijska težina
Završetak urednika
Mali dodatak u toku
nisko
Svjetlo (trenutno čitanje)
chat asistent
Razumjeti, testirati, refaktorirati
srednje
Srednji (provjera izlaza)
CLI agent
Više datoteka, rekurzivno
visoko
Teška (plan + potpuna recenzija)
CI automatizacija
Kontinuirani prvi filter
srednje
Srednje (pravilo + ljudsko odobrenje)
Upravljanje timom: od individualnih vještina do zajedničkog sistema
Dobro korištenje AI na individualnoj osnovi je početak; stvarna zrelost je konzistentan sistem na nivou tima. Ovaj sistem se zasniva na nekoliko stubova: spisak odobrenih alata (koji alati se mogu koristiti sa kojim podacima — iz jedinice 10), kapije za verifikaciju (AI promena prolazi kroz iste kapije za izradu/testiranje/reviziju — od jedinice 11), transparentnost (navođenje da je promena pokretana veštačkom inteligencijom obezbeđuje sledljivost gde je potrebno) i jasnoću odgovornosti (osoba koja se odjavljuje i odgovorna je). Ovaj okvir ograničava rizik uz održavanje brzine i osigurava da novi članovi tima rade s istom disciplinom.
Oprez: Što je veća autonomija alata – posebno CLI agenata koji mogu modificirati datoteke, pokrenuti komande – to ga strože ograničavaju u pristupu proizvodnom okruženju, povjerljivim podacima i operacijama koje je teško vratiti. Povežite destruktivne komande (trajno brisanje, raspoređivanje) sa ljudskim odobrenjem.
Uobičajene greške
- Zadatak-znači nekompatibilnost. Pokušavam obaviti posao s više datoteka s dovršavanjem uređivača ili malim prilogom s teškim agentom.
- Oslobađanje agenta. Zadaci agenta koji se daju sa uskim obimom i bez „prvo plana“ proizvode neispitane promjene.
- Otpuštanje kapija za verifikaciju za AI. "AI je to uradio, idemo brzo dalje" je najopasniji izuzetak; Vrata su ista za sve.
- Ručno davanje konteksta svaki put. Neupisivanje projektnih pravila u trajnu datoteku instrukcija proizvodi nedosljednost i dupliciranje.
- Pogrešiti odobrenje CI bota za ljudsko odobrenje. Bot je filter; Odgovorno ljudsko odobrenje je obavezno.
Ukratko
Alati za AI kodiranje spadaju u četiri glavne kategorije: dovršavanje uređivača, pomoćnik za ćaskanje, CLI agenti i CI automatizacija. Majstorstvo je usklađivanje zadatka sa pravim alatom i pravim nivoom autonomije; Kako se autonomija povećava, tako se povećava i kontrola. Dajte alatima uporan kontekst projekta, nametnite disciplinu „prvo planirajte“ agentima sa više datoteka i prođite AI promjenu kroz iste kapije za verifikaciju kao i ljudska promjena. Individualna vještina; Transformirajte ga u timski sistem izgrađen na odobrenoj listi alata, kapijama za verifikaciju, transparentnosti i jasnoći odgovornosti. AI je end-to-end množitelj brzine; Osoba koja potpisuje i daje račun je uvijek kompetentna osoba.
Zadatak aplikacije
Navedite tri stvarna zadatka koje ćete raditi sljedeće sedmice. Koristite predložak "odluka o podudaranju zadataka i vozila" za svaki da biste opravdali koju klasu vozila i koji nivo autonomije ćete odabrati. Zatim pokrenite uski zadatak za CLI agenta (ili pomoćnika za ćaskanje) sa disciplinom „prvo planirajte“: odobrite plan, izvršite ga, pokrenite testove i pregledajte promjenu kao ljudski PR. Konačno, izradite 5 tačaka „pravila upotrebe AI“ za svoj tim (odobreni alati, pravilo podataka, kapija za verifikaciju, ograničenje autonomije, odgovornost).
kontrolna lista
- [ ] Mogu razlikovati kategorije alata za AI kodiranje i slatku točku svake od njih.
- [ ] Mapiram zadatak u odgovarajuću klasu vozila i odgovarajući nivo autonomije.
- [ ] Dajem trajni kontekst projekta (instrukcijski fajl) alatima.
- [ ] Primjenjujem uski opseg i disciplinu "prvo planiraj" na CLI agente.
- [ ] Prolazim AI promjene kroz iste kapije za verifikaciju kao i ljudske promjene.
- [ ] Zalažem se za validirani alat, pravilo podataka, okvir za transparentnost i odgovornost na nivou tima.
Modul Exam
1. Šta osnovni model velikog jezika pomoćnika za kodiranje zapravo radi kada proizvodi kod?
- A) Patternualno predviđa najvjerovatniji nastavak na osnovu datog konteksta ✔
- B) Garantuje tačan rezultat stvarnim kompajliranjem i pokretanjem koda
- C) Skenira kod po cijelom internetu uživo i kopira najprecizniji.
- D) Razumije logiku koda kao ljudski inženjer i razumije namjeru
Pojašnjenje: LLM ne 'razumije' kod kao čovjek; Generiše najvjerovatniji nastavak datog konteksta, na osnovu obrazaca koje uči iz veoma velikog skupa teksta i koda. Stoga, kvalitet rezultata direktno ovisi o kvaliteti konteksta i instrukcija koje dajete, a svaki izlaz mora biti potvrđen.
2. Kako to nazvati kada AI uvjerljivo osmisli nepostojeću funkciju ili biblioteku i koji je jedini pravi protuotrov?
- A) Ovo se zove greška kompilacije; Protuotrov je jača oprema
- B) Ovo se zove halucinacija; Protuotrov je provjera koda i svakog korištenog API-ja ✔
- C) Ovo se zove regresija; Protuotrov je ponovno pokretanje modela
- D) Ovo se zove prelivanje konteksta; Protuotrov je skratiti prompt
Opis: Ovo se zove halucinacija i uzrokuje jednu od najskupljih grešaka u softveru. Jedini pravi protivotrov je verifikacija: potvrda da svaka funkcija, API i paket koji se koriste zaista postoje i da kod radi. Samouvjereni ton modela nije dokaz tačnosti.
3. Koji pristup najviše poboljšava kvalitet i konzistentnost izlaza pri generiranju koda pomoću AI?
- A) Oslobađanje modela govoreći 'napiši ovo mi' bez davanja konteksta
- B) Pisanje najdužeg i otmjenog mogućeg teksta
- C) Specificirajte i navedite primjere ulazno/izlaznog ugovora, rubnih slučajeva, verzije i stila ✔
- D) Kombinovanje generisanog koda direktno bez čitanja
Objašnjenje: Određivanje ulaznih/izlaznih tipova funkcije (ugovor), rubnih slučajeva, jezika/verzije i stilskog ograničenja i davanje primjera modelu omogućava prijelaz s predviđanja na preciznost. Bezkontekstualni zahtjevi 'napiši mi ovo' proizvode kod koji je svaki put drugačiji i često zaobilazi rubne slučajeve.
4. Kada istražujete stranu kodnu bazu pomoću AI-a, naziv funkcije može biti 'validateAndSave', ali AI sažetak može biti netačan. Šta je pravi pristup?
- A) Puno povjerenje u sažetak AI jer je ime samo po sebi razumljivo
- B) Promjena funkcije direktno bez čitanja
- C) Odlučivanje samo gledajući naziv funkcije
- D) Tretirajte AI opis kao hipotezu i provjerite kritične tvrdnje red po red u kodu ✔
Objašnjenje: AI može pogledati ime u kodu i reći vam 'kako izgleda da radi', ali u stvarnosti logika može biti drugačija (ili čak obrnuta). Dakle, objašnjenje AI je hipoteza; Kritične tvrdnje, posebno one koje se odnose na sigurnost, autoritet ili protok novca, treba vizuelno provjeriti na relevantnim linijama.
5. Koja je najveća opasnost kada kažete 'AI je pogledao, jasno je' u pregledu koda uz pomoć umjetne inteligencije?
- A) AI može proizvesti lažne negativne rezultate; Prave propuštene greške stvaraju lažno samopouzdanje ✔
- B) AI pregled je presporo pa gubi vrijeme
- C) Tim ne razumije jer AI samo komentariše na engleskom
- D) PR ne konvergira jer AI uvijek previše tumači
Objašnjenje: AI proizvodi i lažne pozitivne (označavanje problema tamo gdje ne postoji) i lažne negativne (nedostaje pravi bug). Lažni negativi su tihi; Najopasnije greške su one koje se u recenziji uopće ne spominju. Dakle, AI je prvi filter, a ne odobrenje; Odluka o spajanju pripada odgovornom licu.
6. Koja je najpodmuklija zamka koja se javlja kada samo AI date kod i odštampate testove?
- A) AI uvijek napiše previše testova i napuhuje bazu koda
- B) AI testira trenutno (možda pogrešno) ponašanje koda kao 'ispravno' i popravlja grešku ✔
- C) AI automatski briše kod prilikom pisanja testova
- D) AI piše testove ne samo za sretan put, već uvijek za rubni slučaj
Objašnjenje: AI teži da gleda u kod i piše tvrdnje koje testiraju trenutno ponašanje. Ako je kod pogrešan od samog početka, AI popravlja ovo pogrešno ponašanje kao 'ispravno'. Stoga, očekivanja od testa treba da budu napisana prema traženom pravilu (specifikaciji), a ne prema trenutnom izlazu koda.
7. Šta najviše određuje tačnost hipoteza pri otklanjanju grešaka pomoću AI?
- A) Kako je ljubazno napisan upit.
- B) Koliko puta je pitanje ponovo postavljeno
- C) Kvalitet dokaza koji se pruža modelu: puna poruka o grešci, praćenje steka, unos i očekivano ponašanje ✔
- D) Kojom je temom boja napisan kod?
Objašnjenje: AI ne vidi grešku kao vi; On zna samo dokaze koje ste mu dali. Uzimajući u obzir punu poruku o grešci, praćenje steka, input za pokretanje i očekivano ponašanje, model nabraja stvarne mogućnosti; Ako nema dokaza, nagađa se (halucinacija) i vodi vas na pogrešan put.
8. Koji je najkritičniji korak prije davanja evidencije proizvodnje AI na analizu?
- A) Zalijepite dnevnik kakav jeste, pokrivajući cijeli dan
- B) Prvo pretvorite dnevnik u velika slova
- C) Raspored redova dnevnika po abecednom redu
- D) Maskiranje ličnih podataka i tajni i davanje samo relevantnog prozora ✔
Opis: Neobrađeni zapisnici proizvodnje sadrže IP, e-poštu, ID sesije, token i ponekad otvorenu tajnu. Stavljanje u AI alat bez maskiranja ozbiljno je kršenje privatnosti. Dodatno, dnevnik treba filtrirati do uskog vremenskog prozora; Ali prva potreba je čišćenje osjetljivih podataka.
9. Šta treba učiniti ako AI kaže da su se dva događaja dogodila 'istovremeno' u analizi dnevnika i proglasi jedan kao osnovni uzrok?
- A) Zanemarivanje korelacije kao uzročnosti i provjera tvrdnje pomoću metrike i koda ✔
- B) Prihvatanje uzroka kao definitivnog jer AI uspostavlja vremenski odnos
- C) Odmah ponovno pokretanje prvooptužene komponente
- D) Potpuno brisanje dnevnika i njihovo ponovno prikupljanje
Objašnjenje: Najčešća zamka u analizi dnevnika je zbunjujuća korelacija s uzročnosti. Vremenski odnos koji je uspostavila AI je trag, a ne dokaz. Prava uzročnost zahtijeva vrijeme, mehanizam i, ako je moguće, ponovljivost; Zahtjev mora biti potvrđen metrikom i kodom.
10. Koje je zlatno pravilo o kojem se ne može pregovarati pri refaktoriranju sa AI i šta ga osigurava?
- A) Kod treba da bude kraći; Broj linija to garantuje
- B) Nema promjene u ponašanju; testovi koji bilježe trenutno ponašanje osiguravaju to ✔
- C) Kod sadrži više komentara; AI to garantuje
- D) Ponovno pisanje cijele datoteke odjednom; agent to garantuje
Objašnjenje: Refaktoring je poboljšanje unutrašnje strukture koda bez promjene njegovog vanjskog ponašanja; Zlatno pravilo je da ponašanje ostaje konstantno. Ono što osigurava ovo je testiranje: testna mreža koja bilježi trenutno ponašanje prije promjene se postavlja i pokreće nakon svakog koraka. Refaktorisanje bez testneta je kockanje.
11. Koji je sloj u proizvodnji dokumentacije koji AI ne može znati i koji je opasan za nadoknadu?
- A) Kako pokrenuti korake instalacije
- B) Lista parametara funkcije
- C) Obrazloženje 'zašto' je odluka o dizajnu donesena na taj način ✔
- D) Na kom jeziku je napisan kod?
Opis: AI može izdvojiti sloj 'šta/kako' (šta radi funkcija, kako se postavlja) iz koda; ali ne može znati sloj 'zašto' (obrazloženje dizajna za odluku, razlog za graničnu vrijednost). Izmišljeni 'razlog' opasniji je od nikakvog opravdanja; Vlasnik koda mora dodati ovaj sloj.
12. Šta bi programer trebao učiniti ako želi da zalijepi konfiguracijsku datoteku koja sadrži aktivni API ključ u neodobreni AI alat dok rješava hitnu grešku?
- A) Za brzinu, zalijepite datoteku kakva jest, a zatim izbrišite chat
- B) Dodajte 'povjerljivo' napomenu na kraju datoteke i pošaljite je
- C) Ostavite ključ i promijenite samo ime datoteke
- D) Uklonite/maskirajte tajne i dajte samo neophodan neosjetljivi kontekst ✔
Otkrivanje: Tajne, lični podaci i poverljiva imovina nikada ne bi trebalo da se unose na neodobrena sredstva; Hitnost ne obustavlja ovu crvenu liniju. Ispravan pristup je prvo izdvojiti/maskirati tajne i dati samo neophodan, neosjetljiv kontekst. Ako tajna i dalje curi, prva stvar koju treba učiniti je da odmah okrenete ključ.
13. Kod generiran umjetnom inteligencijom prolazi testiranje i pokreće se u proizvodnji. Dokazuje li to da je kod siguran?
- A) Ne; 'radni' ne znači sigurno, sigurnost zahtijeva poseban sloj autentifikacije ✔
- B) Da; Kod koji prođe test je siguran po definiciji
- C) Da; Pokretanje u proizvodnji eliminira sve ranjivosti
- D) Ne; ali sigurnost je bitna samo ako je kod spor
Pojašnjenje: 'Raditi' nije isto što i 'sigurno'. Čak i ako kod sadrži ranjivost kao što je SQL injekcija, može proći testiranje i raditi glatko; Ranjivost se otkriva tek kada je napadač pronađe. Stoga, pored tačnosti, sigurnosni pregled i skeniranje kao što je SAST treba da se obavljaju kao poseban sloj.
14. Koja je najsigurnija disciplina kada se CLI agentu daje zadatak s više datoteka (autonomni alat koji može mijenjati datoteke i izvoditi komande)?
- A) Reći agentu 'poboljšaj ovaj modul' i dati punu slobodu
- B) Davanje uskog opsega i kriterijuma prihvatanja, prvo traženje plana, odobravanje, implementacija korak po korak i pokretanje testova ✔
- C) Direktno spojite sve promjene agenta bez njihovog pregleda
- D) Omogućavanje agentu neograničenog pristupa proizvodnom okruženju i povjerljivim podacima
Objašnjenje: Kako se autonomija povećava, kontrola bi također trebala rasti. Davanje agentu uskog opsega i jasnih kriterija prihvatanja, prvo traženje plana bez promjena, odobravanje plana, zatim implementacija korak po korak i pokretanje testova u svakom koraku; Spriječava promjene koje su široke, nepregledne i koje je potrebno poništiti.
15. Ko ima odgovornost koja proizilazi iz koda generiranog umjetnom inteligencijom u softveru koji je kritičan za sigurnost (npr. plaćanje ili autentifikacija)?
- A) Pošto kod dolazi od AI, nalazi se u dobavljaču vozila
- B) Ako je AI dovoljno razvijen, niko nije; nema potrebe za provjerom
- C) Tim/inženjer koji ispituje, sastavlja i distribuira kod; AI ne zamjenjuje pristanak ✔
- D) Samo osoba koja piše upit, a ne oni koji ga pregledaju
Opis: AI je množitelj brzine i generator nacrta; ne može preuzeti odgovornost. Odgovornost za sve greške, ranjivosti ili kršenja koja proizlaze iz koda u produkciji leži na timu koji pregleda, sastavlja i distribuira taj kod. U područjima kritičnim za sigurnost, AI izlaz ni pod kojim okolnostima nije zamjena za pregled i odobrenje od strane kvalifikovanog inženjera.