Samenvatting van ons gesprek met de opdrachtgever -Klanten: Voor de klanten is het nodig hun gegevens te kunnen bewaren, deze te kunnen bewerken en eventueel te verwijderen. Naast de persoonlijke persoonsgegevens is het ook nodig om de gegevens van het haar van de klanten bij te houden . -Werknemers: Voor de werknemers is het nodig hun persoonlijke gegevens te kunnen bewaren en upto-date te houden. Ook het verlof van de werknemers moet bijgehouden worden en dit onder de vorm van persoonlijke verlofdagen. Deze verlofdagen moeten wel met enkele zaken rekening kunnen houden. Wanneer een werknemer een verlofdag wil opnemen, moeten eventueel reeds geboekte afspraken voor die werknemer op die bepaalde dag kunnen verplaatst worden naar ofwel een andere werknemer of naar een ander tijdstip(met bevestiging van klant natuurlijk). Naast de verlofdagen wordt er voor de werknemers nog een uurrooster bijgehouden dat per dag de werkuren van de werknemer bijhoudt. Dit is nodig omdat de zaak meestal langer dan 8 uur open is op een dag. Bij eventuele onvoorziene omstandigheden zoals ziekte van een werknemer moet het ook mogelijk zijn een afspraak te wijzigen. -Agenda De agenda moet bestaan uit een dagoverzicht met daarop per werknemer zijn of haar werktijden. Indien een medewerker op die dag een dagje verlof staan heeft moet dit ook aangeduid staan. Voor de rest wordt het model opgevuld met de reeds gemaakte afspraken van de dag, eventuele feestdagen en algemene sluitingsdagen van de zaak. De agenda moet een hoge gebruiksvriendelijkheid hebben om het afhandelen van een afspraak zo snel mogelijk tot een goed einde te kunnen brengen. -Kassa: De kassa bevat het afhandelen van een bezoek. Dit bezoek bestaan uit de datum van de afspraak, de werknemer die de afspraak had, de klant die ze onderging en de mogelijkheid om producten en behandelingen toe te voegen aan het bezoek. Uit al deze gegevens wordt dan het totaalbedrag van het bezoek berekend. De applicatie mag eventueel ook het terug te geven bedrag bereken bij afrekening, dan mag die vervelende rekenmachine weg. -zoeken: Het zoeken moet de applicatie de mogelijkheid bieden om voor de verschillende gegevens die opgeslagen worden verscheidene zoekfilters te implementeren. Ook omdat de applicatie vaak gegevens moet bewerken die gekoppeld zijn aan- of afhankelijk zijn van een ander item. -Afspraken: Wanneer een afspraak gemaakt word zal dit zo efficiënt mogelijk moeten gebeuren. Een datum in deze of een volgende maand moet kunnen gekozen worden waarna een soort van dagoverzicht verschijnt met de werkuren van het personeel, door de klant te identificeren kan deze aan een werknemer gekoppeld worden op een bepaald tijdstip. Een afspraak hoeft niet uit een opeenvolging van tijdstippen te bestaan(*). -bezoeken: Wanneer de kassa een afspraak afhandelt kunnen we in feite spreken over een bezoek. Zo’n bezoek bevat de datum van de afspraak, de medewerker die de behandeling (hopelijk) tot een goed einde heeft gebracht en de klant die ze onderging. De producten en behandelingen die gebruikt of gekocht werden. Het totaalbedrag van deze zaken wordt uiteindelijk ook aan een bezoek gekoppeld. -producten: Voor de producten is het nodig ze te kunnen identificeren, de prijs van een product te kunnen bepalen, en om stockage redenen het aantal producten in stock en het minimum aantal stuks nodig in stock te weten en up-to-date te houden. -Feestdagen: Voor de feestdagen is het enkel belangrijk om de dag waarop de feestdag slaat te weten, voor het gemak wordt ook de naam van de feestdag bewaard. -Openingsuren: Aangezien de zaak geen 24 op 24 open is, is het nodig de openingsuren bij te houden met de eventuele verlofdagen en sluitingsdagen van de zaak. -Werktijden: De zaak is langer dan 8 uur open op een dag. Voor de werknemers moet er dus een overzicht van de aanwezige uren bestaan. Hiervoor worden de werktijden van de werknemers opgeslagen. Een pauze van de werknemer zal vb terug te vinden zijn in het overzicht van de werknemer zijn of haar werktijd(*). (*) er wordt eigenlijk een lijst met tijden bijgehouden omdat een afspraak met een tussenpauze moet geboekt kunnen worden, zo zal bijvoorbeeld voor een permanent in totaal drie kwartier werk gerekend worden. Maar dan wel van 8.00 tot 8.15 en van 9.00 tot 9.30. Starten met bedrijfprocessen. Inleiding “First survey the plot, then draw the model” (W. Shakespeare), met deze wijze woorden in het achterhoofd wordt voor het onderzoeken van het plot een eenvoudig diagram gebruikt, het procesdiagram. Het is een hiërarchische modelleertechniek die makkelijk op te stellen is en opgemaakt is vanuit het gezichtspunt van de opdrachtgever en de gebruikers van het project. Als het plot is onderzocht, kan het model getekend worden. Aan de hand van de processen die uit het procesdiagram stromen wordt een use case diagram opgesteld. Overzicht van de bedrijfsprocessen Het hairsoft project omvat drie grote delen: 1. Een administratie gedeelte: hier worden zaken zoals het opslaan van klanten, werknemers, producten, behandelingen, verlofdagen, openingsuren, enz geregeld. 2. Een agenda gedeelte: alles i.v.m. afspraken en het maken van de agenda. 3. Een kassa gedeelte: alles i.v.m. de bezoeken. hairsoft administratie agenda kassa Administratie admin klanten werknemers behandeling product vakantie openinguren toevoegen toevoegen toevoegen toevoegen toevoegen verwijderen verwijderen verwijderen verwijderen verwijderen bewerken bewerken bewerken bewerken zoeken vakantie werktijden bewerken Agenda agenda Tonen bewerken Toevoegen afspraak Verwijderen afspraak OPM: Wanneer we een afspraak willen bewerken komen zowel verwijderen als toevoegen afspraak aan bod omdat we er voor gekozen hebben als er bv. een afspraak moet verlegd worden we de originele afspraak verwijderen en een nieuwe afspraak aanmaken. Tonen: (drawagenda) Er moet gezocht worden naar een goede manier om de agenda aan de gebruiker te tonen. Dit gedeelte zal nauw samenwerken met de administratie. Zo moet de gebruiker direct de volgende zaken kunnen zien 1. de openingsuren van de winkel 2. de verlofdagen van de winkel 3. de pauze van de winkel 4. de werktijden van de werknemer 5. de verlofdagen van de werknemer 6. de afspraken die al gemaakt zijn Bewerken: (zie AgendaModel) Eenmaal de gebruiker de agenda ziet moet het mogelijk zijn om met een paar klikken een afspraak te plaatsen, ook als het een nieuwe klant betreft. Meestal gebeuren de afspraken telefonisch dus hier zal extra aandacht aan besteed worden. Kassa Kassa Bezoek toevoegen bezoek “winkelkarretje” vullen verwijderen bezoek Uitrekenen teruggave Toevoegen behandeling Toevoegen product Toevoegen bezoek: (Checkout zie CashRegisterModel) Dit betreft het opslaan van het bezoek dat de klant net achter de rug heeft. Met ‘toevoegen bezoek’ worden verscheidene zaken bedoeld die met het bezoek te maken hebben, vandaar dat er in het bovenliggend diagram sprake is van een winkelkarretje. Dit houdt in dat de ondergane behandelingen en de eventueel verkochte producten ook aan het bezoek worden gekoppeld. Naast het winkelkarretje worden ook de klant en het totale bedrag aan het bezoek gehangen. Dit bedrag is het totaal van ons winkelkarretje. Om de kassa kompleet te maken is er ook een functie voorzien die het terug te geven bedrag berekent. Verwijderen bezoek: Spreekt voor zich denken we. Extra functionaliteiten Het programma zal de mogelijkheid hebben om enkele grafieken te genereren die de werknemers ten alle tijde kunnen raadplegen. Zo zal bv. de stockfoto steeds een beeld geven van de producten in stock en eventueel te bestellen producten, … Grafieken rapportering Het gebruik van een scanner om de producten toe te voegen of te selecteren bij verkoop.Is terug te vinden in de pragmatische use cases en specifiek in de volgende - Toevoegen producten - Bewerken producten - Producten toevoegen aan winkelkarretje(Bezoek maken) Het programma heeft ook een mogelijkheid ingebouwd om bezoeken in beeld te brengen, de medewerkers of manager kunnen zo een kijkje nemen naar bezoeken die op een bepaalde dag gepleegd zijn of bezoeken van een bepaalde klant opvragen. Bezoeken Bezoeken tonen op datum Bezoeken tonen per klant Alle bezoeken tonen Elementaire processen Opsomming van de verschillende elementaire processen, afgeleid uit de bedrijfsprocessen. Van de elementaire processen met een “*” zijn de pragmatische usecases (PUC’s) gemaakt, om herhaling te vermijden zullen identieke cases niet telkens opnieuw uitgeschreven worden. PUC’s die niet uitgewerkt zijn, zullen vermeld worden bij de usecase die het best de werkwijze beschrijft. Elementaire processen ● klant toevoegen * ● klant verwijderen * ● klant bewerken * ● werknemer toevoegen ● werknemer verwijderen ● werknemer bewerken ● werknemer verlofdagen * ● werknemer werktijden * ● behandeling toevoegen ● behandeling verwijderen ● behandeling bewerken ● producten toevoegen * ● producten bewerken ● producten verwijderen ● verlofdagen winkel toevoegen ● verlofdagen verwijderen ● openingsuren bewerken * ● afspraak maken * ● afspraak verwijderen * ● checkout kassa * ● bezoek verwijderen ● controle op invoer * ● klant zoeken * ● rapportering maken * ● bezoeken tonen per klant * ● bezoeken tonen per datum * ● alle bezoeken tonen * ● * Use case Diagram bekijken bekijken bekijken zie klant zie klant zie klant bekijken bekijken zie klant zie klant zie klant bekijken bekijken zie klant bekijken zie klant bekijken bekijken bekijken bekijken bekijken bekijken bekijken bekijken bekijken bekijken bekijken Activity diagram bekijken + testscenario bekijken + testscenario bekijken + testscenario zie klant zie klant zie klant bekijken + testscenario zie klant zie klant zie klant bekijken + testscenario bekijken + testscenario zie klant bekijken zie klant bekijken + testscenario bekijken + testscenario bekijken bekijken + testscenario zie klant bekijken + testscenario bekijken + testscenario bekijken + testscenario Todo Todo todo Usecases Overzicht van alle pragmatische use cases, gegroepeerd per doelstelling van het programma: Administratie PUC001 - Klant toevoegen PUC002 – Verwijderen klant PUC003 – Bewerken klant PUC004 – Toevoegen verlof werknemer PUC005 – Openingsuren winkel ingeven PUC006 – Verlofdagen winkel ingeven PUC012 – Klant opzoeken PUC013 – Toevoegen/wijzigen werktijden werknemer PUC014 – Product toevoegen PUC015 – Bewerken product Agenda PUC007 – Afspraak maken PUC008 – Verwijderen afspraak Kassa PUC009 – Checkout PUC010 – Verwijderen bezoek Grafieken PUC016 – Rapportering maken Bezoeken PUC017 - Tonen bezoeken per klant PUC018 – Tonen bezoeken per datum PUC019 – Alle bezoeken tonen Ondersteunende taken(van administratie) PUC011 – Controle op invoer PUC Diagrammen *De puc Checkout betekent misschien meer dan dat de naam ons wil zeggen, eigenlijk betekent deze puc het afhandelen van een bezoek waarbij de klant zijn rekening zal ontvangen en de applicatie de gewenste wijzigingen zal doorvoeren en het bezoek opslaan. Het bezoek bestaat uit een klant, en uit een soort winkelwagentje. Dit winkelwagentje houdt bij welke behandelingen er ondergaan werden en een eventuele lijst met producten die door de klant gekocht werden. PUC001 – Klant toevoegen. back Klant toevoegen aan database. Preconditie Klant zit nog niet in de database Postcondities De klant is opgeslagen in database, of niks is gewijzigd. Actors klant, medewerker Stappenplan 1. De medewerker wil nieuwe klantgegevens invoeren. 2. Als medewerker annuleert. 2.1 Stop. 3. De medewerker vult de klantgegevens in. 4. De medewerker bevestigd de invoer 5. De applicatie controleert of de nodige gegevens correct zijn ingevuld volgens PUCO11 Controle op invoer. 5.1 Indien invoer niet correct. 5.2 Herhaal vanaf 3. 6. De applicatie slaat de nieuwe klantgegevens op. 7. Stop. PUC002 – Verwijderen klant. back Klant verwijderen uit de database. Preconditie Klant zit reeds in de database Postcondities De klant is verwijderd uit de database of niks is gewijzigd. Actors klant, medewerker Stappenplan 1. De medewerker haalt de klant op. 2. Als medewerker annuleert. 2.1 Stop. 3. De medewerker verwijdert de gegevens van de klant. 4. De medewerker bevestigd de invoer. 4.1 De applicatie verwijdert de klantgegevens. 4.2 Stop. PUC003 – Bewerken klant. back Klantgegevens aanpassen in de database. Preconditie Klant zit reeds in de database Postcondities De klantgegevens zijn aangepast in de database of niks is gewijzigd. Actors klant, medewerker Stappenplan 1. De medewerker haalt de klant op. 2. Als medewerker annuleert. 2.1 Stop. 3. De medewerker bewerkt de gegevens van de klant. 4. De medewerker bevestigd de invoer. 5. De applicatie controleert of de nodige gegevens zijn ingevuld volgens PUCO11 Controle op invoer. 5.1 Indien invoer niet correct. 5.2 Herhaal vanaf 3. 6. De applicatie slaat de nieuwe klantgegevens op. 7. Stop. PUC004 – Toevoegen verlof werknemer. back Een medewerker wenst op een bepaalde dag afwezig te zijn, en vraagt hiervoor een dagje verlof aan. Actors medewerker Stappenplan 1. 2. 3. 4. 5. Een medewerker wil een dag verlof nemen De medewerker identificeert de medewerker die een dagje wenst. De medewerker selecteert de dag waarover het verlof gaat. De applicatie valideert de invoergegevens Er zijn geen afspraken voor medewerker op betreffende dag. 5.1 De applicatie keurt het dagje verlof goed. 5.2 De applicatie slaat verlofdag op. 5.3 Stop. 6. Reeds afspraken geboekt op datum. 6.1 De applicatie haalt de probleemafspraken op. 6.2 De medewerker selecteert een probleemafspraak. 6.2.1 Applicatie toont mogelijkheden. 6.2.1.1 De medewerker selecteert een andere werknemer voor de afspraak. 6.2.1.1.1 Applicatie update de afspraak. 6.2.1.1.2 Indien geen andere probleemafspraken meer. 6.2.1.1.2.1 Herhaal vanaf 5. 6.2.1.1.3 Nog wel probleemafspraken. 6.2.1.1.3.1 Herhaal vanaf 6.2 6.2.1.2 Medewerker verplaatst afspraak naar het prikbord. 6.2.1.2.1 Indien geen verdere probleemafspraken meer. 6.2.1.2.1.1 Herhaal vanaf 5. 6.2.1.2.2 Nog wel probleemafspraken. 6.2.1.2.2.1 Herhaal vanaf 6.2 PUC005 – Openingsuren winkel. back De openingsuren van de winkel kunnen ingesteld worden. Postconditie De openingsuren zijn ingegeven. Actors medewerker Stappenplan 1. De medewerker wenst openingsuren van een bepaalde dag in te geven. 2. De medewerker kan ten alle tijden stoppen. 2.1 Stop. 3. Applicatie toont overzicht. 4. Medewerker selecteert dag 4.1 Applicatie toont invoerscherm voor die dag. 4.2 Medewerker past gegevens aan. 4.3 Medewerker bevestigd invoer. 4.4 Applicatie update gegevens. 4.5 De medewerker wenst openingsuren van nog een andere dag te bewerken. 4.5.1Herhaal vanaf 3. 5. Stop. PUC006 – Verlofdagen winkel. back De verlof- en sluitingsdagen van de winkel kunnen ingesteld worden. Preconditie Er mogen nog geen afspraken vastliggen op de dagen dat de zaak gesloten is. Postconditie De sluitingsdag is opgeslagen. Actors medewerker Stappenplan 1. Medewerker wenst verlof- en sluitingsdagen van de zaak in te geven. 2. Medewerker kan ten alle tijden stoppen. 2.1 Stop. 3. Applicatie toont overzicht. 4. Medewerker selecteert dag 5. Medewerker geeft de verlofdag een naam. 6. Medewerker bevestigd de invoer. 7. Applicatie verwerkt de invoergegevens. 8. Stop. PUC007 – Afspraak maken. back De klant wil een afspraak maken voor een behandeling. Preconditie Postconditie De reservatie is ingevoerd of niks is gewijzigd Actors Klant, medewerker Stappenplan 1. De klant wil een afspraak maken voor een behandeling. 2. De klant kan ten alle tijde annuleren. 2.1 Stop. 3. De medewerker identificeert de klant 3.1 Indien nieuwe klant PUC001 Toevoegen klant. 4. De applicatie haalt de klant op. 5. De klant geeft een datum en behandeling op. 6. De medewerker voert de datum in. 7. De medewerker bevestigt invoer 8. Toon dagoverzicht van ingevoerde datum. 9. De medewerker valideerdt de datum en tijdsduur behandeling. 10. Datum en uur zijn nog vrij. 10.1 De medewerker selecteert de werknemer. 10.2 De medewerker selecteert het uur van de afspraak. 10.3 Opslaan reservatie. 10.4 Stop. 11. Datum niet vrij. 11.1 De medewerker vraagt nieuwe datum of ander uur aan klant. 11.2 De klant geeft een nieuw tijdstip op. 11.2.1 Herhaal vanaf 6. 11.3 Klant kan op geen enkel ander tijdstip afspraak maken. 11.3.1 Stop. PUC008 – Verwijderen afspraak. back De klant wil een afspraak afzeggen. Preconditie De klant is geïdentificeerd en er is reeds een afspraak gemaakt. Postconditie De reservatie is afgezegd en het tijdstip waarop afspraak betrekking had is terug vrij voor een nieuwe afspraak. Actors Klant, medewerker Stappenplan 1. De klant wil een reservatie afzeggen. 2. De klant kan ten alle tijde annuleren. 2.1 Stop. 3. De klant geeft de datum en het tijdstip van de afspraak op. 4. De medewerker zoekt de reservatie op. 5. De medewerker annuleert de reservatie namens de klant. 5.1 De applicatie verwijdert de reservatie. 6. Stop. PUC009 – Checkout back Elke klant wordt na de behandeling verwacht een rekening te betalen. Preconditie De klant is reeds gekend in de database. Postconditie De klant heeft zijn rekening ontvangen en betaald. Actors Klant, medewerker Stappenplan 1. Medewerker wil de rekening van de klant maken. 2. De medewerker kan ten alle tijde annuleren. 2.1 Stop. 3. Medewerker vult het winkelkarretje van het bezoek. 3.1 Medewerker selecteert een ondergane behandelingen. 3.1.1 Applicatie vult de behandeling in op een overzicht. 3.1.2 Applicatie berekent voorlopige totaalbedrag. 3.1.3 Indien medewerker nog een behandeling wenst toe te voegen. 3.1.3.1 Herhaal vanaf 3.1. 3.2 Medewerker selecteert de producten. 3.2.1 Applicatie vult het product in op een overzicht 3.2.2 Applicatie controleert stockvoorraad. 3.2.3 Applicatie berekent voorlopige totaalbedrag. 3.2.4 Indien medewerker nog een product wenst toe te voegen. 3.2.4.1 Herhaal vanaf 3.2 4. De medewerker voert het ontvangen bedrag in. 5. De medewerker bevestigd invoer. 6. Bereken teruggavenbedrag. 7. Applicatie slaat de gegevens van het bezoek op. 8. Afdruk van rekening. 9. Stop. PUC010 – Verwijderen bezoek back De medewerker wil een bezoek verwijderen. Preconditie Het bezoek was reeds opgeslagen. Postconditie Het bezoek is verwijderd. Actors medewerker Stappenplan 1. Medewerker wil een bezoek verwijderen. 2. De medewerker selecteert de datum van het bezoek of zoekt op naam van de klant. 3. De applicatie haalt de gevonden bezoeken op. 4. De medeweker selecteert het te verwijderen bezoek. 5. De medewerker bevestigd het verwijderen van het bezoek. 6. Applicatie verwijdert het bezoek. 7. Stop. PUC011 – Controle op invoer back Controle of de verplichte velden zijn ingevuld en of de gegevens correct(vb. Type) zijn. Postconditie De input van de gegevens is wel of niet geldig. Actors applicatie Stappenplan 1. De applicatie controleert of de verplichte velden zijn ingevuld. 1.1 Indien niet correct. 1.1.1De applicatie stuurt een foutmelding. 1.1.2Stop. 2. De applicatie controleert het type van de velden. 2.1 Indien niet correct. 2.1.1De applicatie stuurt een foutmelding. 2.1.2Stop. 3. Alle velden zijn correct ingevuld. 3.1 Stop. PUC012 – Klant zoeken back Een of meer klant objecten uit de database halen.(adv verschillende zoekcriteria) Actors Applicatie,medewerker Stappenplan 1. De medewerker wenst een klant te zoeken. 2. De medewerker kan ten alle tijden annuleren. 2.1 Stop. 3. De medewerker kiest het criteria waarop hij/zij een klant wil zoeken 4. De applicatie haalt de gevonden gegevens op. 5. De medewerker wenst verder te zoeken. 5.1 De medewerker duidt een nieuw zoekcriterium aan. 5.2 De applicatie haalt de gegevens op. 5.3 De medewerker wenst nog verder te zoeken. 5.3.1 Herhaal vanaf 2. 6. De medewerker wenst niet meer verder te zoeken. 7. Stop. PUC013 – Toevoegen/wijzigen werktijden werknemer. back Elke medewerker beschikt over een persoonlijke lijst met daarin zijn/haar werkuren voor een volledige week. Preconditie De werknemer zit reeds in de databank. Postconditie De werktijden van een werknemer zijn toegevoegd of gewijzigd. Actors medewerker Stappenplan 1. De uren van een medewerker moeten worden ingevuld/gewijzigd. 2. Als medewerker annuleert. 2.1 Stop. 3. De medewerker selecteert de werktijden van de werkemers. 4. De applicatie toont het weekoverzicht voor de werknemers. 5. De medewerker selecteert één dag van een werknemer om de uren in te vullen. 5.1 De medewerker vult de uren in. 5.2 De medewerker bevestigd de invoer. 5.3 De applicatie slaat werktijden voor die dag en werknemer op. 5.4 Manager wil nog uren van diezelfde of een andere werknemer invullen. 5.4.1 Herhaal vanaf 5. 6. Stop. PUC014 – Product toevoegen back Een product toevoegen aan database. Preconditie Product zit nog niet in de database Postcondities Het product is opgeslagen in database, of niks is gewijzigd. Actors medewerker Stappenplan 1. 2. De medewerker wil nieuwe product toevoegen. Als medewerker annuleert. 2.1 Stop. 3. De medewerker wenst het product manueel toe te voegen. 3.1 De medewerker voert de gegevens in. 3.2 De medewerker bevestigd de invoer 3.3 De applicatie controleert of de nodige gegevens correct zijn ingevuld volgens PUCO11 Controle op invoer. 3.3.1 Indien invoer niet correct herhaal vanaf 3. 3.3.2 invoer correct, applicatie voegt product toe 3.3.2.1 Stop. 4. De medewerker wenst een scanner te gebruiken. 4.1 De medewerker scant het product 4.1.1 De medewerker vult alle extra gegevens in. 4.1.2 De medewerker bevestigt invoer. 4.1.3 De applicatie controleert of de gegevens correct zijn ingevuld volgens PUC011 Controle op invoer. 4.1.3.1 Indien invoer niet correct, herhaal vanaf 4.1.1 4.1.3.2 Invoer correct, applicatie voegt product toe. 4.1.3.2.1 Stop. PUC015 - Bewerken product back De gegevens van een product wijzigen. Preconditie Het product is reeds gekend in het systeem. Postcondities De gegevens van het product zijn gewijzigd, of niks is gewijzigd. Actors medewerker Stappenplan 1. 2. De medewerker wil productgegevens wijzigen. Als medewerker annuleert. 2.1 Stop. 3. De medewerker wenst de productgegevens manueel te wijzigen. 3.1 De medewerker selecteert het desbetreffende product. 3.2 De applicatie toont de productgegevens 3.3 De medewerker wijzigt de nodige gegevens 3.2 De applicatie controleert of de gegevens correct zijn ingevuld volgens PUCO11 Controle op invoer. 3.2.1 Indien invoer niet correct herhaal vanaf 3.3 3.2.2 Invoer correct, applicatie update het product 3.2.3 Stop. 4. De medewerker wenst een scanner te gebruiken. 4.1 De medewerker scant het product 4.1.1 De applicatie toont de productgegevens 4.1.2 De medewerker vult alle benodigde gegevens in. 4.1.3 De medewerker bevestigt invoer. 4.1.4 De applicatie controleert of de gegevens correct zijn ingevuld volgens PUC011 Controle op invoer. 4.1.4.1 Indien invoer niet correct, herhaal vanaf 4.1.2 4.1.4.2 Invoer correct, applicatie voegt product toe. 4.1.4.3 Stop. PUC016 – Rapportering maken back De medewerkers kunnen ten alle tijde een rapport opvragen(keuze over een aantal interessante zaken.) Postcondities Een rapportering wijzigt niks, dus geen postconditie. Actors medewerker Stappenplan 1. De medewerker wil een bepaald rapport in overzicht brengen. 2. De medewerker kan te allen tijde annuleren. 2.1 Stop. 3. De medewerker selecteert welk overzicht hij/zij wenst te zien. 3.1 De applicatie toont het overzicht. 3.2 De medewerker wil nog een ander overzicht inzien 3.2.1 Herhaal vanaf 3. 4. Stop. PUC017 – Tonen bezoeken per klant back De medewerker kan als hij/zij dat wenst de bezoeken opvragen die voor een bepaalde klant gemaakt geweest zijn. Postcondities Een overzicht wijzigt niks, dus geen postconditie. Actors medewerker Stappenplan 1. De medewerker wenst van een klant alle bezoeken te zien. 2. De medewerker kan ten alle tijden annuleren. 2.1 Stop. 3. De medewerker selecteert een klant. 4. De applicatie haalt de gevonden bezoeken op. 5. Indien medewerker nog een ander klant wil opvragen. 5.1 Herhaal vanaf 3 6. Stop. PUC018 – Bezoeken tonen per datum back De medewerker kan als hij/zij dat wenst de bezoeken opvragen die op een bepaalde dag gemaakt geweest zijn. Postcondities Een overzicht wijzigt niks, dus geen postconditie. Actors medewerker Stappenplan 1. De medewerker wenst van een dag alle bezoeken te zien. 2. De medewerker kan ten alle tijden annuleren. 2.1 Stop. 3. De medewerker selecteert een datum. 4. De applicatie haalt de gevonden bezoeken op. 5. Indien medewerker nog een ander datum wil opvragen. 5.1 Herhaal vanaf 3 6. Stop. PUC019 – Alle bezoeken tonen. back De medewerker kan als hij/zij dat wenst alle bezoeken opvragen. Postcondities Een overzicht wijzigt niks, dus geen postconditie. Actors medewerker Stappenplan 1. De medewerker wenst alle bezoeken te zien. 2. De medewerker kan ten alle tijden annuleren. 2.1 Stop. 3. De medewerker kiest voor alle bezoeken te zien. 4. De applicatie haalt alle bezoeken op. 5. Stop. Activity Diagrammen back Bij sommige van de activity diagrammen(lees: de meest interessante) is er een testscenario voorzien, hierin worden alle mogelijke manieren waarop de use case kan worden uitgevoerd beschreven aan de hand van scenario’s. Overzicht van alle activity diagrammen: ACD001 – Afspraak maken ACD002 – Verwijderen afspraak ACD003 – Bezoek toevoegen ACD005 – Toevoegen verlof werknemer ACD006 – Klant toevoegen ACD007 – Verwijderen klant ACD008 – Bewerken klant ACD009 – Klant zoeken ACD010 – Controle op invoer ACD011 – Product toevoegen ACD012 – Product bewerken ACD013 – Openingsuren van de winkel ACD014 – Verlofdagen van de winkel ACD015 – Rapportering maken ACD001 : Afspraak maken back Mogelijke testscenario van de use case 1-2-3-4-5 (het gewenste scenario) 1-6-3-4-5 (herstelscenario, met een nieuwe klant) 1-2-3-4-7-8-4-5 (herstelscenario*, met een nieuwe datum) 1-6-3-4-7-8-4-5 (herstelscenario*, met een nieuwe klant en datum) 1-2-3-4-7-9 (faalscenario, geen gepaste datum gevonden) 1-6-3-4-7-9 (faalscenario, geen gepaste datum gevonden voor nieuwe klant) * herhaling (4-7-8)kan blijven gebeuren tot een geschikte datum gevonden is ACD002 : Afspraak verwijderen back ACD003 – Checkout ACD004 - Werknemer vraagt dagje verlof back scenario’s op volgende blz. Mogelijke testscenario’s van de use case verlofdag werknemer: 1-2 (het gewenste scenario) 1-3-4-5-2 (herstelscenario, afspraak verplaatst naar andere werknemer) 1-3-4-5-4-5-2 (herstelscenario*, alle afspraken verplaatst naar andere werknemer) 1-3-4-6-2 (herstelscenario, afspraak op prikbord geplaatst) 1-3-4-6-4-6-2 (herstelscenario*, alle afspraken verplaatst naar prikbord) 1-3-4-6-4-5-2(herstelscenario*, alle afspraken naar ofwel prikbord of afspraak verplaatst naar andere werknemer) * herhaling kan blijven gebeuren tot alle afspraken van die dag zijn verplaatst naar ofwel het prikbord ofwel naar een andere werknemer, combinatie van beide is ook mogelijk ACD005: Klant toevoegen back Mogelijke testscenario’s van de use case : 1-2-3-4 (het gewenste scenario) 1-2-3-6-2-3-4(herstelscenario*, met invoer nieuwe klant) 1-2-5 (faalscenario) medewerker annuleert * herhaling (6-2-3) mogelijk tot alle velden correct zijn ingevuld, of medeweker annuleert ACD006: Klant verwijderen back Mogelijk testscenario van de use case : 1-2 (het gewenste scenario) 1-3 (faalscenario, actor annuleert bewerking) ACD007: Klant bewerken back Mogelijke testscenario’s van de use case: 1-2-3-4 (het gewenste scenario) 1-2-3-5-3-4 (herstelscenario *, met herhaling tot alle gegevens zijn ingevuld) * herhaling kan blijven gebeuren tot alle benodigde gegevens van een klant zijn ingevuld of totdat de werknemer annuleert ACD008: Klant zoeken back Mogelijke testscenario’s van de use case: 1-2-3-4 (het gewenste scenario), met één enkele zoekparameter 1-2-3-6-2-3-4 (het gewenste scenario*), met meerdere zoekparameters 1-2-5 (faalscenario), geen zoekresultaten gevonden 1-2-3-6-2-5 (faalscenario), geen resultaten voor de zoveelste zoekparameter. * herhaling (via 6)kan blijven gebeuren tot de zoekopdracht voltooid is of totdat de werknemer annuleert ACD009 : Controle op invoer back Mogelijke testscenario’s van de use case: 1-2-3 (het gewenste scenario), alle velden waren correct ingevuld 1-4 (faalscenario), niet alle verplichte velden zijn ingevuld 1-2-5 (faalscenario), alle velden zijn ingevuld maar één of meerdere van de waarden zijn fout ACD010 : Product toevoegen back Mogelijke testscenario’s van de use case: 1-2-3 (het gewenste scenario), waarbij medewerker scanner gebruikt 1-5-6 (het gewenste scenario), waarbij medewerker manuele ingave doet 1-2-4-2-3 (het herstel scenario*), met scanner 1-5-7-5-6(het herstel scenario*), met manuele ingave * herhaling (via 4 of 7) kan blijven gebeuren tot de benodigde gegevens juist en volledig zijn of totdat de werknemer annuleert ACD011 – Product bewerken back Mogelijke testscenario’s van de use case: 1-2-3 (het gewenste scenario), waarbij medewerker scanner gebruikt 1-5-6 (het gewenste scenario), waarbij medewerker manuele ingave doet 1-2-4-2-3 (het herstel scenario*), met scanner 1-5-7-5-6(het herstel scenario*), met manuele ingave * herhaling (via 4 of 7) kan blijven gebeuren tot de benodigde gegevens juist en volledig zijn of totdat de werknemer annuleert ACD012 – Openingsuren van de winkel back Mogelijke testscenario’s van de use case: 1-2-3 (het gewenste scenario), waarbij openingsuren van één dag zijn ingevuld 1-2-4-3 (het herstelscenario*), waarbij meerdere dagen hun uren krijgen * herhaling (via 4) kan blijven gebeuren tot de manager beslist dat er geen openingsuren meer moeten ingevuld worden. ACD013 – Verlofdagen van de winkel back ACD014 – Rapportering maken back Mogelijke testscenario’s van de use case: 1-2-3 (het gewenste scenario), met één enkel overzicht 1-2-4-3 (het herstelscenario*), met meerdere overzichten * herhaling (via 4) kan blijven gebeuren tot de werknemer beslist actie stop te zetten. Afbakenen van het systeem Afbakenen van het systeem / releases bv. systeem use cases selecteren = niet echt relevant denk ik omdat we met pragmatische use cases gewerkt hebben… zullen wat tekst uit het boek moeten zoeken die hier op inspeelt. Samenstellen van het ontwikkelingsplatform Keuze van de programmeertaal Als programmeertaal kiezen we voor JAVA (http://java.sun.com/), als programmeeromgeving gebruiken we ECLIPSE 3.0 (http://www.eclipse.org/), vooral omdat deze het meest aan bod zijn gekomen tijdens onze 3 jaar durende opleiding informatica. Middleware?? Hier niet van toepassing omdat het niet over een web-applicatie gaat. ???? Dbms (Database Management System) Een dbms organiseert de manier waarop gegevens opgeslagen worden, bepaalt welke types van gegevens kunnen opgeslagen worden en hoe de gegevens aan elkaar gerelateerd worden. In ons project werd gekozen om met MySQL te werken als dbmstool. (http://www.mysql.com/ ) Het MySQL softwarepakket bestaat onder meer uit een serverprogramma , doorgaans mysqld genoemd, waarbij de d voor daemon staat, wat de Unix of Linux term is voor een proces dat netwerkconnecties aanneemt. Verder bestaat het uit een verzameling clientprogramma's , zoals mysql en mysqldump waarmee automatisch of interactief met de server gecommuniceerd kan worden. Tools Hibernate (http://www.hibernate.org/) is een Object/Relational Mapping (ORM) oplossing voor de Java programmeertaal. Het is een eenvoudig te gebruiken framework voor het koppelen van een object georiënteerd domeinmodel aan een traditionele relationele database. Hibernate zorgt voor de koppeling van Java klassen aan databasetabellen (en voor het koppelen van Java datatypes aan SQL datatypes), maar zorgt tevens voor de ophaalfuncties. De ontwikkelaar hoeft zich door gebruik te maken van dit framework niet meer bezig te houden met SQL en JDBC verbindingen. Testen JUnit (http://www.junit.org/) is een java Unit testing framework. En onze voorkeur gaat naar het Unit testing framework omdat ook dit tijdens de lessen reeds ruim aan bod is gekomen. Loggen Log4j (http://logging.apache.org/) maakt gebruik van log statements die in de code geplaatst worden en is een low-tech methode om de code te debuggen. Met log4j is het mogelijk tijdens runtime te bepalen welke loggings al dan niet moeten worden uitgevoerd zonder de gehele sourcecode te wijzigen en dit aan de hand van een log4j configuratiebestand. Bibliotheken Aangezien we als programmeeromgeving voor JAVA gekozen hebben, zijn de bibliotheken te vinden in het project onder de vorm van jars. Hieronder een overzicht van de gebruikte jars in het project. Hibernate-jars Commons-collections-2.1.1 Commons-Collections seek to build upon the JDK classes by providing new interfaces, implementations and utilities. Commons-io-1.0 The Jakarta Commons-IO library. Jakarta Commons-IO contains utility classes, stream implementations, file filters , and endian classes. Odmg-3.0 jar Object Data Management Group, the standard for storing objects cglib-full-2.0.2 The cglib is a powerful, high performance and quality Code Generation Library, It is used to extend JAVA classes and implements interfaces at runtime. Hibernate2 commons-lang-1.0.1 The Lang Component provides a host of helper utilities for the java.lang API, notably String manipulation methods, basic numerical methods, object reflection, creation and serialization, and System properties. Ehcache-0.9 Ehcache is a pure Java, in-process cache with the following features: 1. Fast 2. Simple 3. Act as a pluggable cache for Hibernate 2.1. 4. Has useful Blocking and SelfPopulating cache constructs. 5. Small foot print. Both in terms of size and memory requirements. 6. Minimal dependencies apart from J2SE. 7. Fully documented. See the online Documentation and the online JavaDoc. 8. Comprehensive Test Coverage. xdoclet-hibernate-module-1.2.2 LOG4J Commons-logging-1.0.4 The 1.0.4 release of commons-logging is a service release containing support for both the 1.2.x and 1.3.x series of Log4J releases. log4j Log4j is an open source project based on the work of many authors. It allows the developer to control which log statements are output with arbitrary granularity. It is fully configurable at runtime using external configuration files. JUnit testing Junit JUnit is a regression testing framework written by Erich Gamma and Kent Beck. It is used by the developer who implements unit tests in Java. JCalendar JCalendar JCalendar is a Java date chooser bean for graphically picking a date. JCalendar is composed of several other Java beans, a JDayChooser, a JMonthChooser and a JYearChooser. All these beans have a locale property, provide several icons (Color 16x16, Color 32x32, Mono 16x16 and Mono 32x32) and their own locale property editor. So they can easily be used in GUI builders. API Specifications Jta (Java Transaction API) JTA specifies standard Java interfaces between a transaction manager and the parties involved in a distributed transaction system: the resource manager, the application server, and the transactional applications. MySQL mysql-connector-java-3.0.15-ga-bin In order to connect to MySQL with JDBC, we need such a copy of MySQL Connector/J, the JDBC driver for MySQL. Javadoc Xjavadoc-1.1 The XJavaDoc engine is a complete rewrite of Sun's JavaDoc engine that is faster and more suited for XDoclet (although it is completely standalone). It scans java source code and makes information about a class available via special java beans that are part of the XJavaDoc core. These beans provide the same information about a class as Sun's JavaDoc API, and some nice extra features. Look and feel Skinlf-1.2.11 The Java look and feel is the default cross-platform appearance and behavior for use in all JFC-based Java applications. With this skinlf-1.2.11 the Java application gets the windows XP look. Architectuur Om realiseerbaar te kunnen ontwerpen is er nood aan een zogenaamde referentiearchitectuur. Zo’n architectuur beschrijft de lagen en klassen van de applicatie, zodanig dat ontwerpers er het ontwerp op kunnen baseren en zodanig dat ontwikkelaars dit ontwerp kunnen realiseren. De referentie structuur is als een lasagne. Ze is opgebouwd uit lagen van verschillende substanties. Iedere laag steunt op onderliggende lagen. Deze onderliggende lagen bieden hun diensten aan deze laag aan. Iedere laag verbergt de onderliggende lagen. Uiteindelijk ziet de gebruiker van de applicatie alleen de bovenste laag van de lasagne. onderstaande tabel toont de verschillende lagen in de referentiearchitectuur.(nodig van deze tabel hier te zetten ??, misschien als extra uitleg) Laag Klassen Presentation Presentation. Is de laag die voor de gebruikers het meest zichtbaar is, verzorgt alle communicatie met gebruikers en heeft diverse gedaanten. Form. Visualiseert de interactie tussen actor en applicatie. Wordt aanzien als de laag waarin acties worden afgehandeld. Deze acties komen van de bovenliggende laag presentation waarin de gebruiker een actie wil afhandelen. Task. Implementeert een use case. Business : realiseert de verantwoordelijkheden aangaande het domein van de applicatie, en bestaat uit klassen met verschillende rollen. Factory. Bevat de applicatiespecifieke bedrijfslogica voor verzamelingen instanties. Beheert ook de individuele instanties van de bijhorende business class. De klassen in deze laag voorzien tasks van de benodigde gegevens. Hiervoor gebruiken deze klassen op hun beurt de onderliggende laag data. Business class. Bevat de applicatiespecifieke bedrijfslogica voor individuele instanties. Data class. Abstraheert de database voor de applicatie. Ze leggen de verbinding met de database, halen gegevens op en persisteren gewijzigde gegevens. Utility. Faciliteert alle overige klassen in het uitvoeren van hun verantwoordelijkheden. Een utility is technisch en onafhankelijk van de applicaties waarin deze wordt gebruikt.vb. klassen die de fysieke connectie met een database verzorgen. Business Components. Bevat de organisatiegerichte bedrijfslogica, in aanvulling op de applicatiegerichte bedrijfslogica(≈ Business). Het aanduiden van bedrijfscomponenten die beschikbaar zijn binnen het domein van de applicatie. Interface. Definieert de services die een bedrijfscomponent biedt. Service class. Realiseert de services van een interface. Factory. Realiseert organisatiegenerieke bedrijfslogica voor verzamelingen instanties binnen de bedrijfscomponenten. Beheert individuele instanties. Business class. Realiseert organisatiegenerieke bedrijfslogica binnen de bedrijfscomponenten voor individuele instanties. Data class. Abstraheert de database voor de bedrijfscomponent. Proces Business Data Utilities Business Components Vastleggen van subsystemen en lagen in het systeem. Overzicht van structuur op site yanic Architectuur bepalen = hairsoft model grote structuren zoals subsystemen en lagen vastleggen beslissingen die doorheen de applicatie(s) gevolgen hebben (bv. persistentie-, log- en testframework, creatie strategie, e.d.) Topologie bepalen hardware en software componenten andere (externe) systemen die nodig zijn hiervoor kunnen component en deployment diagrammen gebruikt worden Software ontwerp maken klassen bepalen en verantwoordelijkheden toekennen (boodschappen) klassenbeschrijving geven relevante UML-diagrammen opstellen (klassendiagrammen hieronder) Logisch DB-model maken databank model kiezen databank structuur beschrijven (klassendiagrammen hieronder) nog extra beschrijven ook Externe interfaces bepalen user interface elementen en UI-flow interfaces naar andere systemen specifiëren Teststrategie bepalen en tests ontwikkelen Om er zeker van te zijn dat het ontwerp beantwoord aan de vereisten uit de analyse, moet het gevalideerd worden. Dit kan gebeuren door reviews walkthroughs van systeem use case scenario’s opm: hier wordt het moeilijk te kiezen of we het boek volgen of yanic, we kunnen natuurlijk ook de gulden middenweg proberen te belopen. Ben er nog niet uit , wat denk jij dat het beste is ?? Model In het model – package wordt de structuur van de database beschreven. Handlers Het handlers - package model – package handlers – package presentation – package services – package tools – package util – package sequentie diagram Afspraak maken Sequentie diagram Tekenen van de agenda (drawAgenda) Sequentiediagram Bezoek toevoegen Sequentiediagram Stock aanpassen.