Technopedia Center
PMB University Brochure
Faculty of Engineering and Computer Science
S1 Informatics S1 Information Systems S1 Information Technology S1 Computer Engineering S1 Electrical Engineering S1 Civil Engineering

faculty of Economics and Business
S1 Management S1 Accountancy

Faculty of Letters and Educational Sciences
S1 English literature S1 English language education S1 Mathematics education S1 Sports Education
  • Registerasi
  • Brosur UTI
  • Kip Scholarship Information
  • Performance
  1. WeltenzyklopÀdie
  2. Naked Objects
Naked Objects 👆 Click Here!
aus Wikipedia, der freien EnzyklopÀdie
Vergleich herkömmliche Schichtenarchitektur (links) versus Schichtenarchitektur mit Naked Objects

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

  1. Alle GeschĂ€ftslogik sollte auf die Fachobjekte gekapselt werden. Dieses Prinzip gilt nicht nur fĂŒr Naked Objects: es ist nur ein nachdrĂŒckliches Bekenntnis zur Kapselung.
  2. Die grafische BenutzeroberflĂ€che soll eine direkte Darstellung der Fachobjekte sein, wobei alle Benutzeraktionen explizit in der Erstellung oder dem Abruf von Fachobjekten und/oder Aufrufen von Methoden fĂŒr diese Objekte bestehen. Dieses Prinzip ist auch nicht einzigartig fĂŒr Naked Objects; es ist nur eine bestimmte Interpretation einer objektorientierte BenutzeroberflĂ€che (OOUI). Die ursprĂŒngliche Idee des Entwurfsmusters der Naked Objects ergibt sich aus der Kombination dieser beiden, die das dritte Prinzip bilden:
  3. Die Benutzerschnittstelle soll zu 100 % automatisch aus der Definition der Fachobjekte erstellt werden. Dies kann unter Verwendung verschiedener Technologien einschließlich der Source-Code-Generation durchgefĂŒhrt werden; Implementierungen des Entwurfsmusters der Naked Objects bis heute haben die Technik der Reflexion begĂŒnstigt. Damit wird eine klare Trennung zwischen Fachlogik und Darstellungslogik erreicht, was insbesondere das Single-Responsibility-Prinzip unterstĂŒtzt.

Das Naked-Objects-Architekturmuster wurde erstmals im Jahr 2001 auf der OOPSLA-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 Erfinder von MVC â€“ beschreibt, dass Naked Objects nĂ€her an der ursprĂŒnglichen Idee von MVC liegt als die meisten Interpretationen und Implementierungen von MVC.

Ziele

[Bearbeiten | Quelltext bearbeiten]

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 GUI) unterstĂŒtzen die Ziele des Architekturmusters der Naked Objects:

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 vierschichtigen 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.
Viele Fachexperten sind allerdings der Überzeugung, dass dann keine agile Softwareentwicklung mehr vorliegt, wenn die Prozesse und Methoden mit modelliert werden. Es ist GrundverstĂ€ndnis der agilen Methoden, nicht nach starren Prozessen und Methoden (Problemmustern) zu arbeiten, sondern in rasch wechselnden Iterationen schnell wieder zu verwerfen. Die fundamentale Kontroverse ist und war hierbei Domain Engineering versus agile Methoden, also opportunistische (agile) versus strategische (formale) Methoden.
Höhere QualitÀt in Architektur und Fachlogik
Damit Software mittels Naked-Objects-Architekturmuster umgesetzt werden kann, ist es notwendig ein DomÀnenmodell zu entwerfen, welches sich 1:1 auf die BenutzeroberflÀche abbilden lÀsst. Dadurch wird sichergestellt, dass das DomÀnenmodell 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, mit dem Vorbehalt einer nicht mehr existierenden AgilitĂ€t.
Einfachere Umsetzung objektorientierter BenutzeroberflÀchen (OOUI)
Durch die Generierung der BenutzeroberflĂ€chen aus dem DomĂ€nenmodell 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

