Iteratie2

From Flyingdutchmen

Contents

[edit] Info

  • We mogen de counselor altijd een mail sturen en hem doorverwijzen naar de wiki om daar enkele vragen te beantwoorden. De vragen moeten dan natuurlijk heel duidelijk geformuleerd zijn.

[edit] Deadline / Doelen

  • Woensdag 05/03/08: Analyse afwerken!
  • Zondag 16/03/08: Implementatie af!
  • Woensdag 19/03/08: Verslag af!
  • Donderdag 20/03/08: Verslag indienen!

[edit] Samenkomst

  • Vrijdag 22/02/08 10:35
  • Maandag 25/02/08 11:00
  • Donderdag 28/02/08 10:35
  • Vrijdag 29/02/08 10:35
  • Maandag 03/03/08 10:35
  • Donderdag 06/03/08 12:00
  • Maandag 10/03/08 10:35
  • Donderdag 13/03/08 11:00
  • Vrijdag 14/03/08 10:00
  • Maandag 17/03/08 10:00
  • Dinsdag 18/03/08 9:00

[edit] Use cases

Noot: Author en Reviewer moeten een affiliation hebben voor ze papers kunnen insturen of reviewen.

[edit] Specificatie voor elke use case

a* At anytime, the use case can be aborted.

[edit] COC

[edit] PCC

[edit] PC-Member

[edit] WSC

[edit] WSO

[edit] Reviewer

[edit] Domain Model van 22/02

Hier downloaden

Cedric zegt dat de reden waarom zou 2.54 hadden op dit is omdat ze ook constraints in domain model hadden gezet. Ze kregen er bonuspunten voor. Dus letterlijk een concept class "SubmitNotification" en andere deadlines en shit, en de onderlinge relaties ertussen zoals "Komt voor" enzo.

Hij zegt zelf dat onze domain model ongeveer zo ingewikkeld is nu als die van hun toen.

Dus het wordt toch tijd om wat dingen te herzien.

[edit] Domain Model van 25/02

Hier downloaden

VP versie

todo: WSO --> wordt PCC + note hierbij om te verduildelijken

[edit] Design

[edit] Klasse-diagram

diagram 17/03

1. Beslissingen

  • Geen database, wel managers/containers (Conference-manager en Person-manager?)
  • Role base access control: Person heeft List<Role>, Role is een interface die geimplementeerd wordt door CoC, Pcc, Pc-member, Author, Wsc, Wso... met een methode getActions().
  • Een Action heeft een naam en een aantal argumenten, deze worden gebruikt om de methode op te vragen via reflection(?). Subactions: ?
    • voordelen: uitbreidbaarheid, geen duplicate code,
    • nadelen: reflection is toch niet zo proper?
  • Roles: bevatten ofwel conference/paper/ws, ofwel niet (dan kunnen ze een enumeration zijn). Information expert is namelijk de conference, rather then the role. Een role verwijderen of toevoegen is wel lastig, en niet zo leesbaar/begrijpbaar in de code.
  • GUI: een guicontroller die actions omzet in methodes (een adaptor), deze methodes worden opgeroepen in de mediator in het view. De mediator kent alle buttons en menukes en zit in de view.
  • We gebruiken ook chain of responsability, bv bij het opvragen v e paper.
  • Roles moeten eigenlijk maar 1 keer geinitaliseerd worden (bv iemand die voor 2 conferences COC is, hoeft maar 1 object COC in zijn roles hebben), daarom singelton
  • De ProgramCommiteeModule heeft methodes isValid___Date(Date) die checken of een bepaalde date geldig is. Deze methodes gaan checken op _alle_ andere datums die al beschikbaar zijn. (Dus niet null). Zo kun je de datums ingeven in eender welke volgorde.
  • Command pattern om de GUI requests te parametriseren(??)

