Fitimet:
- Aftësia për të dalluar se ku AI ofron shpejtësi reale në ciklin jetësor të zhvillimit të softuerit dhe ku vendimi dhe përgjegjësia i mbetet inxhinierit
- Aftësia për të aplikuar një disiplinë inxhinierike me tre shtresa që verifikon çdo kod dhe dizajn të prodhuar përmes përpilimit, testimit dhe rishikimit.
- Merrni zakonin e pastrimit të kontekstit për të përdorur AI pa ndarë kodin burimor konfidencial, kredencialet dhe të dhënat e klientit
Kur shikoni ditën e një inxhinieri kompjuteri, fotografia është e ngjashme në shumicën e ekipeve: kuptimi i një kërkese biznesi, dizajnimi, shkrimi i kodit, leximi i kodit të dikujt tjetër, korrigjimi (procesi i zbulimit të arsyes përse një program nuk funksionon dhe rregullimi i tij), shkrimi i testeve, përgatitja e dokumentacionit, rishikimi i kodit dhe pjesëmarrja në takime. Me fjalë të tjera, koha e kushtuar "gjykimit inxhinierik" të vërtetë, domethënë nëse një zgjidhje është e saktë, e sigurt dhe e qëndrueshme, shtypet nën punën e përsëritur. Këtu hyn në lojë inteligjenca artificiale (shkurtimisht AI; softuer që punon në tekst dhe kod me një model të madh gjuhësor). AI nuk e merr vendimin për ju; Ai ju përgatit për vendimin, prodhon një skelet kodi, ngushton defektin dhe vendos një draft të punuar para jush. Gjatë gjithë këtij moduli, ne do ta pozicionojmë AI jo si një "programues automatik", por si një partner programimi të disiplinuar në çift, prodhimi i të cilit përpilohet, testohet dhe rishikohet çdo herë.
Në këtë njësi të parë, ne sqarojmë tre gjëra: Në cilat faza të ciklit jetësor të zhvillimit të softuerit (fazat nëpër të cilat kalon një softuer nga ideja në prodhim: analizë, dizajn, kodim, testim, vendosje, mirëmbajtje) AI shton vlerën reale; cilat vendime duhet t'i mbeten rreptësisht inxhinierit; dhe cila është disiplina e verifikimit dhe konfidencialitetit që duhet t'i përmbaheni kur e bëni këtë. Pa këtë çati të instaluar siç duhet, teknikat në njësitë e mëvonshme mund të bëhen të rrezikshme; Sepse një gabim në softuer arrin miliona përdorues në të njëjtën kohë dhe mund të kthehet në një dobësi sigurie.
Konceptet: halucinacione: fabrikimi bindës i AI i një metode, bibliotekë, API ose sjellje që nuk ekziston në të vërtetë. Konteksti: Hyrja që i jepni AI (kodi, mesazhi i gabimit, kërkesa, kufizimet). Verifikimi: Kontrollimi i daljes në mënyrë të pavarur (përpilim, testim, dokumentacion). Këto tre koncepte janë shtylla kurrizore e të gjithë modulit.
Në cilat biznese është përshpejtuesi i AI, në cilat biznese është i rrezikshëm?
Punët në softuer bien në një spektër të dyfishtë për sa i përket rezultateve. Në njërën anë janë puna përgatitore e kthyeshme, me rrezik të ulët; Nga ana tjetër, ka detyra të vështira për t'u kthyer që hyjnë në mjedisin e prodhimit dhe mund të shkaktojnë humbje të të dhënave, dobësi sigurie ose ndërprerje. Vlera e AI ndryshon në varësi të vendit ku qëndroni në këtë spektër.
lloji i biznesit
Kontributi i AI
Roli i inxhinierit
Skeleti i kodit / bojlerpllaka
Gjenerimi i shpejtë i strukturës së përsëritur
Logjika dhe kontrolli i statusit të skajit
korrigjimi
Hipoteza dhe lista e shkaqeve të mundshme
Riprodhimi dhe konfirmimi i shkakut rrënjësor
teste me shkrim
Testi i draftit dhe krijimit të skenarit
Pohim kuptimplotë dhe kontroll i fushëveprimit
rifaktorimi
Propozimi i rifaktorimit
Ruajtja e sjelljes përmes testimit
Dokumentacioni
Drafti i parë dhe struktura
Kontrolli i korrektësisë ndaj kodit
Vendim arkitektonik/sigurie
Lista e opsioneve dhe të mirat dhe të këqijat
Vendimi përfundimtar dhe përgjegjësia
Rregulli është i thjeshtë: rreziku i një prodhimi të AI është i barabartë me dëmin që do të pësojë nëse ai dalje bën një gabim. Sugjerimi i gabuar i emrit të ndryshores është i padëmshëm; Autentifikimi i gabuar (kontrollimi që përdoruesi është me të vërtetë ai që pretendojnë se janë) e bën të gjithë sistemin të cenueshëm. Pra, pyetja e parë që duhet bërë përpara përdorimit të daljes është: "Çfarë ndodh nëse kjo është e gabuar dhe kush e vëren atë dhe kur?"
Kujdes: AI prodhon kod të rrjedhshëm dhe të sigurt. Rrjedhshmëria nuk është garanci për saktësinë. Një model gjuhe mund të prodhojë në mënyrë të besueshme një emër funksioni që në fakt nuk ekziston, një sekuencë parametrash të pasaktë ose edhe një model të pasigurt. Në softuer, kjo nuk mbetet në letër; Ai përpilohet, ekzekutohet dhe shpërthen në prodhim.
Vendimet që duhet t'i lihen inxhinierit
Disa vendime nuk duhet të jenë kurrë plotësisht të automatizuara; mbart rreziqe teknike, ligjore dhe etike:
- Miratimi për prodhim: Lëshimi i një kodi në prodhim dhe përgjegjësia për këtë.
- Siguria dhe arkitektura: Vendime të shtrenjta si vërtetimi, autorizimi, kriptimi dhe modeli i të dhënave.
- Licenca dhe e drejta e autorit: Përdorueshmëria e kodit të prodhuar në produktin komercial dhe pajtueshmëria me licencën.
- Puna me të dhëna konfidenciale: Transaksionet me të dhënat e klientit, sekretet e kodit burimor dhe informacionin e identitetit.
Paralajmërim: Edhe nëse AI thotë "ky kod është i sigurt dhe i gatshëm për prodhim", pranimi i kësaj pa testim sigurie, rishikim të kodit dhe vërtetim nën ngarkesë reale është i papranueshëm. Në punën kritike për sigurinë, prodhimi i AI nuk është kurrë një zëvendësim për miratimin nga një inxhinier kompetent; Çdo rezultat që çon në një vendim duhet të verifikohet dhe miratohet në mënyrë të pavarur nga inxhinieri i autorizuar përpara zbatimit.
Disiplina e verifikimit: Kontroll me tre shtresa
Aplikoni tre shtresa kontrolli për të përdorur rezultatin e AI si një recensues i lartë dhe jo verbërisht. Ky është refleksi bazë që do të përsërisim gjatë gjithë modulit.
- Kompilimi dhe kontrolli statik: A përpilohet/ekzekutohet në të vërtetë kodi? A ka gabime tipi, variabla të papërdorura, API jo-ekzistente? Çfarë thotë mjeti i analizës statike (mjeti që ekzaminon kodin pa e ekzekutuar)?
- Riprodhimi i pavarur (testimi): Ekzekutoni kodin me hyrje të vogla, të njohura dhe shikoni nëse merrni rezultatin e pritur. Provoni rastet e skajeve (null, zero, negativ, i madh).
- Verifikimi i burimit: Çdo API, version i bibliotekës dhe veçori gjuhësore që përdor AI duhet të verifikohen nga dokumentacioni zyrtar.
Kërkesa e verifikimit (e bën më të lehtë kontrollimin e rezultatit): "Rindisni TË GJITHA bibliotekat e jashtme, metodat dhe veçoritë gjuhësore që përdorni në kodin tuaj. Për secilën, tregoni në cilin version është i disponueshëm dhe etiketoni "duhet të verifikohet nga dokumentacioni". Mos krijoni asnjë API për të cilën nuk jeni i sigurt; nëse nuk jeni i sigurt, shkruani qartë "jo të sigurtë" si listën e ndonjë rasti të veçantë".
Kritikoni kërkesën tuaj të kodit: "Shikoni në mënyrë kritike kodin që sapo keni shkruar, si një inxhinier i lartë që ju ka punësuar. Jepni artikuj konkretë nën këto tre tituj: (1) gabime logjike/kase të skajshme, (2) rreziqe sigurie, (3) probleme të performancës ose lexueshmërisë. Për secilin artikull, shkruani 'pse është problemi' dhe 'suk mund të zgjidhet' problemi, nëse nuk mund të zgjidhet', nëse nuk mund të zgjidhet'. përpiquni ta zbukuroni atë."
Prompt i dobët / Prompt i fortë
I DOBËT:"Më shkruaj një funksion vërtetimi të përdoruesit." (Rezultati: e paqartë se cila gjuhë, cili rregull, çfarë sjellje gabimi; kodi gjenerik, shpesh i pasigurt ose jashtë kontekstit.) STRONG:"Shkruani një funksion vërtetimi të emailit për Python 3.11. Hyrja: vargu. Dalja: E vërtetë nëse është e vlefshme, E gabuar. Përndryshe, Formati i rremë është i vlefshëm. Rregullat kërkohen të mjaftueshme stDO MOS PËRDOR bibliotekën e jashtme Një test me 5 mostra poshtë bllokut të shtojcave të funksionit: i vlefshëm, bosh, pa '@', dyfishtë '@', që përmban vetëm hapësira."
Dallimi është në kontekst. Prompt i fuqishëm; Ai përfshin gjuhën, versionin, kontratën hyrëse-dalëse, kufizimet dhe pritjet e testit. Kjo disiplinë e vetme redukton shumë rrezikun e halucinacioneve dhe kodit të pasigurt.
Mini Rastet
Rasti 1 - Metoda e sajuar. Një zhvillues dëgjon nga AI se ekziston një metodë e quajtur date.addBusinessDays(5) në një bibliotekë datash dhe ajo shpjegohet në një mënyrë të sigurt. Duke parë dokumentacionin, ai sheh që nuk ekziston një metodë e tillë, mënyra e duhur është një lak manual. Halucinacioni kapet përpara se të hyjë në prodhim me një verifikim 10-minutësh.
Rasti 2 - Humbja e gjendjes së skajit. AI prodhon një funksion "llogarit mesataren"; Funksionon kur testohet me 1000 rreshta të dhënash. Megjithatë, kur lista është bosh, ajo jep ndarje me zero gabim. Meqenëse inxhinieri shtoi testin e hyrjes bosh, ai e sheh dhe rregullon gabimin përpara se ai të dalë drejtpërdrejt. Një test i gjendjes së një skaji parandalon një alarm prodhimi në orën 3 të mëngjesit.
Rasti 3 - Rreziku i privatësisë. Një ekspert është gati të ngjisë një skedar me një varg lidhjeje aktuale të bazës së të dhënave dhe çelësin API në një mjet publik. Kujton politikën e institucionit; Ai zëvendëson sekretet me <REDACTED>, e redukton kodin në një shembull përfaqësues dhe e kërkon atë. Kështu, ai merr ndihmë në 5 minuta, por nuk i dalin të dhënat e identitetit.
Parimi i punës me kodin sekret dhe informacionin e identitetit
Pjesa më e ndjeshme e softuerit; sekretet e kodit burimor, informacioni i identitetit (çelës API, fjalëkalim, token) dhe të dhëna të klientit/personal. Parimi bazë: pastroni përpara se të ndani, pyesni vetëm thelbin e problemit me një shembull përfaqësues nëse është e mundur.
Modeli i kërkesës së anonimuar: "Ka një gabim në funksionin e mëposhtëm. Zëvendësova logjikën aktuale të biznesit dhe konstantat e fshehura me vlera përfaqësuese (çelësin API, emrat e tabelave, emrat e fushave të përgjithshme). Problemi: Marr gabimin Y në hyrjen X. Thjesht gjej gabimin logjik në këtë kod përfaqësues dhe shpjegoni versionin e korrigjuar. [kodi përfaqësues]"
Këshillë: Nëse keni dyshime, bëni këtë test: "A do të hynte organizata ime në telashe nëse do ta shkruaja këtë publikisht në një forum?" Edhe nëse përgjigja është e paqartë, pastroni së pari. Rivendosja është gjithmonë më e lirë sesa ndjekja e rrjedhjes më vonë.
Gabimet e zakonshme
- Përdorimi i daljes pa kompilim/testim. “AI shkroi” nuk është një justifikim; Çdo pjesë e kodit verifikohet duke e ekzekutuar atë.
- Bërja e kërkesave pa kontekst. Nëse gjuha, versioni, hyrje-dalja dhe kufizimet nuk jepen, kodi bëhet i përgjithshëm dhe shpesh i pasigurt.
- Ndarja e informacionit konfidencial pa u menduar. Çelësi API, fjalëkalimi dhe të dhënat e klientit nuk duhet të lëshohen pa u pastruar.
- Ngatërrimi i gjuhës së saktë me saktësinë. Sa më i sigurt që flet AI, aq më i kujdesshëm duhet të jeni; Toni i sigurt nuk është provë.
- Delegimi i vendimit tek AI. Vendimi për vënien në prodhim, sigurinë dhe arkitekturën i mbetet inxhinierit; AI prodhon vetëm materiale.
Në përmbledhje
Inteligjenca artificiale përshpejton pjesët e përsëritura dhe që kërkojnë kohë të punës së softuerit: kodi i skeletit, hartimi i testit, ngushtimi i gabimeve, dokumentacioni. Megjithatë, vendimi dhe përgjegjësia i mbetet inxhinierit. Çdo dalje duhet të kalojë tre shtresa kontrolli (përpilimi/statik, testimi, burimi). Shkrimi i kërkesave me kontekst dhe pastrimi i informacionit të fshehur janë dy zakone kryesore që do të përsërisim në secilën njësi të këtij moduli. Kur përdorni AI me disiplinë, fitoni shpejtësi; kur e përdorni pa disiplinë, ju bartni gabime dhe dobësi në prodhim.
Detyra e aplikimit
Zgjidhni një detyrë të vogël kodimi nga puna juaj ose nga një projekt imagjinar (p.sh. një funksion vërtetimi). Fillimisht shkruani një prompt të dobët dhe merrni rezultatin. Më pas aplikoni modelin e fuqishëm të shpejtë nga kjo njësi: shtoni gjuhën/versionin, kontratën hyrëse-dalëse, kufizimet dhe pritshmërinë e testimit. Vendosni dy printimet krah për krah dhe shkruani ndryshimin. Më pas përpiloni rezultatin e fortë dhe provojeni atë me të paktën tre raste të skajeve (format null, zero/negativ, i papritur) dhe vini re se çfarë gjeni në cilin test.
listë kontrolli
- [ ] Shtova gjuhën, versionin dhe kontratën hyrëse-dalëse në prompt.
- [ ] Unë shkrova "Mos e shpiku, më thuaj nëse nuk je i sigurt" dhe kufizimin e fushëveprimit.
- [ ] Kam përpiluar/drejtuar kodin, kam kontrolluar për paralajmërime statike.
- [ ] Kam testuar me të paktën tre kuti të skajeve.
- [ ] Kam verifikuar API-të e përdorura nga dokumentacioni zyrtar.
- [ ] Kam pastruar çdo kod/kredencial sekret ose kam përdorur mjet ndërmarrjeje.
- [ ] Unë konfirmova se vendimi për të vënë në prodhim dhe siguri i mbetet njeriut.