[Bearbeiten | Quelltext bearbeiten]
Eignung objektorientierter BenutzeroberflÀchen
Die bei Naked Objects generierten objektorientierten BenutzeroberflĂ€chen (OOUI) 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 alleine stehende Dialoge, sind objektorientierte BenutzeroberflĂ€chen und somit der Naked-Objects-Ansatz nicht geeignet.
Automatisierte Generierung Objektorientierter BenutzeroberflÀchen
Oftmals wird angezweifelt, dass 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

[Bearbeiten | Quelltext bearbeiten]

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 Verwaltung 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 Reaktionen 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]

Zusammenhang mit anderen Technologien

[Bearbeiten | Quelltext bearbeiten]
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
Es wird von einigen Gruppen betrachtet, dass Naked Objects die Techniken der agilen Softwareentwicklung auf verschiedene Art und Weise unterstĂŒtzt – 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]
Eine andere Sichtweise wird von Vertretern der hoch-funktionalen System- und Konzeptbeschreibungen des Requirements und Domain Engineering hervorgebracht. Ein System wird umso agiler entwickelt, je nicht-funktionaler (System-zu-Umgebung-Beziehung) die System- bzw. Konzeptbeschreibung ist. Daher stehen agile Methoden zum Domain Layer von Naked Objects im Widerspruch.[9][10] Die aktuelle Forschung geht dahin, diese Grenze zwischen beiden mit Methoden zu skalieren, was aber – logisch zwingend – mit zunehmender Reife und Fassungsvermögen (QualitĂ€t) wieder nur eine funktionale Beschreibung (System-zu-System-Beziehung) ist. Es ist Ziel des Requirements (RE) und Systems Engineering (SE) den Reifegrad von einem noch recht nicht-funktionalen Konzept hin zu einer funktionalen Systembeschreibung zu erhöhen, die implementiert, gemessen, getestet und schließlich angewendet und verbessert werden kann - sogenannte Konzeptionalisierung.[11] Daher sieht man das Etablieren von agilen Methoden wie XP, Scrum und weiteren als Status quo des Chaos sich selbst zu erhalten und nicht, wie vom professionellen RE gefordert, durch Domain Engineering weiter progressiv abzubauen, wie durch Domain Layern in Naked Objects, so dass es fĂŒr agile Methoden wenig Bedarf besteht. Deshalb sind einige Fachexperten der Meinung, dass professionelles RE mit agilen Methoden wie Scrum oder XP ĂŒberhaupt nicht vereinbar ist.
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 DomĂ€nenmodell dadurch fĂŒr die Anwender und Analytiker wesentlich besser sichtbar wird, was insbesondere auch zur Verbreitung der von DDD geforderten UbiquitĂ€ren Sprache beitrĂ€gt.[12]

Frameworks

[Bearbeiten | Quelltext bearbeiten]

Inzwischen gibt es fĂŒr verschiedene Programmiersprachen eine Reihe von Frameworks, die das Naked-Objects-Architekturmuster unterstĂŒtzen:

  • Java:
    • OpenXava
    • NoWicket, ein Open-Source-Framework fĂŒr Web-Applikationen basierend auf Apache Wicket[13]
    • gengui, ein Open-Source-Framework fĂŒr Swing-Applikationen[14]
    • Domain Object Explorer
    • JMatter, ein Open-Source-Framework fĂŒr die Erstellung von Business Applikationen fĂŒr Arbeitsgruppen
    • Apache Isis
    • Sanssouci
    • Tynamo
    • Lablz - Data objects as Web Applications
  • .Net-Framework:
    • dotObjects
    • Naked Objects for .NET
    • TrueView for .NET
  • C++:
    • Typical Objects for C++
  • PHP:
    • NakedPhp

Siehe auch

