Please use this identifier to cite or link to this item: http://artemis.cslab.ece.ntua.gr:8080/jspui/handle/123456789/15045
Title: Επισκόπηση Γεννητριών Κώδικα Και Εφαρμογή Στην Παραγωγή Κώδικα Για Τυπικές Λειτουργίες Εφαρμογών
Authors: Σιαμπλης Ηλιας
Ασκούνης Δημήτριος
Keywords: γεννήτριες κώδικα
code generators
Issue Date: 14-Apr-2008
Abstract: Ως γνωστόν οι σημερινές εφαρμογές που σχετίζονται με βάσεις δεδομένων έχουν αυξημένη πολυπλοκότητα και αναλογικά με το μέγεθος της βάσης απαιτούν πλήθος γραμμών κώδικα για να υλοποιηθεί η διεπαφή. Τα νούμερα είναι απαγορευτικά για κάποιον που θα επιχειρήσει να γράψει τον κώδικα χωρίς να έχει βοήθεια από εργαλεία που θα οργανώσουν και θα επισπεύσουν την ανάπτυξη της εφαρμογής.Το θέμα του χρόνου παραγωγής σε εμπορικές εφαρμογές αποτελεί έναν από τους σημαντικότερους παράγοντες για την βιωσιμότητα της εταιρίας που αναλαμβάνει να τις υλοποιήσει. Επίσης το εργατικό δυναμικό απαιτείται να είναι τέτοιο ώστε να μην ανεβάζει το κόστος παραγωγής σε υψηλά επίπεδα. Επίσης όσο μεγαλύτερο είναι το πλήθος των εργαζομένων τόσο δυσκολότερο είναι να συντονιστούν σε κοινούς ρυθμούς και τεχνοτροπίες εργασίας. Ακόμα και από την σκοπιά του εργαζόμενου στην γραμμή παραγωγής, δηλαδή για τον ίδιο τον προγραμματιστή, οι επιθυμητές συνθήκες είναι αυτές που προϋποθέτουν δημιουργική και ουσιαστική εργασία. Αυτό σημαίνει ότι κανένας δεν θέλει να αναλώνεται σε ανούσιες, επαναλαμβανόμενες και μηχανικές διαδικασίες. Είναι πιο ευχάριστο για έναν προγραμματιστή να αφιερώσει την δημιουργικότητα του στο να μελετήσει και να αναπτύξει ένα μοντέλο εργασίας το οποίο θα αυτοματοποιήσει την παραγωγή του. Η αντίθετη περίπτωση, αυτή δηλαδή του να γράφεις ατελείωτες γραμμές κώδικα, εκτός από μονότονη, επίπονη και υπερβολικά αργή εγκυμονεί και κινδύνους. τα λάθη και οι παραλείψεις θα εμφανίζονται συχνά και αποτελούν τροχοπέδη για το σύνολο της παραγωγής.Επίσης χρησιμοποιώντας εργαλεία και τεχνικές ανάπτυξης κώδικα δημιουργούμε ευέλικτες εφαρμογές. Αυτό συμβαίνει γιατί βασιζόμενοι στην τεχνοτροπία της αυτοματοποιημένης διαδικασίας προσδίδουμε αυστηρά ορισμένη διάρθρωση στην εφαρμογή μας. Στην περίπτωση που η παραγωγή προερχόταν από ανθρώπους που έπρεπε να συντονιστούν από τρίτους τότε ενδεχομένως να αντιμετωπίζαμε ασυνέχειες, ασυμβατότητες και ανομοιότητες που προέρχονται από την νοοτροπία του εκάστοτε προγραμματιστή. Αντιθέτως ρυθμίζοντας με βάση τις ανάγκες μας το υπό χρήση εργαλείο που θα αναλάβει να παράγει κώδικα επαναληπτικά θα επιτύχουμε μια συμπαγή αρχιτεκτονική. Έτσι ο κώδικας μας θα είναι απολύτως ελέγξιμος, αναγνώσιμος και εν τέλει τροποποιήσιμος. Σε χιλιάδες γραμμές ακατάστατου κώδικα είναι ανέφικτο να εντοπίσεις λάθη και παραλείψεις, πόσο μάλλον να τον αναβαθμίσεις και να επεκταθείς σε νέες δυνατότητες. Φυσικά η αυτοματοποιημένη παραγωγή δεν υποκαθιστά και δεν υποβαθμίζει τον ρόλο του προγραμματιστή, ούτε στηρίζει την ορθότητα και λειτουργικότητα του παραγόμενου κώδικα στην εγκυρότητα του εκάστοτε εργαλείου. Όπως στην περίπτωση του code generation, ο προγραμματιστής καλείται να μελετήσει και να αναπτύξει το μοντέλο πάνω στο οποίο θα δουλέψει. Με βάση αυτό θα δημιουργήσει τον κώδικα που απαιτεί το εκάστοτε εργαλείο. Επίσης είναι υπεύθυνος για την αρχιτεκτονική, την λειτουργικότητα και την ορθότητα αυτού του μοντέλου. Όταν η εργασία του τελειώσει απλά αφήνει την ‘σκληρή’ επαναλαμβανόμενη δουλειά στο εργαλείο που χρησιμοποιεί. Η δουλειά του δεν υποβαθμίζεται γιατί εξακολουθεί να έχει τον έλεγχο της γραμμής παραγωγής. Αντιθέτως αναβαθμίζεται και αναδεικνύεται η εφευρετικότητα του.Για τους προαναφερθέντες σκοπούς εξετάστηκαν αναλυτικά δυο σημαντικές τεχνοτροπίες. Από τη μία η αντικειμενο-σχεσιακή (O/R mapping) βάση με τα εξειδικευμένα εργαλεία μετάφρασης, που αντιστοιχίζουν σχεσιακές βάσεις σε αντικείμενα κλάσεων, με σκοπό να μας δώσουν μια αντικειμενοστραφή και πιο προσιτή αντιμετώπιση των πινάκων, και εν τέλει να μας απαλλάξουν από τον SQL κώδικα. Από την άλλη οι code generators που απλά ανακτώντας πληροφορίες (meta-data) από την βάση παράγουν ένα απλό κείμενο, το οποίο όμως σε μια πλατφόρμα προγραμματισμού αποτελεί κώδικα για την εφαρμογή μας. Για λόγους που αναλύθηκαν προτιμήσαμε να εργαστούμε χρησιμοποιώντας εργαλεία για code generation και δει το CodeSmith. Το αποτέλεσμα ήταν αναμενόμενο και ανταποκρίνεται στις προσδοκίες μας για τα οφέλη που αναλύθηκαν, όσον αναφορά τη χρήση αυτοματοποιημένων διαδικασιών. Χρειάστηκε να δώσουμε μεγάλη προσοχή στην υλοποίηση των scripts έτσι ώστε να παράγουν τον κώδικα που χρειαζόμαστε. Στην συνέχεια επιλέγοντας έναν-έναν τους πίνακες της βάσης, με την βοήθεια του CodeSmith αποκτήσαμε τον απαιτούμενο κώδικα για την διεπαφή με την βάση και τον χειρισμό οποιουδήποτε πίνακα και εγγραφής της.
URI: http://artemis-new.cslab.ece.ntua.gr:8080/jspui/handle/123456789/15045
Appears in Collections:Διπλωματικές Εργασίες - Theses

Files in This Item:
File SizeFormat 
DT2008-0052.doc2.35 MBMicrosoft WordView/Open


Items in Artemis are protected by copyright, with all rights reserved, unless otherwise indicated.