aha-projekti asiakashallinnan tietojärjestelmä

Post on 13-Jan-2016

36 Views

Category:

Documents

2 Downloads

Preview:

Click to see full reader

DESCRIPTION

AHA-Projekti Asiakashallinnan tietojärjestelmä. Projektiryhmä. Vuorela Maaret, projektipäällikkö Remes Hanne, suunnittelupäällikkö Rissa Timo, ohjelmistopäällikkö Saloila Heidi, laatu- ja prosessipäällikkö Tammelin Jarno, tukipalvelupäällikkö. Sisällysluettelo. Sovelluksen esittely - PowerPoint PPT Presentation

TRANSCRIPT

AHA-Projekti

Asiakashallinnan tietojärjestelmä

Projektiryhmä

Vuorela Maaret, projektipäällikkö Remes Hanne, suunnittelupäällikkö Rissa Timo, ohjelmistopäällikkö Saloila Heidi, laatu- ja prosessipäällikkö Tammelin Jarno, tukipalvelupäällikkö

Sisällysluettelo

Sovelluksen esittely Sovelluksen rakenne ja koodaus Asiakkaan käsittelyn testaus Toimipisteen lisäyksen suunnittelu

Käyttöliittymä, luokkakaavio, relaatiokaavio, käyttötapauskuvaus

Paketointi Toimipisteen lisäyksen testaus Projektiryhmän kokemuksia

Sovelluksen esitys

Verkkokäyttöliittymä IE & vastaavat Sovelluksen toiminnan esitys

Aloitussivun sisältö Lisäys Haku Muutos

Järjestelmän rakenne

Web -pohjainen järjestelmä Käytetään Front Controller –

suunnittelumallia (Desing Pattern) Java Servlet toimii järjestelmän ohjaavana

kontrollerina MVC Model 2 –mallin mukainen 3 –tasoarkkitehtuuri

MVC Model 2 - malli

Lähde: Käyttöliittymän totetuttaminen

Jukka Juslin / luento

Paketit

3 –tasoarkkitehtuurin mukainen pakettirakenne

Asiakas

Yhteyshenkilo

Osoite

MaksuehtoAsiakasryhma

AsiakasOhjaus

LIIKETOIMINTA

Kontrolleri

SERVLET TIETOKANTA

TietokantaOhjaus

Tietokanta

Tarkistus

VirheAsiakas

VirheOsoite

VirheYh

TARKISTUS

Maksuhairio

ToimitusehtoToimitustapa

ToimipisteVirheToimipiste

Lähdekoodin esittely

Lähdekoodi on tehty helppoa ylläpitoa silmällä pitäen

Nimeämissääntöjen mukainen Runsas kommentointi helpottamaan ylläpitoa

ja uudelleenkäytettävyyttä Runsas tulostus lokiin seurantaa varten

Esimerkkejä lähdekoodista – Nimeämissäännöt

/***Metodi, joka käsittelee kaikki GET-tyyppiset pyynnöt. * Metodi käyttää seuraavia parametrejä:* create Parametrillä tunnistetaan luodaanko uutta asiakasta.* customer Asiakasnumero.* action Käyttöliittymässä olevia toimintoja ohjaava parametri.* kirjautuminen Ohjelmiston kirjautumisen parametri. Ei käytössä tällä hetkellä.* muokkaa Toimii muokkauksen tunnistavana parametrinä, jos käyttöliittymässä valittu tietojen muokkaus.* paluu Toimii parametrinä jolla tunnistetaan palataanko käyttöliittymässä edelliseen sivuun.**@param request*@param response*@throws ServletException*@throws IOException*/ public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

HttpSession session = request.getSession(); System.out.println("Kontrolleri.doGet() - toiminta aloitetaan");

Esimerkkejä lähdekoodista - kommentointi

// suoritaPaivitys-metodia varten määritetään paluuarvo int tarkistus = 1; // Default 1 = ok. Jos arvo on jotain muuta niin virheellinen tarkistus int lisatytRivit = 0; // Käsiteteltyjen rivien määrä konsoliin tulostusta varten

