Catalogo per l'applicazione professionale di Access
Version 1.01 (2014-05-24) di Karl Donaubauer  (traduzione di Salvino Crucitti)                                          deutsche Version English version
 

Che cosa rende professionale un'applicazione di Access? A causa della diversità delle esigenze e stili non vi è un'assoluta evidenza ma indicazioni o il migliore utilizzo. Formalmente questo non è un altro manuale ma una lista di controllo di parole chiavi con riferimenti che richiedono conoscenze di base.

Da un lato può servire come riferimento per l'auto-valutazione dei propri progetti e per la valutazione da parte di terze parti tecnicamente informate (colleghi, clienti, consulenti informatici). Dall'altro lato fornisce orientamenti per il lavoro di singoli sviluppatori e di cooperazione nei team.

All'AEK15 (15° Conferenza degli Sviluppatori Tedeschi di Access, Ott. 2012), io introdussi una bozza, discussa con 200 colleghi e raccolsi i loro commenti in un questionario. L'elenco ed i link saranno aggiornati dopo nuove discussioni ecc.

 
1. Database 2. Applicazione 3. Programmazione
1.1 Normalizzazione 2.1 Frontend e backend 3.1 VBA precede le macro
1.2 Chiavi Primarie 2.2 Nomi 3.2 Nomi
1.3 Indicizzazione 2.3 Versione 3.3 Dichiarazione variabili
1.4 Relazioni ed RI 2.4 Ergonomia 3.4 Riferimenti
1.5 Nomi 2.5 Interfaccia utente dedicata 3.5 SQL precede DAO/ADO
1.6 Query ottimizzate 2.6 Provvedimenti per la prestazione 3.6 Gestione dell'errore
1.7 Lavoro ottimizzato con backend ODBC 2.7 Compattazione 3.7 Commenti
  2.8 Oggetti morti 3.8 Formattazione
 
1. Database
 
1.1 Normalizzazione

Sono rispettate almeno le forme normali da 0 a 3.

0 = nessun calcolo viene salvato
1 = valori atomici per campo
2 = campi non chiave dipendono dalla chiave completa
3 = campi non chiave direttamente dipendono dalla chiave

motivi: consistenza dei dati
eccezione accettabile: ottimizzazione della prestazione
risorse: Wikipedia - Normalizzazione

 

in alto

1.2 Chiavi Primarie

Ogni tabella ha una chiave primaria.

motivi: identificazione in ogni occasione, aggiornabilità

 

in alto

1.3 Indicizzazione

Ogni tabella è adeguatamente indicizzata.

- indici per ogni campo e combinazione di campi che si usa per join, filtri, ordinamenti
- indici che siano rigidi quanto possibile ("Nessun duplicato")

motivi: prestazione
eccezione accettabile: ottimizzazione della prestazione, INSERT/UPDATE/DELETE di grandi quantità di dati

 

in alto

1.4 Relazioni ed RI

- vengono applicate le relazioni tra le tabelle
- è attivata l'integrità referenziale
- se possibile/ragionevole in base ai fatti, sono attivate le opzioni aggiorna e cancella a catena

motivi: consistenza dei dati, supervisione, verifica della struttura delle tabelle

 

in alto

1.5 Nomi

Riguardo tabelle, query, campi, alias:

- nessun parola chiave di SQL/VBA/Access nei nomi definiti dall'utente
- nessun spazio o segni speciali nei nomi definiti dagli utenti
- coerenti regole di nome (convenzione di denominazione o proprio sistema)

lista positiva, cioè accettabile/ragionevole: dalla A alla Z, dalla a alla z, da 0 a 9, trattino basso

motivi: manutenzione, prevenzione degli errori
le parole chiave possono causare problemi nonostante l'uso delle parentesi quadre

risorse: Lista delle parole riservate di Allen Browne

 

in alto

1.6 Query ottimizzate

- gli indici vengono utilizzati, laddove possibile
  - vengono evitate le scansioni della tabella
  - è utilizzato l'indice candidato ad essere il migliore
  - join/filtri/ordinamenti attraverso campi indicizzati
- solo i record necessari (WHERE)
- solo le colonne necessarie (SELECT)
- solo gli ordinamenti richiesti
- nessuna D-funzione su tabelle collegate

motivo: le prestazioni

 

in alto

1.7 Lavoro ottimizzato con backend ODBC

- le query per prestazioni critiche sono posizionate/eseguite sul server
  - query pass-through
  - uso di oggetti server come stored procedure, viste...

- Query ODBC non vengono eseguite a livello locale da JET/ACE
  - nessuna specifica funzione di Access
  - nessun riferimento a oggetti di Access (campi/controlli nelle maschere ecc.)

motivi: le prestazioni

 

in alto

 
2. Applicazione
 
2.1 Frontend e backend

L'applicazione è separata in frontend e backend.

- le tabelle si trovano nel backend (o in tanti backend), tutto il resto in frontend
- ogni utente ha il suo frontend in locale (su un Terminal Server in una cartella del server)
- in ambiente multi-utente vi è un automatismo per distribuire nuovi FE,
  - cioè, non vengono distribuiti manualmente ad ogni postazione ma tramite un tool, uno script, un file batch ecc.

motivi: evitare la corruzione sia del file che dei dati, efficace manutenzione dei frontend, ridotto traffico di rete

risorse: FAQ 1.35

 

