Mercurial > docs > ps-bericht-maka
changeset 0:f3982c724ecf final
initial commit
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/DasUnternehmen.tex Sun Apr 15 02:44:56 2007 +0200 @@ -0,0 +1,69 @@ +\section{Unternehmensvorstellung} + + + +\subsection{Das Unternehmen} + + +\begin{quote} +Die \textbf{MAKA - Max Mayer Maschinenbau GmbH} ist ein inhabergef�hrtes Unternehmen mit rund 170 Mitarbeitern, das seine Wurzeln im schw�bischen Maschinenbau hat. Mit �ber 50 Jahren Erfahrung im Maschinenbau und �ber 25-j�hriger Erfahrung im Bau von CNC-Spezialmaschinen setzt sich \textbf{MAKA} mit an die Spitze dieser Technik im den Bereichen Holz-, Aluminium- und Kunststoffbearbeitung. + +Ebenso werden individuelle L�sungen f�r die hohen Anforderungen im Modellbau und Gussbereich angeboten. Die Hochgeschwindigkeitsbearbeitung mit 5-Achs-Technik in der Aluminium-, Holz und Kunststoffbranche wird mit \textbf{MAKA}-CNC-Spezialmaschinen erfolgreich von weltweit f�hrenden Firmen des Automobil-, Flugzeug-, Waggon-, Yacht-, Fassaden-, M�bel-, T�ren- und Treppenbaus und von Spezialisten wie Tiefzieher, Kunststoff- und Acrylglasbearbeitern umgesetzt. + +Unser Unternehmen hat es sich zum Ziel gemacht, die richtige technische und wirtschaftlichste L�sung auf hohem Niveau zu bieten. +\end{quote} + +So beschreibt sich das gr��te Unternehmen Nersingens selbst. Neben dem Hauptsitz in Nersingen\footnote{Zehn Kilometer �stlich von Ulm gelegen}, geh�ren die eigene Produktion in Neu-Ulm-Burlafingen, das Tochterunternehmen in England und 13 Vertretungen in Europa dazu. + +Der Umsatz verteilt sich zur H�lfte auf Deutschland, etwa 45\% im restlichen Europa (davon knapp 20\% im Vereinigten K�nigreich) und verbleibenden f�nf Prozent in den USA und den Vereinigten Arabischen Emiraten. + + +\begin{figure}[hbt] + \centering + \includegraphics[width=4cm]{Pics/Maka-Logo.png} + \caption{Das Firmenlogo} +\end{figure} + + +Als Etwas das viel �ber ein Unternehmen aussagt, m�chte ich hier noch die Philosophie von \textbf{MAKA} anf�gen. +\begin{quote} + Made in Germany, Alles aus einer Hand und Kundenn�he sind die tragenden S�ulen der \textbf{MAKA}-Kundenphilosophie und Eckpfeiler der Erfolgs. +\end{quote} + +Das Unternehmen ist auch im Internet vertreten. Unter \texttt{http://maka.com} ist die Webpr�senz zu erreichen. Ebenfalls online zu finden ist der Unternehmensteil \textbf{MAKA - Tischlereimaschinen} mit dem 1952 das Unternehmen entstanden ist. + + + + + + +\subsection{Die IT-Abteilung} + + +Die IT-Abteilung bei \textbf{MAKA} umfasst drei Personen. Das sind: Der Abteilungsleiter, der sich, neben den vielf�ltigen Aufgaben seiner Position, auch um das ERP-System k�mmert. Ein Systemadministrator der Hardwarebelange und die Standardsoftware unter sich hat. Und schlie�lich mein Betreuer, einstmals Student an der FH-Ulm, jetzt Programmierer und Verantwortlicher f�r das \textit{DBSRV}-Projekt bei \textbf{MAKA}. + +Hardware und Software werden intern verwaltet; Berater und einzelne Spezialisten werden von extern bezogen. Ganz allgemein wird ein ``m�glichst viel in-house''-Konzept verfolgt. + +Die IT-Abteilung ist stark mit dem restlichen Unternehmen verwoben und hat, meiner Ansicht, eher wenig Entscheidungsmacht. + + + + + + + + + +\subsection{\textbf{MAKA} und die Hochschule} + +\textbf{MAKA} setzt als ERP-System das niederl�ndische \textit{Baan} ein. Dieses, in einigen Punkten suboptimale, System, bietet vor allem eines nicht: �bersichtlichkeit. Viele Masken und Reports sind sehr im Detail. Sie erm�glicht zwar alle n�tigen Aktionen und auch Abfragen wie ``Alle Fehlteile eines Projekts'' sind implementiert; wenn man aber wissen m�chte, welche Bestellungen f�r diese Fehlteile laufen und wann diese vorraussichtlich geliefert werden, dann steigt der Aufwand f�r diese Informationen schnell exponentiell: Drei verschiedene Masken, nervige Nummerntipperei und eine gro�e Zeitinvestition m�ssen daf�r in Kauf genommen werden. + +Um diese Unzul�nglichkeiten des ERP-Systems auszugleichen wurde 2004 von \textbf{MAKA} �ber den Dozent Herrn von Schwerin eine Zusammenarbeit zwischen dem Unternehmen und der Fachhochschule Ulm angeregt: In Projektcharakter analysierten die damaligen Studenten Andreas Heinemann und Fabian He� die Situation, informierten sich �ber m�gliche L�sungen, entwarfen das Konzept der heutigen L�sung und programmierten schlie�lich die ersten Anwendungen. + +Was als Projekt in ihrer Freizeit begann, f�hrt �ber Praxissemester und Diplomarbeit, bei einem der Beiden sogar zur Festanstellung bei \textbf{MAKA}. + +\large{Erfolg auf ganzer Linie. Ein Musterprojekt der Hochschule!} + + +Seit dieser Zeit wurde die Zusammenarbeit mit der Hochschule weiter gepflegt. Ich selbst bin der inzwischen vierte Wirtschaftsinformatik-Student der bei \textbf{MAKA} die Verbindung, und damit den Wissens- und Erfahrungsaustausch, zwischen Forschung und Wirtschaft herstellt. +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Dbsrv.tex Sun Apr 15 02:44:56 2007 +0200 @@ -0,0 +1,39 @@ +\section{Das DBSRV-Projekt} + +Wie in der Einf�hrung beschrieben, wurde von den ersten Praktikanten bei \textbf{MAKA} das DBSRV-Projekt ins Leben gerufen. +Der DBSRV ist eine Art Framework f�r allerlei Programme die den Mitarbeitern zur Verf�gung stehen. Zum Teil erweitern diese Programme die Funktion des ERP-Systems, aber es gibt auch Programme die komplett neue Funktionalit�ten anbieten\footnote{Ein Beispiel hierf�r w�re die Bilderdatenbank}. +All diese Programme sind von Praktikanten nach und nach geschrieben worden. + +Ich habe hier einfach an der Stelle weitergemacht an der mein Vorg�nger aufgeh�rt hatte. Pflichtenhefte, oder vielleicht besser ``Konzepte'' existierten dazu bereits. + +Im Folgendem werde ich den Begriff \textit{DBSRV} verwenden wenn ich dieses DBSRV-Projekt meine. + + + + + +W�hrend meines Praktikums habe ich an drei Programmen gearbeitet: + +\begin{enumerate} + \item Einkaufsinformationssystem (kurz EIS)\\ + Eine Abfragensammlung mit Reports wie Bestellobligo, Realer Wiederbeschaffungszeit und einem Fehlteilmanagement. + Dieses Programm war von meinem Vorg�nger schon zur H�lfte fertig gestellt. + + \item Montageinformationssystem (kurz MontIS)\\ + Dem EIS recht �hnlich aber f�r die Montage. Zu implementieren war das Fehlteilmanagement und die Liefertreueanalyse. + + \item Translator-Datenbank \& Dictionary\\ + Eine �bersetzungsdatenbank f�r fremdsprachige Artikelbezeichungen um entsprechend lokalisierte St�cklisten drucken zu k�nnen. + +\end{enumerate} + + + + +\newpage +\section{Einarbeiten} + +Die erste Woche verbrachte ich damit die bestehende Codebasis des EIS und die Datenbank des ERP-Systems kennen und verstehen zu lernen. Dabei ist es nat�rlich eine Schwierigkeit sich die Denkmuster des vorherigen Programmierers zu verinnerlichen. Eine dabei sehr gute Entscheidung war den Code durch Refactoring kennenzulernen und gleichzeitig zu verbessern. Code zu lesen f�hrt meist nicht zum gew�nschten Erfolg (jedenfalls nicht in dem Ma�e). Indem man den Programmcode allerdings `umr�umt', und die dabei zwangsl�ufig entstehenden Fehler\footnote{Die Erfahrung (und Murphy) zeigt, dass durch Refactoring immer Fehler entstehen werden. Oder wenn man es von der anderen Seite betrachtet, kommen so (Design-)Fehler zum Vorschein.} studiert, lernt man die Funktion des Codes sehr schnell und intensiv kennen. + +Nachdem ich die Programmiergewohnheiten meines Vorg�ngers analysiert hatte und, durch die Arbeit mit dem Code, einen gewissen Einblick in die Logik der Datenherkunft erhalten hatte, machte ich mich daran selbst meinen ersten Report zu schreiben. Das gr��te Problem am Anfang war dabei herauszufinden aus welchen Datenbanktabellen ich die ben�tigten Daten erhalte. Bei �ber 70 Datenbanktabellen, mit zudem recht kryptischen Namen, war das auch verst�ndlich. Mit der Zeit erkennt man dann aber ein Schema hinter den Bezeichnungen und kann sie sich so herleiten. Als Beispiel m�chte ich die Tabellenspalte \texttt{ttdpur041100.T\_ORNO} anf�hren. Das erste \texttt{t} ist bei allen Tabellen so, dann folgt ein \texttt{td} f�r das Baan-Modul ``distribution'' (engl. f�r ``Vertrieb'' oder ``Absatz''), \texttt{pur} steht f�r ``purchase'' (engl. f�r ``Beschaffung''), die \texttt{041} ist die Tabelle ``Bestellkopf'' und die \texttt{100} steht f�r die Echtfirma. Um solche Schemen nachvollziehen zu k�nnen war auch ein Wissen �ber den Aufbau eines ERP-Systems notwendig, das ich mir w�hrend des Praktikums angeeignet habe. Mit der Zeit habe ich dann auch ein Gef�hl daf�r bekommen wo ich welche Daten finde. +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Dokumentation.tex Sun Apr 15 02:44:56 2007 +0200 @@ -0,0 +1,33 @@ +\section{Dokumentation} + +Die Dokumentation von Programmen geh�rt ebenso wie das Programmieren selbst zur Softwareentwicklung dazu. Ich habe meine Anwendungen nat�rlich dokumentiert. Dies war f�r mich zuerst einmal eine eher neue Sache, da ich mich zwar mit der Notwendigkeit von Dokumentationen schon besch�ftigt, aber noch keine selbst geschrieben hatte. Bei der technischen Umsetzung hielt ich mich an die Form die meine Vorg�nger eingef�hrt hatten: Microsoft Word-Dokumente. Diese wandelte ich mittels OpenOffice.org in ein PDF um. + +Mir war es wichtig, den Zusatzaufwand f�r die Dokumentation m�glichst gering zu halten. Dieses Bestreben gr�ndet zum Einen auf die allgemeine Erfahrung, dass Anwender keine Dokumentation lesen, und zum Anderen auf meine �berzeugung, dass nur der Quellcode selbst vollst�ndig, aktuell und detailliert genug ist und deshalb vor allem er aussagekr�ftig und �bersichtlich gemacht werden muss. Die Dokumentation sollte meiner Meinung nach nur als Erg�nzung zum Quellcode gesehen werden. Sie ist jedoch trotzdem wichtig und notwendig um dem Entwickler schnell und direkt die grundlegende Logik und die nicht offensichtlichen Implementierungen des Programms offenzulegen. Des weiteren sollte sie dem Anwender Zusatzinformationen bieten, falls dieser ein Bed�rfnis nach ihnen hat. Die Dokumentation f�r die beiden Personengruppen zu zweiteilen halte ich nicht unbedingt f�r sinnvoll, da auf diese Weise der Aufwand und die Redundanz steigt und bei Dokumentationen im Umfang von etwa 15 Seiten sollten die gesuchten Informationen noch recht einfach herauszufiltern sein. + +Meine Dokumentation enth�lt somit zum gr��ten Teil die hier aufgez�hlten Informationen: +\begin{itemize} + \item Grunds�tzliche Informationen zur technischen Struktur des Programms + \item Programmdesign-Prinzipien + \item Kurzbeschreibung der einzelnen Programmteile und genauere Erl�uterungen zu einzelnen Funktionen + \item Tipps, Hinweise und Anmerkungen aller Art + \item Konkrete Anleitungen falls n�tig (Bei der Translator-Datenbank ist das zum Beispiel: ``So f�ge ich eine Sprache hinzu'') +\end{itemize} + +Was f�r mich nicht, oder nur in geringem Ma�e, in der Dokumentation vertreten sein sollte, sind: +\begin{itemize} + \item Zu detaillierte Informationen + \item Variablen-, Klassen-, Dateinamen und �hnliches +\end{itemize} +Diese Informationen sorgen doch nur f�r einen allzu hohen Aufwand zum Aktuellhalten der Dokumente. Um auf derartige Zusatzinformationen aber nicht verzichten zu m�ssen, sollte man hier automatische Tools einsetzten. Ich habe an dieser Stelle das Programm \textit{Doxygen}\footnote{\textit{Doxygen} ist freie Software und kann von der Website http://doxygen.org heruntergeladen werden.} eingesetzt. Die Ergebnisse f�r Klassen waren dabei sehr gut, der gr��te Teil der sonstigen Informationen eher weniger brauchbar. Der Aufwand f�r Doxygen-Kommentare im Quellcode ist gering und dient der �bersichtlichkeit des Codes selbst. Das Generieren der Doxygen-Dokumentation erfordert dann nur einen Programmaufruf, der Rest erfolgt automatisch. + + +Wie man im Text sicher schon heraush�ren konnte, habe ich keine spezielle Anwenderdokumentation in Form von einem Handbuch oder �hnlichem geschrieben. Wir erinnern uns: Der Benutzer lie�t dieselbige ja doch nicht.\footnote{Diese Grundannahme sollte mit ein wenig Humor verstanden werden.} Deshalb sollte man dem Anwender die zus�tzlichen Informationen zum Programm auf eine Weise anbieten, sodass er m�glichst wenig davon mitbekommt und schon gar keinen zus�tzlichen Aufwand hat. + +Diesen �berlegungen bin ich gefolgt und habe als erstes versucht meine Programmoberfl�chen m�glichst nat�rlich zu gestalten. Der Benutzer sollte alles dort finden wo er es erwartet. Konzepte wie ``von links nach rechts'' bzw. ``von oben nach unten'', ``Gleiches zusammen'' und ``wiederkehrende Elemente'' machen hierbei den gr��ten Teil aus. Alle meine Reports sollten ein \textit{Common Look'n'Feel}\footnote{Eine einheitliche Optik und Bedienung} haben. + +Als wichtige Komponente, beim Anbieten von Zusatzinformationen ohne separates Handbuch, stellte sich dabei das Universalattribut \texttt{title} von HTML-Tags heraus. Mit ihm ist es m�glich beliebigen Elementen einen Tooltip-Text zuzuweisen. F�hrt man dann im HTML-Dokument mit dem Mauszeiger �ber das Element und verweilt kurz darauf, so �ffnet sich ein kleines Informationsfenster mit dem hinterlegten Text. Diese M�glichkeit habe ich konsequent genutzt. So k�nnen zum Beispiel bei allen Tabellen durch �berfahren der Spalten�berschriften genauere Informationen zu den enthaltenen Werten gewonnen werden. + + +F�r diejenigen Benutzer die trotz meiner Bem�hungen um ein selbsterkl�rendes Oberfl�chendesign gerne die Dokumentation lesen m�chten, habe ich diese auf den Startmasken der einzelnen Programme jeweils verlinkt. Ein Fragezeichen in der rechten oberen Ecke f�hrt einheitlich zur Dokumentation in PDF-Form. + +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Eis.tex Sun Apr 15 02:44:56 2007 +0200 @@ -0,0 +1,135 @@ +\section{Das Einkaufsinformationssystem} + + +Dieses Programm umfasst Reports aus den Bereichen +\begin{itemize} + \item Lieferantenanalysen + \item Artikelanalysen + \item Tagesgesch�ft + \item Fehlteilmanagement +\end{itemize} +Die ersten zwei Bereiche wurden von meinem Vorg�nger schon fertig gestellt. Das Tagesgesch�ft war meine erste Aufgabe. +Es war gut an einem bereits begonnen Programm weiterzumachen, da das im Normalfall einfach als selbst von Grund auf Entwerfen ist. Gerade wenn man sich mit dem System noch nicht besonders gut auskennt. + + + + + + +\subsection{Tagesgesch�ft} + +\begin{figure}[hbt] + \centering + \includegraphics[width=10cm]{Pics/eis-tagesgeschaeft.png} + \caption{Die Eingabemaske des Tagesgesch�ft-Programmteils}\label{Fig:eis-tagesgeschaeft} +\end{figure} + +Der Reiter \textit{Tagesgesch�ft} enth�lt im oberen Bereich Formularfelder mit denen die Daten eingeschr�nkt werden k�nnen. Auf diese Weise kann zum Beispiel nur ein bestimmter Lieferant, oder nur eine Gruppe von Artikeln betrachtet werden. Einzelne Einschr�nkungsfelder sind je nach gew�hltem Report eventuell auch deaktiviert. So macht zum Beispiel beim \textit{Herstellkosten-Check}\footnote{Eine Auflistung von Artikeln deren Soll-Herstellkosten oder letzter Einkaufspreis mehr als 5\% von den Standard-Herstellkosten abweichen} eine Einschr�nkung nach Lieferant oder Eink�ufer keinen Sinn, da hier die Artikel ohne sonstigen Zusammenhang betrachtet werden. + +Bei den Bestellnummernkreisen k�nnen beliebig weitere hinzugef�gt werden. Bei Lieferant und Eink�ufer kann �ber eine Suchfunktion die Lieferanten-/Eink�ufer-Nummer anhand des Namens ermittelt werden. Und bei manchen Reports k�nnen die Datens�tze zeitlich begrenzt werden. + +Ich m�chte nun zwei Reports n�her vorstellen. + + + +\subsubsection{Bestellobligoanalyse} + +Dieser Report stellt eine �bersichtliche Darstellung der auf das Unternehmen zukommenden Kosten im Bereich Einkauf bereit. +Die Analyse bezieht sich erst einmal auf Kalenderwochen, aber Monatssummen sind vorhanden. Zudem sind f�r alle Zeitr�ume Drilldowns auf die konkreten Bestellungen vorhanden. Es wird also eine Bestellobligo�bersicht f�r alle Detailstufen angeboten. + +\begin{figure}[hbt] + \centering + \includegraphics[width=10cm]{Pics/eis-bestellobligo.png} + \caption{Die Bestellobligoanalyse}\label{Fig:eis-bestellobligo} +\end{figure} + +%\begin{figure}[hbt] +% \centering +% \includegraphics[width=14cm]{Pics/eis-bestellobligo-drilldown.png} +% \caption{Drilldown bei der Bestellobligoanalyse}\label{Fig:eis-bestellobligo-drilldown} +%\end{figure} + +Im Drilldown zeigt ein Klick auf einen Lieferantennamen seine Kontaktdaten an. + + + +\subsubsection{Reale Wiederbeschaffungszeit} + +In diesem Report kann die tats�chliche (reale) Wiederbeschaffungszeit mit der, im Artikelstamm abgelegten, geplanten Wiederbeschaffungszeit verglichen werden. Bei gr��eren Abweichungen, die farblich hervorgehoben sind, k�nnen dann die Artikelstammdaten korrigiert werden. Falls dies nicht gemacht w�rde, w�rde es im, vom ERP-System generierten, Produktionsplan zu Wartezeiten und Verschiebungen kommen. Um die Zeitplanung im Produktionsplan m�glichst optimal zu halten (Stichwort ``Just-in-time'') m�ssen die ben�tigten Daten nat�rlich auch m�glichst exakt sein. + +Aber auch in der Beziehung zum Lieferant sind die reale Wiederbeschaffungszeit und ihre Abweichung zur Geplanten wichtige Daten. Mit einer anschaulichen �bersicht kann hier beim Lieferant ein gewisser Druck ausge�bt werden, falls er seine `versprochenen' Lieferzeiten nicht einh�lt. Oft ist bei Gespr�chen mit dem Lieferant die reine Pr�senz dieser Daten und ihre sofortige und detaillierte Abrufbarkeit, der entscheidende `Trumpf'. + +Wenn Artikel von verschiedenen Lieferanten bezogen werden, dann lassen sich diese sehr sch�n gegen�berstellen. Und gegen die Fakten aus Abbildung \ref{Fig:eis-realewbz-drilldown} muss der untere Lieferant erst einmal etwas sagen. + +\begin{figure}[hbt] + \centering + \includegraphics[width=10cm]{Pics/eis-realewbz-drilldown.png} + \caption{Wiederbeschaffungszeiten eines Artikels von zwei Lieferanten}\label{Fig:eis-realewbz-drilldown} +\end{figure} + + + + + + + + + +\subsection{Fehlteilmanagement} + +\begin{figure}[hbt] + \centering + \includegraphics[width=10cm]{Pics/eis-fehlteilmanagement.png} + \caption{Startmaske des Fehlteilmanagements}\label{Fig:eis-fehlteilmanagement} +\end{figure} + +Dieser Programmteil zeigt die momentanen Fehlteile und alle daf�r laufenden Bestellungen auf. + +Als erstes wir eine Liste mit allen Projekten in denen noch Teile fehlen generiert. Von dieser kann je ein Drilldown mit einer Gruppierung nach Lieferanten oder nach Baugruppen aufgerufen werden. Die beiden Drilldowns bieten dabei leicht unterschiedliche Funktionen. + +Da das Fehlteilmanagement mich recht lange besch�ftigt hat und auch im Montageinformationssystem integriert ist, m�chte ich hier etwas genauer darauf eingehen. + +Anzumerken w�re hier vielleicht noch, dass das Fehlteilmanagement auch die komplizierteste Datenbeschaffung hatte --- Joins �ber zw�lf Tabellen, ebensoviele Where-Bedingungen und eine getrennte Behandlung von kundenspezifischen und Standardartikeln. Hier hatte ich dann auch Performanceprobleme die nun zwar nicht ganz verschwunden, aber inzwischen in einem ertr�glichen Rahmen sind. Im Nachhinein gesehen, w�re es vielleicht besser gewesen, einfacheres SQL und daf�r komplexeres PHP zu verwenden. Inwiefern die Geschwindigkeit dabei gestiegen (und die Lesbarkeit des Codes eventuell gesunken) w�re, dar�ber kann ich nur spekulieren. + + +\subsubsection{Drilldown nach Lieferanten} + +Die Tabelle ist logisch dreigeteilt: +\begin{itemize} + \item Die linken acht Spalten (bis zur senkrechten schwarzen Linie) enthalten Daten zum Artikel selbst. + \item Die n�chsten vier Spalten stellen die Bestellung dar. Laufen mehrere Bestellungen die auf diesen Artikel passen, so werden sie allen angezeigt. Das Lieferdatum ist r�tlich hinterlegt, falls die Bestellung erst nach dem ben�tigten Datum eintreffen w�rde. + \item Die letzten Spalten erm�glichen es den Eink�ufern zus�tzliche Informationen zu den Bestellungen einzutragen und sich selbst an Bestellungen erinnern zu lassen. +\end{itemize} + +\begin{figure}[hbt] + \centering + \includegraphics[width=14cm]{Pics/eis-ftm-drilldown-lieferanten.png} + \caption{Drilldown nach Lieferanten im Fehlteilmanagement}\label{eis-ftm-drilldown-lieferanten} +\end{figure} + +Dieser dritte Tabellenteil verbindet dann auch das Einkaufs- mit dem Montageinformationsystem. Denn die eingetragenen Notizen k�nnen �ber das Montageinformationssystem abgerufen werden. Eingetragene verschobene Liefertermine oder bereits vollzogenen Mahnungen ersparen so manchen Anruf. + +Mit der \textit{Erinnerung in X Tagen} kann man sich in einer selbst gew�hlten Anzahl von Tagen eine Erinnerung zukommen lassen. Diese wird von einem Job automatisch per Email verschickt. +Die Email-Adressen wurden dabei �ber eine Abfrage des LDAP-Verzeichnises gewonnen. + +Am Anfang der Seite und �ber jeder Baugruppe befindet sich ein Link mit dem ein PDF-Dokument der ganzen Seite oder nur der einzelnen Baugruppe erzeugt werden kann. Dieses ist besser zum Ausdrucken geeignet und kann problemlos per Email verschickt werden. +PDFs habe ich mit der FPDF-Bibliothek\footnote{\textit{FPDF} ist Freeware und auf http://fpdf.org zu finden.} erstellt. Die einzige Schwierigkeit dabei war das �berf�hren eines (eher) flie�enden Layouts in HTML in ein Layout mit absoluten Ma�en im PDF. Gr��ere Probleme gab es dabei allerdings nicht. + + + +\subsubsection{Drilldown nach Baugruppen} + +\begin{figure}[hbt] + \centering + \includegraphics[width=14cm]{Pics/eis-ftm-drilldown-baugruppen.png} + \caption{Drilldown nach Baugruppen im Fehlteilmanagement}\label{eis-ftm-drilldown-baugruppen} +\end{figure} + +Die Aufteilung der Tabelle entspricht der im Lieferantendrilldown. + +Anders sind hingegen die letzten Spalten. Der Drilldown nach Baugruppen stellt hier so etwas wie das Gegenst�ck zum Drilldown nach Lieferanten dar. Die Bemerkungen k�nnen hier nur gelesen werden, daf�r k�nnen Aufforderungen zur�ck an die Eink�ufer geschickt werden, dass sie ihre Bestellungen �berpr�fen sollten. + +Funktionen wie diese gehen �ber das urspr�ngliche Programmkonzept hinaus. Sie sind erst im Laufe der Programmentwicklung aufgekommen und herangereift. Es war h�ufig so, dass das Programm erst mit dem Programmieren gewachsen ist und seine endg�ltige Gestalt bekommen hat. Dies war vor allem durch den engen Kontakt mit den Anwendern m�glich. Sie haben jede Programmversion direkt getestet und mir Verbesserungen, Anregungen und W�nsche mitgeteilt. Mir hat es gut gefallen, auf diese Weise Programme zu ``erarbeiten''. + + +An dieser Stelle m�chte ich nun zum Montageinformationssystem (kurz \textit{MontIS}) �berleiten.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Fazit.tex Sun Apr 15 02:44:56 2007 +0200 @@ -0,0 +1,41 @@ +\section{Fazit} + + +Mein prim�rer Grund mich bei \textbf{MAKA} zu bewerben, war das Aufgabenprofil der ausgeschriebenen Stelle: +\begin{quote} +Intranetprogrammierung mit PHP und MySQL +\end{quote} + +Da ich privat diese Technologie schon seit einigen Jahren verwende, war es mir jetzt wichtig, durch viel praktische Anwendung meine Kenntnisse zu festigen und auszubauen. Wo mein PHP-K�nnen schon recht gut war, gingen meine (My)SQL-F�higkeiten nur wenig �ber Grundkenntnisse hinaus. + +Diese Erwartung an das Praxissemester wurde voll erf�llt. Meine PHP-Kenntnisse haben sich stark gefestigt, der Umgang mit der Scriptsprache ist nun solide und sicher. +Aber was mir noch wichtiger ist: Die vorhandenen Kenntnisse haben sich nicht nur eingefahren, sondern ich habe sie auch konsequent ausbauen k�nnen. Das geht vom Erlernen der objektorientierten Bestandteile von PHP, �ber das Entwerfen von Standardklassen f�r die t�gliche Arbeit (z.B. eine Datenbankklasse), bis hin zum \textit{Verstehen} der Sprache an sich und ihrer Grenzen. + +Ich habe das Gef�hl, dass ich PHP wirklich kennen gelernt habe und dass sich mein Kenntnisniveau deutlich gehoben hat. + + + +Als zweiten gro�en Part war die Datenbanksprache SQL, in ihrer Unterart MySQL, vertreten. Meine zu Beginn eher grunds�tzlichen Kenntnisse erfuhren einen richtigen Sprung nach vorne. Bald schon waren umfangreiche Joins kein Problem mehr und wenig sp�ter formulierte ich sie mit sicherem Gef�hl. Der Sprachumfang von SQL ist bekannterma�en nicht die Schwierigkeit, welche dagegen im Planen des besten Weges zu den richtigen Daten zu finden ist. Gerade an dieser Stelle habe ich durch die viele �bung einen Erfahrungsschatz ansammeln k�nnen, der durch Themen wie Indizierung und Queryoptimierung sinnvoll erg�nzt wird. + + + +Abseits der Programmiersprachen habe ich die Gelegenheit genutzt, um auch meinen Workflow zu optimieren. Was diesen Bereich angeht, so lie� mir \textbf{MAKA} hier viele Freiheiten, um die ich sehr froh war. Denn nur dadurch konnte ich \textit{meinen} Weg finden und einen Arbeitsablauf entwerfen, der mir entspricht. + +Leider stand mir kein UNIX-System zur Verf�gung, aber das w�re auch nur die absolute Kr�nung gewesen. Dennoch habe ich die M�glichkeit genutzt, den \textit{Vim}\footnote{Der \textit{Vim} ist ein verbesserter \textit{vi} welcher unter UNIX-Systemen zum Standard geh�rt. Der \textit{Vim} ist freie Software und kann unter http://vim.org heruntergeladen werden.} als Editor zu verwenden. Vor diesen sechs Monaten hatte ich ihn nur hin und wieder eingesetzt, jetzt kann ich ohne ihn nicht mehr leben! ;-)\footnote{hier soll mir ein Smiley erlaubt sein *grins* } + + + +Nicht zu vergessen ist jedoch das Wirtschaftswissen, das ich mir w�hrend der meiner Zeit bei \textbf{MAKA} aufgenommen habe. Bereitwillig und von sich aus wurden mir die Vorg�nge im Unternehmen erkl�rt. Immer wieder wurde wurden mir Gelegenheiten angeboten, die internen Abl�ufe zu verstehen. An vielen Stellen konnte ich dabei Verbindungen zu den Vorlesungen der ersten Semester herstellen. + + +\vspace{2cm} + +{\bf +F�r mich war dieses Praxissemester eine gro�e Bereicherung und die Erfahrungen die ich in diesen sechs Monaten gemacht habe, werden mir in meinem Studium mit Sicherheit von gro�em Nutzen sein. + +Ich m�chte mich daf�r herzlich bei der Firma \textit{MAKA - Max Mayer Maschinenbau GmbH} bedanken --- es war eine tolle Zeit! +} + +\vspace{5cm} +Markus Schnalke\\ +Breitingen, den \today
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Makefile Sun Apr 15 02:44:56 2007 +0200 @@ -0,0 +1,23 @@ +# Makefile fuer den PS-Bericht + +SRC = main.tex +OBJ = ${SRC:.tex=.pdf} + +all: xpdf + +#.tex.pdf: +# @echo pdflatex $< +# @pdflatex $< + +${OBJ}: ${SRC} + @echo pdflatex $@ + @pdflatex ${SRC} + @pdflatex ${SRC} + +xpdf: ${OBJ} + @echo xpdf $@ + @xpdf -z page ${OBJ} + @rm ${OBJ} + + +.PHONY: all xpdf
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Milestones.tex Sun Apr 15 02:44:56 2007 +0200 @@ -0,0 +1,21 @@ +\vspace{2cm} +{\Large \textbf{Milestones}} + +\begin{center} +\renewcommand{\baselinestretch}{1.4}\normalsize +\begin{tabular}{p{2cm}p{11cm}} + \textbf{Datum} & \textbf{Event}\\ \hline + + 04.09.2006 & Praktikumsbeginn \\ + 06.09.2006 & Besprechung EIS-Tagesgesch�ft \\ + 10.10.2006 & Pr�sentations EIS-Tagesgesch�ft \\ + 11.10.2006 & Besprechung EIS-Fehlteilmanagement \\ + 09.11.2006 & Pr�sentation EIS-Fehlteilmanagement \\ + 15.01.2007 & Besprechung Translator-Datenbank \\ + 09.02.2007 & Diskussion Translator-Datenbank \\ + 09.02.2007 & Pr�sentation MontIS \\ + 21.02.2007 & Pr�sentation Translator-Datenbank \\ + 02.03.2007 & Praktikumsende \\ +\end{tabular} +\renewcommand{\baselinestretch}{1}\normalsize +\end{center}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Montis.tex Sun Apr 15 02:44:56 2007 +0200 @@ -0,0 +1,96 @@ +\section{Das Montageinformationssystem} + + +Das Programm ist nach Konzept deutlich umfangreicher, es wurde allerdings beschlossen, dass zum jetzigen Zeitpunkt nur ein Teil dessen umgesetzt werden sollte. Dies sind die beiden Reiter: +\begin{itemize} + \item Fehlteilmanagement + \item Liefertreue +\end{itemize} + +Der Aufwand daf�r wurde dadurch verringert, dass beide Programmteile auch schon im Einkaufsinformationssystem implementiert waren. Die Liefertreueanalyse von meinem Vorg�nger das Fehlteilmanagement von mir. Somit war das reine Programmieren der Reports nicht das gro�e Problem --- sie mussten zum gro�en Teil nur angepasst und mit anderen Daten versorgt werden. + +\begin{figure}[hbt] + \centering + \includegraphics[width=10cm]{Pics/montis-liefertreue-maske.png} + \caption{Maske der Liefertreueanalyse im MontIS}\label{Fig:montis-liefertreue-maske} +\end{figure} + +Inzwischen kannte ich mich schon ganz gut mit der Datenbank des ERP-Systems und dem DBSRV-Framework aus und so war es gut, dass ich nun mit einem neuen Programm auch selbst neue Strukturen aufbauen konnte. Inzwischen hatte ich die Probleme und Umst�ndlichkeiten des Einkaufsinformationssystems kennengelernt und wollte an diesen Stellen das MontIS besser machen. + +Ich nahm mir also Zeit um mir ein Grundger�st zu bauen, das allgemein und skalierbar genug war um die einzelnen Reports dann ohne viel Anpassung der Programmbasis einbauen zu k�nnen. Auch habe ich zu diesem Zeitpunkt angefangen mir Klassen f�r wiederkehrende Anforderungen zu schreiben. Eine Datenbankklasse und eine zur Handhabung und Ausgabe von Ergebnistabellen seien hier erw�hnt. + +An denen Punkten meiner neuen Struktur, an denen ich keine �berzeugende L�sung finden konnte, habe ich auf die alten Strukturen aus dem EIS zur�ckgegriffen. So konnte ich kreativ neue Ans�tze einarbeiten, hatte jedoch jederzeit auch eine funktionierende (wenn auch nicht immer gute) Implementierung als Fallback zur Verf�gung. Mein Montageinformationssystem wurde dann zu eben jener Mischung aus Neuem und Altem und entspricht der Entwicklung meiner F�higkeiten. + +Auch bot das MontIS eine bessere �bersicht und Handhabbarkeit die das, meiner Meinung nach, etwas �berladene Einkaufsinformationssystem missen lie�. + + +Das Fehlteilmanagement entspricht dabei in den meisten Punkten dem des EIS. Die Liefertreueanalyse dagegen m�chte ich n�her vorstellen. + + + + +\subsection{Liefertreueanalyse} + +Die Optik und Struktur des Reports wurden sein Gegenst�ck aus dem Einkaufsinformationssystem angelehnt. Die Anpassungen waren eher Restrukturierungen des Source-Codes, und die andere Datenbasis nat�rlich. + +Hier hatte ich nun auch Gelegenheit mich mit den Diagrammklassen des \textit{jpgraph}-Pakets zu besch�ftigen. Zwei damit erstellt Diagramme stellen auf der ersten Seite des Reports die grunds�tzlichen Verteilungen auf einfach erfassbare Weise dar. + +\begin{figure}[hbt] + \centering + \includegraphics[width=14cm]{Pics/montis-liefertreue-analyse.png} + \caption{Liefertreueanalyse der Montage}\label{Fig:montis-liefertreue-analyse} +\end{figure} + +Im linken oberen Bereich zeigt ein Balkendiagramm die Lieferdatumsabweichungen der Fertigung �ber die letzten 13 Monate an. Um eventuell Beeinflussungen durch die Auftragsmenge erkennen zu k�nnen wurde die Anzahl der Auftr�ge und deren Umsatz als Linien im Hintergrund ebenfalls dargestellt. Die flache rote Linie zeigt dabei die Anzahl der kurzfristig angelegten Auftr�ge die somit kaum geplant werden k�nnen. + +Darunter befinden sich zwei Kuchendiagramme die Gesamtverteilungen f�r das laufende und vorherige Jahr anzeigen. + +Auf der rechten Seite sind diese Werte noch einmal als Absolut- und Prozentzahlen verf�gbar. + + +Die Zeitr�ume in denen Lieferungen als ``zu fr�h'', ``p�nktlich'', ``zu sp�t'' und ``viel zu sp�t'' gewertet werden, sind in einer Includedatei global f�r das ganze Programm festgelegt und werden in den Reports dann dynamisch von dort bezogen. Ich habe stets darauf geachtet \textit{Magic Numbers}\footnote{\textit{Magic Numbers} sind hier feste Zahlen im Code die nicht 0 oder 1 sind} zu vermeiden und solche Werte immer dynamisch und zentral zu beziehen. + + +F�r das laufende und vorige Jahr ist je ein Drilldown verf�gbar der zu einer Monatssummen�bersicht f�hrt. In dieser lassen sind nun ganz konkret alle einzelnen Lieferp�nktlichkeiten und Monate aufschl�sseln - jede Kombination und die jeweiligen Summen. + +\begin{figure}[hbt] + \centering + \includegraphics[width=10cm]{Pics/montis-liefertreue-msummen.png} + \caption{Monatssummendrilldown der Liefertreueanalyse}\label{Fig:montis-liefertreue-msummen} +\end{figure} + +Jede unterstrichene Zahl f�hrt weiter auf einen Drilldown mit genau diesen Auftr�gen. + +Man sieht die Vorlaufzeit\footnote{Hier die Zeit zwischen Anlagedatum und geplantem Lieferdatum. Normalerweise w�rde man aber nur die Zeit von Anlage bis zum geplanten Montagebeginn als Vorlaufzeit bezeichnen} welche rot hinterlegt ist, falls sie k�rzer als sieben Tage ist. In diesem Fall w�rde man sie als ``Schnellsch�sse'' bezeichnen. Diese Schnellsch�sse entsprechen der, im Balkendiagramm auf der ersten Reportseite enthaltenen, roten Linie. + +Der zweite entscheidende Wert ist die Abweichung zwischen geplantem und tats�chlichem Lieferdatum, die mit den bekannten Farben in die vier Zeitr�ume aufgeteilt ist. + +\begin{figure}[hbt] + \centering + \includegraphics[width=10cm]{Pics/montis-liefertreue-drilldown.png} + \caption{Detaillierter Drilldown auf einzelne Auftr�ge}\label{Fig:montis-liefertreue-drilldown} +\end{figure} + +Wie alle gr��eren Tabellen in meinen Programmen wurde diese mithilfe meiner selbst geschriebenen \texttt{Ergebnisklasse.class.php} gef�llt, sortiert und ausgegeben. Wie man an den Pfeilen in der zweiten Titelzeile sieht, kann diese Tabelle nach jeder beliebigen Spalte sortiert werden. Diese Funktionalit�t war dank der Klasse mit minimalem Mehraufwand m�glich und wurde deshalb auch konsequent verwendet. + + + + +\subsection{Suchprofile} + +Wie bereits in einem anderen Programm auf dem DBSRV implementiert, sollte auch das Montageinformationssystem \textit{Suchprofile} zur Verf�gung stellen. Dabei handelt es sich um die M�glichkeit eine ausgef�llte Maske abzuspeichern und jederzeit wieder aufzurufen. So k�nnen bestimmte Reports ohne erneutes Ausf�llen der Maske nochmal aufgerufen werden. Ein Beispiel daf�r w�re eine Abfrage die sich nur auf eine bestimmte Untermenge von Produktionsauftr�gen und Artikelnummern bezieht. + +Als der Wunsch aufkam dieses Feature ins MontIS einzubauen, war es f�r mich ein tolles Gef�hl festzustellen, dass sich meine Grundstruktur nun auszahlte. In ein paar Stunden war es mir m�glich die Funktionalit�t komplett einzubauen ohne gr��ere �nderungen am Programm vornehmen zu m�ssen. Gleichzeitig konnte ich die Realisierung flexibel und skalierbar halten. So ist es nun m�glich beliebig neue Enschr�nkungsfelder zur Maske hinzuzuf�gen oder wegzunehmen --- an den Suchprofilen muss dazu nichts ver�ndert werden. Ebenso funktionieren auch alte gespeicherte Profile mit neuen Masken. + +W�rde man die gleiche Funktionalit�t im Einkaufsinformationssystem einbauen m�chten, so w�rde es wohl mehrere Tage in Anspruch nehmen und w�re doch deutlich statischer. + +\begin{figure}[hbt] + \centering + \includegraphics[width=4cm]{Pics/montis-suchprofile.png} + \caption{Men� f�r Suchprofile}\label{Fig:montis-suchprofile} +\end{figure} + + + + +Nach Abschluss des Einkaufs- und des Montageinformationssystems folgte ein komplett anderes Projekt: Die Reimplementierung der Translator-Datenbank in PHP und MySQL.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Rahmenbedingungen.tex Sun Apr 15 02:44:56 2007 +0200 @@ -0,0 +1,15 @@ +\section{Rahmenbedingungen} + + +Bevor ich n�her auf meine T�tigkeit f�r die \textbf{Max Mayer Maschinenbau GmbH} eingehe, m�chte ich zuerst die gegebene Entwicklungssituation beschreiben. + +Grunds�tzlich hatte ich sehr viele Freir�ume die Situation an meine W�nsche und Bed�rfnisse anzupassen. + +Die Entwicklung der Programme fand stets im direkten Kontakt mit den sp�teren Anwenden statt. Das war, vor allem zu Beginn aber auch sp�ter noch, notwenig, da oft nur sie das n�tige Hintergrund- und Praxiswissen hatten. + +Des Weiteren entwickelte ich direkt am Live-System. Anfangs war ich dar�ber eher �berrascht, h�tte ich mir dies in einem Unternehmen wie \textbf{MAKA} nicht vorstellen k�nnen. Doch diese scheinbare Unprofessionalit�t stellte sich schnell als sehr erfolgreich heraus. �nderungen und Neuentwicklungen meinerseits waren auf diese Weise sofort verf�gbar und in Verbindung mit dem engen Anwenderkontakt konnte ich von ihrem direkten Feedback profitieren. +Mit der Entwicklung am Live-System wird aber nat�rlich in Kauf genommen, dass es entwicklungsbedingt zu Ausf�llen kommen kann. Da das System nicht von \textit{entscheidender} Notwendigkeit ist, sondern eher Zusatznutzen und Komfort bietet, ist dies akzeptabel. Im Allgemeinen treten Ausf�lle nur in Programmteilen auf, an denen gerade programmiert wird. + +Ein weiterer Punkt um dieses Vorgehen verst�ndlich zu machen, ist die Dynamik des Systems selbst. W�hrend ich mir einem Programmteil besch�ftigt war, habe ich nebenher auch kleine �nderungsw�nsche und Bugfixes f�r andere (�ltere) Programmteile umgesetzt. Eigentlich gibt es kein \textit{abgeschlossen} bei diesen Programmen, denn sie alle sind einer st�ndigen Ver�nderung und Anpassung unterworfen. Dieses System \textit{lebt} ... auch weil st�ndig daran programmiert wird. + +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Style01.tex Sun Apr 15 02:44:56 2007 +0200 @@ -0,0 +1,15 @@ + +\setkomafont{sectioning}{\normalfont\normalcolor\bfseries} + +\setlength{\parindent}{0em} +\setlength{\parskip}{1.0ex plus 1.0ex minus 0.5ex} + +\pagestyle{scrheadings} + +\setcounter{tocdepth}{2} + + + +\ifoot[]{\textsc{Markus Schnalke}} +\cfoot{} +\ofoot[]{\thepage}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Titel.tex Sun Apr 15 02:44:56 2007 +0200 @@ -0,0 +1,37 @@ +\begin{titlepage} + +\title{Praxissemester bei MAKA} +\author{markus schnalke} + + +\thispagestyle{empty} + +%\maketitle +% +%\begin{center} +% Dies ist der Bericht zu meinem ersten Praxissemester im Studiengang Wirtschaftsinformatik an der Hochschule Ulm. Ich w�hlte die \textbf{MAKA - Max Mayer Maschinenbau GmbH} +% \small{Dieser Bericht ist untersteht einer Creative Commons-Lizenz\footnote{Namensnennung-NichtKommerziell-KeineBearbeitung 2.5: http://creativecommons.org/licenses/by-nc-nd/2.5/deed.de}. Ausgenommen hiervon sind die zitierten Texte.} +%\end{center} + + +\begin{flushright} + +\rule[8cm]{0cm}{0cm} +{\Huge Mein Praxissemester\\ bei \textbf{MAKA}} + +\rule[2cm]{0cm}{0cm} +\textsc{Markus Schnalke\\MatNr: 039131} + +\end{flushright} + + + +\rule[7cm]{0cm}{0cm} + +\textit{Dies ist der Bericht zu meinem ersten Praxissemester im Studiengang Wirtschaftsinformatik an der Hochschule Ulm. Ich absolvierte dieses Praktikum in der IT-Abteilung der \textbf{MAKA - Max Mayer Maschinenbau GmbH} in Nersingen.} + +{\tiny Dieses Dokument untersteht einer Creative Commons-Lizenz (Namensnennung - NichtKommerziell - KeineBearbeitung 2.5). } + + +\end{titlepage} +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TranslatorDb.tex Sun Apr 15 02:44:56 2007 +0200 @@ -0,0 +1,115 @@ +\section{Die Translator-Datenbank} + + + +\textbf{MAKA} ist ein Unternehmen, das seine Maschinen europaweit (und einzeln auch in alle Welt) verkauft. Per Gesetz muss die bei der Maschine mitgelieferte Dokumentation in einer landestypischen Sprache verfasst sein. F�r die St�ckliste, als Teil der Dokumentation gilt das somit auch. Nun sind St�cklisten bei zwei Maschinen quasi nie identisch, aber auch selten komplett verschieden. Komplette Neu�bersetzungen w�ren also Zeit- und Geldverschwendung, Wiederverwendbarkeit von �bersetzungen ist aber auch nur auf Artikelebene gegeben. + +Aus diesen Gr�nden wurde schon vor einigen Jahren ein Access-Programm geschrieben um sprachlich angepasste St�cklisten generieren zu k�nnen. Es konnten �bersetzungen eingetragen und dann fertige St�cklisten gedruckt werden. Dieses Programm hatte gerade bei der Performance und durch die n�tige Sonderbehandlung von speziellen Baugruppen so seine Probleme. Nun war es meine Aufgabe dieses Programm in PHP und MySQL neu zu schreiben und in das DBSRV-Projekt einzugliedern. + +\begin{figure}[hbt] + \centering + \includegraphics[width=10cm]{Pics/translator-db-maske-de.png} + \caption{Startmaske der Translator-Datenbank} +\end{figure} + + +Nachdem ich im Montageinformationssystem schon einige grunds�tzliche �berlegungen zur Grundstruktur des Programms umsetzten konnte, aber dennoch noch stark an die vom Einkaufsinformationssystem vorgegebene Struktur angelehnt war, hatte ich nun mit der Translator-Datenbank die M�glichkeit ein Programm komplett auf ein selbst designtes Strukturkonzept aufzubauen. Diese M�glichkeit war mir sehr wichtig, da ich mir �ber Programmdesignfragen viele Gedanken mache und meine �berlegungen dazu nat�rlich auch in der Praxis erproben m�chte. Zudem ist es ein unbefriedigendes Gef�hl mit konzeptionell schlechten Programmstrukturen zu arbeiten. Oft finden sich die Unzul�nglichkeiten von Konzepten halt erst bei ihrem Einsatz. Sie dann umzustellen erfordert (auch bei Extreme Programming) immer gro�en Refactoring-Aufwand. So l�uft es meist darauf hinaus, dass man an der gegebenen, nicht optimalen, aber dennoch brauchbaren Programmbasis festh�lt. Wichtig ist dann halt, dass man beim n�chsten Programmdesign die Probleme des Vorhergehenden zu eliminieren versucht. + +Ich hatte nun die Gelegenheit die Erfahrungen aus EIS und MontIS mit meinem sonstigen neu erworbenen Wissen zu verschmelzen und daraus das bestm�gliche Grundger�st f�r die Translator-Datenbank zu kreieren. Sch�n war dabei, dass ich mich gleichzeitig recht wenig um die eigentliche Funktion des Programms k�mmern musste, da es ein Vorg�ngerprogramm als Muster gab und die Programmlogik nicht besonders komplex war. Eine perfekte Ausgangssituation! + + + +Die verschiedenen Funktionen der Translator-Datenbank wurden in drei Hauptteile gegliedert. +\begin{itemize} + \item St�ckliste generieren\\ + Hier kann eine St�ckliste in der ausgew�hlten Sprache als PDF erzeugt werden. + \item St�ckliste �bersetzen\\ + Erzeugt ein HTML-Formular mit allen noch fehlenden �bersetzungen eines Projekts, oder generiert eine Excel-Tabelle f�r externe �bersetzungsb�ros. + \item Datenpflege\\ + Erm�glicht die direkte Bearbeitung der Datenbank. Dies ist nur ausgew�hlten Personen gestattet. +\end{itemize} + +Im Folgenden m�chte ich nun einzelne Funktionen der Translator-Datenbank genauer erkl�ren. + + + + + +\subsection{Mehrsprachigkeit} + +Eine zentrale Anforderung der Translator-Datenbank war ihre Mehrsprachigkeit. Da das Programm auch von den der Tochterfirma \textbf{MAKA-UK} und sp�ter eventuell auch von den anderen Auslandsvertretungen genutzt werden sollte, musste die Benutzeroberfl�che in verschiedenen Sprachen anw�hlbar sein. Die Menge dieser Sprachen sollte dynamisch erweiterbar sein. Ebenso war eine beliebige Anzahl von Sprachen f�r St�cklisten�bersetzungen gefordert. + +Die Benutzeroberfl�che wird mit Texten aus Sprachdateien versorgt, die mittels einer PHP-Klasse \texttt{Gettext.class.php} ausgelesen werden. Im Programmquellcode selbst stehen lediglich Textidentifikator die dem Objekt der Gettext-Klasse �bergeben werden. Zur�ckgeliefert wird dann der betreffende Text in der Sprache mit der das Objekt initialisiert wurde. Das folgende Codebeispiel demonstriert die Verwendung: + +\begin{verbatim} +<?php + + include 'Classes/Gettext.class.php'; + + // the language for the translation is taken from the session + $gt = new Gettext($_SESSION['lang_gui']); + + echo $gt->_('hello_world'); + +?> +\end{verbatim} +Ausgegeben wird dabei je nach eingestellter Sprache ``Hallo Welt!'', ``Hello world!'', oder was auch immer in der jeweiligen Sprachdatei f�r den Identifikator \texttt{hello\_world} hinterlegt ist. + +Fehlende Texte werden in der Form \texttt{\#\#identifier\#\#} zur�ckgegeben. Auf diese Weise bleibt das Programm jederzeit benutzbar, auch wenn Sprachdateien nicht komplett sind. Ebenso ist es m�glich auch nicht vollst�ndig �bersetzte St�cklisten zu generieren; die fehlenden Bezeichnungen bleiben leer und k�nnen gegebenenfalls auch von Hand nachgetragen werden. Eine derartige Vorgehensweise ist keineswegs angestrebt, aber trotzdem erm�glicht um die reine Funktion des Programms zu erhalten. + +Die Sprachen f�r die Programmoberfl�che und f�r die St�cklisten kann im oberen linken Bereich der Startmaske gew�hlt werden. Ein Wechsel der Oberfl�chesprache wird sofort wirksam. Das hei�t, die komplette Oberfl�che ist sofort in der gew�hlten Sprache nutzbar. Die Sprachauswahl f�r die Oberfl�che zeigt dabei die Sprachnamen in der jeweiligen Sprache selbst an, die Dropdownbox mit den Sprachen f�r die St�cklisten ist in der gew�hlten Oberfl�chensprache. Das Programmdesign sollte an jeder Stelle die erwartete Implementierung bieten --- auch \textit{Principle of least surprise} genannt. + + + +\subsection{Standardst�cklisten} + +Um alte Maschinen auch nachtr�glich mit St�cklisten versorgen zu k�nnen, wurde diese inzwischen �berholte Form der St�cklisten ebenfalls implementiert. Die Unterscheidung welcher St�cklistentyp erzeugt werden muss, geschieht automatisch anhand der Projektnummer. Die Algorithmen um die St�cklisten aufzustellen unterscheiden sich grundlegend. Wo f�r neue Projektst�cklisten flache Datenbankabfragen gen�gen m�ssen die Standardst�cklisten rekursiv als Baum aufgebaut werden. Wobei keine Baugruppe mehrfach in der St�ckliste vorkommen soll, statt dessen m�ssen nur die Mengen angepasst werden. + +Bei der Vorg�ngerversion der Translator-Datenbank in Access war es noch Aufgabe des Anwenders, sich um all diese Sonderf�lle zu k�mmern, jetzt bekommt der Benutzer von all dem gar nichts mehr mit. + + + +\subsection{Datenpflege} + +\begin{figure}[hbt] + \centering + \includegraphics[width=10cm]{Pics/translator-db-datenpflege-wenigerspalten.png} + \caption{Datenpflege mit ausgeblendeten Spalten}\label{Fig:datenpflege-wenigerspalten} +\end{figure} + +Im Datenpflege-Fenster werden alle Datens�tze der Datenbank aufgelistet. Um die vielen Datens�tze handhabbar zu halten, wurde eine seitenweise Darstellung gew�hlt. Die Navigation um durch die Seiten zu bl�ttern, zeigt nur eine sinnvolle Anzahl von Seitenzahlen an. Die Tabellenspalten zeigen die in der Datenbank hinterlegten Spalten an. Um die �bersichtlichkeit zu f�rdern k�nnen einzelne Spalten aus und wieder eingeblendet werden, wie in Abbildung \ref{Fig:datenpflege-wenigerspalten} zu sehen ist. Die Spalten werden dynamisch verwaltet, das hei�t, es werden einfach alle Spalten deren Spaltenname einem bestimmten Schema entspricht als Sprachspalten angesehen und eingef�gt. + +Die Datens�tze k�nnen nach Artikelnummer eingeschr�nkt oder nach einem Begriff gefiltert werden. Zudem kann die Tabelle nat�rlich nach allen Spalten sortiert werden. + +Die einzelnen Datens�tze k�nnen hier bearbeitet, gel�scht und neue Datens�tze k�nnen angelegt werden. + + +\subsubsection{Datensatz bearbeiten} + +Beim Speichern von �bersetzungen habe ich erneut stark darauf geachtet, dass das Programm automatisch die erwartete Funktion ausf�hrt. So werden Datens�tze nur �berschrieben wenn lediglich �bersetzungen angepasst wurden. Besteht allerdings die Gefahr, dass unbeteiligte Daten �berschrieben werden, was bei einer falsch getippten Artikelnummer der Fall w�re, dann werden beide Datensatzversionen gegen�bergestellt und dem Benutzer die Entscheidung �berlassen, welche Daten gespeichert werden sollen. Dies ist in Abbildung \ref{Fig:bearbeiten-auswaehlen} zu sehen. + +\begin{figure}[hbt] + \centering + \includegraphics[width=14cm]{Pics/translator-db-bearbeiten-auswaehlen.png} + \caption{Zwei �bersetzungen kollidieren und der Benutzer muss entscheiden}\label{Fig:bearbeiten-auswaehlen} +\end{figure} + + + + + +\subsection{Das Dictionary} + +Ein f�r den User eigenst�ndiges Programm, aber intern doch direkt mit der Translator-Datenbank verbunden und auch aus ihr hervorgegangen, ist das \textit{Dictionary}. Dieses ist eine Art Nachschlagewerk f�r �bersetzte Artikelbezeichnungen und f�r alle Mitarbeiter zug�nglich. Von einer simplen Startmaske kommt man zu einer Ansicht die der Translator-Datenbank-Datenpflege nachempfunden ist. Hier wird auf den Datenbestand allerdings nur lesend zugegriffen. Sinn des Dictionary ist es, eine Unterst�tzung im internationalen Kontakt zu sein, um auf einheitliche Bezeichnungen zur�ckgreifen zu k�nnen. + +Wie auch in der Datenpflege der Translator-Datenbank k�nnen die Datens�tze beliebig sortiert, gefiltert und nach Artikelnummer eingeschr�nkt werden. Auch lassen sich einzelne Sprachspalten ein- und ausblenden um die �bersicht zu f�rdern. + +\begin{figure}[hbt] + \centering + \includegraphics[width=14cm]{Pics/dictionary-woerterbuch-frames.png} + \caption{Typische Ansicht des Dictionary mit markierten Unstimmigkeiten}\label{Fig:dictionary-woerterbuch-frames} +\end{figure} + +Da es in Abbildung \ref{Fig:dictionary-woerterbuch-frames} sehr sch�n sichtbar ist, m�chte ich an dieser Stelle eine weitere M�glichkeit der Datenpflege-Ansicht beschreiben: Indem man nach Sprachspalten sortiert, stehen gleiche Bezeichnungen untereinander. So fallen sehr schnell Unstimmigkeiten bei den �bersetzungen auf, die in Abbildung \ref{Fig:dictionary-woerterbuch-frames} mir farbigen Rahmen hervorgehoben wurden. Diese Abweichungen k�nnen dann nach und nach ausgemerzt werden. + +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Vorwort.tex Sun Apr 15 02:44:56 2007 +0200 @@ -0,0 +1,11 @@ +\section{Vorwort} + + +Als Student einer Fachhochschule habe ich die M�glichkeit in Praxissemestern Einblicke in die Praxis der freien Wirtschaft zu sammeln. Ich sehe darin eine gro�e Bereicherung f�r mich, die Hochschule und das Unternehmen und bin froh diese Chancen nutzen zu k�nnen. + +F�r die 24-w�chige Praktikumszeit hatte ich mir die Firma \textbf{MAKA - Max Mayer Maschinenbau GmbH} im nahen Nersingen als Arbeitgeber ausgesucht. Ich habe diese Zeit auf vielf�ltige Weise genossen und bin mir sicher, ganz viel Erfahrung f�r mein weiteres Studium mitgenommen zu haben. + +Ich m�chte in diesem Bericht, der meine T�tigkeit bei \textbf{MAKA} beschreibt, nun als Erstes kurz das Unternehmen selbst und die IT-Abteilung, der ich zugeh�rig war, vorstellen. Dann allgemeine Dinge zu meiner Arbeit sagen und einige Teile meiner Projekte detaillierter beschreiben. Abschlie�end werde ich ein Fazit des Praxissemesters ziehen. + + +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Ziele.tex Sun Apr 15 02:44:56 2007 +0200 @@ -0,0 +1,28 @@ +\section{Pers�nliche Ziele} + + +Mein prim�rer Grund mich bei \textbf{MAKA} zu bewerben, war das Aufgabenprofil der ausgeschriebenen Stelle: +\begin{quote} +Intranetprogrammierung mit PHP und MySQL +\end{quote} + +Da ich privat diese Technologie schon seit einigen Jahren verwende, war es mir jetzt wichtig, durch viel praktische Anwendung meine Kenntnisse zu festigen und auszubauen. Wo mein PHP-K�nnen schon recht gut war, gingen meine (My)SQL-F�higkeiten nur wenig �ber Grundkenntnisse hinaus. + +Diese Erwartung an das Praxissemester wurde voll erf�llt. Meine PHP-Kenntnisse haben sich stark gefestigt, der Umgang mit der Scriptsprache ist nun solide und sicher. +Aber was mir noch wichtiger ist: Die vorhandenen Kenntnisse haben sich nicht nur eingefahren, sondern ich habe sie auch konsequent ausbauen k�nnen. Das geht vom Erlernen der objektorientierten Bestandteile von PHP, �ber das Entwerfen von Standardklassen f�r die t�gliche Arbeit (z.B. eine Datenbankklasse), bis hin zum \textit{Verstehen} der Sprache an sich und ihrer Grenzen. + +Ich habe das Gef�hl, dass ich PHP wirklich kennen gelernt habe und dass sich mein Kenntnisniveau deutlich gehoben hat. + + + +Als zweiten gro�en Part war die Datenbanksprache SQL, in ihrer Unterart MySQL, vertreten. Meine zu Beginn eher grunds�tzlichen Kenntnisse erfuhren einen richtigen Sprung nach vorne. Bald schon waren umfangreiche Joins kein Problem mehr und wenig sp�ter formulierte ich sie mit sicherem Gef�hl. Der Sprachumfang von SQL ist bekannterma�en nicht die Schwierigkeit, welche dagegen den besten Weg zu den richtigen Daten zu finden ist. FIXME(zitat)FIXME. Gerade an dieser Stelle habe ich durch die viele �bung einen Erfahrungsschatz ansammeln k�nnen, der durch Themen wie Indizierung und Queryoptimierung sinnvoll erg�nzt wird. + + + +Abseits der Programmiersprachen habe ich die Gelegenheit genutzt, um auch meinen Workflow zu optimieren. Was diesen Bereich angeht, so lie� mir \textbf{MAKA} hier ganz viele Freiheiten, um die ich sehr froh war. Denn nur dadurch konnte ich \textit{meinen} Weg finden und einen Arbeitsablauf entwerfen, der mir entspricht. + +Leider stand mir kein UNIX-System zur Verf�gung, aber das w�re auch nur die absolute Kr�nung gewesen. Dennoch habe ich die M�glichkeit genutzt, den Vim\footnote{http://vim.org} als Editor zu verwenden. Vor diesen sechs Monaten hatte ich ihn nur hin und wieder eingesetzt, jetzt kann ich ohne ihn nicht mehr leben! ;-) + + + +Nicht zu vergessen ist das Wirtschaftswissen, das ich mir w�hrend der meiner Zeit bei \textbf{MAKA} aufgenommen habe. Bereitwillig und von sich aus wurden mir die Vorg�nge im Unternehmen erkl�rt. Immer wieder wurde wurden mir Gelegenheiten angeboten, die internen Abl�ufe zu verstehen. An vielen Stellen konnte ich dabei Verbindungen zu den Vorlesungen der ersten Semester herstellen, was meiner Meinung klar f�r die (Fach-)Hochschule spricht.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.lof Sun Apr 15 02:44:56 2007 +0200 @@ -0,0 +1,16 @@ +\contentsline {figure}{\numberline {1}{\ignorespaces Das Firmenlogo}}{4} +\contentsline {figure}{\numberline {2}{\ignorespaces Die Eingabemaske des Tagesgesch\"aft-Programmteils}}{9} +\contentsline {figure}{\numberline {3}{\ignorespaces Die Bestellobligoanalyse}}{10} +\contentsline {figure}{\numberline {4}{\ignorespaces Wiederbeschaffungszeiten eines Artikels von zwei Lieferanten}}{11} +\contentsline {figure}{\numberline {5}{\ignorespaces Startmaske des Fehlteilmanagements}}{12} +\contentsline {figure}{\numberline {6}{\ignorespaces Drilldown nach Lieferanten im Fehlteilmanagement}}{13} +\contentsline {figure}{\numberline {7}{\ignorespaces Drilldown nach Baugruppen im Fehlteilmanagement}}{14} +\contentsline {figure}{\numberline {8}{\ignorespaces Maske der Liefertreueanalyse im MontIS}}{15} +\contentsline {figure}{\numberline {9}{\ignorespaces Liefertreueanalyse der Montage}}{16} +\contentsline {figure}{\numberline {10}{\ignorespaces Monatssummendrilldown der Liefertreueanalyse}}{17} +\contentsline {figure}{\numberline {11}{\ignorespaces Detaillierter Drilldown auf einzelne Auftr\"age}}{18} +\contentsline {figure}{\numberline {12}{\ignorespaces Men\"u f\"ur Suchprofile}}{19} +\contentsline {figure}{\numberline {13}{\ignorespaces Startmaske der Translator-Datenbank}}{20} +\contentsline {figure}{\numberline {14}{\ignorespaces Datenpflege mit ausgeblendeten Spalten}}{23} +\contentsline {figure}{\numberline {15}{\ignorespaces Zwei \"Ubersetzungen kollidieren und der Benutzer muss entscheiden}}{24} +\contentsline {figure}{\numberline {16}{\ignorespaces Typische Ansicht des Dictionary mit markierten Unstimmigkeiten}}{25}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.tex Sun Apr 15 02:44:56 2007 +0200 @@ -0,0 +1,69 @@ +% @file +% @brief PS-Bericht +% @author markus schnalke <meillo@marmaro.de> +% @since 2007-02-17 + + +\documentclass[a4paper]{scrartcl} + + + \usepackage[T1]{fontenc} + \usepackage[latin1]{inputenc} + \usepackage{ngerman} + \usepackage{graphicx} + \usepackage[automark]{scrpage2} + \input{Style01} + + +\begin{document} + + + + \input{Titel} + + \tableofcontents + + + + \newpage + \part{Einleitung} + + \input{Vorwort} + + \newpage + \input{DasUnternehmen} + + \newpage + \input{Rahmenbedingungen} + + + + \newpage + \part{Aufgabenbeschreibung} + + \input{Dbsrv} + + \include{Eis} + + \include{Montis} + + \include{TranslatorDb} + + \include{Dokumentation} + + + \newpage + \part{Abschlie�end} + + \input{Fazit} + + + \newpage + \appendix + + \listoffigures + + \input{Milestones} + + +\end{document}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.toc Sun Apr 15 02:44:56 2007 +0200 @@ -0,0 +1,29 @@ +\contentsline {part}{\numberline {I}Einleitung}{3} +\contentsline {section}{\numberline {1}Vorwort}{3} +\contentsline {section}{\numberline {2}Unternehmensvorstellung}{4} +\contentsline {subsection}{\numberline {2.1}Das Unternehmen}{4} +\contentsline {subsection}{\numberline {2.2}Die IT-Abteilung}{5} +\contentsline {subsection}{\numberline {2.3}\textbf {MAKA} und die Hochschule}{5} +\contentsline {section}{\numberline {3}Rahmenbedingungen}{6} +\contentsline {part}{\numberline {II}Aufgabenbeschreibung}{7} +\contentsline {section}{\numberline {4}Das DBSRV-Projekt}{7} +\contentsline {section}{\numberline {5}Einarbeiten}{8} +\contentsline {section}{\numberline {6}Das Einkaufsinformationssystem}{9} +\contentsline {subsection}{\numberline {6.1}Tagesgesch\"aft}{9} +\contentsline {subsubsection}{\numberline {6.1.1}Bestellobligoanalyse}{10} +\contentsline {subsubsection}{\numberline {6.1.2}Reale Wiederbeschaffungszeit}{10} +\contentsline {subsection}{\numberline {6.2}Fehlteilmanagement}{11} +\contentsline {subsubsection}{\numberline {6.2.1}Drilldown nach Lieferanten}{12} +\contentsline {subsubsection}{\numberline {6.2.2}Drilldown nach Baugruppen}{13} +\contentsline {section}{\numberline {7}Das Montageinformationssystem}{15} +\contentsline {subsection}{\numberline {7.1}Liefertreueanalyse}{16} +\contentsline {subsection}{\numberline {7.2}Suchprofile}{18} +\contentsline {section}{\numberline {8}Die Translator-Datenbank}{20} +\contentsline {subsection}{\numberline {8.1}Mehrsprachigkeit}{21} +\contentsline {subsection}{\numberline {8.2}Standardst\"ucklisten}{22} +\contentsline {subsection}{\numberline {8.3}Datenpflege}{23} +\contentsline {subsubsection}{\numberline {8.3.1}Datensatz bearbeiten}{24} +\contentsline {subsection}{\numberline {8.4}Das Dictionary}{24} +\contentsline {section}{\numberline {9}Dokumentation}{26} +\contentsline {part}{\numberline {III}Abschlie\IeC {\ss }end}{28} +\contentsline {section}{\numberline {10}Fazit}{28}