[Bearbeiten | Quelltext bearbeiten]
  • Domain-driven Design – durch Naked Objects erweitertes Vorgehensmodell zur Modellierung komplexer Softwaresysteme
  • Architekturmuster – weitere fĂŒr Softwarearchitektur wiederverwendbare Muster
  • Model View Controller – vergleichbares Architekturmuster
  • Softwarearchitektur
  • Grafische BenutzeroberflĂ€che
  • CRUD-Frameworks

Literatur

[Bearbeiten | Quelltext bearbeiten]
  • Richard Pawson, Robert Matthews: Naked Objects. Wiley, 2002, ISBN 978-0-470-84420-5 (englisch, nakedobjects.org [abgerufen am 14. MĂ€rz 2010]). 
  • Dan Haywood: Domain-Driven Design using Naked Objects. Hrsg.: Pragmatic Programmers. Pragmatic Programmers, 2009, ISBN 978-1-934356-44-9 (englisch, Domain-Driven Design using Naked Objects). 

Weblinks

[Bearbeiten | Quelltext bearbeiten]
  • Naked Objects – Startseite zu Naked Objects for Java mit allgemeinen Infos zu Naked Objects

Einzelnachweise

[Bearbeiten | Quelltext bearbeiten]
  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 (englisch, 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 (englisch, nakedobjects.net [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 (englisch). 
  5. ↑ Larry L. Constantine: The Emperor Has No Clothes: Naked Objects Meet the Interface. Constantine & Lockwood, Dezember 2002 (englisch, foruse.com [PDF; abgerufen am 20. MĂ€rz 2010]). 
  6. ↑ Fujitsu: The Department of Social and Family Affairs. Archiviert vom Original (nicht mehr online verfĂŒgbar) am 29. November 2007; 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, archiviert vom Original (nicht mehr online verfĂŒgbar) am 24. Juli 2012; 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 (englisch, metapress.com [abgerufen am 21. MĂ€rz 2010]). 
  9. ↑ Requirements Engineering - Axel van Lamswerde, 2009, John Wiley & Sons Ltd (Verlag), 978-0-470-01270-3 (ISBN) - https://www.lehmanns.de/shop/mathematik-informatik/6230206-9780470012703-requirements-engineering
  10. ↑ Software Product Line Engineering - Pohl, Böckle, van der Linde, 2005. Springer Vlg. - https://www.springer.com/us/book/9783540243724
  11. ↑ System Requirements Analysis. 2. Auflage. Elsevier (Verlag), 2013, ISBN 978-0-12-417107-7, elsevier.com
  12. ↑ Dan Haywood: Domain-Driven Design using Naked Objects. Hrsg.: Pragmatic Programmers. Pragmatic Programmers, 2009, ISBN 978-1-934356-44-9 (englisch, Domain-Driven Design using Naked Objects). 
  13. ↑ NoWicket auf GitHub.com
  14. ↑ Gengui auf Sourceforge.net
Abgerufen von „https://de.wikipedia.org/w/index.php?title=Naked_Objects&oldid=256501222“
Kategorie:
  • Objektorientierte Programmierung

  • indonesia
  • Polski
  • Ű§Ù„ŰčŰ±ŰšÙŠŰ©
  • Deutsch
  • English
  • Español
  • Français
  • Italiano
  • Ù…Ű”Ű±Ù‰
  • Nederlands
  • æ—„æœŹèȘž
  • PortuguĂȘs
  • Sinugboanong Binisaya
  • Svenska
  • ĐŁĐșŃ€Đ°Ń—ĐœŃŃŒĐșа
  • Tiáșżng Việt
  • Winaray
  • äž­æ–‡
  • РуссĐșĐžĐč
Sunting pranala
Pusat Layanan

UNIVERSITAS TEKNOKRAT INDONESIA | ASEAN's Best Private University
Jl. ZA. Pagar Alam No.9 -11, Labuhan Ratu, Kec. Kedaton, Kota Bandar Lampung, Lampung 35132
Phone: (0721) 702022
Email: pmb@teknokrat.ac.id