Generació de valors d’identificació
Abstract
En aquest material hi trobaràs: Mecanismes per a la generació dels valors d’identificació (Generació per comprovació; Generació única) / Variants (Individualitzció induïda; Autoindividualització;Individualització tardana; Individualització en l’emmagatzemador) / Principi de la individualització efectiva (Usem sempre la individualització gen l’emmagatzemador: el responsable d’emmagatzemar l’objecte també ho és de generar el seu identificador)
Full text
Ampliació a l’enginyeria del programari 20172 Josep M. Merenciano [email protected] Generació de valors d’identificació
Què hi ha en aquest material AMEP Josep M. Merenciano 2 Mecanismes per a la generació dels valors d’identificació Generació per comprovació Generació única Variants Individualitzció induïda Autoindividualització Individualització tardana Individualització en l’emmagatzemador Principi de la individualització efectiva Usem sempre la individualització gen l’emmagatzemador: el responsable d’emmagatzemar l’objecte també ho és de generar el seu identificador
AMEP Josep M. Merenciano 3 Mecanismes de generació d’identificadors
Tipus d’identificador AMEP Josep M. Merenciano 4 Identificació externa L’usuari és qui decideix el valor d’identificació de cada realització L’usuari extern al sistema crea els identificadors Ell és el responsable de la unicitat dels valors S’aplica el principi de la Identificació robusta Identificació interna És el sistema qui decideix el valor d’identificació de cada realització El sistema crea els valors dels identificadors Només ens hem de preocupar dels casos d’identificació interna
Identificadors essencials AMEP Josep M. Merenciano 5 Estem analitzant identificadors essencials Aquells que són consubstancials a l’objecte Per tant la creació del valor d’identificació ha de ser en el CU de creació de l’objecte El principi de Creador Orb (o Canònic) assegura que en aquest CU també s’emmagatzema l’objecte Per tant podem assumir l’existència d’un emmagatzematge A→B* de l’objecte creat
Tipus de generació AMEP Josep M. Merenciano 6 Generació única (GU) Ex. Valor correlatiu Ex. Hora (en milisegons) de la petició Generació per comprovació (GPC) Usem un emmagatzematge de contrast per comprovar si el valor generat és únic 1. Generem un valor 2. El validem amb l’emmagatzematge de contrast Si l’emmagatzematge de contrast conté totes les realitzacions d’un mateix component, direm que el contrast és total; altrament direm que el contrast és parcial
AMEP Josep M. Merenciano 7 GPC: Emmagatzematge de contrast
Emmagatzematge de contrast AMEP Josep M. Merenciano 8 Suposem que a:A→B* és l’emmagatzematge de contrast Això significa que: abast(a:A→B*)és un espai d’identificació El valor d’identificació donat a un b:B∈abast(a:A→B*): Té sentit a a:A→B* En pot tenir en un c:C→B* tal que abast(c:C→B*)⊆abast(a:A→B*) En qualsevol altre cas o bé pot no servir per recuperar cap objecte, o bé l’objecte recuperat pot ser que no sigui el b:B
Identificació essencial AMEP Josep M. Merenciano 9 La identificació ha de ser local o global L’emmagatzematge de contrast és el context de de localitat Si el contrast és total, l’àmbit és global El contrast permet donar un valor d’identificació diferent a cadascuna de les realitzacions d’un mateix component
Consistència de la GPC AMEP Josep M. Merenciano 16 Demostració Suposem que creem a:A amb identificador id, i que no el posem en el contrast Quan intentem crear un nou objecte, com que a:A no està en el contrast, quan preguntem si podem crear un nou objecte a’:A amb identificador id, el mecanisme de comprovació ens dirà que endavant ¡! Tota objecte com a mínim ha d’estar en l’emmagatzematge de contrast
Es tracta d’una assumpció un xic simplificadora, que no altera en res les conclusions Informació d’expertesa en la GPC AMEP Josep M. Merenciano 17 La informació necessària i suficient per a generar un valor d’identificació vàlid és l’emmagatzematge de contrast
Qui crea l’identificador? AMEP Josep M. Merenciano 18 Individualització induïda (II) Generador d’identificadors Autoindividualització (AI) El propi objecte, durant la seva creació Individualització tardana (IT) L’add genera el valor d’identificació Individualització en l’emmagatzemador (IE) L’emmagatzemador, en el moment de fer l’add en l’emmagatzematge Com a cas particular, el creador de l’objecte Qui és el responsable de crear el valor d’identificació d’un objecte? Expert: Emmagatzematge de contrast
@@@@Full de ruta AMEP Josep M. Merenciano 19 En el que segueix analitzarem, per cadascun dels mètodes acabats d’enunciar, qui ha de crear el valor d’identificació d’un objecte segon En cada cas analitzarem per separat els casos d’identificació i d’identificació no essencial Abans però plantegem uns qüestions comunes a tots els mètodes considerats
Caraterístiques de la identificació essencial AMEP Josep M. Merenciano 20 Estem en el CU de creació de l’objecte El valor d’identificació que estem creant, un cop creat ja no es pot modificar Pot ser que no sigui l’únic identificador essencial de l’objecte Exemple: inscripció es manté simultàniament en un repositori centralitzat i en un repositori fragmentat per caminada En cas d’identificació contextual aquesta ha de ser local Tot objecte realització del mateix component té un context des d’on accedir-hi
Caraterístiques de la identificació NO essencial AMEP Josep M. Merenciano 21 Podem estar en qualsevol CU Necessàriament l’objecte ja té un identificador essencial (local o global) La identificació contextual no té perquè se local La visibilitat d’identificació que estem considerant no té la seva inversa obligada
AMEP Josep M. Merenciano 22 Situació Creo un objecte AX→B* amb x El poso a a CY→B* amb y Tinc dos id diferents Exemple RestaurantnumR→Critica*, GolafrenumG→Crítica No són un sunbpnjunt de l’altre
AMEP Josep M. Merenciano 23 GPC: Individualitzció induïda
GPC-II: Descripció del mecanisme AMEP Josep M. Merenciano 24 El creador de l’objecte objectiu rep l’identificador com a argument de la petició de creació Creador de l’objectiu És expert en la creació de l’objectiu L’expertesa però pot ser delegada En aquesta delegació hi pot haver el valor de l’identificador Cal un individualitzador que creï el valor de l’identificador Individualitzador Ha de tenir visibilitat sobre l’emmagatzematge de contrast No modifica l’emmagatzematge de contrast L’individualitzador no crea l’objecte objectiu L’emmagatzematge de contrast conté tots els objectes que individualitzem amb l’identificador
Individualització induïda i inconsistències AMEP Josep M. Merenciano 25 L’individualitzador genera un identificador però no crea l’objecte identificat amb aquest valor Si abans d’usar el valor generat per a crear un objectiu algú demana un altre valor a l’individualitzador aquest pot retornar un valor repetit!!!! Tenim el perill de crear dos objectes amb el mateix valor de l’identificador La generació per comprovació (GPC) amb el mecanisme de la individualització induïda (II) no és una bona solució per a la creació del valor d’identificació
IT per GPC: Descripció del mecanisme AMEP Josep M. Merenciano 32 El multiobjecte d’emmagatzematge és l’encarregat de crear el valor de l'identificador En concret se n’encarrega l’add La idea és que l’objecte no té valor d’identificació fins que no s’emmagatzema en un multiobjecte És coherent amb la idea que la identificació és per individualitzar dins d’un conjunt En aquest sentit s’assembla a la Individualització tardana(IT). La diferència és que en IE l’add() rep el valor d’identificació a emprar; i en IT és el procés d’afegir l’objecte al multiobjecte qui crea aquest valor
Modificació de l’especificació dels multiobjectes AMEP Josep M. Merenciano 33 L’add() ha de: Crear el valor d’identificació Modificar el valor de l’atribut identificador, en el cas d’identificació global Retornar el valor d’identificació generat Perquè? Baixa la cohesió de l’add() Acoblament indesitjat Acobla l’emmagatzematge al mecanisme de creació del valor d’identificació Tot seguit ho analitzem
Acoblament semàntic indesitjat AMEP Josep M. Merenciano 34 Que l’add generi el valor d’dentificació sembla tenir la seva lògica El multiobjecte sap qui conté: és expert en el contrast En afegir un nou objecte pot generar un nou valor d’identificació i assignar-li Però el mecanisme de generació queda ocult dins del propi multiobjecte L’usuari no hi pot incidir per crear el seu propi mecanisme Per exemple, no podem decidir si l'identificador és numèric o textual; és el multiobjecte qui ho decideix La manca de flexibilitat és resultat de l’acoblament indesitjat
Dos mecanismes molt similars AMEP Josep M. Merenciano 35 GPC-IE i GPC-IT en són mecanismes molt similars Ambdós creen el valor d’identificació en les “proximitats” de l’add De fet, l’anàlisi és idèntica Tot seguit expressem les diferències fonamentals entre ambdós mecanismes, i passem a analitzar GPC-IE Les conclusions són les mateixes en ambdós casos A excepció de l’acoblament entre emmagatzematge i creació del valor d’identificació que tenim a IT Cal anar en compte en l’asincronia de la IE, que pot degenerar i ocasionar els mateixos problemes que la individualització induïda (II)
Comparativa OT vs IE AMEP Josep M. Merenciano 36 IT IE L’emmagatzemador fa l’add, i rep d’aquest el valor d’identificació L’add retorna el valor d’identififcació L’emmagatzemador crea el valor d’identificació i l’envia a l’add L’add rep el valor d’identificació Dependència de l’emmagatzematge No es pot generar valor d’identificació sense fer l’emmagatzematge Independència de l’emmagatzematge Es pot generar valor d’identificació sense fer l’emmagatzematge Sincronia La creació del valor d’identificació i l’emmagatzematge són en el mateix moment Asincronía La creació del valor d’identificació i l’emmagatzematge no són en el mateix moment
Dos mecanismes molt similars AMEP Josep M. Merenciano 37 GPC-IE i GPC-IT en són mecanismes molt similars IE L’emmagatzemador crea el valor d’identificació i l’envia a l’add L’add rep el valor d’identificació Es pot generar valor d’identificació sense fer l’emmagatzematge La creació del valor d’identificació i l’emmagatzematge són en el mateix moment IT L’emmagatzemador fa l’add, i rep el valor d’identificació L’add retorna el valor d’identififcació No es pot generar valor d’identificació sense fer l’emmagatzematge La creació del valor d’identificació i l’emmagatzematge no són en el mateix moment
AMEP Josep M. Merenciano 38 Individualització en l’emmagatzemador (IE)
IE per GPC: Descripció del mecanisme AMEP Josep M. Merenciano 39 Creem l’objecte, i en el moment d’introduir-lo en un multiobjecte, l’origen d’aquest li dóna el valor d’identificació A l’add() indiquem el valor d’identificació La idea és que l’objecte no té valor d’identificació fins que no s’emmagatzema en un multiobjecte És coherent amb la idea que la identificació és per individualitzar dins d’un conjunt En aquest sentit s’assembla a la Individualització tardana(IT). La diferència és que en IE l’add() rep el valor d’identificació a emprar; i en IT és el procés d’afegir l’objecte al multiobjecte qui crea aquest valor (i per tant l’add() l’ha de retornar) GPC IE
Identificació global AMEP Josep M. Merenciano 40 Fins a cert punt, viola creació primerenca Fins que no es fa l’add() no tenim valor a l’atribut identificador Arguments que diuen que no hi ha violació Com veurem, la GPC-IE exigeix que si hi ha identificació global, l’emmagatzematge de creació ha de ser un repositori centralitzat I en aquest cas el contrast i l’emmagatzematge de creació conicideixen: Quan es crea l’objecte tot seguit s’emmagatzema El temps entre la creació i l’emmagatzematge és petit i no és visible des de l’exterior Arguments que diuen que sí que hi ha violació Com veurem, la Incorporació Tardana demana posposar l'emmagatzematge Augmenta el temps en què l’objecte no té emmagatzemador Però continua essent un estat no visible des de l’exterior GPC IE Global Argument anàleg per a GPC-IT
Identificació contextual (1) AMEP Josep M. Merenciano 41 Demostració El context d’identificació local és un multiobjecte L’origen d’aquest multiobjecte és el creador i emmagatzemador de l’objecte Segons GPC-IE, en fer-hi l’emmagatzematge de l’objecte es dóna el valor d’identificació. Com que la identificació és local, no hi ha problema: el propi emmagatzematge fa de contrast Per Creació Primerenca també cal donar valor a l’atribut identificador. Però això exigeix, per GPC-IE, coneixement d’un repositori centralitzat. I aquest coneixement no el tenim Només coneixem un fragment del repositori Si la identificació local és la de creació, no és possible la identificació global GPC IE Argument anàleg per a GPC-IT
AMEP Josep M. Merenciano 48 GPC: Conclusions
Conclusions de la GPC AMEP Josep M. Merenciano 49 Per tal que el mecanisme de Generació per comprovació (GPC) funcioni correctament cal: Identificació global El responsable de crear el valor d’identificació és el creador de l’objecte (Indivividualització en l’emmagatzemador) El contrast és un repositori centralitzat Identificació local El responsable de crear el valor d’identificació és l’emmagatzemador de l’objecte (Indivividualització en l’emmagatzemador) Només en el cas que no hi hagi identificació global, una identificació local correspon a l’emmagatzematge de creació, i llavors el responsable també és el creador de l’objecte
Conclusions, reformulades AMEP Josep M. Merenciano 50 En cas de tenir atribut identificador, el creador de l’objecte li ha de donar valor En qualsevol altre cas és l’emmagatzemador qui decideix el valor d’identificació
AMEP Josep M. Merenciano 51 Generació única
Generació única (GU) AMEP Josep M. Merenciano 52 Tot mecanisme de generació única ha de mantenir un estat intern Ex. Recordem el darrer valor generat, en una seqüència infinita Experts en la generació única Els coneixedors de l’estat intern de la GU Mecanismes per la generació dels identificadors Generació per comprovació (GPC) Generació única (GU)
Individualització induïda (GU) AMEP Josep M. Merenciano 53 La possibilitat d’inconsistències desapareix Sempre donem un nou valor, independentment de si aquest s’ha usat per a crear un nou objecte, o no Possible violació del principi de la Cistella L’individualitzador genera un valor que ha de viatjar fins al creador de l’objectiu
Autoindividualització (GU) AMEP Josep M. Merenciano 54 El principi del Desconeixement del grup no és aplicable La generació de l’identificador no depèn del grup o de l’emmagatzematge, sinó de l’estat de la generació Cal passar l’estat al create create(estatGU) Acoblament i cohesió La cohesió del create baixa Creem l’objectiu i el seu identificador Acoblem l’objecte objectiu a l’estat de la generació Acoblem la creació i la individualització
Individualització tardana (GU) AMEP Josep M. Merenciano 55 El multiobjecte necessita conèixer l’estat de la generació La manera més simple és que en crear l’objecte que simula el multiobjecte (modisme MOMO) passem com a argument el mecanisme de generació El multiobjecte manté internament el mecanisme L’add l’usa per crear un nou valor i actualitza l’estat intern Acoblem la creació i la individualització
Individualització en l’emmagatzemafor (GU) AMEP Josep M. Merenciano 56 La GU única és independent de l’emmagatzematge L’emmagatzemaor no necessàriament és Expert en la generació de l’identificador Sempre li podem delegar l’expertesa de l’estat de la GU
El creador crea l’identificador (GPC+GU) AMEP Josep M. Merenciano 57 La Individualització en l’emmagatzemador i el principi del Creador orb asseguren el correcte funcionament tant del mecanisme de la Generació per comprovació (GPC) dels valors d’identificació, com del mecanisme de la Generació única (GU)