Simplified Framework for developing Object Oriented Rich Internet Applications (Java+Vaadin+DB4O+AspectJ).
It uses the "Paradigm Shifting Technique" to identify opportunities and obstacles.
2. with common tools and knowledge base in order to increase reutilization and reduce the number of specialities needed
to develop a solution. As metrics we defined the specialities needed for development and the number of models
needed/used to document and implement the solution. The last criteria we used for the selection of technologies is the
one that defines a promising technology for our work we define a promising technology as the one that has stated (even
in an informally brochure) that they may increase the return of investment , reduce the complexity and/or cost.
4.1 Paradigm Shifting
Paradigm Shifting
from 1991 to 2013
2005 BUP & EPF
Virtualization
Mobile
WWW
CPU
(Hardware)
Operative
System
Languages
Frameworks
DataBase
Presentation
Architecture
Quality
Applications
Social Technologies
1979 Unix
1981 MSDOS
1966 DOS
1985 Windows
1991 Linux
2007 Linux Android
1993 Newton
1988 Mac
2004 LinuxUbuntu
1978 8086
1982 286
1993 Pentium
2006 Dual Core
2007 Quad Core
2011 10 Core
1988 SUN softpc
1979 IBM VM
1997 MAC virtualpc
1998 VMWare
2003 XEN
2008 KVM
1993 Newton
2007 Kindle
2010 Ipad
2011 Galaxy
2007 IPhone
2007 Android
1991 HTML
1995 AWT
1999 JSP
2002 Vaadin
1992 OpenGL
2006 GWT 1.0
2004 JSF 1.0
1993 Mosaic
1994 Newton
1994 Netscape
1996 Safari
1998 Firefox
1995 IExplorer
2011 BBerry
2011 FFox M
2011 Chrome
2007 Safari M
2008 Android M
2008 Chrome
2009 Opera M
2001 Explorer M
1996 Apache
1987 CMM
1989 ITIL
1991 SCRUM
1993 MSF
1999 XP
2003 RUP
1998 ASP
1996 Flash
2007 SilverLight
1999 GPU
2013
1996 Palm
2000 PocketPC
2001 Win XP
2009 Win 7
1996 Win NT
1987 OS/2
1984 GNU
2008 Atom
2002 CMMI
1990 WWW 2000 PocketPC
1960
1980
1990
2000
2010
2011 Chrome M
2009 GWT 2.0
2007 Vaadin/GWT
1970
2000
2010
1990
1960
1980
1970
1975 Tandem
1991 TandemMips
2001 TandemItanium
1975 Tandem T/TOS
1994 Tandem OSS (Unix)
2006 JSPJSTL
2000 HTML 4
2008 HTML 5
1991
2006 Linux 2.4
2011 Linux 3.0
2001 MAC OS 10
2012 MAC OS 10.8
2009
2009 JSF 2.0
1997 WAP
2013 Vaadin 7
1970 DBMS
1978 RDMS
1979 Oracle
1997 Oracle ORDBMS
1994 Mysql
2004 DB4O
2001 HSQL
2005 H2
1980 OODMS
1988 Oracle RDBMS
1979 MVC
1980 OSI
1998 XML
1981 RPC
1996 DCOM
1997 RMI
1998 SOAP
2000 REST
2007 Cloud
2000 Ajax
1997 MVP
1987 Sybase RDBMS
1989 Microsoft SQL
1967 Object Oriented
1983 Internet
1970 Chat
1970 Enail
1991 WWW3 Layer
2002 RIA
2002 Prevayler
1972 C
1972 SQL
1983 C++
2001 AspectJ
2001 C#
2003 Scala
1999 J2EE
2000 .NET
2001 Hibernate
2006 OpenJDK
2005 Harmony
1967 Simula
1968 BI
1980 BPMS
1970 Ecommerce
1984 Staroffice
1989 MS office1990 ERP
2000 OpenOffice
2006 Google Docs
2011 MS Off365
2000 RSA Public
1991 ISOS. Engineering
1993 ISOS. Process
1960 RFC
1950 Freesoftware
1970 BBS
1958 Lisp
1959 Cobol
2007 Clojure
2004 BPMN
2004 OODVS
2009 JSF 2.0
2002 Spring2000 Liferay
1991 MS Visual Basic
2004 Eclipse
1991 MS Power Builder
2012Win Phone 8
1985 MacApp
1995 Java
1996 Cocoa
1991 MS Visual Basic
1995 Wikis
1997 Google
1998 Opensource
1999 Sourceforge
2001 Wikipedia
2003 Linkedin
2004 Facebook
1990 WWW
1995 MS Visual Studio
1997 Netbeans
1995 Java
1995 PHP
1995 JavaScript
1997 UML
2012 Win 8, WinServer
2012 Linux U Unity
2012 Linux Android 4.1
2008 HyperV
Granted Obsolete
Old and Valid
Target
New Promissing
2009 Mongo DB
2007 Amazon EC2
2009 Windows Azure
2009 Google Apps Engine
2010 OpenStack
2006 Twitter
1999 RSS
2006 OpenUP
2001 OWASP & ISOSecurity
1993 MSF
1993 EDI
2004 PCI
1990 Versant ObjecttDB
2007 Hadoop
2010 Maria DB
1980 DIS
1993 CORBA
2000 HLA
1998 Java 3D
1995 VRML
2004 Hypper Threading
1980 Small talk MVC
2004 Naked Objects
Figure 1
4.1.1 Multi Layer/Tier Architectures(TopDown)
Layers : "Logical layers are merely a way of organizing your code. Typical layers include Presentation, Business and
Persistence ”the same as the traditional 3tier model. But when we are talking about layers, we are only talking about
logical organization of code. In no way is it implied that these layers might run on different computers or in different
processes on a single computer or even in a single process on a single computer. All we are doing is discussing a way
of organizing a code into a set of layers defined by specific function"[5][6]. Typical layers are:
Presentation Layer : User Interface, the main function is to translate the tasks and results to something the
user can understand.
Business Layer : Coordinates the application processes commands and make logical decisions and
evaluations, and performs calculations. I moves and processes data between the two surrounding layers.
Persistence Layer : Information store and retrieval from data base system.
Tiers: "Physical tiers however, are only about where the code runs. Specifically, tiers are places where layers are
deployed and where layers run. In other words, tiers are the physical deployment of layers".[5][6].
3. Layers
Persistency (DB4O)
Same Model and Same Paradigms(Tools)
(Java,AspectJ)
Presentation (Vaadin)
Logic
Tiers
Presentation
Document Oriented
Logic
Object Oriented
Persistence
Relational Oriented
Presentation
Object Oriented
Logic
Object Oriented
Persistence
Object Oriented
Diferent Models and Same Paradigms(Tools)
Presentation
Object Oriented
Logic
Object Oriented
Persistence
Object Oriented
Diferent Models and Diferent Paradigms(Tools)
Same Model and Same Paradigms(Tools)
4.1.2 Object Oriented Architectures (OO)
An objectoriented system[7] is composed of objects. The behavior of the system results from the collaboration of those
objects. Collaboration between objects involves them sending messages to each other. Sending a message differs from
calling a function in that when a target object receives a message, it decides on its own what function to carry out to
service that message. The same message may be implemented by many different functions, the one selected depending
on the state of the target object. Object Oriented Systems[8] are constructed as structured collections of abstract data
types implementations.
4.1.3 Service Oriented Architecture s (SOA)
In software engineering, a serviceoriented architecture is a set of principles and methodologies for designing and
developing software in the form of interoperable services. These services are welldefined business functionalities that
are built as software components (discrete pieces of code and/or data structures) that can be reused for different
purposes. SOA design principles are used during the phases of systems development and integration. [9]
4.1.4 Model View Controller (MVC) Architecture
A model view controller[9] (design pattern), separates concerns in tree roles:
Model: A model notifies its associated views and controllers when there has been a change in its state.
This notification allows the views to produce updated output, and the controllers to change the available
set of commands.
View: A view requests from the model the information that it needs to generate an output representation.
Controller: A controller can send commands to its associated view to change the view's presentation of the
model (e.g., by scrolling through a document). It can send commands to the model to update the model's
state (e.g., editing a document).
4.1.5 Model View Presenter (MVP) Architecture
ModelViewPresenter is a derivative of the ModelViewController (MVC) software pattern, also used mostly for building
user interfaces. In MVP the presenter assumes the functionality of the middleman (played by the controller in MVC). In
MVP, all presentation logic is pushed to the presenter. Eventually, the model becomes strictly a domain model.
MVP is a user interface design pattern engineered to facilitate automated unit testing and improve the separation of
concerns in presentation logic:
Model: is an interface defining the data to be displayed or otherwise acted upon in the user interface.
View: is a passive interface that displays data (the model) and routes user commands (events) to the