[edit] Beslissingen

  • Een role "Everyone": deze bevat dingen die iedereen moet kunnen doen, bijvoorbeeld conferences browsen. Iedereen heeft deze role vanzelf, zelfs guests.
  • Affiliation: een Vector van Strings in een Person, die de naam van een company aanduiden. Een company kan waarschijnlijk beter een object zijn ipv een string?
  • Exceptions worden doorgethrowed tot aan de guicontroller. Deze kan dan errorhandling zelf afhandelen (System legt dus niet op welke error messages de gui krijgt)
  • Vanaf nu wordt er enkel nog gesproken over review, report is nu het verslag dat in de review zit.
  • Nu enforced de gui dat er geen illegal access kan gebeuren. Als de GUI vervangen wordt door een andere, kunnen er wel situaties ontstaan waarin er iets ongeoorloofd voorvalt. Hiervoor moeten we dus dubbele checks inbouwen, zijnde overal in de controllers nakijken of een persoon wel mag doen wat hij doet.
  • Role COC krijgt een lijst van conferences. Alle andere role niet. De COC is een role die niet kan aangemaakt worden. Een persoon zal dan ook maar 1 role COC hebben.
  • personManager is controller voor Persons, maar ook een securityManager
  • normaliter zou het tof zijn om person te laten extended tot COC,PCC, ... en die dan een conference object te geven enzo, en een list van actions. MAAR geen multiple inheritence dus da's niet zo tof.
  • activeUser verplaatst van system naar PersonManager (artifact uit vorige iteratie)
  • bij ingeven van conference dates in GUI, worden ze een per een gechecked in conferencemanager (voor de volgende datum ingegeven wordt), doormiddel van statische methodes in conference (begindatum moet voor einddatum zijn enzo)
  • We geven aan GUI lijsten van objecten maar die voert er enkel toString op uit om te displayen. Dit maakt geen extra coupling want de toString methode hoeft niet geimplementeerd worden om te werken. (Standaard in Object)
  • System moet overal checken of gebruiker acces heeft. (onze gui forceert eigenlijk de juiste access, maar dankzij strategy pattern kan die gui vervangen worden. deze gui kan bv geen access forceren, dus moeten er checks plaats vinden in ons systeem)
  • Workshops en papers worden WEL met een dubbele bijgehouden: in de Roles en in een conference. Een paper/workshop behoort tot de role van een persoon (bv een Author heeft een paper geschreven), maar ze zijn ook geupload in een conference. De conference manager zorgt dus voor het aanmaken van deze objecten. Roles worden niet bijgehouden in een conference, deze horen daar niet thuis. Je zou wel een person kunnen bijhouden, maar dit ligt niet voor de hand. Een person is redelijk ingewikkeld met al zijn roles. Deze worden apart afgehandeld door de PersonManager. Een conference hoeft verder dus geen koppeling te maken met een Person.
  • een PCC kan zichzelf niet aanstellen als PCMember.

[edit] Gui

  • De gebruiker krijgt een lijst van uit te voeren acties (use-cases). Zo'n knop wordt aangemaakt vanuit de mediator die aan een knop een command(Guicontroller controller) meegeeft, met als argument het receiving object. Als op zo'n knop geduwt wordt, wordt een actie opgeroepen in de guicontroller die dan een compositeCommand aanmaakt maar nog bijhoudt. De guicontroller maakt vraagt dan om het volgende scherm aan te maken, daar staat een submit knop in met een command (aangemaakt door de mediator) die weer gelinkt is aan de guicontroller. Als de execute methode van de command dan wordt opgeroepen stockeert de guicontroller de zojuist gebruikte command in de compositecommand. Enzovoort tot het einde van de use-case bereikt is, er is dan een final submit knop die als command de composite command heeft die een methode in guicontroller oproept om de opgeslagen data (in de composite) te verwerken tot een resultaat
  • Gebruik invoker, heeft run methode en setCommand methode. Bij elke stap zet de guicontroller de juiste command in de invoker en elke submit knop krijgt dan de referentie naar de invoker ipv de command. In de invoker worden ook alle vorige commands bijgehouden (als ze tenminste bij dezelfde serie acties hoort).
  • Mediator pattern: zorg ervoor dat elk scherm enkel met de mediator moet communiceren en niets afweet van het volgende scherm en diens inwendige werking.

[edit] Vragen voor de counselor

[edit] Onbeantwoord

  • Als we werken met int's ipv verwijzingen op sommige plaatsen (bijvoorbeeld int conferenceID ipv Conference conference), is dit dan coupling of niet. (Wij denken van niet)

