Nøgne genstande

Image
Sammenligning af konventionel lagdelt arkitektur (til venstre) versus lagdelt arkitektur med nøgne objekter

Nøgne objekter er et arkitekturmønster fra softwareteknologi . Det er defineret af følgende tre principper:

  1. Al forretningslogik skal være indkapslet på specialistobjekterne. Dette princip gælder ikke kun for nøgne genstande: det er bare en eftertrykkelig forpligtelse til indkapsling.
  2. Den grafiske brugergrænseflade skal være en direkte repræsentation af de tekniske objekter, idet alle brugerhandlinger eksplicit består i oprettelse eller hentning af tekniske objekter og / eller indkaldelse af metoder til disse objekter. Dette princip er heller ikke unikt for nøgne genstande; det er bare en vis fortolkning af en Object Oriented User Interface (OOUI). Den oprindelige idé om designmønsteret for de nøgne genstande stammer fra kombinationen af ​​disse to, som danner det tredje princip:
  3. Brugergrænsefladen skal oprettes 100% automatisk ud fra definitionen af ​​de tekniske objekter. Dette kan gøres ved hjælp af forskellige teknologier, herunder kildekodegenerering; Implementeringer af det nøgne objektdesignmønster til dato har favoriseret refleksionsteknikken . Dette opnår en klar adskillelse mellem teknisk logik og displaylogik, hvilket især understøtter princippet om enkeltansvar .

Arkitektonmønsteret Naked Objects blev første gang præsenteret i 2001 på OOPSLA -konferencen under navnet Expressive Systems: A Radical Approach to Business Systems Design af Richard Pawson og Simon Dobson. Det blev senere beskrevet detaljeret af Richard Pawson i sin afhandling.

Nøgne objekter sammenlignes ofte med Model View Controller (MVC) -arkitekturmønsteret. Forordet til afhandlingen - skrevet af Trygve Reenskaug , opfinderen af ​​MVC - beskriver, at nøgne genstande er tættere på den oprindelige idé om MVC end de fleste fortolkninger og implementeringer af MVC.

mål

De to første principper ("Komplette billeder af forretningslogikken i specialistobjekter" og "Direkte repræsentation af brugergrænsefladen gennem specialistobjekter") er ikke nye og er også delvist udbredt inden for it. De er baseret på en kompromisløs fortolkning af datakapslingsprincippet og en ret usædvanlig tilgang til at skabe grafiske brugergrænseflader . Kun kombinationen af ​​de to første principper og deres logiske fortsættelse i det tredje princip (den automatiske generation af GUI) understøtter målene med arkitekturmønsteret for nøgne objekter:

Forbedrede krav fremkaldelse
Ved at bruge nøgne objekter er specialistklasserne og deres funktioner direkte synlige på brugergrænsefladen. Dette letter brugen af ​​et fælles sprog ( allestedsnærværende sprog ), især mellem brugere (brugergrænsefladen), analytikere (kravene) og udviklere (brugergrænsefladen og specialklasserne). Dette fælles sprog hjælper processen med krav fremkaldelse enormt. Kombineret med de andre fordele ved nøgne objekter bliver det muligt at udvikle funktionelle prototyper sammen med brugere.
Mere produktiv softwareudvikling
Når man bruger nøgne objekter og et tilsvarende udviklingsværktøj, er den for det meste manuelle og ofte ikke -private kortlægning mellem den grafiske brugergrænseflade og det tekniske logiske lag ikke længere nødvendig. Richard Pawsons afhandling om nøgne genstande indeholder for eksempel to implementeringer af den samme applikation: den ene er baseret på en konventionel fire-lags arkitektur, den anden baseret på nøgne objekter.
Mere smidig softwareudvikling
Tekniske ændringer af krav kan implementeres meget hurtigere ved hjælp af nøgne genstande. Dette skyldes hovedsageligt, at nøgne genstande understøtter princippet om enkeltansvar, og at forretningslogik og inputlogik er klart adskilt fra hinanden. Ændrede krav behøver derfor ikke at blive implementeret i brugergrænsefladen ud over den tekniske logik, der fremmer produktivitet i agile softwareudviklingsprojekter.
Mange tekniske eksperter er imidlertid overbeviste om, at der ikke længere er nogen agil softwareudvikling, når processerne og metoderne også modelleres. Det er en grundlæggende forståelse af agile metoder for ikke at arbejde efter stive processer og metoder (problemmønstre), men hurtigt at kassere dem i hurtigt skiftende iterationer. Den grundlæggende kontrovers er og var domæneteknik versus agile metoder, dvs. opportunistiske (agile) versus strategiske (formelle) metoder.
Højere kvalitet inden for arkitektur og teknisk logik
For at software kan implementeres ved hjælp af arkitektoniske mønstre med nøgne objekter, er det nødvendigt at designe en domænemodel, der kan kortlægges 1: 1 på brugergrænsefladen. Dette sikrer, at domænemodellen rent faktisk opfylder brugernes krav. Den strengt håndhævede adskillelse af forretningslogik og inputlogik håndhæver en mere korrekt arkitektur.
På grund af den højere kvalitet i arkitektur og teknisk logik opnået på denne måde øges applikationens foranderlighed, hvilket igen er nyttigt for smidighed i softwareudvikling og vedligeholdelse, med forbehold om, at smidighed ikke længere eksisterer.
Lettere implementering af objektorienterede brugergrænseflader (OOUI)
Ved at generere brugergrænsefladerne ud fra domænemodellen oprettes objektorienterede brugergrænseflader automatisk. Objektorienterede brugergrænseflader lover på den anden side bedre designmuligheder, især på grund af substantiv-substantiv-stil til interaktioner (i stedet for den sædvanlige verb-substantiv-stil).

