možnosti vpeljave umetne inteligence v proces razvoja ... · • applitools • zaznava...

21
DSI 2019 | 16. – 17. april 2019 Možnosti vpeljave umetne inteligence v proces razvoja programske opreme Mitja Gradišnik 1 , Sašo Karakatič 1 , Goran Mauša 2 , Tina Beranič 1 , Marjan Heričko 1 Univerza v Mariboru, Fakulteta za elektrotehniko, računalništvo in informatiko 1 Univerza v Reki, Fakulteta za inženirstvo 2 {mitja.gradisnik, saso.karakatic, tina.beranic, marjan.hericko}@um.si, [email protected]

Upload: others

Post on 27-Jun-2020

7 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Možnosti vpeljave umetne inteligence v proces razvoja ... · • Applitools • zaznava nepravilnosti na uporabniškemu vmesniku z emulacija človeških oči • zaznava napak v

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, [email protected]

Page 2: Možnosti vpeljave umetne inteligence v proces razvoja ... · • Applitools • zaznava nepravilnosti na uporabniškemu vmesniku z emulacija človeških oči • zaznava napak v

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

Page 3: Možnosti vpeljave umetne inteligence v proces razvoja ... · • Applitools • zaznava nepravilnosti na uporabniškemu vmesniku z emulacija človeških oči • zaznava napak v

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

Page 4: Možnosti vpeljave umetne inteligence v proces razvoja ... · • Applitools • zaznava nepravilnosti na uporabniškemu vmesniku z emulacija človeških oči • zaznava napak v

4 | 16. april 2019

Primerjava potrebnega truda (R. Goatham)

DSI 2019 | Možnosti vpeljave umetne inteligence v proces razvoja programske opreme

Page 5: Možnosti vpeljave umetne inteligence v proces razvoja ... · • Applitools • zaznava nepravilnosti na uporabniškemu vmesniku z emulacija človeških oči • zaznava napak v

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

Page 6: Možnosti vpeljave umetne inteligence v proces razvoja ... · • Applitools • zaznava nepravilnosti na uporabniškemu vmesniku z emulacija človeških oči • zaznava napak v

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

Page 7: Možnosti vpeljave umetne inteligence v proces razvoja ... · • Applitools • zaznava nepravilnosti na uporabniškemu vmesniku z emulacija človeških oči • zaznava napak v

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

Page 8: Možnosti vpeljave umetne inteligence v proces razvoja ... · • Applitools • zaznava nepravilnosti na uporabniškemu vmesniku z emulacija človeških oči • zaznava napak v

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

Page 9: Možnosti vpeljave umetne inteligence v proces razvoja ... · • Applitools • zaznava nepravilnosti na uporabniškemu vmesniku z emulacija človeških oči • zaznava napak v

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

Page 10: Možnosti vpeljave umetne inteligence v proces razvoja ... · • Applitools • zaznava nepravilnosti na uporabniškemu vmesniku z emulacija človeških oči • zaznava napak v

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

Page 11: Možnosti vpeljave umetne inteligence v proces razvoja ... · • Applitools • zaznava nepravilnosti na uporabniškemu vmesniku z emulacija človeških oči • zaznava napak v

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

Page 12: Možnosti vpeljave umetne inteligence v proces razvoja ... · • Applitools • zaznava nepravilnosti na uporabniškemu vmesniku z emulacija človeških oči • zaznava napak v

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

Page 13: Možnosti vpeljave umetne inteligence v proces razvoja ... · • Applitools • zaznava nepravilnosti na uporabniškemu vmesniku z emulacija človeških oči • zaznava napak v

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

Page 14: Možnosti vpeljave umetne inteligence v proces razvoja ... · • Applitools • zaznava nepravilnosti na uporabniškemu vmesniku z emulacija človeških oči • zaznava napak v

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

Page 15: Možnosti vpeljave umetne inteligence v proces razvoja ... · • Applitools • zaznava nepravilnosti na uporabniškemu vmesniku z emulacija človeških oči • zaznava napak v

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

Page 16: Možnosti vpeljave umetne inteligence v proces razvoja ... · • Applitools • zaznava nepravilnosti na uporabniškemu vmesniku z emulacija človeških oči • zaznava napak v

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

Page 17: Možnosti vpeljave umetne inteligence v proces razvoja ... · • Applitools • zaznava nepravilnosti na uporabniškemu vmesniku z emulacija človeških oči • zaznava napak v

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

Page 18: Možnosti vpeljave umetne inteligence v proces razvoja ... · • Applitools • zaznava nepravilnosti na uporabniškemu vmesniku z emulacija človeških oči • zaznava napak v

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

Page 19: Možnosti vpeljave umetne inteligence v proces razvoja ... · • Applitools • zaznava nepravilnosti na uporabniškemu vmesniku z emulacija človeških oči • zaznava napak v

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

Page 20: Možnosti vpeljave umetne inteligence v proces razvoja ... · • Applitools • zaznava nepravilnosti na uporabniškemu vmesniku z emulacija človeških oči • zaznava napak v

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

Page 21: Možnosti vpeljave umetne inteligence v proces razvoja ... · • Applitools • zaznava nepravilnosti na uporabniškemu vmesniku z emulacija človeških oči • zaznava napak v

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