[edit] Beantwoord

  • Zie sommige van mijn (Daniel) use cases. Ik heb er "Notes" in gezet in verband met de term "being assigned a paper" en de "review deadline + one week extension". Is dit duidelijk? Moet dit beter in de glossary?
  • Zie review paper/workshop. Is het correct om te stellen dat review paper eigenlijk review workshop is maar dan in de notes schrijven dat het woordje paper moet vervangen worden door workshop ipv de hele use case opnieuw te schrijven.
    • Als je een super object maakt boven workshop en paper, geef het een duidelijke naam en gebruik die term dan. Hetgeen in de notes staat kan gemakkelijk ook in de glossary, zeker als het over het gebruik van een bepaald woord gaat.
    • Assign workshop usecase: is goed zoals het is, met een verwijzing naar een extra specificatie (normaal aangezien er weinig interactie is met gebruiker) Zie wel dat je het consistent houdt met het feit dat het volledig automatisch gebeurt zonder interactie met de pcc.
  • Role Based System: Users (Coc, PCC,...) met privileges of methodes?
    • Users zelf methodes of klasses met methodes (actions/usecases)
    • Users lijst met privileges, methodes in controller(s)
      • Antwoord: zie blad; zet zeker in verslag wat je hebt bedacht met enkele voor en na delen. Toont dat je er over hebt nagedacht.
  • Database:
    • Zoals vorige keer een database nabootsen met een klasse die lijsten van objecten bevat
    • Of toch beter een meer object georienteerde oplossing: een nieuwe klasse "Conference Cyber Chair System" die enkel een lijst met conferences bevat.
      • Antwoord: key guideline: je moet de verantwoordelijkheid aan de juiste(logische) klasse toewijzen. Bijv: een conference manager zorgt voor low coupling, als je die elders moet halen heb je een andere (extra) koppeling. Als je een paper wilt lezen, haal je eerst de conference op en vraag je dan aan de conference om de paper. Belangrijk dat je verschillende mogelijkheden afweegt tegen elkaar, er is geen optimale oplossing.
  • Onze sequence diagrams bevatten de inhoud van de system sequence diagram! Daarom was het fout.
-> ff ter verduidelijking, die sequence diagrams waren van een voorhistorisch tijdperk toen we nog niet eens met usecase 
controllers werkte. Dan is het nogal logisch dat die dingen compleet fout waren, maar dat is enkel artefact...
  • Hoe ver moeten we gaan in de use-case specificatie.
    • Hoe concreter de use-case hoe beter. Door op te splitsen in de gevallen die fout kunnen gaan, wordt alles duidelijker (wees daar dus zo specifiek mogelijk).
  • Hoever moeten we gaan in het opsplitsen in stappen de use case, vooral als de stappen allemaal zonder interactie gebeuren.
    • Zulke stappen mogen altijd samengenomen worden in een grote stap. De extensies moeten dan wel een beetje meer tekst bevatten. Je mag gewoon zeggen op het einde van de extensie 'resume step 1' of 'goto step 1 and resume from'
  • Is het nuttig om sub-usecases te gebruiken voor de grote use cases (ook voor hergebruik)?
    • Bijv. 'Download paper use case' mag perfect worden ingeplugd in de use-cases die deze gebruiken. (met include download paper use case)
  • Is het goed als een use-case twee dingen bevat die te maken hebben met andere gebruikers (actoren?) (hetgeen wel lichtjes gekoppeld is).
    • Geef als primary actor op PCC of PC, hereafter known as the Reviewer Of gewoon primary actor reviewer en specifieer dan later wie een reviewer kan zijn in de glossary. Moet ook duidelijk staan in het use-case-diagram (een link van twee actoren naar eenzelfde use-case).
  • Een COC kan meerdere conferences organizeren, waarbij elk conference een of geen workshop commitee heeft. De COC stelt ook meerdere WSC aan voor de verschillende conferences die hij organiseert. Het probleem is nu dat we in het domain model niet kunnen opleggen dat hij enkel WSC's kan aanstellen voor conferences die hij zelf organiseert. (Er is immers een link <COC 1 - * WSC>)
    • Goed gemodelleerd. Zie hieronder.
  • In domain model:
    • Nuttig om een evaluation te modelleren die het gemiddelde geeft van reports? Als het concept nuttig is in het probleem domein dan wel. De term gemiddelde lijkt weer te neigen naar het oplossingsdomein, omdat die zegt HOE de evaluatie zal gebeuren!
    • Domain model dient voor beschrijving van het probleem model
    • Tijdlijn erbij zitten is zeer goed. Keuze: modelleer je de concepten en ga je textueel verbanden beschrijven met andere concepten of modelleer je het met extra links/contraints in het model zelf.
    • Is op dit moment nog niet te complex!
    • Cardinaliteit: is een soort van contraints
    • Topic selection: oppassen met term container, lijkt te gaan naar solution domain; dus goed uitleggen in de glossary of weglaten. Dit concept stelt wel degelijk iets voor in het probleem domain. Maak alle textuele beschrijvingen zo duidelijk mogelijk (Is before -> Must be made before)
    • Woordjes zoals "has": zeker oppassen, want de betekenis kan van geval tot geval verschillen, maakt het dus onduidelijk aangezien de betekenis verschilt. Oppassen met generische woorden.
    • Cardinaliteiten tussen COC, Conference en WSC: deze kloppen, de assigns relatie verstrengt eigelijk de tweevoudige relatie COC-Conference-WSC. Maar zoals het nu is, is het duidelijk.
    • Je kan een soort van superconcept maken voor bestaande concepten om overeenkomstige contstraints en verbanden te moddeleren. Bijvoorbeeld een Event-concept als superconcept voor Conference en Workshop die dan allebei een aantal datums hebben. Btw. als je in het domain model vanuit twee concepten naar eenzelfde derde concept gaat betekent dit niet dat dit een verbinding is met dezelfde instantie van dat concept. Als dit wel de bedoeling is moet dit gemodelleerd worden als een extra constraints.
  • Vragen hoe het zit met het system die een use case initialiseerd
    • JA dat mag.

