ΣΗΜΕΙΩΣΕΙΣ ΤΕΧΝΟΛΟΓΙΑΣ ΛΟΓΙΣΜΙΚΟΥ



Σχετικά έγγραφα
Εισαγωγή στην εκτίμηση κόστους Λογισμικού / Μέθοδος COCOMO

Εισαγωγή στην εκτίµηση κόστους Λογισµικού / Μέθοδος COCOMO

Πληροφοριακά Συστήματα Διοίκησης (ΜΒΑ) Ενότητα 4: Διαχείριση Έργων

Πληροφοριακά Συστήματα Διοίκησης Ενότητα 9: Διαχείριση Έργων (1ο Μέρος)

ΔΕΟ 40 ΤΟΜΟΣ Β ΘΕΩΡΙΑ ΚΑΙ ΑΣΚΗΣΕΙΣ ΔΙΚΤΥΩΝ ΔΙΟΙΚΗΣΗ ΕΡΓΩΝ

K15 Ψηφιακή Λογική Σχεδίαση 7-8: Ανάλυση και σύνθεση συνδυαστικών λογικών κυκλωμάτων

Διαγράμματα UML στην Ανάλυση. Μέρος Γ Διαγράμματα Επικοινωνίας Διαγράμματα Ακολουθίας Διαγράμματα Μηχανής Καταστάσεων

«Διαχείριση Έργων στη Δημόσια Διοίκηση» Ενότητα 6: Τεχνικές παρακολούθησης (μέρος 1ο) ΕΙΔΙΚΗΣ ΦΑΣΗΣ ΣΠΟΥΔΩΝ 24η ΕΚΠΑΙΔΕΥΤΙΚΗ ΣΕΙΡΑ

ΤΕΙ ΘΕΣΣΑΛΙΑΣ ΤΜΗΜΑ ΠΟΛΙΤΙΚΩΝ ΜΗΧΑΝΙΚΩΝ Τ.Ε. Διοίκηση Εργοταξίου

Σου προτείνω να τυπώσεις τις επόμενες τέσσερις σελίδες σε ένα φύλο διπλής όψης και να τις έχεις μαζί σου για εύκολη αναφορά.

10. Με πόσους και ποιους τρόπους μπορεί να αναπαρασταθεί ένα πρόβλημα; 11. Περιγράψτε τα τρία στάδια αντιμετώπισης ενός προβλήματος.

Προβλήματα, αλγόριθμοι, ψευδοκώδικας

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ Π ΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ Π ΕΡΙΒΑΛΛΟΝ

Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Βήματα προς τη δημιουργία εκτελέσιμου κώδικα

4.6 Critical Path Analysis (Μέθοδος του κρίσιμου μονοπατιού)

ΚΕΦΑΛΑΙΟ 10 ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ

Ο επόμενος πίνακας παρουσιάζει τις δραστηριότητες ενός έργου, τις σχέσεις μεταξύ τους, καθώς και τη διάρκειά τους σε εβδομάδες.

ΗΥ-121: Ηλεκτρονικά Κυκλώματα Γιώργος Δημητρακόπουλος. Βασικές Αρχές Ηλεκτρικών Κυκλωμάτων

ΠΜΣ "Παραγωγή και ιαχείριση Ενέργειας" ιαχείριση Ενέργειας και ιοίκηση Έργων

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ

Πιο συγκεκριμένα, η χρήση του MATLAB προσφέρει τα ακόλουθα πλεονεκτήματα.

ΑΕΠΠ Ερωτήσεις θεωρίας

Γενικά Στοιχεία Ηλεκτρονικού Υπολογιστή

Θεωρητικές Ασκήσεις. ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ. 1 ο Μέρος

Κεφάλαιο 4ο: Δικτυωτή Ανάλυση

Αρχές Προγραμματισμού Η/Υ Μέθοδοι παρουσίασης του αλγόριθμου και Βασικές έννοιες

ΔΕΙΓΜΑ ΠΡΙΝ ΤΙΣ ΔΙΟΡΘΩΣΕΙΣ - ΕΚΔΟΣΕΙΣ ΚΡΙΤΙΚΗ

3. Προσομοίωση ενός Συστήματος Αναμονής.

2 ΟΥ και 7 ΟΥ ΚΕΦΑΛΑΙΟΥ

5. (Λειτουργικά) Δομικά Διαγράμματα

Διοίκηση Έργων Πληροφορικής - Τηλεπικοινωνιών

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

4. ΚΕΦΑΛΑΙΟ ΕΦΑΡΜΟΓΕΣ ΤΟΥ ΜΕΤΑΣΧΗΜΑΤΙΣΜΟΥ FOURIER

Προγραμματισμός Ι (HY120)

Αναγνώριση Προτύπων Ι

Διαγράμματα Αλληλεπίδρασης. Διαγράμματα Ακολουθίας Διαγράμματα Συνεργασίας

ΠΡΟΓΡΑΜΜΑ ΣΠΟΥΔΩΝ ΠΛΗΡΟΦΟΡΙΚΗ, Γ ΤΑΞΗ ΓΕΝΙΚΟΥ ΛΥΚΕΙΟΥ

5 ΕΙΣΑΓΩΓΗ ΣΤΗ ΘΕΩΡΙΑ ΑΛΓΟΡΙΘΜΩΝ

4. Συντακτικό μιας γλώσσας είναι το σύνολο των κανόνων που ορίζει τις μορφές με τις οποίες μια λέξη είναι αποδεκτή.

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ. 1 ο ΚΕΦΑΛΑΙΟ

Υπάρχουν δύο τύποι μνήμης, η μνήμη τυχαίας προσπέλασης (Random Access Memory RAM) και η μνήμη ανάγνωσης-μόνο (Read-Only Memory ROM).

1 η Άσκηση στο Χρονοπρογραμματισμό Έργων

Δικτυακή Αναπαράσταση Έργων (Δίκτυα ΑΟΑ και ΑΟΝ) & η Μέθοδος CPM. Λυμένες Ασκήσεις & Παραδείγματα

ΜΟΝΤΕΛΟΠΟΙΗΣΗ ΔΙΑΚΡΙΤΩΝ ΕΝΑΛΛΑΚΤΙΚΩΝ ΣΕ ΠΡΟΒΛΗΜΑΤΑ ΣΧΕΔΙΑΣΜΟΥ ΚΑΙ ΣΥΝΘΕΣΗΣ ΔΙΕΡΓΑΣΙΩΝ

Κεφάλαιο 7 : Είδη, Τεχνικές, και Περιβάλλοντα Προγραµµατισµού

Οι βασικές λειτουργίες (ή πράξεις) που γίνονται σε μια δομή δεδομένων είναι:

ΚΕΦΑΛΑΙΟ 5. Κύκλος Ζωής Εφαρμογών ΕΝΟΤΗΤΑ 2. Εφαρμογές Πληροφορικής. Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών

Περιεχόμενα. 2 Αριθμητικά συστήματα

Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο 2. Α1. Ο αλγόριθμος είναι απαραίτητος μόνο για την επίλυση προβλημάτων πληροφορικής

Μαλούτα Θεανώ Σελίδα 1

ΤΟΠΟΓΡΑΦΙΚΑ ΔΙΚΤΥΑ ΚΑΙ ΥΠΟΛΟΓΙΣΜΟΙ ΑΝΑΣΚΟΠΗΣΗ ΘΕΩΡΙΑΣ ΣΥΝΟΡΘΩΣΕΩΝ

ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ

z = c 1 x 1 + c 2 x c n x n

K24 Ψηφιακά Ηλεκτρονικά 9: Flip-Flops

ΕΡΓΑΣΤΗΡΙΟ ΗΛΕΚΤΡΟΝΙΚΩΝ ΕΦΑΡΜΟΓΩΝ

FORTRAN και Αντικειμενοστραφής Προγραμματισμός

ΔΙΔΑΣΚΩΝ: Λ. ΜΠΙΣΔΟΥΝΗΣ ΛΥΣΕΙΣ ΕΞΕΤΑΣΗΣ ΣΤΟ ΜΑΘΗΜΑ «ΤΕΧΝΟΛΟΓΙΑ ΜΕΤΡΗΣΕΩΝ» ΗΜΕΡΟΜΗΝΙΑ: 28/01/2015

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 11 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

ΟΜΑΔΑ Ε ΓΕΩΡΓΙΟΥ ΦΩΤΕΙΝΗ ΗΛΙΟΥΔΗ ΑΦΡΟΔΙΤΗ ΜΕΤΑΛΛΙΔΟΥ ΧΡΥΣΗ ΝΙΖΑΜΗΣ ΑΛΕΞΑΝΔΡΟΣ ΤΖΗΚΑΛΑΓΙΑΣ ΑΝΔΡΕΑΣ ΤΡΙΓΚΑΣ ΑΓΓΕΛΟΣ

Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος

Περιεχόμενο του μαθήματος

Διοίκηση Έργων Πληροφορικής Εργαστήριο 2. Μακρή Ελένη-Λασκαρίνα

ΕΙΔΗ,ΤΕΧΝΙΚΕΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΑ ΠΡΟΓΡΑΜΜΑΤΙ- ΣΜΟΥ

Διοίκηση Λειτουργιών. Διοίκηση Έργων II (Δίκτυα Έργων & Χρονοπρογραμματισμός) - 6 ο μάθημα -

Εισαγωγικές Έννοιες. ημήτρης Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών. Εθνικό Μετσόβιο Πολυτεχνείο

ΠΕΡΙΕΧΟΜΕΝΑ ΔΙΟΙΚΗΣΗ ΛΕΙΤΟΥΡΓΙΩΝ. Διοίκηση και Προγραμματισμός Έργων

