Naked objects


Naked objects is an architectural pattern used in software engineering.

Definition

The naked objects pattern is defined by three principles:
The naked object pattern's innovative feature arises by combining the and principles into a principle:
The naked objects pattern was first described formally in Richard Pawson's PhD thesis which includes investigation of antecedents and inspirations for the pattern including, for example, the Morphic user interface.
Naked Objects is commonly contrasted with the model–view–controller pattern. However, the published version of Pawson's thesis contains a foreword by Trygve Reenskaug, who first formulated the model–view–controller pattern, suggesting that naked objects is closer to the original intent of model-view-controller than many of the subsequent interpretations and implementations.

Benefits

Pawson's thesis claims four benefits for the pattern:
  1. A faster development cycle, because there are fewer layers to develop. In a more conventional design, the developer must define and implement three or more separate layers: the domain object layer, the presentation layer, and the task or process scripts that connect the two. The thesis includes a case study comparing two different implementations of the same application: one based on a conventional '4-layer' implementation; the other using naked objects.
  2. Greater agility, referring to the ease with which an application may be altered to accommodate future changes in business requirements. In part this arises from the reduction in the number of developed layers that must be kept in synchronisation. However the claim is also made that the enforced 1:1 correspondence between the user presentation and the domain model, forces higher-quality object modelling, which in turn improves the agility.
  3. A more empowering style of user interface. This benefit is really attributable to the resulting object-oriented user interface, rather than to naked objects per se, although the argument is made that naked objects makes it much easier to conceive and to implement an OOUI.
  4. Easier requirements analysis. The argument here is that with the naked objects pattern, the domain objects form a common language between users and developers and that this common language facilitates the process of discussing requirements - because there are no other representations to discuss. Combined with the faster development cycle, it becomes possible to prototype functional applications in real time.

    Practical experience

The Department of Social Protection in Ireland has built a suite of enterprise applications using the naked objects pattern. As part of its Service Delivery Modernisation programme, the DSP designed a new enterprise architecture both to meet its planned new business requirements and to provide greater agility over the longer term. The naked objects pattern forms a key element of the SDM architecture. In November 2002, the DSP went live with a new application to replace its existing system for the administration of child benefit. This is believed to be the first operational application of the naked objects pattern, anywhere. The DSP's experience in building this first application, including the reactions of users to the radical user interface is documented extensively in Pawson's thesis, and more recently in a presentation at QCon London 2011.
One of the more striking aspects of the DSP experience was the way that the Naked Objects technique permitted re-use very actively. Once a domain object, such as a Customer, had been defined for one 'application' it could be readily adapted with the minimum of tweaking and addition for use elsewhere. This suggests that the approach could become a favourite in government circles, where re-use is seen as a powerful technique for breaking down siloed systems. The UK 'Transformational Government' policy is particularly keen to see re-use become a standard requirement of new government systems, both consuming other governmental system components and making new ones available for others to use. This re-use is often seen in terms of services, but objects could be an equally powerful approach.
The DSP's initial 'Naked Object Architecture' was developed by an external contractor, but the architecture was subsequently redeveloped around the which now forms the basis for future application development, as confirmed in the request for tenders for a four-year programme of further applications to be built using naked objects.

Criticisms

The naked objects pattern has attracted a fair amount of criticism since the first public demonstration of the idea at the conference under the banner of . This criticism has typically focused on one of three main areas:
  1. The validity of aiming to encapsulate all business logic onto the domain objects. Arguments both for and against this idea may be found within the research literature for object-oriented programming and domain-driven design.
  2. The applicability of object-oriented user interfaces.
  3. The usability of generic user interfaces.
None of these criticisms is unique to naked objects, but the fact that naked objects combines all three ideas gives it a higher profile.

Relationship to other ideas

The naked objects pattern has relevance to several other disciplines and/or trends, including: