2009-06-30 15 views
72

Ich wurde beauftragt, einen detaillierten Konstruktionsplan für eine Logistikanwendung zu schreiben, die wir einem Kunden vorschlagen. Mir wurde gesagt, dass es sich um eine datengesteuerte Anwendung handelt. Was bedeutet es, dass eine Anwendung "datengesteuert" ist? Was ist das Gegenteil? Ich kann keine wirklich klare Antwort dafür bekommen, obwohl ich während der Internetsuche viele Leute sehe, die ihre eigenen Beispiele veröffentlichen. Jede Hilfe würde sehr geschätzt werden.Was ist datengesteuerte Programmierung?

+2

ziemlich alle realen Welt pr Die Programmierung ist datengesteuert. –

+12

Der Klassiker * Die Kunst der Unix-Programmierung * hat eine gute Diskussion zu diesem Thema: http://homepage.cs.uri.edu/~thenry/resources/unix_art/ch09s01.html. Stichwort: "Bei der datengesteuerten Programmierung sind die Daten nicht nur der Zustand eines Objekts, sondern ** definiert den Kontrollfluss des Programms **.Wo bei OO die Einkapselung das Hauptanliegen ist, ist die Hauptsorge bei der datengesteuerten Programmierung ** das Schreiben von so wenig festem Code wie möglich **. " – FMc

+2

FMcs Antwort ist für mich die überzeugendste Erklärung und sollte eine Antwort sein, aber ausgearbeitet –

Antwort

74

Datengetriebenes Programme ist ein Programmiermodell, in dem die Daten selbst den Ablauf des Programms steuert und nicht die Programmlogik. Es ist ein Modell, bei dem Sie den Fluss steuern, indem Sie dem Programm verschiedene Datensätze anbieten, wobei die Programmlogik eine generische Form des Flusses oder Zustandsänderungen ist.

Zum Beispiel, wenn Sie das Programm haben, die vier Zustände hat: AUF - AB - STOPP - START

Sie dieses Programm durch das Angebot Eingang (Daten) steuern kann, dass die Zustände darstellt:

  • set1: AB - STOPP - START - STOPP - UP - STOP-
  • set2: AUF - AB - AUF - AB

der Programmcode bleibt gleich, aber die Daten festgelegt (die nicht von einem dynamischen Eingang Typ, aber statisch an den Computer gegeben) steuert den Fluss.

+1

Der Programmierteil schreibt/definiert die " generische Form des Flusses oder der Zustandsänderungen ", habe ich recht? Aber ich kann eine solche" Maschine "in jeder Sprache schreiben, und daran ist nichts Ungewöhnliches, also bekomme ich nichts wirklich raus deiner Antwort. Vielleicht ist die datengesteuerte Programmierung, wenn die Sprache selbst oder eine Bibliothek, es sehr einfach macht, solche Maschinen zu schreiben oder zu machen. Oder vielleicht ist die Definition, dass die Sprache/Bibliothek die Maschinen deklarativ, dh nicht prozedural definiert. –

+1

Auf https://en.wikipedia.org/wiki/Data-driven_programming verwenden sie AWK als ein Beispiel. In AWK werden zwei Dinge geliefert, ein Ausdruck, der definiert, was mit den Daten und den Daten selbst gemacht werden soll. Was ist der Ausdruck, der definiert, was als zu betrachten gilt: 1) die Programmierung oder 2) Daten. Wenn es sich um Daten handelt, ist die Programmierung AWKs Maschine selbst, was natürlich in dem Beispiel von AWK statisch ist. Aber in anderen Kontexten, zB wenn man die Maschine selbst auf eine traditionelle prozedurale Weise schreibt, ist das allein der Programmierteil. –

40

"Mir wurde gesagt, dass es eine datengesteuerte Anwendung ist" - Sie müssen fragen, wer Ihnen das gesagt hat.

Sie möchten hier keine plausible Antwort lesen und dann herausfinden, dass es überhaupt nicht das ist, was die verantwortliche Person Ihres Projekts gemeint hat. Der Ausdruck ist zu vage, um eine eindeutige Bedeutung zu haben, die definitiv auf Ihr Projekt zutrifft.

+7

Ich verstehe, was Sie meinen, Richie, und das ist ein guter Punkt. Ich frage mich jedoch, ob "datengesteuerte Programmierung" eine Art Begriff ist, der von der Softwareentwicklungsbranche konkret erkannt wird. Ich werde keine Antwort von hier nehmen einfach um Nennwert hier, ohne Rücksprache mit meinem Chef. -Danke :) – jtbradle

+5

Sicher - Sie hatten Recht, hier zu fragen. Aber ich denke, die Antwort ist, dass es keine allgemein akzeptierte Definition gibt. – RichieHindle