Αναφορά (1/2) Μπορούμε να ορίσουμε μια άλλη, ισοδύναμη αλλά ίσως πιο σύντομη, ονομασία για ποσότητα (μεταβλητή, σταθερή, συνάρτηση, κλπ.

Τεχνικές σχεδίασης προγραμμάτων, Προγραμματιστικά Περιβάλλοντα

Περι-γράφοντας... βρόχους

Ψευδοκώδικας. November 7, 2011

Κεφάλαιο 6 ο Εισαγωγή στον Προγραμματισμό 1

ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ. Κεφάλαιο 3

Κεφάλαιο 10 ο Υποπρογράµµατα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ.

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

Πληροφοριακά Συστήματα Διοίκησης. Επισκόπηση μοντέλων λήψης αποφάσεων Τεχνικές Μαθηματικού Προγραμματισμού

Ανάλυση Χρόνου, Πόρων & Κόστους

Πρόβλημα 37 / σελίδα 207

Χρονικός Προγραμματισμός Έργων Project Scheduling. Κέντρο Εκπαίδευσης ΕΤΕΚ 69 Δρ. Σ. Χριστοδούλου και Δρ. Α. Ρουμπούτσου

Ποσοτικές Μέθοδοι στη Διοίκηση Επιχειρήσεων ΙΙ Σύνολο- Περιεχόμενο Μαθήματος

Πληροφοριακά Συστήματα. Προγραμματισμός έργων Η μέθοδος CPM

Ενότητα 12 (κεφάλαιο 28) Αρχιτεκτονικές Εφαρμογών

Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Δομή Επανάληψης. Ιωάννης Λυχναρόπουλος Μαθηματικός, MSc, PhD

Πληροφορική 2. Τεχνολογία Λογισμικού

περιεχόμενα παρουσίασης Actors Σενάρια Περιεχόμενο περιπτώσεων χρήσης Πρότυπα περιπτώσεων χρήσης Διαγράμματα περιπτώσεων χρήσης

Q 12. c 3 Q 23. h 12 + h 23 + h 31 = 0 (6)

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 9 ο

Γραμμικός Προγραμματισμός Μέθοδος Simplex

ΛΟΓΙΚΑ ΔΙΑΓΡΑΜΜΑΤΑ. Γ Λυκείου Κατεύθυνσης Mike Trimos

Τεχνητή Νοημοσύνη. 2η διάλεξη ( ) Ίων Ανδρουτσόπουλος.

ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ ΚΕΦΑΛΑΙΟ 2 ο ΚΕΦΑΛΑΙΟ 7 ο ΕΡΩΤΗΣΕΙΣ ΓΕΝΙΚΑ ΠΕΡΙ ΑΛΓΟΡΙΘΜΩΝ

Αδιέξοδα Ανάθεση Πόρων (Deadlocks Resource Allocation)

2.2.5 ΑΝΑΠΑΡΑΣΤΑΣΗ ΑΛΓΟΡΙΘΜΟΥ

8 Τεχνικός Εφαρμογών Πληροφορικής με Πολυμέσα

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 1 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

ΚΕΦΑΛΑΙΟ 2ο ΠΡΟΣΟΜΟΙΩΣΗ ΔΙΑΚΡΙΤΩΝ ΓΕΓΟΝΟΤΩΝ

Κεφάλαιο 5. Λογικά κυκλώματα

J-GANNO. Σύντοµη αναφορά στους κύριους στόχους σχεδίασης και τα βασικά χαρακτηριστικά του πακέτου (προέκδοση 0.9Β, Φεβ.1998) Χάρης Γεωργίου

Πρόβλημα 29 / σελίδα 28

Transcript:

ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλέξανδρος N. Χατζηγεωργίου ΣΗΜΕΙΩΣΕΙΣ ΤΕΧΝΟΛΟΓΙΑΣ ΛΟΓΙΣΜΙΚΟΥ Θεσσαλονίκη, Μάρτιος 008

Περιεχόμενα ΔΙΑΧΕΙΡΙΣΗ ΕΡΓΩΝ ΛΟΓΙΣΜΙΚΟΥ. Χρονικός Προγραμματισμός.... Εισαγωγή.... Κατασκευή δικτυακού διαγράμματος....3 Πλασματικές Δραστηριότητες... 3.4 Υπολογισμοί Δικτύων... 4. Εκτίμηση Κόστους (Τεχνική COCOMO)... 7 ΠΕΡΙΓΡΑΦΗ ΑΠΑΙΤΗΣΕΩΝ ΛΟΓΙΣΜΙΚΟΥ. Μηχανές Πεπερασμένων Καταστάσεων... 3. Δίκτυα Petri... 6 3. Γλώσσα Z... ΜΕΤΡΙΚΕΣ ΛΟΓΙΣΜΙΚΟΥ. Εισαγωγή... 9. Γενικά... 9. Μετρικές Διαδικασίας... 30.3 Μετρικές Έργου... 3.4 Μετρικές Προϊόντος... 3. Αρχές Μετρήσεων... 3 3. Ανάλυση... 34 3. Μετρικές βασισμένες σε συναρτήσεις... 34 3. Μετρική Bang... 37 3.3 Μετρικές για την ποιότητα των προδιαγραφών... 40 4. Σχεδίαση... 4 5. Κωδικοποίηση - Έλεγχος... 44 5. Μέγεθος κώδικα... 44 5. Γράφοι (Ορισμοί)... 47 5.3 Κυκλωματική Πολυπλοκότητα του McCabe... 48 5.4 Εξαγωγή περιπτώσεων ελέγχου... 50

5.5 Μέτρηση εσωτερικών χαρακτηριστικών προγράμματος... 53 5.5. Ακολουθία και φώλιασμα... 54 5.5. Η έννοια της δομικότητας... 55 5.5.3 Ιεραρχικά μέτρα... 57 5.6 Προγραμματιστική Προσπάθεια κατά Halstead... 58 5.7 Μετρική Πολυπλοκότητας Δεδομένων... 6 5.8 Κριτήρια Τερματισμού Ελέγχου... 67 5.8. Βασικό Μοντέλο... 67 5.8. Ανάλυση Δεδομένων και Εξαγωγή Παραμέτρων... 70 5.8.3 Παράδειγμα... 7 6 Αντικειμενοστραφείς Μετρικές... 74 6. Εισαγωγή... 74 6. Παράδειγμα: Οικογένεια Robot... 76 6.3 Μετρικές σε επίπεδο κλάσης... 78 Βιβλιογραφία... 8

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ ΔΙΑΧΕΙΡΙΣΗ ΕΡΓΩΝ ΛΟΓΙΣΜΙΚΟΥ. ΧΡΟΝΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εισαγωγή Η διαχείριση έργων λογισμικού (software project management) αποτελεί μία από τις σημαντικότερες παραμέτρους στην ανάπτυξη λογισμικού και συχνά η κακή διαχείριση συνιστά την κυριότερη αιτία αποτυχίας μεγάλων έργων λογισμικού. Παρόλο που τα έργα λογισμικού διαφέρουν σημαντικά από άλλα τεχνικά έργα λόγω της φύσεως και της πολυπλοκότητας του λογισμικού, η διαχείριση τους περιλαμβάνει πολλές ενέργειες που συναντώνται και στη διαχείριση άλλων τεχνικών δραστηριοτήτων. Ένα έργο ορίζεται ως μια δραστηριότητα με ένα καθορισμένο στόχο που πρέπει να επιτευχθεί σε προδιαγεγραμμένα χρονικά όρια και χρησιμοποιώντας πεπερασμένους πόρους. (Για ένα έργο λογισμικού ως πόροι νοούνται μόνο τα μέλη της ομάδας ανάπτυξης, ήτοι σχεδιαστές, προγραμματιστές, ελεγκτές κλπ). Η διαχείριση ενός έργου απαιτεί το σχεδιασμό των ενεργειών που θα γίνουν (planning), τη διασφάλιση των απαιτούμενων πόρων, τον χρονικό προγραμματισμό (scheduling) και τον έλεγχο/αξιολόγηση κάθε ολοκληρωμένης δραστηριότητας. Σε μια οργανωμένη εταιρεία ανάπτυξης λογισμικού η διαχείριση των έργων είναι μια διακεκριμένη αρμοδιότητα (δεν πρέπει δηλαδή να συγχέεται με άλλες τεχνικές δραστηριότητες) και πρέπει να διεκπεραιώνεται από κατάλληλο προσωπικό. Στη συνέχεια, δεν θα αναλυθούν όλες οι ενέργειες που περιλαμβάνονται στη διαχείριση έργων αλλά θα δοθεί έμφαση στον χρονικό προγραμματισμό. Ειδικότερα, θα εξεταστούν τεχνικές δικτύων για τον προγραμματισμό δραστηριοτήτων με πρωταρχικό σκοπό την εκτίμηση της απαιτούμενης χρονικής διάρκειας για την ολοκλήρωση του έργου. Τα βήματα που απαιτούνται για την εφαρμογή μιας τέτοιας τεχνικής προγραμματισμού είναι τα εξής:. Κατασκευή ενός δικτυακού διαγράμματος (network diagram) που αναπαριστά το έργο, συμβολίζοντας την ακολουθία και την αλληλεξάρτηση μεταξύ των δραστηριοτήτων. Καθορισμός της διάρκειας κάθε δραστηριότητας 3. Εκτέλεση υπολογισμών επί του δικτύου για τον καθορισμό της συνολικής διάρκειας του έργου και της κρισιμότητας κάθε δραστηριότητας 4. Τροποποίηση του δικτύου/διάρκειας εργασιών σε περίπτωση προβλημάτων (π.χ. χρόνος περάτωσης αργότερος από τον επιθυμητό). Κατασκευή δικτυακού διαγράμματος Οποιοδήποτε έργο μπορεί να αναπαρασταθεί ως ένα δικτυακό (ή τοξωτό) διάγραμμα (γράφος) όπου κάθε δραστηριότητα αναπαρίσταται ως μια ακμή (activity on arrow diagram). Η αναπαράσταση των δραστηριοτήτων με ακμές συμβαδίζει με την γενική αντίληψη ότι μια δραστηριότητα έχει διάρκεια (το μήκος της ακμής θα μπορούσε να είναι ανάλογο με την απαιτούμενη διάρκεια, ωστόσο αυτό δεν είναι απαραίτητο). Χατζηγεωργίου Αλέξανδρος, Τμήμα Εφαρμοσμένης Πληροφορικής Θεσσαλονίκη, 006 Σελ.

Διαχείριση Έργων Λογισμικού Οι κόμβοι στο διάγραμμα αναπαριστώνται ως κύκλοι και υποδηλώνουν την περάτωση ή την έναρξη μιας εργασίας. Θεωρείται δε, ότι δεν έχουν χρονική διάρκεια. Μπορεί για παράδειγμα να συμβολίζουν ένα γεγονός, ένα χρονικό ορόσημο (milestone) ή την ύπαρξη ενός παραδοτέου (deliverable) μετά την ολοκλήρωση μιας δραστηριότητας. Μια διαδρομή (path) είναι μια ακολουθία κόμβων (ή δραστηριοτήτων). Μια δραστηριότητα Α που ξεκινά με το γεγονός και ολοκληρώνεται με το γεγονός αναπαρίσταται όπως φαίνεται στο διάγραμμα του σχήματος.. Γεγονός Δραστηριότητα Γεγονός Α Σχήμα.: Αναπαράσταση δραστηριότητας ως ακμή Η κατασκευή ενός δικτυακού διαγράμματος προκύπτει από την τοποθέτηση των δραστηριοτήτων σε λογική σειρά, όπως αυτή που αναμένεται να έχουν στην πραγματικότητα. Για παράδειγμα στο σχήμα. παρουσιάζονται δραστηριότητες που βρίσκονται στην ίδια διαδρομή και αποτελούν ακολουθιακές δραστηριότητες (δηλαδή η έναρξη της μιας πραγματοποιείται μετά την περάτωση της προηγούμενης). Παρουσιάζονται επίσης παράλληλες δραστηριότητες που βρίσκονται σε ξεχωριστές διαδρομές και κατά συνέπεια μπορούν να πραγματοποιούνται ταυτόχρονα. Καμία δραστηριότητα δεν μπορεί να ξεκινήσει προτού ολοκληρωθούν όλες οι δραστηριότητες που καταλήγουν σε αυτή (προαπαιτούμενες δραστηριότητες). Για παράδειγμα με βάση το διάγραμμα του σχήματος., η δραστηριότητα "J" δεν μπορεί να ξεκινήσει προτού ολοκληρωθεί η δραστηριότητα "I" και η "Η". Α 0 Β C D 3 4 E F 5 6 G H 7 I 8 J 9 Ακολουθιακές Δραστηριότητες Παράλληλες Δραστηριότητες Σχήμα.: Ακολουθιακές και Παράλληλες Δραστηριότητες Η συνήθης σύμβαση είναι τα διαγράμματα να σχεδιάζονται κατά τέτοιο τρόπο ώστε ο χρόνος να "κυλά" από αριστερά προς τα δεξιά και οι κόμβοι να αριθμούνται ανάλογα με τη χρονική στιγμή εμφάνισης του αντίστοιχου γεγονότος. Εν γένει, για να μπορούν να πραγματοποιηθούν οι υπολογισμοί επί του δικτύου δεν επιτρέπονται βρόχοι (κυκλικές διαδρομές δραστηριοτήτων) και ελεύθεροι κόμβοι (πλην αυτού που αναπαριστά το πέρας του έργου). Σελ. Χατζηγεωργίου Αλέξανδρος, Τμήμα Εφαρμοσμένης Πληροφορικής Θεσσαλονίκη, 006

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ.3 Πλασματικές Δραστηριότητες Οι δραστηριότητες που αναφέρθηκαν συνιστούν ενέργειες που καταναλώνουν χρόνο και που αποτελούν πραγματικές εργασίες του έργου. Οι πλασματικές δραστηριότητες (dummy activities) δεν καταναλώνουν χρόνο (έχουν μηδενική διάρκεια) και χρησιμοποιούνται μόνο για τη διευκόλυνση της κατασκευής του διαγράμματος. Συμβολίζονται ως διακεκομμένες ακμές. Οι πλασματικές δραστηριότητες χρησιμοποιούνται στις ακόλουθες τρεις περιπτώσεις: α) για την αναπαράσταση της ορθής λογικής σειράς των δραστηριοτήτων στο διάγραμμα: στο άνω διάγραμμα του σχήματος.3, η ολοκλήρωση των δραστηριοτήτων C και D είναι απαραίτητη ώστε να μπορέσει να ξεκινήσει η E ή η F. Αν στην πραγματικότητα, αυτό που ισχύει είναι ότι μόνο η δραστηριότητα Ε εξαρτάται από την ολοκλήρωση των C και D, ενώ η δραστηριότητα F εξαρτάται μόνο από την D, η κατάλληλη αναπαράσταση επιτυγχάνεται με τη χρήση μιας πλασματικής δραστηριότητας, όπως φαίνεται στο κάτω διάγραμμα του σχήματος.3. Η πλασματική δραστηριότητα υποδηλώνει απλώς την αναγκαιότητα ολοκλήρωσης και της D για την έναρξη της E. Α C E 4 G... 0 3 Β D F 5 H... Α C 3 E 5 G... 0 Β D 4 F 6 H... Σχήμα.3: Χρήση Πλασματικών Δραστηριοτήτων για σωστή αναπαράσταση β) Για την αποφυγή περισσοτέρων της μιας δραστηριοτήτων με τον ίδιο κόμβο έναρξης και τον ίδιο κόμβο λήξης (άνω διάγραμμα σχήματος.4). Επειδή ορισμένες φορές οι δραστηριότητες περιγράφονται από τους κόμβους έναρξης και λήξης, οι δύο δραστηριότητες του σχήματος δεν θα μπορούσαν να διαχωριστούν. Για την επίλυση αυτού του προβλήματος μπορεί να χρησιμοποιηθεί μια πλασματική δραστηριότητα όπως φαίνεται στο κάτω διάγραμμα του σχήματος.4. Χατζηγεωργίου Αλέξανδρος, Τμήμα Εφαρμοσμένης Πληροφορικής Θεσσαλονίκη, 006 Σελ. 3

