Sunday, February 21, 2010

Naked Objects

Naked Objects

Definition

Naked Objects is an Architectural Pattern Used in software engineering. The Naked Objects is defined by three principles. 1st is all business logic should be encapsulated onto the domain objects. Naked Objects has a strong commitment to encapsulation. Next the user interface should be a direct representation of the domain objects, with all users consisting, explicitly of creating or retrieving domain objects and invoking methods on those objects. Naked Objects has a specific interpretation of an object-oriented user interface (OOUI). Then last is the user interface should be created 100% automatically from the definition of the domain objects. This could be done using technologies, including source code generation. Source Implementation of naked objects pattern to date have preferential the technology of reflection. Reflection is the process of which computer program can observe and modify its own structure and behavior. Naked Objects is commonly contrasted with the model-view-controller pattern. Using naked objects, domain objects and their capabilities are exposed directly to the user. But there are many circumstances where it is not desirable for all the attributes or capabilities of an object to be available to the user.

Benefits

Naked Objects has four benefits. First benefit is faster development cycle. In Naked Objects there are few layers to develop. In a more conventional design, the developer must define and implement three or more separate layer; the object domain layer, the presentation layer and the task or process scripts that the two. If an appropriate framework is used, naked objects will speed the development cycle. This is principally because it is no longer necessary to develop a presentation layer, which often accounts for a high proportion of the total development effort expended on a business system.

Another benefit of naked object is having 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 synchronization. However the claim is also enforced correspondence between the user presentation and the domain model, forces higher-quality object modeling which in turn improves the agility. The initial motivation behind the idea of naked objects is to encourage the design of behaviorally-complete objects, and thereby to deliver systems that are more agile – meaning that they can be adapted more easily to accommodate unforeseen future changes to business requirements.

A more empowering style of user interface is another benefit. This benefit is really attributable to the resulting object oriented user interface, rather than to naked object, although the argument is made those naked objects makes it much easier to conceive and to implement an OOUI.

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. Combined with the faster development cycle, it becomes possible to prototype functional applications in real time.

The naked objects approach is also well suited to situations where requirements are uncertain or likely to change during the course of the project, because it facilitates communication between developers and users.

“Augmenting human intellect” we mean increasing the capability of a man to approach a complex problem situation, to gain comprehension to suit his particular needs, and to derive solutions to problems. . . Increased capability in this respect is taken to mean a mixture of the following: more-rapid comprehension, better comprehension, the possibility of gaining a useful degree of comprehension in a situation that previously was

too complex, speedier solutions, better solutions, and the possibility of finding solutions to problems that before seemed insoluble.” 1


Relationship to other ideas

The naked objects pattern has relevance to several other disciplines including Object storage mechanisms Object-relation mapping , object database and object persistence are all concerned with need to write a conventional Data access layer underneath the domain objects. In Agile software development Naked objects is compatible with the trend towards agile development methodologies in many different ways, but especially to fine grained iterative development. Domain driven design is the idea that an evolving domain (object) model should be used as a mechanism to help explore requirements than vice versa. The fact that a naked object system forces direct association between the user interface and the domain model makes it easier to attempt domain driven design and makes the benefits more visible. Although naked objects do not conform to the strict definition of Model Driven Architecture, it shares many of the same goals.

“Perfection is finally attained not when there is no longer anything to add but when there is no longer anything to take away”
Antoine de Saint-Exupéry

Software Frameworks

There are now several software frameworks that execute the naked objects pattern. Naked Objects for Java is an open source application development platform. It is called naked objects because all you need to develop are your domain objects. In .net Microsoft’s ADO.NET entity framework (v4) persist domain objects on a relational database without having to write a data access layer. The naked objects framework creates a rich (WPF) user interface from domain objects automatically.

“Naked objects are exposed directly to the user – in a form that makes it obvious to the user that they are dealing with an object. This includes the use of an icon to represent the object. Most importantly, though, it includes the exposure of the object’s potential behaviors to the user who typically selects an object and then invokes a behavior upon it. This implements a ‘noun-verb’ style of user interaction, rather than the more common verb-noun style. In this way, the Naked Object Architecture presents the user with a set of tools with which to operate and allows a business system to be designed that does not dictate the user’s sequence of actions. This allows the user to be a problem solver rather than simply a process follower.” 2

Practical Experience

The Department of Social and Family Affairs in Ireland has built a suite of enterprise application using the naked objects pattern. One of the more outstanding aspects of the DSFA experience was the way that the naked objects technique allowed re use very actively.

References

1. (Douglas C. Engelbart: Augmenting Human Intellect: A Conceptual Framework.

Stanford Research Institute, Menlo Park, Ca., October 1962)

2. (Richard Pawnson : Naked Objects , A Technique for Designing More Expressive Systems)

University of Dublin , Trinity College , Dublin , Ireland

3. Haywood D. Domain Driven Design Using Naked Objects

Other reference

www.nakedobjects.org

www.nakedobjects.net

0 comments:

Post a Comment | Feed

Post a Comment



 

Powered By NanoCore Blogging Team