Käyttöliittymän rakentaminen

Samankaltaiset tiedostot
Käyttöliittymän mallintaminen ja rakentaminen

Käyttöliittymän mallintaminen ja rakentaminen

KÄYTTÖLIITTYMÄSUUNNITTELU

KÄYTTÖLIITTYMÄSUUNNITTELU

Graafisen käyttöliittymän ohjelmointi

Käyttäjäkeskeinen vaatimusmäärittelytyö ketterän käyttöliittymäsuunnittelun haasteena

Interaktiivisten järjestelmien arkkitehtuuriratkaisu, jolla käyttöliittymä erotetaan sovelluslogiikasta.

XPages käyttö ja edut Jarkko Pietikäinen toimitusjohtaja, Netwell Oy

HELIA 1 (1) Outi Virkki Käyttöliittymät ja ohjelmiston suunnittelu :04

Ohjelmoinnin perusteet Y Python

Matopeli C#:lla. Aram Abdulla Hassan. Ammattiopisto Tavastia. Opinnäytetyö

Ohjelmistotekniikan menetelmät, UML

Visual Basic -sovelluskehitin Juha Vitikka


Interaktiivisten järjestelmien arkkitehtuuriratkaisu, jolla käyttöliittymä erotetaan sovelluslogiikasta.

Valikot ja työkalupalkit. 2008

Perusarkkitehtuurin ja vuorovaikutuksen mallintamisen perusteita.

Ohjelmistojen mallintaminen Unified Modeling Language (UML)


UML- mallinnus: Tilakaavio

Tilakaaviot, sekvenssikaaviot (Haikala, Märijärvi ss , )

Sisällys. JAVA-OHJELMOINTI Osa 7: Abstrakti luokka ja rajapinta. Abstraktin luokan idea. Abstrakti luokka ja metodi. Esimerkki

Unified Modeling Language

Copyright by Haikala. Ohjelmistotuotannon osa-alueet

Analyysi, dynaaminen mallintaminen, yhteistoimintakaavio ja sekvenssikaavio

Tällä harjoituskerralla on tarkoituksena harjoitella käyttötapaus-, luokka- ja tapahtumasekvenssikaavioiden luontia.

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena

HELIA 1 (14) Outi Virkki Käyttöliittymät ja ohjlmiston suunnittelu

Analyysi, dynaaminen mallintaminen, yhteistoimintakaavio ja sekvenssikaavio

Eclipse & WindowBuilder

1.3 Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä

Tapahtumapohjainen ohjelmointi

BlueJ ohjelman pitäisi löytyä Development valikon alta mikroluokkien koneista. Muissa koneissa BlueJ voi löytyä esim. omana ikonina työpöydältä

Kiertokysely. Sulautetut järjestelmät Luku 2 Sivu 1 (??)

1. Olio-ohjelmointi 1.1

T Käyttöliittymäsuunnittelu. T Vuorovaikutustekniikka

UML -mallinnus TILAKAAVIO

Ohjelmistojen mallinnus Ohjelmistoarkkitehtuuri Harri Laine 1

Osio 4: Graafinen käyttöliittymä

13/20: Kierrätys kannattaa koodaamisessakin

Toimilohkojen turvallisuus tulevaisuudessa

Web Services tietokantaohjelmoinnin perusteet

Jypelin käyttöohjeet» Ruutukentän luominen

C# Windows ohjelmointi perusopas

TIE Samuel Lahtinen. Lyhyt UML-opas. UML -pikaesittely

5. HelloWorld-ohjelma 5.1

SOA SIG SOA Tuotetoimittajan näkökulma

Ohjelmistojen mallintaminen olioiden elinkaaret - tilakaavio Harri Laine 1

Tapahtumapohjainen ohjelmointi. Juha Järvensivu 2007

Luokka- ja oliokaaviot

Kieliversiointityökalu Java-ohjelmistoon. Ohje

Ohjelmistotekniikka - Luento 2

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena

Tentissä ratkaistaan neljä ohjelmointitehtävää Javalla. Tehdään sähköisesti mikroluokan Windows-koneilla.

Ensimmäinen ios Applikaatio

DIPLOMITYÖ ARI KORHONEN

Pedacode Pikaopas. Java-kehitysympäristön pystyttäminen

C# ja.net. Juha Järvensivu 2007

Käyttötapausanalyysi ja testaus tsoft

IR-lämpömittarityypit

Graafisen käyttöliittymän ohjelmointi

Käyttöliittymäohjelmointi