Διαχείριση Έργων Λογισμικού Α n Β C n D Α n Β n3 C Σχήμα.4: Χρήση Πλασματικών Δραστηριοτήτων για αποφυγή δραστηριοτήτων με τους ίδιους κόμβους έναρξης και λήξης n D γ) για την απλοποίηση της σχεδίασης του δικτυωτού διαγράμματος. Πολλές φορές, η ύπαρξη μεγάλων "καμπύλων" ακμών που συνδέουν απομακρυσμένους κόμβους του γράφου δυσκολεύει τη σχεδίαση. Πλασματικές δραστηριότητες μπορούν να διευκολύνουν τη σχεδίαση ώστε αυτή να πραγματοποιείται με "ευθείες" ακμές..4 Υπολογισμοί Δικτύων Για την πραγματοποίηση υπολογισμών (αρχικά της εκτιμώμενης χρονικής διάρκειας ολοκλήρωσης) απαιτείται αφενός η περιγραφή του έργου ως δικτυακού διαγράμματος και αφετέρου η καταγραφή η χρονική διάρκεια όλων των δραστηριοτήτων του έργου. Συνήθως, οι προδιαγραφές παρέχονται υπό μορφή μιας λίστας δραστηριοτήτων, της προαπαιτούμενων δραστηριοτήτων για κάθε μία καθώς και της εκτιμώμενης χρονικής διάρκειας κάθε δραστηριότητας (π.χ. σε ημέρες), όπως φαίνεται παρακάτω: Συμβολισμός Δραστηριότητα Προαπαιτούμενες Διάρκεια (ημέρες) Α Απαιτήσεις - 3 Β Ανάλυση Απαιτήσεις C Πρωτυποποίηση Απαιτήσεις D Σχεδίαση Ανάλυση 4 Ε Αναδόμηση Πρωτυποποίηση 3 F Υλοποίηση Σχεδίαση 5 G Τεκμηρίωση Αναδόμηση 5 H Έλεγχος Υλοποίηση 6 I Εγκατάσταση Τεκμηρίωση.4. Ενωρίτερος Χρόνος Έναρξης (Earliest Start Date - ES) Ο ενωρίτερος χρόνος έναρξης κάθε δραστηριότητας υπολογίζεται από την αρχή του δικτύου αθροίζοντας τις διάρκειες όλων των προηγούμενων δραστηριοτήτων. Όταν δύο (ή περισσότερες) δραστηριότητες καταλήγουν στον ίδιο κόμβο, η επόμενη δραστηριότητα δεν μπορεί να ξεκινήσει προτού ολοκληρωθούν όλες οι Σελ. 4 Χατζηγεωργίου Αλέξανδρος, Τμήμα Εφαρμοσμένης Πληροφορικής Θεσσαλονίκη, 006

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ προηγούμενες. Κατά συνέπεια, ο αργότερος χρόνος λήξης από αυτές τις δραστηριότητες καθορίζει τον ενωρίτερο χρόνο έναρξης της επόμενης δραστηριότητας. Στο διάγραμμα του σχήματος.5 απεικονίζονται στο αριστερό τμήμα κάθε πλαισίου που σημειώνεται πλησίον των κόμβων οι ενωρίτεροι χρόνοι έναρξης των δραστηριοτήτων που ξεκινούν από τον κόμβο. Ως χρόνος έναρξης της δραστηριότητας "Απαιτήσεις" (που δεν έχει προηγούμενες) θεωρείται η μέρα 0. Στο διάγραμμα, σημειώνεται πάνω σε κάθε ακμή η χρονική διάρκεια κάθε δραστηριότητας. Ανάλυση 0 3 d = Απαιτήσεις 0 d = 3 d = Πρωτυποποίηση 5 9 Σχεδίαση 3 4 5 Υλοποίηση d = 4 d = 5 d = 3 d = 5 4 Αναδόμηση Τεκμηρίωση 4 7 6 7 d = 6 Έλεγχος 8 0 d = Εγκατάσταση Σχήμα.5: Επίλυση δικτύου: υπολογισμός ενωρίτερων χρόνων έναρξης.4. Αργότερος Χρόνος Λήξης (Latest Finish Date - LF) Ο αργότερος χρόνος λήξης κάθε δραστηριότητας υπολογίζεται από το τέλος του έργου αφαιρώντας τις διάρκειες των δραστηριοτήτων. Όταν δύο (ή περισσότερες) δραστηριότητες εκβάλλουν από τον ίδιο κόμβο, ο ενωρίτερος από τους χρόνους αυτούς καθορίζει τον αργότερο χρόνο λήξης της προηγούμενης δραστηριότητας. Στο διάγραμμα του σχήματος.6 απεικονίζονται στο δεξί τμήμα κάθε πλαισίου που σημειώνεται πλησίον των κόμβων οι αργότεροι χρόνοι λήξης των δραστηριοτήτων που καταλήγουν στον κόμβο. Ως αργότερος χρόνος λήξης των δραστηριοτήτων που καταλήγουν στον κόμβο που συμβολίζει το τέλος του έργου, λαμβάνεται ο ενωρίτερος χρόνος έναρξης της επόμενης δραστηριότητας (ότι δηλαδή ακολουθεί το υπό εξέταση έργο - μπορεί να μην είναι τίποτε). Ανάλυση 0 0 3 3 d = Απαιτήσεις 0 5 5 9 9 Σχεδίαση 4 Υλοποίηση d = 4 d = 5 Χατζηγεωργίου Αλέξανδρος, Τμήμα Εφαρμοσμένης Πληροφορικής Θεσσαλονίκη, 006 Σελ. 5 4 6 4 d = 6 Έλεγχος d = 3 d = d = Πρωτυποποίηση d = 3 d = 5 Εγκατάσταση 3 5 7 Αναδόμηση Τεκμηρίωση 4 0 7 3 8 Σχήμα.6: Επίλυση δικτύου: υπολογισμός αργότερων χρόνων λήξης 8 0 0

Διαχείριση Έργων Λογισμικού.4.3 Ενωρίτερος Χρόνος Λήξης (Earliest Finish Date - EF) Ο ενωρίτερος χρόνος λήξης συνήθως δεν απεικονίζεται επάνω στο διάγραμμα. Υπολογίζεται ως το άθροισμα του ενωρίτερου χρόνου έναρξης και της διάρκειας κάθε δραστηριότητας, δηλαδή EF = ES + d..4.4 Αργότερος Χρόνος Έναρξης (Latest Start Date - LS) Ο αργότερος χρόνος λήξης συνήθως δεν απεικονίζεται επάνω στο διάγραμμα. Υπολογίζεται ως η διαφορά του αργότερου χρόνου λήξης και της διάρκειας κάθε δραστηριότητας, δηλαδή LS = LF - d..4.5 Περιθώριο ή Πλεόνασμα Χρόνου (Float) Στο προηγούμενο παράδειγμα ο ενωρίτερος χρόνος ολοκλήρωσης του έργου καθορίζεται από τους ενωρίτερους χρόνους λήξης των δραστηριοτήτων Έλεγχος και Εγκατάσταση. Η δραστηριότητα Εγκατάσταση θα μπορούσε να ολοκληρωθεί την ημέρα 4 (ES+d) αλλά η δραστηριότητα Έλεγχος δεν μπορεί να ολοκληρωθεί πριν από την ημέρα 0. Αυτή ακριβώς η δραστηριότητα καθορίζει και το χρόνο ολοκλήρωσης όλου του έργου. Στην πραγματικότητα, η διαδρομή Απαιτήσεις- Ανάλυση-Σχεδίαση-Υλοποίηση-Έλεγχος καθορίζει τον ενωρίτερο χρόνο ολοκλήρωσης του έργου παρά η διαδρομή Απαιτήσεις-Πρωτυποποίηση-Αναδόμηση-Τεκμηρίωση- Εγκατάσταση. Ο ενωρίτερος χρόνος ολοκλήρωσης ενός έργου καθορίζεται από τη "μακρύτερη" διαδρομή μέσα στο δίκτυο: κατά συνέπεια, οι συντομότερες διαδρομές θα έχουν περισσότερο διαθέσιμο χρόνο από όσο χρειάζονται. Η διαφορά μεταξύ του διαθέσιμου χρόνου για μια δραστηριότητα και του απαιτούμενου χρόνου καλείται Συνολικό Περιθώριο Χρόνου (ΣΠΧ). Απομονώντας τη δραστηριότητα G Τεκμηρίωση από το διάγραμμα, όπως φαίνεται στο σχήμα.6, προκύπτει ότι: Διαθέσιμος Χρόνος = LF - ES Απαιτούμενος Χρόνος = d Συνολικό Περιθώριο Χρόνου = LF - ES - d δηλαδή, ΣΠΧ G = (8-7) - 5 = 6 ημέρες Με άλλα λόγια, η δραστηριότητα G μπορεί να καθυστερήσει μέχρι και 6 ημέρες, χωρίς να επιφέρει μετατόπιση του χρόνου λήξης του έργου. Σημειώνεται ότι, το συνολικό περιθώριο χρόνου είναι ένα χαρακτηριστικό μιας διαδρομής και όχι μια μεμονωμένης δραστηριότητας. Το μακρύτερο (χρονικά) μονοπάτι σε ένα δικτυωτό διάγραμμα καλείται κρίσιμο μονοπάτι (critical path) και είναι αυτό με το μικρότερο συνολικό περιθώριο χρόνου (μηδενικό περιθώριο σε πολλές περιπτώσεις). Οποιαδήποτε καθυστέρηση στις δραστηριότητες του κρίσιμου μονοπατιού θα καθυστερήσει την ολοκλήρωση του έργου. Το κρίσιμο μονοπάτι δεν είναι κατ' ανάγκη μοναδικό. Η τεχνική υπολογισμού χρόνων επί ενός δικτύου που προαναφέρθηκε ονομάζεται τεχνική του κρίσιμου μονοπατιού (Critical Path Method - CPM). Σελ. 6 Χατζηγεωργίου Αλέξανδρος, Τμήμα Εφαρμοσμένης Πληροφορικής Θεσσαλονίκη, 006

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ. ΕΚΤΙΜΗΣΗ ΚΟΣΤΟΥΣ (ΤΕΧΝΙΚΗ COCOMO) Η τεχνική COCOMO (COnstructive COst MOdel) βασίζεται σε αλγοριθμικό μοντέλο για την εκτίμηση του κόστους ενός έργου λογισμικού και αναπτύχθηκε από τον Barry Boehm τη δεκαετία του 970 και δημοσιεύτηκε το 98, αξιοποιώντας δεδομένα από πληθώρα έργων λογισμικού της εταιρείας TRW. Το μοντέλο έχει τρεις εκδόσεις. Στη συνέχεια θα περιγραφεί η δεύτερη έκδοση του μοντέλου COCOMO που ονομάζεται "ενδιάμεσο μοντέλο". Για την εφαρμογή της τεχνικής COCOMO απαιτείται η κατάταξη ενός έργου λογισμικού σε μία από τις κατηγορίες "οργανική" (organic), "ημιαποσπασμένη" (semi-detached) και "ενσωματωμένη" (embedded). Η κατάταξη πραγματοποιείται με βάση τα χαρακτηριστικά που παρουσιάζονται στον πίνακα.. Το είδος του έργου καθορίζει τις τιμές ορισμένων παραμέτρων που χρησιμοποιούνται στις εξισώσεις του μοντέλου. Πίνακας.: Κατηγορίες έργων λογισμικού κατά COCOMO κατηγορία Χαρακτηριστικά οργανική ημιαποσπασμένη ενσωματωμένη Κατανόηση από όλους τους εμπλεκόμενους των αντικειμενικών λεπτομερής λεπτομερής γενική σκοπών του προϊόντος Εμπειρία σε σχετικά έργα λογισμικού εκτενής σημαντική μέτρια Αναγκαιότητα συμμόρφωσης λογισμικού με απαιτήσεις βασική σημαντική πλήρης Αναγκαιότητα συμμόρφωσης με προκατασκευασμένη εξωτερική βασική σημαντική πλήρης διαπροσωπεία Ταυτόχρονη ανάπτυξη νέων λειτουργικών διαδικασιών και υλικού χαμηλή μέτρια υψηλή Αναγκαιότητα νεωτεριστικών αρχιτεκτονικών, νέων αλγορίθμων ελάχιστη μερική σημαντική Bonus για ταχεία αποπεράτωση χαμηλό μέτριο υψηλό Μέγεθος προϊόντος <50 KDSI <300 KDSI >300 KDSI Παραδείγματα Καινούργια Απλά Συστήματα Λειτουργικά επιστημονικά ή ελέγχου Συστήματα, νέα εμπορικά εναέριας Συστήματα προγράμματα κυκλοφορίας Διαχείρισης ΒΔ Για την εκτίμηση του κόστους χρησιμοποιούνται: () μία "εξίσωση υπολογισμού απαιτούμενης ονομαστικής προσπάθειας" που έχει τη μορφή: MM NOM = C ( KDSI ) K όπου: ΜΜ ΝΟΜ : η ονομαστική προσπάθεια σε ανθρωπομήνες που απαιτείται για την εκτέλεση του έργου Χατζηγεωργίου Αλέξανδρος, Τμήμα Εφαρμοσμένης Πληροφορικής Θεσσαλονίκη, 006 Σελ. 7