[edit] Vragen voor klant

[edit] Onbeantwoord

Zijn conference topics ook geldig voor workshops of kunnen workshops andere topics hebben?

edit by kjelle: volgens de opgave gaat een workshop over 1 conference topic specifiek
edit2 by kjelle: een halve pagina later wordt er echter over workshop topicSSS gesproken.. naja :P
  • zijn voorkeurstopics afhankelijk per conference of per pcmember?

[edit] Beantwoord

  • Als de toewijzing van papers niet kan doordat zijn affiliation dit verbiedt, dan is het maar zo!!
    • Het verschil van aantal toegewezen papers mag dan wel meer dan 1 bedragen. Eerlijkheid is het belangrijkst.
  • Is er een deadline dat de PCC een lijst van PCmembers's kan opstellen?
    • Er staat geen datum op vast. Zeker voor "Call of papers". PCC heeft immers tijd nodig om alles in orde te krijgen en als hij alles heeft is er de "Call for paper launch".
  • PCC: call for papers launch. Moet dit automatisch gedaan worden of moet dit expliciet gedaan worden door de coc.
    • Launch is het moment dat alles vastgelegd is op het systeem. Van dan af is het bekend. Er moet mss iets getoond worden maar er worden geen massa berichten verstuurd. Het systeem wordt niet belast met zulke dingen.
  • Hoe de COC conference aanmaken use case aanpakken.
  • Affiliation: wat bedoelen ze daarmee? Algemeen, specifiek. Organisatie?
    • Organisatie
  • Prefer topics ok maar wat met veto topics?
    • Niet aan gedacht, nog nooit nodig gehad, dus NEE.
  • Cancel conference, nodig voor jou? Wat zijn de gevolgen?
    • Niet aan gedacht, zware gevolgen omdat er reeds kosten gemaakt zijn. Ook aanpassen is niet echt nodig (omwille van extra kost).
  • Moet je de pcc en wsc kunnen veranderen als coc?
    • zelf invullen, geen nood aan.
  • Als er minder work shops of papers zijn dan aangegeven door de coc, wat gebeurd dan. Worden alle ingegeven papers dan geaccepteerd of wordt de conference gecancelled.
    • workshop: beslissing ligt bij wsc, manuele beslissing.
    • papers: richtlijn blijven volgen (op basis van punten: minstens drie punten nodig); om kwaliteit te bewaren. Het is ook niet zo dat er uit de ingediende papers het maximum wordt geselecteerd. Enkel de beste
  • Wat is nu een workshop: die bevat blijkbaar zelf ook nog papers... Er is dan wsl de mogelijkheid om een call for papers te doen voor die workshop (subconference-style) of de wso kan zijn vooraf gekozen papers gebruiken (self-organised). Wat doe je als je het zelf organiseerd, houdt dit dan ook nog in dat er papers zijn of mag je dan een eigen invulling geven (praktische dingen, tentoonstelling, god weet wa)
    • Veeleer de neven activiteiten op de conference. Eigenlijk een soort kleine conferentie dus.
  • Datums bij sub-conferences
    • submit datum en andere mogen zelf gekozen worden binnen het tijdframe van de conference. Enkel de dagen dat de conference doorgaat blijven hetzelfde.
  • Een wso wordt automatisch Coc?
    • Voor een sub conference heeft het weinig zin om onderscheid te maken tussen COC en PCC, je mag kiezen hoe je dat implementeert. Co-organisers zijn wel automatisch pc-members.
  • Datums van een workshop vallen binnen de tijdsframe van de conference, ze hebben dus minder tijd om hun workshop in te vullen (de call for papers van een workshop zal impliciet korter zijn als die van de conference). Worden workshops en papers tegelijk ge-evalueerd dan blijft er voor voorgaande fenomeen weinig tijd over, als ze apart (vroeger) worden geselecteerd, heeft de wso nog wat meer tijd
    • Datums hoeven niet samen te vallen tussen ws en papers. (submit en review-datums)
  • Er is mogelijkheid om een week extensie te hebben.
    • Dit moet dus impliciet opgelegd worden in de keuze van review en notification datum (minstens een week later).
  • Als een PCC een review moet doen wat is dan zijn deadline.
    • Dit is de notification datum. Dus ook best wat tijd overhouden tussen extensie en notification datum. 8 dagen tussen dus.