Analyysi, staattinen mallintaminen, kohdealueen malli ja luokkakaavio

Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä

Ohjelmistojen mallintaminen Olioiden yhteistyö Harri Laine 1

Ohjelmistojen mallintaminen, arkkitehtuuria ja rajapintoja

SoberIT Ohjelmistoliiketoiminnan ja tuotannon laboratorio

Ohjelmoinnin peruskurssien laaja oppimäärä, kevät

Osio 4: Tietovirrat. Properties- eli ominaisuustiedostot Logger: lokitietojen käsittely

Studio ART Oy. Yritysesittely. Studio ART Oy. Kasöörintie Oulu p

Ohjelmistotekniikka - Luento 2 Jouni Lappalainen

UML - unified modeling language

1.3Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä

Ohjelmistotuotanto vs. muut insinööritieteet. (Usein näennäinen) luotettavuus ja edullisuus

Tyyppiluokat II konstruktoriluokat, funktionaaliset riippuvuudet. TIES341 Funktio-ohjelmointi 2 Kevät 2006

7. Product-line architectures

T Käyttöliittymäsuunnittelu T Vuorovaikutustekniikka

$%& & % ' %& %#&& ' ( ) * ( + (, + (, + -

UML:n yleiskatsaus. UML:n osat:

Ohjelmistojen mallintaminen

GTK+ ohjelmointi. Juha Järvensivu 2007

Dialogit. Juha Järvensivu 2008

Ohjelmistojen mallintaminen, kesä 2009

Pika-aloitusopas. Langaton IP-kamera. Tekninen tuki QG4_B

Viestinvälitysarkkitehtuurit

Android ohjelmointi Tunti 2. Käyttöliittymät ja resurssit

ELM GROUP 04. Teemu Laakso Henrik Talarmo

Kehyspohjainen ohjelmistokehitys

Osio 4: Graafinen käyttöliittymä

IR-lämpömittarityypit

812341A Olio-ohjelmointi, I Johdanto

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++?

Suunnitteluvaihe prosessissa

TIE Ohjelmistojen suunnittelu

VHDL-piirikuvaus ja simulointi Quartus II ja ModelSim Altera Edition -ohjelmilla

Suunnittelumalleja, MVC. Juha Järvensivu 2008

Suunnittelumallit (design patterns)

VisualStudio Pikaopas, osa 1: WEB sivujen suunnittelu

Johdatus ohjelmointiin

Tentissä ratkaistaan neljä ohjelmointitehtävää Javalla. Tehdään sähköisesti mikroluokan Windows-koneilla.

Transkriptio:

T-121.100 Johdatus käyttäjäkeskeiseen tuotekehitykseen Käyttöliittymän rakentaminen Teknillinen korkeakoulu Käyttöliittymät ja käytettävyys Marko.Nieminen@hut.fi

50% suunnitteluajasta menee käyttöliittymäsuunnitteluun 48% koodista kohdistuu käyttöliittymään Myers B.A. & Rosson M.B. in Survey on User interface programming in Human Factors in Computing Systems 1992. (SIGCHI 92)

Käyttöliittymäsuunnittelun konteksti http://www.acm.org/sigchi/cdg/figure_1.gif ACM SIGCHI Curricula for Human-Computer Interaction

Tällä luennolla Käyttöliittymän rakentamisen perusteena olevat vaatimusmäärittelyt ja mallit Erilaisia käyttöliittymätyyppejä, -tekniikoita Käyttöliittymäarkkitehtuurimalli Kehitysvälineistöä Esimerkkejä

Käyttöliittymän rakentamisen mallit (Constantine & Lockwood 2000)

Mallien ja mallinnuksen perusteita Relevanttien/oikeiden asioiden esiin nostaminen Asioiden järjestäminen tarkoituksenmukaisella tavalla Kommunikointi Tehokas kommunikointi Semiformaali tai formaali kuvaus käyttöliittymän toiminnasta Formaali mallintaminen HCI-alueella alkanut 1970-luvun loppupuolella (Phyllis Reisner 1977, 1981 (BNF); Embley 1978; Ledgard & Singer 1978)

UAN User Action Notation Ongelmia suorakäyttöliittymien mallintamisessa Hiiren liikuttaminen: ~; objekti: [obj] (esim [icon]) Hiiren painallus: Mv; hiiren nosto: M^ Korostus/valinta:! (esim icon!) ~[file] Mv file! ~[x,y]* outline(file) > ~ ~[trash] outline(file) > ~, trash! M^ erase(file), trash!

Oliopohjainen analyysi Soveltuu oliopohjaisiin kehitysympäristöihin Keskeiset käsitteet: objektit (objects) jaetaan kuuluviksi joko ongelma-alueeseen (problem space) tai toteutukseen (solution space) operaatiot (operations/methods) ominaisuudet (attributes/properties) Vaiheet: liittyvät sekä olioihin että operaatioihin Kuvataan järjestelmä sopivalla tarkkuudella vapaamuotoisesti, mutta kirjallisesti objektit=substantiivit; ominaisuudet=adjektiivit; operaatiot=verbit; operaatioiden ominaisuudet=adverbit

Oliopohjainen mallinnus: Skenaario Skenaariossa kuvataan, mitä käyttötilanteessa tapahtuu Skenaario voi kuvata nykyhetkeä tai tulevaisuutta, painotetusti sitä ehkä kuitenkin käytetään tulevaisuutta kuvattaessa Skenaario esitetään vapaamuotoisena tekstinä Skenaariosta voidaan johtaa tarvittavia asioita: tietorakenteet, tietovirta, vaadittavat objektit Skenaarion pohjalta voidaan tuottaa rakenteeltaan formaalimpia kuvauksia

Oliopohjainen analyysi Tuotetaan vapaamuotoinen kuvaus ratkaistavasta asiasta Alleviivataan kaikki substantiivit (=objektit). Alleviivataan kaikki adjektiivit (=ominaisuudet) Alleviivataan kaikki verbit (=operaatiot)

Skenaario: kokoonpanolinja Kokoonpanolinjan työntekijä saa eteensä paletilla olevat tuotteen peruskomponentit. Hänen tehtävänään on kokoonpanna tuote lisäämällä siihen tuotetilauksessa olevat osat. Työntekijä tunnistaa tilauksen paletilla olevasta viivakoodista, jonka hän lukee viivakoodinlukijalla.

Use Case > UML Unified Modeling Language 1990 luvulle tultaessa Jakobson kehitti use case - kuvaukset use case ja UML kuvausten pohjaksi tarvitaan usein skenaariot UML:n käyttöliittymää sivuavat mallit: use case, sequence, collaboration, class, operations, attributes, relationships taustalla mm. ER-mallit, workflow-kuvat, tietovirtakaaviot

Use case-diagrammi esimerkki ensisijaiset toimijat vasemmalla, toissijaiset toimijat oikealla tasot vasemmalta oikealle vain tavallinen käyttö, toimintahäiriöt muissa diagrammeissa use case diagrammi: tasot ja toimijat (Alexander, 2001) Mikael Marko Johnson Nieminen

Sequence Diagram : Student registration form registration manager math 101 math 101 section 1 1: fill in info 2: submit 3: add course(joe, math 01) 4: are you open? 6: add (joe) 5: are you open? 7: add (joe)

Navigaatiomalli Kertoo, miten vuorovaikutus välineen kanssa etenee Määrittelee kontekstit ja siirtymät, mutta pääasiassa järjestelmän näkökulmasta ristiriidat, silmukat, ikuiset loopit tunnistettavissa 1 Syötä kortti 5 Lopeta 2 Tunnusluku 3 Valitse toiminto 4 Nosta rahaa

State Transition Diagram Initialization do: Initialize course Cancel Canceled do: Notify registered students Add Student / Set count = 0 Cancel Cancel Add student[ count < 10 ] Closed do: Finalize course Open entry: Register student exit: Increment count [ count = 10 ]

Käyttöliittymäsuunnittelun käytännön tarpeita Siirrettävyys, alustariippumattomuus Uudelleenkäyttö Useiden käyttöliittymien toteuttaminen samaan sovellus- /palvelutarjontaan Joustavuus, mukauttaminen, kustomointi Sopivilla käyttöliittymäratkaisuilla -- vuorovaikutusrakenteilla ja käyttöliittymäarkkitehtuureilla -- em. asiat mahdollistuvat

MVC - Model View Controller Käytössä esim. Smalltalkissa, Javassa Jakaa sovelluksen kolmeen osaan: sovelluslogiikka (model) esitysmuoto (view) vuorovaikutuksen hallinta (controller) user input output V iew C ontroller Listeners M odel application

Tapahtumaohjattu vuorovaikutus (Events) Käyttöliittymän elementtien tilassa tapahtuvat muutokset laitetaan käyttöliittymäympäristössä tapahtumajonoon Tapahtuma julkistetaan kaikille käyttöliittymäympäristössä oleville ohjelmille Tapahtumasta kiinnostuneet ohjelmat käsittelevät sen omien sääntöjensä mukaisesti Tyypillinen vuorovaikutustekniikka graafisissa käyttöliittymäympäristöissä Esim. tapahtuma, kun painiketta painetaan

Käyttöliittymäympäristön tapahtuma event procedure TForm1.Button1Click(Sender: TObject); begin ShowMessage('Button #1 was pressed!'); end; event

Olio-ohjelmointi käyttöliittymässä (Lewis & Rieman 1993) Objektit, oliot (object) koodiblokkeja, eivät välttämättä näytöllä näkyviä Luokat, instanssit (class, instance) Aliluokat perivät käyttäytymisensä ja piirteensä (subclass, inheritance, behavior, characteristics) Objektit kommunikoivat viesteillä (messages) Käsittelijät (handlers) vastaanottavat viestit ja suorittavat toimenpiteet Resurssit: tekstitiedostoja tai erityisiä.res-tiedostoja

Objektit, luokat Yleensä voi käyttää varsin pitkälle valmiita luokkia Java AWT, VC++ MFC, Borland VCL käyttöliittymässä näkyvät elementit ovat objekteja, luokkia TMainMenu TLabel TButton TPanel TPopUpMenu TEdit

Esimerkki

RESURSSIT EICON/EPOC resurssit kirjoitetaan tekstitiedostoon ja käännetään resurssikääntäjällä myös erityisillä resurssityökaluilla muihin ympäristöihin, esim. WRT RESOURCE MENU_BAR r_example_main_menubar { titles= { MENU_TITLE { menu_pane=r_example_file_menu; txt="file"; }, MENU_TITLE { menu_pane=r_example_edit_menu; txt="edit"; }, MENU_TITLE { menu_pane=r_example_view_menu; txt="view"; }, MENU_TITLE { menu_pane=r_example_text_menu; txt="text"; }, MENU_TITLE { menu_pane=r_example_tools_menu; txt="tools"; } }; }

Määritellään ID:t enum TExampleMenuCommands { EExampleCmd1=100, EExampleCmd2=101, EExampleCmdDimItem=102, EExampleCmdExtra=103, EEikCmdAbout=104, EEikCmdSetIrDAInterval=105, EExampleCmdStartSession=106, EExampleCmdEndSession=107, EExampleCmdFullScreen=108 };

Resurssit ja koodi yhdistetään void CExampleAppUi::HandleCommandL(TInt acommand) { switch (acommand) { case EEikCmdClose: Exit(); break; case EExampleCmdStartSession: CmdDimItem(); ieikonenv->infomsg(r_example_data_transfer_start_message); break; case EExampleCmdEndSession: ieikonenv->infomsg(r_example_data_transfer_end_message); break; case EEikCmdSetIrDAInterval: IrDAIntervalDialog(); break; case EExampleCmdDimItem: CmdDimItem(); break; case EEikCmdExit: Exit(); break; case EEikCmdAbout: // ieikonenv->infomsg(" "); AboutDialog(); break; } }

Kirjoitetaan funktiot // Print out "About" Dialog void CExampleAppUi::AboutDialog() { // Create the dialog CEikDialog* dialog = new (ELeave) CEikDialog(); // Launch the dialog dialog->executeld(r_example_dialog); }

2 1

RAD/UIMS/UIDE-välineet vähentävät työtä Yleensä ei tarvita resurssien tuottamista manuaalisesti Valikot ja komponentit pudotetaan ikkunoihin l. lomakkeisiin (form) Myös tapahtumankäsittelijät l. handlerit syntyvät puoliautomaattisesti

Käyttöliittymäkehitysympäristöt Käyttöliittymäkehitysympäristöjen tarve tunnistettiin 1980- luvun alussa Seeheim-arkkitehtuurimalli (1984) tarjosi puitteet käyttöliittymäkehitysympäristöjen toteuttamiselle 1990-luvun alussa kehitysympäristöjä alkoi tulla markkinoille tutkimuspuolella mm. Garnet (Myers 1992), josta on sittemmin kehittynyt Amulet

Taustaa Käyttöliittymän toteuttaminen graafisiin käyttöliittymiin vaati aiemmin paljon työtä esim: Hello, World! -- Toteutus kompleksista graafiseen käyttöliittymäympäristöön; hallittava monenlaiset matalan tason asiat: ikkunointi, viestinvälitys, resurssit jne. Taitavat ohjelmoijat tuottavat käyttöliittymät yleiskäyttöisillä ohjelmointikielillä, esim C/C++; tämä suuntaus on kuitenkin vähenemässä erityisten käyttöliittymäkehitysympäristöjen kehittyessä

Kehitysvälineiden toiminnallisia piirteitä Käyttöliittymä erillään toiminnallisuudesta Mahdollisuus useiden käyttöliittymien toteuttamiseen Mahdollisuus alustariippumattomuuteen Käyttöliittymäarkkitehdin (työ)tehtävä mahdollinen (ei tiukkaa sidosta toiminnallisuuden koodaamiseen) Menetelmät ja kuvaustavat hahmottelu toimii myös määrittelytyönä; voivat toimia jopa osana sopimuksia vaatimusmäärittelyjen osalta helpottaa suunnitteluratkaisuista keskustelua Nopea prototyyppien hahmottelu ratkaisuja voidaan kokeilla jo alkuvaiheessa testataan-muokataan, testataan-muokataan, testataan-muokataan Ohjelmisto- ja prosessituki tuottavuus paranee, ylläpito helpottuu, tarkastukset helpompia jne.

Kehitysvälineiden teknisiä piirteitä Tärkeää nopea luonnostelu Visuaalinen käyttöliittymän suunnittelu suunnittelija näkee nopeasti hahmottelemansa käyttöliittymän ulkoasun, vrt. mallinnus välineen avulla usein tarjolla helpohko skriptikieli tai yleiskäyttöisempi ohjelmointikieli tapahtuma- tai oliopohjainen joissakin välineissä myös visuaalinen ohjelmointi

Käyttöliittymäkehittimiä Shneidermanin jako Software engineering tools: C/C++ w/toolkits/libraries Design tools: MacroMind Director, HyperCard, LabView, Visual Basic, Delphi, JBuilder Eri toimittajat esittelevät kehitysympäristönsä eri nimikkeillä: Rapid Prototyper User Interface Builder UIMS - User Interface Management System UIDE - User Interface Development Environment RAD - Rapid Application Developer

Tcl/Tk -- Tool Command Language Perusongelma: ohjelmointi on kuitenkin aika vaikeaa Ousterhaut (1994) kehitti Tcl:n yksinkertaiseksi skriptauskieleksi (http://home.pacbell.net/ouster/; http://tcl.activestate.com/) Tk on Tcl:n kanssa yhdessä toimiva komponenttikirjasto Tulkkaava ympäristö -- kirjoitetut käyttöliittymät (ja ohjelmat) toimivat kaikissa niissä ympäristöissä, joihin tulkkiympäristö on olemassa Aiemmin ei visuaalista kehitysympäristöä ( IDE ); käytössä WISH: windowing shell ; nyt Visual TCL

Tcl/Tk-käyttöliittymäesimerkki wm title. "Simple Tcl Example" label.msg -wraplength 3i -justify left -relief sunken -text \ "Hello, World" pack.msg -side top menu.menu -tearoff 0 set m.menu.file menu $m -tearoff 0 Luodaan.menu add cascade -label "File" \ käyttöliittymän -menu $m -underline 0 elementti, $m jonka add command Elementin -label "Exit" -command Ominaisuudet "destroy." tyyppi on. configure -menu nimi polkuineen.menu ja toimenpiteet label frame.buttons pack.buttons -side bottom -fill x -pady 2m button.buttons.quit -text OK -command "destroy." pack.buttons.quit -side left -expand 1

aboutbox -laajennus set m.menu.help menu $m -tearoff 0.menu add cascade -label "Help" -menu $m -underline 0 $m add command -label About" -command \ "aboutbox" -accelerator "<F1>" bind. <F1> aboutbox. configure -menu.menu... proc aboutbox {} { tk_messagebox -icon info -type ok \ -title about..." -message \ Simple Tcl/Tk User Interface" }

RAD/UIDE/UIMS-välineet mahdollistavat visuaalisen layout-suunnittelun object MainMenu1: TMainMenu Left = 8 Top = 8 object File1: TMenuItem Caption = '&File' object Exit1: TMenuItem Caption = 'E&xit' end end end object Label1: TLabel Left = 56 Top = 8 Width = 61 Height = 13 Caption = 'Hello, World!' end object Button1: TButton Left = 48 Top = 32 Width = 75 Height = 25 Caption = 'OK' TabOrder = 0 end

Esimerkki UIDE-kehitysympäristöstä (Borland Delphi)