Διαχείριση Έργων Λογισμικού KDSI: μέγεθος σε χιλιάδες εντολές πηγαίου προγράμματος C, K: παράμετροι, η τιμή των οποίων καθορίζεται με βάση τον πίνακα. Πίνακας.: Εξισώσεις ονομαστικής προσπάθειας και διάρκειας ανάπτυξης ανά κατηγορία λογισμικού κατηγορία ονομαστική προσπάθεια διάρκεια ανάπτυξης οργανική MM 3.( KDSI ). 05 NOM = ( ) 0. 38 TDEV =.5 MM DEV ημιαποσπασμένη MM 3.0( KDSI ). NOM = TDEV =.5( MM ) 0. 35 DEV ενσωματωμένη MM.8( KDSI ). 0 NOM = TDEV =.5( MM ) 0. 3 DEV Η επίδραση των συντελεστών κάθε κατηγορίας λογισμικού στην προσπάθεια ανάπτυξης παρουσιάζεται γραφικά στο σχήμα.3 Σχήμα.3: Επίδραση κατηγορίας έργου στην προσπάθεια ανάπτυξης () ένα σύνολο από 5 "παράγοντες κόστους" (cost drivers) που συνεισφέρουν στο συνολικό κόστος του έργου. Σε κάθε παράγοντα κόστους αντιστοιχεί μία παράμετρος που ονομάζεται "πολλαπλασιαστής προσπάθειας" (effort multiplier). Στη συνέχεια, οι πολλαπλασιαστές αυτοί θα συμβολίζονται ως q, q,..., q 5. Η σημασία του κάθε παράγοντα κόστους και η μνημονική ονομασία τους παρουσιάζεται στον πίνακα.3. Η κατάταξη των παραγόντων κόστους γίνεται με βάση τον πίνακα.4 (ειδικά για τον παράγοντα κόστους πολυπλοκότητα, χρησιμοποιείται ο πίνακας.5), ενώ η εύρεση της αντίστοιχης τιμής του κάθε πολλαπλασιαστή προσπάθειας για κάθε παράγοντα κόστους γίνεται με τη βοήθεια του πίνακα.6. Σελ. 8 Χατζηγεωργίου Αλέξανδρος, Τμήμα Εφαρμοσμένης Πληροφορικής Θεσσαλονίκη, 006

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Πίνακας.3: Παράγοντες κόστους κατά COCOMO α/α μνημονικό σημασία σχετίζεται με RELY Απαιτούμενη αξιοπιστία λογισμικού προϊόν DATA Μέγεθος βάσης δεδομένων -//- 3 CPLX Πολυπλοκότητα προϊόντος -//- 4 ΤΙΜΕ Περιορισμός στο χρόνο εκτέλεσης υπολογιστή 5 STOR Περιορισμός στην κύρια μνήμη -//- 6 VIRT Αλλαγές στο σύστημα HW/SW -//- 7 TURN Χρόνος απόκρισης υπολογιστή (απηρχειωμ.) -//- 8 ACAP Ικανότητα αναλυτών προσωπικό 9 AEXP Εμπειρία αναλυτών σε εφαρμογές -//- 0 PCAP Ικανότητα προγραμματιστών -//- VEXP Εμπειρία με το σύστημα HW/SW (OS etc) -//- LEXP Εμπειρία με τη γλώσσα προγραμματισμού -//- 3 MODP Χρήση μοντέρνων πρακτικών προγραμματ έργο 4 TOOL Χρήση εργαλείων προγραμματισμού -//- 5 SCED Πίεση από χρονοδιάγραμμα ανάπτυξης -//- παράγοντας κόστους RELY Πίνακας.4: Κατάταξη Παραγόντων Κόστους [Σκορδαλάκης 99] κατάταξη χαμηλότερη χαμηλή ονομαστική υψηλή υψηλότερη υψηλότατη Αποτέλεσμα: μικρή ενόχληση Μικρές, εύκολα ανακτήσιμες απώλειες Μέτριες, ανακτήσιμες απώλειες Μεγάλες Οικονομικές απώλειες Κίνδυνος για ανθρώπινες ζωές DATA L < 0 0<L<00 00<L< 000 L>000 CPLX βλέπε πίνακα 3.5 ΤΙΜΕ <50% ΧΔΧΕ 70% ΧΔΧΕ 85% ΧΔΧΕ 95% ΧΔΧΕ STOR <50% XΔΜ 70% ΧΔΜ 85% ΧΔΜ 95% ΧΔΜ VIRT Σημαντικές αλλαγές κάθε μήνες Σημαντικές αλλαγές κάθε 6 μήνες Σημαντικές αλλαγές κάθε μήνες Σημαντικές αλλαγές κάθε εβδομάδες TURN Απηρχειωμένο -> Χρησιμοποιείται η ονομαστική τιμή ACAP 5% 35% 55% 75% 90% AEXP <4 μήνες έτος 3 έτη 6 έτη έτη PCAP 5% 35% 55% 75% 90% VEXP < μήνα 4 μήνες έτος 3 έτη LEXP < μήνα 4 μήνες έτος 3 έτη MODP όχι χρήση αρχή χρήσης μερική χρήση γενική χρήση αποκλειστική TOOL Βασικά εργαλεία μικρο Η/Υ (assembler) Βασικά εργαλεία Η/Υ (compiler etc) Ενδιάμεσα εργαλεία (debugger, interactive editors) Ισχυρά εργαλεία προγρ/σμού και ελέγχου Επιπρόσθετα εργαλεία (απαιτήσεων, σχεδίου, μετρικών) SCED 75% 85% 00% 30% 60% L = (DBbytes)/(Prog.DSI), ΧΔΧΕ Χρησιμοποίηση Διαθέσιμου Χρόνου Εκτέλεσης, ΧΔΜ: Χρησιμοποίηση Διαθέσιμης Μνήμης, ΜΧΚΕ: Μέση Διάρκεια Κύκλου Εξυπηρέτησης Χατζηγεωργίου Αλέξανδρος, Τμήμα Εφαρμοσμένης Πληροφορικής Θεσσαλονίκη, 006 Σελ. 9

