
così buongiorno a tutti e benvenuti
oggi sono il benvenuto nel codice come scena del crimine
voglio darti una prospettiva diversa
sulla tua base di codice sono qui per
indagare le tracce che lasciamo tutti
dietro mentre creiamo i nostri sistemi e voi
vedrà che c’è molto valore
informazioni in quelle tracce ed è
informazioni che ci aiuteranno
identificare il codice che è difficile da
mantenere il codice che rischia per il
effetti e il codice che diventa una squadra
sonda la punta della palla quindi saltiamo
proprio dentro e dare un’occhiata a ciò che noi
i programmatori effettivamente fanno con i programmatori
non scriviamo il codice, ne sono sicuro
ovviamente lo facciamo anche noi, ma è così
non dove passiamo la maggior parte del nostro tempo se
guardi i risultati della ricerca che farai
vedi quello che passerà la maggior parte del nostro
tempo di apportare modifiche a esistenti
codice e la maggior parte di quel tempo è
speso cercando di capire quale sia il codice
fa in primo luogo così prendono
via almeno per me è questo se vogliamo
per ottimizzare qualsiasi aspetto del software
sviluppo che dovremmo ottimizzare per facilità
di capire questa è una sfida
ecco perché dare un’occhiata a questo
visualizzazione che è la maggior parte del
i sistemi sembrano almeno quelli che sono stato
con cui lavori e tieni questo
visualizzazione quali parti sono difficili da
mantenere quando saranno i bug o eseguire a
team colloqui di produttività senza
più contesto che non possiamo proprio dire e
questa è una sfida che diventa più difficile
con la scala di esso perché di oggi
i sistemi sono sviluppati da multipli
i programmatori organizzano le squadre multiple
e questo lascia tutti con il proprio
vista di come il sistema sembra nessuno ha
un quadro olistico e questo è un
problema antico, così siamo stati
lottando con questo per molto tempo in
l’industria del software e mi piacerebbe
per iniziare dando un’occhiata a uno dei
approcci tradizionali per affrontarlo
e poi vediamo i limiti di ciò
approccio prima di passare ad alcuni
completamente diverso, quindi cominciamo
con metriche di complessità hanno uno qualsiasi di
tu o qualcuno di voi che usa la complessità
le metriche oggi sui tuoi sistemi sono così cool
circa 1015 persone grandiose così noi
avere un mucchio di metriche diverse per
scegliere da e la maggior parte di loro va tutto il
Tornare agli anni ’70, quindi questo è un
esempio questo si chiama McCabe cyclomatic
complessità in cui fondamentalmente considerate
il tuo programma o la tua funzione come un grafico
e quindi calcoli il numero di
percorsi possibili attraverso di esso e il più alto
quel numero più complicato è il
codice e questo tipo di ha senso giusto
perché i suoi legami con uno dei più
fattori limitanti che abbiamo nella programmazione
è un fattore cognitivo del nostro lavoro
la memoria c’è davvero così tanto noi
posso tenere in testa in una volta così vorrei
dire cose come il ciclomatico di McCabe
complessità rende sicuramente senso anche io
chiedo che so che era solo come 10
persone tra tutte le persone in questo
stanza che utilizza le metriche di complessità excel
oggi quindi se abbiamo metriche di complessità
per identificare il codice che è difficile da
mantenere perché non li usiamo nel nostro
l’industria non lo so, ma lo so
perché non uso metriche di complessità e
la ragione per cui non uso la complessità
le metriche sono perché le metriche di complessità
sono piuttosto cattivi nel predire la complessità
è una dichiarazione audace quindi per favore lasciatemi
supportalo leggendo una citazione per te
le metriche di complessità sintattica non possono
cattura l’intera immagine del software
complessità e ciò che mi piace di questo
il codice è che proviene da un documento di ricerca
e ciò che questi ricercatori hanno fatto erano loro
ha preso un sacco di metriche diverse come
Misure di complessità di McCabe e Halstead
e hanno identificato quanto bene fanno questi
le metriche si svolgono su basi di codice del mondo reale
e quello che hanno scoperto è stato quello presto
quando inizi a controllare il numero
di linee di codice che queste metriche non aggiungono
qualsiasi ulteriore valore predittivo Wow the
numero di righe di codice che è davvero
metrica approssimativa è davvero la migliore
posso farmi leggere un’altra citazione per te
e questo è uno dei miei preferiti perché
è un po ‘cattivo
l’uso delle metriche per gestire il software
i progetti non hanno nemmeno raggiunto uno stato di
infanzia quindi questa è una citazione di Robert
gloss ed è uno dei miei idoli è davvero
grande e classe di robot significa questo
il software è così complicato
aperto che non saremo mai più
in grado di misurarlo in modo da suggerire la lucentezza
invece è che ci affidiamo al nostro
l’intuizione ora come alcuni di voi sapranno ho
in realtà ha anche una carriera parallela
altra carriera parallela all’interno della psicologia
e come psicologo devi solo
amo il concetto dell’intuizione
perché è un uomo così caldo e soffice
soggetto giusto ma di cosa si tratta effettivamente
scopre che quanti di voi sono stati
lavorare più di un decennio nel
settore del software così quasi tutti
cool così in quel momento hai tutto
ha accumulato molte competenze e tutto il resto
la competenza è archiviata nella tua testa
ora l’ intuizione è fondamentalmente giusta
qualcosa in questa situazione forse
qualcosa che vedi sullo schermo o qualcosa del genere
vedi nel tuo editor di codice i trigger
un richiamo di alcune di quelle informazioni così
l’intuizione è fondamentalmente solo un riconoscimento
la cosa è l’intuizione è un automatico
processo inconscio e questo significa te
non avere un richiamo consapevole o che tipo di
informazioni che vengono recuperate e
questo è ciò che dà l’intuizione
le sue qualità mitiche ma anche le rende
intuizione estremamente gettata al cognitivo
pregiudizi e anche se potessimo in qualche modo
controllare quei pregiudizi che non possiamo
perché noi siamo l’intuizione degli esseri umani
ancora non fare il trucco e il motivo
perché quello è che l’intuizione non scala
non importa quanto bravi programmatori siamo
non c’è modo che la nostra esperienza
sta andando in scala a centinaia di
migliaia o addirittura milioni di righe di codice
non c’è davvero modo di farlo e dentro
l’industria del software non ci è venuta
per andare con una buona risposta a questo
sfida quindi quello che suggerisco è che noi
guarda in un campo completamente diverso
è una disciplina diversa ma una che
la faccia è familiare, complicata e aperta
domande come facciamo quindi diamo il benvenuto a
psicologia forense probabilmente tutti
conosci un po ‘di medicina legale
forse hai già letto
profilazione nelle notizie o hai visto CSI
non è vero, e scommetto anche tutto questo
hai visto il film Silenzio del
Agnelli giusti, anche la scommessa che tutti voi
sono d’accordo con me che Hannibal Lecter è
il personaggio più figo, così il primo
volta che ho visto quel film sono anche estremamente
influenzato dietro un leggio e io no
significa che no no no non intendo questo in
un modo spaventoso, no, sono stato influenzato da
le sue abilità forensi non le altre cose
è completamente sicuro cenare con
io stasera il promesso, quindi se pensi
su di esso è davvero incredibile cosa
Hannibal Lecter fa Hannibal Lecter
siede lì rinchiuso nella sua gabbia e lui
riceve informazioni dal crimine
scene e basato su quell’informazione
solo Hannibal Lecter è in grado di dedurre
non solo i loro motivi ma anche il
personalità del reo e del
la prima volta che ho visto quel film ero come
wow, voglio imparare a fare quegli anni
più tardi, mentre in realtà inizio a studiare
psicologia criminale ottengo terribilmente
deluso perché è risultato che
quelle tecniche che Hannibal Lecter
avevano usato hanno un molto serio
limitazione si scopre che funzionano solo
nei film di Hollywood fortunatamente abbiamo ottenuto
alcuni metodi più scientifici quindi per favore
permettimi di darti un paio di minuti
introduzione al criminale geografico
profilazione ora offensore geografico
la profilazione si basa su un aspetto molto fondamentale
fatto ed è forse un po ‘sorprendente
perché è ovvio, ma lo sapevi
che la maggior parte delle volte Truman Al si comporta
proprio come noi loro vanno al cinema loro
vai a ristoranti la visita amici
forse anche prendere i bambini da
la scuola e esta si muovono in un’area
questo è il punto in cui opportunità
crimine perché per parlare di crimine o lì
deve essere una sovrapposizione nel tempo e nello spazio
tra un delinquente e una vittima e cosa
questo significa che sono le scene del crimine
le loro posizioni geografiche non sono mai
casuali contengono informazioni su
il criminale e questo è qualcosa che possiamo
usa per catturarli lascia che ti mostri come
questo è fatto e lo farò prendendo
è tutto il modo di tornare al 19 ° secolo
Londra alla Whitechapel area
strade che Jack lo Squartatore perseguitava e
Spero che tu possa vederlo qui
alcuni punti blu là quelli sono il crimine
scene dello Squartatore, quindi con cosa fai
la tua profilazione grafico se tu
voglio prendere Jack lo squartatore è quello
consideri un centro ogni scena del crimine
di gravità e poi li aspetti
tutti insieme ma con uno importante
Torsione psicologica psicologicamente tutto
le distanze non sono uguali quindi scene del crimine
che sono più vicini gli uni agli altri
ottenere il segno più peso quindi ora quando si
aspettali tutti insieme finisci con a
nuovo centro di gravità e questo è il rosso
area lì nel mezzo che si chiama a
hotspot e secondo la ricerca
c’è una probabilità del settanta percento
il nostro autore avrà la sua casa basata
quindi se vuoi catturare lo Squartatore
questa è l’ area da pattugliare e sorvegliare
e ora immagino che tu sia tutto curioso di sapere come
è mai intenzione di legare questo a
software sono un po ‘curioso anch’io
proviamo a farlo ma prima di farlo
che forse vuoi sapere se questo
roba di profiling funziona a tutti perché io
Lo so, Jack lo Squartatore è un caso da pecora
ha iniziato a fare bene non è mai stato
cucinato quindi chi era Jack lo Squartatore I
davvero voluto poter rispondere a questa domanda
Non posso, ma quello che posso fare è guardare
i principali sospettati e vedere quanto bene
Adatta il profilo quindi iniziamo con il mio
il numero uno preferito sospetto preferito mr.
James Maybrick sig. James Maybrick era un
commerciante di cotone da Liverpool e quando
è andato a Londra per fare affari che ha usato
affittare una stanza a
sei dritto così diamo un’occhiata a
il commercio del sesso maschile è proprio qui
al centro del nostro hot spot quindi James May wick
è abbastanza adatto per questo profilo se
leggi le notizie credo che sia andata perduta
caduta probabilmente hai sentito parlare di
presunte prove del DNA contro un altro
Lo squartatore sospetta il parrucchiere Aaron
Kosminski ora kozminski è probabile che sia vissuto
a sayan square quindi diamo un’occhiata a
quadrato sinusoidale come vedi il quadrato sine è un
un po ‘a est dell’hotspot così
kozminski non è una buona idea come la mia
mattone ma questo solleva un aspetto importante
punto sul tuo criminale grafico
profilazione che è importante per te
tieni dietro la testa mentre ci muoviamo
alla parola software così geografica
il profiling del trasgressore non punta mai a
posizione precisa se geografica
il profilo del trasgressore fa è quello
proietta una superficie di probabilità sul
geografia proprio così finalmente vediamo come
questo riguarda il software e penso
Questo è importante perché guardarlo per
un momento guarda l’ hotspot e
considera quello che abbiamo fatto che abbiamo preso
un’area geografica potenzialmente vasta e
restringilo in un’area molto più piccola
dove ora possiamo focalizzare una perizia umana
quindi se potessimo fare lo stesso per
software cosa se potessimo prendere quelli
centinaia di migliaia di righe di codice e
mai giù verso alcuni hotspot più piccoli
dove ora possiamo concentrare la nostra intuizione su come
possiamo farlo la prima cosa che noi
il bisogno è ovviamente una geografia del codice
ecco il mio approccio preferito questo è il codice
cydia include i sistemi software per la città
di visualizzare le pietre in modo che ogni pacchetto
ogni spazio dei nomi diventa un blocco di città
e ogni modulo ogni classe diventa a
costruendo e probabilmente lo vedi lì
sono alcuni grandi edifici e alcuni davvero
quelli piccoli e questo perché sospiri
rappresenta la complessità quindi più
complicato un codice che rappresenta un edificio
più grande è l’edificio e ciò che io
come su questa visualizzazione
ci dà una buona idea di dove il
le parti complesse sono in quella base di codice ma
ancora una volta questo non ci spinge in avanti
sono solo semplici metriche di complessità
visualizzato in un modo nuovo è utile ma
non è così utile come potrebbe essere così
quello che suggerisco è che aggiungiamo il
dimensione mancante abbiamo bisogno di aggiungere il
movimento spaziale non di criminali ma di
programmatori e dati di tutti voi
già non siamo abituati a pensare
in questo modo sto parlando del
sistemi di controllo della versione ogni volta che
apportare una modifica al nostro software
il sistema di controllo della versione registra molto
informazioni interessanti questo è un semplice
esempio da ottenere e vedi che ciascuno
il tempo in cui fai il commit capisci chi ha fatto a
cambiare quando è stato fatto il cambiamento e la maggior parte
importante dove nel codice ha fatto a
il cambiamento è avvenuto ora questo è un singolo
impegnarsi per un singolo programmatore di grandi dimensioni
il sistema è composto da migliaia di persone
di commetti giusti forse centinaia di
programmatori quindi cosa succede se cosa succede se prendiamo
tutti i dati si aggregano e lo proiettano
sulla nostra geografia del codice ecco cosa
sembra
così vedi quelle macchie rosse che si illuminano
quelli sono i nostri punti caldi e il punto caldo
in questo caso è definito come complicato
codice con cui lavoreremo spesso
codice complicato che dobbiamo lavorare
con spesso che tipo di codice è quello
qual è la conseguenza di ciò da trovare
ho fatto una serie di casi di studio e io
vorrei presentarne uno per
questo è un case study fatto su a
sistema abbastanza grande composto da quattro
centomila righe di codice che
il sistema è stato sviluppato da 89 programmatori
e ho guardato il periodo di un anno e
mezzo e durante quel tempo quelli
i programmi hanno apportato molti cambiamenti, ecco qui
quale sia il profilo geografico del criminale
sembra che mia moglie affermi che sembra
un alieno ma non è non è questo
quattrocentomila righe di codice e
la prima cosa che noti oltre
l’ alm è che sono tornato a
rappresentazione bidimensionale e
questo perché penso che ci dia un
è una panoramica migliore su sistemi di grandi dimensioni
anche un po ‘ più reminiscenza del reale
mondo dei profili dei venditori che abbiamo guardato
prima, quindi questo è interattivo
visualizzazione che significa che puoi zoomare
dentro e fuori al livello di dettaglio di
interesse ma anche qui sul più alto
livello siamo in grado di individuare un numero di
gli hotspot ora ricordano che i punti caldi erano
codice complicato che devi lavorare
con spesso cosa possiamo aspettarci di trovare
quando guardiamo in un hotspot per rispondere
quella domanda che ho deciso di estrarre un secondo
insieme di metriche ho deciso di guardare il
distribuzione di bug in quel sistema e io
fatto perché gli insetti hanno questo divertente
proprietà che gli insetti tendono a raggruppare le borse
piace l’un l’altro così nel tipico grande
sistema relativamente pochi moduli tendono ad essere
responsabile per la maggior parte di tutti i bug
e cerco una sovrapposizione con il caldo
punti che ho guardato al predittivo
valore di punti caldi e cosa avrebbe
scoperto è stato davvero interessante e
ha scoperto che i punti caldi identificati
sette su otto più effetto e
sport
ancora più interessanti solo i punti caldi
costituiva ancora il quattro percento del codice
quel codice era responsabile per
il settantadue percento di tutti gli effetti
o se lo giriamo in questo
sistema particolare se miglioriamo solo
quattro per cento di tale codice a sbarazzarsi di
la maggior parte dei tuoi difetti e il caldo
le macchie ti mostrano esattamente le parti del tuo
base di codice che è la cosa più giusta
ora i punti così caldi ci aiutano a restringere
grande sistema per le parti che davvero
importa le parti che effettivamente lavoriamo
con dove siamo in grado di ottenere un profitto
sul nostro investimento che facciamo in a
riprogettazione o miglioramento, ma questo è
davvero solo un punto di partenza che possiamo fare
molto di più con questi dati e lo farei
piace dimostrartelo avendo un
guarda cosa succede al nostro codice cosa
vedi qui è un’immagine di un computer
programma e sono ben consapevole che tu
non posso leggere i dettagli che è
volutamente voglio solo fluttuare per mettere a fuoco
sul modello generale qui e quello è
perché sono abbastanza convinto come noi
settore in cui siamo in realtà abbastanza bravi
scrivendo il codice sappiamo che buon codice
sembra che conosciamo l’accoppiamento libero
conosciamo la coesione che conosciamo
principi solidi e tutto il resto
cose che pensiamo siano importanti così io
affermerebbe che la loro prima versione di
un programma in genere sembra abbastanza buono ma
allora succede qualcosa diamo un’occhiata
a quel whoops non sembra troppo buono oh
no oh no oh no oh gee quello che è appena successo
un programma è iniziato così bello e poi
un numero di salsa D piccola per soccorrere a
è quello che sono quei disastri cosa solo
successo bene lasciami dire che iniziamo
fuori davvero bene il secondo che è un
nuova funzionalità la terza è un bug
risolti più tardi il venerdì poco prima sul
linea rossa
e il terzo che deve essere quando
il capo del progetto ha deciso di tagliare il
portata e poi ovviamente ha cambiato la sua
mente così dis ai miei amici questo è il momento
questo è il tuo programma
manutenzione e questo è effettivamente un bene
Significa che qualcuno usa il tuo
programma e si preoccupano abbastanza di farlo
suggerire miglioramenti perché ognuno di
quei disastri rappresentano qualcosa di simile
qualcuno Fox aggiunge valore al tuo programma
quindi questo è un buon segno il problema
inizia quando continuiamo a crescere
quel fondamento traballante quando permettiamo il nostro
codice per declinare in qualità così
quello che vogliamo essere in grado di fare è farlo
in qualche modo identificare quelle parti del codice
base che classificano così ecco
un modo per farlo è un’analisi
chiama le tendenze alla complessità e quello che faccio
ecco una foto ogni hot spot in
codice di base e quindi una scansione attraverso il suo
cronologia del controllo della versione e misura il
complessità di ogni riparazione storica
di quell’hotspot e questo ci permette di
traccia la tendenza nel tempo come quella che
a sua volta ci consente di prevedere il futuro
e il grafico che vedi lì
rappresenta la tendenza alla complessità di a
unico hot spot in quattro anni e tu
può vedere che questo codice ha appena tenuto
accumulare complessità ora ricorda
è un punto caldo che significa che dovevamo
lavorare con esso spesso cosa ne pensi
succede se dobbiamo lavorare con il codice
spesso e diventa sempre di più
complicato nel tempo direi che lo è
non c’è da meravigliarsi che ci sia un forte
correlazione tra hotspot e difetti
quindi con una tendenza alla complessità siamo
in realtà in grado di prendere il tuo debito e
fermare quella tendenza smettere ulteriormente
declino tutto bene così fino a questo punto
Mi sono concentrato sul tema
lato tecnico ma abbiamo qualcosa
ancora più importante parlare di oggi
e questa è l’altra dimensione di
software di sviluppo software
sviluppo come
attività sociale e mi piace presentare
questa parte della presentazione di uno di
le migliori citazioni che conosco del software
il codice di sviluppo non mente se vogliamo
per sapere come qualcosa realmente realmente
funziona davvero abbiamo bisogno di esaminare la
codice la verità è lì ed è
descritto in dove un preciso tecnico
dettaglio così co non mente, ma non lo fa
dì anche tutta la verità e se noi
limitarci a ciò che è visibile in a
struttura statica del codice ci manca a
molte informazioni preziose e quello che sono
andando a mostrarti ora o misura quello
non possiamo fare solo dal codice
e il primo esempio è qualcosa che io
chiamare un’analisi di accoppiamento tempura così
vediamo come funziona con tempura
accoppiando così dove il semplice sistema qui
consta di tre soli diversi
moduli e ciò a cui siamo interessati ora
è l’evoluzione nel tempo, quindi il primo
volta che facciamo una modifica al sistema di noi
cambiare l’iniettore di carburante e il
modulo di diagnostica insieme nel
secondo impegno, cambiamo qualcos’altro
nel terzo impegno siamo tornati
cambiando l’iniettore di carburante e a
modulo di diagnostica di nuovo ora se questo è
una tendenza che continua ci deve essere
una sorta di relazione tra un carburante
iniettore e modulo di diagnostica a destra
perché stanno cambiando insieme a
tempo che tipo di relazione potrebbe
quello potrebbe essere quello che troverai quando
inizi a indagare su questi risultati
è la maggior parte delle volte che lo troverai
troverai che hai del codice
qui hai un altro codice qui
e questo usa quello così ogni volta
cambiate questa API che devi modificare
anche il cliente è chiaro
vecchio accoppiamento fisico e questo è davvero
qualcosa che puoi vedere nel codice ma
ricorda che l’accoppiamento tempura non è misurato
dal codice è misurato dal
evoluzione del codice e questo significa che tu
a volte troverà modelli come questo
abbiamo del codice qui
qualche altro codice qui e non c’è
dipendenza a tutti tra di loro ancora loro
continua a cambiare insieme nel tempo come può
quello che potrebbe accadere è che è di qualche tipo
di spettrale cosa della fisica quantistica più di
il tempo non è quello che trovo di solito quando io
investigare su quei casi è un caro vecchio
amico copia incolla hai del codice
qui comporrà lo strappo qui e
qui e ora ogni volta che modifichi il
originale devi ricordarti di modificare
anche le copie e quindi l’accoppiamento tempura
è un modo eccellente per rilevare il software
cloni ma c’è davvero molto di più
possiamo fare con accoppiamento tempura che possiamo
analizzare architetture software complete
e vorrei mostrarvi una delle
esempio di quello e poi vediamo il
anche la dimensione sociale entra in gioco
quindi questo è un esempio per carina
sistema semplice ne abbiamo tre diversi
sottosistemi e possiamo misurare
temperatura a livello di sottosistema
anche se lo facciamo su questo sistema noi
in realtà scoperto che se queste merci
i sistemi sono un paio di volte secondo te
fa la differenza se quel sistema è
sviluppato da un singolo programmatore o se
è sviluppato e programmatori multipli
organizzare le squadre multiple oh sì sì
fa la differenza e in realtà
sperimentato che alcuni anni fa a quello
volta ho fatto un po ‘di lavoro per un grande abbastanza
organizzazione di sviluppo eravamo
qualcosa come 200 programmatori e il
il primo giorno che arrivo al lavoro mi viene assegnato un
numero di compiti quindi ne ho scelto uno
si sedette e iniziò a lavorare su quello
ma molto presto notato per
Completa questo compito che devo fare a
la modifica di un’API era davvero
semplice modifica ma quell’API era di proprietà di
una squadra diversa, quindi mi sono avvicinato
quella squadra guidava e gli chiedeva se poteva
fai questo è cambiato e lui è andato come si
certo è un cambiamento semplice e morto che ottengo
iniziato subito Oh perfetto così io
tornò alla mia scrivania, poi tornò
come una settimana dopo ora ho finito tutto bene
semplice cambiamento
ma non ci ho pensato troppo a
quella volta probabilmente qualcosa è venuto fuori così
La cosa è che si è scoperto che dovevamo cambiare
quell’API molto e ogni volta dovevamo
fai che il cambiamento ne abbia preso almeno uno
settimana per avere almeno una settimana quindi io
Ho pensato davvero di scoprire cosa c’è
sto succedendo così sono andato in una squadra
portare ancora una volta e gli ho chiesto di dire
scusa ma quel cambiamento è stato così tanto
più difficile di quanto ti aspettassi e ha guardato
a me come no, certo che non ha rubato
era semplice, quindi perché me lo chiedi?
significa che ti ha preso una settimana e quello che ha detto
ho completamente cambiato come hai fatto
architettura software perché cosa
è successo questo era il cambiamento era davvero
tre campane per loro da fare in ordine
per farlo modificare ancora un’altra API
che era di proprietà di una squadra diversa e
a loro volta dovevano andare a un altro ancora
squadra e quella squadra dovevano andare al
amministratori di database e sì come noi
tutti sanno che è cambiata la richiesta
morire così si scopre se hai un
sistema in cui si ha un accoppiamento tra
le sue diverse parti e anche sviluppato
da parte di più squadre e tu hai effettivamente
una dipendenza anche tra le persone
e questo torna indietro fino a uno di
le famose osservazioni sul software
sviluppo della legge di Conway immagino tutto
hai familiarità con la voce calma come
molti hanno familiarità con il caos della legge di Conway
quasi la metà di voi grande così vorrei solo
trattalo davvero brevemente perché di Conway
la legge ha ricevuto molta attenzione
negli ultimi anni è la legge di Conway
fondamentalmente l’osservazione che la strada
siamo organizzati tende a riflettersi
nel tipo di progettazione del software quindi
detto popolare se lo si guarda e
come il dizionario degli hacker è che se
hai quattro squadre che progettano un compilatore
otterrai un compilatore a quattro passaggi e
è un modo divertente e cinico di farlo
guardalo ma la cosa bella con
La legge di Conway è quella che viene dalla legge
altrettante interpretazioni come le loro
documenti di ricerca su di esso in modo che possiamo
in realtà scegliere il nostro preferito qui e io
usa sempre la legge del Congresso al contrario e
lì inizi con il tipo di sistema
stai cercando di costruire e poi guardi
a questo e poi disegni il tuo
organizzazione basata su quel sistema come
dovremmo essere organizzati per farlo
capita nel modo più efficiente possibile e io
fallo perché quando è la legge di Conway
usato in Reverse diventa un utile
strumento organizzativo ma intendo la maggior parte di
il tempo non stiamo facendo un nuovo software
lei trame abbiamo sistemi esistenti
che dobbiamo modificare ciò di cui abbiamo bisogno
migliorare che abbiamo bisogno di correggere i bug in
quindi, come possiamo usare la legge di Conway sull’eredità
codice la prima cosa che suggerisco sempre è
che inizi, ma cerchi di capire
quello che hai oggi quanto bene il tuo
l’attuale architettura supporta il tuo modo di
lavorando e un modo per farlo è vicino
usando qualcosa che chiamo comunicazione
diagrammi quindi sono diagrammi di comunicazione
creato dall’evoluzione del tuo
codice base quindi quello che faccio è una scansione del
completo repository del codice sorgente e ciascuno
tempo trovo un modulo in cui due diversi
i programmatori hanno contribuito a questi due
i programmatori ricevono un collegamento di comunicazione
tra di loro e poi continuo a scansionare
e un terzo programmatore arriva e
se ha lavorato nella stessa parte allora
anche lei ha un collegamento di comunicazione
nel tempo questo ci permette di
alzeremo un grafico completo sul loro
percorsi di comunicazione ideali dei nostri
organizzazione e diciamo ideale perché
ricorda che questo è estratto da come il codice
è stato effettivamente creato non c’è niente
qui per suggerire che ciò rappresenta
comunicazione che effettivamente ha avuto luogo
quindi quello che vuoi fare è prendere un
Schema comunicazione e confrontarlo
contro il tuo organigramma formale
e qualsiasi discrepanza deve essere davvero
compreso così diamo uno sguardo ad alcuni
risultati tipici che cosa si può aspettare di
trova quando lo fai secondo
Conway questo è quello che ti aspetteresti
trova e quello che vedi lì è semplice
esempio hanno tre squadre diverse e
vedi che la maggior parte delle linee di mezzo
membri della stessa squadra e questo significa
funzionano nelle stesse parti del codice
condividono lo stesso contesto e questo è
qualcosa che rende davvero
comunicazione molto più semplice e
più economico quindi è quello che vuoi vedere
e vedi anche che hai il
programmatore occasionale che lavora in a
parte diversa della base di codice e
questo è solo un segno che il certo
il grado di impollinazione incrociata è un bene
cosa nello sviluppo del software per questo è
la condivisione di conoscenze probabilmente persone che
sono squadre rotanti quindi è qui che tu
voglio essere guardiamo al contrario
lato dello spettro vuoi vedere a
Completa il disastro qui andiamo così è
una storia sulla compagnia questa è una
compagnia erano in un ottimo
posizione avrebbero intenzione di fare un nuovo
prodotto e erano in una buona posizione
perché avevano fatto qualcosa di molto
simili in passato, quindi lo sapevano
ci porteranno un anno, naturalmente, qualcuno
ha avuto l’idea di averne uno
anno ma sai che lo abbiamo davvero
bella fiera in soli tre mesi
lo facciamo in tre mesi, va bene così
come prendi qualcosa che ti aspetti?
prendere un anno comprimerlo a
solo tre mesi è così facile a soli 40 anni
quattro volte più sviluppatori su di esso
e ti prometto che questo è stato davvero
progetto veloce veloce proprio così l’iniziale
l’architettura è stata impostata e 25 consulenti
sono stati reclutati che assicurano il tempo che
ti porterebbe a leggere il mitico
mese uomo e questo era solito organizzarli
in quattro squadre diverse come pensi
la struttura di comunicazione sembrava
e questo è il dato reale è stato permesso
per usare questo è i dati reali dal
il vero progetto qui è quel dito
sembra un po ‘fico, non è vero, lasciami fare
assicurarti che non c’è niente di interessante in questo
questo rappresenta il caos è completo
comunicazione anarchia perché se tu
dai un’occhiata , vedrai che sì
certo all’interno di ogni squadra le persone lavorano
nelle stesse parti di un codebase il
problema è che non tutti gli altri come
bene, quindi questo non è quattro squadre diverse
questa è praticamente una squadra gigantesca di 29
persone con organizzazione artificiale
confini tra loro e io no
lavoro sul progetto reale ma sono entrato
in seguito e ha fatto un post-mortem
analisi e parlo molto al
sviluppatori e loro mi hanno detto molto
roba interessante praticamente tutti loro
si sono lamentati della qualità che hanno avuto molto
di difetti la seconda cosa che
tutti mi hanno detto che il codice era
difficile da capire perché anche se tu
ha scritto il pezzo di codice te stesso oggi
tre giorni dopo sembrava completamente
diverso perché cinque altri sviluppatori
lo aveva lavorato nel frattempo e
un’altra cosa che è venuta fuori è quella
hanno passato molto tempo a fondersi
diversi rami delle caratteristiche che potevano
passare letteralmente giorno a volte anche a
settimana fondendo diversi rami se tu
guarda quello schema di comunicazione tu
vedi che no non avevano un’unione
problema il loro problema era che loro
l’architettura non poteva proprio supportare la loro
modo di lavorare con esso così se lo trovi
te stesso in quella situazione che è
sfortunatamente solo due cose che puoi fare
o devi cambiare posto
architettura per supportare il modo in cui vuoi
lavorare con esso o è necessario cambiare
la tua organizzazione quindi le persone si prega di allineare
la tua architettura e la tua organizzazione
il tuo
il codice ti ringrazierà per questo
va bene così il progetto ha appena totalmente
riguardo ricordare che i programmatori
mi sono lamentato molto dei bug e di quello
non dovrebbe essere sorprendente dato ciò che noi
in realtà sapere sui bug del software
risulta che il numero di programmatori
dietro un pezzo di codice è uno dei
i migliori predittori del numero di difetti
lo troverai così in generale il
più programmatori che hanno contribuito
a un modulo più problemi di qualità in
quel modulo così comincio a pensare sì
bene ancora una volta sono dati che in realtà
potrebbe mio da un sistema di controllo di versione
e identificare tali componenti a rischio
per i difetti, ecco un modo per farlo
è una visualizzazione chiamata frattale
figure e mostri le figure funziona come
questo che consideri ogni modulo una scatola
e ogni programmatore viene assegnato a
colore e più hanno contribuito
al codice più grande ci sono via
la scatola in modo da vedere un esempio qui di
quattro diversi moduli e lo vedi
lo sviluppatore rosso arancione e quello
uno è in realtà verde su uno di essi verde
hanno grigio un programmatore che hanno scritto
la maggior parte del codice, ma se un accesso principale
sviluppo parallelo vorrei andare per il
secondo modulo lì perché lo vedi
come contributi di un sacco di diverso
sviluppatori molti piccoli contributi e
quando vedi uno schema del genere tu
ho bisogno di capire perché e te lo prometto
se guardi dentro quel codice troverai
quel codice cambia per un motivo
motivo per cui il modulo attrae molti
i programmatori è probabilmente perché ha
molte ragioni per farlo prova troppo
responsabilità quindi è un bene
punto di partenza ma possiamo fare molto
più con le cifre dei fattori come vedi
le cifre di fraktur lo rendono abbastanza facile
identificare il proprietario della conoscenza il principale
sviluppatore dietro ogni modulo e se tu
avere queste informazioni per ogni modulo
perché non lo proiettiamo sulla nostra statica
geografia del codice che ci permetterebbe di
costruire una mappa della conoscenza completa finita
codice base ecco come appare e di nuovo
questi sono dati reali dal vero progetto questo
è il progetto di studioso e vedi a
parte del compilatore lì e questo è
qualcosa che usi per semplificare
comunicazione quindi diciamo che funziona
esattamente lo stesso ogni programmatore è
assegnato un colore e quello che vedi è il
lo sviluppatore principale quindi afferma di aderire al
progetto di studioso e tu vuoi sapere
qualcosa sul retro in tuo
in alto a destra, direi così
c’è una discreta possibilità che il
lo sviluppatore blu chiaro potrebbe sapere qualcosa
su di esso e se lei non sa forse
lo sviluppatore verde sa quindi questo è
qualcosa che usi non solo semplificato
comunicazione ma anche per garantire che
inviti le persone giuste per uccidere
rivedere o discutere un progetto proposto
cambia con le persone giuste ma possiamo
fare ancora di più invece di mettere a fuoco
sviluppatori individuali, perché no?
aggregarli in squadre che daranno
noi un modo per valutare la legge di Conway qui
come appare così ora i colori rappresentano
squadre e vedi secondo Conway
questo in effetti sembra abbastanza bello
la squadra rossa hanno il loro
sottosistema dove possono praticamente
lavorare in isolamento e il sistema rosa
hanno anche il loro sistema in modo che anche
sembra abbastanza buono ma sotto di te
avere un sottosistema abbastanza grande con
contributi da tutte e tre le squadre e
di nuovo quando trovi qualcosa del genere
devi capire perché e potrebbe
essere semplice come questa organizzazione può essere
così come un’altra squadra da affrontare
responsabilità condivisa ma immagino che
il più delle volte quello che troverai è
di nuovo il codice cambia per un motivo
motivo per cui il sottosistema attrae tre
squadre diverse è probabilmente la salsa
ha tre ragioni per farlo
forse è meglio dividere in tre
parti diverse e quando abbiamo a
mappa della conoscenza dei team, perché no?
sovrapponi il risultato di un temporale
analisi di accoppiamento e che ci permette di
individuare quelle costose modifiche
modelli che si increspano attraverso il
organizzazione sai come quella storia
ti ho detto qualche tempo fa dove a
il semplice cambio è durato una settimana perché è così
ripple attraverso l’organizzazione
ecco come identifichiamo quelli e noi
già toccato la loro comunicazione
diagrammi ma quelle comunicazioni
gli schemi non sono quelli virtualmente tuoi
social network di codice e quando parliamo
A proposito di social network troverete che
il principio at2020 vale per le basi di codice
così come sai che è vero su Twitter
è vero e Facebook e lo è
codificare che l’ ottanta per cento del
il contenuto è generato ma venti percento
dei membri e noi vediamo che tutto il
tempo ho analizzato letteralmente centinaia
di diversi repository di codice sorgente
e vedrai che vedi lo sviluppatore
a destra ce ne sono molte
comunicazione uscire così queste persone
sono probabilmente gli sviluppatori principali lì
sono i giocatori chiave che conoscono il codice base
dentro e fuori tutto
organizzazioni forse sono così
cosa succederebbe se vivessi all’improvviso
se hai appena lasciato la porta
un lavoro di giada ha deciso di smettere o si ottiene
tirato fuori da un progetto attuale cosa farebbe
una conseguenza, beh, lo faremmo ovviamente
ottenere un divario di conoscenza quanto grande la maggior parte del
tempo non abbiamo idea ma usando questi dati
possiamo effettivamente scoprire ecco di cosa si tratta
sembra che tu veda quei puntini arancioni
lì in questo caso non rappresentano
hotspot non rappresentano abbandonato
codice che è un codice scritto da un
sviluppatore che non è più nel
organizzazione e questo è qualcosa di te
può usare come leader tecnico o
responsabile tecnico per ragionare sul
distribuzione della conoscenza nella tua base di codice
e quando lo fai a volte lo fai
trova cose come questa dove hai un
intero sottosistema abbandonato e di nuovo
è qualcosa che puoi usare come parte di
una valutazione del rischio perché è un
aumentato rischio di modificare il codice che noi no
capire più a lungo
tutto bene, ho quasi finito adesso, solo
voglio riassumerlo per te prima
andiamo alle domande quindi penso che
le idee di medicina legale hanno molto da offrire
anche nello sviluppo del software abbiamo visto
come hot spot ci aiutano a identificare il codice
è difficile da mantenere e codice a rischio
per i difetti e abbiamo anche visto il
Le analisi di stato scavano oltre il codice
e ci hanno lasciato ragionare su cose simili
non abbiamo veramente misurato prima delle cose
come la distribuzione della conoscenza e possiamo
persino valutare l’organizzazione con
rispetto ai nostri percorsi di comunicazione
controllare il nostro modo di lavorare, quindi questo è
qualcosa che puoi usare in un vantaggio tecnologico
posizione per migliorare e semplificare e
questa è una vasta area e questo
la presentazione ha davvero solo graffiato
la superficie quindi se vuoi scavare più a fondo
sentiti libero di mandarmi una mail o avere un
guarda il mio blog dove regolarmente ho ragione
su questa roba e ovviamente anche ottenere
il libro completo che va per tutto
questa roba è molto più dettagliata quindi ora
prima di andare alle domande, io solo
voglio cogliere questa opportunità e dire
grazie mille per l’ascolto di me e di maggio
il codice sia con te grazie
Grazie ci sono alcune domande Adam oh
ottimo quindi quali strumenti supportano l’estrazione
tutti quei dati dal nostro codice base così
quali strumenti sto effettivamente usando il mio
strumenti e la ragione per questo è quando io
iniziato con questo tipo di cose come
cinque anni fa praticamente non c’era
supporto degli strumenti oltre il divario accademico
Dovrei scrivere i miei strumenti per questo e
li stanno ancora usando e se vai al mio
homepage troverai effettivamente un link
alla mia pagina github perché apro
fonte molti di questi strumenti che uso
quindi ci sono disponibili lì
aiutarti a iniziare e penso che lo faremo
vedere molto di più accadendo nella lavorazione degli utensili
area perché in realtà ho appena lanciato il mio
startup su cui mi concentrerò
fornire strumenti professionali in giro
questa zona quindi spero di averne davvero
roba eccitante in arrivo presto così
che risponda anche alla prossima domanda
strumenti open source che hai che faccio
averli sì e vorrei continuare a
mantienili alla grande, eccone un altro
una che è una domanda complicata
e a lungo accetti che i tuoi strumenti
lavorerà solo per progetti maturi con
l’equipaggio stabile che li sta sviluppando non è possibile
prevedere il futuro o compensare
la gente si unisce e lascia la squadra così
è in parte vero, voglio dire, ci sono
fondamentalmente due diversi gruppi di analisi
hai l’analisi tecnica come caldo
macchie e accoppiamento temporale e quelli
sono utili anche su tutti i tipi di progetti
quelli con cose che cambiano rapidamente
non importa davvero ci sono anche
più importante che vorrei discutere ma
cose come un tipo di diagramma di comunicazione
perde il suo significato se sono persone
ha scritto otto squadre molto le nuove persone
esci e parti ma continuo a pensare
è utile avere una mappa della conoscenza su
almeno per il codice abbandonato, così fa
hai qualche consiglio su come possiamo utilizzare
che in un ambiente agile in cui a
almeno il mio team non incoraggiamo il codice
proprietà Grazie, quindi, come puoi
usa questo in modo agile perché bene
quello che ho fatto è che alla fine
di ciascuno se stai facendo qualcosa di simile
iterazioni di sprint alla fine di ciascuna
iterazione che ho usato per stampare il
mappa hotspot e darla alla prova
più tardi quando il test più tardi lo usò
concentrare i loro sforzi di test esplorativi
alle aree che erano più probabili
contengono i difetti e in effetti otteniamo
a te di tornare su così semplice
investimento e lo penso anche io
ha senso misurare la temperatura pling
alla fine di ogni iterazione e fallo
qualcosa usa un vero low tech morto
semplice tecnica basta stampare una mappa di
il tuo temperamento i nostri accoppiamenti lo inchiodano al
muro e nella prossima iterazione che fai
la stessa cosa e quella semplice tecnica
ti permette di individuare il decadimento architettonico
e questo è quando improvvisamente ottieni il
dipendenze nel tempo tra diversi
parti del codice individuando diversi
sottosistemi quindi è qualcosa che davvero
consiglio cosa dire dei progetti con no
il controllo del codice sorgente esiste
sfortunatamente fanno Wow bene
sì, in Danimarca, non fanno i miei strumenti
essere in grado di risolverlo sfortunatamente
giusto in modo che gli strumenti si usa per la
visualizzazione Oh di nuovo è mio
strumenti e io faccio la visualizzazione dico io
usa per lo più gratuitamente il JavaScript
quadro ma ne fanno anche molti
chiusura usando la nostra struttura o una biblioteca
chiamato quill che è uno strato sopra
elaborazione che a sua volta è la nostra creatività
ambiente di programmazione ed è davvero divertente
quindi per favore riprendi l’elaborazione è solo
così divertente da programmare, ma penso che l’ ultimo
domanda ora come convinci
gestione per rimodellare l’organizzazione
per adattarsi all’architettura una volta che si deve
identificare la necessità di farlo wow se lo volessi
conoscere la risposta a questa domanda
non sarei qui, sarò là fuori
il mio yacht o qualcosa del genere, quindi mi dispiace
davvero non lo so, ma quello che faccio
so per esperienza che faccio questo tipo di
analisi in diverse organizzazioni e
gestione tendono a reagire a quello che loro
vedere perché si ottiene figure dure che
ti mostra che questo è qualcosa che
in realtà ti costa soldi in modo da gestione
tendono ad essere abbastanza ricettivi a questo tipo
di analisi che è la mia esperienza in
meno male quindi ricordati di votare e tu
posso ancora aggiungere commenti e ti ho inviato
loro ad Adam in un’ora o così grazie
molto per ascoltare e grazie a
Adamo
tu
oggi sono il benvenuto nel codice come scena del crimine
voglio darti una prospettiva diversa
sulla tua base di codice sono qui per
indagare le tracce che lasciamo tutti
dietro mentre creiamo i nostri sistemi e voi
vedrà che c’è molto valore
informazioni in quelle tracce ed è
informazioni che ci aiuteranno
identificare il codice che è difficile da
mantenere il codice che rischia per il
effetti e il codice che diventa una squadra
sonda la punta della palla quindi saltiamo
proprio dentro e dare un’occhiata a ciò che noi
i programmatori effettivamente fanno con i programmatori
non scriviamo il codice, ne sono sicuro
ovviamente lo facciamo anche noi, ma è così
non dove passiamo la maggior parte del nostro tempo se
guardi i risultati della ricerca che farai
vedi quello che passerà la maggior parte del nostro
tempo di apportare modifiche a esistenti
codice e la maggior parte di quel tempo è
speso cercando di capire quale sia il codice
fa in primo luogo così prendono
via almeno per me è questo se vogliamo
per ottimizzare qualsiasi aspetto del software
sviluppo che dovremmo ottimizzare per facilità
di capire questa è una sfida
ecco perché dare un’occhiata a questo
visualizzazione che è la maggior parte del
i sistemi sembrano almeno quelli che sono stato
con cui lavori e tieni questo
visualizzazione quali parti sono difficili da
mantenere quando saranno i bug o eseguire a
team colloqui di produttività senza
più contesto che non possiamo proprio dire e
questa è una sfida che diventa più difficile
con la scala di esso perché di oggi
i sistemi sono sviluppati da multipli
i programmatori organizzano le squadre multiple
e questo lascia tutti con il proprio
vista di come il sistema sembra nessuno ha
un quadro olistico e questo è un
problema antico, così siamo stati
lottando con questo per molto tempo in
l’industria del software e mi piacerebbe
per iniziare dando un’occhiata a uno dei
approcci tradizionali per affrontarlo
e poi vediamo i limiti di ciò
approccio prima di passare ad alcuni
completamente diverso, quindi cominciamo
con metriche di complessità hanno uno qualsiasi di
tu o qualcuno di voi che usa la complessità
le metriche oggi sui tuoi sistemi sono così cool
circa 1015 persone grandiose così noi
avere un mucchio di metriche diverse per
scegliere da e la maggior parte di loro va tutto il
Tornare agli anni ’70, quindi questo è un
esempio questo si chiama McCabe cyclomatic
complessità in cui fondamentalmente considerate
il tuo programma o la tua funzione come un grafico
e quindi calcoli il numero di
percorsi possibili attraverso di esso e il più alto
quel numero più complicato è il
codice e questo tipo di ha senso giusto
perché i suoi legami con uno dei più
fattori limitanti che abbiamo nella programmazione
è un fattore cognitivo del nostro lavoro
la memoria c’è davvero così tanto noi
posso tenere in testa in una volta così vorrei
dire cose come il ciclomatico di McCabe
complessità rende sicuramente senso anche io
chiedo che so che era solo come 10
persone tra tutte le persone in questo
stanza che utilizza le metriche di complessità excel
oggi quindi se abbiamo metriche di complessità
per identificare il codice che è difficile da
mantenere perché non li usiamo nel nostro
l’industria non lo so, ma lo so
perché non uso metriche di complessità e
la ragione per cui non uso la complessità
le metriche sono perché le metriche di complessità
sono piuttosto cattivi nel predire la complessità
è una dichiarazione audace quindi per favore lasciatemi
supportalo leggendo una citazione per te
le metriche di complessità sintattica non possono
cattura l’intera immagine del software
complessità e ciò che mi piace di questo
il codice è che proviene da un documento di ricerca
e ciò che questi ricercatori hanno fatto erano loro
ha preso un sacco di metriche diverse come
Misure di complessità di McCabe e Halstead
e hanno identificato quanto bene fanno questi
le metriche si svolgono su basi di codice del mondo reale
e quello che hanno scoperto è stato quello presto
quando inizi a controllare il numero
di linee di codice che queste metriche non aggiungono
qualsiasi ulteriore valore predittivo Wow the
numero di righe di codice che è davvero
metrica approssimativa è davvero la migliore
posso farmi leggere un’altra citazione per te
e questo è uno dei miei preferiti perché
è un po ‘cattivo
l’uso delle metriche per gestire il software
i progetti non hanno nemmeno raggiunto uno stato di
infanzia quindi questa è una citazione di Robert
gloss ed è uno dei miei idoli è davvero
grande e classe di robot significa questo
il software è così complicato
aperto che non saremo mai più
in grado di misurarlo in modo da suggerire la lucentezza
invece è che ci affidiamo al nostro
l’intuizione ora come alcuni di voi sapranno ho
in realtà ha anche una carriera parallela
altra carriera parallela all’interno della psicologia
e come psicologo devi solo
amo il concetto dell’intuizione
perché è un uomo così caldo e soffice
soggetto giusto ma di cosa si tratta effettivamente
scopre che quanti di voi sono stati
lavorare più di un decennio nel
settore del software così quasi tutti
cool così in quel momento hai tutto
ha accumulato molte competenze e tutto il resto
la competenza è archiviata nella tua testa
ora l’ intuizione è fondamentalmente giusta
qualcosa in questa situazione forse
qualcosa che vedi sullo schermo o qualcosa del genere
vedi nel tuo editor di codice i trigger
un richiamo di alcune di quelle informazioni così
l’intuizione è fondamentalmente solo un riconoscimento
la cosa è l’intuizione è un automatico
processo inconscio e questo significa te
non avere un richiamo consapevole o che tipo di
informazioni che vengono recuperate e
questo è ciò che dà l’intuizione
le sue qualità mitiche ma anche le rende
intuizione estremamente gettata al cognitivo
pregiudizi e anche se potessimo in qualche modo
controllare quei pregiudizi che non possiamo
perché noi siamo l’intuizione degli esseri umani
ancora non fare il trucco e il motivo
perché quello è che l’intuizione non scala
non importa quanto bravi programmatori siamo
non c’è modo che la nostra esperienza
sta andando in scala a centinaia di
migliaia o addirittura milioni di righe di codice
non c’è davvero modo di farlo e dentro
l’industria del software non ci è venuta
per andare con una buona risposta a questo
sfida quindi quello che suggerisco è che noi
guarda in un campo completamente diverso
è una disciplina diversa ma una che
la faccia è familiare, complicata e aperta
domande come facciamo quindi diamo il benvenuto a
psicologia forense probabilmente tutti
conosci un po ‘di medicina legale
forse hai già letto
profilazione nelle notizie o hai visto CSI
non è vero, e scommetto anche tutto questo
hai visto il film Silenzio del
Agnelli giusti, anche la scommessa che tutti voi
sono d’accordo con me che Hannibal Lecter è
il personaggio più figo, così il primo
volta che ho visto quel film sono anche estremamente
influenzato dietro un leggio e io no
significa che no no no non intendo questo in
un modo spaventoso, no, sono stato influenzato da
le sue abilità forensi non le altre cose
è completamente sicuro cenare con
io stasera il promesso, quindi se pensi
su di esso è davvero incredibile cosa
Hannibal Lecter fa Hannibal Lecter
siede lì rinchiuso nella sua gabbia e lui
riceve informazioni dal crimine
scene e basato su quell’informazione
solo Hannibal Lecter è in grado di dedurre
non solo i loro motivi ma anche il
personalità del reo e del
la prima volta che ho visto quel film ero come
wow, voglio imparare a fare quegli anni
più tardi, mentre in realtà inizio a studiare
psicologia criminale ottengo terribilmente
deluso perché è risultato che
quelle tecniche che Hannibal Lecter
avevano usato hanno un molto serio
limitazione si scopre che funzionano solo
nei film di Hollywood fortunatamente abbiamo ottenuto
alcuni metodi più scientifici quindi per favore
permettimi di darti un paio di minuti
introduzione al criminale geografico
profilazione ora offensore geografico
la profilazione si basa su un aspetto molto fondamentale
fatto ed è forse un po ‘sorprendente
perché è ovvio, ma lo sapevi
che la maggior parte delle volte Truman Al si comporta
proprio come noi loro vanno al cinema loro
vai a ristoranti la visita amici
forse anche prendere i bambini da
la scuola e esta si muovono in un’area
questo è il punto in cui opportunità
crimine perché per parlare di crimine o lì
deve essere una sovrapposizione nel tempo e nello spazio
tra un delinquente e una vittima e cosa
questo significa che sono le scene del crimine
le loro posizioni geografiche non sono mai
casuali contengono informazioni su
il criminale e questo è qualcosa che possiamo
usa per catturarli lascia che ti mostri come
questo è fatto e lo farò prendendo
è tutto il modo di tornare al 19 ° secolo
Londra alla Whitechapel area
strade che Jack lo Squartatore perseguitava e
Spero che tu possa vederlo qui
alcuni punti blu là quelli sono il crimine
scene dello Squartatore, quindi con cosa fai
la tua profilazione grafico se tu
voglio prendere Jack lo squartatore è quello
consideri un centro ogni scena del crimine
di gravità e poi li aspetti
tutti insieme ma con uno importante
Torsione psicologica psicologicamente tutto
le distanze non sono uguali quindi scene del crimine
che sono più vicini gli uni agli altri
ottenere il segno più peso quindi ora quando si
aspettali tutti insieme finisci con a
nuovo centro di gravità e questo è il rosso
area lì nel mezzo che si chiama a
hotspot e secondo la ricerca
c’è una probabilità del settanta percento
il nostro autore avrà la sua casa basata
quindi se vuoi catturare lo Squartatore
questa è l’ area da pattugliare e sorvegliare
e ora immagino che tu sia tutto curioso di sapere come
è mai intenzione di legare questo a
software sono un po ‘curioso anch’io
proviamo a farlo ma prima di farlo
che forse vuoi sapere se questo
roba di profiling funziona a tutti perché io
Lo so, Jack lo Squartatore è un caso da pecora
ha iniziato a fare bene non è mai stato
cucinato quindi chi era Jack lo Squartatore I
davvero voluto poter rispondere a questa domanda
Non posso, ma quello che posso fare è guardare
i principali sospettati e vedere quanto bene
Adatta il profilo quindi iniziamo con il mio
il numero uno preferito sospetto preferito mr.
James Maybrick sig. James Maybrick era un
commerciante di cotone da Liverpool e quando
è andato a Londra per fare affari che ha usato
affittare una stanza a
sei dritto così diamo un’occhiata a
il commercio del sesso maschile è proprio qui
al centro del nostro hot spot quindi James May wick
è abbastanza adatto per questo profilo se
leggi le notizie credo che sia andata perduta
caduta probabilmente hai sentito parlare di
presunte prove del DNA contro un altro
Lo squartatore sospetta il parrucchiere Aaron
Kosminski ora kozminski è probabile che sia vissuto
a sayan square quindi diamo un’occhiata a
quadrato sinusoidale come vedi il quadrato sine è un
un po ‘a est dell’hotspot così
kozminski non è una buona idea come la mia
mattone ma questo solleva un aspetto importante
punto sul tuo criminale grafico
profilazione che è importante per te
tieni dietro la testa mentre ci muoviamo
alla parola software così geografica
il profiling del trasgressore non punta mai a
posizione precisa se geografica
il profilo del trasgressore fa è quello
proietta una superficie di probabilità sul
geografia proprio così finalmente vediamo come
questo riguarda il software e penso
Questo è importante perché guardarlo per
un momento guarda l’ hotspot e
considera quello che abbiamo fatto che abbiamo preso
un’area geografica potenzialmente vasta e
restringilo in un’area molto più piccola
dove ora possiamo focalizzare una perizia umana
quindi se potessimo fare lo stesso per
software cosa se potessimo prendere quelli
centinaia di migliaia di righe di codice e
mai giù verso alcuni hotspot più piccoli
dove ora possiamo concentrare la nostra intuizione su come
possiamo farlo la prima cosa che noi
il bisogno è ovviamente una geografia del codice
ecco il mio approccio preferito questo è il codice
cydia include i sistemi software per la città
di visualizzare le pietre in modo che ogni pacchetto
ogni spazio dei nomi diventa un blocco di città
e ogni modulo ogni classe diventa a
costruendo e probabilmente lo vedi lì
sono alcuni grandi edifici e alcuni davvero
quelli piccoli e questo perché sospiri
rappresenta la complessità quindi più
complicato un codice che rappresenta un edificio
più grande è l’edificio e ciò che io
come su questa visualizzazione
ci dà una buona idea di dove il
le parti complesse sono in quella base di codice ma
ancora una volta questo non ci spinge in avanti
sono solo semplici metriche di complessità
visualizzato in un modo nuovo è utile ma
non è così utile come potrebbe essere così
quello che suggerisco è che aggiungiamo il
dimensione mancante abbiamo bisogno di aggiungere il
movimento spaziale non di criminali ma di
programmatori e dati di tutti voi
già non siamo abituati a pensare
in questo modo sto parlando del
sistemi di controllo della versione ogni volta che
apportare una modifica al nostro software
il sistema di controllo della versione registra molto
informazioni interessanti questo è un semplice
esempio da ottenere e vedi che ciascuno
il tempo in cui fai il commit capisci chi ha fatto a
cambiare quando è stato fatto il cambiamento e la maggior parte
importante dove nel codice ha fatto a
il cambiamento è avvenuto ora questo è un singolo
impegnarsi per un singolo programmatore di grandi dimensioni
il sistema è composto da migliaia di persone
di commetti giusti forse centinaia di
programmatori quindi cosa succede se cosa succede se prendiamo
tutti i dati si aggregano e lo proiettano
sulla nostra geografia del codice ecco cosa
sembra
così vedi quelle macchie rosse che si illuminano
quelli sono i nostri punti caldi e il punto caldo
in questo caso è definito come complicato
codice con cui lavoreremo spesso
codice complicato che dobbiamo lavorare
con spesso che tipo di codice è quello
qual è la conseguenza di ciò da trovare
ho fatto una serie di casi di studio e io
vorrei presentarne uno per
questo è un case study fatto su a
sistema abbastanza grande composto da quattro
centomila righe di codice che
il sistema è stato sviluppato da 89 programmatori
e ho guardato il periodo di un anno e
mezzo e durante quel tempo quelli
i programmi hanno apportato molti cambiamenti, ecco qui
quale sia il profilo geografico del criminale
sembra che mia moglie affermi che sembra
un alieno ma non è non è questo
quattrocentomila righe di codice e
la prima cosa che noti oltre
l’ alm è che sono tornato a
rappresentazione bidimensionale e
questo perché penso che ci dia un
è una panoramica migliore su sistemi di grandi dimensioni
anche un po ‘ più reminiscenza del reale
mondo dei profili dei venditori che abbiamo guardato
prima, quindi questo è interattivo
visualizzazione che significa che puoi zoomare
dentro e fuori al livello di dettaglio di
interesse ma anche qui sul più alto
livello siamo in grado di individuare un numero di
gli hotspot ora ricordano che i punti caldi erano
codice complicato che devi lavorare
con spesso cosa possiamo aspettarci di trovare
quando guardiamo in un hotspot per rispondere
quella domanda che ho deciso di estrarre un secondo
insieme di metriche ho deciso di guardare il
distribuzione di bug in quel sistema e io
fatto perché gli insetti hanno questo divertente
proprietà che gli insetti tendono a raggruppare le borse
piace l’un l’altro così nel tipico grande
sistema relativamente pochi moduli tendono ad essere
responsabile per la maggior parte di tutti i bug
e cerco una sovrapposizione con il caldo
punti che ho guardato al predittivo
valore di punti caldi e cosa avrebbe
scoperto è stato davvero interessante e
ha scoperto che i punti caldi identificati
sette su otto più effetto e
sport
ancora più interessanti solo i punti caldi
costituiva ancora il quattro percento del codice
quel codice era responsabile per
il settantadue percento di tutti gli effetti
o se lo giriamo in questo
sistema particolare se miglioriamo solo
quattro per cento di tale codice a sbarazzarsi di
la maggior parte dei tuoi difetti e il caldo
le macchie ti mostrano esattamente le parti del tuo
base di codice che è la cosa più giusta
ora i punti così caldi ci aiutano a restringere
grande sistema per le parti che davvero
importa le parti che effettivamente lavoriamo
con dove siamo in grado di ottenere un profitto
sul nostro investimento che facciamo in a
riprogettazione o miglioramento, ma questo è
davvero solo un punto di partenza che possiamo fare
molto di più con questi dati e lo farei
piace dimostrartelo avendo un
guarda cosa succede al nostro codice cosa
vedi qui è un’immagine di un computer
programma e sono ben consapevole che tu
non posso leggere i dettagli che è
volutamente voglio solo fluttuare per mettere a fuoco
sul modello generale qui e quello è
perché sono abbastanza convinto come noi
settore in cui siamo in realtà abbastanza bravi
scrivendo il codice sappiamo che buon codice
sembra che conosciamo l’accoppiamento libero
conosciamo la coesione che conosciamo
principi solidi e tutto il resto
cose che pensiamo siano importanti così io
affermerebbe che la loro prima versione di
un programma in genere sembra abbastanza buono ma
allora succede qualcosa diamo un’occhiata
a quel whoops non sembra troppo buono oh
no oh no oh no oh gee quello che è appena successo
un programma è iniziato così bello e poi
un numero di salsa D piccola per soccorrere a
è quello che sono quei disastri cosa solo
successo bene lasciami dire che iniziamo
fuori davvero bene il secondo che è un
nuova funzionalità la terza è un bug
risolti più tardi il venerdì poco prima sul
linea rossa
e il terzo che deve essere quando
il capo del progetto ha deciso di tagliare il
portata e poi ovviamente ha cambiato la sua
mente così dis ai miei amici questo è il momento
questo è il tuo programma
manutenzione e questo è effettivamente un bene
Significa che qualcuno usa il tuo
programma e si preoccupano abbastanza di farlo
suggerire miglioramenti perché ognuno di
quei disastri rappresentano qualcosa di simile
qualcuno Fox aggiunge valore al tuo programma
quindi questo è un buon segno il problema
inizia quando continuiamo a crescere
quel fondamento traballante quando permettiamo il nostro
codice per declinare in qualità così
quello che vogliamo essere in grado di fare è farlo
in qualche modo identificare quelle parti del codice
base che classificano così ecco
un modo per farlo è un’analisi
chiama le tendenze alla complessità e quello che faccio
ecco una foto ogni hot spot in
codice di base e quindi una scansione attraverso il suo
cronologia del controllo della versione e misura il
complessità di ogni riparazione storica
di quell’hotspot e questo ci permette di
traccia la tendenza nel tempo come quella che
a sua volta ci consente di prevedere il futuro
e il grafico che vedi lì
rappresenta la tendenza alla complessità di a
unico hot spot in quattro anni e tu
può vedere che questo codice ha appena tenuto
accumulare complessità ora ricorda
è un punto caldo che significa che dovevamo
lavorare con esso spesso cosa ne pensi
succede se dobbiamo lavorare con il codice
spesso e diventa sempre di più
complicato nel tempo direi che lo è
non c’è da meravigliarsi che ci sia un forte
correlazione tra hotspot e difetti
quindi con una tendenza alla complessità siamo
in realtà in grado di prendere il tuo debito e
fermare quella tendenza smettere ulteriormente
declino tutto bene così fino a questo punto
Mi sono concentrato sul tema
lato tecnico ma abbiamo qualcosa
ancora più importante parlare di oggi
e questa è l’altra dimensione di
software di sviluppo software
sviluppo come
attività sociale e mi piace presentare
questa parte della presentazione di uno di
le migliori citazioni che conosco del software
il codice di sviluppo non mente se vogliamo
per sapere come qualcosa realmente realmente
funziona davvero abbiamo bisogno di esaminare la
codice la verità è lì ed è
descritto in dove un preciso tecnico
dettaglio così co non mente, ma non lo fa
dì anche tutta la verità e se noi
limitarci a ciò che è visibile in a
struttura statica del codice ci manca a
molte informazioni preziose e quello che sono
andando a mostrarti ora o misura quello
non possiamo fare solo dal codice
e il primo esempio è qualcosa che io
chiamare un’analisi di accoppiamento tempura così
vediamo come funziona con tempura
accoppiando così dove il semplice sistema qui
consta di tre soli diversi
moduli e ciò a cui siamo interessati ora
è l’evoluzione nel tempo, quindi il primo
volta che facciamo una modifica al sistema di noi
cambiare l’iniettore di carburante e il
modulo di diagnostica insieme nel
secondo impegno, cambiamo qualcos’altro
nel terzo impegno siamo tornati
cambiando l’iniettore di carburante e a
modulo di diagnostica di nuovo ora se questo è
una tendenza che continua ci deve essere
una sorta di relazione tra un carburante
iniettore e modulo di diagnostica a destra
perché stanno cambiando insieme a
tempo che tipo di relazione potrebbe
quello potrebbe essere quello che troverai quando
inizi a indagare su questi risultati
è la maggior parte delle volte che lo troverai
troverai che hai del codice
qui hai un altro codice qui
e questo usa quello così ogni volta
cambiate questa API che devi modificare
anche il cliente è chiaro
vecchio accoppiamento fisico e questo è davvero
qualcosa che puoi vedere nel codice ma
ricorda che l’accoppiamento tempura non è misurato
dal codice è misurato dal
evoluzione del codice e questo significa che tu
a volte troverà modelli come questo
abbiamo del codice qui
qualche altro codice qui e non c’è
dipendenza a tutti tra di loro ancora loro
continua a cambiare insieme nel tempo come può
quello che potrebbe accadere è che è di qualche tipo
di spettrale cosa della fisica quantistica più di
il tempo non è quello che trovo di solito quando io
investigare su quei casi è un caro vecchio
amico copia incolla hai del codice
qui comporrà lo strappo qui e
qui e ora ogni volta che modifichi il
originale devi ricordarti di modificare
anche le copie e quindi l’accoppiamento tempura
è un modo eccellente per rilevare il software
cloni ma c’è davvero molto di più
possiamo fare con accoppiamento tempura che possiamo
analizzare architetture software complete
e vorrei mostrarvi una delle
esempio di quello e poi vediamo il
anche la dimensione sociale entra in gioco
quindi questo è un esempio per carina
sistema semplice ne abbiamo tre diversi
sottosistemi e possiamo misurare
temperatura a livello di sottosistema
anche se lo facciamo su questo sistema noi
in realtà scoperto che se queste merci
i sistemi sono un paio di volte secondo te
fa la differenza se quel sistema è
sviluppato da un singolo programmatore o se
è sviluppato e programmatori multipli
organizzare le squadre multiple oh sì sì
fa la differenza e in realtà
sperimentato che alcuni anni fa a quello
volta ho fatto un po ‘di lavoro per un grande abbastanza
organizzazione di sviluppo eravamo
qualcosa come 200 programmatori e il
il primo giorno che arrivo al lavoro mi viene assegnato un
numero di compiti quindi ne ho scelto uno
si sedette e iniziò a lavorare su quello
ma molto presto notato per
Completa questo compito che devo fare a
la modifica di un’API era davvero
semplice modifica ma quell’API era di proprietà di
una squadra diversa, quindi mi sono avvicinato
quella squadra guidava e gli chiedeva se poteva
fai questo è cambiato e lui è andato come si
certo è un cambiamento semplice e morto che ottengo
iniziato subito Oh perfetto così io
tornò alla mia scrivania, poi tornò
come una settimana dopo ora ho finito tutto bene
semplice cambiamento
ma non ci ho pensato troppo a
quella volta probabilmente qualcosa è venuto fuori così
La cosa è che si è scoperto che dovevamo cambiare
quell’API molto e ogni volta dovevamo
fai che il cambiamento ne abbia preso almeno uno
settimana per avere almeno una settimana quindi io
Ho pensato davvero di scoprire cosa c’è
sto succedendo così sono andato in una squadra
portare ancora una volta e gli ho chiesto di dire
scusa ma quel cambiamento è stato così tanto
più difficile di quanto ti aspettassi e ha guardato
a me come no, certo che non ha rubato
era semplice, quindi perché me lo chiedi?
significa che ti ha preso una settimana e quello che ha detto
ho completamente cambiato come hai fatto
architettura software perché cosa
è successo questo era il cambiamento era davvero
tre campane per loro da fare in ordine
per farlo modificare ancora un’altra API
che era di proprietà di una squadra diversa e
a loro volta dovevano andare a un altro ancora
squadra e quella squadra dovevano andare al
amministratori di database e sì come noi
tutti sanno che è cambiata la richiesta
morire così si scopre se hai un
sistema in cui si ha un accoppiamento tra
le sue diverse parti e anche sviluppato
da parte di più squadre e tu hai effettivamente
una dipendenza anche tra le persone
e questo torna indietro fino a uno di
le famose osservazioni sul software
sviluppo della legge di Conway immagino tutto
hai familiarità con la voce calma come
molti hanno familiarità con il caos della legge di Conway
quasi la metà di voi grande così vorrei solo
trattalo davvero brevemente perché di Conway
la legge ha ricevuto molta attenzione
negli ultimi anni è la legge di Conway
fondamentalmente l’osservazione che la strada
siamo organizzati tende a riflettersi
nel tipo di progettazione del software quindi
detto popolare se lo si guarda e
come il dizionario degli hacker è che se
hai quattro squadre che progettano un compilatore
otterrai un compilatore a quattro passaggi e
è un modo divertente e cinico di farlo
guardalo ma la cosa bella con
La legge di Conway è quella che viene dalla legge
altrettante interpretazioni come le loro
documenti di ricerca su di esso in modo che possiamo
in realtà scegliere il nostro preferito qui e io
usa sempre la legge del Congresso al contrario e
lì inizi con il tipo di sistema
stai cercando di costruire e poi guardi
a questo e poi disegni il tuo
organizzazione basata su quel sistema come
dovremmo essere organizzati per farlo
capita nel modo più efficiente possibile e io
fallo perché quando è la legge di Conway
usato in Reverse diventa un utile
strumento organizzativo ma intendo la maggior parte di
il tempo non stiamo facendo un nuovo software
lei trame abbiamo sistemi esistenti
che dobbiamo modificare ciò di cui abbiamo bisogno
migliorare che abbiamo bisogno di correggere i bug in
quindi, come possiamo usare la legge di Conway sull’eredità
codice la prima cosa che suggerisco sempre è
che inizi, ma cerchi di capire
quello che hai oggi quanto bene il tuo
l’attuale architettura supporta il tuo modo di
lavorando e un modo per farlo è vicino
usando qualcosa che chiamo comunicazione
diagrammi quindi sono diagrammi di comunicazione
creato dall’evoluzione del tuo
codice base quindi quello che faccio è una scansione del
completo repository del codice sorgente e ciascuno
tempo trovo un modulo in cui due diversi
i programmatori hanno contribuito a questi due
i programmatori ricevono un collegamento di comunicazione
tra di loro e poi continuo a scansionare
e un terzo programmatore arriva e
se ha lavorato nella stessa parte allora
anche lei ha un collegamento di comunicazione
nel tempo questo ci permette di
alzeremo un grafico completo sul loro
percorsi di comunicazione ideali dei nostri
organizzazione e diciamo ideale perché
ricorda che questo è estratto da come il codice
è stato effettivamente creato non c’è niente
qui per suggerire che ciò rappresenta
comunicazione che effettivamente ha avuto luogo
quindi quello che vuoi fare è prendere un
Schema comunicazione e confrontarlo
contro il tuo organigramma formale
e qualsiasi discrepanza deve essere davvero
compreso così diamo uno sguardo ad alcuni
risultati tipici che cosa si può aspettare di
trova quando lo fai secondo
Conway questo è quello che ti aspetteresti
trova e quello che vedi lì è semplice
esempio hanno tre squadre diverse e
vedi che la maggior parte delle linee di mezzo
membri della stessa squadra e questo significa
funzionano nelle stesse parti del codice
condividono lo stesso contesto e questo è
qualcosa che rende davvero
comunicazione molto più semplice e
più economico quindi è quello che vuoi vedere
e vedi anche che hai il
programmatore occasionale che lavora in a
parte diversa della base di codice e
questo è solo un segno che il certo
il grado di impollinazione incrociata è un bene
cosa nello sviluppo del software per questo è
la condivisione di conoscenze probabilmente persone che
sono squadre rotanti quindi è qui che tu
voglio essere guardiamo al contrario
lato dello spettro vuoi vedere a
Completa il disastro qui andiamo così è
una storia sulla compagnia questa è una
compagnia erano in un ottimo
posizione avrebbero intenzione di fare un nuovo
prodotto e erano in una buona posizione
perché avevano fatto qualcosa di molto
simili in passato, quindi lo sapevano
ci porteranno un anno, naturalmente, qualcuno
ha avuto l’idea di averne uno
anno ma sai che lo abbiamo davvero
bella fiera in soli tre mesi
lo facciamo in tre mesi, va bene così
come prendi qualcosa che ti aspetti?
prendere un anno comprimerlo a
solo tre mesi è così facile a soli 40 anni
quattro volte più sviluppatori su di esso
e ti prometto che questo è stato davvero
progetto veloce veloce proprio così l’iniziale
l’architettura è stata impostata e 25 consulenti
sono stati reclutati che assicurano il tempo che
ti porterebbe a leggere il mitico
mese uomo e questo era solito organizzarli
in quattro squadre diverse come pensi
la struttura di comunicazione sembrava
e questo è il dato reale è stato permesso
per usare questo è i dati reali dal
il vero progetto qui è quel dito
sembra un po ‘fico, non è vero, lasciami fare
assicurarti che non c’è niente di interessante in questo
questo rappresenta il caos è completo
comunicazione anarchia perché se tu
dai un’occhiata , vedrai che sì
certo all’interno di ogni squadra le persone lavorano
nelle stesse parti di un codebase il
problema è che non tutti gli altri come
bene, quindi questo non è quattro squadre diverse
questa è praticamente una squadra gigantesca di 29
persone con organizzazione artificiale
confini tra loro e io no
lavoro sul progetto reale ma sono entrato
in seguito e ha fatto un post-mortem
analisi e parlo molto al
sviluppatori e loro mi hanno detto molto
roba interessante praticamente tutti loro
si sono lamentati della qualità che hanno avuto molto
di difetti la seconda cosa che
tutti mi hanno detto che il codice era
difficile da capire perché anche se tu
ha scritto il pezzo di codice te stesso oggi
tre giorni dopo sembrava completamente
diverso perché cinque altri sviluppatori
lo aveva lavorato nel frattempo e
un’altra cosa che è venuta fuori è quella
hanno passato molto tempo a fondersi
diversi rami delle caratteristiche che potevano
passare letteralmente giorno a volte anche a
settimana fondendo diversi rami se tu
guarda quello schema di comunicazione tu
vedi che no non avevano un’unione
problema il loro problema era che loro
l’architettura non poteva proprio supportare la loro
modo di lavorare con esso così se lo trovi
te stesso in quella situazione che è
sfortunatamente solo due cose che puoi fare
o devi cambiare posto
architettura per supportare il modo in cui vuoi
lavorare con esso o è necessario cambiare
la tua organizzazione quindi le persone si prega di allineare
la tua architettura e la tua organizzazione
il tuo
il codice ti ringrazierà per questo
va bene così il progetto ha appena totalmente
riguardo ricordare che i programmatori
mi sono lamentato molto dei bug e di quello
non dovrebbe essere sorprendente dato ciò che noi
in realtà sapere sui bug del software
risulta che il numero di programmatori
dietro un pezzo di codice è uno dei
i migliori predittori del numero di difetti
lo troverai così in generale il
più programmatori che hanno contribuito
a un modulo più problemi di qualità in
quel modulo così comincio a pensare sì
bene ancora una volta sono dati che in realtà
potrebbe mio da un sistema di controllo di versione
e identificare tali componenti a rischio
per i difetti, ecco un modo per farlo
è una visualizzazione chiamata frattale
figure e mostri le figure funziona come
questo che consideri ogni modulo una scatola
e ogni programmatore viene assegnato a
colore e più hanno contribuito
al codice più grande ci sono via
la scatola in modo da vedere un esempio qui di
quattro diversi moduli e lo vedi
lo sviluppatore rosso arancione e quello
uno è in realtà verde su uno di essi verde
hanno grigio un programmatore che hanno scritto
la maggior parte del codice, ma se un accesso principale
sviluppo parallelo vorrei andare per il
secondo modulo lì perché lo vedi
come contributi di un sacco di diverso
sviluppatori molti piccoli contributi e
quando vedi uno schema del genere tu
ho bisogno di capire perché e te lo prometto
se guardi dentro quel codice troverai
quel codice cambia per un motivo
motivo per cui il modulo attrae molti
i programmatori è probabilmente perché ha
molte ragioni per farlo prova troppo
responsabilità quindi è un bene
punto di partenza ma possiamo fare molto
più con le cifre dei fattori come vedi
le cifre di fraktur lo rendono abbastanza facile
identificare il proprietario della conoscenza il principale
sviluppatore dietro ogni modulo e se tu
avere queste informazioni per ogni modulo
perché non lo proiettiamo sulla nostra statica
geografia del codice che ci permetterebbe di
costruire una mappa della conoscenza completa finita
codice base ecco come appare e di nuovo
questi sono dati reali dal vero progetto questo
è il progetto di studioso e vedi a
parte del compilatore lì e questo è
qualcosa che usi per semplificare
comunicazione quindi diciamo che funziona
esattamente lo stesso ogni programmatore è
assegnato un colore e quello che vedi è il
lo sviluppatore principale quindi afferma di aderire al
progetto di studioso e tu vuoi sapere
qualcosa sul retro in tuo
in alto a destra, direi così
c’è una discreta possibilità che il
lo sviluppatore blu chiaro potrebbe sapere qualcosa
su di esso e se lei non sa forse
lo sviluppatore verde sa quindi questo è
qualcosa che usi non solo semplificato
comunicazione ma anche per garantire che
inviti le persone giuste per uccidere
rivedere o discutere un progetto proposto
cambia con le persone giuste ma possiamo
fare ancora di più invece di mettere a fuoco
sviluppatori individuali, perché no?
aggregarli in squadre che daranno
noi un modo per valutare la legge di Conway qui
come appare così ora i colori rappresentano
squadre e vedi secondo Conway
questo in effetti sembra abbastanza bello
la squadra rossa hanno il loro
sottosistema dove possono praticamente
lavorare in isolamento e il sistema rosa
hanno anche il loro sistema in modo che anche
sembra abbastanza buono ma sotto di te
avere un sottosistema abbastanza grande con
contributi da tutte e tre le squadre e
di nuovo quando trovi qualcosa del genere
devi capire perché e potrebbe
essere semplice come questa organizzazione può essere
così come un’altra squadra da affrontare
responsabilità condivisa ma immagino che
il più delle volte quello che troverai è
di nuovo il codice cambia per un motivo
motivo per cui il sottosistema attrae tre
squadre diverse è probabilmente la salsa
ha tre ragioni per farlo
forse è meglio dividere in tre
parti diverse e quando abbiamo a
mappa della conoscenza dei team, perché no?
sovrapponi il risultato di un temporale
analisi di accoppiamento e che ci permette di
individuare quelle costose modifiche
modelli che si increspano attraverso il
organizzazione sai come quella storia
ti ho detto qualche tempo fa dove a
il semplice cambio è durato una settimana perché è così
ripple attraverso l’organizzazione
ecco come identifichiamo quelli e noi
già toccato la loro comunicazione
diagrammi ma quelle comunicazioni
gli schemi non sono quelli virtualmente tuoi
social network di codice e quando parliamo
A proposito di social network troverete che
il principio at2020 vale per le basi di codice
così come sai che è vero su Twitter
è vero e Facebook e lo è
codificare che l’ ottanta per cento del
il contenuto è generato ma venti percento
dei membri e noi vediamo che tutto il
tempo ho analizzato letteralmente centinaia
di diversi repository di codice sorgente
e vedrai che vedi lo sviluppatore
a destra ce ne sono molte
comunicazione uscire così queste persone
sono probabilmente gli sviluppatori principali lì
sono i giocatori chiave che conoscono il codice base
dentro e fuori tutto
organizzazioni forse sono così
cosa succederebbe se vivessi all’improvviso
se hai appena lasciato la porta
un lavoro di giada ha deciso di smettere o si ottiene
tirato fuori da un progetto attuale cosa farebbe
una conseguenza, beh, lo faremmo ovviamente
ottenere un divario di conoscenza quanto grande la maggior parte del
tempo non abbiamo idea ma usando questi dati
possiamo effettivamente scoprire ecco di cosa si tratta
sembra che tu veda quei puntini arancioni
lì in questo caso non rappresentano
hotspot non rappresentano abbandonato
codice che è un codice scritto da un
sviluppatore che non è più nel
organizzazione e questo è qualcosa di te
può usare come leader tecnico o
responsabile tecnico per ragionare sul
distribuzione della conoscenza nella tua base di codice
e quando lo fai a volte lo fai
trova cose come questa dove hai un
intero sottosistema abbandonato e di nuovo
è qualcosa che puoi usare come parte di
una valutazione del rischio perché è un
aumentato rischio di modificare il codice che noi no
capire più a lungo
tutto bene, ho quasi finito adesso, solo
voglio riassumerlo per te prima
andiamo alle domande quindi penso che
le idee di medicina legale hanno molto da offrire
anche nello sviluppo del software abbiamo visto
come hot spot ci aiutano a identificare il codice
è difficile da mantenere e codice a rischio
per i difetti e abbiamo anche visto il
Le analisi di stato scavano oltre il codice
e ci hanno lasciato ragionare su cose simili
non abbiamo veramente misurato prima delle cose
come la distribuzione della conoscenza e possiamo
persino valutare l’organizzazione con
rispetto ai nostri percorsi di comunicazione
controllare il nostro modo di lavorare, quindi questo è
qualcosa che puoi usare in un vantaggio tecnologico
posizione per migliorare e semplificare e
questa è una vasta area e questo
la presentazione ha davvero solo graffiato
la superficie quindi se vuoi scavare più a fondo
sentiti libero di mandarmi una mail o avere un
guarda il mio blog dove regolarmente ho ragione
su questa roba e ovviamente anche ottenere
il libro completo che va per tutto
questa roba è molto più dettagliata quindi ora
prima di andare alle domande, io solo
voglio cogliere questa opportunità e dire
grazie mille per l’ascolto di me e di maggio
il codice sia con te grazie
Grazie ci sono alcune domande Adam oh
ottimo quindi quali strumenti supportano l’estrazione
tutti quei dati dal nostro codice base così
quali strumenti sto effettivamente usando il mio
strumenti e la ragione per questo è quando io
iniziato con questo tipo di cose come
cinque anni fa praticamente non c’era
supporto degli strumenti oltre il divario accademico
Dovrei scrivere i miei strumenti per questo e
li stanno ancora usando e se vai al mio
homepage troverai effettivamente un link
alla mia pagina github perché apro
fonte molti di questi strumenti che uso
quindi ci sono disponibili lì
aiutarti a iniziare e penso che lo faremo
vedere molto di più accadendo nella lavorazione degli utensili
area perché in realtà ho appena lanciato il mio
startup su cui mi concentrerò
fornire strumenti professionali in giro
questa zona quindi spero di averne davvero
roba eccitante in arrivo presto così
che risponda anche alla prossima domanda
strumenti open source che hai che faccio
averli sì e vorrei continuare a
mantienili alla grande, eccone un altro
una che è una domanda complicata
e a lungo accetti che i tuoi strumenti
lavorerà solo per progetti maturi con
l’equipaggio stabile che li sta sviluppando non è possibile
prevedere il futuro o compensare
la gente si unisce e lascia la squadra così
è in parte vero, voglio dire, ci sono
fondamentalmente due diversi gruppi di analisi
hai l’analisi tecnica come caldo
macchie e accoppiamento temporale e quelli
sono utili anche su tutti i tipi di progetti
quelli con cose che cambiano rapidamente
non importa davvero ci sono anche
più importante che vorrei discutere ma
cose come un tipo di diagramma di comunicazione
perde il suo significato se sono persone
ha scritto otto squadre molto le nuove persone
esci e parti ma continuo a pensare
è utile avere una mappa della conoscenza su
almeno per il codice abbandonato, così fa
hai qualche consiglio su come possiamo utilizzare
che in un ambiente agile in cui a
almeno il mio team non incoraggiamo il codice
proprietà Grazie, quindi, come puoi
usa questo in modo agile perché bene
quello che ho fatto è che alla fine
di ciascuno se stai facendo qualcosa di simile
iterazioni di sprint alla fine di ciascuna
iterazione che ho usato per stampare il
mappa hotspot e darla alla prova
più tardi quando il test più tardi lo usò
concentrare i loro sforzi di test esplorativi
alle aree che erano più probabili
contengono i difetti e in effetti otteniamo
a te di tornare su così semplice
investimento e lo penso anche io
ha senso misurare la temperatura pling
alla fine di ogni iterazione e fallo
qualcosa usa un vero low tech morto
semplice tecnica basta stampare una mappa di
il tuo temperamento i nostri accoppiamenti lo inchiodano al
muro e nella prossima iterazione che fai
la stessa cosa e quella semplice tecnica
ti permette di individuare il decadimento architettonico
e questo è quando improvvisamente ottieni il
dipendenze nel tempo tra diversi
parti del codice individuando diversi
sottosistemi quindi è qualcosa che davvero
consiglio cosa dire dei progetti con no
il controllo del codice sorgente esiste
sfortunatamente fanno Wow bene
sì, in Danimarca, non fanno i miei strumenti
essere in grado di risolverlo sfortunatamente
giusto in modo che gli strumenti si usa per la
visualizzazione Oh di nuovo è mio
strumenti e io faccio la visualizzazione dico io
usa per lo più gratuitamente il JavaScript
quadro ma ne fanno anche molti
chiusura usando la nostra struttura o una biblioteca
chiamato quill che è uno strato sopra
elaborazione che a sua volta è la nostra creatività
ambiente di programmazione ed è davvero divertente
quindi per favore riprendi l’elaborazione è solo
così divertente da programmare, ma penso che l’ ultimo
domanda ora come convinci
gestione per rimodellare l’organizzazione
per adattarsi all’architettura una volta che si deve
identificare la necessità di farlo wow se lo volessi
conoscere la risposta a questa domanda
non sarei qui, sarò là fuori
il mio yacht o qualcosa del genere, quindi mi dispiace
davvero non lo so, ma quello che faccio
so per esperienza che faccio questo tipo di
analisi in diverse organizzazioni e
gestione tendono a reagire a quello che loro
vedere perché si ottiene figure dure che
ti mostra che questo è qualcosa che
in realtà ti costa soldi in modo da gestione
tendono ad essere abbastanza ricettivi a questo tipo
di analisi che è la mia esperienza in
meno male quindi ricordati di votare e tu
posso ancora aggiungere commenti e ti ho inviato
loro ad Adam in un’ora o così grazie
molto per ascoltare e grazie a
Adamo
tu
Please follow and like us: