Možnosti vpeljave umetne inteligence v proces razvoja ... · • Applitools • zaznava nepravilnosti na uporabniškemu vmesniku z emulacija človeških oči • zaznava napak v
Post on 27-Jun-2020
6 Views
Preview:
Transcript
DSI 2019 | 16. – 17. april 2019
Možnosti vpeljave umetne inteligence v proces razvoja programske opreme
Mitja Gradišnik1, Sašo Karakatič1, Goran Mauša2, Tina Beranič1, Marjan Heričko1
Univerza v Mariboru, Fakulteta za elektrotehniko, računalništvo in informatiko1
Univerza v Reki, Fakulteta za inženirstvo2
{mitja.gradisnik, saso.karakatic, tina.beranic, marjan.hericko}@um.si, goran.mausa@riteh.hr
DSI 2019 | Možnosti vpeljave umetne inteligence v proces razvoja programske opreme 2 | 16. april 2019
Izzivi v procesu digitalne preobrazbe
Zakaj digitalna preobrazba? ohranitev konkurenčne prednosti
zmožnost dolgoročnega razvoja podjetja
Učinkovito izkoriščanje množice razpoložljivih podatkov, da lažje razumemo:
potrebe strank
obnašanje konkurence
aktualne trende na trgu
Močna odvisnost od podpornih IT projektov npr. brezpapirnega poslovanja, novi kanali trženja storitev in
produktov
3 | 16. april 2019
Kako uspešni so IT projekti?
velike razlike med uspešnostjo projektov inženirskih vej
IT projekti med najmanj uspešnimi
težave zaznane pri 50% IT projektov (Florentine, 2017)
prekoračitev časa razvoja
prekoračitev proračunskih sredstev
le delno izpolnjeni zadani projektni cilji
Kaj je razlog za takšna odstopanja v uspešnosti?
zrelost področja, pristopi, zahteve naročnikov,…?
Uspešnost IT projektov
DSI 2019 | Možnosti vpeljave umetne inteligence v proces razvoja programske opreme
4 | 16. april 2019
Primerjava potrebnega truda (R. Goatham)
DSI 2019 | Možnosti vpeljave umetne inteligence v proces razvoja programske opreme
5 | 16. april 2019
Potreba po skupina dobro izurjenih strokovnjakov:
• izurjeni za področje programskega inženirstva
• analitično razmišljanje
• zmožnost učinkovitega reševanja problema
Učinkovita razvojna orodja:
• problem #1: koncept orodij iz časov jezikov FORTRAN in LISP
• problem #2: avtomatizirati zgolj intelektualno enostavna opravila
• problem #3: pravila strogo vkodirana in posledično obnašanje v orodja
Kje najdemo prostor za optimizacijo?
Kaj potrebujemo za razvoj programske opreme
DSI 2019 | Možnosti vpeljave umetne inteligence v proces razvoja programske opreme
6 | 16. april 2019
Ključ uspeha v uporabi ustreznih orodij:
primer: orodja v gradbeništvu
gradimo namenska orodja
ciljamo na najobsežnejša opravila
Kako povečati učinkovitost in produktivnost?
DSI 2019 | Možnosti vpeljave umetne inteligence v proces razvoja programske opreme
Kakšne orodja pričakujemo v IT?
• direktna razbremenitev razvijalcev
• avtomatizacija kompleksnih opravil
• avtonomnost orodij
7 | 16. april 2019
Za izgradnjo učinkovitih orodij je potrebno kombinirati različne pristope!
Razpoložljivi pristopi umetne inteligence
Aplikacije umetne inteligence
tehnike predstavitve znanja in sklepanja
(pogoni pravil)
tehnike razpoznave slik
tehnike razpoznave govora
avtomatizirana obdelava naravnega jezika
(NLP)
Tehnike umetne inteligence
stojno učenje
nevronske mreže
globoko strojno učenje
odločitvena drevesa
gručenje (angl. clustering)
evolucijski pristopi k strojnemu učenju
asociativna pravila
DSI 2019 | Možnosti vpeljave umetne inteligence v proces razvoja programske opreme
8 | 16. april 2019
Proces izgradnje na AI temelječih orodij
DSI 2019 | Možnosti vpeljave umetne inteligence v proces razvoja programske opreme
Pristop izgradnje:
• temelji na podatkih
(vhodni, rešitev problema)
• strategijo reševanja
prepustimo izbrani
metodi
9 | 16. april 2019
Strukturiran skupek aktivnosti
• (poslovne) zahteve naročnikov -> delujoča programska
rešitev
• faze v razvojnem ciklu:
• analiza zahtev
• načrtovanje rešitve
• razvoj rešitve
• testiranje
• nameščanje
• vzdrževanje
Proces razvoja programske opreme
DSI 2019 | Možnosti vpeljave umetne inteligence v proces razvoja programske opreme
10 | 16. april 2019
Možnosti vpeljave umetne inteligence v proces razvoja programske opreme
DSI 2019 | Možnosti vpeljave umetne inteligence v proces razvoja programske opreme
11 | 16. april 2019
Podpora analizi in zajemu zahtev
Proces analize zahtev:
• lahko traja več mesecev ali celo let
• cilj skrajšati, poenostaviti in proces narediti natančnejšega
• možnosti vpeljave obdelave naravnega jezika
Konkretne rešitve
• prototipi, ki iz opisa sistema v naravnem jeziku izluščijo zahteve in jih ustrezno klasificira.
• Bookmark AiDA (AI design assistent) – razume uporabnikove želje in jih pretvori v prototip prilagojene spletne rešitve – cilj spletna stran v 2 minutah
DSI 2019 | Možnosti vpeljave umetne inteligence v proces razvoja programske opreme
12 | 16. april 2019
Podpora načrtovanju in implementaciji rešitev
Osrednja faza razvoja programske opreme
• pretvorba zahtev naročnikov v izvršljivo programsko kode
• miselno zahteven proces
Razpoložljiva orodja:
• Pixel2Code – z uporabo nevronskih mrež pretvori sliko uporabniškega
vmesnika v izvršljivo programsko kodo (Android in HTML+CSS)
• Sketch2Code – z uporabo nevronskih mrež pretvori skico uporabniškega
vmesnika v HTML+CSS programsko kode.
• Kaj se skriva prod pokrovom: troslojne sistem umetne inteligence, ki se uči iz
repozitorijev programske kode.
DSI 2019 | Možnosti vpeljave umetne inteligence v proces razvoja programske opreme
13 | 16. april 2019
Podpora načrtovanju in implementaciji rešitev
Primer: rešitev Sketch2Code
DSI 2019 | Možnosti vpeljave umetne inteligence v proces razvoja programske opreme
14 | 16. april 2019
Podpora načrtovanju in implementaciji rešitev
XHTML:
• PSD v HTML5
• PSD v (X)HTML CSS
• PSD v e-novice
CMS:
• PSD v Wordpress
• PDS to Drupal
• PSD v Joomla
DSI 2019 | Možnosti vpeljave umetne inteligence v proces razvoja programske opreme
Primer: rešitev Pixel2Code
15 | 16. april 2019
Podpora načrtovanju in implementaciji rešitev
Razumevanje programske kode:
• komentarji sprememb kode – sistem za avtomatsko generiranje komentarjev
spremembe programske kode:
• učenje na javnih repozitorijih programske kode (npr. GitHub)
• opisovanje programske kode – generiranje krajšega opisa programske
kode
• opisi pomembni za pripravo ustrezne dokumentacije sistema
• uporaba modeliranja tematik in n-gramov
• prototip s podporo jezikoma C# in SQL
DSI 2019 | Možnosti vpeljave umetne inteligence v proces razvoja programske opreme
16 | 16. april 2019
Podpora načrtovanju in implementaciji rešitev
Pametni asistenti razvijalca:
Naloga pametnega asistenta:
• neprestano spremljanje razvijalca pri kodiranju
• priporočila glede programske kode (priporočila, prakse, vzorci)
• primeri programske kode v realnem času
Primeri obstoječih rešitev:
• Codota – pametni asistent za programski jezik Java
• Kite – pametni asistent za programski jezik Python
DSI 2019 | Možnosti vpeljave umetne inteligence v proces razvoja programske opreme
17 | 16. april 2019
Podpora načrtovanju in implementaciji rešitev
DSI 2019 | Možnosti vpeljave umetne inteligence v proces razvoja programske opreme
Primer: rešitev Codota for Java
18 | 16. april 2019
Podpora načrtovanju in implementaciji rešitev
Iskanje po kodi v naravnem jeziku:
Github Semantic Search
• dvojno kodiranje v vektorsko obliko
• iskanje na podlagi primerjave obeh
vektorjev
• mogoče najti programsko kodo, ki
najbolje ustreza iskalnemu nizu
DSI 2019 | Možnosti vpeljave umetne inteligence v proces razvoja programske opreme
19 | 16. april 2019
Podpora testiranju programskih rešitev
Testiranje programskih rešitev:• ključno za zagotavljanje ustrezne kakovosti programskih rešitev
• zmožnosti obstoječih rešitev:• generiranje testnih primerov
• detekcija robnih primerov
• anomalije na uporabniškem vmesniku
Primeri konkretnih rešitev: • Functionize – avtomatsko generiranje tesnih primerov na podlagi tesnega
plana
• Applitools• zaznava nepravilnosti na uporabniškemu vmesniku z emulacija človeških oči
• zaznava napak v postavitvi pogleda do sedaj relativno trd oreh
DSI 2019 | Možnosti vpeljave umetne inteligence v proces razvoja programske opreme
20 | 16. april 2019
Podpora nameščanju in vzdrževanju programskih rešitev
Izzivi kompleksnosti sistemov v produkcijskem okolju:
• nameščanje programskih rešitev
• spremljanje pravilnosti delovanja programske rešitve
Orodje SapFix (Facebook)
• cilj skrajšati čas ustvarjanja popravkov napak
• avtomatsko testiranje in razhroščevanje programske kode
• generiranje predlogov popravkov na podlagi preteklih sprememb v
programski kodi
DSI 2019 | Možnosti vpeljave umetne inteligence v proces razvoja programske opreme
Zaključek
21 | 16. april 2019
Orodja podprta z AI
• razbremenitev razvijalcev
• avtomatizacije intelektualno zahtevnih opravil
• napredna avtomatizacija
• avtonomnost
• širok spekter aktivnosti razvoja programske opreme
• nekatera orodja v prototipni druga že v produkcijski fazi
DSI 2019 | Možnosti vpeljave umetne inteligence v proces razvoja programske opreme
top related