Διαχείριση Έργων Λογισμικού Πίνακας.5: Κατάταξη του παράγοντα κόστους πολυπλοκότητα με βάση τέσσερις κατηγορίες λειτουργιών του λογισμικού [Σκορδαλάκης 99] κατάταξη χαμηλότερη χαμηλή ονομαστική λειτουργίες ελέγχου Ευθυγραμμισμένος κώδικας (ΔΠ) με λίγους βρόχους επανάληψης, δομές ελέγχου (χωρίς φώλιασμα) Ομαλό φώλιασμα τελεστών Ομαλό φώλιασμα. Μικρός έλεγχος μεταξύ δομών. λειτουργίες υπολογισμού Αποτίμηση απλών εκφράσεων π.χ. Α=Β*C+(D-E) Αποτίμηση μετρίου επιπέδου εκφράσεων π.χ. D = SQRT(B^- 4*A*C) Χρήση προτύπων μαθηματικών και στατιστικών συναρτήσεων. Βασικές λειτουργίες μητρών. λειτουργίες εξαρτημένες από υλικό Απλές εντολές read/write Δεν απαιτείται γνώση χαρακτηριστικών του επεξεργαστή ή συσκευής ΕΕ. (π.χ. γράψιμο σε αρχείο) Επιλογή συσκευής, έλεγχος κατάστασης και λαθών λειτουργίες διαχείρισης δεδομένων Απλοί πίνακες στην κύρια μνήμη Απλή χρήση αρχείων χωρίς αλλαγές στη δομή των δεδομένων Πολλαπλά αρχεία εισόδου και ένα αρχείο εξόδου. υψηλή Υφηλός βαθμός φωλιάσματος. Σημαντικός έλεγχος μεταξύ δομών. Βασική ΑΑ: παρεμβολή, κοινές ΔΕ, Απλές απαιτήσεις ακρίβειας Μεταφράσεις φυσικών διευθύνσεων μνήμης, προσπελάσεις κτλ Συναρτήσεις που ενεργοποιούνται με βάση το περιεχόμενο data stream. Αλλαγή των δομών σε επίπεδο εγγραφής υψηλότερη Δύσκολες αλλά Γενικές, Διαδικασίες για Κώδικας με πολλαπλά δομημένες παραμετρικές διάγνωση, σημεία εισόδου. λειτουργίες ΑΑ: συναρτήσεις εξυπηρέτηση και Αναδρομικές συναρτήσεις. γραμμικές δόμησης αρχείων. απομόνωση Χειρισμός διακοπών. εξισώσεις, ΔΕ με Βελτιστοποίηση διακοπών μερ. παραγώγους αναζήτησης. υψηλότατη Δύσκολες και Ισχυρά συζευγμένες Κωδικοποίηση που Χρονο-προγραμματισμός αδόμητες δυναμικές εξαρτάται από το πολλών πόρων με λειτουργίες ΑΑ: σχεσιακές δομές. χρονισμό της προτεραιότητες που Υψηλή ακρίβεια, Διαχείριση συσκευής, μικροπρογραμματισμός αλλάζουν δυναμικά. στοχαστικά δεδομένων φυσικής δεδομένα γλώσσας. ΔΠ: Δομημένος Προγρ/σμός, ΕΕ: Είσοδος/Έξοδος, ΑΑ: Αριθμητική Ανάλυση, ΔΕ: Διαφορ. εξισώσεις Πίνακας.6: Τιμές πολλαπλασιαστών προσπάθειας με βάση την κατάταξη κατάταξη παράγοντας χαμηλότερη χαμηλή ονομαστική υψηλή υψηλότερη υψηλότατη RELY 0.75 0.88.00.5.40 DATA 0.94.00.08.8 CPLX 0.70 0.85.00.5.30.65 ΤΙΜΕ.00..30.66 STOR.00.06..56 VIRT 0.87.00.5.30 TURN 0.87.00.07.5 ACAP.46.9.00 0.86 0.7 AEXP.9.3.00 0.9 0.8 PCAP.4.7.00 0.86 0.70 VEXP..0.00 0.90 LEXP.4.07.00 0.95 MODP.4.0.00 0.9 0.8 TOOL.4.0.00 0.9 0.83 SCED.3.08.00.04.0 Σελ. 0 Χατζηγεωργίου Αλέξανδρος, Τμήμα Εφαρμοσμένης Πληροφορικής Θεσσαλονίκη, 006

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ (3) μία "εξίσωση υπολογισμού παράγοντα προσαρμογής προσπάθειας" που έχει τη μορφή q = 5 q i i= όπου: q: o παράγοντας προσαρμογής προσπάθειας q i : o πολλαπλασιαστής προσπάθειας που αντιστοιχεί στον παράγοντα κόστους i (4) μία "εξίσωση υπολογισμού προσπάθειας ανάπτυξης" που έχει τη μορφή: όπου: q : ΜΜ ΝΟΜ : ΜΜ DEV : MM = q DEV MM NOM ο παράγοντας προσαρμογής προσπάθειας η ονομαστική προσπάθεια για την εκτέλεση του έργου σε ανθρωπομήνες η προσπάθεια για την εκτέλεση του έργου σε ανθρωπομήνες Η επόμενη εξίσωση του μοντέλου, είναι η "εξίσωση υπολογισμού του κόστους" και είναι άμεση συνέπεια των προηγουμένων, αν θεωρηθεί ότι η αξία σε χρήμα ενός ανθρωπομήνα είναι p. Το συνολικό κόστος σε χρήμα (C t ) που απαιτείται για την ανάπτυξη ενός έργου λογισμικού είναι: C = p t MM DEV Εκτός από την εκτίμηση του κόστους ενός έργου λογισμικού, η τεχνική COCOMO μπορεί να εφαρμοσθεί και για την εκτίμηση της διάρκειας ανάπτυξης του έργου. Η διάρκεια του έργου δεν μπορεί απλά να υπολογιστεί από την τιμή της προσπάθειας που απαιτείται για την εκτέλεση του έργου (MM DEV ) διαιρώντας με τη μέση τιμή του προσωπικού. Ο λόγος είναι ότι η σχέση μεταξύ διάρκειας του έργου και συνολικής προσπάθειας (σε ανθρωπομήνες) δεν είναι γραμμική: Αν ο στόχος είναι η μείωση στο μισό της διάρκειας του έργου, τότε ο διπλασιασμός των ανθρωπομηνών δεν είναι λύση. Ο κύριος λόγος είναι ότι αν το προσωπικό απαιτείται να επικοινωνεί για την ολοκλήρωση μιας εργασίας, τότε ο χρόνος επικοινωνίας πρέπει να συνυπολογιστεί. Σύμφωνα με το μοντέλο COCOMO, η "εξίσωση υπολογισμού της διάρκειας του έργου" έχει τη μορφή: όπου: Τ DEV : T = R ( ) m DEV MM DEV η χρονική διάρκεια του έργου σε ανθρωπομήνες R, m : παράμετροι που υπολογίζονται βάσει του πίνακα.. Χατζηγεωργίου Αλέξανδρος, Τμήμα Εφαρμοσμένης Πληροφορικής Θεσσαλονίκη, 006 Σελ.

Διαχείριση Έργων Λογισμικού Είναι φανερό ότι η ακρίβεια της τεχνικής COCOMO εξαρτάται από το είδος των έργων που χρησιμοποιήθηκαν για τη βαθμονόμηση (calibration) των παραμέτρων του μοντέλου. Η τεχνική COCOMO εφαρμόσθηκε ευρύτατα στη βιομηχανία λογισμικού τα τελευταία 0 χρόνια. Ωστόσο, το κυριότερο μειονέκτημά της, είναι το γεγονός ότι για τον υπολογισμό του κόστους του λογισμικού, απαιτείται η γνώση του μεγέθους του κώδικα, στοιχεία που δεν είναι γνωστό στις αρχικές φάσεις ανάπτυξης. Για το λόγο αυτό αναπτύχθηκε το μοντέλο COCOMOII στα τέλη της δεκαετίας του '90. Σελ. Χατζηγεωργίου Αλέξανδρος, Τμήμα Εφαρμοσμένης Πληροφορικής Θεσσαλονίκη, 006

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ ΠΕΡΙΓΡΑΦΗ ΑΠΑΙΤΗΣΕΩΝ ΛΟΓΙΣΜΙΚΟΥ. Μηχανές Πεπερασμένων Καταστάσεων Συνήθως, για την περιγραφή των απαιτήσεων σε πληροφοριακά συστήματα απαιτείται ο καθορισμός της ροής των δεδομένων δια μέσου του λογισμικού (διαγράμματα ροής δεδομένων) ή ο καθορισμός των αλληλεπιδράσεων του συστήματος με τους εξωτερικούς χρήστες (διαγράμματα περιπτώσεων χρήσης). Υπάρχουν ωστόσο περιπτώσεις συστημάτων όπου πρέπει να περιγραφούν θέματα ροής ελέγχου (control flow) στο λογισμικό. Για παράδειγμα, σε ένα διάγραμμα ροής δεδομένων μπορεί να υπάρξει η αναγκαιότητα να καθοριστεί αν ένας μετασχηματισμός πρέπει να "περιμένει" όλες τις εισόδους για να παράγει κάποια έξοδο ή όχι. Όλες οι γλώσσες προγραμματισμού έχουν δομές για να περιγράψουν διάφορες περιπτώσεις ροής ελέγχου. Τα χρησιμοποιούμενα μοντέλα για την περιγραφή των απαιτήσεων ενός συστήματος ποικίλλουν ανάλογα με τις ανάγκες και είναι πολύ πιθανόν να πρέπει να χρησιμοποιηθούν διαφορετικά μοντέλα για την περιγραφή διαφορετικών όψεων του συστήματος. Οι Μηχανές Πεπερασμένων Καταστάσεων (Finite State Machines FSMs) αποτελούν έναν απλό, ευρέως διαδεδομένο και τυπικό συμβολισμό για την περιγραφή θεμάτων ελέγχου. Μία μηχανή πεπερασμένων καταστάσεων αποτελείται:. ένα πεπερασμένο σύνολο καταστάσεων, Q. ένα πεπερασμένο σύνολο εισόδων, I 3. μια συνάρτηση μετάβασης δ: Q I Q. Η δ μπορεί να είναι μια μερική συνάρτηση, δηλαδή μπορεί να μην είναι ορισμένη για κάποιες τιμές του πεδίου ορισμού. Μια μηχανή πεπερασμένων καταστάσεων μπορεί να αναπαρασταθεί ως γράφος όπου οι κόμβοι συμβολίζουν καταστάσεις. Μια ακμή μεταξύ των κόμβων q και q που συμβολίζεται i υφίσταται αν και μόνο αν δ(q, i) = q. Μια απλή μηχανή παρουσιάζεται στο σχήμα. q a a q 0 b q c q Σχήμα : Μηχανή Πεπερασμένων Καταστάσεων Όπως προκύπτει από το όνομα, μια μηχανή πεπερασμένων καταστάσεων είναι κατάλληλη για την περιγραφή συστημάτων που μπορούν να βρεθούν σε ένα πεπερασμένο σύνολο καταστάσεων και μεταβαίνουν από τη μια κατάσταση σε μια άλλη ως συνέπεια κάποιου γεγονότος. Για παράδειγμα, μια λάμπα μπορεί να είναι ανοικτή ή κλειστή και μεταβαίνει από τη μια κατάσταση στην άλλη με το πάτημα του πλήκτρου. Θεωρούμε ένα σύστημα ελέγχου ενός (μικρού) χημικού εργοστασίου. Η θερμοκρασία και η πίεση παρακολουθούνται από αισθητήρες για λόγους ασφαλείας. Όταν οποιοδήποτε παρακολουθούμενο μέγεθος ξεπεράσει κάποιο όριο παράγεται ένα 3 b Χατζηγεωργίου Αλέξανδρος, Τμήμα Εφαρμοσμένης Πληροφορικής Θεσσαλονίκη, 006 Σελ. 3