//tehdään lisäys tietokantaan try { kanta.avaa(); kanta.aloitaTransaktio(); // Tehdään lisäykset tietokantaan. Jos kaikki lisäykset onnistuvat, tehdään commit(), muuten rollback(). if(tarkistus == 1) { // Aloitetaan tietojen lisäys // Lisätään asiakkaan käyntiosoite (pakollinen) tarkistus = kanta.suoritaPaivitys(sqlAsk); if(tarkistus == 1) { lisatytRivit++; // Lisää as.osoiteen lisäyksen System.out.println("TietokantaOhjaus.luoAsiakas() - lisätty asiakkaan käyntiosoite. Lisätyt rivit

yhteensä: " +lisatytRivit); // Lisätään asiakkaan postiosoite vain jos se on olemassa if (asPostiosoite != null) { // Postiosoite on tarkistus = kanta.suoritaPaivitys(sqlAsp); } else if (asPostiosoite == null) { // Postiosoitetta ei ole System.out.println("TietokantaOhjaus.luoAsiakas() - asiakkaan postiosoitetta ei

lisätty, " + "koska sitä ei ole syötetty. Lisätyt rivit yhteensä: "

+lisatytRivit); }

Esimerkkejä lähdekoodista - tulostus lokiin

// Kysely, joka palauttaa lisätyn asiakkaan id:n tietokannasta. sqlLisattyId = "SELECT max(asNro) as numero FROM SYSSI9.asiakas";

//tulostetaan insert-lauseet seurantaa varten System.out.println("TietokantaOhjaus.luoAsiakas() - as-kayntiosoite: " + sqlAsk); System.out.println("TietokantaOhjaus.luoAsiakas() - as-postiosoite: " + sqlAsp); System.out.println("TietokantaOhjaus.luoAsiakas() - yh-osoite-sql: " + sqlYhOsoite); System.out.println("TietokantaOhjaus.luoAsiakas() - yhteyshenkilö -insert: " + sqlYh); System.out.println("TietokantaOhjaus.luoAsiakas() - as -insert: " + sqlAs);

// suoritaPaivitys-metodia varten määritetään paluuarvo int tarkistus = 1; // Default 1 = ok. Jos arvo on jotain muuta niin virheellinen tarkistus int lisatytRivit = 0; // Käsiteteltyjen rivien määrä konsoliin tulostusta varten

Asiakkaan testaus

Asiakkaan haku, lisäys ja muokkaus testattu omina lomakkeinaan

Testitapauksia yhteensä on noin 60. Testit ajettu sitä varten luodulla

testitietokannalla Näin testit voidaan toteuttaa uudestaan

samalla tietokannalla Testausta suoritettiin useaan otteeseen

ohjelman eri kehitysvaiheissa

Asiakkaan testaus

Esimerkkejä testitapauksista:

Asiakkaan testaus

SQL-testitietokanta, skriptit tallessa jotta kanta voidaan luoda uudestaan mikäli testi halutaan toistaa:

Toimipisteen suunnittelu

Suunnittelukuvasto on jatkoa aikaisemmalle AHA-projektissa käytetylle suunnittelukuvastolle.

Toimipisteen suunnittelukuvastossa kuvataan toimipisteen lisäämisen suunnittelu.

Toimipisteen suunnittelu Suunnittelukuvaston sisällys 1 Johdanto 2 Käyttöliittymät 2.1 Etusivun näkymä

2.2 Asiakkaan ylläpidon näkymä 2.3 Toimipisteen lisäyksen näkymä

3 Luokkamalli 4 Relaatiotietokanta

4.1 Relaatiokaavat 4.2 Tietokannan luontilauseet 4.3 Pääavainten automaattinen kasvatus

5 Yhteistyökaaviot 5.1 Toimipisteen lisäyksen yhteistyökaaviot

6 Viestiyhteyskaaviot 6.1 Toimipisteen lisäyksen viestiyhteyskaaviot

7 Paketit 7.1 Servlet-paketti 7.2 Liiketoiminta-paketti 7.3 Tarkistus-paketti 7.4 Tietokanta-paketti

Toimipisteen suunnittelu

Käyttöliittymät Toimipisteen lisäys suoritetaan asiakkaan ylläpito-

näkymän kautta. Toimipisteen lisäykseen pääsee kahdella eri tavalla:

