,OSURJHWWRGLGHWWDJOLR//'
Transcription
,OSURJHWWRGLGHWWDJOLR//'
,OSURJHWWRGLGHWWDJOLR//' Scopo della fase di LLD, detta anche di SURJHWWR SURFHGXUDOH, è quello di specificare il come debba essere poi implementato ciascun FRPSRQHQWH, specificando: • • • • dettagli algoritmici, strutture reali dei dati, relazioni tra funzioni e strutture dati, packaging del software: cioè come mettere insieme in moduli funzioni e strutture dati. Ingegneria del Software Prof. G. A. Di Lucca - Univ. del Sannio 1 :KDWLVD&RPSRQHQW" • 20*8QLILHG0RGHOLQJ/DQJXDJH6SHFLILFDWLRQ [OMG01] defines a component as – “… a modular, deployable, and replaceable part of a system that encapsulates implementation and exposes a set of interfaces.” • 22 YLHZ: a component contains a set of collaborating classes • &RQYHQWLRQDOYLHZ: logic, the internal data structures that are required to implement the processing logic, and an interface that enables the component to be invoked and data to be passed to it. Ingegneria del Software Prof. G. A. Di Lucca - Univ. del Sannio Ingegneria del Software 2 1 22&RPSRQHQW =J=HUOEO ?H=OO @AOECJ ?KILKJAJP ?KILQPA'K> -NEJP'K> JQI>AN,B-=CAO JQI>AN,B0E@AO L=LAN1ULA I=CJEBE?=PEKJ LNK@Q?PEKJ#A=PQNAO -NEJP'K> EJEPE=PA'K> ?KILQPA'K> KOP L=OO'K>PK-NEJPAN EJPANB=?A ?KILQ PA'K> ?KILQPA-=CA KOP ?KILQPA-=LAN KOP ?KILQPA-NK@ KOP ?KILQPA1KP=H'K> KOP EJ PANB=?A EJ EPE=PA'K> >QEH@4KNG,N@AN ?DA?G-NEKNEPU L=OO'K>PK -NK@Q?PEKJ AH=>KN=PA@ @AO ECJ ? H=O O -NEJP' K> JQI>AN,B-=CAO JQI>AN,B0E@AO L=LAN1ULA L=LAN4AECDP L=LAN0EVA L=LAN KHKN I=CJEBE?=PEKJ ?KHKN/AMQENAIAJPO LNK@Q?PEKJ#A=PQNAO ?KHH=PEKJ,LPEKJO >EJ@EJC,LPEKJO ?KRAN0PK?G >HAA@ LNEKNEPU PKP=H'K> KOP 4,JQI>AN ?KILQPA-=CA KOP ?KILQPA-=LAN KOP ?KILQPA-NK@ KOP ?KILQPA1KP=H'K> KOP >QEH@4KNG,N@AN ?DA?G-NEKNEPU L=OO'K>PK -NK@Q?PEKJ Ingegneria del Software Prof. G. A. Di Lucca - Univ. del Sannio 3 &RQYHQWLRQDO&RPSRQHQW @AOECJ ?KILKJAJP CAP'K>!=P= KILQPA-=CA KOP =??AOO KOPO! AH=>KN=PA@IK@QHA -=CA KOP EJ JQI>AN-=CAO EJ JQI>AN!K?O EJ OE@AO EJ ?KHKN EJ L=CAOEVA L=CA?KOP KQP EJ FK>OEVA EJ ?KHKN EJ L=CA0EVA KQP - KQP 0# CA P'K>!=P= J Q I >A N-=CAOJQ I >AN!K?O OE@A O?KHKN L=CA 0EVA L=CA =??AOO KOPO! - ?KI LQ PA -=CA KOP FK>OEVA '0 FK>0EVA?KHKN L=CA 0EVA J QI >A N- =CA OJQ I >AN!K?O KOP =??A OO KOPO! '0?KHKN HKKGQ L>=OA L=CA ?KOP - 0# HKKGQ LOEVAB=?PKN 0# =??A OO KOP! '0?KHKNOEVA FK>?KI LHA TEPU B=?PKN ' # OE@A O OE@A L=CA?KOP- Ingegneria del Software Prof. G. A. Di Lucca - Univ. del Sannio Ingegneria del Software KOP 0#9 ' # 4 2 %DVLF//'3ULQFLSOHV • • • • • • The Open-Closed Principle (OCP). ³$PRGXOH>FRPSRQHQW@VKRXOGEHRSHQ IRUH[WHQVLRQEXWFORVHGIRUPRGLILFDWLRQ Dependency Inversion Principle (DIP). ³'HSHQGRQDEVWUDFWLRQV'RQRW GHSHQGRQFRQFUHWLRQV´ The Interface Segregation Principle (ISP). ³0DQ\FOLHQWVSHFLILFLQWHUIDFHVDUH EHWWHUWKDQRQHJHQHUDOSXUSRVHLQWHUIDFH The Release Reuse Equivalency Principle (REP). ³7KHJUDQXOHRIUHXVHLVWKH JUDQXOHRIUHOHDVH´ The Common Closure Principle (CCP). ³&ODVVHVWKDWFKDQJHWRJHWKHUEHORQJ WRJHWKHU´ The Common Reuse Principle (CRP). ³&ODVVHVWKDWDUHQ¶WUHXVHGWRJHWKHU VKRXOGQRWEHJURXSHGWRJHWKHU´ Ingegneria del Software Prof. G. A. Di Lucca - Univ. del Sannio 5 $OJRULWKP'HVLJQ • the closest design activity to coding • the approach: – review the design description for the component – use stepwise refinement to develop algorithm – use structured programming to implement procedural logic – use ‘formal methods’ to prove logic … non è ancora la fase di codifica: per i dettagli algoritmici ci si concentra più sugli aspetti semantici che su quelli sintattici … gli algoritmi sono rappresentati ad un livello di astrazione maggiore rispetto all’implementazione. Ingegneria del Software Prof. G. A. Di Lucca - Univ. del Sannio Ingegneria del Software 6 3 $OJRULWKP'HVLJQ0RGHO • represents the algorithm at a level of detail that can be reviewed for quality • options: – graphical (e.g. flowchart, box diagram) – pseudocode (e.g., PDL) ... choice of many – programming language – decision table – conduct walkthrough to assess quality Ingegneria del Software Prof. G. A. Di Lucca - Univ. del Sannio 7 6WUXFWXUHG3URJUDPPLQJIRU3URFHGXUDO'HVLJQ uses a limited set of logical constructs: 6HTXHQFH FRQGLWLRQDO— if-then-else, select-case ORRSV — do-while, repeat until • leads to more readable, testable code • can be used in conjunction with ‘proof of correctness’ • important for achieving high quality, but not enough Ingegneria del Software Prof. G. A. Di Lucca - Univ. del Sannio Ingegneria del Software 8 4 3URJUDP'HVLJQ/DQJXDJH3'/ if condition x then process a; else process b; endif PDL if-then-else easy to combine with source code machine readable, no need for graphics input graphics can be generated from PDL enables declaration of data as well as procedure easier to maintain Ingegneria del Software Prof. G. A. Di Lucca - Univ. del Sannio 9 )ORZFKDUW a x1 b x2 x3 d f c e x4 g x5 Ingegneria del Software Prof. G. A. Di Lucca - Univ. del Sannio Ingegneria del Software 10 5 &DUWHGL1DVVL6KQHLGHUPDQ Le FDUWH GL 1DVVL6KQHLGHUPDQ 16, dette anche carte GL &KDSLQ, o GLDJUDPPL D VFDWROH ER[ GLDJUDP, permettono di rappresentare un algoritmo usando le seguenti primitive: &RQGL]LRQH &RQGL]LRQH LVWUX]LRQH ) LVWUX]LRQH « 6HTXHQ]D 9 3DUWH 3DUWH (/6( 7+(1 &DVR &DVR « &DVR &RUSR &RUSR « &RUSR Q 6HOH]LRQHDSLYLH 6HOH]LRQHDYLH &RQGL]LRQH &RUSR 5(3($7 &RUSR 817,/ :+,/('2 &RQGL]LRQH ,WHUD]LRQH Ingegneria del Software Prof. G. A. Di Lucca - Univ. del Sannio 11 'HFLVLRQ7DEOH QuaNdo c’è una complessa combinazione di condizioni con le relative azioni da intraprendere nei vari casi si possono utilizzare le WDYROH GL GHFLVLRQH che permettono di specificare queste combinazioni e di selezionare le azioni appropriate sulla base delle condizioni. /QHAO KJ@EPEKJO NACQH=N?QOPKIAN 7 7 OEHRAN?QOPKIAN CKH@?QOPKIAN OLA?E=H@EO?KQJP 7 7 ) 7 7 7 ) 7 ) 7 /QHAO JK@EO?KQJP =LLHULAN?AJP@EO?KQJP =LLHULAN?AJP@EO?KQJP =LLHU=@@EPEKJ=HTLAN?AJP@EO?KQJP Ingegneria del Software Prof. G. A. Di Lucca - Univ. del Sannio Ingegneria del Software 12 6 'HFLVLRQ7DEOH La tavola viene così costruita: • nel TXDGUDQWH VXSHULRUH VLQLVWUR è riportato l’elenco delle condizioni; • nel TXDGUDQWH LQIHULRUH VLQLVWUR è riportato l’elenco delle azioni;nel TXDGUDQWHVXSHULRUHGHVWUR vengono riportate tutte le combinazioni di condizioni possibili: una 9 nella casella indica che la condizione è soddisfatta, una ) che non lo è, un trattino è indifferente (GRQ¶WFDUH); • nel TXDGUDQWH LQIHULRUH GHVWUR, per ciascuna combinazione di condizioni, viene posta una ; in corrispondenza dell’azione appropriata da eseguire. Ingegneria del Software Prof. G. A. Di Lucca - Univ. del Sannio 13 'HFLVLRQ7DEOH Per la costruzione della tavola bisogna: • elencare tutte le azioni che possono essere associate ad una procedura specifica ( o modulo); • elencare tutte le condizioni ( o decisioni) che si hanno nella procedura; • associare gli specifici insiemi di condizioni alle azioni corrispondenti, eliminando le combinazioni impossibili; altrimenti sviluppare ogni possibile permutazione delle condizioni elencate; • definire le regole, indicando quale/i azione/i si applicano ad un determinato insieme di condizioni. Ingegneria del Software Prof. G. A. Di Lucca - Univ. del Sannio Ingegneria del Software 14 7 'HFLVLRQ7DEOH Se nella tavola compaiono 2 o più colonne con la stessa combinazione di condizioni essa è detta DPELJXD; le associate regole di decisione sono dette ULGRQGDQWL se l’azione specificata è la stessa, altrimenti sono dette FRQWUDGGLWWRULH (il che significa che bisogna eseguire più azioni in maniera concorrente fra loro o non deterministiche). La tavola di decisione è detta FRPSOHWD se ogni possibile combinazione di condizioni ha un’azione corrispondente, il che significa Q combinazioni per Q condizioni. Se qualche combinazione, e la relativa azione, non è specificata, la tavola è detta LQFRPSOHWD. Ingegneria del Software Prof. G. A. Di Lucca - Univ. del Sannio Ingegneria del Software 15 8