scieee AI-readable full text Open interactive document viewer

Primers principis de disseny

Merenciano Saladrigas, Josep Maria

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