AppDeveloper 2.0
Generatore di codice ASP.NET/C# professionale
Software ideato e realizzato da
Progetto AppDeveloper

Cosa è AppDeveloper

  • E' un progetto concepito per realizzare strumenti a supporto delle attività di sviluppo di applicazioni web-based
  • E' un servizio on-line di generazione di codice ASP.NET/C#
  • E' un modello di sviluppo applicativo fortemente ingegnerizzato e basato sulle più importanti best-practices di programmazione
  • E' un percorso formativo per l'insegnamento della programmazione avanzata, finalizzato a sviluppare la capacità di realizzare applicazioni complesse e di alta qualità
  • E' un gruppo di sviluppo che lavora per mantenere e potenziare il motore AppDeveloper per la generazione di codice
Osservando le più importanti best-practices per lo sviluppo di software, AppDeveloper garantisce un codice di alta qualità, in termini di aderenza alle specifiche applicative, facilità di manutenzione ordinaria e incrementale, semplicità della interfaccia utente (user-friendly), bassi tempi di attesa (performance).
Il software generato è infatti ingegnerizzato secondo le più importanti best practices di programmazione object oriented, in modo da essere rapidamente comprensibile a qualsiasi programmatore esperto (auto-documentante), da essere facilmente adattabile a qualsiasi esigenza specifica (modello a eventi) e manutenibile, per la sua capacità di customizzazione senza necessità di intervento sul codice automaticamente generato.
Ciò si traduce nella possibilità di realizzare applicazioni con l'approccio "fast-prototyping", e di ampliare ed adattare il codice generato alle specifiche necessità applicative, senza la necessità di modificare il codice generato né tantomeno le librerie, in modo da garantire e mantenere la qualità del software nel tempo.
Architettura Generale del Sistema
Architettura generale del sistema
Le applicazioni web orientate alla gestione e pubblicazione di dati, seppur diverse tra loro, hanno in comune una struttura di interfaccia utente e un meccanismo che governa l'interazione con l'utente e l'accesso ai dati. Si può quindi astrarre dalla particolare implementazione di questi meccanismi, generalizzarli in librerie di componenti, e demandare ad un generatore automatico la scrittura del codice.
AppDeveloper consiste in due moduli per la generazione del codice:
  • DAL Generator (Accesso al database)
    A partire da uno schema dati relazionale SQL (tabelle, indici, relazioni e viste) viene generata una classe per ogni tabella (3), e tutte ereditano da una medesima classe base (DAL Interface) di libreria.
  • UI Generator (interfaccia utente)
    Per ogni classe DAL viene generato un controllo ASCX (1), che eredita da una medesima classe base (SmartBrowserBase) di libreria e che implementa tutti i meccanismi generali necessari al funzionamento delle operazioni di visualizzazione, aggiornamento e ricerca (CRUD) utilizzando esclusivamente i componenti DAL per accesso ai dati e mai l'accesso diretto al database.
Il codice generato rappresenta un primo prototipo della applicazione immediatamente funzionante, ed è strutturato in modo che il programmatore possa customizzare gli oggetti generati senza modificare la parte generata (grazie a subclassing, partial class, virtual e overrides), in modo da poter rigenerare i componenti senza alterare le parti già customizzate.
La customizzazione è il procedimento manuale che porterà il prototipo alla versione finale della applicazione, e consiste in:
  • 1. Sistemare il layout ASCX per rendere più pratico e migliorare l'estetica della form dati (accesso al record) ed aggiungere qualsiasi altro componente ASPNET che genera eventi, sia al dataform che al datagrid (accesso ai set di record)
  • 8. Implementare nuovi metodi per le funzionalità specifiche di interfaccia utente e per una logica di accesso ai dati che non è possibile o conveniente definire direttamente con indici, relazioni, viste e trigger SQL;