1. suoritetaan asiakkaan haku ja valitaan haluttu asiakas, jolloin järjestelmä avaa haetun asiakkaan tiedot näytölle

2. lisätään uusi asiakas ja tallennetaan asiakkaan tiedot, jolloin järjestelmä avaa lisätyn asiakkaan tiedot näytölle.

Avautuvassa lomakkeessa on valittavissa painike ”Lisää toimipiste”, josta päästään toimipisteen lisäys –näyttöön.

navi.jsp toimipiste.jsp

Rakenne

-arKoodi : int-arNimi : String

Asiakasryhma-meKoodi : int-meTeksti : String-mePaivat : int

Maksuehto

-yhEtuNimi : String-yhSukunimi : String-yhNimike : String-yhPuhelin : String-yhEmail : String

Yhteyshenkilo -asNro : int-asNimi : String-asAlennusprosentti : double-asAakostusperuste : String-asLuottoraja : int-asLisatiedoty : String-asPoistettava : String-asPuhelin : String-asFaxi : String

Asiakas

-osOsoite : String-osPostinumero : String-osPostitoimipaikka : String-osMaa : String

Osoite

1

0..*

1

0..*

11

1

0..1

1

1..2

Kontrolleri

-asNimi : Boolean-asAlennusprosentti : Boolean-asAakkostusperuste : Boolean-asLuottoraja : Boolean-asLisatiedot : Boolean-asOk : Boolean-asPuhelin : Boolean

VirheAsiakas

-osOsoite : Boolean-osPostinumero : Boolean-osPostitoimipaikka : Boolean-osmaa : Boolean-osOk : Boolean

VirheOsoite

-yhEtunimi : Boolean-yhSukunimi : Boolean-yhPuhelin : Boolean-yhEmail : Boolean-yhNimike : Boolean-yhOk : Boolean

VirheYh

AsiakasOhjaus TietokantaOhjaus

Tietokanta

Tarkistus

-tpNimi : Boolean-tpYtunnus : Boolean-tpAakkostusperuste : Boolean-tpPuhelin : Boolean-tpLisatiedot : Boolean-tpOk : Boolean

VirheToimipiste

-tpNro : int-tpNimi : String-tpYtunnus : String-tpAlvTunnus : String-tpAakkostusperuste : String-tpPuhelin : String-tpFaxi : String-tpLisatiedot : String-tpViimeinenosto : Date-tpViimOstoSumma : Double-tpMyynti : int-tpPoistettava : String

Toimipiste

-teKoodi : int-teTeksti : String

Toimitusehto

-ttKoodi : int-ttTeksti : String

Toimitustapa

-mhKoodi : int-mhTeksti : String-mhLuottokelpoituus : int

Maksuhairio

1

1

0..*1

0..*

1

0..*

1

1

1..2

Luokkakaavio

RelaatiokaavioAsiakasryhma

arKoodi (PK)arNimi

Maksuehto

meKoodi (PK)meTekstimePaivat

Yhteyshenkilo

yhId (PK)yhEtunimiyhSukunimiYhPuhelinyhEmailyhNimikeyhOsoite (FK)

Asiakas

asNro (PK)asNimiasAakkostusperusteasAlennusprosenttiasLisatiedotasLuottorajaasPoistettavaasPuhelinasFaxiasAsiakasryhma(FK)asMaksuehto (FK)asYhteyshenkilo (FK)asKayntiosoite (FK)asPostiosoite (FK)

Osoite

osoiteId (PK)osOsoiteosPostinumeroosPostitoimipaikkaosMaa

1 *

1 *

1

1

1 0..1

1

1..2

Toimipiste

tpNro (PK)tpNimitpYtunnustpAlvTunnustpAakkostusperustetpPuhelintpFaxitpLisatiedottpViimeinenOstotpViimOstoSummatpMyyntitpPoistettavatpAsiakas(FK)tpYhteyshenkilo(FK)tpToimitusosoite(FK)tpLaskutusosoite(FK)

Toimitustapa

ttKoodi (PK)ttTekstiToimitusehto

teKoodi (PK)teTeksti

Maksuhairio

mhKoodi (PK)mhTekstimhLuottokelpoisuus

1*

1*

1 *

1

11

1..2

1

*

