Tekniikka ja kehittäminen Minna Hillebrand Pauli Kujala

Samankaltaiset tiedostot
Ohjelmistojen mallintaminen. Luento 11, 7.12.

Ohjelmistojen ylläpito. JOT Minna Hillebrand

KIURU Tietotekniikan sovellusprojekti

Tietokantasovellus (4 op) - Web-sovellukset ja niiden toteutus

HOJ Haja-aiheita. Ville Leppänen. HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.1/10

Uutisjärjestelmä. Vaatimusmäärittely. Web-palvelujen kehittäminen. Versio 1.3

T Hypermediadokumentin laatiminen. Sisältö. Tavoitteet. Mitä on www-ohjelmointi? Arkkitehtuuri (yleisesti) Interaktiivisuuden keinot

Valppaan asennus- ja käyttöohje

Vaatimusmäärittely Ohjelma-ajanvälitys komponentti

P e d a c o d e ohjelmointikoulutus verkossa

Liite 1: KualiKSB skenaariot ja PoC tulokset. 1. Palvelun kehittäjän näkökulma. KualiKSB. Sivu 1. Tilanne Vaatimus Ongelma jos vaatimus ei toteudu

Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys

13/20: Kierrätys kannattaa koodaamisessakin

Tietojärjestelmä tuotantoympäristössä. Sovellusohjelmat Helsingin ammattikorkeakoulu Stadia / Tekniikka ja liikenne Vesa Ollikainen

Hintatiedotus ja tietojen välitys. Loppuraportti

INTINU13A6 Java sovellukset

Versionhallintaa. Versionhallinnan käyttöönotto SAS ympäristössä

ELM GROUP 04. Teemu Laakso Henrik Talarmo

Tämän lisäksi listataan ranskalaisin viivoin järjestelmän tarjoama toiminnallisuus:

Tapahtuipa Testaajalle...

Harjoituksen aiheena on tietokantapalvelimen asentaminen ja testaaminen. Asennetaan MySQL-tietokanta. Hieman linkkejä:

Automaattinen regressiotestaus ilman testitapauksia. Pekka Aho, VTT Matias Suarez, F-Secure

Case TUHTI. Projektin tunnuslukuja. ! Suuri perusjärjestelmäuudistus! Työt alkoivat kesällä ! Java luokkia n. 5000

Näin järjestän ohjelmointikurssin, vaikka en ole koskaan ohjelmoinut

Kurssin hallinta -työväline

WWW-sivut HTML-kielellä esitettyä hypertekstiaineistoa

Kehitysohje. ETL-työkalu. ExtraTerrestriaLs / Aureolis Oy

Uudelleenkäytön jako kahteen

TIETOKANNAT: MYSQL & POSTGRESQL Seminaarityö

ecome Markkinoiden kehittynein julkaisujärjestelmä

Jyväskylän yliopisto, Sovellusprojektien kokoustila AgC Alasalmi Teija (puheenjohtaja)

Written by Administrator Monday, 05 September :14 - Last Updated Thursday, 23 February :36

Lohtu-projekti. Testaussuunnitelma

LINUX-HARJOITUS, MYSQL

Ylläpitodokumentti. Ohjelmistotuotantoprojektin tietojärjestelmä OhtuTie

Järjestelmäarkkitehtuuri (TK081702) Hajautettu tietokanta. Hajautuksen hyötyjä

Versio Päiväys Tekijä Kuvaus Tikkanen varsinainen versio

labs.kirjastot.fi Antti Pakarinen Timo Tuominen

Testaus Korppi-kehityksessä. Panu Suominen THK / JYU

HAKURATKAISUN ANATOMIA - KURKISTUS PELLIN ALLE

Yksikkötestaus. import org.junit.test; public class LaskinTest public void testlaskimenluonti() { Laskin laskin = new Laskin(); } }

8/20: Luokat, oliot ja APIt

Kiuru-sovelluksen arkkitehtuuri

Työkalut ohjelmistokehityksen tukena

T Testiraportti - järjestelmätestaus

3 Verkkopalveluarkkitehtuuri

Käyttöjärjestelmät. 1pJÄKÄ1 KÄYTTÖJÄRJESTELMÄN HALLINTA, 12 OSP

Ylläpitodokumentti. Oppimistavoitteiden hallintajärjestelmä harri

Koskelo-Sovellusprojekti. Vaatimusmäärittely

Helia Ohjelmointitaito Tuomas Kaipainen Mermit Business Applications Oy Mermit Business Applications

Sisällys. 6. Metodit. Oliot viestivät metodeja kutsuen. Oliot viestivät metodeja kutsuen

