ManyDesigns Portofino
Encyclopedia
ManyDesigns Portofino is an open-source web application framework
written in Java, supporting several commercial and open source databases, and based on the Struts2 MVC
framework. It follows the principles of model-driven engineering.
Portofino addresses the needs of small to medium size projects, such as productivity and short development time, while ensuring enterprise qualities such as robustness and maintainability.
A small to medium size project here means an application with CRUD on 10-20 database tables, one or two workflows with different user roles, permissions, on-line/printed reports, and some integration with existing systems.
Portofino is developed by ManyDesigns srl and distributed under dual-licensing. The open source license is GPL v3 with FLOSS
exception.
, model-driven development and domain-specific modeling
. Applications are written by defining a set of logical models, which describe the application's structure and functionality. In this sense, models serve the same purpose as general-purpose programming languages
, but at a higher level of abstraction.
All these models can be considered domain-specific, as their scope is the domain of web applications.
Some models (e.g., for data and workflows) can be considered as general-purpose. However, in Portofino they are used in a way that is specific to web applications (e.g., CRUD operations).
Closed source:
Open source:
Portofino provides an abstraction layer for Data Definition Language
(DDL). Despite the presence of ISO standards, this area is heterogeneous across vendors. The abstraction layer isolates the user from several differences, including:
Portofino also solves the problem of applying model changes to a database that is already populated with data. This is done by an extensive use of ALTER TABLE statements, which preserve existing data, as opposed to CREATE TABLE statements that assume an empty database.
This produces an incremental approach to development, similar to refactoring
, favorable to agile methods.
The main releases are:
In 2006 Portofino received the Perotto award in the industry section.
Web application framework
A web application framework is a software framework that is designed to support the development of dynamic websites, web applications and web services. The framework aims to alleviate the overhead associated with common activities performed in Web development...
written in Java, supporting several commercial and open source databases, and based on the Struts2 MVC
Model-view-controller
Model–view–controller is a software architecture, currently considered an architectural pattern used in software engineering. The pattern isolates "domain logic" from the user interface , permitting independent development, testing and maintenance of each .Model View Controller...
framework. It follows the principles of model-driven engineering.
Portofino addresses the needs of small to medium size projects, such as productivity and short development time, while ensuring enterprise qualities such as robustness and maintainability.
A small to medium size project here means an application with CRUD on 10-20 database tables, one or two workflows with different user roles, permissions, on-line/printed reports, and some integration with existing systems.
Portofino is developed by ManyDesigns srl and distributed under dual-licensing. The open source license is GPL v3 with FLOSS
Floss
Floss may refer to:* Dental floss, used to clean teeth* Embroidery thread, machine or hand-spun yarn for embroidery* Fairy floss or candyfloss, alternative names for cotton candy* Rousong, i.e. meat floss-Computing:...
exception.
Model-driven approach
Portofino follows the principles of model-driven engineeringModel-driven engineering
Model-driven engineering is a software development methodology which focuses on creating and exploiting domain models , rather than on the computing concepts...
, model-driven development and domain-specific modeling
Domain-Specific Modeling
Domain-specific modeling is a software engineering methodology for designing and developing systems, such as computer software. It involves systematic use of a domain-specific language to represent the various facets of a system...
. Applications are written by defining a set of logical models, which describe the application's structure and functionality. In this sense, models serve the same purpose as general-purpose programming languages
Programming paradigm
A programming paradigm is a fundamental style of computer programming. Paradigms differ in the concepts and abstractions used to represent the elements of a program and the steps that compose a computation A programming paradigm is a fundamental style of computer programming. (Compare with a...
, but at a higher level of abstraction.
Domain-specific models
Portofino supports models of various types:- Data model: made of classes, attributes and relationships, automatically mapped to their databases counterparts (tables, columns and referential integrity).
- Workflow model: made of states, transitions and guards.
- User model: made of a few core classes to describe the system's users and user groups.
- Permission model: the intersection of the data, workflow and user models, technically implemented through permission matrices with the purpose of defining the system's access control policy.
- Calculated attributes: the automatic calculation of certain attributes based on other attributes, using a syntax similar to spreadsheet formulas.
- Constraints model: based on calculated attributes, handles advanced field validations and semantic rules that can span multiple attributes.
- Reporting model: the integration of reporting libraries (JFreeChartJFreeChartJFreeChart is an open-source framework for the programming language Java, which allows the creation of a wide variety of both interactive and non-interactive charts.JFreeChart supports a number of various charts, including combined charts:...
and JasperReportsJasperReportsTeodor Danciu began work on JasperReports in June 2001, the sf.net project was registered in September 2001 and JasperReports 0.1.5 was released on November 3, 2001.JasperReports Version 1.0 was released on July 21, 2005....
) in a model-driven, high-productivity environment. - Notification model: for the communication of system events to the user via email.
All these models can be considered domain-specific, as their scope is the domain of web applications.
Some models (e.g., for data and workflows) can be considered as general-purpose. However, in Portofino they are used in a way that is specific to web applications (e.g., CRUD operations).
Generated user interface
Portofino automatically generates the user interface based on the model definition. It can include:- forms (create-read-update-delete operations)
- navigation of relationships
- searches with flexible multiple filtering
- full-text searches
- workflow operations
- breadcrumbs
- read/write fields based on permissions
- field-level and semantic validations
- cascaded selections
- user management
- user self-registration and password recovery
- binary files upload
- interactive dashboards/portlets with drill-down
- parametric reports in pdf and other formats
Database support, abstraction and refactoring
The following database technologies are supported.Closed source:
- OracleOracle DatabaseThe Oracle Database is an object-relational database management system produced and marketed by Oracle Corporation....
- IBM DB2IBM DB2The IBM DB2 Enterprise Server Edition is a relational model database server developed by IBM. It primarily runs on Unix , Linux, IBM i , z/OS and Windows servers. DB2 also powers the different IBM InfoSphere Warehouse editions...
- Microsoft SQL ServerMicrosoft SQL ServerMicrosoft SQL Server is a relational database server, developed by Microsoft: It is a software product whose primary function is to store and retrieve data as requested by other software applications, be it those on the same computer or those running on another computer across a network...
Open source:
- MySQLMySQLMySQL officially, but also commonly "My Sequel") is a relational database management system that runs as a server providing multi-user access to a number of databases. It is named after developer Michael Widenius' daughter, My...
- PostgreSQLPostgreSQLPostgreSQL, often simply Postgres, is an object-relational database management system available for many platforms including Linux, FreeBSD, Solaris, MS Windows and Mac OS X. It is released under the PostgreSQL License, which is an MIT-style license, and is thus free and open source software...
- Apache DerbyApache DerbyApache Derby is a relational database management system developed by the Apache Software Foundation that can be embedded in Java programs and used for online transaction processing. It has a 2 MB disk-space footprint.Apache Derby is developed as an open source project under the Apache 2.0 license...
(as a non-production embedded database)
Portofino provides an abstraction layer for Data Definition Language
Data Definition Language
A data definition language or data description language is a syntax similar to a computer programming language for defining data structures, especially database schemas.-History:...
(DDL). Despite the presence of ISO standards, this area is heterogeneous across vendors. The abstraction layer isolates the user from several differences, including:
- Data types
- DDL syntax
- DDL functionality (e.g., while certain databases do not allow resizing of VARCHAR columns, Portofino provides a transparent solution for all databases).
- Behavior of nullable unique columns. Portofino enforces an ISO-compliant three-value logic on databases (Microsoft SQL Server) that would not support it natively.
Portofino also solves the problem of applying model changes to a database that is already populated with data. This is done by an extensive use of ALTER TABLE statements, which preserve existing data, as opposed to CREATE TABLE statements that assume an empty database.
This produces an incremental approach to development, similar to refactoring
Refactoring
Code refactoring is "disciplined technique for restructuring an existing body of code, altering its internal structure without changing its external behavior", undertaken in order to improve some of the nonfunctional attributes of the software....
, favorable to agile methods.
History
Portofino was originally released in 2006 as a closed-source application. In February 2009 is was released in open-source under a GPL v3 license with FLOSS exception.The main releases are:
- Portofino 1.0 (March 2006): original development, supporting Oracle and PostgreSQL.
- Portofino 2.0 (January 2008): Added support for DB2, SQL Server and MySQL.
- Portofino 2.0.12 (February 2009): First public open-source release. Support for Derby.
- Portofino 3.0 (November 2009): Struts2-based MVC for internal structure, extension and customization. Extended user management and self-registration.
- Portofino 3.1 (March 2010): Physical model simplification on database.
In 2006 Portofino received the Perotto award in the industry section.
See also
- Web application frameworkWeb application frameworkA web application framework is a software framework that is designed to support the development of dynamic websites, web applications and web services. The framework aims to alleviate the overhead associated with common activities performed in Web development...
- Model-driven engineeringModel-driven engineeringModel-driven engineering is a software development methodology which focuses on creating and exploiting domain models , rather than on the computing concepts...
- Domain-driven designDomain-driven designDomain-driven design is an approach to developing software for complex needs by deeply connecting the implementation to an evolving model of the core business concepts...
- Domain-specific modelingDomain-Specific ModelingDomain-specific modeling is a software engineering methodology for designing and developing systems, such as computer software. It involves systematic use of a domain-specific language to represent the various facets of a system...
- Automatic programmingAutomatic programmingIn computer science, the term automatic programming identifies a type of computer programming in which some mechanism generates a computer program to allow human programmers to write the code at a higher abstraction level....
- SQLSQLSQL is a programming language designed for managing data in relational database management systems ....
External links
- Official ManyDesigns Portofino homepage
- Portofino project at SourceForge.net
- Java Powered for the Enterprise directory
- http://programmazione.it/index.php?entity=eitem&idItem=42859 (in Italian)
- http://www.gt-logiciel-libre.org/2009/09/20-startups-innovantes-open-source-nominees-pour-les-open-innovation-awards/ (in French)