User:Angelolupo/ManyDesigns Portofino

From Wikipedia, the free encyclopedia
Jump to: navigation, search

ManyDesigns Portofino è un web application framework open source scritto in Java, il quale supporta diversi database sia commerciali sia open source, basato sul framework Struts2 MVC. Segue i principi del model-driven engineering.

Portofino e' indirizzato ai progetti di piccola e media dimensione, alla produttività e allo sviluppo in tempi brevi, e assicura qualità enterprise in termini di robustezza e manutenibilità. Con progetto piccolo, medio si intende un applicazione con un CRUD basato su 10-20 tabelle di database, uno o due workflow, differenti regole per quel che riguarda utenti, permessi, report on-line/stampati, e diverse integrazioni con sistemi esistenti.

Portofino e' sviluppato dalla ManyDesigns srl e distribuito in due modalità di licenza (dual-licensing). La licenza open source e' la GPL v3 con FLOSS exception.

Approccio model-driven[edit]

Portofino segue i principi del model-driven engineering, dello sviluppo model driven e della modellazione domain-specific. Le applicazioni sono scritte definendo dei modelli logici, i quali descrivono le strutture delle applicazioni e le loro funzionalità. In questo senso, i modelli servono allo stesso scopo dei linguaggi di programmazione, ma ad un livello più elevato di astrazione.

Modelli per domini specifici[edit]

Portofino supporta modell di vario tipo:

  • Modello dei dati: fatto di classi, attributi e relazioni, automaticamente mappato sul database (tabelle, colonne e integrità referenziale).
  • Modello dei workflow: fatto di stati, transizioni e guardie.
  • Modello utenti: fatto da un nucleo di classi che descrive gli utenti e i gruppi di utenti.
  • Modello dei permessi: l'intersezione dei dati, workflow e modello utenti, tecnicamente è implementato attraverso una matrice di permessi con lo scopo di definire il sistema di controllo degli accessi.
  • Attributi calcolati: il calcolo automatico di certi attributi su altri attributi, usando una sintassi simile ai fogli elettronici.
  • Modello dei vincoli: basato sugli attributi calcolati, gestisce la validazione dei dati e le regole semantiche che possono coinvolgere attributi multipli.
  • Modelo dei report: l'integrazione con librerie di reportistica (JFreeChart e JasperReports) in un ambiente model driven altamente produttivo.
  • Modello delle notifiche: per le comunicazioni email tra il gli eventi del sistema e gli utenti.
  • Tutti i modelli possono essere considerati specifici di domino, e il loro campo di applicazione è il dominio delle applicazioni web. Gli stessi modelli (per esempio il modello dei dati e quello dei workflow) può essere considerato come piu' generale. Comunque, in Portofino sono usati nel dominio specifico delle applicazioni web (per esempio operazioni di creazione, lettura, modifica e cancellazione).

Interfacce utente generate[edit]

Portofino genera automaticamente le interfacce utente basate sui modelli. Include:

  • form ( creazione-lettura-modifica-cancellazione)
  • navigazione delle relazioni
  • ricerche con filtri multipli flessibili
  • ricerca full-text
  • operazioni sui workflow
  • navigazione breadcrumbs
  • lettura/scrittura dei campi basati sui permessi
  • validazione dei campi
  • selezioni in cascata
  • gestione utenti
  • autoregistrazione utenti e recupero password
  • caricamento di file binari
  • cruscotti interattivi con drill-down
  • report parametrici in pdf, excel e altri formati

Supporto ai database, astrazione e refactoring[edit]

Sono supportati i seguenti database. Closed source:

Open source:

Portofino fornisce un livello di astrazione per il Data Definition Language (DDL). Nonostante la presenza di standard ISO, questa area e' etoregenea tra i diversi database. Il livello di astrazione isola l'utente dalle diverse differenze, includendo:

  • Tipi di dati
  • Sintassi delle DDL
  • Funzionalità delle DDL (per esempio con certi database non e' possibile cambiare la dimensione di una colonna VARCHAR. Portofino in maniera trasparente permette questa operazione su tutti i database).
  • Gestione dei valori null nelle colonne univoche.Portofino assicura una compatibilità ISO a tre valori logici. Ci sono database (per esempio Microsoft SQL Server) che non supportano questa caratteristica in maniera nativa.

Portofino risolve anche i problemi di applicare cambiamenti di modelli su database che sono già popolati. Questo e' fatto con un uso intensivo di operazioni ALTER TABLE, che preservano i dati esistenti, opposto all'operazione CREATE TABLE che assume un database vuoto. Questo produce un approccio incrementale allo sviluppo, simile al refactoring, favorendo metodologie agili.

Storia[edit]

Portofino e' stato rilasciato nel 2006 come applicazione closed-source. Nel Febbrario 2009 e' stato rilasciato in open-source sotto la licenze GPL v3 con FLOSS exception. Le release principali sono state:

Portofino 1.0 (Marzo 2006): sviluppo originale, supportando Oracle e PostgreSQL. Portofino 2.0 (Gennaio 2008): Aggiunto supporto per DB2, SQL Server e MySQL. Portofino 2.0.12 (Febbraio 2009): Prima release pubblica open-source. Supporto per Derby. Portofino 3.0 (Novembre 2009): Basato su Struts2 MVC per struttura interna, estensioni e personalizzazioni. Esteso il modello utenti e auto registrazione.

Nel 2006 Portofino ha ricevuto il premio Perotto[1][2] nella sezione industria.

Voci correlate[edit]

Referenze[edit]

  1. ^ A.Giangreco, Novembre 2006, "Il software vincente per costruire altri software", Liguria Business Journal, Year 2 Issue 11(12)
  2. ^ Dixet, October 10th, 2006, "Datasiel: il premio Perotto per il sociale"

Collegamenti esterni[edit]

Category:Web application frameworks Category:Web development software Category:Java enterprise platform Category:Free computer programming tools