[edit] Glossary of Terms

  • Schedule: Kan zowel verband hebben met submission, notification date etc... of met het aantal slots dat in een conference zelf past. Wij kiezen het eerste.
  • Reviewer: Een reviewer kan zowel een PCC als een PC Member zijn. Dit is een term die wordt gebruikt voor use cases die zowel de PCC als de PC members kunnen uitvoeren.
  • Review deadline:
  • Affiliate: Author or PC Member
  • WS = Workshop
  • WSO = Worshop Organizer
  • Program Committee Module: Een module voor de organisatie van paper submissions. Deze wordt standaard gebruikt in een conference en kan dan ook gebruikt worden voor een workshop.

[edit] Nuttige Links

http://en.wikipedia.org/wiki/Design_pattern_(computer_science)

[edit] TODO

  • use case voor coc voor max aantal papers en workshop
  • (paper distribution)

[edit] Tijdsbesteding

Naam Beschrijving Datum Tijdsduur
Kjelle, Daniel, Tuur, Mathias Assignment analyseren, verantwoordelijkheden bepalen, use cases onderscheiden. 18/02/08 3u
Kjelle, Daniel, Tuur Use Case overleggen 22/02/08 1.5u
Kjelle, Daniel, Tuur Domain Model Maken 22/02/08 1.5u
Daniel, Tuur,Mathias Domain Model Verbeteren, Sommige Use Cases uitwerken. Nadenken over wat te vragen aan PC. 25/02/08 3u
Daniel, Tuur,Mathias Overleg met de klant 26/02/08 1u
Mathias, Kjelle, Daniel Use case uitwerken. 28/02/08 2.5u
Tuur, Daniel Overleg met Counselor 29/02/08 1u
Kjelle Use Cases schrijven 01-02/03/08 1u
Mathias Use Cases schrijven 02/03/08 2u
Daniel Use Cases schrijven 01-02/03/08 3.5u
Daniel, Kjelle, Mathias, Tuur Use Cases Nalezen 03/03/08 2u
Daniel, Mathias Use Cases Maken & Bewerken 03/03/08 2u
Tuur, Kjelle Design 07/03/08 1u
Tuur, Kjelle, Mathias, Daniel Bespreking met counselor 07/03/08 1u
Tuur, Kjelle, Mathias, Daniel Design: klassediagram 10/03/08 5u
Tuur, Kjelle, Mathias, Daniel Design: klassediagram 13/03/08 2u
Daniel, Tuur Design: klassediagram 14/03/08 1u30
Tuur, Kjelle, Mathias, Daniel Design: klassediagram 14/03/08 1u30
Kjelle Design: sequence diagram + implementatie 14/03/08 2u
Mathias,Daniel Implementatie 15/03/08 5u
Kjelle Implementatie 15-16/03/08 8u
Mathias Implementatie 16/03/08 1u
Mathias,Tuur,Kjelle,Daniel Design & Implementatie 17/03/08 8u
Mathias,Tuur,Kjelle,Daniel Design & Implementatie 18/03/08 9u
Mathias,Tuur,Kjelle,Daniel Design & Implementatie & Verslag 19-20/03/08 26u
Mathias Implementatie 21/03/08 2u
Personal tools