Tapahtumakalenteri & Jäsentietojärjestelmä Ylläpito

Testaussuunnitelma Labra

Ylläpito. Ylläpito. Ylläpidon lajeja Ohjelmistotuotanto, syksy 1998 Ylläpito

TIE 280. Kyyhky PROJEKTIPALAVERI, PÖYTÄKIRJA. Aika: Keskiviikko klo

IIO10200 Tietokantaohjelmointi (4 op)

Sisäänrakennettu tietosuoja ja ohjelmistokehitys

TIE Ohjelmistojen testaus Harjoitustyön esittely osa 2: Vaiheet 3 & 4. Antti Jääskeläinen Matti Vuori

TIE Ohjelmistojen testaus Harjoitustyön esittely osa 2: Vaiheet 3 & 4. Antti Jääskeläinen Matti Vuori

Testauksen tuki nopealle tuotekehitykselle. Antti Jääskeläinen Matti Vuori

4. Luokan testaus ja käyttö olion kautta 4.1

L models. Testisuunnitelma. Ryhmä Rajoitteiset

opiskelun suunnittelujärjestelmä, kurki ja ilmo käyttävät kaikki samaa tietokantaa, ja uusi järjestelmä tulee osaksi tätä.

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

Integrointi. Ohjelmistotekniikka kevät 2003

Oleelliset vaikeudet OT:ssa 1/2

Maha Eurosystem jarrulaskentaohjelman asennusohje versio

Laaturaportti [iteraatio 2] Ryhmä 14

Käyttöohje. KotKot. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Maiju Mykkänen Susanna Sällinen

IIO10200 TIETOKANTAOHJELMOINTI (4 OP) OPINTOJAKSON ESITTELY JOUNI HUOTARI

T Projektikatselmus

KYMENLAAKSON AMMATTIKORKEAKOULU Tietotekniikan koulutusohjelma / Tietoverkkotekniikka. Joni Korjala APACHE WWW-PALVELIN Seminaarityö 2012

Testidatan generointi

Liite 1: OpenESB skenaariot ja PoC tulokset. 1. Palvelun kehittäjän näkökulma. OpenESB. Sivu 1

VYPEdit verkkosivualusta SVY-toimijoille

Ylläpitodokumentti NJC2. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Oliot viestivät metodeja kutsuen

JReleaser Yksikkötestaus ja JUnit. Mikko Mäkelä

Projektisuunnitelma. KotKot. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

KIURU Tietotekniikan sovellusprojekti

Ylläpito. Ylläpidon lajeja

Testausdokumentti. Kivireki. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Software engineering

Ylläpitodokumentti Mooan

SEPA diary. Dokumentti: SEPA_diary_PK_HS.doc Päiväys: Projekti: AgileElephant Versio: V0.3

Asennusohje. Sahara-ryhmä. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Avointen ohjelmistojen käyttö ohjelmistokehityksessä

Luku 8 Rakennusvaihe. Detailed Design. Programming. Moduulisuunnittelu. Ohjelmointi

Johdatus edistyneeseen web-kehitykseen. Juuso Lappalainen

Ylläpito-ohje. Matematiikan oppifoorumi. Carl Johansson Jukka Kariola Outi Marttila Helena Venäläinen Sampsa Virtanen. Ohjaaja.

P e d a c o d e ohjelmointikoulutus verkossa

Olio-ohjelmointi Javalla

Matematiikan oppifoorumi Projektisuunnitelma

TIE Ohjelmistojen testaus 2015 Harjoitustyö Vaiheet 1 ja 2. Antti Jääskeläinen Matti Vuori

TIE Ohjelmistojen testaus 2015 Harjoitustyö Vaihe 3. Antti Jääskeläinen Matti Vuori

Liite 1: ServiceMix skenaariot ja PoC tulokset 1. Palvelun kehittäjän näkökulma

T Projektikatselmus

Ohjelmiston testaus ja laatu. Testaustasot

Transkriptio:

Korppi Tekniikka ja kehittäminen 25.10.2004 Minna Hillebrand Pauli Kujala Korppi www-järjestelmä https://korppi.jyu.fi Nykyversiota aloitettu syksyllä 2000. Kehittäjiä 4-12, koodirivejä ainakin 255 000. palvelin asiakas

Tekniikka (palvelin) RedHat Apache HTTP-pyynnöt Tomcat Java Server Pages Java-luokat Valmiit kirjastot PostgreSQL palvelin Lisäksi shell-skriptejä, croneja Asiakaspään vaatimukset WWW-selain (https) Evästeet (cookie) ja istunto (sessio, palvelimella) selainriippumaton CSS-tyylit, selainten ominaisuudet, oma tyylitiedosto, osien piilottaminen asiakas

