Professional Documents
Culture Documents
Mancato utilizzo di Source Code Control Gerarchia piatta (nessun Main, nessun Progetto) Test irregolare della condizione di Stop Creazione delleseguibile solamente alla fine Specifice non ben definite e/o non documentate Progettazione scarsa in termini di SMoRES (Scalabilit, Modularita, Riutilizzabilit, Esentensibilit, Semplicit) Mancata pianificazione di test Gestione della condizione derrore lacunosa Impiego di stili non consistenti
FASE DISVILUPPO
Prerequisito Progettazione Implementazione Test(fase di sviluppo) Test(fase di rilascio) Dopo il rilascio
RAPPORTO DI COSTO
1 36x 10x 1540x 3070x 401000x
Basatosullanalisidi63progettisoftwareinaziendetracuiIBM,GTEeTRW
Di cosa parleremo
Sviluppo
Teste validazione
Distribuzione
SoftwareConfigurationManagement Con il concetto di Configuration management si intende il processo di controllo delle modifiche e del fatto che le stesse vengano testate e validate prima di essere trasformate in definitive. Uno degli obbiettivi fondamentali di questo processo trasformare lo sviluppo del software da attivit caotica non pianificata ad attivit programmata. Questo processo permette di migliorare I risultati introducendo obbiettivi specifici e misurabili in ogni fase dello sviluppo del software.
Di cosa parleremo
Sviluppo
Test e validazione
Distribuzione
Approccio gestionale allo sviluppo Definizione e tracciabilit dei requisiti di progetto Test e debug del software Distribuzione delle applicazioni
ni.com/largeapps
inc
mov cmp mov je cmp jne mov mov mov mov mov cmp jne mov cmp jne mov xor jmp mov mov mov mov mov add pop mov jmp add mov call
Compilatore
Transforms
LLVM
LowLevelVirtualMachine(LLVM)
Rappresentazionesequenzialedibassolivello Basatasullecaratteristichedellamacchinasucuiviene eseguita Frameworkdicompilazioneopensource
Transforms
TargetMachineCode
Applicazioni complesse
0to100VIs
Sviluppatore1
CheckedIn
GetLatestVersion
CheckedOut
CheckedIn
Sviluppatore2
GESTIONELOCALEDELCODICESVILUPPATO DALSINGOLOPROGRAMMATORE
Interazione LabVIEW-SCC
Integrazione LabVIEW nativa Perforce Rational ClearCase Support through additional add-ons Subversion Mecurial
48
Interazione LabVIEW-SCC
Esempidiinterazione LabVIEWSCC
Confronto grafico
PROTOTIPO
Requirement sGathering
TESTeREVISIONE
System Testing
UTILIZZO
Application Architecture
Integration Testing
Module Architecture
UnitTesting
Deployment
Sviluppo
Distribuzione
Funziona!
Aumenta laqualit,riduce i rischi ei tempidi realizzazione
NI Requirements Gateway
Definizione degli obbiettivi Scelta dell architettura Teste validazione
Sviluppo
Distribuzione
Tracciabilitdeirequisiti Documentazioneditracciabilit
Quali domande accompagnano la revisione del codice Il codice facile da manutenere ed ben documentato? Cosa succede se il codice riceve/genera un errore? Troppe funzionalit condensate in un solo VI? Sono presenti delle race-conditions? L utilizzo di memoria rispetta I limiti considerati consoni alla funzionalit? La migliore revisione del codice in assoluto quella che oltre ad essere programmata viene anche fatta!!
Oggetti provvisti di etichetta Commenti in-line Icone distinte ed esplicative Descrizioni e suggerimenti HTML Print-Out Tracciabilit dei requisiti di progetto
Advanced
Complessitdellapplicazione
UnitTest Framework
Analisi funzionale
DesktopExecution Trace
RealTime ExecutionTrace
Analisi dinamica
Simple
VIAnalyzer Toolkit
Analisi statica
LowRisk
Criticitdellapplicazione
HighRisk
LabVIEW VI Analyzer Analisi automatizzata del codice Prestazioni Difetti di stile Complessit Ricerca delle criticit Generazione di rapporti Misura della complessit attraverso metriche standard Personalizzazione del VI Analyzer test con VI Scripting (LV 2010)
Advanced
Complessitdellapplicazione
UnitTest Framework
Analisi funzionale
DesktopExecution Trace
RealTime ExecutionTrace
Analisi dinamica
Simple
VIAnalyzer Toolkit
Analisi statica
LowRisk
Criticitdellapplicazione
HighRisk
LabVIEW DesktopExecutionTraceToolkit
Network
Informazioni di esecuzione
LabVIEWRealTimeExecutionTraceToolkit
Network
Informazioni di esecuzione
Monitoraggio Run-Time di
Strutture a eventi Allocazione della memoria Code/ Notificatori Riferimenti inconsistenti Thread ID Errori non gestiti SubVIs statici e dinamici Eventi user-defined
Il block diagram viene incluso nellesegubile e diventa possibile fare debug remoto attraverso i tools di LabVIEW
Advanced
Complessitdellapplicazione
UnitTest Framework
Analisi funzionale
DesktopExecution Trace
RealTime ExecutionTrace
Analisi dinamica
Simple
VIAnalyzer Toolkit
Analisi statica
LowRisk
Criticitdellapplicazione
HighRisk
Unostrumentopertestareedocumentareilfattocheilcodice rispondeaglistimoliinmodoatteso
Valori di input
Output
Outputatteso
Testvector=Inputvalue(s)+Expectedoutput(s)
Input Values
Value Comparison
Requisiti di progetto
ApplicationBuilderAPINewinLabVIEW2011
Documentalaversione,ladataeloradellultimamodificadei VIsinclusinelbuild(DisponibileinLabVIEW2009)
DEMO
InterazioneLabVIEWSourceCodeControl NIRequirementsGateway NIVIAnalyzerToolkit NILabVIEWDesktopExecutionTraceToolkit NILabVIEWUnitTestFrameworkToolkit
Developer
Senior Developer
LabVIEW Core 1
LabVIEW Core 2
LabVIEW Core 3
"CertificationisanabsolutemustforanyoneseriousaboutcallinghimselfaLabVIEW expert
President,JKISoftware,Inc.
Maggiori informazioni sull argomento SOFTWARE ENGINEERING BEST PRACTICES sono disponibili al link
ni.com/largeapps
Grazie a tutti dellattenzione
Renzo Barbazza Application Engineer, National Instruments