ManyDesigns Portofino
Encyclopedia
ManyDesigns Portofino is an open-source web application framework
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 engineering
Model-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 (JFreeChart
    JFreeChart
    JFreeChart 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 JasperReports
    JasperReports
    Teodor 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:
  • Oracle
    Oracle Database
    The Oracle Database is an object-relational database management system produced and marketed by Oracle Corporation....

  • IBM DB2
    IBM DB2
    The 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 Server
    Microsoft SQL Server
    Microsoft 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:
  • MySQL
    MySQL
    MySQL 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...

  • PostgreSQL
    PostgreSQL
    PostgreSQL, 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 Derby
    Apache Derby
    Apache 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 framework
    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...

  • Model-driven engineering
    Model-driven engineering
    Model-driven engineering is a software development methodology which focuses on creating and exploiting domain models , rather than on the computing concepts...

  • Domain-driven design
    Domain-driven design
    Domain-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 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...

  • Automatic programming
    Automatic programming
    In 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....

  • SQL
    SQL
    SQL is a programming language designed for managing data in relational database management systems ....


External links

The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK