Stiamo lavorando su un sistema BugTracking e siamo ancora in fase di apprendimento.
Un BugReport ha un titolo, una descrizione, (...) e anche un tag. Un tag rappresenta il progresso del BugReport, ad es.
- Novità: BugReport appena creato
- Sotto Revisione: una correzione è stata effettuata ed è in corso di revisione.
- Duplicato: il BugReport è un duplicato di un altro BugReport (cioè si tratta dello stesso bug)
In quest'ultimo caso, solo un BugReport dovrebbe essere contrassegnato come duplicato e dovrebbe memorizzare il BugReport di cui è un duplicato.
C'è un caso d'uso in cui un BugReport dovrebbe essere ispezionato: "Il sistema mostra una panoramica dettagliata del rapporto bug selezionato (...)"
Tra i colleghi, c'è una discussione su quale sia il design migliore.
Considera di seguire due progetti. Vengono mostrate solo le parti rilevanti del sistema. L'interfaccia utente non è necessariamente parte del sistema.
Design 1
Pro:
Inquestaprogettazione,l'utentericeveun'istanzadell'interfacciaIBugReportincuisonodefinitigliispettoripertinenti(getTitle(),getDescription(),...).Quindi,l'utenteèingradodirecuperaresololeinformazionicherichiede.
Contro:
Questodesignimplicacheognioggettoaziendaleavràbisognodiun'interfacciachedefinisceimetodichepossonoessereutilizzatidall'utente.Inoltre,quandogetDuplicate()vienechiamatosuunBugTag,l'utentepuòrecuperareunvalorenulldaessoseilBugTagnonèunduplicato.Se,infuturo,ades.SottoRevisioneènecessarioavereuncampo(es.UncampoUtentecheindicachistarevisionandoilBugReport),imetodiaggiuntividovrannoesseredefinitieimplementatiintutteleclassiBugTagchelamaggiorpartediessirestituirànull,analogamenteagetDuplicate().
Icolleghichesonoafavorediquestodesignhannoideesimiliperaltredecisionididesign,adesempioquandopossibile,restituisconoun'interfacciadiunoggettobusiness.
Design2
[NOTA:inBugReport,inspectState()dovrebbeesserechiamatoinspectBugReport()]
Pro:
QuandoBugTagacquisiscecampiaggiuntivi,soloilmetodoinspectState()dovràesseremodificatodiconseguenza.Nonc'èbisognodiinterfacceperglioggettibusiness.ilsistemafaesattamentequellochechiedeilcasod'uso:ispezionaBugReport(cioèrestituisciunastringacherappresentalasuarappresentazione).
Contro:L'utenteottieneunastringaincuisonoconcentratetutteleinformazionidaBugReport.Sel'utentedesiderasoloiltitolo,riceveràcomunqueleinformazionicompletesulBugReport.
Icolleghichesonoafavorediquestodesignhannoideesimiliperaltredecisionidiprogettazione,cioèanalizzanoleinformazioniinunastringaelaespongonoalmondoesterno.
Siamounpiccologruppoditrepersoneincuimisonovenutainmenteilsecondodesignequalcunaltroconilprimodesign.Stiamodiscutendopesantementediquestoesiamoentrambifermamentefermi.Laterzapersonaprovaavalutareentrambiiprogettieafornireproecontro.
Stiamotentandodiapplicare
Quali sono ulteriori vantaggi e svantaggi non menzionati sopra? Entrambi i disegni sono ok o sono uno / entrambi i disegni non realizzati?
Questa domanda è sorta dopo questo .