Ulemper og kritik

Egnethed til objektorienterede brugergrænseflader
De objektorienterede brugergrænseflader (OOUI), der genereres af nøgne objekter, er særligt velegnede til såkaldte suveræne applikationer , applikationer, der tiltrækker brugernes opmærksomhed i længere perioder. For såkaldte forbigående applikationer , dvs. små applikationer, der er oprettet til individuelle midlertidige brugerkrav, f.eks. Installatører , lommeregner eller enkeltstående dialoger, objektorienterede brugergrænseflader og dermed tilgangen til nøgne objekter er ikke egnede.
Automatiseret generation af objektorienterede brugergrænseflader
Det tvivler ofte på, at den automatiserede generation af objektorienterede brugergrænseflader kan opfylde brugernes krav.

Alle disse ulemper og kritik vedrører ikke udelukkende nøgne genstande, men også ideerne kombineret i nøgne genstande.

mission

Sandsynligvis var den første operationelle brug af Naked Objects arkitektoniske mønster i november 2002 af Department of Social and Family Affairs i Irland. Den implementerede ansøgning om administration af børnepenge var en af ​​flere virksomhedsapplikationer fra Institut for Sociale og Familiespørgsmål, som blev implementeret ved hjælp af nøgne genstande. Richard Pawson bearbejdede de opnåede erfaringer, herunder brugernes reaktioner, i sin afhandling. Især blev genanvendeligheden af ​​de tekniske objekter opnået gennem nøgne genstande på tværs af flere kravområder vurderet positivt. Den oprindelige arkitektur for nøgne objekter, der blev brugt, blev udviklet af Fujitsu, men blev senere portet til open source -rammerne Naked Objects for Java og videreudviklet.

Forholdet til andre teknologier

Objektorienterede persistensmekanismer
Objektorienterede persistensmekanismer såsom objektrelationel kortlægning eller objektdatabaser beskæftiger sig med udskiftning af datatilgangslaget under de tekniske objekter. De supplerer således det nøgne objekts arkitekturmønster og fører til et arkitektonisk fuldt implementeret enkeltansvarsprincip, en arkitektur centreret om specialistobjekterne.
Agil softwareudvikling
Nogle grupper mener, at Naked Objects understøtter teknikkerne til agil softwareudvikling på forskellige måder - især ved at støtte iterativ implementering og involvere brugere i kravprocessen. Den ovenfor beskrevne implementering af nøgne objekter i Institut for Sociale og Familiespørgsmål bragte derfor også positiv indsigt i brugen af ​​nøgne genstande i agile softwareudviklingsprojekter.
Et andet synspunkt frembringes af repræsentanter for det meget funktionelle system og konceptbeskrivelser af krav og domæneteknik. Et system udvikles jo mere adræt, jo mere ikke-funktionelt (system-til-miljø-forhold) er system- eller konceptbeskrivelsen. Derfor modsiger agile metoder domænelaget af nøgne objekter. Aktuel forskning har til formål at skalere denne grænse mellem de to med metoder, der - logisk tvingende - med stigende modenhed og kapacitet (kvalitet) igen kun er en funktionel beskrivelse (system -til -system -forhold). Formålet med Requirements (RE) og Systems Engineering (SE) er at øge modenhedsgraden fra et stadig ret ikke-funktionelt koncept til en funktionel systembeskrivelse, der kan implementeres, måles, testes og endelig anvendes og forbedres-såkaldt konceptualisering. Derfor ser man etableringen af ​​agile metoder som XP, Scrum og andre som status quo for kaos til at opretholde sig selv og ikke, som krævet af professionel RE, gradvist at demontere det gennem domæneteknik, såsom gennem domænelag i nøgen objekter, så det er lidt behov for agile metoder. Derfor er nogle eksperter af den opfattelse, at professionel RE slet ikke er forenelig med agile metoder som Scrum eller XP.
Domænedrevet design
Domain-driven design (DDD) er ikke et arkitekturmønster som nøgne objekter, men en procedure til modellering af den tekniske logik. Ligesom nøgne objekter antager DDD, at hele forretningslogikken skal kortlægges i forretningsobjekter. Da domænedrevet design udelukkende omhandler den tekniske logik, kræver det ikke, at brugergrænsefladen er en direkte repræsentation af de tekniske objekter. Dette krav om nøgne objekter letter imidlertid implementeringen af ​​DDD, da det gør domænemodellen meget mere synlig for brugere og analytikere, hvilket især også bidrager til udbredelsen af ​​det allestedsnærværende sprog , som DDD kræver .

