Primers principis de disseny
Abstract
En aquest material hi trobaràs: Què són els principis GRASP / Principi general d'assignació: Expert / Captura d'ES: Controlador / Principis avaluatius: Alta Cohesio; Baix Acoblament
Full text
Ampliació a l’enginyeria del programari 20202 Josep M. Merenciano [email protected] Primers principis de disseny
Què hi ha en aquest material AMEP Josep M. Merenciano 2 Què són els principis GRASP Principi general d'assignació: Expert Captura d'ES: Controlador Principis avaluatius: Alta Cohesio; Baix Acoblament
GRASP AMEP Josep M. Merenciano 3 GRASP (General Responsibility Assignment Software Principles) Principis bàsics de disseny per a l’assignació de responsabilitats Introduïts per en Larman Constitueixen un vocabulari universalment conegut Facilitat de comunicació
Un principi general AMEP Josep M. Merenciano 4 Problema: Quin principi general podem aplicar per assignar alguna responsabilitat a un objecte? Solució: Principi Expert
Expert (GRASP) AMEP Josep M. Merenciano 5 Diem que C és expert en R La responsabilitat R l'assignem a un component C que tingui (o sàpiga com obtenir) tota la informació necessària per poder realitzar la responsabilitat demanada Principi
Dos significats d’expert AMEP Josep M. Merenciano 6 Principi Expert Principi general d'assignació de responsabilitats Component (o objecte) expert en R Component o objecte que té el potencial o coneixement suficient per realitzar la responsabilitat R Dos o un El principi Expert assigna la responsabilitat R a algun dels experts en R.
Experts parcials i per delegació AMEP Josep M. Merenciano 7 Expert parcial (en R) Coneix part de la informació necessària per exercir la responsabilitat R, però no la coneix pas tota Expert per delegació (en R) No és un expert però se'n pot convertir si li enviem la informació pertinent
Diferents formes d’usar Expert AMEP Josep M. Merenciano 8 Expert: La responsabilitat R l'assignem a algun dels seus experts L'expert pot necessitar col·laborar amb algú altre per obtenir part de la informació d'expertesa L'existència d'experts parcials pot exigir la necessitat d'una col·laboració gestionada La delegació de l'expertesa augmenta els candidats a exercir la responsabilitat
Primera responsabilitat AMEP Josep M. Merenciano 9 Quina és la primera responsabilitat que cal resoldre? Quina és la primera responsabilitat que cal assignar?
Controlador de CU AMEP Josep M. Merenciano 16 Els ES són capturats per un controlador Un controlador comú pot mantenir la informació a comunicar com a valors dels seus atributs Podem parlar de “Controlador del CU” enlloc del “Controlador de l'ES” Tots els ES d'un mateix CU són capturats pel mateix objecte controlador Principi Mateix = mateix objecte, no pas component
Controlador artificial AMEP Josep M. Merenciano 17 Situació: Hem d' usar un controlador No podem assignar aquesta responsabilitat a cap component No tenim cap concepte que modelitzi tot el sistema o subsitema considerat Els components que poden rebre la responsabilitat no són pas adients En assignar-los la responsabilitat, violem d'altres principis de disseny Solució Introduïm un component “artificial” Violem Espill El principi de la Fabricació Pura ens diu sota quines condicions es pot violar Espill. El cas del controlador artificial compleix aquestes condicions.
Encarrilament AMEP Josep M. Merenciano 18 El controlador no fa res; és el pont entre la Presentació i el Domini La tasca bàsica d'un controlador és la delegació de les responsabilitats que els ES li demanen Principi
AMEP Josep M. Merenciano 19 CU ferInscripció
CU ferInscripció AMEP 20 Josep M. Merenciano POSTs mal expressades. Perquè??
Controlador Partim del MComp buit Accedim a MC a veure si hi ha algun concepte que representi tot el sistema No n'hi ha cap Introduïm el component GastemLaSola AMEP 21 Josep M. Merenciano
D’on pot sortir GLS Ja el teníem a MC Afegim un component homòleg a MComp (Espill) No el teníem a MC Podem modificar MC per tal que el tingui Desenvolupament àgil Cal analitzar les seves interrelacions Podem introduir un controlador de CU artificial Violem Espill Hem vist que és un cas on es pot violar AMEP 22 Josep M. Merenciano El principi de la Fabricació pura és qui permet aquesta violació No és el nostre cas Ara sí que és el nostre cas Amb l’objectiu d’evitar al màxim les reconsideracions, sempre que sigui possible intentarem mantenir el MC
Singleton Concepte GastemLaSola (en cas d'haver-lo introduït) En volem una sola realització (Singleton) Component GastemLaSola En volem una sola realització (Singleton) AMEP 23 Josep M. Merenciano GLS 1Podem tenir un singleton a nivell conceptual, a nivell de disseny, o a nivell d'implementació
Model actual (1) AMEP 24 Josep M. Merenciano Diagrama de comunicació MComp 1 Paràmetre
Creació de la i:Inscripció Ja hem resolt la primera responsabilitat: la captura de l’ES novaInscripció(c:Caminada) Ara toca assignar les responsabilitats que pertoquen a aquest ES Les responsabilitats d’un ES estan expressades en les POST del seu contracte Les PRE indiquen quines condicions podem assumir per tal d’arribar a les POST A novaInscripció(c:Caminada) la primera responsabilitat és assegurar l’existència d’una nova i:Inscripció Cal, per tant, crear una i:Inscripció AMEP 25 Josep M. Merenciano
Baix Acoblament (GRASP) AMEP Josep M. Merenciano 32 Davant de dues alternatives d'assignació de responsabilitats, ens decidim per aquella que en el disseny resultant els components tinguin un acoblament més baix
Dos models per comparar AMEP 33 Josep M. Merenciano Model 1 GLS Responsabilitats Controlador Creador d'Inscripció Coneixement Caminada Inscripció Caminada Sense responsabilitats ni necessitats de coneixement conegudes Expert en la creació Expert en la creació Model 2 GLS Responsabilitats Controlador Coneixement Caminada Caminada Responsabilitats Creador d'Inscripció Coneixement Inscripció
Anàlisi dels dos models (1) Model 1 GLS més acoblat menys cohesionat Caminada menys acoblada més cohesionada AMEP 34 Josep M. Merenciano Model 2 GLS menys acoblat més cohesionat Caminada més acoblada menys cohesionada L'anàlisi ha de ser global, no pas individual per cada component
Anàlisi dels dos models (2) Model 1 Tres* components, Dues responsabilitats Assignades a un sol component Un component ha de conèixer els altres dos AMEP 35 Josep M. Merenciano Model 2 Tres* components, Dues responsabilitats Assignades a DOS components Cal afegir una delegació de responsabilitat Cada component n'ha de conèixer com a molt un altre *Estem creant una Inscripció. Per tant aquest és un component que segur que hem de tenir Màxima distribució de responsabilitats (Alta Cohesió) Màxima distribució de coneixement (Baix Acoblament)
Conclusions actuals M1 Viola Alta Cohesio Viola Baix Acoblament Viola Encarrilament El podem veure com un cas particular d'Alta Cohesió AMEP 36 Josep M. Merenciano M2 Aparentment no viola cap dels principis Model considerat Controlador: GLS Creador d'Inscripció: Caminada