in alto

2.2 Nomi

Riguardo oggetti di Access, controlli:

- nessuna parola chiave di Access/VBA/SQL nei nomi definiti dall'utente
- nessun spazio o caratteri speciali nei nomi definiti dall'utente
- coerenti regole per i nomi
  - convenzione di denominazione o proprio sistema
  - i tipi di oggetto/controlli sono riconoscibili per mezzo dei prefissi

lista positiva, cioè accettabile/ragionevole: dalla A alla Z, dalla a alla z, da 0 a 9, trattino basso

motivi: manutenzione, prevenzione degli errori
le parole chiave possono causare problemi nonostante l'uso delle parentesi quadre

risorse: Lista delle parole riservate di Allen Browne

 

in alto

2.3 Versione

L'applicazione ha un sistema della versione che la rende possibile per lo sviluppatore e l'utente di distinguere da differenti release.

- requisiti minimi: numero di versione principale e secondario per il frontend
- a seconda del tipo di applicazione: numeri di versione per tutti i file coinvolti

motivi: manutenzione

risorse: Wikipedia - Software versioning

 

in alto

2.4 Ergonomia

L'ISO 9241 per l'ergonomia del software è fondamentalmente soddisfatta:

- idoneità per l'attività
- idoneità per apprendere
- idoneità per l'individualizzazione
- conformità con le aspettative degli utenti
- auto descrittiva
- controllabilità
- tolleranza dell'errore

risorse: Wikipedia - ISO 9241

 

in alto

2.5 Interfaccia utente dedicata

L'utente lavora sempre in una interfaccia specificatamente configurata per lui:
  - vede solo maschere, report, menu, ribbon ecc.
  - non vede alcuna tabella, query, codice, visualizzazione struttura

motivo: utilizzo amichevole, stabilità

 

in alto

2.6 Provvedimenti per la prestazione

Sono prese i provvedimenti per la prestazione importanti e ben conosciuti:
- l'Autocorrezione Nome è disattivata
- fogli dati secondari disattivati
- recordset permanente con backend di JET/ACE
- nessuna D-funzione su tabelle collegate

risorse: siti di prestazioni di FMS e Tony Toews

 

in alto

2.7 Compattazione

Backend di JET/ACE sono compattati con regolarità. Frontend sono compattati o sostituiti almeno di tanto in tanto.

motivi: eliminazioni di oggetti e dati spazzatura, tabelle deframmentate, aggiornate le statistiche delle query

risorse: Microsoft Jet Database Engine Programmer's Guide - Chapter 4

 

in alto

2.8 Oggetti morti

- oggetti che non vengono più usati sono eliminati
- ovvero per breve tempo vengono chiaramente identificati dal loro nome (ad es. zzz…) e saranno eliminati al più presto

motivi: manutenzione

 

in alto

 
3. Programmazione
 
3.1 VBA precede le macro

- VBA prende la precedenza
- Le macro sono utilizzate solo in casi speciali
  - autoexec
  - autokeys
  - macro di dati
  - web database

motivi: miglior portata di servizi, flessibilità, efficienza di VBA

 

in alto

3.2 Nomi

Riguardo procedure, variabili, costanti:

- nessuna parola chiave di VBA/Access/SQL nei nomi definiti dall'utente
- nessun carattere speciale nei nomi definiti dall'utente
- coerenti regole per i nomi
  - convenzione di denominazione o proprio sistema
  - i tipi di dati sono riconoscibili per mezzo dei prefissi

lista positiva, cioè accettabile/ragionevole: dalla A alla Z, dalla a alla z, da 0 a 9, trattino basso

motivi: manutenzione, prevenzione degli errori

risorse: Lista delle parole riservate di Allen Browne, Convenzione nomi di Reddick

 

in alto

3.3 Dichiarazione variabili

Tutte le variabili sono dichiarate con il loro tipo dati.
- opzione “Dichiarazione di variabili obbligatoria”
- "Option Explicit" in ogni modulo

motivi: manutenzione, prevenzione dell'errore

 

in alto

3.4. Riferimenti

I riferimenti sono limitati a quelli realmente usati nell'applicazione.

motivi: prevenzione dell'errore, prestazione

 

in alto

3.5 SQL precede DAO/ADO

Query/SQL utilizzato per operazioni di dati, ad eccezione della programmazione con DAO/ADO realmente necessaria, ad es. per cicli con memorizzazione intermedia o calcoli ecc.

motivi: prestazione di operazioni di grande quantità di dati, blocchi da recordset, prevenzione dell'errore – il codice è potenzialmente propenso ad errore

 

in alto

3.6 Gestione dell'errore

È presente una sufficiente gestione dell'errore
- nella versione runtime in ogni procedura

motivi: stabilità, utilizzo amichevole

risorse: MZ-Tools, vbWatchdog

 

in alto

3.7 Commenti

Il codice sia sufficientemente commentato
- il motivo per procedure non banali è spiegato all'inizio
- tutte le parti non banali di codice, al punto che sia possibile a sviluppatori esperti di capire

motivi: manutenzione

 

in alto

3.8 Formattazione

Il codice è formattato per una facile lettura
- rientri per il layout orizzontale con cicli, strutture di controllo ecc.
- righe vuote per layout verticale in base al contenuto
- interruzioni di linea per righe di codice di eccessiva lunghezza

motivi: manutenzione

in alto