Rammer

Der er nu en række rammer for forskellige programmeringssprog, der understøtter arkitekturmønsteret for nøgne objekter:

  • Java :
    • OpenXava
    • NoWicket, en open source -ramme til webapplikationer baseret på Apache Wicket
    • gengui, en open source -ramme til swing -applikationer
    • Domain Object Explorer
    • JMatter, en open source -ramme til oprettelse af forretningsapplikationer til arbejdsgrupper
    • Apache Isis
    • Sanssouci
    • Dynamo
    • Lablz - Dataobjekter som webapplikationer
  • .NET :
    • dotObjects
    • Nøgne objekter til .NET
    • TrueView til .NET
  • C ++ :
    • Typiske objekter for C ++
  • PHP :
    • NøgenPhp

Se også

litteratur

Weblinks

  • Nøgne objekter - Hjemmeside for nøgne objekter til Java med generel information om nøgne objekter

Individuelle beviser

  1. ^ OOPSLA 2001 teknisk program. Hentet den 20. marts 2010 (engelsk): "I udtryksfulde systemer viser kerneforretningsobjekter sig direkte til brugerne, og alle brugerhandlinger initieres gennem en substantiv-verb stil af interaktion på disse objekter. At have brugere og udviklere til at tale et fælles sprog forbedrer processen med kravanalyse og prototypeudvikling. "
  2. ^ Richard Pawson, Robert Matthews: Nøgne genstande: en teknik til at designe mere udtryksfulde systemer . I: Association for Computing Machinery (red.): ACM SIGPLAN -meddelelser . tape 36 , nej. 12. december 2001, ISSN  0362-1340 , s. 61-67 (engelsk, acm.org [åbnet 20. marts 2010]).
  3. ^ A b c Richard Pawson: Nøgne genstande . Red.: Institut for Datalogi, Trinity College, University of Dublin. Juni 2004 (engelsk, nakedobjects.net [PDF; adgang 20. marts 2010]).
  4. Jef Raskin: The Humane Interface . Nye anvisninger til design af interaktive systemer. Addison-Wesley Longman, Amsterdam 2000, ISBN 978-0-201-37937-2 (engelsk).
  5. ^ Larry L. Constantine: Kejseren har ingen tøj: Nøgne genstande møder grænsefladen . Constantine & Lockwood, december 2002 (engelsk, foruse.com [PDF; åbnet 20. marts 2010]).
  6. ^ Fujitsu: Institut for Sociale og Familiespørgsmål. (Ikke længere tilgængelig online.) Arkiveret fra originalen den 29. november 2007 ; Hentet den 21. marts 2010 (engelsk): "Fujitsu designede en løsning, der opfylder afdelingens vision, nemlig at skabe forretningskomponenter som grundlag for at opbygge fleksible og lydhøre forretningsapplikationer i Naked Objects Architecture."
  7. Institut for Sociale & Familiespørgsmål: Den løbende udvikling af afdelingens moderniseringsprogram for serviceydelser. (Ikke længere tilgængelig online.) 23. april 2007, arkiveret fra originalen den 24. juli 2012 ; tilgås den 21. marts 2010 (engelsk). Info: Arkivlinket blev indsat automatisk og er endnu ikke kontrolleret. Kontroller venligst det originale og arkivlink i henhold til instruktionerne, og fjern derefter denne meddelelse. @1@ 2Skabelon: Webachiv / IABot / www.e-tenders.gov.ie
  8. ^ Richard Pawson, Vincent Wade: Agil udvikling ved hjælp af nøgne objekter . I: 4. internationale konference, XP 2003 Genova, Italien, 25.-29. Maj, 2003 Proceedings . Ekstrem programmering og agile processer i softwareteknik, nr. 2675 . Springer, 2003, ISBN 978-3-540-40215-2 , ISSN  1611-3349 , doi : 10.1007 / 3-540-44870-5_13 (engelsk, metapress.com [åbnet 21. marts 2010]).
  9. Krav Teknik - Axel van Lamswerde 2009, John Wiley & Sons Ltd (Publisher), 978-0-470-01270-3 (ISBN) - https://www.lehmanns.de/shop/mathematik-informatik/6230206- 9780470012703-krav-teknik
  10. Software Product Line Engineering - Pohl, Böckle, van der Linde, 2005. Springer Vlg. - http://www.springer.com/us/book/9783540243724
  11. Analyse af systemkrav . 2. udgave. Elsevier (udgiver), 2013, ISBN 978-0-12-417107-7 , elsevier.com
  12. ^ Dan Haywood: Domænedrevet design ved hjælp af nøgne objekter . Red.: Pragmatiske programmører. Pragmatiske programmører, 2009, ISBN 978-1-934356-44-9 (engelsk, domænedrevet design ved hjælp af nøgne objekter ).
  13. NoWicket på GitHub.com
  14. Gengui på Sourceforge.net