Περιγραφή Απαιτήσεων Λογισμικού σήμα συναγερμού, κλείνοντας τη διαδικασία του εργοστασίου. Η διαδικασία ενεργοποιείται χειροκίνητα όταν διορθωθεί το πρόβλημα. Τα ανωτέρω περιγράφονται από τη μηχανή του σχήματος. High-pressure alarm High-temperature alarm On Off Restart Σχήμα : Μηχανή Πεπερασμένων Καταστάσεων που περιγράφει τη λειτουργία χημικού εργοστασίου Αυτή η απλή πολιτική είναι προφανώς ανεπαρκής. Ένας καλύτερος τρόπος διαχείρισης του εργοστασίου είναι ο εξής: Όταν ένα από τα δύο σήματα εμφανιστεί, το σύστημα εισέρχεται σε μια κατάσταση ανάκτησης όπου προσπαθεί να εφαρμόσει κάποια διορθωτική ενέργεια. Αν η προσπάθεια είναι επιτυχής, το σύστημα επανέρχεται σε κανονική λειτουργία. Ειδάλλως, αν η προσπάθεια είναι ανεπιτυχής ή αν κατά την προσπάθεια ανάκτησης εμφανιστεί και το άλλο σήμα συναγερμού, η διαδικασία του εργοστασίου τερματίζεται. Θεωρείται ότι τα δύο σήματα δεν μπορούν να εμφανιστούν ταυτόχρονα. Η νέα πολιτική περιγράφεται από το σχήμα 3. Pressure signal Pressure action Temperature signal Normal Normal Successful recovery Unsuccessful recovery Off Off Successful recovery Unsuccessful recovery Temperature signal Temperature action Pressure signal Σχήμα 3: Βελτιωμένη Μηχανή Πεπερασμένων Καταστάσεων που περιγράφει τη λειτουργία χημικού εργοστασίου Μια μηχανή πεπερασμένων καταστάσεων μπορεί να εμπλουτιστεί με τη δυνατότητα παραγωγής σημάτων εξόδου. Στην περίπτωση αυτή η συνάρτηση μετάβασης δ γίνεται δ: Q I Q Ο, όπου Ο είναι ένα πεπερασμένο σύνολο εξόδων. Γραφικά, μια ακμή μεταξύ των κόμβων q και q που συμβολίζεται <i/o> υφίσταται αν και μόνο αν δ(q, i) = <q, ο>. Με άλλα λόγια, η εμφάνιση του γεγονός i μεταφέρει το σύστημα από την κατάσταση q στην κατάσταση q και παράγει την έξοδο o. Οι μηχανές πεπερασμένων καταστάσεων χρησιμοποιούνται σε ευρύ φάσμα εφαρμογών, από την περιγραφή μεταγλωττιστών, συστημάτων αναγνώρισης προτύπων, πρωτοκόλλων και ψηφιακών κυκλωμάτων. Η απλότητά τους αποτελεί συνήθως πλεονέκτημα, σε ορισμένες όμως περιπτώσεις εισάγει περιορισμούς. Πρώτα από όλα, όπως συνάγεται από το όνομά τους, αποτελούν περιγραφές πεπερασμένης μνήμης. Για παράδειγμα, έστω ότι στην περίπτωση του χημικού Σελ. 4 Χατζηγεωργίου Αλέξανδρος, Τμήμα Εφαρμοσμένης Πληροφορικής Θεσσαλονίκη, 006

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ εργοστασίου, η απόκριση σε μια υψηλή θερμοκρασία είναι να εφαρμοστεί μια ενέργεια ψύξης που είναι ανάλογη της διαφοράς (DiffTemp) μεταξύ της τρέχουσας θερμοκρασίας και μιας θερμοκρασίας αναφοράς. Ένα τέτοιο σύστημα δεν μπορεί να περιγραφεί με μηχανή πεπερασμένων καταστάσεων, επειδή οι δυνατές καταστάσεις είναι άπειρες (μια για κάθε τιμή της διαφοράς DiffTemp). Ακόμα και αν το εύρος των δυνατών τιμών είναι πεπερασμένο, η περιγραφή όλων των καταστάσεων και αποκρίσεων μπορεί να γίνει εξαιρετικά περίπλοκη. Π.χ. για την περιγραφή ενός καταχωρητή 8 bit μέσω μιας μηχανής πεπερασμένων καταστάσεων απαιτούνται 8 διαφορετικές καταστάσεις! Σε τέτοιες περιπτώσεις υπάρχουν διάφορες λύσεις, όπως το να περιγραφεί ένα χαρακτηριστικό μόνο υποσύνολο των καταστάσεων, να συνοδευτούν τα διαγράμματα από λεκτικές περιγραφές ή να χρησιμοποιηθούν και άλλα μοντέλα. Επιπλέον, οι μεταβάσεις μπορούν να συνοδεύονται από συνθήκες φρουρούς, κατηγορήματα που πρέπει να είναι αληθή ώστε να λάβει χώρα η μετάβαση. Για παράδειγμα, στο σχήμα, η μετάβαση από την κατάσταση "normal" στην κατάσταση "off" μπορεί να συνοδεύεται από μια συνθήκη φρουρό του τύπου temp very_dangerous_value. Οι μηχανές πεπερασμένων καταστάσεων έχουν ένα επιπλέον μειονέκτημα που είναι χαρακτηριστικό συστημάτων περιγραφής της ροής του ελέγχου. Έστω μια διαδικασία παραγωγής μηνυμάτων που τοποθετεί τα μηνύματα σε ένα δίαυλο δύο θέσεων. Μια διαδικασία κατανάλωσης μηνυμάτων διαβάζει τα μηνύματα απομακρύνοντάς τα από το δίαυλο. Αν ο δίαυλος είναι γεμάτος, η διαδικασία παραγωγής πρέπει να περιμένει την κατανάλωση ενός μηνύματος ώστε να ελευθερωθεί μια θέση. Παρόμοια, αν ο δίαυλος είναι κενός, η διαδικασία ανάγνωσης πρέπει να αναμένει την παραγωγή ενός μηνύματος. Οι δύο διαδικασίες και η λειτουργία του διαύλου περιγράφονται από διαφορετικές μηχανές πεπερασμένων καταστάσεων όπως φαίνεται στο σχήμα 4. Producer produce p p deposit Consumer get c c consume Storage deposit deposit 0 get Σχήμα 4: Χρήση τριών μηχανών για την περιγραφή ενός συστήματος Είναι προφανές, ότι το λογικό θα ήταν να χρησιμοποιηθεί μια μηχανή για την περιγραφή όλου του συστήματος. Μια τέτοια μηχανή θα προέκυπτε από το καρτεσιανό γινόμενο των συνόλων καταστάσεων. Μια τέτοια σύνθεση θα κατέληγε στη μηχανή του σχήματος 5. Μια κατάσταση όπως η <0, p, c > αντιστοιχεί σε get Χατζηγεωργίου Αλέξανδρος, Τμήμα Εφαρμοσμένης Πληροφορικής Θεσσαλονίκη, 006 Σελ. 5

Περιγραφή Απαιτήσεων Λογισμικού έναν δίαυλο που είναι κενός, μια διαδικασία παραγωγής στην κατάσταση p και μια διαδικασία κατανάλωσης στην κατάσταση c. <0, p,c > consume write <, p,c > consume write consume <, p,c > produce <0, p,c > <0, p,c > read produce <, p,c> read <, p,c > produce <, p,c > <, p,c > produce read produce read produce write consume <0, p, c > consume write consume <, p,c > <, p,c > Σχήμα 5: Χρήση μιας μηχανής για την περιγραφή του ιδίου συστήματος Η προκύπτουσα πολυπλοκότητα, ακόμα και για ένα τέτοιο μικρό σύστημα είναι εμφανής. Από τη σύνθεση n υποσυστημάτων με k i καταστάσεις το καθένα, προκύπτει ένα σύστημα με k k... k n καταστάσεις. Ένα σημαντικότερο ωστόσο πρόβλημα σχετίζεται με την ύπαρξη συγχρονισμένων σημάτων. Η μηχανή του σχήματος 5 αναφέρεται σε ένα σύγχρονο σύστημα: κάθε χρονική στιγμή βρίσκεται σε μία κατάσταση και μπορεί να λάβει χώρα μία μόνο ενέργεια. Είναι όμως προφανές, ότι οι διαδικασίες παραγωγής και κατανάλωσης μηνυμάτων θα μπορούσαν να ενεργοποιούνται ταυτόχρονα. Ειδικά αν οι διάφορες ενέργειες έχουν διαφορετικούς χρόνους ολοκλήρωσης, μια μηχανή πεπερασμένων καταστάσεων είναι ανεπαρκής για την περιγραφή ασύγχρονων συστημάτων όπου διάφορες μεταβάσεις μπορούν να συμβαίνουν ταυτόχρονα.. Δίκτυα Petri Τα δίκτυα Petri είναι ένας φορμαλισμός για την περιγραφή σύγχρονων συστημάτων που περιλαμβάνουν παράλληλες ή ταυτόχρονες δραστηριότητες. Ορίζονται ως μια πλειάδα (P, T, F, W) όπου. P είναι ένας πεπερασμένος αριθμός θέσεων. Τ είναι ένα πεπερασμένο σύνολο μεταβάσεων 3. P T 4. Ορίζεται η διμελής σχέση ροών F { P T} { T P} 5. Ορίζεται μια συνάρτηση βάρους W : F N { 0} που συσχετίζει έναν μή αρνητικό φυσικό αριθμό σε κάθε στοιχείο της F. Αν δεν προσδιορίζεται τιμή βάρους σε μια ροή, θεωρείται η εξ'ορισμού τιμή. Τα δίκτυα Petri τυγχάνουν ευρείας χρήσης λόγω της ελκυστικής γραφικής τους αναπαράστασης. Οι θέσεις συμβολίζονται ως κόμβοι, οι μεταβάσεις ως οριζόντιες μπάρες και οι ροές ως ακμές. Ένα δίκτυο Petri απεικονίζεται στο σχήμα 6. Σελ. 6 Χατζηγεωργίου Αλέξανδρος, Τμήμα Εφαρμοσμένης Πληροφορικής Θεσσαλονίκη, 006

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ P P t P 4 P 3 t P 5 P 6 t 3 t 5 t 4 t 6 P 7 Σχήμα 6: Δίκτυο Petri Ένα δίκτυο Petri αποκτά κατάσταση τοποθετώντας σύμβολα (token) στις θέσεις του. Τυπικά η τοποθέτηση συμβόλων είναι μια συνάρτηση αντιστοίχισης θέσεων σε φυσικούς αριθμούς, M: P N. Η τοποθέτηση ενός αριθμού x συμβόλων σε μια θέση p (όπως σημειώνεται γραφικά στο σχήμα 7a), συμβολίζει ότι x = M(p). Μια μετάβαση (οριζόντια μπάρα) μπορεί να έχει μία ή περισσότερες θέσεις εισόδου και εξόδου. Αν μια ακμή εξέρχεται από μια θέση και καταλήγει σε μια μετάβαση, η αντίστοιχη θέση θεωρείται θέση εισόδου. Αν μια ακμή εξέρχεται από μια μετάβαση και καταλήγει σε μια θέση, η αντίστοιχη θέση καλείται θέση εξόδου. Μια μετάβαση είναι ενεργοποιημένη αν κάθε μια από τις θέσεις εισόδου περιλαμβάνει αριθμό συμβόλων που είναι μεγαλύτερος ή ίσος με το βάρος των ροών που συνδέουν τη θέση εισόδου με τη μετάβαση. Μια μετάβαση χωρίς θέσεις εισόδου είναι πάντοτε ενεργοποιημένη. Μια ενεργοποιημένη μετάβαση μπορεί να πυροδοτήσει. Η πυροδότηση μιας μετάβασης t απομακρύνει από κάθε θέση εισόδου p i έναν αριθμό συμβόλων που είναι ίσος με το βάρος της ροής από την p i προς την t και τοποθετεί σε κάθε θέση εξόδου q i έναν αριθμό συμβόλων που είναι ίσος με το βάρος της ροής από την t στην q i. Στο σχήμα 7a, οι μεταβάσεις t και t είναι ενεργοποιημένες. Καμία άλλη μετάβαση δεν είναι ενεργοποιημένη. Σε μία τέτοια περίπτωση, το δίκτυο μπορεί να εξελιχθεί με ένα από τους εξής δύο τρόπους: είτε με την πυροδότηση της t είτε με την πυροδότηση της t. Το μοντέλο είναι μή-ντετερμινιστικό, υπό την έννοια ότι με βάση την αρχική κατάσταση δύο διαφορετικές εξελίξεις είναι πιθανές. Αν πυροδοτήσει η t προκύπτει η κατάσταση του σχήματος 7b, ενώ αν πυροδοτήσει η t προκύπτει η κατάσταση του σχήματος 7c. Μετά την πυροδότηση της t, η t παραμένει ενεργοποιημένη και μπορεί να πυροδοτήσει. Σε κάθε περίπτωση, το σύστημα θα καταλήξει στην κατάσταση του σχήματος 7d. Στο σημείο αυτό οι t 3 και t 4 είναι ενεργοποιημένες και μπορούν να πυροδοτήσουν με μή-ντετερμινιστικό τρόπο. Αυτή τη φορά ωστόσο, η πυροδότηση της μιας απαγορεύει την πυροδότηση της άλλης. Χατζηγεωργίου Αλέξανδρος, Τμήμα Εφαρμοσμένης Πληροφορικής Θεσσαλονίκη, 006 Σελ. 7

