kritza Geschrieben 25. April 2009 Teilen Geschrieben 25. April 2009 Guten Abend zusammen, ich hoffe ich bin hier richtig... Mache grade meine technische Dokumentation für mein Abschlussprojekt. Da ich das ganze in C mache, verwende ich kein UML - ausser ein Use-Case - sondern stelle das ganze im PAP dar. Hab da jetzt aber ne kleine Frage. Ist mein PAP richtig?! Was ich darstellen wollte war: 1. wird in einer Oracle Forms Maske ein Auftrag bearbeitet und anschließend alle Daten in die Tabelle Eild_Auftr gespeichert. 2. Jetzt wird zyklisch in diese Tabelle nach Aufträgen geguckt. Ist was drin gehts dann weiter. Was ich mich jetzt nur Frage, ob das auch so ersichtlich ist. Weil irgendwie sieht das so alleinstehend und ohne Anstoss aus. Ich weiss nicht wie ich das besser darstellen soll. Habt ihr da einen Vorschlag? Vielen Dank! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Der Kleine Geschrieben 25. April 2009 Teilen Geschrieben 25. April 2009 Wenn ich dich richtig verstehe, hast du 2 Prozesse am laufen, einerseits die einstellung der Aufträge und zweitens davon unabhängig die Überprüfung. Beide Prozesse nutzen nur die gleichen Ressourcen. Wenn dem so ist, dann ist deine Darstellung nicht korrekt. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kritza Geschrieben 25. April 2009 Autor Teilen Geschrieben 25. April 2009 (bearbeitet) Ok, danke schonmal für die zügige Antwort! Anscheind hast du mich besser verstanden, als ich mich selber... In der Tat läuft die Speicherung der Daten in die Tabelle unabhängig von dem Lesen. Das lesen wird von einer 3., übergeordneten Funktion aufgerufen. Diese ruft allerdings noch andere Funktionen auf. Ist halt so ne "Manager-Funktion". Eigentlich müsste ich ja dieses PAP in mehrere Aufteilen. 1. kleines für's speichern der Daten in die DB 2. eins zum lesen - quasi den Rest, dieses PAP's ... und dann noch die "Manager-Funktion"? Das würde so ohne weiteres gar nicht auf ein Blatt passen und sähe nebenbei auch ziemlich ****e aus... Wie würdest du das machen? Die 3. Funktion kurz erwähnen?... wobei.. ist ja nur der Funktionsaufruf.... der interessiert ja gar nicht. - Toller Monolog. Kann ich die "lesen-der-DB-Funktion" so lassen wie sie jetzt dargestellt wird? Quasi, über der Anweisung "Lesen der Tabelle Eild_Auftr" nen Startpunkt setzen? Ist die Schleife denn sonst so richtig? Sorry, für die merkwürdigen Gedankengänge. Kommt wohl vom zuvielen lernen... Hab das jetzt nochmal als *.jpg angehangen. Ist das so richtig? Bearbeitet 25. April 2009 von kritza Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Der Kleine Geschrieben 25. April 2009 Teilen Geschrieben 25. April 2009 Eigentlich müsste ich ja dieses PAP in mehrere Aufteilen. 1. kleines für's speichern der Daten in die DB 2. eins zum lesen - quasi den Rest, dieses PAP's ... Die 3. Funktion kurz erwähnen?ja, genau so. Damit die gleiche Ressourcennutzung gut herauskommt, kannst du beide nebeneinander zum laufen bringen (auf einem Blatt). Die Managerfunktion nur als Managerfunktion zum Starten des 2. Prozesses erwähnen (es war ja nicht dein Anteil, sondern extern) Kann ich die "lesen-der-DB-Funktion" so lassen wie sie jetzt dargestellt wird? Quasi, über der Anweisung "Lesen der Tabelle Eild_Auftr" nen Startpunkt setzen? Ist die Schleife denn sonst so richtig?Lesen- funktion sieht fast gut aus, jedoch wird permanent gelesen (ohne Pause) oder immer nur nach anschubsen durch den Manager? Dann wäre bei nein beendet. Oder gibt es einen Zeitraum der dazwischen liegt? Dann ist irgendwo ein Sleep einzubauen. Bisher ist es resourcenfressend (insbesondere Speicherfressend) und ohne Grund. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kritza Geschrieben 25. April 2009 Autor Teilen Geschrieben 25. April 2009 (bearbeitet) du bist zu schnell ^^ Also, oben jetzt immernoch die aktuelle Version. Lesen- funktion sieht fast gut aus, jedoch wird permanent gelesen (ohne Pause) oder immer nur nach anschubsen durch den Manager? Dann wäre bei nein beendet. Oder gibt es einen Zeitraum der dazwischen liegt? Dann ist irgendwo ein Sleep einzubauen. Bisher ist es resourcenfressend (insbesondere Speicherfressend) und ohne Grund. Die Funktion besitzt nen Sleep. Aber den nehm ich wohl raus. Zumindest für die Quellcodeauszüge. Weil, schön ist anders ^^ Der Manager ist ne große Switch-Funktion. In meiner Variante hab ich nen Break, im Falle keiner Daten in der DB. Ansonsten, gehts halt weiter. Soll ich diesen Break befehl auch erwähnen? ... Müsste ich ja eigentlich. PAP's sollen ja Vorlage für den Programmierer sein, und ohne wärs ziemlich blöde... Aber dann muss man auch vorher erwähnen, dass meine Funktion durch nen Switch aufgerufen wird. Wo erwähne ich den sowas? Als eine Art Anmerkung im PAP, oder dort lieber gar nicht, sondern lieber in der tech. Doku selbst?! ---------- Toll, wenn man sich die Antworten selbst erklären kann. Aber drüber sprechen bringt einen manchmal auf Idee die man alleine sonst nicht hätte... Hier ne neue Version. Bleibt noch die Frage, wo ich erwähne, dass die aufrufende Funktion eine Switch-Anweisung ist. Aber wahrscheinlich ist das nur Geschmackssache, oder? Bearbeitet 25. April 2009 von kritza Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Der Kleine Geschrieben 25. April 2009 Teilen Geschrieben 25. April 2009 Der Manager ist ne große Switch-Funktion. In meiner Variante hab ich nen Break, im Falle keiner Daten in der DB. Ansonsten, gehts halt weiter. Soll ich diesen Break befehl auch erwähnen? ... Müsste ich ja eigentlich. Genau: Im Falle keiner Daten ist halt ENDE. Wo erwähne ich den sowas? Als eine Art Anmerkung im PAP, oder dort lieber gar nicht, sondern lieber in der tech. Doku selbst?! Ich würde es in der Beschreibung erwähnen, dass es durch andere Funktionen (die Managerfunktion) aufgerufen wird. Der Aufruf selbst hat in deinen Prozessen (sie gehen von Start bis Ende) nix zu suchen, denn der Aufruf geschieht unmittelbar davor (also vor deinem Start). EDIT: sieht schon besser aus, dein 3. Vorschlag, jetzt nur noch mein letzter Satz umgesetzt. Toll, wenn man sich die Antworten selbst erklären kann. Aber drüber sprechen bringt einen manchmal auf Idee die man alleine sonst nicht hätte...Dafür sind wir ja da - nur zuhören und verwirrende Fragen stellen Bleibt noch die Frage, wo ich erwähne, dass die aufrufende Funktion eine Switch-Anweisung ist. Aber wahrscheinlich ist das nur Geschmackssache, oder? siehe oben. Verknüpfe bitte beide Prozesse über die gemeinsame Ressource, so hast du wieder ein Gebilde, welches systematisch irgendwo zusammenhängt und keinen Kruschtladen geschustert. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kritza Geschrieben 25. April 2009 Autor Teilen Geschrieben 25. April 2009 (bearbeitet) Verknüpfe bitte beide Prozesse über die gemeinsame Ressource, so hast du wieder ein Gebilde, welches systematisch irgendwo zusammenhängt und keinen Kruschtladen geschustert. Meinst du so? Eigentlich brauche ich ja 2 Startpunkte, da das ja auch 2 unabhängige Funktionen sind. Aber macht man das so? Darf man das so machen? Muss ich nicht zumindest irgendwie die beiden Sachen voneinander abgrenzen? Durch nen Rahmen, oder so? Hab sowas mit PAP's noch nicht gemacht. Mal so aus Interesse.. dachte PAP's und Strukturgramme können immer gleich verwendet werden. Aber sowas kann man doch gar nicht in nem Struk. darstellen, oder doch? => nicht sooo wichtig ^^ Edit1: 2. Ende hinzugefügt Edit2: Rahmen zur Funktionsabgrenzung. Ist jetzt nur die Frage ob das nicht "zu bunt" ist. Bearbeitet 25. April 2009 von kritza Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Der Kleine Geschrieben 25. April 2009 Teilen Geschrieben 25. April 2009 Ich würde es so akzeptieren. Teil 2 hat schon mal einen Rahmen (einen weiteren kannst du sicher auch noch). Du verknüpfst die beiden Prozesse doch nur über die verwendeten Ressourcen. Zur schematischen Darstellung der Zusammenhänge finde ich die Verknüpfung einfach passender. Bei deiner zweiten Schleife solltest du vielleicht nur ein Ende machen, also von oben nach unten einen langen Pfeil ziehen. Dann hast du genau einen Start - und einen Endpunkt. In der Programnmierung geht es dann über ein Break (irgendwie unschön) oder über eine if[ähnliche]-Verknüpfung (die in einem Fall nix mehr macht) oder über ein Goto (aber das schmerzt schon beim schreiben). also ich würde so programmieren: if [irgendetwas zu verarbeiten]{ verarbeite; } ende Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kritza Geschrieben 25. April 2009 Autor Teilen Geschrieben 25. April 2009 (bearbeitet) also ich würde so programmieren: if [irgendetwas zu verarbeiten]{ verarbeite; } ende So ähnlich hab ich das auch. Nur anders ^^... Habe, aus gründen der ggf. auftretenden Fehler beim DB-connect noch nen else-zweig und im if-zweig dann break. Aber prinzipiell halt gleich. Ich füg mal nen Auszug an. Aber is echt nicht schön. Bin auch am Überlegen, ob ich den im Antrag erwähnten Codeauszug nicht rausnehmen soll... [...] retrn = get_next_ups_bea_auftr(&ups_bea); if ( retrn != 0 ) { if ( retrn == ORA_NOT_FOUND ) /* kein Auftrag vorhanden */ { break; } else { /* anderer Fehler als ORA_NOT_FOUND */ sprintf(hBuf, "Oracle-Fehler bei lesen aus MFGPRO Tabelle %d", retrn); ERROR_MSG_STR(MNAME, hBuf, 0, NULL); } ora_rollback (); // Wenn beim lesen von FOSS ein Fehler auftrat, dann lieber einen Reconnect machen oracle_disconnect(); Sleep(120000); // 120 Sec. //---------------------------------------------------------------- // Oracle öffnen //---------------------------------------------------------------- //ku 08.11.05 Passwort steht verschlüsselt in einer Datei char szBenutzer[100], szPasswort[100]; if ( (retrn = decode_passwort(SB_FindProgText("TP_PASSWORTDATEI"), szBenutzer, 100, szPasswort, 100)) != 0) { WinPrintf(hWndMain, "Fehler beim entschlüsseln des Passwortes %d",retrn); return; } else { retrn = oracle_connect(szBenutzer,szPasswort,"walt"); if (retrn != 0) { WinPrintf(hWndMain, "Fehler beim öffnen von Oracle-DB %d",retrn); return; } } break; } ora_commit(); // Suche nach Auftrag in Datenbank sprintf(whereClause, "where aunr='%s' and palnr='%s'", ups_bea.aunr, ups_bea.palnr); retrn = paket_select(&paket, whereClause); // Schreiben der Trackingnummber zum Auftrag sprintf(paket.trackingnr, "%s", ups_bea.trackingnr); [...] Aber den ganzen Spass muss ich eigenltich auch noch darstellen... Das ist viel zu groß für ein PAP. Das ist ja auch nur ein AUSZUG aus EINER Funktion... *******e.... Muss man das so detailiert machen. Muss ja auch die DB-Verbindung, und die Beendigung zb. auch darstellen... oder etwa nicht? Weil, wie gesagt, soll ja dem Programmierer als Vorlage dienen und "eigentlich" alles enthalten... aber doch nicht jede Zeile... Bearbeitet 25. April 2009 von kritza Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kritza Geschrieben 27. April 2009 Autor Teilen Geschrieben 27. April 2009 Danke für die Hilfe nochmal! hab ich im Laufe des Gefechtes ganz vergessen. Hab das jetzt noch ein bisschen erweitert und dabei ist mir was aufgefallen. Kann ich das überhaupt so machen? Wenn die Tabelle gelesen wird, wird anschließend der Datensatz aus der Tabelle in eine ArchivTabelle verschoben. Ich finde das sieht aber irgendwie komisch aus. müsste in dem roten DB-Bereich nicht auch soetwas wie die Start, bzw. Stopp Elemente rein?! Danke! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Der Kleine Geschrieben 27. April 2009 Teilen Geschrieben 27. April 2009 Wenn die Tabelle gelesen wird, wird anschließend der Datensatz aus der Tabelle in eine ArchivTabelle verschoben. Ich finde das sieht aber irgendwie komisch aus. müsste in dem roten DB-Bereich nicht auch soetwas wie die Start, bzw. Stopp Elemente rein?!Das macht doch dann aber dein zweiter Prozess, so dass du ihn zumindest vor dem einen Ende dazufügen musst. Dieser 2. Prozess startet deinen roten Prozess und ist erst nach dessen Beendigung abgearbeitet. Ansonsten sieht es doch schick und gewaltig (genug für die Prüfung) aus. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kritza Geschrieben 27. April 2009 Autor Teilen Geschrieben 27. April 2009 (bearbeitet) Das macht doch dann aber dein zweiter Prozess, so dass du ihn zumindest vor dem einen Ende dazufügen musst. Dieser 2. Prozess startet deinen roten Prozess und ist erst nach dessen Beendigung abgearbeitet. Also meinst du, dass ist ok so?... was mich am meisten stört, dass es halt irgendwie so in "leere" läuft... aber es wird nun mal gelesen, geschrieben, gelöscht... und dann gehts weiter im grünen. aber wenn du meinst, dass ist ok so, dann glaub ich dir das. Danke! ################# Bevor ich jetzt nen 2. Thread aufmache schreib ich ejtzt einfach hier drunter, auch wenns nicht zum PAP gehört. Ich mache auch nen Use-Case. Da ich mein Projekt in C mache würde ich sagen, folgt alles irgendwie auf einander. Muss ich auch Sachen "includen", bzw. "extenden"? Oder anders, ist mein use-case richtig? UND: kommen da auch Sachen rein, die nicht programmiert werden? wie. z.B., dass der Anwender das ausgedruckte Etikett anbringen muss?... oder ist das zu vernachlässigen? Bearbeitet 27. April 2009 von kritza Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Der Kleine Geschrieben 27. April 2009 Teilen Geschrieben 27. April 2009 (bearbeitet) Also meinst du, dass ist ok so?... was mich am meisten stört, dass es halt irgendwie so in "leere" läuft... aber es wird nun mal gelesen, geschrieben, gelöscht... und dann gehts weiter im grünen. aber wenn du meinst, dass ist ok so, dann glaub ich dir das. Nein, du sollst den roten Teil in den zweiten Teil einbauen und nicht leer stehenlassen. Er gehört doch eindeutig zum zweiten Prozess, der erst nach diesem Übertrag abgearbeitet ist. PS: Ich glaube kaum, ass du nach unserem Dialog hier noch weitere Meldungen zum Use-Case bekommen wirst . Ich mache mich heute abend mal etwas schlauer dazu. *Ich frage mich gerade, warum du so etwas hineinarbeiten willst, dein PAP ist doch aussagefähig, jedoch wirst du mit mehr gleichartigen Erklärungen nur mehr Angriffspunkte bei dem Fachgespräch bieten.* (Das hast du aber nicht von mir - es ist löblich, fleissig zu sein!) Bearbeitet 27. April 2009 von Der Kleine Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kritza Geschrieben 27. April 2009 Autor Teilen Geschrieben 27. April 2009 Findest du echt, dass das so ausreicht? Ist ja nur der erste Teil. Ich hab ja noch ne 2ten PAP. Nur den wollte ich nicht posten. Mir ging's ja nur ums Prinzip, wie ich die einzelnen Sachen zu erstellen habe. In dem 2. ist zB auch ein Trigger drin... u.a. Ich weiss nicht. Ich finde es natürlich nett von dir, dass du mir das sagst.. aber... jetzt habe ich das schon erstellt - auch wenn Anwendungsfalldiagramme recht schnell von der Hand gehen - und dann verwende ich das auch. Wobei das natürlich nachvollziehbar ist. Aber ich hoffe, ich bin fit genug um die Fragen dann zu beantworten. Wobei ich mich sowieso frage, was da für Fragen gestellt werden... Aber das ist extrem nett von dir, dass du dich nach Use-Case Diagrammen erkundigst! Hab da auch schon einige Seiten durch gelesen, aber zu diesen speziellen Problemen noch nichts gefunden. Und auf der Arbeit macht sowieso niemand irgendwelche Diagramme.... Wie dem auch sein, nochmals Danke für deine Hilfe! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Der Kleine Geschrieben 27. April 2009 Teilen Geschrieben 27. April 2009 Aber das ist extrem nett von dir, dass du dich nach Use-Case Diagrammen erkundigst! Hab da auch schon einige Seiten durch gelesen, aber zu diesen speziellen Problemen noch nichts gefunden. Nö, müsste passen, wie man leicht sieht. Und auf der Arbeit macht sowieso niemand irgendwelche Diagramme.... Na, IMO ist so ein PAP bzw. ein Struktugramm nicht verkehrt - je nach Größe des Programmes. Auch USe Case kann zur Problembeschreibung und zur Ausfgabenableitung ziemlich zielsicher eingesetzt werden. Denke vielleicht mal drüber nach, wo s wirklich helfen kann, vielleicht führst du dieses auf deiner Arbeit ein, getreu dem Motto: Ein Bild sagt mehr als 1000 Worte. *Aber nicht bei jeder Kleinigkeit zu malen anfangen* PS: Ich warte noch auf deine Aktualisierung des PAP. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
IJK Geschrieben 28. April 2009 Teilen Geschrieben 28. April 2009 Finde eure Diskussion sehr interessant. Zum Grundproblem: 1. Du verknüpfst zwei Dinge a) Programmablaufplan Datenflußplan zeigt, welche Dateien und Tabellen dein Programm braucht a) zeigt, was das Programm macht Insgesamt schöne, klassische (alte) strukturierte Programmierung. Gehört meiner Ansicht nach noch immer zum Umfang der Ausbildung, macht wohl kaum jemand. Man kann mal wenigstens die korrekten Symbole nachlesen :old Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kritza Geschrieben 28. April 2009 Autor Teilen Geschrieben 28. April 2009 genau das meinte mein lehrer heute auch. aber ich kriege es nicht hin, beide voneinander zu trennen. Ich befürchte ich hab die ganze use-case sache nicht so richtig verstanden. Bzw. nur für "Schulaufgaben", bei denen man direkt drauf hingewiesen wird, was zu tun ist. Ich hab jetzt auch nen 2. Thread drüber eröffnet: http://forum.fachinformatiker.de/abschlussprojekte/127156-uml-diagramme-viele.html#post1140459 Jedoch wäre es mir lieber, nen Use-Case zu verwenden. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
AndiE Geschrieben 2. Mai 2009 Teilen Geschrieben 2. Mai 2009 Hallo, ich denke, das ein PAP EINEN Einstiegs und EINEN Ausstiegspunkt haben sollte. Das wäre im Normalfall der Start der Anwendung und der Rücksprung in die nächst niedere Ebene(z.B Betriebssystem). Wenn ich nach der guten alten Methode "top down- buttom up" denke, dann sind die hier diskutierten Prozesse Teil eines Programmes zum Paketversand. Wenn ich ene Firma wäre und das kaufen wollte, wüsse ich gern, wie die dafür notwendigen Schritte umgesetzt werden. Bisher werde ich aber aus den PAP allein noch nicht so recht schlau, weil die Ein- und Ausgangspunkte IMHO nicht so recht im Zusammenhang stehen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.