UI Generator crea per ogni tabella un prototipo di pagina ASPX (2) che contiene semplicemente un singolo ASCX. Dato che non è necessario usare l'ASPX generato, è possibile customizzarlo o implementarlo ex novo, ad esempio per visualizzare più ASCX indipendenti o in relazione tra loro, o cambiare il comportamento di un controllo ASCX intercettando uno o più eventi predefiniti.
La classe SMARTBROWSERBASE comprende metodi virtual ed abstract che saranno implementati in override nel codebehind del controllo ASCX, ed in particolare i metodi abstract che copiano i dati di un oggetto DAL (record) sui controlli dell'ASCX (scatter) e viceversa (gather).
La classe SMARTBROWSERBASE da cui ogni ASCX deriva riceve l'evento dall'ASCX generato (4) e lo propaga allo specifico virtual handler (5); a sua volta l'handler provvede alle operazioni sui dati (6) e la loro visualizzazione nei controlli dell'ASCX (7). I metodi di SMARTBROWSERBASE che rispondono agli eventi sono virtual, quindi customizzabili; in questo modo è possibile alterarne il comportamento standard, senza modificare il codice generato. Ciò garantisce che indipendentemente dalla pagina che userà l'ASCX, questo mantiene il comportamento custom.
Inoltre, gli eventi sono propagati alla pagina ASPX che può così intercettarli e modificare il comportamento standard. In questo caso la customizzazione è relativa alla specifica pagina che utilizza l'ASCX.
A differenza di molti generatori di codice, AppDeveloper non è concepito per creare una monolitica applicazione ma componenti da assemblare, e i componenti sono concepiti per essere customizzati senza modificare il codice generato, in modo che questo possa essere rigenerato a seguito di una modifica della struttura del database (frequente nella programmazione agile) senza alterare il codice custom.
Layers
Ogni layer è connesso al layer successivo in modo chiaro e strutturato:
  • Da una parte l'interfaccia tra web server e front-end mediante il suo strato di programmazione .NET
  • Dall'altra l'interfaccia tra un database SQL (MySql, MS-SQL, SQLExpress, Access, o server connesso via ODBC), locale o remoto, e l'applicazione mediante uno strato DAL (Data Access Layer), che funge da proxy alle chiamate al database.
Il software generato è ingegnerizzato secondo le più importanti best practices di programmazione object oriented, in modo da essere rapidamente comprensibile a qualsiasi programmatore esperto (auto-documentazione), da essere facilmente adattabile a qualsiasi esigenza applicativa (modello a eventi) e manutenibile, per la sua capacità di customizzazione senza necessità di intervento sul codice generato.

Il codice di AppDeveloper 2.0 offre al bravo programmatore una infrastruttura object oriented customizzabile con relativa semplicità mediante subclassing (estensione/specializzazione delle classi), gestione degli eventi (scatenati dai componenti ASCX), e il layout delle pagine (ambiente di Visual Studio Express).
User Interface

I controlli ASCX fanno riferimento a CSS, per cui possono essere personalizzati gli aspetti grafici.

Esempio DataGrid ASP.NET Esempio DataForm ASP.NET
AppDeveloper - Servizio OnlineServizio On-Line
Il servizio on-line è in fase di startup, ed è destinato ad aziende e professionisti, offerto in varie soluzioni:
  • AppDeveloper Demo - Una applicazione funzionante valida 30 giorni, realizzata per la gestione di un database fornito dall'utente
  • AppHosting - Applicazione realizzata su specifiche dell'utente ed eseguita su nostri server web (modalità full-managed)
  • AppDeveloper Base - Generazione applicazione completa e download del codice sorgente in un file ZIP (modalità self-service)
  • AppDeveloper Pro - Generazione applicazione completa su spazio web, accesso FTP
  • AppDeveloper Enterprise - AppDeveloper 2.0 con librerie sorgenti, assistenza, formazione, consulenza progettuale
  • I programmatori junior potranno contare su un prodotto professionale e di qualità, con codice auto-documentato e facilmente adattabile a diverse esigenze;
  • Gli sviluppatori senior potranno aumentare la redditività e l'efficienza del proprio lavoro, contando su una infrastruttura applicativa coerente;
  • Le aziende potranno commissionare applicazioni web-based da realizzare in tempi rapidi ed a costi contenuti, completamente gestite in outsourcing, così come richiedere consulenze e corsi di formazione/aggiornamento finalizzati a costruire rapidamente gli skills necessari per lo sviluppo software in house.
