
Chi sono io sono l’autore di questo libro
chiamato Software Architect per sviluppatori
è un tipo che faccio
una guida accessibile amichevole al software
architettura se leggi molto del
sono libri di architettura classica
scritto da amici molto molto intelligenti
persone, ma sono abbastanza asciutte abbastanza accademiche
quindi volevo scrivere un libro che tu
sapere colpire casa con gli sviluppatori per quelli
di voi che state venendo al mio laboratorio
Venerdì ti darò una copia gratuita di questo
libro come corruzione per venire I’m a
sviluppatore di software ma nel passato
un paio d’anni ho aiutato le squadre
capire ciò che gli architetti del software è
tutto e soprattutto come possiamo
rimbalza l’ agilità e il pensiero iniziale ma
Scrivo anche il codice quindi non preoccuparti
questo diventerà tutto spaventoso e
birichino e concettuale e davvero cosa
Sono interessato qui è l’intersezione
tra architettura software e codice
così come ho detto voglio vedere queste cose
come uno nella stessa cosa ora sei
riconosciuto dal mio accento non sono locale
Sono in realtà da Jersey che è Jersey
non Joisey quale uscita non funziona su di me
quindi questo è Jersey nelle Isole del Canale
e sono tornato a Jersey verso le cinque
anni fa, dopo aver lavorato per Londra per
12 anni è fantastico, a
piccola isola circondata dal mare e
ci sono molte cose che puoi fare e
quando ero un bambino andavo a pescare
e mi svegliavo di domenica
mattina allegare la mia canna da pesca al
la traversa della mia bicicletta andava in bicicletta verso un locale
molo e andare a pescare ea volte anche io
preso un po ‘di pesce non ero quello
successo quando tornai a Jersey
cinque anni fa sono tornato a
Jersey un mese prima della mia famiglia e io
ho avuto un po ‘di tempo libero e ho capito perché
di nuovo in pesca , così sono andato
al negozio di pesca comprato una canna e
quando ero nel negozio di pesca che ho visto
questi piccoli pesci di plastica e
loro sono chiamati esche e io dissi al
ragazzo dietro il bancone cosa usi
queste cose per e lui ha detto che possiamo
prendi la spigola oh, suona divertente
mai mai preso un branzino prima di allora
abbiamo avuto questa chat e lui ha spiegato come
fallo e ho pensato che ne comprerò un po ‘
e ho iniziato a pescare il basso molto spesso
catturato niente bene vorrei uscire te
conosci ogni altro giorno ogni altra sera
diversi moli diverse spiagge
assolutamente zip arriva la prossima stagione
lungo la prossima estate esattamente lo stesso
cosa succede mi prendo assolutamente zero
ea questo punto sto cercando di ottenerlo
davvero presto uscire a pescare davvero tardi
sai che sto passando un sacco di tempo
facendo questo e sto diventando assolutamente no
risultati torneremo su questo più tardi
stiamo lasciando in sospeso così software
l’architettura del software di architettura è
spesso davvero sopravvalutato, non è niente
più che guardare la struttura
e visione del tuo sistema software, ma
molte persone pensano alle architetture
questa ormai grandiosa visione concettuale
astrazioni e quel genere di cose è
non è solo come vediamo la struttura
del nostro sistema in termini di moduli
servizi componenti livelli e come noi
crea quella visione quindi come possiamo arrivare a
struttura e come condividiamo questo
visione con il resto della squadra, quindi sono
particolarmente interessato alla comunicazione
di architetture come un modo per creare un
condiviso comprensione comune che una squadra
può funzionare da mani esperte che usano UML
qui su base regolare come parte del
lavoro quindi so e qualcun altro ha ragione
sono due persone che sono stato abbastanza
fortunato a fare molti viaggi
recentemente sono stato negli Stati Uniti poche volte
Ho viaggiato in oltre 20 paesi
in giro per l’Europa a Dubai la maggior parte delle persone
non usare il latte nella mia esperienza
ok, quindi ho fatto questa domanda molto ora
UML è una specie di vero e proprio modo standard
che dobbiamo descrivere il software e
ma guarda che non lo stiamo usando così che è un
problema quindi come comunichiamo il nostro
i sistemi software bene suppongo che usiamo no
UML sequel right no sequel UML
tutto il resto solo scatole e linee
le immagini delle linee delle scatole di immagini vanno bene
ma le scatole e le linee devono essere fatte
senso e corro corsi di formazione e
roba in giro per l’Europa e uno dei
le cose che ho scoperto sono persone
sento di trovarlo così difficile da fare loro
trovarlo davvero difficile da visualizzare e
condividere e comunicare il loro software
sistemi e ora posso dirlo con alcuni
fiducia perché parte del mio allenamento
Certo è dare ai gruppi l’insieme di
requisiti è davvero semplice
sistema di rischio finanziario e il
requisiti molto molto semplici che abbiamo
due sistemi di dati scambiano le cose con la banca
vende con altri dati di riferimento bancari
per le altre banche abbiamo questo a
insieme lo uniamo insieme che eseguiamo
alcuni calcoli produciamo un Excel
rapporto
c’è anche la possibilità di modificarne alcuni
parametri nei calcoli è così
questo è essenzialmente tutto il sistema
e facciamo crescere le persone in gruppi e noi
convincerli a progettare una soluzione e la
uscita da questo esercizio è disegnare
alcune foto questo è un tipo di cosa noi
avere ragione solo la lista della spesa di
le tecnologie hanno deciso le persone
quali tecnologie verranno utilizzate
ma non perché abbiamo un sacco di scatole e no
diagrammi di stile linea sai che questo è un
tre livelli Microsoft
soluzione dice che l’ ISP non si connette al
in alto c’è un’app Web ma nessuno la sta usando
le persone ci danno una visione funzionale di te
sapere cos’è una vista funzionale è solo
un elenco di cose di colori diversi
non so perché le persone hanno differenti
penne chi lo sa è il mio tutto il tempo
favorito questa colonna vertebrale centrale mostra il
nucleo del sistema di dati sorgente
sistemi che importano il passo di calcolo del passo
fase di segnalazione distribuire il rapporto
bella incidente d’auto questa cosa è come Londra
Heathrow Chicago è un grande centralizzato
punto di connessione per qualche ragione no
sai perché questo è solo un disastro diverso
forme di colori forme questa scatola dice qui
UI sottosopra
perché
questo diagramma descrive tutto il tuo
sistemi software su cui stai lavorando
oggi guardiamo la logica del business nel mezzo
abbiamo un sistema qui che fa affari
logica come super fantastico è che questo
l’immagine non ti dice niente, allora abbiamo capito
la visione logica delle viste logiche
praticamente tutto ciò che non include
scelte tecnologiche che ho scoperto
la gente ha davvero paura di mescolarsi
tecnologie su queste immagini e poi
abbiamo cose come la Ho Co the
senzatetto vecchio oggetto appuntito sai
solo un po ‘ di cose nitide che galleggiano
intorno a un database che non lo fa
ha senso, questo è un po ‘grande
e complesso quando ero un bambino aveva questi
libri di favole inizi dalla prima pagina e
scegli la tua avventura rivolgendoti a
pagine diverse nel libro di questo
lo stesso che inizi in cima vai giù
fai delle scelte alla fine muori
nella trappola è tutto male che ho
milioni di queste foto che girano intorno
il mio portatile chiedo ai gruppi scusa no no no
basta prendere le foto di loro IIT vederli
essendo stato creato così chiedo alle persone cosa loro
trovare una sfida per questo esercizio e
Dicono bene che non sappiamo cosa disegnare
non sappiamo come disegnare bene bene
questo è tutto ciò che riguarda UML ma um I
ero enormemente fuori moda, intendo
a persone che non conoscono 50 60 che usano solo
UML chiedi alle persone perché e dicono bene
o altrimenti troppo complesso è troppo basso livello I
non lo so, la mia squadra non lo sa o
Dicono che siamo agili non facciamo UML
perché siamo agili e facciamo TDD
invece sai che TDD sembra essere un
sostituire l’architettura in molti
le menti delle persone è davvero vero no
tu sai per me TDD che devi fare TDD
all’interno di una serie di limiti e
fornisce quadri e architettura
quei confini e quadri così questo
tutta la storia del diagramma è davvero difficile
per mostrare tutto su una singola immagine
e quando leggi questi classici
libri di architettura parleranno spesso
su viste e punti di vista e
Prospettive quindi questo è Philip Krypton
Porta avanti il quattro più un modello
vista di sviluppo vista logica premere questo
visualizzare la vista fisica casi d’uso legare il
tutto insieme
molti altri modelli e tecniche mostrano
esattamente lo stesso tipo di cosa ma
sono tutti diversi e il nome
bene la denominazione spesso non fa molto
senso così sono stato in riunioni dove
gli architetti hanno sostenuto la differenza
tra una visione concettuale la logica
vedere questi suoni come la stessa cosa
me, ma sono probabilmente po ‘stupido per
capiscilo se sono uno sviluppatore che scrive
linee di codice è che lo sviluppo di
tu o la vista di implementazione o forse
è il punto di vista del design ma è appeso a
secondo se sto scrivendo righe di codice se
Forse sto creando fisicamente dei file
questa è la visione fisica ma ora quella
non ha alcun senso perché la
la vista fisica è l’infrastruttura ma
stiamo tutti utilizzando l’infrastruttura virtuale
ora anche noi abbiamo un fisico virtuale
visualizzare il tutto non fa alcuna
percepire la cosa fondamentale che molti di questi
la condivisione di meccanismi e tecniche è questa
separano il design dalla logica
digita le viste dal codice e 70 bianco
ti rendi conto che qui c’è il nostro software
sistema nel mezzo e ci sarà vederlo
da diverse angolazioni e differenti
viste a seconda dei nostri interessi e in
per documentare e comunicare il tuo
i sistemi si devono capire questo tipo
di roba e questo mi fa male alla testa
ho due bambini e loro adorano
mangiando il gelato e lo fanno davvero
veloce e cosa succede quando mangio il ghiaccio
crema davvero veloce si ottiene congelare il cervello
ora se vai su Wikipedia ci sono
alcuni modi per impedire al cervello di congelarti
o beve una bevanda calda in anticipo
funziona bene no perché i miei figli no
bere bevande bevande calde nel modo più semplice
impedire che il congelamento del cervello si fermi
mangiando il gelato questo font è orribile
questo mi dà il mal di testa l’unico modo per farlo
evitare che il mal di testa sia quello di non guardare
questo carattere questi modelli di come si rompono
giù il sistema software mi fanno la testa
male potremmo guardare a diversi punti di vista in
isolamento per cercare di capirli o
potremmo semplicemente fare qualcosa di diverso
destra cerchiamo di non utilizzare come modelli
potremmo imbrogliare, dimenticare tutto questo
viste complesse roba perché non abbiamo solo
imbrogliare se lo scopo se l’obiettivo è quello di
creare alcune foto per comunicare il nostro
sistema software cosa perché non abbiamo solo
cercare esempi e utilizzarli come un
base come facciamo questo andiamo a Google
giusto così se fai una ricerca di software
diagramma di architettura su Google che ottieni
cose come questa pagina dopo la pagina successiva
pagina del diagramma a blocchi coloratissima di
Ovviamente, quello che faremo è che lo faremo
prendere alcuni di questi e basare i nostri esempi
su di loro e poi cosa succede
roba come questo diritto in modo da prendere questo uno
qui nel mezzo sappiamo che la stratificazione
è apparentemente importante quindi diamo un
diagramma che mostra gli strati di alcune cose
non si adatta mai abbastanza agli strati orizzontali
facciamo questi strati verticali e
sono buoni perché impilano il
diagramma insieme smettere di oscillare
fornire una certa rigidità perché il diverso
strati di colori diversi non lo so ma
almeno questo gradiente è ombreggiato
buono per gli acronimi PowerPoint di ogni genere
di cose qui e questi modelli sono
ripetuto più e più volte ragazzi
vedi questi calci attorno al tuo
architetti aziendali dell’organizzazione
amo questa roba in modo che possiamo imbrogliare così
sto tornando alla mia storia di pesca
completamente stufo di alzarsi davvero
nelle prime ore del mattino spendendo un sacco di
il tempo di mollare i pesci di plastica nel mare
e arrivare da nessuna parte così ho pensato bene
Ho intenzione di imbrogliare come fai a imbrogliare quando
vai a pescare bene, o puoi chuck
dinamite in siamo eccessivi o voi
posso comprare una barca quindi ho comprato una barca ora
probabilmente stai pensando sì 30 piedi 40
lunga bella cabina forse una piccola galera
Probabilmente dovrei cavillare ciò che intendo
barche che cosa intendo veramente è kayak due di
loro giallo brillante e plastica e questo
è bello perché sai molto di Jersey
bel posto e tu puoi andare e Bob
in giro per l’isola e lascia perdere
canna da pesca sul lato e, si spera
prendere un po ‘di pesce e ho fatto bene così io
catturato il mio primo branzino sul mio kayak ma
il fatto è che anche i miei bambini possono pescare
fuori dal mio kayak non facciamo altro che remare
un po ‘lasciamo delle piume
il lato lo facciamo per un po ‘e poi
Uscirà Mack Adoro questo look fotografico
il mio più vecchio qui è catturato dal pesce che è
davvero felice che mia moglie sia davvero eccitata
e il mio piccolo figlio nel mezzo è
crapping se stesso perché ha dovuto scommettere
in procinto di avere un mucchio di pesci scaricati
il suo giro portatile è come se fossi
appagante anche se ne ho presi alcuni
pesce ma non l’ho fatto sembra
Ho ingannato lo riprenderemo
codice successivo attacchiamo questo dal
altra prospettiva giusta quindi cosa succede
se pensiamo bene al codice, qual è il nostro
Scopo di queste immagini lo scopo di
queste immagini che stiamo cercando di disegnare è
è rispondere a un paio di domande di base
se stiamo progettando in anticipo è questo
domanda che stiamo cercando di raggiungere il
in fondo sai che è questo ciò che siamo
andando a costruire se siamo retrospettivamente
documentando un sistema allora è questo
la domanda l’ abbiamo costruita in quel modo
quello che abbiamo codificato e in realtà il codice
è il singolo punto di verità ma il
codice è la forma di realizzazione
architettura ora immaginiamo di avere un
enorme sistema aziendale 250.000 classi
disegneremo un diagramma con
250.000 scatole all’inferno, no, perché
non arriverai mai alla fine
quindi quello che facciamo su questi diagrammi siamo noi
parlare di astrazioni e astrazioni
sono un modo per farti conoscere le cose
insieme e prevenire una visione semplificata
del mondo, in questo caso il nostro software
sistema e cosa facciamo questo è perché
astrazioni ultima ragione su un grande
e / o sistema complesso come loro
essenzialmente ci permettono di rimuovere alcuni
informazioni rimuovono alcuni percorsi di rumore di
dettaglio e questo solleva un po ‘di piuttosto
domande interessanti e complicate quando
stiamo disegnando queste foto di
astrazioni fanno quelle astrazioni mappa
nel codice giusto, quindi se disegniamo
qualcosa c’è un livello o un modulo o
un componente possiamo vedere quei concetti dentro
la base di codice e la risposta è spesso
non proprio perché se prendi Java se
prendi c-sharp non ha un
parola chiave componente non ha a
la parola chiave layer non ha un servizio
parola chiave perché stiamo pensando in termini
di pacchetti di namespace di classi quando noi
scrivi nel codice e questi concetti sono
diverso da quelli delle immagini
mani taglienti che usano uno strato
architettura qui
wow è minuscolo cosa sono tutti gli altri
facendo decodificare il modo tradizionale iid
ha fatto il negozio ieri a Londra e
tutti mettono le mani in alto quando loro
Detto questo lavoro un altro e se lo fosse
fare del pizzo è una sorpresa così lei lo è
la tua tipica architettura a strati giusta
così strato di livello aziendale di presentazione
il livello dati inserisce alcune caselle nei livelli
perché tutti loro è così tanto
le persone si avvicinano alla progettazione del software e
sviluppo del software percepito saggezza
perché questo è quello che i libri ci dicono di fare
questo è il capitolo uno di un libro di primavera
conosci le app di struttura in questo modo
dati di presentazione livello caro dati
tier blah blah blah tu giri il
pagina descrive i diversi livelli
lo scopo di loro questa linea è abbastanza
l’interessante primavera punta a disaccoppiare
strati architettonici in modo che ogni strato
può essere modificato il più lontano possibile
questo non ha impatto sugli altri strati
fondamentalmente solo per isolare un impatto
impatto del cambiamento se si scarica
tutorial per la struttura di primavera per
esempio questo è il tuo codice base di esempio
pacchetto repository di pacchetti di domini
pacchetto di servizi tipo di suono come
i livelli che imposterai in eccesso
come faccio a strutturare le persone del mio codebase
darti esattamente lo stesso tipo di consiglio
lo stesso nel mondo.net percepito
saggezza questo è il modo in cui dovremmo fare
cose
destra in modo nuovo alla mia storia che pesca
voglio ancora prendere un branzino vicino
in piedi su Jersey e non ballonzolare
intorno a te sai intorno ad esso in un kayak così
Ci riprovo e vado e tu sai provare
alcune cose diverse e con cui ho parlato
alcune persone e dicono cose come
bene dovresti andare a pescare con la bassa marea
e diversamente da me se vado a pescare a bassa quota
marea non c’è acqua per definizione quindi
come funziona e poi vado
no stai pescando nel posto sbagliato
per cui è una specie di sfida a tutti
questa saggezza percepita l’ ho costruita sopra
gli anni quindi ho pensato che dovevo farlo
andare su un libro così sono andato al negozio di pesca
e ho comprato un libro sulla pesca al basso e
questo libro è come 20 anni è ottenuto
alcune storie affascinanti in esso ora il
cosa è la pesca al basso?
in realtà nessuno è molto riservato
per dirti le risposte e le loro
segreti soprattutto se si chiede loro per
spot per andare a pesca e questo è fantastico
libro e ha un sacco di consigli e
tecniche ma sono un po ‘astratte
loro non ti dicono veramente cosa fare se
questo libro è stato scritto da Yoda lo farebbe
in pratica dire questo trova il pesce e
li prenderai bene, grazie
devi trovare il pesce per catturarli
si, lo capisco
ma sfida alcuni dei miei
la saggezza percepita mi fa riflettere
diversi posti dove andare a pescare in modo diverso
tempi del giorno diverse tecniche
si sa in realtà avere un metodo per la mia
pazzia di buttare via roba nel
scena sperando per il meglio che sai
lanciando i miei piccoli pesci alle rocce per
esempio ancora una volta sarà Parcheggiare questo e venire
di nuovo in seguito questo è il tuo tipico
architettura a strati tranne che non lo è
perché ciò accade giusto, quindi tutti
sapere che le architetture stratificate tendono a
ottenere danneggiato molto facilmente così il
modo in cui implementiamo architetture a strati
sai che ognuno di questi è diverso
pacchetto o spazio dei nomi e al fine di
chiama roba in diversi pacchetti e
spazi dei nomi che roba deve essere pubblico
e una volta che qualcosa è pubblico può essere
chiamato da qualsiasi parte così questi
le architetture tendono a essere danneggiate
abbastanza facilmente e questo è ciò che alla fine
finisce in quelle orribili palle grandi di
fango ora ci sono diversi modi in cui possiamo
strutturiamo i nostri sistemi software che possiamo
utilizzare esagoni e cipolle e pulire
architettura e cose del genere
sono tutti modi diversi per strutturare il nostro
sistema e pensa al nostro sistema ma
in sostanza sono ancora stratificati a destra
possiamo ridisegnare la nostra architettura a strati
come cerchio sei roba dentro è roba
ancora deve essere pubblico possiamo ancora
corrotto così forse gli strati sono cattivi qui
forse dovrebbero essere considerati gli strati
alcuni di voi dannosi potrebbero trovarlo
controverso alcuni di voi potrebbero andare
si
Odio i livelli è un modo spaventoso
costruire software a cui non ho intenzione di rispondere
che poi consentono di rimuginare nella vostra
teste ma chiederò a questa domanda
questi strati abbiamo nel nostro software
sono i nostri elementi costitutivi significativi
o sono i nostri elementi costitutivi significativi
qualcos’altro quindi in altre parole a
strati solo un dettaglio di implementazione
che stiamo guardando troppo da vicino
c’è un ragazzo di nome George Fairbanks
ha scritto questo libro qui solo abbastanza
quindi per il libro di architettura brillante
lo consiglio vivamente e lui
identifica questa cosa chiamata questo libro
il code gap del modello e in sostanza esso
dice i tuoi modelli di architetto
stanno per mostrare cose diverse da
il codice e davvero di cosa si tratta
parlando è sapere di visualizzare il
architettura in modo diverso dal tuo codice
e molto di questo dipende da come tu
organizza la tua base di codice e quindi
hey riflettono questa organizzazione
foto di architettura e in George’s
prenota tu corri attraverso un sacco di
diversi tipi di modi di modellazione
sistemi e tutti essenzialmente fanno il
la stessa cosa che si sono separati si sono staccati
il modello di codice dal resto del
modulo di visualizzazione delle viste logiche del design mondiale
punti di vista e qualsiasi cosa così come facciamo a restringere
questo gap di codice del modello è ovvio
la risposta è unire due cose insieme
giusto la maggior parte del modello nel codice noi
provato questo 1012 anni fa guidato dal modello
l’architettura è terribile non ha funzionato
si sa mettere un sacco di un sacco di
informazioni nel nostro modello
premendo un tasto ottenendo il codice giusto
quindi buttiamolo fuori e facciamolo scorrere
sulla sua testa e ciò che George dice nella sua
libro è che puoi usare un
stile di codifica architettonica e-everything
in altre parole si rilasciano suggerimenti nel tuo
codice di base per riflettere il tuo architettonico
costruisci che hai un componente che hai
un servizio hai un livello che ti assicuri
quelle cose finiscono nella componente di parola
livello di servizio hai una confezione
Convenzione che dice tutte le cose
relativo a un singolo servizio è in questo
pacchetto in questo spazio dei nomi Zen quando tu
fai questo Wow, un piccolo numero di persone sì
ancora una volta che è la mia esperienza di tipo di
consultarsi in Europa nessuno lo fa
questo forse stiamo guardando questo il
modo sbagliato forse questi modelli che
stiamo parlando
non dovremmo disegnarli a mano
forse dovremmo essere automaticamente
generando queste immagini ma non possiamo
giusto è il 2014 e ci sono un sacco di
strumenti là fuori che possono disegnare
foto di architettura ma loro no
funzionano fondamentalmente non funzionano perché
perché vedono le cose che facciamo come
gli sviluppatori vedono i pacchetti spazi dei nomi
interfacce di classi che non sanno cosa
uno strato è che non sanno che a
i servizi sono componenti un modulo che vedono
gli stessi costrutti di base e quindi
questo è quello che riflettono sui diagrammi
struttura 101 Latics e dipende dal sonar
ecc. ecc., tutti danno il pacchetto
Dipendenza dalla classe dei diagrammi di dipendenza
diagrammi ti mostrano roba del genere
sai se hai una grande palla di fango
queste foto stanno per essere
orribile sai di averti fatto un casino
non ho bisogno di uno strumento per dirti così
qualcos’altro a cui pensare è forse
le lingue stavano usando non lo sono
adatto per i tipi di sistemi erano
costruendo oggi forse abbiamo bisogno di un linguaggio
Conoscete il livello dei servizi componenti
come cittadini di prima classe o forse non come
per lo più vediamo la saldatura, ma come facciamo?
unire architettura e codice renderli
lo stesso bene tutti i modelli che facciamo
produrre dovrebbe riflettere il codice i due
le cose dovrebbero combaciare idealmente
one-to-one e il modo per farlo è quello
assicurati di avere le tue astrazioni
corretta
ora UML ti offre due cose
UML ti offre un set standard di
pacchetti di componenti di classi di astrazioni
usa le bolle del caso quel tipo di cose e
il set standard di scatole e linee
notazione per descriverlo ogni volta che vedo
le persone che usano UML indovina cosa fanno loro
abusare delle astrazioni e del tipico
esempio è che abbiamo una lezione sulla classe
diagramma rappresenta un sistema o un
bus dei messaggi o qualcosa che abusano
la notazione che ho visto disegnare persone
diagrammi di scatole e linee con un goomar
diagramma di classe e tirano fuori tutto
i compartimenti per farlo sembrare un
scatola vuota quindi utilizzo uno strumento costoso
identità di cura o foto così mia
il workshop di venerdì riguarda il disegno
foto ma non mi interessa come disegni
le foto mi interessano delle astrazioni e
il modo in cui penso sia il sistema software
molto semplice quindi i miei sistemi software sono
composto da ciò che chiamo contenitori
contenitori solo qualcosa come un’app web
un server Web un server applicazioni a
dispositivo mobile del file system del database a
browser un servizio Windows che tipo di
cosa
è una cosa eseguibile da qualche parte
possiamo mettere codice o dati di cui sono un grande fan
rompere i miei sistemi in termini di
componenti così i miei contenitori contengono
componenti ora ti concedo questo è un
parola enormemente sovraccaricata che cosa sta per
significa un sacco di cose legate coesive
incapsulato con una bella interfaccia pulita
in cima perché principalmente realizzo sistemi in
Java e.net i miei componenti sono inventati
o costruito di classi che potrebbero essere
le funzioni potrebbero essere tabelle del database
dipende dalla tua tecnologia di scelta
è un semplice software per la struttura ad albero
sistema costituito da un mucchio di contenitori
ognuno dei quali ha componenti quelli
le cose sono fatte di classi con
questo in mente con questo set di
pensando alle astrazioni possiamo disegnare
immagini a diversi livelli, a sua volta noi
può avere una vista di contesto del sistema del
mondo che mostra il tuo sistema nel
roba di mezzo intorno ad esso all’interno di zoom in
il tuo sistema e mostriamo i contenitori
che ti dà la forma di alto livello di
il sistema all’interno di zoom in quelli
contenitori a turno e vediamo componenti
questo è normalmente dove mi fermo ma tu lo farai
vedi che il numero quattro qui puoi
scendi alle lezioni se vuoi te
può iniziare diagrammi fuori classi voi
avere i componenti interni dei componenti ma io
di solito non lo fanno normalmente
molti dettagli un esempio con alcune scimmie
questo è un sistema che ho costruito è chiamato
archiviazione di unità tech a è solo un contenuto
aggregatore per la comunità tecnologica locale
in Jersey questo è il mio sistema di guida tech
questi sono i miei tipi principali di utenti che sono
dipendenze del mio sistema uno zoom in al
scimmia li faccio saltare in aria questo è il mio
immagine dei contenitori mostra il mio webserver
il mio processo standalone e i miei database
dove sto memorizzando di nuovo i dati è solo un
forma di alto livello del sistema
Izu min a una di queste scatole che vediamo
componenti al suo interno sai che abbiamo
come un componente collegato a Twitter qui
e un connettore github e un newsfeed
connettore e questo è il modo in cui decompongo il mio
sistema software e questi diagrammi sono
essenzialmente come Maps, quindi se vai
Google vai su Google Maps e lo fai
cerca Jersey per me che mi dà
questo potrebbe darti il New Jersey ma
questa è una storia diversa e dà
hai una vista ingrandita di Jersey e questo
è fantastico perché ti dice che lo sai
dove le strade sono dove l’aeroporto è
dove le spiagge sono tutto quel tipo di
roba ma se non sai dove Jersey
è necessario ridurre alcuni livelli e
alla fine arrivi a quello che abbiamo scelto per te
dove Jersey è in congiunzione con il
resto d’Europa dovrebbero anche i diagrammi
essere come le mappe che conosci a volte vogliamo
la vista ingrandita del mondo
a volte vogliamo zumare e vedere
il sistema nel suo insieme ora questo è giusto
il modo in cui penso al software
sistemi non è necessariamente su
creando uno standard ma quello che voglio
fare è darvi qualche altra idea qui
altri modi per pensare al tuo
sistemi nella tua testa e ciò che questo modello
Ho appena presentato fa è fondamentalmente
mette la struttura statica del sistema
proprio al centro del codice in
classi anche se attraverso i componenti
contenitori e il sistema e una volta voi
capire la tua struttura statica del tuo
sistema altre cose cade in posizione
davvero facilmente intorno a te sai il tuo
il tuo runtime ti comporterai con i tuoi modelli
se vuoi disegnarli sono semplicemente
collaborazioni tra i componenti
la mappatura della distribuzione è fondamentalmente
contenitori su infrastrutture e così via
e così via e cosa questo fondamentalmente
fa è dice guarda chi è il maggiore
stakeholder per questa roba che stiamo facendo
per me siamo noi come sviluppatori la ragione
I documenti per i sistemi software è per
gli sviluppatori è perché o io voglio
qualcosa che posso mantenere in futuro
o voglio impostare la scena ora ecco a
foglio di carta bianco questo è un po ‘
quello che stiamo per costruire è come
immagina che lo costruiremo
e il mio formale C è fondamentalmente giusto
mettendo la struttura statica al
centro
e ammettere che gli sviluppatori sono il
stakeholder chiave con questo in mente voi
puoi quindi sapere di fare questa domanda noi
avere questi diagrammi abbiamo questi modelli
si mappa al codice riflette
il codice e se possiamo avere diagrammi
qui e se abbiamo l’architettura
i modelli e non riflettono il codice
i diagrammi sono fondamentalmente inutili
stiamo solo ingannando noi stessi
creato come una realtà alternativa circa
come pensiamo che il sistema dovrebbe apparire ma
non ora ho appena presentato brevemente
voi alcuni diagrammi su cui ho disegnato basandomi
un vero sistema che ho costruito per poterlo chiedere
la domanda che i miei diagrammi hanno fatto
riflettere il codice e viceversa e il
la risposta è che puoi andare a dare un’occhiata
te stesso perché è su Github the
risponde sì evviva Sono super fantastico
ho una bella mappatura pulita
tra il mio codice nella mia architettura il
caso di c’è un c’è un tweet
componente qui e ho questo bello
convenzione che dice che sai che c’è un
tutto il mazzo di componenti tutto bene
ben confezionato quanto è bello questo
epico oltre ad essere un po ‘di a
smartass ora questo è più interessante
domanda per chiedermi è iniziato come
questo o ho fatto questa situazione
e la risposta non è davvero
quindi ho disegnato questi diagrammi per il mio allenamento
corso nel mio libro e ho avuto questo
bel concetto nella mia testa di te lo sai
sono un gruppo di componenti nel mio
sistema ma quando ho guardato il codice
non combaciava così anche io stavo creando questo
fantasia su quello che pensavo del mio sistema
sembrerebbe perché, perché l’ho fatto
ho usato esattamente quello che ci ha chiesto
strati così questo è costruito in Java
Avevo un livello di servizi e un accesso ai dati
strato così ho avuto questo concetto di un tweet
servizio che in pratica memorizza i tweet in
un database Mongo e c’era un tweet
servizio che ti ha dato accesso
informazione
interfaccia perché sto scrivendo tutto
in primavera e Java vedono dopo un
interfaccia per tutto e un valore predefinito
implementazione con un po ‘ di business
logica delegando fino a un tweet di dati
accesso oggetto implementazione Mongo giusto
standard di architettura standard a strati
implementazione quindi cosa ho creato e
ho costruito un’architettura a strati nella mia testa
Sto pensando bene questo è un singolo
componente e come ho detto prima lo sai
questa roba deve essere pubblica che significa
chiunque può chiamarlo così è facile facilmente
corruttibile e un componente è davvero
Queste due cose tipo di marmellata insieme in
un modo davvero orribile due opzioni
ovviamente uno cambia le foto no
come quello non riflette il mio bello
visione idealistica che avevo nella mia testa opzione
di refactoring così ora il codice è simile
questo in modo sostanziale ho unito il
strati ho un bel componente tweet
interfaccia con un sacco di davvero davvero
semplici operazioni c’è un
implementazione che non è essenzialmente
questa cosa e ci sono i miei tweet Mongo
oggetto di accesso ai dati che è essenzialmente
questa cosa è pubblica queste due cose
cose un pacchetto protetto quindi non puoi
vederli abbiamo un bel incapsulamento
qui questo è bello in origine ho avuto questo
twittare oggetto accesso ai dati in qui pure
non è usato così ho cestinate che lo butto
via alcune persone quando le mostri questo
picture they go well Simon quello che hai
fatto ora è che non hai creato un layered
architettura e quindi non puoi
cambia il tuo database per essere qualcosa
altrimenti il Mongo posso avere ancora dei livelli
ma sono strati interni, quindi questo
tutta la cosa su di te sa che il nostro livello è
significativo o sono l’implementazione
dettagli qui i miei strati uno interno
dettagli di implementazione posso ancora cambiare
il mio accesso ai dati perché ho un
modo per isolare sostanzialmente il cambiamento in
questa classe, ma le persone che amano
test e TDD andare questo è davvero male
perché non puoi prendere in giro quella cosa
ora ma non c’è nessuna interfaccia usata
prendi in giro e non c’è modo per te
iniettare il tuo oggetto di accesso ai dati a questo
perché è tutto racchiuso in un pacchetto
ci sono alcuni workaround qui proprio noi
potrebbe creare un altro pacchetto parallelo
struttura in un codice sorgente separato
repository crea alcune cose astratte
fare un punto di iniezione qui che possiamo avere
alcuni metodi per farvi sapere a
mock implementazione del mio accesso ai dati
oggetto non posso essere disturbato da troppo
duro lavoro quindi una vite e non sta andando
per unità di testare il tutto va bene
quindi , non fare test unitari a chi è visto
tutto ciò che riguarda il collaudo dell’unità presso
esame dell’unità momento preso in considerazione
dispendioso destra in modo tale sta andando essere un
cosa educativa rapida veloce c’è a
ottimo articolo di un tizio di nome Jim Killeen
e sostanzialmente dice la maggior parte di ciò che facciamo
in termini di test unitario è completo
distruggere completamente l’intero punto di unità
testare e deridere e quel tipo di
cosa stavi sapendo se guardi circa 10
database di anni per un’infrastruttura lenta
è lento quindi inseriamolo
punti di iniezione possiamo prendere in giro qualcosa
e quindi possiamo scrivere test unitari contro
archiviazione locale nella memoria che
tipo di cosa e possiamo accelerare il
i cicli di feedback sono interessanti
carta non sono d’accordo con voi tutti
potrebbe non essere d’accordo con tutto ciò
Qualcos’altro che dice Jim è questo se lo facciamo
forse ha un sistema con un sacco di test
abbiamo un design orribile e forse
i nostri sviluppatori non apprezzano molto
come progettare bene il software che è un
un modo interessante per pensare a questo DHH
il tipo di rotaie su cui è saltato addosso è quello
sì unità di test terribile
quindi DHH ha creato Ruby on Rails davvero
un modo semplice per creare applicazioni web basate sui dati
molte cose sono fatte per te amore
l’impianto idraulico è fatto per voi in ordine
per rendere testabile il codice Ruby o Rails
devi iniziare a tritare roba con
interfacce punti di iniezione che tipo di
cosa e in questo blog post DHH dice
si, questo è fondamentalmente dannoso
il nostro design è dannoso per la pulizia
design che i rail ti danno e lui dice
non dovresti lasciarlo
i test guidano il tuo design è pazzesco
e di nuovo si può essere d’accordo o in disaccordo con
questo ma tu hai un punto proprio lì
sono alcuni punti davvero interessanti che sono
fatto qui qual è lo scopo della stratificazione
beh, è per assicurarsi che i cambiamenti siano
essenzialmente isolato quindi se vogliamo
raggiungere il nostro database lo facciamo uno
posto se vuoi cambiare il nostro
integrazione con un sistema Excel che facciamo
in un posto e forse dovremmo vedere
questo separatamente dai nostri test forse noi
dovrebbe pensare di più al nostro design
quindi con il mio sito di tribù tech c’è un
mucchio di roba che proprio non ottiene
test di unità e invece cosa faccio
sto facendo il test dei componenti, giusto che posso PI
prova quel componente come una singola cosa
tra cui sputando muck di Mongo
roba in Mongo e poi portandola
giù di nuovo ed è super veloce, quindi posso
fare veri test dei componenti su un mucchio di
roba nella mia base di codice
ora non è applicabile a tutto
ora se mi occupo di asincrono
sistemi o e-mail o sistemi al di fuori di
integrazione di test delle mie componenti per le mani
test è piuttosto difficile da fare per te
voglio ancora fare test unitari e mock
ma forse dovremmo essere unit test o
testando i nostri elementi strutturali forse
è qualcosa che vogliamo essere
lottando invece che solo ciecamente
unità testando tutto e questo è
esattamente di cosa si tratta
non copiare ciecamente ciò che ognuno è
facendo l’intera architettura a strati
cosa tutto facendo TDD e unità
testare e deridere perché lo facciamo
forse dovremmo chiederci il valore
queste cose ci stanno restituendo al mio
ho provato a pescare e ho provato e ci ho provato
dopo aver letto questo libro e alla fine io
chiama per vedere il basso stando su Jersey
e non girovagando intorno all’isola
e questo è sorprendente perché finalmente tutto
di questa pratica tutti questi diversi
cose che stavo sperimentando finalmente
è venuto insieme in qualche modo magicamente per fortuna
Ho visto persone che pescavano sai quando
Sto guidando per Jersey, ho visto gente
la pesca al basso e io provo e copio
quello che stavano facendo semplicemente buttando questi
cose e vedi
rileggendoli e quel tipo di
cosa devi sperimentare devi
cambia quello che stai facendo se ripeti
la stessa cosa più e più volte
otterrai lo stesso risultato e il
sistemi che costruiamo sono tutte diverse
quindi forse quella tecnica che abbiamo seguito per ultima
il tempo non è applicabile per questa cosa
stiamo costruendo questa volta, quindi è necessario
pensa a cosa stai facendo e a te
bisogno di capire il motivo per cui si sta facendo
e una volta che capisci qualcosa di te
può insegnarlo agli altri così, naturalmente, il
la prima cosa che succede quando sono andato
a casa con le mie storie e le mie foto dei miei
branzino è la mia famiglia va bene possiamo
vieni a pescare nella mia tessera no, questo può essere
altri tre anni di dolore quindi ora posso
vedere alcuni pesci ha anche solo un punto
sulla pesca se mai prendi tua moglie
fuori pesca assicurati che non cada
da una roccia questo è un periodo di due settimane
fa a Jersey finalmente il mio bambino di sette anni
catturato due pesci da solo colando
fuori a rotolare dentro sta andando papà papà a
quarto di pesce è canne da pesca facendo questo
rimbalzando papà papà che ho davvero
presi un pesce che stavo correndo verso
lui cerca di provare a scegliere questa cosa
e ha davvero paura di tenerlo
è una salsa brillante portatile questo
punto per me cattura il pesce al punto di
tutto questo è una buona architettura
abilita l’ agilità quindi questo è qualcosa
stanno tutti cercando di vedere
per voi conoscete i sistemi software che sono
il cambiamento della flessione facile da mantenere migliora e
questo è davvero l’ obiettivo, ma al fine di
facciamo questo dobbiamo pensare al
design abbiamo bisogno di costruire adattabilità e
agilità e, naturalmente, ci sono
diverse dimensioni delle architetture giuste
abbiamo le grandi palle monolitiche di
potrebbe qui facile da costruire rapidamente per costruire
un po ‘ di dolore da mantenere sull’altro
Alla fine degli spettri abbiamo ottenuto dei micro servizi
e architetture basate su servizi che conosci
un sacco di singoli liberamente collaborando
le cose ti danno molta flessibilità
molta agilità perché possiamo cambiare
uno qualsiasi di questi servizi in modo indipendente
a condizione che vengano soddisfatti determinati vincoli a
un po ‘più complesso per implementare la progettazione
può avere una collaborazione di cui preoccuparsi
quel genere di cose non vedo l’ora
a Rachel Lacox parlo dopo credo che lo sia
andando a demistificare qualcosa come mike
sorella rizzo e tipo di te
qualcosa nel mezzo sai che puoi
hanno ancora un’unità di schieramento monolitica
con una bella struttura pulita al suo interno ora
livelli dei moduli del modulo componenti
qualunque cosa tu voglia chiamarli abbiamo
per pensare a questo devi ottenerlo
giusto e questo ti dà abilità e il
struttura del tuo sistema software e
quindi la strategia di scomposizione te
usare per arrivarci ci sono davvero
importante e ci sono molti e molti
diversi modi in cui possiamo decomporre il nostro
sistemi software e cosa suggerirò
forse gli strati non sono l’opzione migliore
sempre ci sono altre cose che possiamo
fare qui parlare di approcci agili
retrospettive e ispezione e
adattarsi se vogliamo costruire un agile
architettura abbiamo bisogno di applicare lo stesso
mantra al nostro sistema come ispezioniamo a
sistema come guardiamo un sistema o noi
può disegnare alcune immagini che possiamo creare
alcuni modelli e quei modelli come ho detto
devono corrispondere al codice altrimenti
è inutile una volta capito il tuo
sistema allora puoi adattarlo bene
la gente dice che il refactoring dell’architettura
è davvero difficile da fare non è se tu
capisci cosa hai veramente quello che tu
avere qualcuno e dove vuoi arrivare
è un semplice processo di trasformazione
è semplice refactoring ed è per questo che noi
dovrebbe pensare a come allineare il
visione architettonica del software del mondo
e il codice perché ci permette di
rendere queste trasformazioni molto di più
facilmente e una semplice mappatura esplicita
tra i diagrammi e il codice davvero
aiuta davvero è più facile da spiegare
è più facile fare architettura
i refactoring è solo più facile da lavorare
con e fino a quando noi non troviamo che un vero
Silver Bullet dobbiamo pensarlo così
la cosa che ti esorto davvero a farti
sapere non adottare ciecamente quello a più livelli
l’architettura pensa agli altri modi in cui tu
può strutturare i tuoi sistemi software
pensa ad altri modi in cui puoi decomporsi
forse in componenti forse ai servizi
forse ai moduli e pensa a come
riferisci queste cose al codice e al mio
il punto finale è molto molto semplice se il tuo
sistema software è difficile da lavorare
cambiala questo è interamente dentro il tuo
le mani ti ringrazio molto
tu
chiamato Software Architect per sviluppatori
è un tipo che faccio
una guida accessibile amichevole al software
architettura se leggi molto del
sono libri di architettura classica
scritto da amici molto molto intelligenti
persone, ma sono abbastanza asciutte abbastanza accademiche
quindi volevo scrivere un libro che tu
sapere colpire casa con gli sviluppatori per quelli
di voi che state venendo al mio laboratorio
Venerdì ti darò una copia gratuita di questo
libro come corruzione per venire I’m a
sviluppatore di software ma nel passato
un paio d’anni ho aiutato le squadre
capire ciò che gli architetti del software è
tutto e soprattutto come possiamo
rimbalza l’ agilità e il pensiero iniziale ma
Scrivo anche il codice quindi non preoccuparti
questo diventerà tutto spaventoso e
birichino e concettuale e davvero cosa
Sono interessato qui è l’intersezione
tra architettura software e codice
così come ho detto voglio vedere queste cose
come uno nella stessa cosa ora sei
riconosciuto dal mio accento non sono locale
Sono in realtà da Jersey che è Jersey
non Joisey quale uscita non funziona su di me
quindi questo è Jersey nelle Isole del Canale
e sono tornato a Jersey verso le cinque
anni fa, dopo aver lavorato per Londra per
12 anni è fantastico, a
piccola isola circondata dal mare e
ci sono molte cose che puoi fare e
quando ero un bambino andavo a pescare
e mi svegliavo di domenica
mattina allegare la mia canna da pesca al
la traversa della mia bicicletta andava in bicicletta verso un locale
molo e andare a pescare ea volte anche io
preso un po ‘di pesce non ero quello
successo quando tornai a Jersey
cinque anni fa sono tornato a
Jersey un mese prima della mia famiglia e io
ho avuto un po ‘di tempo libero e ho capito perché
di nuovo in pesca , così sono andato
al negozio di pesca comprato una canna e
quando ero nel negozio di pesca che ho visto
questi piccoli pesci di plastica e
loro sono chiamati esche e io dissi al
ragazzo dietro il bancone cosa usi
queste cose per e lui ha detto che possiamo
prendi la spigola oh, suona divertente
mai mai preso un branzino prima di allora
abbiamo avuto questa chat e lui ha spiegato come
fallo e ho pensato che ne comprerò un po ‘
e ho iniziato a pescare il basso molto spesso
catturato niente bene vorrei uscire te
conosci ogni altro giorno ogni altra sera
diversi moli diverse spiagge
assolutamente zip arriva la prossima stagione
lungo la prossima estate esattamente lo stesso
cosa succede mi prendo assolutamente zero
ea questo punto sto cercando di ottenerlo
davvero presto uscire a pescare davvero tardi
sai che sto passando un sacco di tempo
facendo questo e sto diventando assolutamente no
risultati torneremo su questo più tardi
stiamo lasciando in sospeso così software
l’architettura del software di architettura è
spesso davvero sopravvalutato, non è niente
più che guardare la struttura
e visione del tuo sistema software, ma
molte persone pensano alle architetture
questa ormai grandiosa visione concettuale
astrazioni e quel genere di cose è
non è solo come vediamo la struttura
del nostro sistema in termini di moduli
servizi componenti livelli e come noi
crea quella visione quindi come possiamo arrivare a
struttura e come condividiamo questo
visione con il resto della squadra, quindi sono
particolarmente interessato alla comunicazione
di architetture come un modo per creare un
condiviso comprensione comune che una squadra
può funzionare da mani esperte che usano UML
qui su base regolare come parte del
lavoro quindi so e qualcun altro ha ragione
sono due persone che sono stato abbastanza
fortunato a fare molti viaggi
recentemente sono stato negli Stati Uniti poche volte
Ho viaggiato in oltre 20 paesi
in giro per l’Europa a Dubai la maggior parte delle persone
non usare il latte nella mia esperienza
ok, quindi ho fatto questa domanda molto ora
UML è una specie di vero e proprio modo standard
che dobbiamo descrivere il software e
ma guarda che non lo stiamo usando così che è un
problema quindi come comunichiamo il nostro
i sistemi software bene suppongo che usiamo no
UML sequel right no sequel UML
tutto il resto solo scatole e linee
le immagini delle linee delle scatole di immagini vanno bene
ma le scatole e le linee devono essere fatte
senso e corro corsi di formazione e
roba in giro per l’Europa e uno dei
le cose che ho scoperto sono persone
sento di trovarlo così difficile da fare loro
trovarlo davvero difficile da visualizzare e
condividere e comunicare il loro software
sistemi e ora posso dirlo con alcuni
fiducia perché parte del mio allenamento
Certo è dare ai gruppi l’insieme di
requisiti è davvero semplice
sistema di rischio finanziario e il
requisiti molto molto semplici che abbiamo
due sistemi di dati scambiano le cose con la banca
vende con altri dati di riferimento bancari
per le altre banche abbiamo questo a
insieme lo uniamo insieme che eseguiamo
alcuni calcoli produciamo un Excel
rapporto
c’è anche la possibilità di modificarne alcuni
parametri nei calcoli è così
questo è essenzialmente tutto il sistema
e facciamo crescere le persone in gruppi e noi
convincerli a progettare una soluzione e la
uscita da questo esercizio è disegnare
alcune foto questo è un tipo di cosa noi
avere ragione solo la lista della spesa di
le tecnologie hanno deciso le persone
quali tecnologie verranno utilizzate
ma non perché abbiamo un sacco di scatole e no
diagrammi di stile linea sai che questo è un
tre livelli Microsoft
soluzione dice che l’ ISP non si connette al
in alto c’è un’app Web ma nessuno la sta usando
le persone ci danno una visione funzionale di te
sapere cos’è una vista funzionale è solo
un elenco di cose di colori diversi
non so perché le persone hanno differenti
penne chi lo sa è il mio tutto il tempo
favorito questa colonna vertebrale centrale mostra il
nucleo del sistema di dati sorgente
sistemi che importano il passo di calcolo del passo
fase di segnalazione distribuire il rapporto
bella incidente d’auto questa cosa è come Londra
Heathrow Chicago è un grande centralizzato
punto di connessione per qualche ragione no
sai perché questo è solo un disastro diverso
forme di colori forme questa scatola dice qui
UI sottosopra
perché
questo diagramma descrive tutto il tuo
sistemi software su cui stai lavorando
oggi guardiamo la logica del business nel mezzo
abbiamo un sistema qui che fa affari
logica come super fantastico è che questo
l’immagine non ti dice niente, allora abbiamo capito
la visione logica delle viste logiche
praticamente tutto ciò che non include
scelte tecnologiche che ho scoperto
la gente ha davvero paura di mescolarsi
tecnologie su queste immagini e poi
abbiamo cose come la Ho Co the
senzatetto vecchio oggetto appuntito sai
solo un po ‘ di cose nitide che galleggiano
intorno a un database che non lo fa
ha senso, questo è un po ‘grande
e complesso quando ero un bambino aveva questi
libri di favole inizi dalla prima pagina e
scegli la tua avventura rivolgendoti a
pagine diverse nel libro di questo
lo stesso che inizi in cima vai giù
fai delle scelte alla fine muori
nella trappola è tutto male che ho
milioni di queste foto che girano intorno
il mio portatile chiedo ai gruppi scusa no no no
basta prendere le foto di loro IIT vederli
essendo stato creato così chiedo alle persone cosa loro
trovare una sfida per questo esercizio e
Dicono bene che non sappiamo cosa disegnare
non sappiamo come disegnare bene bene
questo è tutto ciò che riguarda UML ma um I
ero enormemente fuori moda, intendo
a persone che non conoscono 50 60 che usano solo
UML chiedi alle persone perché e dicono bene
o altrimenti troppo complesso è troppo basso livello I
non lo so, la mia squadra non lo sa o
Dicono che siamo agili non facciamo UML
perché siamo agili e facciamo TDD
invece sai che TDD sembra essere un
sostituire l’architettura in molti
le menti delle persone è davvero vero no
tu sai per me TDD che devi fare TDD
all’interno di una serie di limiti e
fornisce quadri e architettura
quei confini e quadri così questo
tutta la storia del diagramma è davvero difficile
per mostrare tutto su una singola immagine
e quando leggi questi classici
libri di architettura parleranno spesso
su viste e punti di vista e
Prospettive quindi questo è Philip Krypton
Porta avanti il quattro più un modello
vista di sviluppo vista logica premere questo
visualizzare la vista fisica casi d’uso legare il
tutto insieme
molti altri modelli e tecniche mostrano
esattamente lo stesso tipo di cosa ma
sono tutti diversi e il nome
bene la denominazione spesso non fa molto
senso così sono stato in riunioni dove
gli architetti hanno sostenuto la differenza
tra una visione concettuale la logica
vedere questi suoni come la stessa cosa
me, ma sono probabilmente po ‘stupido per
capiscilo se sono uno sviluppatore che scrive
linee di codice è che lo sviluppo di
tu o la vista di implementazione o forse
è il punto di vista del design ma è appeso a
secondo se sto scrivendo righe di codice se
Forse sto creando fisicamente dei file
questa è la visione fisica ma ora quella
non ha alcun senso perché la
la vista fisica è l’infrastruttura ma
stiamo tutti utilizzando l’infrastruttura virtuale
ora anche noi abbiamo un fisico virtuale
visualizzare il tutto non fa alcuna
percepire la cosa fondamentale che molti di questi
la condivisione di meccanismi e tecniche è questa
separano il design dalla logica
digita le viste dal codice e 70 bianco
ti rendi conto che qui c’è il nostro software
sistema nel mezzo e ci sarà vederlo
da diverse angolazioni e differenti
viste a seconda dei nostri interessi e in
per documentare e comunicare il tuo
i sistemi si devono capire questo tipo
di roba e questo mi fa male alla testa
ho due bambini e loro adorano
mangiando il gelato e lo fanno davvero
veloce e cosa succede quando mangio il ghiaccio
crema davvero veloce si ottiene congelare il cervello
ora se vai su Wikipedia ci sono
alcuni modi per impedire al cervello di congelarti
o beve una bevanda calda in anticipo
funziona bene no perché i miei figli no
bere bevande bevande calde nel modo più semplice
impedire che il congelamento del cervello si fermi
mangiando il gelato questo font è orribile
questo mi dà il mal di testa l’unico modo per farlo
evitare che il mal di testa sia quello di non guardare
questo carattere questi modelli di come si rompono
giù il sistema software mi fanno la testa
male potremmo guardare a diversi punti di vista in
isolamento per cercare di capirli o
potremmo semplicemente fare qualcosa di diverso
destra cerchiamo di non utilizzare come modelli
potremmo imbrogliare, dimenticare tutto questo
viste complesse roba perché non abbiamo solo
imbrogliare se lo scopo se l’obiettivo è quello di
creare alcune foto per comunicare il nostro
sistema software cosa perché non abbiamo solo
cercare esempi e utilizzarli come un
base come facciamo questo andiamo a Google
giusto così se fai una ricerca di software
diagramma di architettura su Google che ottieni
cose come questa pagina dopo la pagina successiva
pagina del diagramma a blocchi coloratissima di
Ovviamente, quello che faremo è che lo faremo
prendere alcuni di questi e basare i nostri esempi
su di loro e poi cosa succede
roba come questo diritto in modo da prendere questo uno
qui nel mezzo sappiamo che la stratificazione
è apparentemente importante quindi diamo un
diagramma che mostra gli strati di alcune cose
non si adatta mai abbastanza agli strati orizzontali
facciamo questi strati verticali e
sono buoni perché impilano il
diagramma insieme smettere di oscillare
fornire una certa rigidità perché il diverso
strati di colori diversi non lo so ma
almeno questo gradiente è ombreggiato
buono per gli acronimi PowerPoint di ogni genere
di cose qui e questi modelli sono
ripetuto più e più volte ragazzi
vedi questi calci attorno al tuo
architetti aziendali dell’organizzazione
amo questa roba in modo che possiamo imbrogliare così
sto tornando alla mia storia di pesca
completamente stufo di alzarsi davvero
nelle prime ore del mattino spendendo un sacco di
il tempo di mollare i pesci di plastica nel mare
e arrivare da nessuna parte così ho pensato bene
Ho intenzione di imbrogliare come fai a imbrogliare quando
vai a pescare bene, o puoi chuck
dinamite in siamo eccessivi o voi
posso comprare una barca quindi ho comprato una barca ora
probabilmente stai pensando sì 30 piedi 40
lunga bella cabina forse una piccola galera
Probabilmente dovrei cavillare ciò che intendo
barche che cosa intendo veramente è kayak due di
loro giallo brillante e plastica e questo
è bello perché sai molto di Jersey
bel posto e tu puoi andare e Bob
in giro per l’isola e lascia perdere
canna da pesca sul lato e, si spera
prendere un po ‘di pesce e ho fatto bene così io
catturato il mio primo branzino sul mio kayak ma
il fatto è che anche i miei bambini possono pescare
fuori dal mio kayak non facciamo altro che remare
un po ‘lasciamo delle piume
il lato lo facciamo per un po ‘e poi
Uscirà Mack Adoro questo look fotografico
il mio più vecchio qui è catturato dal pesce che è
davvero felice che mia moglie sia davvero eccitata
e il mio piccolo figlio nel mezzo è
crapping se stesso perché ha dovuto scommettere
in procinto di avere un mucchio di pesci scaricati
il suo giro portatile è come se fossi
appagante anche se ne ho presi alcuni
pesce ma non l’ho fatto sembra
Ho ingannato lo riprenderemo
codice successivo attacchiamo questo dal
altra prospettiva giusta quindi cosa succede
se pensiamo bene al codice, qual è il nostro
Scopo di queste immagini lo scopo di
queste immagini che stiamo cercando di disegnare è
è rispondere a un paio di domande di base
se stiamo progettando in anticipo è questo
domanda che stiamo cercando di raggiungere il
in fondo sai che è questo ciò che siamo
andando a costruire se siamo retrospettivamente
documentando un sistema allora è questo
la domanda l’ abbiamo costruita in quel modo
quello che abbiamo codificato e in realtà il codice
è il singolo punto di verità ma il
codice è la forma di realizzazione
architettura ora immaginiamo di avere un
enorme sistema aziendale 250.000 classi
disegneremo un diagramma con
250.000 scatole all’inferno, no, perché
non arriverai mai alla fine
quindi quello che facciamo su questi diagrammi siamo noi
parlare di astrazioni e astrazioni
sono un modo per farti conoscere le cose
insieme e prevenire una visione semplificata
del mondo, in questo caso il nostro software
sistema e cosa facciamo questo è perché
astrazioni ultima ragione su un grande
e / o sistema complesso come loro
essenzialmente ci permettono di rimuovere alcuni
informazioni rimuovono alcuni percorsi di rumore di
dettaglio e questo solleva un po ‘di piuttosto
domande interessanti e complicate quando
stiamo disegnando queste foto di
astrazioni fanno quelle astrazioni mappa
nel codice giusto, quindi se disegniamo
qualcosa c’è un livello o un modulo o
un componente possiamo vedere quei concetti dentro
la base di codice e la risposta è spesso
non proprio perché se prendi Java se
prendi c-sharp non ha un
parola chiave componente non ha a
la parola chiave layer non ha un servizio
parola chiave perché stiamo pensando in termini
di pacchetti di namespace di classi quando noi
scrivi nel codice e questi concetti sono
diverso da quelli delle immagini
mani taglienti che usano uno strato
architettura qui
wow è minuscolo cosa sono tutti gli altri
facendo decodificare il modo tradizionale iid
ha fatto il negozio ieri a Londra e
tutti mettono le mani in alto quando loro
Detto questo lavoro un altro e se lo fosse
fare del pizzo è una sorpresa così lei lo è
la tua tipica architettura a strati giusta
così strato di livello aziendale di presentazione
il livello dati inserisce alcune caselle nei livelli
perché tutti loro è così tanto
le persone si avvicinano alla progettazione del software e
sviluppo del software percepito saggezza
perché questo è quello che i libri ci dicono di fare
questo è il capitolo uno di un libro di primavera
conosci le app di struttura in questo modo
dati di presentazione livello caro dati
tier blah blah blah tu giri il
pagina descrive i diversi livelli
lo scopo di loro questa linea è abbastanza
l’interessante primavera punta a disaccoppiare
strati architettonici in modo che ogni strato
può essere modificato il più lontano possibile
questo non ha impatto sugli altri strati
fondamentalmente solo per isolare un impatto
impatto del cambiamento se si scarica
tutorial per la struttura di primavera per
esempio questo è il tuo codice base di esempio
pacchetto repository di pacchetti di domini
pacchetto di servizi tipo di suono come
i livelli che imposterai in eccesso
come faccio a strutturare le persone del mio codebase
darti esattamente lo stesso tipo di consiglio
lo stesso nel mondo.net percepito
saggezza questo è il modo in cui dovremmo fare
cose
destra in modo nuovo alla mia storia che pesca
voglio ancora prendere un branzino vicino
in piedi su Jersey e non ballonzolare
intorno a te sai intorno ad esso in un kayak così
Ci riprovo e vado e tu sai provare
alcune cose diverse e con cui ho parlato
alcune persone e dicono cose come
bene dovresti andare a pescare con la bassa marea
e diversamente da me se vado a pescare a bassa quota
marea non c’è acqua per definizione quindi
come funziona e poi vado
no stai pescando nel posto sbagliato
per cui è una specie di sfida a tutti
questa saggezza percepita l’ ho costruita sopra
gli anni quindi ho pensato che dovevo farlo
andare su un libro così sono andato al negozio di pesca
e ho comprato un libro sulla pesca al basso e
questo libro è come 20 anni è ottenuto
alcune storie affascinanti in esso ora il
cosa è la pesca al basso?
in realtà nessuno è molto riservato
per dirti le risposte e le loro
segreti soprattutto se si chiede loro per
spot per andare a pesca e questo è fantastico
libro e ha un sacco di consigli e
tecniche ma sono un po ‘astratte
loro non ti dicono veramente cosa fare se
questo libro è stato scritto da Yoda lo farebbe
in pratica dire questo trova il pesce e
li prenderai bene, grazie
devi trovare il pesce per catturarli
si, lo capisco
ma sfida alcuni dei miei
la saggezza percepita mi fa riflettere
diversi posti dove andare a pescare in modo diverso
tempi del giorno diverse tecniche
si sa in realtà avere un metodo per la mia
pazzia di buttare via roba nel
scena sperando per il meglio che sai
lanciando i miei piccoli pesci alle rocce per
esempio ancora una volta sarà Parcheggiare questo e venire
di nuovo in seguito questo è il tuo tipico
architettura a strati tranne che non lo è
perché ciò accade giusto, quindi tutti
sapere che le architetture stratificate tendono a
ottenere danneggiato molto facilmente così il
modo in cui implementiamo architetture a strati
sai che ognuno di questi è diverso
pacchetto o spazio dei nomi e al fine di
chiama roba in diversi pacchetti e
spazi dei nomi che roba deve essere pubblico
e una volta che qualcosa è pubblico può essere
chiamato da qualsiasi parte così questi
le architetture tendono a essere danneggiate
abbastanza facilmente e questo è ciò che alla fine
finisce in quelle orribili palle grandi di
fango ora ci sono diversi modi in cui possiamo
strutturiamo i nostri sistemi software che possiamo
utilizzare esagoni e cipolle e pulire
architettura e cose del genere
sono tutti modi diversi per strutturare il nostro
sistema e pensa al nostro sistema ma
in sostanza sono ancora stratificati a destra
possiamo ridisegnare la nostra architettura a strati
come cerchio sei roba dentro è roba
ancora deve essere pubblico possiamo ancora
corrotto così forse gli strati sono cattivi qui
forse dovrebbero essere considerati gli strati
alcuni di voi dannosi potrebbero trovarlo
controverso alcuni di voi potrebbero andare
si
Odio i livelli è un modo spaventoso
costruire software a cui non ho intenzione di rispondere
che poi consentono di rimuginare nella vostra
teste ma chiederò a questa domanda
questi strati abbiamo nel nostro software
sono i nostri elementi costitutivi significativi
o sono i nostri elementi costitutivi significativi
qualcos’altro quindi in altre parole a
strati solo un dettaglio di implementazione
che stiamo guardando troppo da vicino
c’è un ragazzo di nome George Fairbanks
ha scritto questo libro qui solo abbastanza
quindi per il libro di architettura brillante
lo consiglio vivamente e lui
identifica questa cosa chiamata questo libro
il code gap del modello e in sostanza esso
dice i tuoi modelli di architetto
stanno per mostrare cose diverse da
il codice e davvero di cosa si tratta
parlando è sapere di visualizzare il
architettura in modo diverso dal tuo codice
e molto di questo dipende da come tu
organizza la tua base di codice e quindi
hey riflettono questa organizzazione
foto di architettura e in George’s
prenota tu corri attraverso un sacco di
diversi tipi di modi di modellazione
sistemi e tutti essenzialmente fanno il
la stessa cosa che si sono separati si sono staccati
il modello di codice dal resto del
modulo di visualizzazione delle viste logiche del design mondiale
punti di vista e qualsiasi cosa così come facciamo a restringere
questo gap di codice del modello è ovvio
la risposta è unire due cose insieme
giusto la maggior parte del modello nel codice noi
provato questo 1012 anni fa guidato dal modello
l’architettura è terribile non ha funzionato
si sa mettere un sacco di un sacco di
informazioni nel nostro modello
premendo un tasto ottenendo il codice giusto
quindi buttiamolo fuori e facciamolo scorrere
sulla sua testa e ciò che George dice nella sua
libro è che puoi usare un
stile di codifica architettonica e-everything
in altre parole si rilasciano suggerimenti nel tuo
codice di base per riflettere il tuo architettonico
costruisci che hai un componente che hai
un servizio hai un livello che ti assicuri
quelle cose finiscono nella componente di parola
livello di servizio hai una confezione
Convenzione che dice tutte le cose
relativo a un singolo servizio è in questo
pacchetto in questo spazio dei nomi Zen quando tu
fai questo Wow, un piccolo numero di persone sì
ancora una volta che è la mia esperienza di tipo di
consultarsi in Europa nessuno lo fa
questo forse stiamo guardando questo il
modo sbagliato forse questi modelli che
stiamo parlando
non dovremmo disegnarli a mano
forse dovremmo essere automaticamente
generando queste immagini ma non possiamo
giusto è il 2014 e ci sono un sacco di
strumenti là fuori che possono disegnare
foto di architettura ma loro no
funzionano fondamentalmente non funzionano perché
perché vedono le cose che facciamo come
gli sviluppatori vedono i pacchetti spazi dei nomi
interfacce di classi che non sanno cosa
uno strato è che non sanno che a
i servizi sono componenti un modulo che vedono
gli stessi costrutti di base e quindi
questo è quello che riflettono sui diagrammi
struttura 101 Latics e dipende dal sonar
ecc. ecc., tutti danno il pacchetto
Dipendenza dalla classe dei diagrammi di dipendenza
diagrammi ti mostrano roba del genere
sai se hai una grande palla di fango
queste foto stanno per essere
orribile sai di averti fatto un casino
non ho bisogno di uno strumento per dirti così
qualcos’altro a cui pensare è forse
le lingue stavano usando non lo sono
adatto per i tipi di sistemi erano
costruendo oggi forse abbiamo bisogno di un linguaggio
Conoscete il livello dei servizi componenti
come cittadini di prima classe o forse non come
per lo più vediamo la saldatura, ma come facciamo?
unire architettura e codice renderli
lo stesso bene tutti i modelli che facciamo
produrre dovrebbe riflettere il codice i due
le cose dovrebbero combaciare idealmente
one-to-one e il modo per farlo è quello
assicurati di avere le tue astrazioni
corretta
ora UML ti offre due cose
UML ti offre un set standard di
pacchetti di componenti di classi di astrazioni
usa le bolle del caso quel tipo di cose e
il set standard di scatole e linee
notazione per descriverlo ogni volta che vedo
le persone che usano UML indovina cosa fanno loro
abusare delle astrazioni e del tipico
esempio è che abbiamo una lezione sulla classe
diagramma rappresenta un sistema o un
bus dei messaggi o qualcosa che abusano
la notazione che ho visto disegnare persone
diagrammi di scatole e linee con un goomar
diagramma di classe e tirano fuori tutto
i compartimenti per farlo sembrare un
scatola vuota quindi utilizzo uno strumento costoso
identità di cura o foto così mia
il workshop di venerdì riguarda il disegno
foto ma non mi interessa come disegni
le foto mi interessano delle astrazioni e
il modo in cui penso sia il sistema software
molto semplice quindi i miei sistemi software sono
composto da ciò che chiamo contenitori
contenitori solo qualcosa come un’app web
un server Web un server applicazioni a
dispositivo mobile del file system del database a
browser un servizio Windows che tipo di
cosa
è una cosa eseguibile da qualche parte
possiamo mettere codice o dati di cui sono un grande fan
rompere i miei sistemi in termini di
componenti così i miei contenitori contengono
componenti ora ti concedo questo è un
parola enormemente sovraccaricata che cosa sta per
significa un sacco di cose legate coesive
incapsulato con una bella interfaccia pulita
in cima perché principalmente realizzo sistemi in
Java e.net i miei componenti sono inventati
o costruito di classi che potrebbero essere
le funzioni potrebbero essere tabelle del database
dipende dalla tua tecnologia di scelta
è un semplice software per la struttura ad albero
sistema costituito da un mucchio di contenitori
ognuno dei quali ha componenti quelli
le cose sono fatte di classi con
questo in mente con questo set di
pensando alle astrazioni possiamo disegnare
immagini a diversi livelli, a sua volta noi
può avere una vista di contesto del sistema del
mondo che mostra il tuo sistema nel
roba di mezzo intorno ad esso all’interno di zoom in
il tuo sistema e mostriamo i contenitori
che ti dà la forma di alto livello di
il sistema all’interno di zoom in quelli
contenitori a turno e vediamo componenti
questo è normalmente dove mi fermo ma tu lo farai
vedi che il numero quattro qui puoi
scendi alle lezioni se vuoi te
può iniziare diagrammi fuori classi voi
avere i componenti interni dei componenti ma io
di solito non lo fanno normalmente
molti dettagli un esempio con alcune scimmie
questo è un sistema che ho costruito è chiamato
archiviazione di unità tech a è solo un contenuto
aggregatore per la comunità tecnologica locale
in Jersey questo è il mio sistema di guida tech
questi sono i miei tipi principali di utenti che sono
dipendenze del mio sistema uno zoom in al
scimmia li faccio saltare in aria questo è il mio
immagine dei contenitori mostra il mio webserver
il mio processo standalone e i miei database
dove sto memorizzando di nuovo i dati è solo un
forma di alto livello del sistema
Izu min a una di queste scatole che vediamo
componenti al suo interno sai che abbiamo
come un componente collegato a Twitter qui
e un connettore github e un newsfeed
connettore e questo è il modo in cui decompongo il mio
sistema software e questi diagrammi sono
essenzialmente come Maps, quindi se vai
Google vai su Google Maps e lo fai
cerca Jersey per me che mi dà
questo potrebbe darti il New Jersey ma
questa è una storia diversa e dà
hai una vista ingrandita di Jersey e questo
è fantastico perché ti dice che lo sai
dove le strade sono dove l’aeroporto è
dove le spiagge sono tutto quel tipo di
roba ma se non sai dove Jersey
è necessario ridurre alcuni livelli e
alla fine arrivi a quello che abbiamo scelto per te
dove Jersey è in congiunzione con il
resto d’Europa dovrebbero anche i diagrammi
essere come le mappe che conosci a volte vogliamo
la vista ingrandita del mondo
a volte vogliamo zumare e vedere
il sistema nel suo insieme ora questo è giusto
il modo in cui penso al software
sistemi non è necessariamente su
creando uno standard ma quello che voglio
fare è darvi qualche altra idea qui
altri modi per pensare al tuo
sistemi nella tua testa e ciò che questo modello
Ho appena presentato fa è fondamentalmente
mette la struttura statica del sistema
proprio al centro del codice in
classi anche se attraverso i componenti
contenitori e il sistema e una volta voi
capire la tua struttura statica del tuo
sistema altre cose cade in posizione
davvero facilmente intorno a te sai il tuo
il tuo runtime ti comporterai con i tuoi modelli
se vuoi disegnarli sono semplicemente
collaborazioni tra i componenti
la mappatura della distribuzione è fondamentalmente
contenitori su infrastrutture e così via
e così via e cosa questo fondamentalmente
fa è dice guarda chi è il maggiore
stakeholder per questa roba che stiamo facendo
per me siamo noi come sviluppatori la ragione
I documenti per i sistemi software è per
gli sviluppatori è perché o io voglio
qualcosa che posso mantenere in futuro
o voglio impostare la scena ora ecco a
foglio di carta bianco questo è un po ‘
quello che stiamo per costruire è come
immagina che lo costruiremo
e il mio formale C è fondamentalmente giusto
mettendo la struttura statica al
centro
e ammettere che gli sviluppatori sono il
stakeholder chiave con questo in mente voi
puoi quindi sapere di fare questa domanda noi
avere questi diagrammi abbiamo questi modelli
si mappa al codice riflette
il codice e se possiamo avere diagrammi
qui e se abbiamo l’architettura
i modelli e non riflettono il codice
i diagrammi sono fondamentalmente inutili
stiamo solo ingannando noi stessi
creato come una realtà alternativa circa
come pensiamo che il sistema dovrebbe apparire ma
non ora ho appena presentato brevemente
voi alcuni diagrammi su cui ho disegnato basandomi
un vero sistema che ho costruito per poterlo chiedere
la domanda che i miei diagrammi hanno fatto
riflettere il codice e viceversa e il
la risposta è che puoi andare a dare un’occhiata
te stesso perché è su Github the
risponde sì evviva Sono super fantastico
ho una bella mappatura pulita
tra il mio codice nella mia architettura il
caso di c’è un c’è un tweet
componente qui e ho questo bello
convenzione che dice che sai che c’è un
tutto il mazzo di componenti tutto bene
ben confezionato quanto è bello questo
epico oltre ad essere un po ‘di a
smartass ora questo è più interessante
domanda per chiedermi è iniziato come
questo o ho fatto questa situazione
e la risposta non è davvero
quindi ho disegnato questi diagrammi per il mio allenamento
corso nel mio libro e ho avuto questo
bel concetto nella mia testa di te lo sai
sono un gruppo di componenti nel mio
sistema ma quando ho guardato il codice
non combaciava così anche io stavo creando questo
fantasia su quello che pensavo del mio sistema
sembrerebbe perché, perché l’ho fatto
ho usato esattamente quello che ci ha chiesto
strati così questo è costruito in Java
Avevo un livello di servizi e un accesso ai dati
strato così ho avuto questo concetto di un tweet
servizio che in pratica memorizza i tweet in
un database Mongo e c’era un tweet
servizio che ti ha dato accesso
informazione
interfaccia perché sto scrivendo tutto
in primavera e Java vedono dopo un
interfaccia per tutto e un valore predefinito
implementazione con un po ‘ di business
logica delegando fino a un tweet di dati
accesso oggetto implementazione Mongo giusto
standard di architettura standard a strati
implementazione quindi cosa ho creato e
ho costruito un’architettura a strati nella mia testa
Sto pensando bene questo è un singolo
componente e come ho detto prima lo sai
questa roba deve essere pubblica che significa
chiunque può chiamarlo così è facile facilmente
corruttibile e un componente è davvero
Queste due cose tipo di marmellata insieme in
un modo davvero orribile due opzioni
ovviamente uno cambia le foto no
come quello non riflette il mio bello
visione idealistica che avevo nella mia testa opzione
di refactoring così ora il codice è simile
questo in modo sostanziale ho unito il
strati ho un bel componente tweet
interfaccia con un sacco di davvero davvero
semplici operazioni c’è un
implementazione che non è essenzialmente
questa cosa e ci sono i miei tweet Mongo
oggetto di accesso ai dati che è essenzialmente
questa cosa è pubblica queste due cose
cose un pacchetto protetto quindi non puoi
vederli abbiamo un bel incapsulamento
qui questo è bello in origine ho avuto questo
twittare oggetto accesso ai dati in qui pure
non è usato così ho cestinate che lo butto
via alcune persone quando le mostri questo
picture they go well Simon quello che hai
fatto ora è che non hai creato un layered
architettura e quindi non puoi
cambia il tuo database per essere qualcosa
altrimenti il Mongo posso avere ancora dei livelli
ma sono strati interni, quindi questo
tutta la cosa su di te sa che il nostro livello è
significativo o sono l’implementazione
dettagli qui i miei strati uno interno
dettagli di implementazione posso ancora cambiare
il mio accesso ai dati perché ho un
modo per isolare sostanzialmente il cambiamento in
questa classe, ma le persone che amano
test e TDD andare questo è davvero male
perché non puoi prendere in giro quella cosa
ora ma non c’è nessuna interfaccia usata
prendi in giro e non c’è modo per te
iniettare il tuo oggetto di accesso ai dati a questo
perché è tutto racchiuso in un pacchetto
ci sono alcuni workaround qui proprio noi
potrebbe creare un altro pacchetto parallelo
struttura in un codice sorgente separato
repository crea alcune cose astratte
fare un punto di iniezione qui che possiamo avere
alcuni metodi per farvi sapere a
mock implementazione del mio accesso ai dati
oggetto non posso essere disturbato da troppo
duro lavoro quindi una vite e non sta andando
per unità di testare il tutto va bene
quindi , non fare test unitari a chi è visto
tutto ciò che riguarda il collaudo dell’unità presso
esame dell’unità momento preso in considerazione
dispendioso destra in modo tale sta andando essere un
cosa educativa rapida veloce c’è a
ottimo articolo di un tizio di nome Jim Killeen
e sostanzialmente dice la maggior parte di ciò che facciamo
in termini di test unitario è completo
distruggere completamente l’intero punto di unità
testare e deridere e quel tipo di
cosa stavi sapendo se guardi circa 10
database di anni per un’infrastruttura lenta
è lento quindi inseriamolo
punti di iniezione possiamo prendere in giro qualcosa
e quindi possiamo scrivere test unitari contro
archiviazione locale nella memoria che
tipo di cosa e possiamo accelerare il
i cicli di feedback sono interessanti
carta non sono d’accordo con voi tutti
potrebbe non essere d’accordo con tutto ciò
Qualcos’altro che dice Jim è questo se lo facciamo
forse ha un sistema con un sacco di test
abbiamo un design orribile e forse
i nostri sviluppatori non apprezzano molto
come progettare bene il software che è un
un modo interessante per pensare a questo DHH
il tipo di rotaie su cui è saltato addosso è quello
sì unità di test terribile
quindi DHH ha creato Ruby on Rails davvero
un modo semplice per creare applicazioni web basate sui dati
molte cose sono fatte per te amore
l’impianto idraulico è fatto per voi in ordine
per rendere testabile il codice Ruby o Rails
devi iniziare a tritare roba con
interfacce punti di iniezione che tipo di
cosa e in questo blog post DHH dice
si, questo è fondamentalmente dannoso
il nostro design è dannoso per la pulizia
design che i rail ti danno e lui dice
non dovresti lasciarlo
i test guidano il tuo design è pazzesco
e di nuovo si può essere d’accordo o in disaccordo con
questo ma tu hai un punto proprio lì
sono alcuni punti davvero interessanti che sono
fatto qui qual è lo scopo della stratificazione
beh, è per assicurarsi che i cambiamenti siano
essenzialmente isolato quindi se vogliamo
raggiungere il nostro database lo facciamo uno
posto se vuoi cambiare il nostro
integrazione con un sistema Excel che facciamo
in un posto e forse dovremmo vedere
questo separatamente dai nostri test forse noi
dovrebbe pensare di più al nostro design
quindi con il mio sito di tribù tech c’è un
mucchio di roba che proprio non ottiene
test di unità e invece cosa faccio
sto facendo il test dei componenti, giusto che posso PI
prova quel componente come una singola cosa
tra cui sputando muck di Mongo
roba in Mongo e poi portandola
giù di nuovo ed è super veloce, quindi posso
fare veri test dei componenti su un mucchio di
roba nella mia base di codice
ora non è applicabile a tutto
ora se mi occupo di asincrono
sistemi o e-mail o sistemi al di fuori di
integrazione di test delle mie componenti per le mani
test è piuttosto difficile da fare per te
voglio ancora fare test unitari e mock
ma forse dovremmo essere unit test o
testando i nostri elementi strutturali forse
è qualcosa che vogliamo essere
lottando invece che solo ciecamente
unità testando tutto e questo è
esattamente di cosa si tratta
non copiare ciecamente ciò che ognuno è
facendo l’intera architettura a strati
cosa tutto facendo TDD e unità
testare e deridere perché lo facciamo
forse dovremmo chiederci il valore
queste cose ci stanno restituendo al mio
ho provato a pescare e ho provato e ci ho provato
dopo aver letto questo libro e alla fine io
chiama per vedere il basso stando su Jersey
e non girovagando intorno all’isola
e questo è sorprendente perché finalmente tutto
di questa pratica tutti questi diversi
cose che stavo sperimentando finalmente
è venuto insieme in qualche modo magicamente per fortuna
Ho visto persone che pescavano sai quando
Sto guidando per Jersey, ho visto gente
la pesca al basso e io provo e copio
quello che stavano facendo semplicemente buttando questi
cose e vedi
rileggendoli e quel tipo di
cosa devi sperimentare devi
cambia quello che stai facendo se ripeti
la stessa cosa più e più volte
otterrai lo stesso risultato e il
sistemi che costruiamo sono tutte diverse
quindi forse quella tecnica che abbiamo seguito per ultima
il tempo non è applicabile per questa cosa
stiamo costruendo questa volta, quindi è necessario
pensa a cosa stai facendo e a te
bisogno di capire il motivo per cui si sta facendo
e una volta che capisci qualcosa di te
può insegnarlo agli altri così, naturalmente, il
la prima cosa che succede quando sono andato
a casa con le mie storie e le mie foto dei miei
branzino è la mia famiglia va bene possiamo
vieni a pescare nella mia tessera no, questo può essere
altri tre anni di dolore quindi ora posso
vedere alcuni pesci ha anche solo un punto
sulla pesca se mai prendi tua moglie
fuori pesca assicurati che non cada
da una roccia questo è un periodo di due settimane
fa a Jersey finalmente il mio bambino di sette anni
catturato due pesci da solo colando
fuori a rotolare dentro sta andando papà papà a
quarto di pesce è canne da pesca facendo questo
rimbalzando papà papà che ho davvero
presi un pesce che stavo correndo verso
lui cerca di provare a scegliere questa cosa
e ha davvero paura di tenerlo
è una salsa brillante portatile questo
punto per me cattura il pesce al punto di
tutto questo è una buona architettura
abilita l’ agilità quindi questo è qualcosa
stanno tutti cercando di vedere
per voi conoscete i sistemi software che sono
il cambiamento della flessione facile da mantenere migliora e
questo è davvero l’ obiettivo, ma al fine di
facciamo questo dobbiamo pensare al
design abbiamo bisogno di costruire adattabilità e
agilità e, naturalmente, ci sono
diverse dimensioni delle architetture giuste
abbiamo le grandi palle monolitiche di
potrebbe qui facile da costruire rapidamente per costruire
un po ‘ di dolore da mantenere sull’altro
Alla fine degli spettri abbiamo ottenuto dei micro servizi
e architetture basate su servizi che conosci
un sacco di singoli liberamente collaborando
le cose ti danno molta flessibilità
molta agilità perché possiamo cambiare
uno qualsiasi di questi servizi in modo indipendente
a condizione che vengano soddisfatti determinati vincoli a
un po ‘più complesso per implementare la progettazione
può avere una collaborazione di cui preoccuparsi
quel genere di cose non vedo l’ora
a Rachel Lacox parlo dopo credo che lo sia
andando a demistificare qualcosa come mike
sorella rizzo e tipo di te
qualcosa nel mezzo sai che puoi
hanno ancora un’unità di schieramento monolitica
con una bella struttura pulita al suo interno ora
livelli dei moduli del modulo componenti
qualunque cosa tu voglia chiamarli abbiamo
per pensare a questo devi ottenerlo
giusto e questo ti dà abilità e il
struttura del tuo sistema software e
quindi la strategia di scomposizione te
usare per arrivarci ci sono davvero
importante e ci sono molti e molti
diversi modi in cui possiamo decomporre il nostro
sistemi software e cosa suggerirò
forse gli strati non sono l’opzione migliore
sempre ci sono altre cose che possiamo
fare qui parlare di approcci agili
retrospettive e ispezione e
adattarsi se vogliamo costruire un agile
architettura abbiamo bisogno di applicare lo stesso
mantra al nostro sistema come ispezioniamo a
sistema come guardiamo un sistema o noi
può disegnare alcune immagini che possiamo creare
alcuni modelli e quei modelli come ho detto
devono corrispondere al codice altrimenti
è inutile una volta capito il tuo
sistema allora puoi adattarlo bene
la gente dice che il refactoring dell’architettura
è davvero difficile da fare non è se tu
capisci cosa hai veramente quello che tu
avere qualcuno e dove vuoi arrivare
è un semplice processo di trasformazione
è semplice refactoring ed è per questo che noi
dovrebbe pensare a come allineare il
visione architettonica del software del mondo
e il codice perché ci permette di
rendere queste trasformazioni molto di più
facilmente e una semplice mappatura esplicita
tra i diagrammi e il codice davvero
aiuta davvero è più facile da spiegare
è più facile fare architettura
i refactoring è solo più facile da lavorare
con e fino a quando noi non troviamo che un vero
Silver Bullet dobbiamo pensarlo così
la cosa che ti esorto davvero a farti
sapere non adottare ciecamente quello a più livelli
l’architettura pensa agli altri modi in cui tu
può strutturare i tuoi sistemi software
pensa ad altri modi in cui puoi decomporsi
forse in componenti forse ai servizi
forse ai moduli e pensa a come
riferisci queste cose al codice e al mio
il punto finale è molto molto semplice se il tuo
sistema software è difficile da lavorare
cambiala questo è interamente dentro il tuo
le mani ti ringrazio molto
tu
Please follow and like us: