ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ενδϋκατη Διϊλεξη Καταςκευό Λογιςμικού
Περιεχόμενα Καταςκευό Λογιςμικού Κωδικοπούηςη Τεχνικϋσ Συγγραφόσ Πηγαύου Κώδικα Πρότυπα και Διαδικαςύεσ Κωδικοπούηςησ Επιθυμητϊ Χαρακτηριςτικϊ Πηγαύου Κώδικα Τεκμηρύωςη Εςωτερικό Τεκμηρύωςη Εξωτερικό Τεκμηρύωςη Διαχεύριςη Εκδόςεων
Κωδικοπούηςη (1/3) Διαδικαςύα: ςυγγραφόσ του προγρϊμματοσ παραγωγόσ κώδικα, βϊςει δύο ομϊδων δεδομϋνων: ενδιϊμεςα προώόντα απαιτιςεισ ςυςτιματοσ, απαιτιςεισ λογιςμικοφ και αρχιτεκτονικό και λεπτομερζσ ςχζδιο λογιςμικοφ πρότυπα και αρχζσ κωδικοποίθςθσ, προτάςεισ για το φφοσ και τθ μορφι τθσ κωδικοποίθςθσ και ταυτότθτα γλώςςασ προγραμματιςμοφ μετάφραςθσ του λεπτομεροφσ ςχεδίου ςτθν προεπιλεγμζνθ γλώςςα προγραμματιςμοφ
Κωδικοπούηςη (2/3) Πιο αναλυτικϊ προώποθϋτει: Την επιτυχό ολοκλόρωςη των προηγούμενων φϊςεων του κύκλου ζωόσ Την παραγωγό ςωςτόσ και ενημερωμϋνησ τεκμηρύωςησ, όπωσ αυτό προκύπτει από τισ προηγούμενεσ φϊςεισ Την υιοθϋτηςη προτύπων κωδικοπούηςησ και οδηγιών που προςδιορύζουν τη φιλοςοφύα τησ κωδικοπούηςησ Τον προςδιοριςμό τησ γλώςςασ προγραμματιςμού
Κωδικοπούηςη (3/3) Προώόν κωδικοπούηςησ: Ένασ εςωτερικϊ τεκμηριωμϋνοσ, ελεύθεροσ από ςυντακτικϊ λϊθη, πηγαύοσ κώδικασ Συντακτικό ορθότητα ςημαςιολογικό ορθότητα; Ο μη εντοπιςμόσ ςφϊλματοσ από το μεταγλωττιςτό τησ γλώςςασ προγραμματιςμού δε ςημαύνει ότι το λογιςμικό λειτουργεύ ςωςτϊ
Τεχνικϋσ Συγγραφόσ Πηγαύου Κώδικα (1/8) Δεν υπϊρχει κϊποιοι χρυςού κανόνεσ για τη ςυγγραφό ελεύθερου από λϊθη πηγαύου κώδικα, καθώσ δεν υπϊρχει αλϊνθαςτοσ πηγαύοσ κώδικασ Ωςτόςο, μπορούν να ληφθούν οριςμϋνα μϋτρα προκειμϋνου ο κώδικασ που θα παραχθεύ να ϋχει όςο το δυνατόν λιγότερα λϊθη Η εφαρμογό αυτών των μϋτρων προςαρμόζεται ςτισ ιδιαιτερότητεσ τησ εκϊςτοτε γλώςςασ προγραμματιςμού Υπϊρχουν, όμωσ, οριςμϋνεσ γενικϋσ κατηγορύεσ τεχνικών για τη ςυγγραφό πηγαύου κώδικα αφορούν: ςτην αποφυγόσ ςφαλμϊτων ςτην ανοχό ςε ςφϊλματα ςτον εντοπιςμόσ και διόρθωςη ςφαλμϊτων
Τεχνικϋσ Συγγραφόσ Πηγαύου Κώδικα (2/8) Τεχνικϋσ αποφυγόσ ςφαλμϊτων: Έχει ωσ ςτόχο τον περιοριςμό των λαθών κατϊ τη ςυγγραφό πηγαύου κώδικα, καθώσ ο εντοπιςμόσ και η διόρθωςη ςφαλμϊτων ϋχει πολύ υψηλό κόςτοσ Θα πρζπει να γίνεται χριςθ κατάλλθλων εργαλείων και τεχνικών και να διαςφαλίηεται: η ςωςτό εξαγωγό και καταγραφό των απαιτόςεων η αξιοπούηςη των ιδιαύτερων χαρακτηριςτικών τησ γλώςςασ προγραμματιςμού η ςωςτό επιλογό και διαχεύριςη του ανθρώπινου δυναμικού
Τεχνικϋσ Συγγραφόσ Πηγαύου Κώδικα (3/8) Τεχνικϋσ αποφυγόσ ςφαλμϊτων (ςυνϋχεια ): Προδιαγραφό απαιτόςεων: Η περιγραφό και καταγραφό των απαιτόςεων με χρόςη προκαθοριςμϋνων προτύπων και αυςτηρών τεχνικών, διευκολύνει την παραγωγό ποιοτικού πηγαύου κώδικα, χωρύσ πολλϊ λϊθη, καθώσ αποφεύγονται παρερμηνεύεσ ςτον τρόπο λειτουργύασ του πηγαύου κώδικα Η ςαφόνεια ςτην περιγραφό όλων των ενδιϊμεςων προώόντων (προδιαγραφϋσ, ςχεδύαςη, κ.ϊ.) και η αποφυγό τεχνικών εξοικονόμηςησ χρόνου ςε βϊροσ τησ ποιότητασ, ςυνόθωσ, αποςβϋνουν το χρόνο και τον κόπο που απαιτούν
Τεχνικϋσ Συγγραφόσ Πηγαύου Κώδικα (4/8) Τεχνικϋσ αποφυγόσ ςφαλμϊτων (ςυνϋχεια ): Αξιοπούηςη τησ γλώςςασ προγραμματιςμού: Κατϊ τη ςυγγραφό πηγαύου κώδικα, η ομϊδα ανϊπτυξησ πρϋπει να αξιοποιεύ τα θετικϊ χαρακτηριςτικϊ τησ γλώςςασ προγραμματιςμού, αλλϊ και να αποφεύγει τη χρόςη των αρνητικών χαρακτηριςτικών τησ Π.χ.: αν µια γλώςςα προγραμματιςμού δεν προςφϋρει ιδιαύτερη υποςτόριξη ςε μαθηματικϋσ διατυπώςεισ και πρϊξεισ, τότε δεν θα πρϋπει να επιλεχθεύ για τη ςυγγραφό ςυςτόματοσ, το οπούο οι μαθηματικού υπολογιςμού ϋχουν κεντρικό ρόλο
Τεχνικϋσ Συγγραφόσ Πηγαύου Κώδικα (5/8) Τεχνικϋσ αποφυγόσ ςφαλμϊτων (ςυνϋχεια ): Επιδύωξη ποιότητασ: Η ομϊδα ανϊπτυξησ του πηγαύου κώδικα πρϋπει να ςτοχεύει ςτην εξαςφϊλιςη τησ απαιτούμενησ ποιότητασ, προγραμματύζοντασ βϊςει των ποιοτικών χαρακτηριςτικών θα αναφερθούν ςτη ςυνϋχεια (διαφϊνειεσ 15-20)
Τεχνικϋσ Συγγραφόσ Πηγαύου Κώδικα (6/8) Ανοχό ςε ςφϊλματα: Στα ςύγχρονα ςυςτόματα λογιςμικού, με αυξημϋνο ποςοςτό πολυπλοκότητασ, εύτε δεν εύναι εφικτό η αποφυγό ό ο εντοπιςμόσ των ςφαλμϊτων, εύτε το κόςτοσ για να εντοπιςθούν εύναι ςυνόθωσ απαγορευτικό Συνεπώσ, ςυςτόματα λογιςμικού µε αυξημϋνεσ απαιτόςεισ αξιοπιςτύασ οφεύλουν να προβλϋπουν την πιθανό εμφϊνιςη ςφαλμϊτων ςτη λειτουργύα τουσ και να δεύχνουν ςχετικό ανοχό, με τη χρόςη ειδικών τεχνικών Πολλϋσ φορϋσ εύναι απαραύτητο τα ςυςτόματα λογιςμικού να ςυνεχύζουν τη λειτουργύα τουσ μετϊ την εμφϊνιςη κϊποιων ςφαλμϊτων ό ϊλλων μη αναμενόμενων καταςτϊςεων, µε όςο το δυνατόν μικρότερεσ απώλειεσ Π.χ.: το λογιςμικό που χρηςιμοποιεύται ςτα αεροςκϊφη ό για τον ϋλεγχο εναϋριασ κυκλοφορύασ, η κατϊρρευςη του ςυςτόματοσ λογιςμικού, ϋςτω και για ςύντομο χρονικό διϊςτημα, μπορεύ να εύχε καταςτροφικϊ αποτελϋςματα και πρϋπει να αποφευχθεύ πϊςη θυςύα Στα ςυςτόματα λογιςμικού υψηλού κινδύνου, εφόςον εύναι υπερβολικϊ δύςκολη η εξαςφϊλιςη πηγαύου κώδικα χωρύσ λϊθη, θα πρϋπει να γύνεται ειδικό πρόβλεψη για την εμφϊνιςη ςφαλμϊτων και την παρϊκαμψό τουσ, δύχωσ να ςταματϊει η λειτουργύα του ςυςτόματοσ
Τεχνικϋσ Συγγραφόσ Πηγαύου Κώδικα (7/8) Ανοχό ςε ςφϊλματα (ςυνϋχεια ): Για την ανϊπτυξη ςυςτημϊτων λογιςμικού ανεκτικών ςε ςφϊλματα απαιτεύται η προςθόκη επιπλϋον κώδικα που αναλαμβϊνει τισ ακόλουθεσ λειτουργύεσ: Δυναμικόσ εντοπιςμόσ ςφαλμϊτων: Το ςύςτημα λογιςμικού πρϋπει να εύναι ςε θϋςη να εντοπύςει την παρουςύα ςφϊλματοσ κατϊ τη λειτουργύα του. Ο εντοπιςμόσ των ςφαλμϊτων θα πρϋπει να γύνεται όςο το δυνατό νωρύτερα, ώςτε αυτϊ να µη επεκτεύνονται και να µην επηρεϊζουν ϊλλα τμόματα του ςυςτόματοσ που λειτουργούν ςωςτϊ Ανϊνηψη από ςφϊλματα: Αν κατϊ τη λειτουργύα του ςυςτόματοσ παρουςιαςτεύ κϊποιο λϊθοσ, το ςύςτημα θα πρϋπει με κϊποιο τρόπο να ςυνεχύςει με τη φυςιολογικό του λειτουργύα. Αυτό μπορεύ να γύνει εύτε µε τη μετϊβαςη του ςυςτόματοσ ςε µια προηγούμενη αςφαλό κατϊςταςη του, εύτε µε τη διόρθωςη τησ βλϊβησ και τη μετϊβαςη ςε µια νϋα ςωςτό κατϊςταςη. Η μετϊβαςη ςε νϋα κατϊςταςη ϋπειτα από βλϊβησ εύναι ςυνόθωσ δυςκολότερη ςτην υλοπούηςη Πρόληψη μελλοντικών ςφαλμϊτων: Η ανϊνηψη από ϋνα ςφϊλμα που παρουςιϊςτηκε κατϊ τη λειτουργύα ενόσ ςυςτόματοσ δεν εύναι από μόνη τησ αρκετό, καθώσ θα πρϋπει να ληφθούν μϋτρα για να μην εμφανιςθεύ ξανϊ το ςφϊλμα ςτο μϋλλον. Όταν ϋνα ςφϊλμα δεν γύνεται να διορθωθεύ µε την αυτόματη επιδιόρθωςη, απαιτεύται η επϋμβαςη των προγραμματιςτών. Στην περύπτωςη αυτό το ςύςτημα θα πρϋπει να εμφανύζει μόνυμα λϊθουσ και η δομό του να εύναι τϋτοια ώςτε η ςυντόρηςό του µε γύνεται με το ελϊχιςτο δυνατό κόςτοσ
Τεχνικϋσ Συγγραφόσ Πηγαύου Κώδικα (8/8) Ανοχό ςε ςφϊλματα (ςυνϋχεια ): Δύο από τισ τεχνικϋσ που ϋχουν προταθεύ για την υλοπούηςη ςυςτημϊτων ανεκτικών ςε ςφϊλματα εύναι οι ακόλουθεσ: Προγραμματιςμόσ πολλών εκδόςεων: διαφορετικϋσ ομϊδεσ ανϊπτυξησ υλοποιούν όχι μύα, αλλϊ ϋναν αριθμό πλόρωσ λειτουργικών διαφορετικών εκδόςεων του ςυςτόματοσ, οι οπούεσ εκτελούνται παρϊλληλα µε τα ύδια δεδομϋνα ειςόδου και τα αποτελϋςματϊ τουσ ςυγκρύνονται μεταξύ τουσ. Εφόςον τα δεδομϋνα εξόδου δεν εύναι τα ύδια για όλεσ τισ εκδόςεισ του ςυςτόματοσ, εφαρμόζεται ο κανόνασ τησ πλειοψηφύασ και οι εκδόςεισ που παρόγαγαν διαφορετικϊ αποτελϋςματα χαρακτηρύζονται ωσ ελαττωματικϋσ. Η τεχνικό αυτό ϋχει μεγϊλο κόςτοσ, ωςτόςο ςε ςυςτόματα υψηλού κινδύνου ςυνόθωσ δικαιολογεύται το μεγϊλο κόςτοσ. Η ςυνόθησ πρακτικό εύναι η δημιουργύα τριών εκδόςεων του ςυςτόματοσ. Μια παραλλαγό, η οπούα μειώνει ςημαντικϊ το κόςτοσ, εύναι να εφαρμόζεται η τεχνικό αυτό µόνο ςτα επιςφαλό τμόματα του λογιςμικού Αμυντικόσ προγραμματιςμόσ: οι προγραμματιςτϋσ ενςωματώνουν ςτον πηγαύο κώδικα επιπλϋον κώδικα για τον ϋλεγχο των δεδομϋνων και τησ καλόσ λειτουργύασ του ςυςτόματοσ, ώςτε να παραλαμβϊνονται οι αςυνϋπειεσ και τα λϊθη. Αν κϊποιοσ από τουσ ελϋγχουσ αποτύχει, τότε θεωρεύται ότι εντοπύςτηκε ςφϊλμα και εφαρμόζονται κατϊλληλεσ τεχνικϋσ ανϊνηψησ και μελλοντικόσ πρόληψησ
Πρότυπα και Διαδικαςύεσ Κωδικοπούηςησ Γιατύ υπϊρχει ανϊγκη για πρότυπα και διαδικαςύεσ; Ο κώδικασ που παρϊγεται πρϋπει να εύναι ςυντηρόςιμοσ, ϊρα και ευκολοκατανόητοσ, ευκολοδιϊβαςτοσ και καλϊ τεκμηριωμϋνοσ Το ςύνολο του κώδικα εύναι αποτϋλεςμα ομαδικόσ δουλειϊσ. Κϊθε προγραμματιςτόσ αναλαμβϊνει την υλοπούηςη μϋροσ του κώδικα. Συνεπώσ, ο κώδικασ που παρϊγεται πρϋπει να εύναι κατανοητόσ ςε όλουσ τόςο, όςον αφορϊ το τι γρϊφει, όςο και ςτο γιατύ το γρϊφει, με τον τρόπο που το γρϊφει Η κωδικοπούηςη βϊςει προτύπων και διαδικαςιών κωδικοπούηςησ βοηθϊ: τουσ προγραμματιςτϋσ να οργανώςουν τισ ςκϋψεισ τουσ και να αποφύγουν τα λϊθη βοηθϊ ςτη μετϊφραςη των ςχεδύων λογιςμικού ςε κώδικα, διατηρώντασ την αντιςτοιχύα μεταξύ των οντοτότων ςχεδύου και των τμημϊτων κώδικα κάκε αλλαγό ςτο ςχϋδιο ό τροποπούηςη ςτον κώδικα καθύςταται απλό και ελαχιςτοποιεύται η πιθανότητα λϊθουσ
Επιθυμητϊ Χαρακτηριςτικϊ Πηγαύου Κώδικα (1/6) Επϊρκεια: Αποτελεύ ϋνα από τα κυριότερα επιθυμητϊ χαρακτηριςτικϊ. Ο κώδικασ χαρακτηρύζεται επαρκόσ, όταν το λογιςμικό: λειτουργεύ ςωςτϊ και χωρύσ ςφϊλματα, ικανοποιώντασ τισ απαιτόςεισ που ϋχουν καθοριςτεύ ςτισ προηγούμενεσ φϊςεισ κϊνει ςωςτό χρόςη των διαθϋςιμων πόρων εύναι διαθϋςιμο όποτε απαιτεύται Η επϊρκεια του πηγαύου κώδικα διαςφαλύζεται κυρύωσ κατϊ τη φϊςη ελϋγχου του λογιςμικού
Επιθυμητϊ Χαρακτηριςτικϊ Πηγαύου Κώδικα (2/6) Επύδοςη: Παύζει καθοριςτικό ρόλο ςε πολλϊ ςυςτόματα λογιςμικού Χαρακτηριςτικϊ μϋτρηςησ: ταχύτητα εκτϋλεςησ ςυγκεκριμϋνων λειτουργιών του ςυςτόματοσ απαιτόςεισ του ςυςτόματοσ ςε πόρουσ, όπωσ μνόμη και χωρητικότητα δύςκου Η επύδοςη διαφορετικών τμημϊτων πηγαύου κώδικα που υλοποιόθηκαν βϊςει των ύδιων λειτουργικών προδιαγραφών, ενδϋχεται να διαφϋρει ςημαντικϊ Για τη βελτύωςη τησ επύδοςησ του τελικού ςυςτόματοσ, θα πρϋπει να γύνει ςωςτό επιλογό γλώςςασ προγραμματιςμού αλλϊ και χρόςη κατϊλληλων προγραμματιςτικών τεχνικών
Επιθυμητϊ Χαρακτηριςτικϊ Πηγαύου Κώδικα (3/6) Αναγνωςιμότητα: Κατϊ την ανϊπτυξη και τη ςυντόρηςη ενόσ λογιςμικού, ϋνασ προγραμματιςτόσ καλεύται ςυχνϊ να διαβϊςει και να κατανοόςει εύτε τον πηγαύο κώδικα που ϋχει γρϊψει κϊποιοσ ϊλλοσ, εύτε κώδικα που ϋχει γρϊψει ο ύδιοσ ύςτερα από λύγο καιρό εύναι πολύ ςημαντικό να εύναι εύκολη η κατανόηςη του πηγαύου κώδικα µϋςω τησ ανϊγνωςόσ του ωσ κειμϋνου. Ανεξαρτότωσ γλώςςασ προγραμματιςμού, την αναγνωςιμότητα του κώδικα διευκολύνουν τα ακόλουθα: Απλότητα: Εύναι καλό να αποφεύγεται η περιττό πολυπλοκότητα κατϊ τη ςυγγραφό του πηγαύου κώδικα, εφόςον δεν εύναι απαραύτητη για την κϊλυψη των απαιτόςεων επύδοςησ. Επιπλϋον, ο απλόσ κώδικασ, εκτόσ από ευανϊγνωςτοσ, εύναι και λιγότερο επιρρεπόσ ςε λϊθη Πλεοναςμόσ χϊριν ςαφήνειασ: Όπωσ και ςτα κεύμενα, η χρόςη κατϊλληλων «ςημεύων ςτύξησ» ςτη ςυγγραφό του κώδικα τον κϊνει ευανϊγνωςτο. Τϋτοια ςημεύα ςτύξησ εύναι κυρύωσ οι παρενθϋςεισ και οι λϋξεισ-κλειδιϊ για την ομαδοπούηςη εντολών (begin και end, { και } κ.ϊ.), που, αν και κϊποιεσ φορϋσ θα μπορούςαν να παραλειφθούν βϊςει των ςυντακτικών κανόνων τησ γλώςςασ προγραμματιςμού, εύναι καλό να χρηςιμοποιούνται για τη διευκόλυνςη του αναγνώςτη Επιλογή κατϊλληλων ονομϊτων: Η ςωςτό επιλογό ονομϊτων για τα αναγνωριςτικϊ του προγρϊμματοσ ϋχει μεγϊλη χρηςιμότητα για τη ςυγγραφό αναγνώςιμου κώδικα Χρήςη ςχολίων: Τα ςχόλια ϋχουν ςημαντικό ρόλο ςτην εύκολη κατανόηςη του προγρϊμματοσ και πρϋπει να γρϊφονται ςυγχρόνωσ µε τον πηγαύο κώδικα και να ενημερώνονται ςε κϊθε μετϋπειτα αλλαγό του. Ένα πρόγραμμα χωρύσ την προςθόκη ςχολύων εύναι δύςκολο ό αδύνατο να κατανοηθεύ. Επομϋνωσ, εύναι πολύ ςημαντικό να γρϊφονται περιγραφικϊ ςχόλια ςτην αρχό των μονϊδων του πηγαύου κώδικα, αλλϊ και ςτο εςωτερικό αυτών, εφόςον κρύνεται απαραύτητο Στοίχιςη: Η χρόςη κανόνων ςτούχιςησ και ο περιοριςμϋνοσ αριθμόσ εντολών ανϊ γραμμό προγρϊμματοσ, βελτιώνουν την αναγνωςιμότητα του πηγαύου κώδικα
Επιθυμητϊ Χαρακτηριςτικϊ Πηγαύου Κώδικα (4/6) Μεταφερςιμότητα: Η δυνατότητα εκτϋλεςησ του πηγαύου κώδικα, χωρύσ αλλαγϋσ, ςε διαφορετικϊ περιβϊλλοντα (λειτουργικϊ ςυςτόματα, τύποσ υπολογιςτό), τα οπούα υποςτηρύζουν τη γλώςςα προγραμματιςμού που χρηςιμοποιεύται Επύςησ, για το μηχανικό λογιςμικού, εύναι πολύ ςημαντικό να μπορεύ να μεταφερθεύ ο πηγαύοσ κώδικασ, χωρύσ ιδιαύτερεσ αλλαγϋσ, από µια υλοπούηςη τησ γλώςςασ προγραμματιςμού ςτην οπούα εύναι γραμμϋνοσ ςε µια ϊλλη
Επιθυμητϊ Χαρακτηριςτικϊ Πηγαύου Κώδικα (5/6) Δυνατότητα επαναχρηςιμοπούηςησ: Εύναι αρκετϊ ςυχνό φαινόμενο μεγϊλα τμόματα του πηγαύου κώδικα ενόσ λογιςμικού να χρηςιμοποιούνται ςτην κωδικοπούηςη ϊλλων ςυςτημϊτων λογιςμικού ςθμαντικό χαρακτθριςτικό θ δυνατότθτα επαναχρθςιμοποίθςθσ Βαςικό προώπόθεςη για να εύναι ϋνασ πηγαύοσ κώδικασ επαναχρηςιμοποιούμενοσ εύναι να ϋχει ςωςτό δόμηςό και διαχωριςμό μονϊδων
Επιθυμητϊ Χαρακτηριςτικϊ Πηγαύου Κώδικα (6/6) Τεκμηρίωςη: Για να εύναι ο κώδικασ εύκολοσ ςτην ανϊγνωςη, πϋρα από τισ προαναφερόμενεσ τεχνικϋσ, εύναι ςυχνϊ αναγκαύα η τεκμηρύωςό του µε τη βοόθεια ςυνοδευτικών εγγρϊφων, γραμμϋνων ςε κατϊλληλη γλώςςα Η τεκμηρύωςη του πηγαύου κώδικα ποικύλλει όςον αφορϊ ςτην ϋκταςη, τη μορφό και την αυςτηρότητα τησ γλώςςασ που χρηςιμοποιεύται Η ςυνόθησ πρακτικό εύναι η χρόςη φυςικόσ γλώςςασ για την επεξόγηςη των ςημεύων του πηγαύου κώδικα που παρουςιϊζουν μεγϊλη πολυπλοκότητα και τα ςχόλια δεν επαρκούν για την κατανόηςό του
Τεκμηρύωςη Πολλϊ πρότυπα και διαδικαςύεσ κωδικοπούηςησ εςτιϊζουν την προςοχό τουσ ςτισ περιγραφϋσ που ςυνοδεύουν τα προγρϊμματα Τι εύναι η τεκμηρύωςη; «Το ςύνολο των ϋγγραφων περιγραφών που ςυνοδεύουν τα προγρϊμματα, με απώτερο ςκοπό να εξηγόςουν ςτον κϊθε αναγνώςτη τι κϊνουν και πωσ το κϊνουν» Η τεκμηρύωςη του κώδικα μπορεύ να εύναι εσωτερική ό εξωτερική
Εςωτερικό Τεκμηρύωςη (1/2) Περιλαμβϊνει περιληπτικϋσ πληροφορύεσ, ώςτε ο αναγνώςτησ να μπορϋςει να αναγνωρύςει το εύδοσ του προγρϊμματοσ και να κατανοόςει τισ δομϋσ δεδομϋνων, τουσ αλγόριθμουσ και τη ροό ελϋγχου που αυτό εμπεριϋχει Οι προγραμματιςτϋσ τοποθετούν τισ πληροφορύεσ αυτϋσ, τον πρόλογο ςχολύων, ςτη αρχό του προγρϊμματοσ και ϋχουν το ρόλο τησ ειςαγωγόσ του προγρϊμματοσ Απαντϊ ςτα ερωτόματα: Τι εύναι το πρόγραμμα; Ποιοσ ϋγραψε το πρόγραμμα; Που ταιριϊζει το πρόγραμμα με το γενικό ςχϋδιο του ςυςτόματοσ; Πότε γρϊφτηκε και επανεξετϊςτηκε το πρόγραμμα; Γιατύ υπϊρχει αυτό το πρόγραμμα;
Εςωτερικό Τεκμηρύωςη (2/2) Εκτόσ από τον πρόλογο ςχολύων, επιπρόςθετα ςχόλια μϋςα ςτον κώδικα βοηθούν τουσ αναγνώςτεσ ςτην κατανόηςό του Όςο η οργϊνωςη του κώδικα αντανακλϊ ϋνα καλϊ δομημϋνο ςχεδιαςμό, οι εντολϋσ του προγρϊμματοσ εύναι διατυπωμϋνεσ με ςαφόνεια, οι ετικϋτεσ, τα ονόματα των μεταβλητών και των δεδομϋνων εύναι επαρκώσ περιγραφικϊ και δεν προκαλούν ςύγχυςη, ο αναγκαύοσ αριθμόσ των επιπρόςθετων ςχολύων εύναι πολύ μικρόσ Δε θα πρϋπει να ειςϊγουμε ςχόλια προκειμϋνου να καλύψουμε τισ αδυναμύεσ ενόσ κακογραμμϋνου κώδικα Όταν ο κώδικασ αναθεωρεύται, τα ςχόλια θα πρϋπει να ενημερώνονται ώςτε να αντανακλούν κϊθε αλλαγό Εϊν εύναι δύςκολο να γραφούν κατανοητϊ ςχόλια για κϊποιον πολύπλοκο κώδικα, ύςωσ εύναι αναγκαύα η επαναςχεδύαςη του
Εξωτερικό Τεκμηρύωςη (1/2) Σε αντύθεςη με την εςωτερικό τεκμηρύωςη που εύναι περιεκτικό και απευθύνεται ςτον προγραμματιςτό, η εξωτερικό τεκμηρύωςη εύναι γραμμϋνη με τϋτοιο τρόπο ώςτε να μπορεύ να διαβαςτεύ και από αυτούσ που ύςωσ δε δουν ποτϋ τον πραγματικό κώδικα Επομϋνωσ, ο πρόλογοσ αποτελεύ μια ςυνολικό περύληψη του προγρϊμματοσ, ενώ η εξωτερικό τεκμηρύωςη αποτελεύ μια λεπτομερό αναφορϊ Απαντϊ ςτα ύδια ερωτόματα αλλϊ ςε μεγαλύτερο βϊθοσ, καθώσ δύνεται η δυνατότητα να εξηγόςουμε τα πρϊγματα πιο λεπτομερώσ ςυγκριτικϊ με τα ςχόλια μϋςα ςτον κώδικα Η εξωτερικό τεκμηρύωςη ςυχνϊ περιλαμβϊνει μια ςυνολικό ϊποψη όλων των μονϊδων του ςυςτόματοσ ό πολλών ομαδοποιόςεων των μονϊδων του ςυςτόματοσ (π.χ. ςε επύπεδο πακϋτων)
Εξωτερικό Τεκμηρύωςη (2/2) Ένασ αποδοτικόσ τρόποσ για την εξωτερικό τεκμηρύωςη εύναι η χρόςη εργαλεύων για την αυτόματη παραγωγό τεκμηρύωςησ Τα εργαλεύα αυτϊ ϋχουν ωσ ςκοπό την παραγωγό τησ τεχνικόσ εξωτερικόσ τεκμηρύωςησ ςε μια φιλικό μορφό (π.χ. ςελύδεσ HTML) Με τη χρόςη κατϊλληλων ετικετών (tags) εντόσ των ςχολύων, δύνονται ςτα εργαλεύα παραγωγόσ οι απαραύτητεσ πληροφορύεσ για τη μορφοπούηςη τησ εξωτερικόσ τεκμηρύωςησ Γνωςτϊ εργαλεύα: Για κώδικα Java JavaDoc (http://java.sun.com/j2se/javadoc/) Εναλλακτικό εργαλείο ανοικτοφ κώδικα και για περιςςότερεσ γλώςςεσ doxygen (www.doxygen.org)
Διαχεύριςη Εκδόςεων (1/2) Ο κώδικασ εύναι ϋνα προώόν που κατϊ την πορεύα τησ ανϊπτυξησ αλλϊζει ςυνεχώσ, διορθώνεται ό επαυξϊνεται Πολλού προγραμματιςτϋσ εργϊζονται ςε διαφορετικϊ ό ακόμα και ςτα ύδια τμόματα κώδικα Θα πρϋπει να υπϊρχει ϋνασ κεντρικόσ μηχανιςμόσ διαχεύριςησ και διανομόσ του πηγαύου κώδικα ςφςτθμα διαχείριςθσ εκδόςεων Η διαχείριςθ εκδόςεων δεν περιορίηεται μόνο ςτον κώδικα, αλλά μπορεί να επεκτακεί ςε όλα τα προϊόντα του λογιςμικοφ (ζγγραφα απαιτιςεων, ζγγραφα ςχεδίαςθσ, τεκμθρίωςθσ, κ.ά.)
Διαχεύριςη Εκδόςεων (2/2) Τα ςυςτόματα διαχεύριςησ εκδόςεων προςφϋρουν τη δυνατότητα: Τησ αναύρεςησ όλεσ οι αλλαγζσ ςτον κώδικα μποροφν να αναιρεκοφν και κάκε ςφάλμα διορκώνεται χωρίσ αρνθτικζσ επιπτώςεισ ι κακυςτεριςεισ Τθσ διατιρθςθσ και ανάκλθςθσ διαφορετικών εκδόςεων ενόσ αρχείου του πθγαίου κώδικα Τθσ ελεγχόμενθσ πρόςβαςθσ ςτον πθγαίο κώδικα, με ζνα ςφςτθμα διαχείριςθσ εκδόςεων το οποίο δίνει δικαιώματα πρόςβαςθσ ςε αρχεία του κώδικα Τθσ παράλλθλθσ εργαςίασ, κακώσ το ςφςτθμα διαχείριςθσ εκδόςεων δίνει πρόςβαςθ ςε κάκε προγραμματιςτι ςτισ τελευταίεσ εκδόςεισ όλων των αρχείων του ζργου Εντοπιςμοφ των αλλαγών, τόςο ωσ προσ ποιοσ τισ ζκανε, όςο και γιατί ζγιναν Παραγωγισ πολλών κυκλοφοριών του λογιςμικοφ, ενώ ταυτόχρονα θ ομάδα ανάπτυξθσ εργάηεται ςτθ βαςικι γραμμι ανάπτυξθσ Απόδοςθσ τθσ εικόνασ του ςυςτιματοσ ςε μια ςυγκεκριμζνθ θμερομθνία
Βιβλιογραφύα Γιακουμϊκησ, Ε. & Διαμαντύδησ, Ν. (2009). Τεχνολογία λογισμικού, Εκδόςεισ Σταμούλη, Αθόνα Βεςκούκησ, Β. (2000). Τεχνολογία Λογισμικού Ι, Ελληνικό Ανοικτό Πανεπιςτόμιο, Πϊτρα