Kapasiteetti 2001 syksy 2002 alku 2 kpl 500 MHz, 256 MB, 2 kpl 18 Gt noin 40 yhtäaikaista käyttäjää, rekisteröityneitä lähinnä ittdk:sta 2002 alku 2004 alku 2 kpl 1200 MHz, 1024 MB, 2 kpl 18 Gt noin 100 yhtäaikaista käyttäjää, rekisteröityneitä 12 000 kielikeskus, avoin yo 2004 alku 2 x 2 kpl 2133 MHz, 2048 MB, 4 kpl 36 Gt ainakin 250 käyttäjää, rekisteröityneitä reilut 27 000 kaikki opiskelijat Käyttöaste Jatkuvasti ainakin 20 kirjautunutta. Lokia generoituu gigan verran normaalikäytössä! http://korppi.jyu.fi/statistics Nykyinen käyttökuorma kestetään. Tosin syyskuun alkupäivinä oli pieniä ongelmia.

Parempia arkkitehtuureja? Palvelimen kuorman hajauttaminen. palvelin asiakas Vielä parempia arkkitehtuureja? Palvelimen kuorman hajauttaminen. tietokantapalvelin tietokantapalvelin palvelin asiakas

Muita mahdollisia/tulevia ratkaisuja Tietokannan hajautus usealle palvelimelle. Vaikeaa, synkronointi on ongelma Osittainen hajautus? Toteutustekniikatkin tuottavat haasteita hajautukseen. Lokin hajauttaminen Suurten tiedostojen käsittely hankalaa, aiheuttaa ongelmia jo Javan buffereissakin. Loki joka tunnille? Kehittämisstrategia 1. Tehdään mitä pyydetään. 2.* Tehdään paremmin. * valinnainen, tehdään pyynnöstä

Tavallinen tarina Tietokantahaku Aloitetaan kyselyllä, joka tekee tehtävänsä. Joku valittaa hitaudesta. Optimoidaan SQL-kyselyä. Lisätään kantaan indeksejä. Muokataan tulosjoukon käsittelyä. Ongelmia Hitautta ei havaita pienellä datamäärällä. Alikyselyissä IN vs. EXISTS riippuu mm. datamäärästä. Tulosjoukon modifiointimahdollisuus teknisesti nuori. Prosessimalli Code and Fix, vai olisiko sittenkin iteratiivista? Dokumentaatio olematonta. + Saadaan tuloksia - Testaus puutteellista

Perustelut Asiakkaita on paljon. Paljon toiveita. Muutokset toimitettava nopeasti ( maksaja määrää ). Palautetta tulee paljon. Sähköpostia noin 50 viestiä / päivä. Syksyllä 150-200 viestiä / päivä parin-kolmen viikon ajan. Virheraportteja harvoin, kerran kahdessa viikossa. Kannustusta kerran kahdessa kuussa. Nopea toimitus on ainoa valtti. Korppi ei ole vakiintunut järjestelmä. Kilpailijoita on. Lisää perusteluita Korppia kehutaan muunneltavaksi. Sovellusprojekteina tuotetaan uusia moduuleita. Moduulit pyritään integroimaan, mutta (järkevät) keinot nähdään vasta myöhemmin. Ei resursseja dokumentaation manuaaliseen ylläpitoon. Hyvä koodi on yhtä nopeaa kirjoittaa kuin huono koodi. Hyvän koodin keksimiseen menee paljon kauemmin. Huono koodi muuntuu paremmaksi 2-vaiheessa.

Kehitysympäristö Pyritään tuotantoa vastaavaan kokoonpanoon. Kehityspalvelin, testauspalvelin ja esikorppi (tuotannossa) Sovelluskehittimissä myös omat palvelimet. JBuilder, NetBeans Kehitystä voidaan kuitenkin tehdä tekstieditoreilla (-2004). Muutamia tuotantotietokannan kopioita. Kehittimien merkitys Sovelluskehittimenä JBuilder/NetBeans (2002-) Raaka koodaus. Toiminnallisuuden testaus (lokaali Tomcat). Versionhallintana CVS (2002-) Integroitu sovelluskehittimiin, sekä komentoriviltä. Pääasiallinen jakelukanava ja koodin synkronointi. Tehtävien hallinnointiin Bugzilla (2003-) Bugit ja kehitysideat. Tehtävien jako ja vaiheen seuranta.