Περιγραφή Απαιτήσεων Λογισμικού P P P P P 6 t P 4 t3 t5 P 3 t4 t6 t P 5 P 7 P 6 t P 4 t3 t5 P 3 t 4 t 6 t P5 P 7 (a) (b) P P P P P 6 t P 4 t3 t5 P 3 t 4 t 6 t P 5 P 7 P 6 t P 4 t3 t5 P 3 t 4 t 6 t P5 P 7 (c) (d) Σχήμα 7: Εξέλιξη ενός δικτύου Petri Μια ακολουθία πυροδοτήσεων ενός δικτύου Petri δεδομένης μιας αρχικής κατάστασης συμβολίζεται ως <t, t,..., t n > υποδηλώνοντας ότι η t είναι ενεργοποιημένη με βάση την αρχική κατάσταση, η t ενεργοποιείται μετά την πυροδότηση της t κ.ο.κ. Σε ένα δίκτυο Petri μια μετάβαση συνήθως αντιπροσωπεύει ένα γεγονός και η πυροδότησή του σημαίνει ότι το γεγονός λαμβάνει χώρα. Κατά συνέπεια, μια μετάβαση είναι ενεργοποιημένη αν ικανοποιούνται οι συνθήκες για την πραγματοποίηση του υπό εξέταση γεγονότος. Η ύπαρξη ενός συμβόλου σε μια θέση υποδηλώνει την ύπαρξη μιας κατάστασης ή την εξασφάλιση μιας συνθήκης. Για παράδειγμα, αν μια θέση μοντελοποιεί έναν πόρο του συστήματος, η ύπαρξη ενός ή περισσοτέρων συμβόλων υποδηλώνει τη διαθεσιμότητα ενός ή περισσοτέρων στιγμιοτύπων αυτού του πόρου. Στο δίκτυο του σχήματος 7, οι μεταβάσεις t, t 3, t 5 και οι μεταβάσεις t, t 4, t 6 μπορούν να ερμηνευτούν ως δύο ανεξάρτητες δραστηριότητες. Οι δύο δραστηριότητες μοιράζονται έναν κοινό πόρο (π.χ. έναν κοινό επεξεργαστή) που μοντελοποιείται από τη θέση P 3. Αρχικά, οι δύο δραστηριότητες μπορούν να εξελιχθούν ανεξάρτητα, δηλαδή η πυροδότηση μιας εκ των t ή t δεν αποτρέπει την πυροδότηση της άλλης. Οι δύο μεταβάσεις είναι ταυτόχρονες. Μετά την πυροδότηση των δύο μεταβάσεων, οι δύο δραστηριότητες είναι πάλι ενεργοποιημένες, με αμοιβαίο ωστόσο αποκλεισμό καθώς ο πόρος που μοντελοποιείται από τη θέση P 3 είναι διαθέσιμος σε μία από τις δύο δραστηριότητες. Οι δύο μεταβάσεις είναι αντικρουόμενες. Εάν ο πόρος δοθεί στην αριστερή δραστηριότητα η εξέλιξη θα συνεχιστεί με τις μεταβάσεις t 3 και t 5 αφήνοντας την άλλη δραστηριότητα προσωρινά "μπλοκαρισμένη". Η πυροδότηση της t 5 απελευθερώνει πάλι τον απαιτούμενο πόρο στη θέση P 3 και η μετάβαση t 4 θα μπορούσε να πυροδοτήσει. Είναι όμως πιθανό η Σελ. 8 Χατζηγεωργίου Αλέξανδρος, Τμήμα Εφαρμοσμένης Πληροφορικής Θεσσαλονίκη, 006

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ εξέλιξη να συνεχιστεί με την ακολουθία t και t 3 για ακόμα μία φορά. Το δίκτυο Petri δεν επιβάλει κάποια πολιτική για την επίλυση συγκρούσεων. Μια διαδικασία (όπως αυτή που μοντελοποιείται από την ακολουθία < t, t 4, t 6 >, αν δεν αποκτήσει ποτέ πρόσβαση στον απαιτούμενο πόρο θα υποστεί εξάντληση (starvation). Αν υποθέσουμε ότι η αρχική κατάσταση του συστήματος είχε δύο σύμβολα στη θέση P 3 (αναπαριστώντας δύο διαθέσιμους πόρους, π.χ. δύο επεξεργαστές), οι μεταβάσεις t 3 και t 4 δεν θα ήταν πλέον σε σύγκρουση, αλλά ταυτόχρονες. Στο σχήμα 8 παρουσιάζεται ένα τροποποιημένο δίκτυο Petri όπου δύο δραστηριότητες απαιτούν δύο πόρους για να συνεχιστούν (φαίνονται στη θέση R). Αν μία δραστηριότητα (έστω η αριστερή) ξεκινήσει με την πυροδότηση της t, μπορεί να καταναλώσει τον ένα πόρο με την πυροδότηση της ' 3 t. Στη συνέχεια, προσπαθεί να '' αποκτήσει πρόσβαση στον δεύτερο πόρο (πυροδοτώντας την t 3 ). Αν μία δραστηριότητα αποκτήσει και τους δύο πόρους η εξέλιξη μπορεί να συνεχιστεί και τελικά με την πυροδότηση της t 5 οι δύο πόροι θα απελευθερωθούν. P P t t R t' 3 t' 4 t" 3 t" 4 t 5 t 6 Σχήμα 8: Δίκτυο Petri που μπορεί να βρεθεί σε αδιέξοδο ' ' Αν θεωρήσουμε όμως την ακολουθία <t, t 3, t, t 4 >, το σύστημα θα καταλήξει σε μια κατάσταση όπου καμία μετάβαση δεν θα είναι ενεργοποιημένη. Κατά συνέπεια, το δίκτυο δεν μπορεί να εξελιχθεί καθώς κάθε δραστηριότητα έχει από έναν πόρο και απαιτεί τον άλλο για να προχωρήσει. Αυτή είναι μια τυπική περίπτωση αδιεξόδου (deadlock) που μοντελοποιείται ιδανικά από ένα δίκτυο Petri. Τυπικά, ένα δίκτυο με συγκεκριμένη κατάσταση βρίσκεται σε αδιέξοδο εάν καμία μετάβαση δεν είναι ενεργοποιημένη. Οι σχεδιαστές συστημάτων προσπαθούν να αποφύγουν τη δημιουργία αδιεξόδων, των οποίων ο εντοπισμός, στη γενική περίπτωση, είναι ιδιαίτερα δύσκολος. Δίκτυα Petri μπορούν να χρησιμοποιηθούν και για τη μοντελοποίηση των διαδικασιών παραγωγής και κατανάλωσης μηνυμάτων του σχήματος 4. Τα αντίστοιχα δίκτυα για τις τρεις διαδικασίες παρουσιάζονται στο σχήμα 9. Το πλεονέκτημα τώρα είναι ότι η σύνθεση των μοντέλων (παρουσιάζεται στο σχήμα 0) δεν οδηγεί σε εκρηκτική αύξηση του αριθμού των κόμβων θέσεων. Σημειώνεται, ότι στο σχήμα 0, ο αριθμός των καταστάσεων προκύπτει από την τοποθέτηση των συμβόλων σε όλες τις δυνατές θέσεις. Δεύτερο πλεονέκτημα είναι ότι οι μοντελοποιούμενες Χατζηγεωργίου Αλέξανδρος, Τμήμα Εφαρμοσμένης Πληροφορικής Θεσσαλονίκη, 006 Σελ. 9

Περιγραφή Απαιτήσεων Λογισμικού δραστηριότητες μπορούν να είναι ταυτόχρονες, δηλαδή το σύστημα δεν είναι κατ' ανάγκη σύγχρονο. Για παράδειγμα, αν το σύστημα βρίσκεται στην κατάσταση <, p, c > και οι δύο μεταβάσεις (produce και consume) είναι ενεργοποιημένες. Οι δύο μεταβάσεις μπορούν να πυροδοτήσουν παράλληλα χωρίς η μία να αποτρέπει την άλλη. write consume P P C C produce read read read 0 write Σχήμα 9: Τρία διαφορετικά δίκτυα Petri για το σύστημα παραγωγής-κατανάλωσης μηνυμάτων write C consume C read read 0 write write P produce P Σχήμα 0: Κοινό δίκτυο Petri για το σύστημα παραγωγής-κατανάλωσης μηνυμάτων Η απλότητα των δικτύων Petri είναι εν γένει πλεονέκτημα. Ωστόσο, το γεγονός ότι τα σύμβολα στις διάφορες θέσεις είναι ανώνυμα μπορεί να είναι περιοριστικό. Αν για παράδειγμα ένα δίκτυο Petri (σχήμα ) μοντελοποιεί την προώθηση ενός μηνύματος σε ένα από τα δύο κανάλια (channel αν το μήνυμα είναι σωστό, channel αν το μήνυμα είναι λάθος), τότε το δίκτυο του σχήματος είναι ανεπαρκές, διότι η εξέλιξη Σελ. 0 Χατζηγεωργίου Αλέξανδρος, Τμήμα Εφαρμοσμένης Πληροφορικής Θεσσαλονίκη, 006

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ του δικτύου φαίνεται να είναι μή-ντετερμινιστική. Με άλλα λόγια, η πυροδότηση μιας μετάβασης θα έπρεπε να εξαρτάται από το περιεχόμενο του μηνύματος. P channel channel Σχήμα : Προώθηση μηνυμάτων με βάση το περιεχόμενο Επίσης, όπως ήδη φάνηκε, τα δίκτυα Petri δεν μπορούν να καθορίσουν μια πολιτική επιλογής μεταξύ πολλών δυνατών εξελίξεων. Στη γενική περίπτωση, αποδεικνύεται ότι ένα δίκτυο δεν μπορεί να περιγράψει μια επιλογή του τύπου: if η μετάβαση t είναι ενεργοποιημένη πυροδότησε την t; else πυροδότησε την πρώτη ενεργοποιημένη μετάβαση με βάση κάποιο κριτήριο διάταξης Τέλος, τα δίκτυα Petri δεν λαμβάνουν υπόψη το χρόνο και κατά συνέπεια δεν είναι δυνατή η αναπαράσταση χρονικών εξαρτήσεων. Η πραγματοποίηση κάποιου γεγονότος, που αναπαρίσταται με την πυροδότηση μιας μετάβασης, θεωρείται ότι δεν έχει χρονική διάρκεια. Κάτι τέτοιο είναι απαραίτητο σε πολλά συστήματα (όπως συστήματα πραγματικού χρόνου), όπου η απόκριση σε κάποιο εξωτερικό ή εσωτερικό συμβάν πρέπει να καθοριστεί ότι θα λαμβάνει χώρα σε συγκεκριμένο χρονικό διάστημα. Αξίζει πάντως να σημειωθεί ότι υπάρχουν επεκτάσεις των δικτύων Petri για την επίλυση των ανωτέρω προβλημάτων. 3. Γλώσσα Ζ Η γλώσσα προδιαγραφών Z αναπτύχθηκε από τον Jean-Raymond Abrial το 979 και εν συνεχεία εξελίχθηκε στο Πανεπιστήμιο της Οξφόρδης. Ένα ισχυρό χαρακτηριστικό της γλώσσας Ζ είναι ότι ο δομημένος καθορισμός των απαιτήσεων ενός συστήματος μπορεί να επιτευχθεί με τη χρήση μιας άλγεβρας σχημάτων. Το στοιχείο αυτό επιτρέπει στις προδιαγραφές να κατασκευάζονται από απλούστερα δομικά στοιχεία, με μια προσέγγιση από κάτω-προς-τα-πάνω (bottom-up approach), αντίστοιχα με την υλοποίηση προγραμμάτων από απλούστερα υποπρογράμματα. Η σημειογραφία της γλώσσας Z βασίζεται στη χρήση συνόλων (sets). Ένα σύνολο είναι μια συλλογή αντικειμένων που κατέχουν μια κοινή ιδιότητα. Τα αντικείμενα καλούνται στοιχεία ή μέλη του συνόλου, ενώ ο συνήθης συμβολισμός ενός συνόλου είναι η απαρίθμηση των στοιχείων του μέσα σε άγκιστρα. Π.χ. {Bob, Carol, Ted, Alice} είναι ένα σύνολο ονομάτων. Αν ένα αντικείμενο x είναι μέλος ενός συνόλου S, η σχέση αυτή συμβολίζεται ως x S, ενώ αν ένα αντικείμενο x δεν είναι μέλος ενός συνόλου S, ο συμβολισμός είναι x S. Σημειώνεται ότι ένα σύνολο δεν μπορεί να περιέχει επαναλαμβανόμενα στοιχεία. Η ένωση (union) δύο συνόλων A και B (συμβολίζεται ως A B) είναι το σύνολο των στοιχείων που περιέχονται είτε στο σύνολο Α, είτε στο Β, είτε και στα δύο. Για παράδειγμα: {Bob, Carol, Ted} {Ted, Alice} = {Bob, Carol, Ted, Alice} Χατζηγεωργίου Αλέξανδρος, Τμήμα Εφαρμοσμένης Πληροφορικής Θεσσαλονίκη, 006 Σελ.

Î Περιγραφή Απαιτήσεων Λογισμικού Η τομή (intersection) δύο συνόλων A και B (συμβολίζεται ως Α Β) είναι το σύνολο των στοιχείων που περιέχονται και στο σύνολο Α και στο Β. Επομένως: {Bob, Carol, Ted} {Ted, Alice} = {Ted} Ένα σύνολο Α είναι υποσύνολο του Β (συμβολίζεται ως Α Β) αν κάθε στοιχείο του Α είναι και στοιχείο του Β. Π.χ. {Bob, Ted} {Bob, Carol, Ted} H διαφορά (difference) μεταξύ δύο συνόλων Α και Β (συμβολίζεται ως Α \ Β) είναι το σύνολο των στοιχείων που απομένουν όταν τα στοιχεία που περιέχονται στο Β απομακρυνθούν από το Α. Δηλαδή: {Bob, Carol, Ted} \ {Ted, Alice} = {Bob, Carol} Στη συνέχεια, θα χρησιμοποιηθεί η γλώσσα Z (που βασίζεται στις ανωτέρω έννοιες συνόλων) για την περιγραφή των απαιτήσεων ενός απλού συστήματος βιβλιοθήκης. Το σύστημα γνωρίζει ανά πάσα στιγμή τα βιβλία που είναι στα "ράφια" της βιβλιοθήκης και κατά συνέπεια είναι διαθέσιμα (shelved) καθώς και τα βιβλία που έχουν δανειστεί (loaned). Οι προδιαγραφές περιλαμβάνουν τις λειτουργίες του δανεισμού και της επιστροφής ενός βιβλίου. Θεωρούμε ότι όλα τα βιβλία της βιβλιοθήκης αναγνωρίζονται από έναν μοναδικό αριθμό καταλόγου και για το λόγο αυτό εισάγουμε ένα νέο τύπο δεδομένων που ονομάζεται CATNO χρησιμοποιώντας το συμβολισμό της Z για τον καθορισμό τύπων σε ένα σύστημα: [CATNO] Ένας τύπος στη Z είναι επίσης ένα σύνολο. Κατά συνέπεια, ο τύπος CATNO μπορεί να θεωρηθεί ως το σύνολο όλων των δυνατών αριθμών καταλόγου. Η συγκεκριμένη αναπαράσταση του τύπου (π.χ. αν θα είναι κάποιος συνδυασμός γραμμάτων και αριθμών) δεν είναι απαραίτητη για την κατανόηση του συστήματος και αυτό είναι ένα από τα πλεονεκτήματα της γλώσσας Z. Η βιβλιοθήκη μοντελοποιείται ως δύο σύνολα βιβλίων (ή αριθμών καταλόγου βιβλίων) τα οποία στο εξής θα ονομάζονται shelved και loaned. Είναι προφανές ότι ένα συγκεκριμένο βιβλίο δεν μπορεί να ανήκει και στα δύο σύνολα, γιατί δεν μπορεί να βρίσκεται στη βιβλιοθήκη και να είναι δανεισμένο την ίδια χρονική στιγμή. Η στοιχειώδης αυτή περιγραφή της βιβλιοθήκης καταγράφεται με ένα σχήμα Z που ονομάζεται Library: Library shelved, loaned : CATNO shelved loaned = Το σχήμα Library περιγράφει την κατάσταση του συστήματος (δηλαδή το μοντέλο της βιβλιοθήκης) και μια αναλλοίωτη που αφορά τα δεδομένα (δηλαδή ένα κατηγόρημα που αφορά το μοντέλο). Στο άνω τμήμα του σχήματος δηλώνονται τα συστατικά της κατάστασης, στην προκειμένη περίπτωση οι μεταβλητές shelved και loaned καθώς και ο τύπος δεδομένων τους. Ο τύπος CATNO αντιστοιχεί στο δυναμοσύνολο του CATNO, όπου δυναμοσύνολο είναι το σύνολο όλων των υποσυνόλων του CATNO. Μαθηματικά, το δυναμοσύνολο ενός συνόλου S είναι: S = {Χ: Χ S} δηλαδή για το σύνολο {,} το δυναμοσύνολο είναι {, {}, {}, {,} }. Κατά συνέπεια οι μεταβλητές shelved, loaned της βιβλιοθήκης μπορούν να έχουν ως τιμές οποιοδήποτε σύνολο αριθμών καταλόγου από το CATNO. Το κάτω Σελ. Χατζηγεωργίου Αλέξανδρος, Τμήμα Εφαρμοσμένης Πληροφορικής Θεσσαλονίκη, 006

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ τμήμα του σχήματος περιέχει ένα κατηγόρημα το οποίο εκφράζει μια αναλλοίωτη (έναν ισχυρισμό για τα συστατικά-μεταβλητές του συστήματος ο οποίος πρέπει πάντοτε να ισχύει ανεξαρτήτως των λειτουργιών που επιδρούν επί του συστήματος). Στο συγκεκριμένο σχήμα, η αναλλοίωτη αναφέρεται στο ότι οι μεταβλητές shelved και loaned δεν θα έχουν ποτέ κοινά στοιχεία (το σύμβολο υποδηλώνει το κενό σύνολο {}). Υποθέτοντας ότι ο τύπος CATNO είναι το απειροσύνολο {c, c, c3, c4, c5, }, τυπικές τιμές για τις μεταβλητές shelved και loaned που ικανοποιούν την αναλλοίωτη θα ήταν: shelved = {c, c, c4} loaned = {c3, c5} Αντίστροφα, οι τιμές shelved = {c, c, c4} loaned = {c, c3, c5} θα ήταν σε σύγκρουση με την αναλλοίωτη καθώς το στοιχείο c ανήκει και στα διαθέσιμα και στα δανεισμένα βιβλία ταυτοχρόνως. Κατά την περιγραφή των λειτουργιών επί ενός συστήματος, οι αναλλοίωτες αποτελούν ένα χρήσιμο μέσο για την εξασφάλιση της συνέπειας των λειτουργικών απαιτήσεων που συγκροτούν τις προδιαγραφές. Θα πρέπει να εξασφαλίζεται ότι αν κάποια αναλλοίωτη ισχύει πριν από την εκτέλεση μιας λειτουργίας, θα πρέπει να ισχύει και μετά την ολοκλήρωση της λειτουργίας. Στη συνέχεια, παρουσιάζεται υπό μορφή σχήματος Ζ η λειτουργία του δανεισμού ενός βιβλίου από τη βιβλιοθήκη (λειτουργία Borrow): Borrow Δ Library book? : CATNO book? shelved shelved = shelved \ {book?} loaned = loaned {book?} Επειδή έχει ήδη οριστεί ένα σχήμα που ονομάζεται Library, εξ' ορισμού υπάρχει επίσης πρόσβαση σε ένα σχήμα που καλείται ΔLibrary, και το οποίο έχει ως εξής: ΔLibrary shelved, loaned : P CATNO shelved, loaned : P CATNO shelved loaned = shelved loaned = Μια σύμβαση της γλώσσας Z είναι ότι τα ονόματα σχημάτων που ξεκινούν με το γράμμα Δ υποδηλώνουν σχήματα των οποίων ο σκοπός είναι η περιγραφή της κατάστασης ενός συστήματος πριν και μετά την εκτέλεση μιας λειτουργίας, όταν η κατάσταση μετά διαφέρει από την κατάσταση πριν. Στη γλώσσα Ζ επίσης μιας τονισμένη μεταβλητή αναφέρεται στην κατάσταση μετά την εκτέλεση μιας λειτουργίας. Για παράδειγμα, η shelved αναφέρεται στα διαθέσιμα βιβλία πριν από τη λειτουργία δανεισμού (Borrow), ενώ η shelved' αναφέρεται στα διαθέσιμα βιβλία μετά την εκτέλεση μιας λειτουργίας δανεισμού. Το σχήμα Borrow αξιοποιεί την περιγραφή του σχήματος ΔLibrary με μια τεχνική που ονομάζεται συμπερίληψη σχήματος. Η τεχνική επιτρέπει την παραγωγή Χατζηγεωργίου Αλέξανδρος, Τμήμα Εφαρμοσμένης Πληροφορικής Θεσσαλονίκη, 006 Σελ. 3

Περιγραφή Απαιτήσεων Λογισμικού σύνθετων προδιαγραφών από άλλες απλούστερες. Αν δεν χρησιμοποιούνταν αυτή η τεχνική, και η περιγραφή του σχήματος Borrow ήταν πλήρης, θα ήταν ως εξής: Borrow shelved, loaned : CATNO shelved, loaned : CATNO book? : CATNO book? shelved shelved loaned = shelved loaned = shelved = shelved \ {book?} loaned = loaned {book?} Î Î Για την κατασκευή του σχήματος Borrow, οι δηλώσεις των μεταβλητών από το σχήμα ΔLibrary συνενώθηκαν με τις δηλώσεις του σχήματος Borrow, και τα κατηγορήματα του σχήματος ΔLibrary συνδέθηκαν με λογικό "και" με τα κατηγορήματα του σχήματος Borrow. Επομένως, μετά την λειτουργία Borrow, και τα πέντε κατηγορήματα πρέπει να είναι αληθή. Το σχήμα Borrow είναι απολύτως ισοδύναμο με το σχήμα Borrow, αν το σχήμα Library είναι ορισμένο. Προφανώς, η ύπαρξη ενός ήδη ορισμένου σχήματος, επιτρέπει τη συμπερίληψή του σε άλλους ορισμούς σχημάτων. Η λειτουργία Borrow χρειάζεται ως είσοδο τον αριθμό καταλόγου του βιβλίου που δανείζεται. Το στοιχείο αυτό υποδηλώνεται με τη μεταβλητή εισόδου book? (μια ακόμα σύμβαση της γλώσσας Z είναι να δηλώνονται οι μεταβλητές εισόδου με το σύμβολο? στο τέλος). Το πρώτο κατηγόρημα περιγράφει την προ-συνθήκη που πρέπει να ισχύει ώστε να μπορεί να εφαρμοστεί η λειτουργία δανεισμού. Με άλλα λόγια, πρέπει ένα βιβλίο να είναι διαθέσιμο για να μπορεί να το δανειστεί κάποιος. Τα τελευταία δύο κατηγορήματα εκφράζουν την κατάσταση του συστήματος μετά την εφαρμογή της λειτουργίας (μετά-συνθήκες). Υποδηλώνεται ότι το νέο σύνολο διαθέσιμων βιβλίων θα ελαττωθεί κατά το δανειζόμενο βιβλίο και το νέο σύνολο δανεισμένων βιβλίων θα επαυξηθεί. Αν επομένως η αρχική κατάσταση της βιβλιοθήκης είναι: shelved = {c, c, c4} loaned = {c3, c5} και book? = c, η νέα κατάσταση του συστήματος μετά τη λειτουργία Borrow θα είναι: shelved' = {c, c, c4} \ {c} = {c, c4} loaned' ={c3, c5} {c} = {c, c3, c5} Η λειτουργία επιστροφής ενός βιβλίου στη βιβλιοθήκη (Return) περιγράφεται από το κάτωθι σχήμα: Σελ. 4 Χατζηγεωργίου Αλέξανδρος, Τμήμα Εφαρμοσμένης Πληροφορικής Θεσσαλονίκη, 006