1

Es gibt niemanden bei der Arbeit, der Ihnen bei dieser Frage helfen kann? Es ist sehr schwierig, ohne ein größeres Beispiel zu visualisieren, ohne was Sie arbeiten. Aber von dem, was ich erfahre, wird es ein Programm sein, in das sie hauptsächlich Informationen eingeben. Dadurch können Informationen abgerufen und bearbeitet werden, die der Kunde verwalten muss.

Viel Glück !!

0

Ich denke, der Rat, der gegeben wird, ist nicht schlecht, aber ich habe immer daran gedacht, dass Data Driven Design die vorhandenen oder gegebenen Datenstrukturen als Grundlage für Ihre Domänenobjekte verwendet.

Zum Beispiel des klassischen Verkäufer-Management-Programm könnte die folgende Art Struktur von Tabellen haben:

  • Verkäufer
  • Region
  • Kunden
  • Produkte

Also, Ihre Anwendung würde sich auf die Verwaltung dieser Datenstrukturen konzentrieren, anstatt eine direkte API zu verwenden, die dies tut es Dinge wie - „machen Verkauf“ etc ...

Nur meine Meinung als die anderen Antworten vorschlagen;)

4

Dieser Artikel erklärt, am deutlichsten, was verstehe ich den Begriff bedeuten:

Was Tabellengesteuerte und Data Driven Development? http://www.paragoncorporation.com/ArticleDetail.aspx?ArticleID=31

Data/Table gesteuerte Programmierung ist die Technik der Faktorisierung repetitious Programmierung in Datenkonstrukte und eine Transformationsmuster. Diese neuen Daten werden von Puristen oft als meta-data bezeichnet, wenn sie auf diese Weise verwendet werden.

39

Obwohl es mehr als ein paar Ideen gibt, was datengesteuerte Programmierung ist, erlauben Sie mir, ein Beispiel anhand einer Datenstruktur und einer Funktion zu geben.

Nicht data driven Beispiel:

data_lloyd = {'name': 'Lloyd', 'lives': 'Alcoy } 
data_jason = {'name': 'Jason', 'lives': 'London' } 
go = function(x) 
    if x.name == 'Lloyd' 
    then 
     print("Alcoy, Spain") 
    else 
     print("London, UK") 
end 

Datengetriebenes Beispiel:

data_lloyd = {'name': 'Lloyd', 'lives': function(){ print("Alcoy, Spain") } 
data_jason = {'name': 'Jason', 'lives': function(){ print("London, UK") } 
go = function(x) 
    x.lives() 
end 

Im ersten Beispiel die Entscheidung, ein Ergebnis zu zeigen, oder der andere ist in der Code-Logik. Im letzten Beispiel wird die Ausgabe durch die Daten bestimmt, die an die Funktion übergeben werden. Aus diesem Grund sagen wir, dass die Ausgabe von den Daten "getrieben" wird.

6

Datengetriebenes Anwendung ist:

(1) ein Satz von Regeln verschiedene Daten, die eine vorbestimmte Entscheidung für jeden spezifischen Datensatzes und werfen Ergebnis als Ergebnis

(2) einige vorbestimmte Prozesse zu machen, legt die Annahme die basierend auf dem Ergebnis ausgelöst werden.

perfektes Beispiel dafür ist ifttt.com

Die Anwendung hat nichts als Regeln. Was macht es nützlich, die Daten, die es durchlaufen wird.

5

Datengesteuerte Entwicklung ist etwas, das man an der Logik des Programms ändern kann, indem man nicht den Code, sondern die Datenstruktur bearbeitet.

Sie könnten mehr Informationen über datengesteuerte Programmierung finden auf http://www.faqs.org/docs/artu/ch09s01.html

prozeduralen Programmierung

var data = { 
      {do:'add',arg:{1,2}}, 
      {do:'subtract',arg:{3,2}}, 
      {do:'multiply',arg:{5,7}}, 
      }; 

foreach(var item in data){ 
    switch(item.do){ 
     case 'add': 
      console.log(item.arg[0] + item.arg[1]); 
     break; 
     case 'subtract': 
      console.log(item.arg[0] - item.arg[1]); 
     break; 
     case 'multiply': 
      console.log(item.arg[0] * item.arg[1]); 
     break; 
    } 
} 

Data Driven Programming

var data = { 
      {do:'+',arg:{1,2}}, 
      {do:'-',arg:{3,2}}, 
      {do:'*',arg:{5,7}}, 
      }; 

foreach(var item in data){  
    console.log(eval (item.arg[0] + item.do + item.arg[1]); 
} 
Verwandte Themen