„Naked Objects“ – Versionsunterschied

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen
[ungesichtete Version][ungesichtete Version]
Inhalt gelöscht Inhalt hinzugefügt
KKeine Bearbeitungszusammenfassung
KKeine Bearbeitungszusammenfassung
Zeile 44: Zeile 44:


== Einsatz ==
== Einsatz ==
Der vermutlich erste operationale Einsatz des Naked Objects Architekturmusters erfolgte im November 2002 durch das [[Department of Social and Family Affairs]] (Sozialministerium) in Irland. Die umgesetzte Applikation für die Administration von Kinderbeihilfen war eine von mehreren Enterprise Applikationen des Department of Social and Family Affairs, welche mittels Naked Objects umgesetzt wurden.<ref>Department of Social and Family Affairs - Guide to the Functions & Records of the Department, [http://welfare.ie/foi/sect15/part5.html#5.13 DSFA website - Freedom Of Information]</ref> Die dabei gemachten Erfahrungen, inklusive der Raktionen der Anwender hat Richard Pawson in seiner Dissertation verarbeitet.<ref name="pawson"> Insbesondere die durch Naked Objects erreichte Wiederverwendbarkeit der Fachobjekte über mehrere Anforderungsbereiche wurde positiv bewertet.
Der vermutlich erste operationale Einsatz des Naked Objects Architekturmusters erfolgte im November 2002 durch das [[Department of Social and Family Affairs]] (Sozialministerium) in Irland. Die umgesetzte Applikation für die Administration von Kinderbeihilfen war eine von mehreren Enterprise Applikationen des Department of Social and Family Affairs, welche mittels Naked Objects umgesetzt wurden. Die dabei gemachten Erfahrungen, inklusive der Raktionen der Anwender hat Richard Pawson in seiner Dissertation verarbeitet.<ref name="pawson"/> Insbesondere die durch Naked Objects erreichte Wiederverwendbarkeit der Fachobjekte über mehrere Anforderungsbereiche wurde positiv bewertet.


Die dabei eingesetzte initiale Naked Objects Architektur wurde von Fujitsu entwickelt<ref>Fujitsu, Case Study: The Department of Social and Family Affairs [http://www.fujitsu.com/ie/casestudies/dsaf.html Fujitsu website]</ref>, aber später basierend auf das [[Open Source]] Framework "Naked Objects for Java" portiert.<ref>Department of Social & Family Affairs, The ongoing development of the Department's Service Delivery Modernisation programme, 2007, [http://www.e-tenders.gov.ie/Search/Search_Show.aspx?id=APR082087 e-tenders website]</ref>.
Die dabei eingesetzte initiale Naked Objects Architektur wurde von Fujitsu entwickelt<ref>{{internetquelle | autor=Fujitsu | url=http://www.fujitsu.com/ie/casestudies/dsaf.html | sprache=Englisch | titel=The Department of Social and Family Affairs | zugriff=2010-03-21 | zitat=Fujitsu designed a solution that achieves the department’s vision, namely to create business components as the basis for building flexible and responsive business applications in Naked Objects Architecture.}}</ref>, aber später auf das [[Open Source]] Framework "Naked Objects for Java" portiert und weiterentwickelt.<ref>{{internetquelle | autor=Department of Social & Family Affairs | titel=The ongoing development of the Department's Service Delivery Modernisation programme | url=http://www.e-tenders.gov.ie/Search/Search_Show.aspx?id=APR082087 | sprache=Englisch | datum=23. April 2007 | zugriff=2010-03-21}}</ref>.


== Vergleich zu anderen Technologien ==
== Vergleich zu anderen Technologien ==
;Objektorientierte Persistenzmechanismen: Objektorientierte Persistenzmechanismen wie [[Objektrelationale Abbildung]] oder [[Objektdatenbank]]en beschäftigen sich mit dem Ersatz der [[Schichtenarchitektur#Datenzugriffsschicht|Datenzugriffsschicht]] unter den Fachobjekten. Sie ergänzen somit das Naked Objects Architekturmuster und führen zu einem architekturell vollständig umgesetzten Single Responsibility Prinzip, einer auf die Fachobjekte zentrierten Architektur.
The naked objects pattern has relevance to several other disciplines and/or trends, including:


;[[Agile Softwareentwicklung]]: Naked Objects unterstützt die Techniken der Agilen Softwareentwicklung auf verschiedene Art und Weise - insbesondere durch die Unterstützung iterativer Umsetzung und Einbeziehung der Anwender in den Anforderungsprozess. Die oben beschriebene Umsetzung von Naked Objects im Department of Social and Family Affairs brachte demnach auch positive Erkenntnisse zum Einsatz von Naked Objects in Agilen Softwareentwicklungsprojekten.<ref>{{Literatur | Autor=Richard Pawson, Vincent Wade | Titel=Agile Development Using Naked Objects | Sammelwerk=4th International Conference, XP 2003 Genova, Italy, May 25–29, 2003 Proceedings | Band=Extreme Programming and Agile Processes in Software Engineering | Nummer=2675 | Verlag=Springer | Ort=Berlin / Heidelberg | Jahr=2003 | ISBN=978-3-540-40215-2 | ISSN=1611-3349 | Originalsprache=Englisch | Online=http://springerlink.metapress.com/content/0k5ek82ced3a433e/?p=166f28926f6047ef80c7ff4c4c307d64&pi=12 | DOI=10.1007/3-540-44870-5_13 | Zugriff=2010-03-21}}</ref>
;Object storage mechanisms: [[Object-relational mapping]], [[object database]]s, and [[object persistence]] are all concerned with eliminating the need to write a conventional [[Data access layer]] underneath the domain objects. These patterns are complementary and potentially synergistic with the naked objects pattern, which is concerned with eliminating the need to write layers above the domain objects.


;[[Modellgetriebene Softwareentwicklung]] und [[Model Driven Architecture]] (MDA): Im Gegensatz zu Modellgetriebener Softwareentwicklung setzt Naked Objects stark auf ein kontinuierlich evolvierendes Modell welches durch laufendes [[Refactoring]] verbessert wird. Obwohl der Naked Objects Ansatz auch nicht den strikten Definitionen von Modellgetriebener Softwareentwicklung entspricht, haben diese Ansätze dennoch viele gemeinsame Ziele.<ref>{{Literatur | Autor=Dan Haywood | Herausgeber=TheServerSide.com | Titel=MDA: Nice idea, shame about the ... | Jahr=2004 | Monat=Mai | Tag=1 | Originalsprache=Englisch | Online=http://www.theserverside.com/news/1365166/MDA-Nice-idea-shame-about-the | Zugriff=2010-03-21}}</ref>
;[[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. The DSFA experience (described above) was probably also the largest application of agile software development techniques within a public-sector organisation, worldwide<ref name="agile">Pawson, R and Wade, V, Agile Development using Naked Objects, Extreme Programming and Agile Processes in Software Engineering
4th International Conference, XP 2003 Genova, Italy, [http://springerlink.metapress.com/content/qrckaetvtxbn Proceedings]</ref>.


;[[Domain-Driven Design]]: Domain-Driven Design (DDD) ist kein Architekturmuster wie Naked Objects, sondern eine Vorgehensweise bei der Modellierung der Fachlogik. Wie Naked Objects geht DDD davon aus, dass die gesamte Fachlogik in Fachobjekten abzubilden ist. Da sich Domain-Driven Design ausschließlich mit der Fachlogik beschäftigt, stellt es nicht die Forderung, dass die Benutzerschnittstelle eine direkte Abbildung der Fachobjekte sei. Diese Forderung von Naked Objects erleichtert jedoch die Umsetzung von DDD, da das Fachmodell dadurch für die Anwender und Analytiker wesentlich besser sichtbar wird, was insbesondere auch zur Verbreitung der von DDD geforderten [[Domain-Driven Design#Ubiquitäre Sprache|Ubiquitären Sprache]] beitragt.<ref name="haywood">{{Literatur | Autor=Dan Haywood | Herausgeber=Pragmatic Programmers | Titel=Domain-Driven Design using Naked Objects | Verlag=Pragmatic Programmers | Jahr=2009 | Monat=Dezember| Tag=2 | ISBN=978-1934356449 | Originalsprache=Englisch | Online=[http://www.pragprog.com/titles/dhnako/domain-driven-design-using-naked-objects Domain-Driven Design using Naked Objects]}}</ref>
;[[Domain-Driven Design]]: Domain-Driven Design (DDD) ist kein Architekturmuster wie Naked Objects, sondern eine Vorgehensweise bei der Modellierung der Fachlogik. Wie Naked Objects geht DDD davon aus, dass die gesamte Fachlogik in Fachobjekten abzubilden ist. Da sich Domain-Driven Design ausschließlich mit der Fachlogik beschäftigt, stellt es nicht die Forderung, dass die Benutzerschnittstelle eine direkte Abbildung der Fachobjekte sei. Diese Forderung von Naked Objects erleichtert jedoch die Umsetzung von DDD, da das Fachmodell dadurch für die Anwender und Analytiker wesentlich besser sichtbar wird, was insbesondere auch zur Verbreitung der von DDD geforderten [[Domain-Driven Design#Ubiquitäre Sprache|Ubiquitären Sprache]] beitragt.<ref name="haywood">{{Literatur | Autor=Dan Haywood | Herausgeber=Pragmatic Programmers | Titel=Domain-Driven Design using Naked Objects | Verlag=Pragmatic Programmers | Jahr=2009 | Monat=Dezember| Tag=2 | ISBN=978-1934356449 | Originalsprache=Englisch | Online=[http://www.pragprog.com/titles/dhnako/domain-driven-design-using-naked-objects Domain-Driven Design using Naked Objects]}}</ref>

;[[Model-driven architecture]] (MDA): Although naked objects does not conform to the strict definition of MDA, it shares many of the same goals. Dan Haywood has argued that naked objects is a more effective approach to achieving those goals<ref name="mda">Haywood, D (2004) [http://www.theserverside.com/tt/articles/article.tss?l=MDA_Haywood MDA: Nice idea, shame about the...]</ref>.


== Frameworks ==
== Frameworks ==
Zeile 100: Zeile 97:
[[Kategorie:Vorgehensmodell (Software)]]</nowiki>
[[Kategorie:Vorgehensmodell (Software)]]</nowiki>


[[en:Naked Objects]]
[[en:Naked objects]]
[[it:Naked objects]]
[[it:Naked objects]]
[[ru:Naked objects]]
[[ru:Naked objects]]

Version vom 21. März 2010, 11:04 Uhr

Dieser Importartikel ist fälschlicherweise im Artikelnamensraum. Bitte verschiebe die Seite oder entferne diesen Baustein.
Dieser Artikel (Naked Objects) ist im Entstehen begriffen und noch nicht Bestandteil der freien Enzyklopädie Wikipedia.
Wenn du dies liest:
  • Der Text kann teilweise in einer Fremdsprache verfasst, unvollständig sein oder noch ungeprüfte Aussagen enthalten.
  • Wenn du Fragen zum Thema hast, nimm am besten Kontakt mit den Autoren auf.
Wenn du diesen Artikel überarbeitest:
  • Bitte denke daran, die Angaben im Artikel durch geeignete Quellen zu belegen und zu prüfen, ob er auch anderweitig den Richtlinien der Wikipedia entspricht (siehe Wikipedia:Artikel).
  • Nach erfolgter Übersetzung kannst du diese Vorlage entfernen und den Artikel in den Artikelnamensraum verschieben. Die entstehende Weiterleitung kannst du schnelllöschen lassen.
  • Importe inaktiver Accounts, die länger als drei Monate völlig unbearbeitet sind, werden gelöscht.
Vorlage:Importartikel/Wartung-2010-03

Naked Objects ist ein Architekturmuster aus dem Bereich der Softwaretechnik. Es definiert sich durch die folgenden drei Prinzipien:

  1. Die Businesslogik sollte vollständig durch Fachobjekten umgesetzt sein.
  2. Die Grafische Benutzeroberfläche sollte eine sogenannte Objektorientierte Benutzeroberfläche (OOUI), also eine direkte Repräsentation der Fachobjekte sein. Fachobjekte ermöglichen - durch Erzeugung oder Suche von Fachobjekten, sowie Aufruf von Methoden auf diesen - alle Benutzerinteraktionen.
  3. Die Benutzeroberfläche sollte vollständig automatisch aus den Fachobjekten generiert werden können.

Damit wird eine klare Trennung zwischen Fachlogik und Darstellungslogik erreicht, was insbesondere das Single Responsibility Prinzip unterstützt.

Das Naked Objects Architekturmuster wurde erstmals auf der OOPSLA 2001 Konferenz unter dem Namen "Expressive Systems: A Radical Approach to Business Systems Design" von Richard Pawson und Simon Dobson vorgestellt.[1][2] Später wurde es von Richard Pawson in seiner Dissertation im Detail beschrieben.[3]

Naked Objects wird oft mit dem Model View Controller (MVC) Architekturmuster verglichen. Das Vorwort der Dissertation - geschrieben von Trygve Reenskaug, dem Entdecker von MVC - beschreibt, dass Naked Objects näher der ursprünglichen Idee von MVC liegt als die meisten Interpretationen und Implementierungen von MVC.

Ziele

Die ersten beiden Prinzipien ("Vollständige Abbilder der Businesslogik in Fachobjekten" sowie "Direkte Repräsentation der Benutzeroberfläche durch Fachobjekte") sind nicht neu und in der Informatik auch teilweise verbreitet. Sie basieren auf einer kompromisslosen Interpretation des Datenkapselungprinzips und einem eher unüblichen Ansatz zur Erstellung Grafischer Benutzeroberflächen. Erst die Kombination der ersten beiden Prinzipien und ihre logische Fortführung im dritten Prinzip (die automatische Generierung des GUIs) unterstützen die Ziele des Naked Objects Architekturmusters:

Verbesserte Anforderungserhebung
Durch den Einsatz von Naked Objects werden die Fachklassen und ihre Funktionen direkt auf der Benutzeroberfläche sichtbar. Damit wird die Verwendung einer gemeinsamen Sprache (Ubiquitäre Sprache) insbesondere zwischen Anwendern (der Benutzeroberfläche), Analytikern (der Anforderungen) und Entwicklern (der Benutzeroberfläche und der Fachklassen) erleichtert. Diese gemeinsame Sprache hilft dem Prozess der Erhebung der Anforderungen enorm. Kombiniert mit den weiteren Vorteilen von Naked Objects wird es damit möglich funktionale Prototypen gemeinsam mit den Anwendern zu entwickeln.
Produktivere Softwareentwicklung
Beim Einsatz von Naked Objects und einem entsprechenden Entwicklungswerkzeug entfällt das meist manuelle und oft nicht triviale Mapping zwischen Grafischer Benutzeroberfläche und Fachlogikschicht. Die Dissertation von Richard Pawson zu Naked Objects enthält beispielsweise zwei Implementierungen derselben Applikation: Eine basierend auf einer konventionellen 4-Schichtigen Architektur, die andere basierend auf Naked Objects.[3]
Agilere Softwareentwicklung
Fachliche Anforderungsänderungen können mittels Naked Objects wesentlich rascher umgesetzt werden. Dies liegt vor allem daran, dass Naked Objects das Single Responsibility Prinzip unterstützt und Fachlogik und Eingabelogik klar voneinander getrennt sind. Sich ändernde Anforderungen müssen daher nicht neben der Fachlogik auch in der Benutzeroberfläche umgesetzt werden, was die Produktivität in agilen Softwareentwicklungsprojekten fördert.
Höhere Qualität in Architektur und Fachlogik
Damit Software mittels Naked Objects Architekturmuster umgesetzt werden kann ist es Notwendig ein Fachmodell zu entwerfen, welches sich 1:1 auf die Benutzeroberfläche abbilden lässt. Dadurch wird sichergestellt das das Fachmodell auch tatsächlich den Benutzeranforderungen gerecht wird. Durch die strikt erzwungene Trennung von Fachlogik und Eingabelogik wird eine korrektere Architektur erzwungen.
Durch die damit erreichte höhere Qualität in Architektur und Fachlogik wird die Änderbarkeit der Applikation gesteigert, was wiederum für die Agilität in Softwareentwicklung und Wartung hilfreich ist.
Einfachere Umsetzung Objektorientierter Benutzeroberflächen (OOUIs)
Durch die Generierung der Benutzeroberflächen aus dem Fachmodell werden automatisch Objektorientierte Benutzeroberflächen geschaffen. Objektorientierte Benutzeroberflächen wiederum versprechen bessere Gestaltungsmöglichkeiten insbesondere auf Grund des Hauptwort-Zeitwort Stils für Interaktionen (anstatt des sonst üblichen Zeitwort-Hauptwort Stils).[4]

Nachteile und Kritik

Eignung Objektorientierter Benutzeroberflächen
Die bei Naked Objects generierten Objektorientierten Benutzeroberflächen (OOUIs) sind insbesondere für sogenannte Souveräne Applikationen, Applikationen welche die Aufmerksamkeit der Benutzer für längere Zeitperioden auf sich ziehen, geeignet. Für sogenannte Transiente Applikationen, das sind kleine, für einzelne temporäre Benutzeranforderungen geschaffene Applikationen wie beispielsweise "Installer", "Taschenrechner" oder für sich alleinstehende Dialoge, sind Objektorientierte Benutzeroberflächen und somit der Naked Objects Ansatz nicht geeignet.
Vollständige Abbildung der Fachlogik in Fachobjekten
Insbesondere im Umfeld von Domain-Driven Design wird die Sinnhaftigkeit des auch von DDD angestrebten Ziels, die Fachlogik vollständig in Fachobjekten abzubilden angezweifelt und andere Stellen (beispielsweise GUI oder Persistenz) vorgeschlagen.
Automatisierte Generierung Objektorientierter Benutzeroberflächen
Oftmals wird angezweifelt, ob die automatisierte Generierung Objektorientierter Benutzeroberflächen den Ansprüchen der Benutzer gerecht werden kann.[5]

All diese Nachteile und Kritikpunkte beziehen sich nicht ausschließlich auf Naked Objects, sondern ebenso auf die in Naked Objects kombinierten Ideen.

Einsatz

Der vermutlich erste operationale Einsatz des Naked Objects Architekturmusters erfolgte im November 2002 durch das Department of Social and Family Affairs (Sozialministerium) in Irland. Die umgesetzte Applikation für die Administration von Kinderbeihilfen war eine von mehreren Enterprise Applikationen des Department of Social and Family Affairs, welche mittels Naked Objects umgesetzt wurden. Die dabei gemachten Erfahrungen, inklusive der Raktionen der Anwender hat Richard Pawson in seiner Dissertation verarbeitet.[3] Insbesondere die durch Naked Objects erreichte Wiederverwendbarkeit der Fachobjekte über mehrere Anforderungsbereiche wurde positiv bewertet.

Die dabei eingesetzte initiale Naked Objects Architektur wurde von Fujitsu entwickelt[6], aber später auf das Open Source Framework "Naked Objects for Java" portiert und weiterentwickelt.[7].

Vergleich zu anderen Technologien

Objektorientierte Persistenzmechanismen
Objektorientierte Persistenzmechanismen wie Objektrelationale Abbildung oder Objektdatenbanken beschäftigen sich mit dem Ersatz der Datenzugriffsschicht unter den Fachobjekten. Sie ergänzen somit das Naked Objects Architekturmuster und führen zu einem architekturell vollständig umgesetzten Single Responsibility Prinzip, einer auf die Fachobjekte zentrierten Architektur.
Agile Softwareentwicklung
Naked Objects unterstützt die Techniken der Agilen Softwareentwicklung auf verschiedene Art und Weise - insbesondere durch die Unterstützung iterativer Umsetzung und Einbeziehung der Anwender in den Anforderungsprozess. Die oben beschriebene Umsetzung von Naked Objects im Department of Social and Family Affairs brachte demnach auch positive Erkenntnisse zum Einsatz von Naked Objects in Agilen Softwareentwicklungsprojekten.[8]
Modellgetriebene Softwareentwicklung und Model Driven Architecture (MDA)
Im Gegensatz zu Modellgetriebener Softwareentwicklung setzt Naked Objects stark auf ein kontinuierlich evolvierendes Modell welches durch laufendes Refactoring verbessert wird. Obwohl der Naked Objects Ansatz auch nicht den strikten Definitionen von Modellgetriebener Softwareentwicklung entspricht, haben diese Ansätze dennoch viele gemeinsame Ziele.[9]
Domain-Driven Design
Domain-Driven Design (DDD) ist kein Architekturmuster wie Naked Objects, sondern eine Vorgehensweise bei der Modellierung der Fachlogik. Wie Naked Objects geht DDD davon aus, dass die gesamte Fachlogik in Fachobjekten abzubilden ist. Da sich Domain-Driven Design ausschließlich mit der Fachlogik beschäftigt, stellt es nicht die Forderung, dass die Benutzerschnittstelle eine direkte Abbildung der Fachobjekte sei. Diese Forderung von Naked Objects erleichtert jedoch die Umsetzung von DDD, da das Fachmodell dadurch für die Anwender und Analytiker wesentlich besser sichtbar wird, was insbesondere auch zur Verbreitung der von DDD geforderten Ubiquitären Sprache beitragt.[10]

Frameworks

Inzwischen gibt es für verschiedene Programmiersprachen eine Reihe von Frameworks welche das Naked Objects Architekturmuster unterstützen:

  • Java:
    • Domain Object Explorer
    • JMatter, ein OpenSource (GPL) Java Framework für die Erstellung von Business Applikationen für Arbeitsgruppen
    • Naked Objects for Java
    • Sanssouci
    • Trails
    • Lablz - Data objects as Web Applications
  • .Net:
    • dotObjects
    • Naked Objects for .NET
    • TrueView for .NET
  • C++:
    • Typical Objects for C++

Literatur

  • Naked Objects - Startseite zu Naked Objects for Java mit allgemeinen Infos zu Naked Objects

Einzelnachweise

  1. OOPSLA 2001 Technical Program. Abgerufen am 20. März 2010 (englisch): „In expressive systems, core business objects show through directly to users, and all user actions are initiated through a noun-verb style of interaction on those objects. Having users and developers speak a common language improves the process of requirements analysis and prototype development.“
  2. Richard Pawson, Robert Matthews: Naked objects: a technique for designing more expressive systems. In: Association for Computing Machinery (Hrsg.): ACM SIGPLAN Notices. Band 36, Nr. 12, Dezember 2001, ISSN 0362-1340, S. 61 - 67 (acm.org [abgerufen am 20. März 2010]).
  3. a b c Richard Pawson: Naked Objects. Hrsg.: Department of Computer Science, Trinity College, University of Dublin. Juni 2004 (nakedobjects.org [PDF; abgerufen am 20. März 2010]).
  4. Jef Raskin: The Humane Interface. New Directions for Designing Interactive Systems. Addison-Wesley Longman, Amsterdam 2000, ISBN 978-0-201-37937-2.
  5. Larry L. Constantine: The Emperor Has No Clothes: Naked Objects Meet the Interface. Hrsg.: Constantine & Lockwood Ltd. Dezember 2002 (foruse.com [PDF; abgerufen am 20. März 2010]).
  6. Fujitsu: The Department of Social and Family Affairs. Abgerufen am 21. März 2010 (englisch): „Fujitsu designed a solution that achieves the department’s vision, namely to create business components as the basis for building flexible and responsive business applications in Naked Objects Architecture.“
  7. Department of Social & Family Affairs: The ongoing development of the Department's Service Delivery Modernisation programme. 23. April 2007, abgerufen am 21. März 2010 (englisch).
  8. Richard Pawson, Vincent Wade: Agile Development Using Naked Objects. In: 4th International Conference, XP 2003 Genova, Italy, May 25–29, 2003 Proceedings. Extreme Programming and Agile Processes in Software Engineering, Nr. 2675. Springer, 2003, ISBN 978-3-540-40215-2, ISSN 1611-3349, doi:10.1007/3-540-44870-5_13 (metapress.com [abgerufen am 21. März 2010]).
  9. Dan Haywood: MDA: Nice idea, shame about the ... Hrsg.: TheServerSide.com. 1. Mai 2004 (theserverside.com [abgerufen am 21. März 2010]).
  10. Dan Haywood: Domain-Driven Design using Naked Objects. Hrsg.: Pragmatic Programmers. Pragmatic Programmers, 2009, ISBN 978-1-934356-44-9 (Domain-Driven Design using Naked Objects).

Siehe auch


[[Kategorie:Entwurfsmuster]] [[Kategorie:Softwarearchitektur]] [[Kategorie:Softwaretechnik]] [[Kategorie:Objektorientierte Programmierung]] [[Kategorie:Vorgehensmodell (Software)]]