TIE-20200 Ohjelmistojen suunnittelu Luento 2: protot sun muut 1
Tämän päivän ohjelmaa Ryhmääntymistä, viimeksi unohtui Työohje julkaistu! Elinaikajuttujen loppurutistusta, viipaloitumisasiaa Prototyypeistä sananen Qt ja QML lyhyesti, jos keretään Presemo? 2
Mikä on prototyyppi? 3
Mikä on prototyyppi? Kirjaimellisemmin alkuperäinen, ensimmäinen versio Teollinen tuotekehitys, ensimmäinen testiversio Luokittelua teollisuudessa: Ensimmäinen prototyyppi, konseptin toimivuuden tarkastaminen Toinen proto, valmistettavuuden tutkiminen Nollasarja, ensimmäinen tuotantosarja Prototyyppien käyttötarkoitus määrää myös mitä prototyyppi on 4
Prototyypit, mallikappaleet ja ohjelmistomaailma Mitä prototyypit ovat ohjelmistomaailmassa? 5
Prototyypit, mallikappaleet ja ohjelmistomaailma Epätäydellisiä versioita ohjelmasta Simuloidaan joitakin osa-alueita tuotteesta Tavoitteita: Asiakaspalaute Realistisemmat arviot resursseista, projektin kestosta jne. Frederick P. Brooks: The Mythical Man Month (1975), No Silver Bullet klassikkojutut puhuivat jo protoista 6
Prototyyppi? Erilaisia käyttötarkoituksia: Tekniikan testaaminen/uuteen tutustuminen Myyntiproto asiakkaalle sisäinen proto uudesta tuotteesta tutkimus Vertikaali: jonkun ominaisuuden tai osakokonaisuuden testaaminen läpileikkausmaisesti 7
Horisontaali prototyyppi ~Käyttöliittymäproto: tarkoitus esitellä ohjelman toimintaa/käyttöliittymää laajemmin, ei mennä syvälle toimintaan (tietokantaa, laskentaa, jne.) Käyttökohteita: Käyttäjäpalaute Demoversio, jolla saadaan tehtyä kaupat Saadaan paremmin arvioitua projektin kestoa/hintaa (tekniikkaan tutustuminen 8
Vertikaali prototyyppi Jonkun ominaisuuden, alijärjestelmän tai osakokonaisuuden testaaminen läpileikkausmaisesti. Hyötyjä: Toteutusvaatimuksien tarkentuminen Resurssitarpeet, paljonko liikennettä, tietoa (tietokannat) Selventää monimutkaisempia vaatimuksia, päästään oikeaan toiminnallisuuteen, voidaan varmistua että ollaan tekemässä oikeaa asiaa & mitä työ vaatii (osaamispuoli) 9
Erilaisia prototyyppejä Throw-away protot: Tärkeintä nopeus. Ei pitkää suunnittelua (vaatimukset/ohjelman rakenne), nopeasti toteuttamaan mock-up. Nopeasti palautetta asiakkaalta, päästään keskustelemaan paremmin vaatimuksista, muutokset vaatimuksiin eivät ongelma (proto menossa roskiin). Vaatimusten nopea tunnistaminen, simulointi, testaus 10
Erilaiset evolutionary prototyping lähestymistavat Tuotetaan uusia protoja/väliversioita tuotteesta ja annetaan asiakkaalle/käyttäjille testattavaksi, saadaan palautetta Tehdään ominaisuuksia lisäillen aina uusia Operational prototyping jne. 11
Prototyypit, plussaa Nopeasti töihin ja tekniikoihin Mahdolliset säästöt ajassa ja kuluissa, saadaan todelliset asiakasvaatimukset aiemmin ja paremmin Käyttäjien ja asiakkaiden parempi integrointi projektiin, halutut ominaisuudet ja käyttöliittymäpuoli ja toiminnallisuus paremmin sidottuna Tekniikkoihin tutustuminen, uusien asioiden nopea käyttöönotto tai hylkääminen 12
Prototyyppien ongelmia Työtä hukkaan, esim. jos myyntiä varten tehty eikä synny kauppoja Kiintyminen, protoa ei raaskita heittää pois vaan koitetaan tehdä oikeaa projektia päälle, (purkkaa purkan päälle) Rajalliset protot, osa vaatimuksista jää kokonaan huomaamatta Kustannukset Ajan tärvääminen, yritetään tehdä liian hienoa (tarkat aikarajat prototyypeille) 13
Prototyyppi kurssilla Käyttöliittymäproto Ei paperi-protoa, jotain koneella väkästeltyä 14
QML 15
QML Qt meta language / Modeling language, deklaratiivinen skriptikieli Helppo eriyttää käyttöliittymä ja sen logiikka varsinaisesta ohjelmakoodista Skriptitiedostoja ei käännetä, nopea protoilla, melko yksinkertaista vaihtaa käyttöliittymä JavaScript koodi voidaan kirjoittaa suoraan QML:n tiedostoon, tai lisätä importein JavaScript tiedostoja. Esim: import jstiedosto.js" as AnimationFunctions 16
QML Syntaksi muistuttaa CSS-tyylimäärittelyjä. Elementtejä (Elements), joilla ominaisuuksia (property) Property-arvo parit määrittelyissä (esim. x = 100) Rectangle { width: 200; height: 100; x: 100; y: 150; color: "yellow" Text { text: "Hei ohjsuun!"; font.pointsize: 20 } } 17
Lisää määrittelyistä Elementeille voi antaa tunnisteen (id) Propertyn arvo voi riippua toisesta propertystä (esim. id:n tai parent-suhteen perusteella Rectangle { visible: true id: another width: hellorect.width + 100 height: hellorect.height + 100 color: "#0500ff" z: 1 x: hellorect.x - 50 y: hellorect.y - 50 } Item { width: 300; height: 300; Rectangle { width: parent.width - 50; height: 100 color: "yellow" } } 18
QML:n tyypeistä lisää Ominaisuuksien määrittely, perustietotyypit, esim. int, string, real Tyyppiturvallisuus ( x = moi! virhe) http://qt-project.org/doc/qt-5/qtqml-typesystem-basictypes.html Qt Quick QML:n tietotyyppejä, esimerkiksi ruudulla näkyvät (Rectangle, Item, Image, Text), kontrollit (Button), tapahtumat (MouseEvent) http://qt-project.org/doc/qt-5/qtquick-qmltypereference.html 19
QML ja tilat Elementeillä oletuskonfiguraatio joka määritellään (yleensä) propertyillä Uusien tilojen määrittely states propertyllä, niissä määritellään erot oletuskonfiguraatioon 20
Tiloilla on propertyjä kuten muillakin elementeillä. changes name extend when states: State { name: "resized"; when: mousearea.pressed PropertyChanges { target: myrect; height: container.height } } 21
Linkkejä http://qt-project.org/doc/qt-5/qtquickindex.html http://qt-project.org/doc/qt- 5/qmlreference.html 22
Yhteenvetoa Viipaloituminen, kopiointi ja rakennuttajat Prototyyppien idea Vertikaali ja horisontaalit protot Prototyyppien eri käyttötarkoitukset Qt ja QML: perusasiat QML:stä Rakenne Elementit, propertyt Tilat Tulossa QML ja C++, Javascript & QML, jotain kevyttä animaatioista yms. 23