Toimipisteen lisäys

Esiehdot: Halutaan lisätä uusi toimipiste.

1. Järjestelmä avaa toimipisteen lisäys-näytön.

2. Toimija syöttää toimipisteen tiedot järjestelmään.

3. Toimija varmistaa, että tiedot ovat oikein ja tallentaa ne.

4. Järjestelmä tarkistaa ja tallentaa tiedot.

Toimipisteen lisäys

2) haeTpAsiakas(int asiakasnumero) 3) haeTpAsiakas(int asiakasnumero)

4) haeToimitusehdot() 5) haeToimitusehdot()

7) haeToimitustavat()

;AsiakasOhjaus :TietokantaOhjaus:Kontrolleri

asiakas.jsp

2) Asiakas asiakas 3) Asiakas asiakas

5) ArrayList <Toimitusehto>

7) ArrayList <Toimitustapa>

4) ArrayList <Toimitusehto>

6) ArrayList <Toimitustapa>

1) doGet(int asiakasnumero)

toimipiste.jsp

6) haeToimitustavat()

Asiakas asiakasArrayList <Toimitusehto>ArrayList <Toimitustapa>Maksuhairio maksuhairio

Toimija painaa "Lisää toimipiste"-painiketta asiakas.jsp:ssä

8) haeMaksuhairio() 9) haeMaksuhairio()

9) Maksuhairio maksuhairio8) Maksuhairio maksuhairio

Toimipisteen lisäys

haeTpAsiakas(int asiakasnumero)

return Asiakas asiakas

Tietokanta

tietokantaOhjaus.haeTpAsiakas(int asiakasnumero)

return Asiakas asiakas

KontrolleriAsiakasohjausasiakas.jsp toimipiste.jsp

doGet...

aktivoi

haeToimitusehdot()

tietokantaOhjaus.haeToimitusehdot

return ArrayList <Toimitusehto>

haeToimitustavat()

return ArrayList <Toimitusehto>

tietokantaOhjaus.haeToimitustavat()

return Arraylist <Toimitustapa>

return Arraylist <Toimitustapa>

haeMaksuhairio()

tietokantaOhjaus.haeMaksuhairio()

return Maksuhairio maksuhairio

return Maksuhairio maksuhairio

Kontrolleri aktivoi toimipiste.jspsivun ja välittää sille asiakas- ja maksuhairio-oliot sekäkaksi ArrayList-oliota, jotka sisältävätToimitusehto- ja Toimitustapa-olioita.

haeSuurinToimipistenumero()

return int tpNro

haeSuurinToimipistenumero()

return int tpNro

Toimipisteen lisäys

Toimipiste.jsp

1) doPost(...)

2) luoToimipiste(Toimipiste toimipiste)

3) luoToimipiste(Toimipiste toimipiste)

:Kontrolleri ;AsiakasOhjaus :TietokantaOhjausToimipiste toimipisteToimipiste toimipiste

Toimipiste toimipiste

Toimipisteen testaus

Toimipisteen käsittelylle on luotu vastaavia testitapauksia kuin asiakkaan tapauksille

Testejä ei kuitenkaan ole ajettu koska toimipisteen käsittelyä ei ole toteuttu toimivaksi ollenkaan.

Toimipisteen testaus

Toimipisteen testauksen testitapaus:

Toimipisteen testaus

Toimipisteen testaukselle on myös tehty testitietokanta.

Kokemukset ja ongelmat

Suurimman ongelman muodosti ohjelmointiympäristöt Eclipse, Lomboz ja Apache

Ympäristöjä ei oltu asennettu valmiiksi Työaikaa kului käyttöönottoon ja opetteluun

Tästä kuitenkin selviydyttiin kun ohjelmat lopulta saatiin asennettua usean yrityksen jälkeen.

Käytetyn JSP-tekniikan riittämätön tuntemus aiheutti ongelmia.

Projektiryhmä on saanut yhdessä tuntea onnistumisen tunteen ja kokee valmiiden tulosten katselun varsin palkitsevana.

Projektiryhmällä on saanut tilaisuuden toimia projektiorganisaatiossa ja kokea, miten yhteistyö organisaatioissa toimii.

LSD kiittää ja toivottaa hyvää kesää

top related