Koodin matka ideasta käyttöön 1. Oma kehitysympäristö: kehitys ja testaus. 2. CVS: koodi muiden saataville ja hyödynnettäväksi. 3. Kehityskorppi. 4. Testikorppi: myös muut kehittäjät testaavat. Bugzillan bugit kuitataan toteutetuiksi yleensä tämän vaiheen jälkeen. 5. Esikorppi: tuotantokäytössä rajatulla käyttäjäjoukolla. 6. Tuotantokorppi. Prosessin pullonkaulat Testauksen vähyys on suurin ongelma. Isossa järjestelmässä pienikin muutos voi vaikuttaa yllättäviin paikkoihin. Onko kaikki mahdollinen jo testattu? Testaajia ei ole! Kehittäjä ei ole testaaja. Automaattinen testaaminen hankalaa. Historian painolasti Esim. muutokset parametrilistoissa. Vanha toiminnallisuus säilytettävä.

Lisää pullonkauloja Kommunikointi ja priorisointi. Päällekkäinen työ? Priorisointi kehittäjän mielen mukaan. Yhteinen tietokanta. Muutokset tietokannan rakenteessa täytyy olla koodin suhteen synkronissa. Korppi isolla koolla Kehittäjätkään eivät enää tunne koko järjestelmää. Päällekkäiset toiminnallisuudet. Ristiriitaiset toiminnallisuudet. Tietokannan tauluja paljon. Oppimisen mahdottomuus. Saman taulun kuormittaminen moneen merkitykseen. Päivittäminen vaikeaa. Monella kehittäjällä koodi elää jatkuvasti. Milloin riittävän vakaa päivitykseen? Tilanteen jäädyttäminen.

Korppi uudelle kehittäjälle Paljon opiskeltavaa. Tekniikka + työkalut. Luokkahierarkia (paketteja 16). Luokkaviidakko. Asenne. Ei voi tehdä uutta, vaan kaikki tehdään olemassa olevan päälle. Vanhaa ei saa rikkoa! Yritäpäs testata n+1 paikkaa joiden olemassa olosta et edes tiedä Uutta saa ja kannattaa kuitenkin aina kokeilla. Best Practices asioita joita luultiin hyviksi ratkaisuiksi Sivupyyntöön tallennettu tietokantayhteys. Käyttäjälle taataan tietokantayhteys. Käytännössä rajattu määrä yhteyksiä. Joskus tarvetta sisäkkäisille kyselyille.

Best Practices Autonumber Tietokantojen SQL92-standardissa ei ollut juoksevaa integer-kenttää (automaattista avainkenttää), joten tehtiin itse. Taulu, joka ylläpitää maksimiarvoa. Varaa tietokannasta seuraava vapaa arvo: katso viimeinen, ja päivitä taulua. Tietokannan triggerit lisäävät uusia rivejä. Maksimiarvojen taulua päivitetään tietokannan sisältä, mikä ohittaa Javan lukitukset. Hajautus Joudutaanko määräämään int-alueita? Best Practices Oikeudet ja oikeuksien hallinta Alkuun riitti opiskelija, opettaja ja sihteeri. Käyttäjään liittyy tieto organisaatiosta, ja organisaatioilla on hierarkinen rakenne. Näiden perusteella saadaan karkea rajaus. Opiskelija ja/tai opettaja monessa tiedekunnassa? Hätäratkaisuna erillinen opiskelija- ja opettajatunnus, tai monta tunnusta? Kuka ylläpitää käyttäjätasoja? Sihteerit höveleitä, eivätkä halua lisää työtä. Mahdollisesti ratkaisuna ryhmäpohjainen oikeusjako.

Best Practices Käyttöliittymän ja toiminnallisuuden erottaminen toisistaan. JSP on käyttöliittymää ja Java-luokat toiminnallisuutta varten. Aiemmin JSP-sivut olivat pitkiä ja Java-luokat lyhyitä (ei juurikaan toimintaa). Tietokannan käsittely oli JSP:ssä. Nyt JSP-sivu on pahimmillaan class.showstuff() Menty yli pyrkimyksessä komponenttimaisuuteen. Best Practices Olio pitää huolen omasta tilastaan. Tietokannan tietoa alustetaan hakutuloksesta olioksi. Usein olion alustaminen vaatii useiden kyselyiden tuloksia; esimerkiksi kurssille perustiedot, opettajat, opetusryhmät Olion luominen hidasta! Alustetaan tarpeettomia tietoja. Konstruktoreille SMALL_MODE parametreja.

Uloskirjautuminen Olet kirjautunut ulos Korppi-järjestelmästä. Tervetuloa takaisin. Korppi-FAQ: nyt on hyvä hetki kysyä.