aha-projekti asiakashallinnan tietojärjestelmä
Post on 13-Jan-2016
36 Views
Preview:
DESCRIPTION
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