Sviluppa la tua applicazione con il servizio on-line di generazione di codice ASP.NET/C#. E' sufficiente definire uno script SQL per la generazione delle tabelle database per ottenere una applicazione completa per la consultazione e l'aggiornamento. Il codice è pronto per il naturale adattamento ai requisiti del sistema da sviluppare (layout di pagina, nuove funzionalità, gestione eventi, riutilizzo componenti, ecc.), senza necessità di modifica del codice generato (classi base).
AppDeveloper - FormazioneFormazione
Le conoscenze dei sistemi relazionali di dati, della programmazione ad oggetti, delle best practices e delle basi dell'ingegneria del software, è un bagaglio che un qualsiasi programmatore esperto dovrebbe possedere. Se si intende far crescere uno staff di programmatori è necessario definire un percorso coerente e trasferire know-how avanzato, per sviluppare le capacità di realizzazione di applicazioni complesse e di qualità.
AppDeveloper contiene esperienze decennali e conoscenze avanzate di programmazione software, implementate in un sistema automatico di generazione di applicazioni. La forte ingegnerizzazione delle applicazioni generate ha consentito di delineare un percorso formativo finalizzato ad offrire al programmatore concreti elementi metodologici per lo sviluppo di software di qualità, fino ad acquisire la capacità di "industrializzare" il proprio lavoro costruendosi generatori di codice personali.
Il corso di formazione proposto si articola nei seguenti argomenti:
  • Progettazione di basi dati relazionali
  • Programmazione object oriented
  • Architetture software multi-tier
  • Componenti di interfaccia utente
  • Classi di interfaccia al Database (data access layer)
  • Libreria di classi astratte
  • Generazione e customizzazione dei componenti
  • Implementazione della applicazione
  • Costruire un generazione di codice
Lo sviluppo di AppDeveloper

AppDeveloper 2.0 è l'evoluzione di numerosi generatori di codice realizzati durante la mia attività di programmazione: dalla prima versione per dBase-III/Clipper (progetto Autos, 1986), successivamente reingegnerizzato per generare applicazioni ASP/VBScript (progetto CodeGen, 1996), e quindi interamente riscritto per lo sviluppo in ASP.NET/C# (AppDeveloper, 2003).
La versione 2.0 di AppDeveloper è il risultato di un profondo processo di revisione finalizzato a realizzare una più coerente e razionale architettura ad oggetti.
Il codice generato con AppDeveloper 2.0 è capace di offrire al bravo programmatore una infrastruttura object oriented adattabile con facilità alle esigenze applicative mediante il subclassing (estensione/specializzazione delle classi), la gestione degli eventi scatenati dai componenti ASCX, e il layout delle pagine.
La versione 2.0 di AppDev non è ancora pronta per essere condivisa. Ma chi utilizza codice generato da AppDev generalmente crea anche nuovi componenti e estensioni di utilità generale, che se realizzati a regola d'arte e sottoposti al gruppo di sviluppo (in fase di creazione) possono venire integrati nelle successive versioni delle librerie AppDev.
AppDeveloper - Open SourceOpen source
AppDeveloper 2.0 non è un software open source, ma il codice delle applicazioni generate lo è -non si tratta di applicazioni data-driven!
AppDeveloper nasce da una esigenza personale e professionale: non disperdere l'esperienza acquisita ad ogni applicazione realizzata. La soluzione, banale per un programmatore, è stata di realizzare un "assistente programmatore" virtuale che costruisca una applicazione funzionante, sia pure prototipale, secondo un modello di sviluppo ben definito -cioè come farei io stesso.
AppDeveloper si evolve quindi ad ogni applicazione realizzata, con nuovi oggetti e templates sempre più potenti e raffinati. L'utilizzo di AppDeveloper è riservato al team di sviluppo software di Ticoop, piccola società cooperativa che opera nel settore ICT, ed ad alcuni miei amici programmatori.
Se sei uno sviluppatore interessato al progetto AppDeveloper puoi partecipare in tanti modi:
  • Studiare il codice generato e proporre modifiche - Le tue proposte saranno valutate ed eventualmente integrate nel sistema on-line
  • Partecipare allo sviluppo delle librerie - Puoi proporre codice che le potenzia e le migliora
  • Partecipare allo sviluppo di AppDeveloper - Se sei un appassionato di generazione di codice e vuoi partecipare al gruppo di sviluppo, contattaci!
Copyright © 2000-2014 Roberto Villari, Roma.