Professional Documents
Culture Documents
Κεφάλαιο 1:
ΠΕΡΙΕΧΟΜΕΝΑ
1. ΕΙΣΑΓΩΓΗ -------------------------------------------------------------------------------------------------- 2
1
1. ΕΙΣΑΓΩΓΗ
2
κανείς ότι απαιτούνται νέα εργαλεία, μέθοδοι και τεχνικές, και κυρίως,
καλύτερη εκπαίδευση προσωπικού, ώστε να μπορεί η βιομηχανία
παραγωγής λογισμικού να ανταποκριθεί στις αυξανόμενες ανάγκες της
αγοράς.
3
οποιαδήποτε από αυτά τα χαρακτηριστικά μπορεί να είναι πολύ ακριβές.
Το σχήμα 1 δείχνει πώς αυξάνεται εκθετικά το κόστος σε σχέση με
βελτιώσεις στην απόδοση.
ΚΟΣΤΟΣ
ΑΠΟΔΟΣΗ
4
3. Η ΔΙΑΔΙΚΑΣΙΑ ΠΑΡΑΓΩΓΗΣ ΛΟΓΙΣΜΙΚΟΥ
ΟΡΙΣΜΟΣ ΚΑΙ
ΑΝΑΛΥΣΗ
ΑΠΑΙΤΗΣΕΩΝ
ΣΧΕΔΙΑΣΜΟΣ
ΣΥΣΤΗΜΑΤΟΣ
ΚΑΙ ΛΟ Γ Ι Σ ΜΙΚΟΥ
ΥΛΟΠΟΙΗΣΗ ΚΑΙ
ΕΛΕΓΧΟΣ ΕΝΟΤΗΤΩΝ
ΟΛΟΚΛΗΡΩΣΗ ΚΑΙ
ΕΛΕΓΧΟΣ ΣΥΣΤ/ΤΟΣ
5
και δεν μπορεί να περιγραφεί με ένα απλό μοντέλο. Ακόμα και σήμερα
γίνεται έρευνα για τη δημιουργία εξειδικευμένων μοντέλων. Όμως
υπάρχουν αρκετά γενικευμένα μοντέλα για παραγωγή λογισμικού, ένα
από τα οποία είναι και το μοντέλο καταρράκτη. Έτσι, μερικά από αυτά
τα γενικευμένα μοντέλα είναι τα εξής:
ΤΟ ΜΟΝΤΕΛΟ ΚΑΤΑΡΡΑΚΤΗ
6
1. Ανάλυση και προσδιορισμός των απαιτήσεων . Οι υπηρεσίες, στόχοι
και περιορισμοί του συστήματος καθορίζονται μετά από συζήτηση με
τους ανθρώπους που θα χρησιμοποιήσουν το σύστημα. Μετά
ορίζονται με τρόπο κατανοητό και από τις δύο πλευρές.
2. Σχεδιασμός συστήματος και λογισμικού . Καθορίζεται μια γενική
αρχιτεκτονική του συστήματος χωρίζοντας τις απαιτήσεις του
συστήματος σε hardware ή software απαιτήσεις. Ο software
σχεδιασμός έχει να κάνει με την παρουσίαση του λειτουργιών
λογισμικού που απαιτούνται και που πρέπει να μεταφραστούν σε
εκτελέσιμα προγράμματα.
3. Υλοποίηση και έλεγχος ενοτήτων (units) . Κατά τη διάρκεια αυτού του
σταδίου, το λογισμικό υλοποιείται ως ένα σύνολο από προγράμματα
και ενότητες προγραμμάτων. Κάθε ενότητα πρέπει να ελεγχθεί ώστε
να διαπιστωθεί ότι πληρεί τις προδιαγραφές τους.
4. Ολοκλήρωση και έλεγχος του συστήματος . Σε αυτό το στάδιο το
σύστημα χτίζεται από τις επιμέρους ενότητες και ελέγχεται ως
ολοκληρωμένο πλέον σύστημα. Μετά τον έλεγχο μπορεί να
παραδοθεί στο χρήστη.
5. Λειτουργία και συντήρηση . Το σύστημα εγκαθίσταται και
χρησιμοποιείται. Συντήρηση σημαίνει διόρθωση των λαθών που δεν
είχαν ανακαλυφθεί σε προηγούμενα στάδια του σχεδιασμού,
βελτίωση των προγραμμάτων και βελτίωση των υπηρεσιών του
συστήματος όσο παρουσιάζονται νέες απαιτήσεις .
7
κατασκευάζουμε σωστά το προϊόν), η δε επικύρωση (validation) εξετάζει
αν το προιόν που παράγεται είναι το σωστό.
Kατά τη διάρκεια του τελευταίου στάδιου (λειτουργία & συντήρηση),
επιστρέφονται πληροφορίες στα προηγούμενα στάδια. Σε αυτό το
στάδιο λάθη και παραλήψεις βγαίνουν στην επιφάνεια και αναγνωρίζεται
η ανάγκη για νέες λειτουργίες. Συντήρηση λογισμικού (software
maintenance) ονομάζεται η διαδικασία υλοποίησης αυτών των
αλλαγών, και επαναλαμβάνεται όσες φορές χρειαστεί.
% Κόστος φάσης
Τύπος
συστήματος Απαιτήσεις/ Υλοποίηση Ελεγχος
σχεδιασμός
Συστήματα 46 20 34
εντολών και
ελέγχου
Λειτουργικά 33 17 50
συστήματα
Επιστημονικά 44 26 30
συστήματα
Επιχειρησιακά 44 28 28
συστήματα
8
Ο πίνακας δείχνει ότι το κόστος παραγωγής είναι μεγαλύτερο στην αρχή
και στο τέλος του σχεδιασμού. Επομένως μια μείωση του συνολικού
κόστους θα επιτυγχάνετο με εναν καλύτερο προσδιορισμό των
απαιτήσεων του συστήματος και με έναν καλύτερο τρόπο επαλήθευσης
και επικύρωσης του συστήματος. Η ανάγκη για μεγαλύτερη έμφαση σε
αυτά τα στάδια σχεδιασμού οδήγησαν στην εμφάνιση και άλλων
μοντέλων, όπως αυτά που αναφέρθηκαν παραπάνω.
ΕΞΕΡΕΥΝΗΤΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ
9
1. Η διαχείριση των συστατικών λογισμικού σχετίζεται με παραγωγή
μεγάλου αριθμού εγγράφων που ακολουθούν και βοηθούν στη
διαχείρισή του. Όμως δεν κρίνεται οικονομικό να παράγονται τόσα
έγγραφα για ένα σύστημα το οποίο υφίσταται τόσες συνεχείς
αλλαγές.
2. Το μοντέλο εξερευνητικού προγραμματισμού εφαρμόζεται όπως
φαίνεται σε συστήματα με όχι τόσο σαφή δομή. Συνεχής αλλαγή στο
σύστημα αλλοιώνει τη δομή του. Ως αποτέλεσμα, η συντήρηση του
συστήματος γίνεται μια δύσκολη αλλά και δαπανηρή διαδικασία,
ιδιαίτερα όσον αφορά μεγάλα συστήματα.
3. Συνήθως συστήματα που υλοποιούνται με αυτό το μοντέλο
παράγονται από μικρή ομάδα τεχνικών με υψηλή κατάρτιση και
εξειδίκευση. Τα προσόντα και οι ικανότητες των τεχνικών που
χρησιμοποιούνται στην παραγωγή λογισμικού δεν επαρκούν για να
χρησιμοποιηθούν σ’αυτό το είδος ανάπτυξης λογισμικού.
10
Προδιαγραφές συστήματος Λειτουργικές προδιαγραφές
Τεστ αποδοχής προδιαγραφών
Πρόχειρο εγχειρίδιο χρήστη
Η ιδέα ότι η έξοδος ενός στάδιου πρέπει να ενεργεί σαν είσοδος για το
επόμενο υπονοεί ότι η όλη διαδικασία ακολουθεί γραμμική εξελιξη,
11
γεγονός που δεν ισχύει πάντα αφού ένα στάδιο λαμβάνει υπόψη του
όχι μόνο το προηγούμενο αλλά και επόμενα στάδια.
Η έννοια του ρίσκου δεν ορίζεται εύκολα. Σκεφτόμενοι ένα ρίσκο είναι
σαν να σκεφτόμαστε ότι κάτι μπορεί να πάει λάθος. Π.χ ένα ρίσκο
μπορεί να θεωρηθεί η πρόθεσή μας να χρησιμοποιήσουμε μια νέα
γλώσσα προγραμματισμού ενώ δεν υπάρχει συγκεκριμένος compiler
διαθέσιμος. Τα ρίσκα είναι απόρροια μη επαρκούς πληροφόρησης και
αντιμετωπίζονται με την γέννηση διαδικασιών που μειώνουν την
αβεβαιότητα. Το παραπάνω ρίσκο αντιμετωπίζεται με μια έρευνα
αγοράς που μας απαντά στο κατά πόσο υπάρχει διαθέσιμος compiler .
Αν δεν βρεθεί τίποτα τότε θα πρέπει να αλλάχθει η απόφαση να
χρησιμοποιήσουμε μια νέα γλώσσα προγραμματισμού.
12
Αποφάσισε στόχους, Αποτίμησε τα εναλλακτικά σενάρια ,
εναλλακτικά σενάρια, προσδιόρισε και αντιμετώπισε τους
περιορισμούς κινδύνους
Ανάλυση κινδύνων
(ΑΚ)
ΑΚ Λειτουργικό
πρωτότυπο
ΑΚ
Πρωτότυπο
Πρωτότυπο 3
ΑΚ
Πρωτ. 2
Αναθεώρηση 1
Σχέδιο Απαιτήσεων Προσομοιώσεις, Μοντέλα, Benchmarks
Σχέδιο κύκλου Θεώρηση της
ζωής λειτουργίας Απαιτήσεις
λογισμικού
Σχέδιο Σχεδιασμός Λεπτομερής
Επαλήθευση προιόντος Σχεδιασμός
Ανάπτυξης
απαιτήσεων
Σχέδιο Κώδικας
Ολοκλήρωσης και
Σχεδιασμός Έλεγχος
Ελέγχου
Ε&Ε Ενοτήτων
Έλεγχος
Ολοκλήρωσης
Έλεγχος
Αποδοχής
Σχεδίασε την επόμενη φάση
Υπηρεσία
Ανάπτυξε και επικύρωσε το
προιόν του επόμενου
επιπέδου
13
θέλαμε να αναπτύξουμε ένα κατάλογο από επαναχρησιμοποιήσιμα
συστατικά λογισμικού, η φόρμα που θα αναπτύσσαμε θα ήταν η
ακόλουθη:
14
Με την αναγνώριση όλων των ρίσκων, μπορεί να χρησιμοποιηθεί το πιο
κατάλληλο μοντέλο ανάπτυξης.
(*)
: ΣΔΒΔ = Σύστημα Διαχείρησης Βάσης Δεδομένων
15
Κεφάλαιο 2: Τεκμηρίωση
ΠΕΡΙΕΧΟΜΕΝΑ
2.1 ΚΑΤΗΓΟΡΟΠΟΙΗΣΗ ΕΓΓΡΑΦΩΝ ........................................................................................ 17
2.1.1 ΤΕΚΜΗΡΙΩΣΗ ΔΙΑΔΙΚΑΣΙΑΣ .................................................................................. 17
2.1.2 ΤΕΚΜΗΡΙΩΣΗ ΠΡΟΙΟΝΤΟΣ..................................................................................... 18
Τ Ε Κ Μ Η Ρ Ι Ω Σ Η Χ Ρ Η Σ Τ Η ................................................................................................................... 18
2.2 ΠΟΙΟΤΗΤΑ ΤΕΚΜΗΡΙΩΝ ................................................................................................... 21
2.2.1 ΔΟΜΗ ΤΕΚΜΗΡΙΩΝ ............................................................................................... 22
2.2.2 ΠΡΟΤΥΠΑ (STANDARDS) ΤΕΚΜΗΡΙΩΝ ................................................................ 23
Π Ρ Ο Τ Υ Π Α Δ Ι Α Δ Ι Κ Α Σ Ι Α Σ ( P R O C E S S S T A N D A R D S ) .............................................................. 23
Π Ρ Ο Τ Υ Π Α Π Ρ Ο Ϊ Ο Ν Τ Ο Σ ( P R O D U C T S T A N D A R D S ) .............................................................. 23
Π Ρ Ο Τ Υ Π Α Α Ν Τ Α Λ Λ Α Γ Η Σ ( I N T E R C H A N G E S T A N D A R D S ) ................................................ 24
2.2.3 ΤΥΠΟΣ ΓΡΑΨΙΜΑΤΟΣ ........................................................................................... 25
2.3 ΠΡΟΕΤΟΙΜΑΣΙΑ ΚΕΙΜΕΝΟΥ .................................................................................... 25
16
2.1 ΚΑΤΗΓΟΡΟΠΟΙΗΣΗ ΕΓΓΡΑΦΩΝ
17
Σημειώματα και μηνύματα ηλεκτρονικού ταχυδρομείου. Καταγράφουν τη
καθημερινή επικοινωνία μεταξύ των μελών και διευθυντών της ομάδας
παραγωγής του λογισμικού.
Υπάρχουν όμως και εξαιρέσεις, όπως π.χ διάφοροι έλεγχοι που γίνονται κατά
τη διάρκεια της διαδικασίας, οι οποίοι μπορεί να χρησιμοποιηθούν ως βάση
για τον επανασχεδιασμό του ελέγχου της ορθοτητας πιθανών αλλαγών που
γίνονται στο σύστημα. Επίσης χρήσιμο θεωρείται να φυλάσσεται ξεχωριστά
η δικαιολόγηση διάφορων επιλογών κατά το σχεδιασμό, ώστε να διευκολυνθεί
το έργο των μηχανικών συντήρησης. Κάτι τέτοιο όμως συνήθως δεν γίνεται.
ΤΕΚΜΗΡΙΩΣΗ ΧΡΗΣΤΗ
Οι χρήστες ενός συστήματος δεν έχουν όλοι την ίδια εμπειρία και τις ίδιες
αρμοδιότητες. Ο υπεύθυνος των τεκμηρίων αυτών θα πρέπει να φροντίζει
ώστε τα τεκμήρια να καλύπτουν τις διάφορες κατηγορίες αρμοδιοτήτων και τα
διάφορα επίπεδα εμπειρίας και ειδίκευσης των χρηστών. Ασφαλώς θα πρέπει
να γίνεται σαφής ο διαχωρισμός μεταξύ των εγγράφων που αφορούν τελικούς
χρήστες και εγγράφων που αφορούν τους διαχειριστές (administrators) του
συστήματος.
18
2. Οι διαχειριστές του συστήματος χειρίζονται το σύστημα λειτουργώντας είτε
ως χειριστές (operators), αν το σύστημα αποτελεί ένα mainframe system,
είτε ως διαχειριστές δικτύου, όταν το σύστημα περιλαμβάνει ένα δίκτυο από
σταθμούς εργασίας, είτε ως εξειδικευμένοι μηχανικοί λογισμικού που
διορθώνουν τα προβλήματα που παρουσιάζονται στους χρήστες.
19
Εκτός από εγχειρίδια, μπορεί να παρέχονται και άλλα εύκολα στη χρήση
έγγραφα όπως on line συστήματα βοήθειας, με τα οποία ο χρήστης
εξοικονομεί σημαντικό χρόνο εφόσον δεν χρειάζεται να ψάχνει συνεχώς στο
εγχειρίδιο.
ΤΕΚΜΗΡΙΩΣΗ ΣΥΣΤΗΜΑΤΟΣ
20
Για κάθε πρόγραμμα του συστήματος, περιγραφή της αντίστοιχης
αρχιτεκτονικής του.
Για κάθε συστατικό, μια προδιαγραφή και μια περιγραφή του σχεδιασμού.
Λίστες με τον κώδικα των προγραμμάτων. Θα πρέπει να υπάρχουν τα
απαραίτητα σχόλια σε δυσκολονόητα σημεία, όπως επίσης και
δικαιολόγηση της μεθόδου που χρησιμοποιείται .
Έγγραφα επικύρωσης (validation documents), που περιγράφουν τον τρόπο
που κάθε πρόγραμμα επικυρώνεται και τον τρόπο που η επικύρωση
συνδέεται με τις απαιτήσεις.
Ενας οδηγός συντήρησης του συστήματος (system maintenance guide) ,
που περιγράφει γνωστά προβλήματα σχετικά με το σύστημα, περιγράφει
ποια τμήματα του συστήματος είναι εξαρτώμενα απο το λογισμικό, ποια
από το υλικό, και πώς η απαίτηση για εξέλιξη του συστήματος έχει ληφθεί
υπόψη στον σχεδιασμό του.
Η παραγωγή εγγράφων δεν είναι ούτε εύκολη ούτε φτηνή διαδικασία και έχει
τουλάχιστον την ίδια δυσκολία με τη διαδικασία παραγωγής καλών
προγραμμάτων. Για να επιτύχουμε μια υψηλή ποιότητα στα έγγραφα θα
πρέπει να τηρούνται αυτά που αναφέρονται στις παρακάτω ενότητες.
21
2.2.1 ΔΟΜΗ ΤΕΚΜΗΡΙΩΝ
22
οι σελίδες να αριθμούνται ανά κεφάλαιο), τότε πιθανές αλλαγές δεν
επηρεάζουν όλο το έγγραφο αλλά μόνο ορισμένα κεφάλαια..
23
συνήθως από το συγκεκριμένο έργο, αλλά θα πρέπει να βασίζονται σε πιο
γενικά οργανωτικά πρότυπα. Παραδείγματα τέτοιων προτύπων που πρέπει
να αναπτυχθούν είναι τα ακόλουθα :
24
Μπορεί επίσης να χρειαστεί να περιορίσουμε τις δυνατότητες εμφάνισης ενός
εγγράφου με πολλές γραμματοσειρές λόγω των διαφορετικών δυνατοτήτων
των μηχανημάτων που χρησιμοποιούνται, οπότε και αυτό θα καταγραφεί στα
πρότυπα ανταλλαγής.
Επίσης συχνά χρησιμοποιείται και εργαλείο που βοηθά στη συντήρηση των
εγγράφων αλλά και τη διαχείριση τους.
25
Το εργαλείο που χρησιμοποιείται περισσότερο για παραγωγή κειμένου είναι
ένα σύστημα γραψίματος που μπορεί να είναι επεξεργαστής κειμένου (word
processor) ή μορφοποιητής κειμένου (text formatter). Συνήθως ένα τέτοιο
εργαλείο δίνει τη δυνατότητα στο χρήστη να δει στην οθόνη του τερματικού
του το έγγραφο όπως θα το έβλεπε εκτυπωμένο. Παρέχονται ασφαλώς
δυνατότητες μορφοποίησης του εγγράφου.
26
δυνατότητα να βρίσκει κανείς ένα έγγραφο με βάση τον τίτλο ή κάποιο άλλο
ιδιαίτερο χαρακτηριστικό.
27
Κεφάλαιο 3 : Προδιαγνωστική Μελέτη και Μελέτη
Σκοπιμότητας
ΠΕΡΙΕΧΟΜΕΝΑ
35
3.1 Διαπίστωση Προβλήματος
α. Αποτελεσματικότητα (Effectiveness)
β. Αποδοτικότητα (Efficiency)
γ. Αξιοπιστία (Reliability)
36
1. ΔΙΑΠΙΣΤΩΣΗ
ΠΡΟΒΛΗΜΑΤΩΝ
2. ΠΡΟΔΙΑΓΝΩΣΤΙΚΗ
ΜΕΛΕΤΗ
ΤΕΡΜΑΤΙΣΜΟΣ
ΧΡΕΙΑΖΕΤΑΙ OXI
ΕΡΓΟΥ
ΜΗΧΑΝΟΓΡΑΦΗΣΗ
;
ΝΑΙ
3. ΜΕΛΕΤΗ
ΣΚΟΠΙΜΟΤΗΤΑΣ
9. ΛΕΙΤΟΥΡΓΙΑ
10. ΑΞΙΟΛΟΓΗΣΗ
37
5. Το υψηλό υπαλληλικό κόστος, τα λάθη των επεξεργασιών και η εκτέλεση
περιττών επεξεργασιών.
Κ.2.1. Αντικείμενο
Στόχος της προδιαγνωστικής μελέτης είναι η παροχή, στη Διοίκηση και στους
μελλοντικούς χρήστες του συστήματος, μιας πολύ γενικής εικόνας του νέου
συστήματος και η εκτίμηση για τη σκοπιμότητα της συνέχισης του έργου. Η
προδιαγνωστική μελέτη είναι ιδιαίτερα χρήσιμη στην περίπτωση μεγάλων έργων,
όπου απαιτείται σημαντική δαπάνη χρήματος και χρόνου, για την εκτέλεση της
μελέτης σκοπιμότητας που θα εξετάσουμε στη συνέχεια.
38
ένα έγγραφο, το οποίο πολλές φορές είτε δεν προσδιορίζει το πραγματικό πρόβλημα
είτε το προσδιορίζει ανεπαρκώς.
Στη φάση αυτή, συνήθως, δεν έχει διασαφηνιστεί ποιος θα κάνει τη μελέτη
σκοπιμότητας, τι μέσα θα χρειαστούν για την ολοκλήρωσή της και ποια θα είναι τα
χαρακτηριστικά στοιχεία κόστους της πιθανής λύσης. Έτσι, η Διοίκηση χρειάζεται
μια έκθεση που θα δείχνει ποιο θα είναι το περιεχόμενο, το κόστος και η διάρκεια
της μελέτης σκοπιμότητας και θα κάνει προτάσεις σχετικά με το φορέα που θα την
αναλάβει.
39
3.2.3. Προϊόν Προδιαγνωστικής Μελέτης
α. Το αντικείμενο (Subject).
β. Την εμβέλεια (Scope).
γ. Τους αντικειμενικούς σκοπούς (Objectives).
δ. Τη χρονική διάρκεια.
ε. Το κόστος.
στ. Το φορέα (εξωτερικοί σύμβουλοι, στελέχη του Οργανισμού, μικτές ομάδες κ.λ.π.)
που θα την εκτελέσει
ζ. Το προϊόν της προτεινόμενης μελέτης σκοπιμότητας.
3.3.1. Γενικά
40
χαρακτηριστικά του νέου συστήματος, καθώς και τα πλεονεκτήματά του (ποσοτικά
και ποιοτικά) σε σύγκριση με το παλιό σύστημα. Αυτά είναι τα ζητήματα στα οποία
προσπαθεί να δώσει απαντήσεις η μελέτη σκοπιμότητας.
41
Κύρια Σημεία
42
Κεφάλαιο 4: Οι Προδιαγραφές των Απαιτήσεων
Όλες οι επόμενες φάσεις του κύκλου ζωής της ανάπτυξης του έργου
ξεκινούν από αυτό το σημείο - και αναφέρονται σε αυτό το σημείο
δηλαδή στις προδιαγραφές απαιτήσεων. Όσο ακριβέστερα μπορεί να
προδιαγραφεί η απαίτηση, λοιπόν, τόσο λιγότερος κόπος θα προκύψει
στο μέλλον.
43
οριστούν τα όρια ενός τέτοιου εγγράφου. Η μέριμνα μας είναι να
προδιαγράψουμε τι απαιτείται γιά να πετύχει το προτεινόμενο σύστημα - σε
πολλές περιπτώσεις, αυτό είναι ουσιαστικά το ίδιο με το πώς το σύστημα θα
φανεί στον τελικό χρήστη. Η σημαντική λέξη είναι το ‘τι’.
Οι προδιαγραφές απαιτήσεων δεν είναι ένα έγγραφο σχεδιασμού του
συστήματος. Δεν ασχολείται με λεπτομέρειες της υλοποίησης (εκτός από το
σχετικά επιφανειακό επίπεδο της διαίρεσης εργασίας ανάμεσα σε υλικό,
λογισμικό και χειριστή) αλλά με το να δηλώσει καθαρά και επακριβώς τι
πρέπει να υλοποιηθεί. Είναι προδιαγραφές από τις οποίες προχωρά ο
σχεδιασμός του συστήματος.
44
Κατανομή : Περιγραφή και κατανομή των ευθυνών, για κάθε
μια από τις λειτουργίες που έχουν οριστεί, σε
υλικό/λογισμικό/χειριστή.
4.2.1 ΛΕΙΤΟΥΡΓΙΕΣ
(i) Ο τύπος της πληροφορίας που θα παρέχεται στο σύστημα, και το μέσο
εισόδου που θα χρησιμοποιηθεί (π.x. πληκτρολόγιο, έγγραφο, σήμα).
45
μήκη για αντικείμενα χαρακτήρων και βαθμός ακριβείας για
αριθμητικούς υπολογισμούς.
(iii) Ο τύπος των πληροφοριών που πρέπει να είναι αποτελούν την έξοδο
του συστήματος, και το μέσο εξόδου που θα χρησιμοποιηθεί (π.x.
απεικόνιση στην οθόνη, έγγραφο, σήμα).
46
ΜΕΓΑΛΕΣ ΛΕΙΤΟΥΡΓΙΕΣ ΠΡΕΠΕΙ ΝΑ ΠΡΟΣΦΕΡΟΝΤΑΙ: ΠΡΟΣΘΗΚΗ
ΝΕΩΝ ΑΝΤΙΚΕΙΜΕΝΩΝ ΣΤΟ ΕΥΡΕΤΗΡΙΟ, ΤΡΟΠΟΠΟΙΗΣΗ
ΥΠΑΡΧΟΝΤΩΝ ΑΝΤΙΚΕΙΜΕΝΩΝ, ΚΑΙ ΑΝΑΖΗΤΗΣΗ ΣΤΟ
ΕΥΡΕΤΗΡΙΟ ΕΝΟΣ ΑΝΤΙΚΕΙΜΕΝΟΥ ΠΟΥ ΔΙΝΕΤΑΙ. ΠΡΕΠΕΙ ΝΑ
ΕΝΣΩΜΑΤΩΘΟΥΝ ΜΗΧΑΝΙΣΜΟΙ ΠΛΗΡΟΥΣ ΕΠΙΚΥΡΩΣΗΣ ΤΩΝ
ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΧΕΙΡΙΣΜΟΥ ΛΑΘΩΝ.
Εδώ εξετάζουμε το περιεχόμενο, ομαδοποιημένο όπως παραπάνω στα
(i) έως (ix) :
(ii) Επεξεργασία
ΠΡΟΣΘΗΚΗ :
μια συνδυασμένη εγγραφή με όνομα/αριθμό
τηλεφώνου θα προστίθεται στην βάση
δεδομένων.
ΤΡΟΠΟΠΟΙΗΣΗ : ακολουθώντας την είσοδο του αναθεωρημένου
αντικειμένου δεδομένων, η τροποποιημένη
εγγραφή με όνομα/αριθμό τηλεφώνου θα
προστίθεται στην βάση με την αρχική εγγραφή
να σβήνεται.
ΑΝΑΖΗΤΗΣΗ : η βάση ψάχνεται για το ζητούμενο αντικείμενο,
και ανακτάται ολόκληρη η εγγραφή με
όνομα/αριθμό τηλεφώνου.
47
Ακρίβεια
Όλα τα λάθη που προκαλούνται από κακή λειτουργία είτε του υλικού
είτε του μόνιμου λογισμικού υποστήριξης (π.x. λειτουργικά
συστήματα) θα ανιχνεύονται, και θα αναφέρονται στον χρήστη.
48
Τα ακόλουθα λάθη πρέπει να αναγνωρίζονται και να αναφέρονται στον
χρήστη μέσω ενός μηνύματος λάθους. Η διόρθωση μιας λανθασμένης
κατάστασης από τον χρήστη πρέπει φυσιολογικά να μην απαιτεί να
επαναεισάγονται τα έγκυρα δεδομένα.
49
λαμβάνεται από κάθε χρήστη, και το γεγονός ότι μπορεί να υπάρχουν πολλοί
τέτοιοι χρήστες που λαμβάνουν την ίδια εικόνα είναι μικρής σημασίας.
Όμως, αυτό δεν μπορούμε να το πούμε καθώς εξετάζουμε και τα
υπόλοιπα τμήματα (v) έως (ix). Το περιεχόμενο εδώ θα εξαρτάται πολύ από
το αναμενόμενα επίπεδα της ταυτόχρονης χρήσης στην οποία θα υποβληθεί
το σύστημα. Για αυτό το λόγο, τα παραδείγματα δεν θα αντιμετωπίσουν
μόνο την απλή απαίτηση που χρησιμοποιήσαμε έως τώρα, αλλά θα
προσπαθήσουμε επίσης να δείξουμε πως χρειάζεται να επεκτείνουμε την
προδιαγραφή απαιτήσεων για να αντιμετωπίσουμε κάτι πιο πολύπλοκο.
Όπου είναι απαραίτητο περιλαμβάνονται σχόλια σε αγκύλες [] για
επιπρόσθετες εξηγήσεις.
Προσέξτε επίσης ότι όπου θα εμφανιζόταν μια αριθμητική τιμή στις
προδιαγραφές απαιτήσεων θα χρησιμοποιούμε την ένδειξη . . x. . , αφού
ακόμα και σε αυτό το απλό παράδειγμα οι πιθανότητες είναι πολλές. (Ένας
χρήστης στο σπίτι, ας πούμε , περιμένουμε να προσδιορίσει την ανάγκη να
κρατήσει ένα σχετικά μικρό ποσό δεδομένων - αλλά ένας ιδιόμορφος
χρήστης μπορεί να θέλει να αυτοματοποιήσει το ψάξιμο με το χέρι στις
σελίδες ενός ολόκληρου Χρυσού Οδηγού). Ας αρκεστούμε να πούμε ότι θα
πρέπει να καθοριστεί μια τιμή ανάλογου μεγέθους για τους σκοπούς της
προδιαγραφής.
(vi) Απόδοση
50
λειτουργία ΠΡΟΣΘΗΚΗ: μέσος όρος. .x. . δευτερόλεπτα,
μέγιστο . .x. . δευτερόλεπτα
λειτουργία ΤΡΟΠΟΠΟΙΗΣΗ: μέσος όρος. .x. . δευτερόλεπτα,
μέγιστο . .x. . δευτερόλεπτα
λειτουργία ΑΝΑΖΗΤΗΣΗ: μέσος όρος. .x. . δευτερόλεπτα,
μέγιστο . .x. . δευτερόλεπτα
(vii) Επέκταση/Επαναδιαμόρφωση
ΕΙΤΕ:
Ή:
51
Η ανάκαμψη από μια ολοκληρωτική πτώση του λογισμικού πρέπει να
παίρνει το πολύ . .x. . λεπτά.
(ix) Αποδοχή
52
4.2.2 ΚΑΤΑΝΟΜΗ
[Μια ιδιαίτερη πλευρά της κατανομής αφορά τις πληροφορίες που θα κρατάει
το σύστημα. Οι απαιτήσεις για αρχεία δεδομένων θα μπορούσαν επίσης να
συμπεριληφθούν σε αυτό το τμήμα των προδιαγραφών περιλαμβάνοντας
53
λεπτομέρειες για βάσεις δεδομένων ή αρχεία δεδομένων που υπάρχουν την
παρούσα στιγμή.]
[ΕΙΤΕ]
[ΕΙΤΕ]
4.2.3 ΠΕΡΙΟΡΙΣΜΟΙ
54
Όταν η on-line βάση δεδομένων έχει εκκινηθεί, το 50% του διαθέσιμου
χώρου του δίσκου θα πρέπει να παραμείνει αχρησιμοποίητο, έτσι ώστε να
εξυπηρετήσει μελλοντική επέκταση.
Όταν η on-line βάση δεδομένων έχει εκκινηθεί, περίπου 50% - και όχι
λιγότερο από 40%, - του διαθέσιμου χώρου του δίσκου θα πρέπει να
παραμείνει αχρησιμοποίητο, έτσι ώστε να εξυπηρετήσει μελλοντική
επέκταση.
4.2.4 ΠΡΟΤΥΠΑ
[Ένα πρότυπο μπορεί να θεωρηθεί σαν ένα άλλο είδος περιορισμού - που
επιβάλλεται, στην πραγματικότητα, στο σχεδιασμό και την υλοποίηση. Με
άλλα λόγια, σε αυτό το σημείο των προδιαγραφών απαιτήσεων περιλαμβάνεται
ένα τμήμα προτύπων που θα δηλώνει ότι, στον ένα ή στον άλλο βαθμό, ο
σχεδιαστής/αναλυτής συστημάτων/προγραμματιστής πρέπει να κάνουν τη
δουλειά τους με ένα συγκεκριμένο τρόπο.
Αχά! λες, αλλά πώς αυτό συμβιβάζεται με την προηγούμενη
κατηγορηματική επιμονή ότι οι προδιαγραφές απαιτήσεων δεν είναι ένα
έγγραφο σχεδιασμού; Απλό. Οι προδιαγραφές απαιτήσεων εξυπηρετούν στο να
ορίσουν το πλαίσιο για τo έργο, μέσα στο οποίο ο σχεδιαστής και λοιποί έχουν
πράγματι πλήρη ελευθερία. Ένα πρότυπο εξυπηρετεί στην ισχυροποίηση του
πλαισίου, τίποτα περισσότερο.
55
Για παράδειγμα, ένα γραφείο υπολογιστών μπορεί να επιμείνει ότι η
τεκμηρίωση του χρήστη που παράγεται σαν μέρος του έργου να
συμμορφώνεται σε ένα συγκεκριμένο ορισμένο πρότυπο. Αυτό είναι πολύ
λογικό αφού, με αυτόν τρόπο, οι χρήστες των υπολογιστικών υπηρεσιών του
γραφείου θα εκτιμήσουν το γεγονός ότι το τραύμα της εκμάθησης της χρήσης
του νέου προϊόντος μειώνεται με το να έχουν την τεκμηρίωση σε οικείο ύφος.
Πάλι, ένας πελάτης μπορεί να επιθυμεί να προδιαγράψει να γραφτεί ένα
πρόγραμμα υπολογιστή σε μια συγκεκριμένη προγραμματιστική γλώσσα. Αυτό
είναι λιγότερο επιθυμητό, καθώς κάποιος θα μπορούσε να ελπίζει να είναι
ελεύθερος να διαλέξει την πιο κατάλληλη γλώσσα για την εργασία, αλλά αν
ένας πελάτης σχεδιάζει να ασχοληθεί μόνος του με τη συντήρηση ή να
αγοράσει έναν μόνο συγκεκριμένο μεταγλωττιστή, τότε είναι λογικό να
δηλωθεί σε αυτό το επίπεδο η γλώσσα που θα χρησιμοποιηθεί.
Τέλος, δεν είναι ασυνήθιστο να βρει κανείς ότι το κεφάλαιο Προτύπων
των Προδιαγραφών Απαιτήσεων είναι ανύπαρκτο. Αν ο πελάτης επιθυμεί να
δώσει στον παραγωγό πλήρη ελευθερία δράσης, τότε η απουσία αυτή είναι
αρκετά αποδεκτή. Το σημαντικό στοιχείο σε τέτοιες περιπτώσεις είναι να ξέρει
ο πελάτης ότι έχει παραχωρήσει αυτή την ελευθερία. Ο χρήστης του
παραδείγματος μας όμως αν και χρειάζεται την εφαρμογή για το σπίτι είναι
εύστροφος και απαιτητικός...]
4.2.5 ΠΟΙΟΤΗΤΑ
56
Πρόγραμμα σχεδιασμού του έργου - πότε θα λάβουν χώρα τα διάφορα
συμβάντα και με ποια σειρά.
Οργάνωση της ποιότητας, των ευθυνών και των διαδικασιών - ποιοι είναι
αρμόδιοι να επιβεβαιώσουν ποιοτικά το έργο, και ποιες διαδικασίες θα
ακολουθήσουν.
57
4.2.6 ΧΡΟΝΟΔΙΑΓΡΑΜΜΑ ΑΝΑΠΤΥΞΗΣ
58
Όλα αυτά δείχνουν την ανάγκη επικύρωσης των προδιαγραφών
απαιτήσεων προτού αυτή περάσει στο σχεδιαστή συστήματος. Γενικότερα οι
στόχοι της επικύρωσης απαιτήσεων είναι οι εξής:
59
Όσο παράξενο και αν φαίνεται, η αιτία των μεγαλύτερων δυσκολιών της
διεκπεραίωσης της εργασίας επικύρωσης είναι ότι το έγγραφο απαιτήσεων μας
είναι γραμμένο σε φυσική γλώσσα - Ελληνικά για μας - λόγω του ότι μπορούν
να γίνουν κατανοητά από όλα τα ενδιαφερόμενα μέρη. Αλλά το επιχείρημα ότι
η φυσική γλώσσα μπορεί να γίνει κατανοητή από όλους δεν σημαίνει ότι το
έγγραφο απαιτήσεων μπορεί να γίνει κατανοητό από όλους, ή ακόμα
χειρότερα, να μεταφέρει την ίδια σημασία σε όλους όσους ισχυρίζονται ότι
καταλαβαίνουν ότι έχει γραφτεί. Ένα απλό παράδειγμα θα δείξει τη
δυνατότητα για σύγχυση:
60
ΓΕΩΡΓΑΚΟ ή ΠΟΥΛΟΣ - δεν ταιριάζουν «με τους χαρακτήρες του
αποθηκευμένου αντικειμένου»;
Επιπρόσθετα, υπάρχει η αναπόφευκτη επίδραση της χρήσης φυσικής
γλώσσας που προκαλεί διαφορετικά στοιχεία των απαιτήσεων να
αναμειγνύονται μαζί έτσι ώστε να μην φαίνεται η διαφορά μεταξύ τους. Είναι
το πρόβλημα «Θέλω να πας στο σούπερ μάρκετ την Τετάρτη - α ναι, και την
Πέμπτη, έχουν μια ειδική προσφορά τις Πέμπτες - και να αγοράσεις κανά δυο
κιλά μανταρίνια και σκόρδα» : Τι πρέπει να αγοραστεί και πότε; Ένα κιλό κάθε
μέρα; Ένα κιλό μανταρίνια την Τετάρτη, και ένα κιλό σκόρδα ειδικής
προσφοράς την Πέμπτη; Καταλαβαίνετε τι εννοώ.
Χρησιμοποιώντας το παράδειγμα του καταλόγου τηλεφώνων ξανά, ένα
λάθος θα βρεθεί στην εκτέλεση της λειτουργίας αναζήτησης στο (βλέπε
4.2.1iv):
61
εξασφάλισης ότι μια προδιαγραφή απαιτήσεων μπορεί να παρουσιαστεί
ακριβώς, και να αποδειχτεί ότι παρουσιάζεται ακριβώς.
Έτσι, για παράδειγμα, μπορεί να διαλέξουμε να εκφράσουμε τις
απαιτήσεις μας με μια μορφή ψευδό-BASIC εκφράζοντας αρχικά τι εννοούμε
με το αντικείμενο δεδομένων -
ΛΕΙΤΟΥΡΓΙΑ ΑΝΑΖΗΤΗΣΗΣ
4.4 Περίληψη
62
Οι προδιαγραφές απαιτήσεων είναι ένα απαραίτητο αρχικό έγγραφο για
ένα έργο, καθώς είναι μια συμφωνημένη δήλωση μεταξύ του πελάτη και
του προμηθευτή για το τι πρόκειται να κάνει το σύστημα λογισμικού.
63
Κεφάλαιο 5: Πρωτοτυποποίηση Λογισμικού
ΠΕΡΙΕΧΟΜΕΝΑ
Οι κριτικές είναι ένα κρίσιμο μέρος της διαδικασίας βασικών απαιτήσεων, αλλά
πολλοί πιθανοί χρήστες ενός συστήματος έχουν δυσκολία στο να φανταστούν πώς
χρησιμοποιείται το σύστημα από μια προδιαγραφή απαιτήσεων μόνο. Καθώς
περιγράφεται μια λειτουργία σε μια προδιαγραφή μπορεί να φαίνεται χρήσιμη και
καλά καθορισμένη, η πραγματική χρήση της όμως σε συνδυασμό με άλλες μπορεί να
δείξει ότι η αρχική άποψη του χρήστη ήταν λανθασμένη και ανολοκλήρωτη.
65
Πρωτοτυποποίηση Λογισμικού
ανταγωνιστές τους. Η εμπειρία στις Η.Π.Α. και τη Μεγάλη Βρετανία στις βιομηχανίες
αυτοκινήτων που απέτυχαν να επενδύσουν σε ποιοτικές διαδικασίες στις δεκαετίες
του ΄60 και του ΄70 και που έχασαν ένα μεγάλο μέρος της αγοράς από τα καλύτερης
ποιότητας Ιαπωνικά αυτοκίνητα, δείχνει παραστατικά ότι η φιλοσοφία «φτιάξε το
φτηνό και διόρθωσέ το αργότερα» μπορεί να είναι πολύ πιο ακριβή μακροπρόθεσμα.
Για νέα συστήματα, ειδικά αν αυτά είναι μεγάλα και πολύπλοκα, είναι πιθανά
αδύνατο να γίνει αυτός ο υπολογισμός πριν το σύστημα να κατασκευαστεί και να
τεθεί σε λειτουργία.
Συστατικά
69
Πρωτοτυποποίηση Λογισμικού
επόμενα τμήματα του συστήματος. Αυτή είναι μια λογική προσέγγιση, αλλά μπορεί
να περιοριστεί σε ικανότητα εφαρμογής εξαιτίας προβλημάτων που μπορεί να
προκύψουν σε σχέση με το συμβόλαιο.
Καθορισμός παραδοτέων
συστήματος
Ναι
Παράδοση
ολοκληρωμένου
συστήματος
72
Πρωτοτυποποίηση Λογισμικού
73
Πρωτοτυποποίηση Λογισμικού
Σχήμα 5.4
Ο Gomaa (1983) έχει αναφέρει την επιτυχημένη χρήση της APL ως γλώσσα
πρωτοτυποποίησης. Περιγράφει τα πλεονεκτήματα της ανάπτυξης ενός πρωτοτύπου
για ένα σύστημα διαχείρισης διαδικασιών και πληροφοριών. Τα κόστη ανάπτυξης
πρωτοτύπου ήταν μικρότερα του 10% του συνολικού κόστους. Στην ανάπτυξη του
τελικού συστήματος ποιότητας παραγωγής, δεν εμφανίστηκαν καθόλου προβλήματα
καθορισμού απαιτήσεων. Το έργο ολοκληρώθηκε εγκαίρως και η παράδοση στους
χρήστες ολοκληρώθηκε ομαλά.
Όλες οι άλλες γλώσσες στο σχήμα 5.4 έχουν επίσης χρησιμοποιηθεί για
πρωτοτυποποίηση, και η επιλογή μιας κατάλληλης γλώσσας εξαρτάται από την
εφαρμογή που πρωτοτυποποιείται. Πάντως, μια σημαντική παράμετρος είναι το
περιβάλλον υποστήριξης που είναι διαθέσιμο μαζί με τη γλώσσα. Από αυτή την
άποψη, η LISP και η Smalltalk έχουν πολύ καλύτερα περιβάλλοντα υποστήριξης από
τις άλλες εναλλακτικές γλώσσες και έτσι έχουν χρησιμοποιηθεί ευρύτερα ως γλώσσες
πρωτοτυποποίησης.
Η Gist και το εμπορικό της παράγωγο, η REFINE (Smith, 1985) είναι ίσως η
πιο αναπτυγμένη γλώσσα στην οποία ο χρήστης γράφει μια τυπική, εκτελέσιμη
προδιαγραφή του συστήματος που θα πρωτοτυποποιηθεί. Η προδιαγραφή βελτιώνεται
από το χρήστη με αυτοματοποιημένη βοήθεια για να παραχθεί ένα εκτελέσιμο
πρωτότυπο συστήματος. Η Gist συμπεριλαμβάνει έννοιες από το λογικό
76
Πρωτοτυποποίηση Λογισμικού
Δεν υπάρχει ποτέ μια ιδεώδης γλώσσα για την πρωτοτυποποίηση μεγάλων
συστημάτων καθώς τα διαφορετικά κομμάτια του συστήματος είναι πολύ ανόμοια. Το
πλεονέκτημα μιας ανάπτυξης με μικτή γλώσσα είναι το κάθε κομμάτι της εφαρμογής
μπορεί να αναπτυχθεί με την καταλληλότερη για αυτό γλώσσα, επιταχύνοντας έτσι
την ανάπτυξη του πρωτοτύπου. Το μειονέκτημα είναι ότι μπορεί να είναι δύσκολη η
εγκαθίδρυση πλαισίου επικοινωνίας που να επιτρέπει την επικοινωνία μεταξύ
πολλαπλών γλωσσών. Οι οντότητες που χρησιμοποιούνται στις διάφορες γλώσσες
είναι τόσο ανόμοιες, που απαιτούν πολύ δουλειά για γράψιμο κώδικα που να
μεταφράζει μια οντότητα από τη μια γλώσσα στην άλλη.
77
Πρωτοτυποποίηση Λογισμικού
Γεννήτρια Φύλλα
αναφορών επεξεργασίας
79
Πρωτοτυποποίηση Λογισμικού
Μερικές από τις τεχνικές που περιγράφτηκαν στην παράγραφο 5.2 είναι
κατάλληλες για την πρωτοτυποποίηση διεπαφής χρήστη. Οι πολύ υψηλού επιπέδου
γλώσσες όπως η Smalltalk και η LISP έχουν πολλά συστατικά της διεπαφής ως
τμήματα του συστήματος. Αυτά πολύ συχνά μπορούν να τροποποιούνται ώστε να
αναπτύσουν τη συγκεκριμένη διεπαφή που απαιτείται για μια εφαρμογή. Τα
συστήματα γλωσσών τέταρτης γενιάς συνήθως περιλαμβάνουν υπηρεσίες ορισμού
οθονών, όπου τα πρότυπα οθονών μπορούν να οριοθετηθούν διαλέγοντας και
τοποθετώντας από κάποια πεδία. Όλο και περισσότερο αναπτύσσονται παρεμφερείς
υπηρεσίες (Harbert, 1990) για χρήση με γραφικές διεπαφές.
80
Πρωτοτυποποίηση Λογισμικού
ΚΥΡΙΑ ΣΗΜΕΙΑ
81
Πρωτοτυποποίηση Λογισμικού
82
ΚΕΦΑΛΑΙΟ 6: ΣΧΕΔΙΑΣΜΟΣ ΚΑΙ ΧΡΟΝΟΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ
ΤΟΥ ΕΡΓΟΥ
Σκοπός του κεφαλαίου αυτού είναι να περιγράψει τον σχεδιασμό και τον
χρονοπρογραμματισμό των έργων λογισμικού, που αποτελούν σημαντικές ευθύνες
των διοικητών του έργου (project managers). Συχνά οι δραστηριότητες αυτές
απαιτούν το μεγαλύτερο μέρος της προσπάθειας από την πλευρά της διοίκησης σε
μεγάλα έργα λογισμικού. Μετά από μια εισαγωγή που καθορίζει τα βήματα που
εμπλέκονται στη διαδικασία σχεδιασμού, συζητείται η επιλογή καταλλήλων
ορόσημων (βλ. παρακάτω).
Ακολουθεί μια περιγραφή διάφορων επιλογών όπου προτείνεται ότι η καλύτερη
στρατηγική διοίκησης είναι η υιοθέτηση εκείνων που ελαχιστοποιούν το ρίσκο.
Τέλος, συζητείται ο χρονοπρογραμματισμός του έργου και περιγράφονται γραφικές
αναπαραστάσεις (γραφήματα και ραβδογράμματα δραστηριοτήτων) γι αυτόν και τον
σχεδιασμό.
ΠΕΡΙΕΧΟΜΕΝΑ
82
Σχεδιασμός και χρονοπρογραμματισμός του έργου
83
Σχεδιασμός και χρονοπρογραμματισμός του έργου
Ορισμός των περιορισμών κάτω από τους οποίους πρέπει να πραγματοποιηθεί το έργο
Πραγματοποίηση αρχικών υποθέσεων για τις παραμέτρους του έργου
Ορισμός των ορόσημων του έργου και των παραδοτέων
While το έργο δεν έχει ολοκληρωθεί ή ακυρωθεί loop
Σχεδιασμός του χρονοδιαγράμματος του έργου
Εκκίνηση δραστηριοτήτων με βάση το χρονοδιάγραμμα
Καθυστέρηση (μικρή)
Επιθεώρηση της προόδου του έργου
Αναθεώρηση των εκτιμήσεων για τις παραμέτρους του έργου
Εφαρμογή των αναθεωρήσεων στο χρονοδιάγραμμα του έργου
Επαναδιαπραγμάτευση των περιορισμών του έργου και των παραδοτέων
If (ανακύπτουν προβλήματα) then
Εκκίνηση τεχνικής επιθεώρησης και πραγματοποίηση πιθανών αναθεωρήσεων
end if
end loop
84
Σχεδιασμός και χρονοπρογραμματισμός του έργου
δραστηριότητες κατάλληλου μεγέθους και κάθε μια από αυτές τις δραστηριότητες να
συσχετιστεί με ένα ορόσημο. Για παράδειγμα, το σχήμα 6.2 δείχνει δραστηριότητες
που εμπλέκονται στον προσδιορισμό των απαιτήσεων του συστήματος, όταν ως μέσο
για την ανάλυση των απαιτήσεων χρησιμοποιείται η πρωτοτυποποίηση. Στο σχήμα
φαίνονται τα κύρια ορόσημα κάθε δραστηριότητας. Μπορούν επίσης να οριστούν
βοηθητικά ορόσημα για κάθε ένα από αυτά, ανάλογα με το μέγεθος του έργου.
Δεν χρειάζεται να ορισθούν ορόσημα για κάθε δραστηριότητα του έργου.
Ένας προσεγγιστικός κανόνας είναι ότι τα ορόσημα θα πρέπει να προγραμματίζονται
σε διαστήματα δύο ή τριών εβδομάδων, αν και στην πράξη μπορεί να υπάρξουν
διαφορές έως και 100%, ανάλογα με τη διαδικασία ανάπτυξης λογισμικού που
ακολουθείται.
Ένας καλός λόγος για την ευρεία αποδοχή του μοντέλου του καταρράκτη
στην ανάπτυξη λογισμικού είναι ότι επιτρέπει τον άμεσο ορισμό ορόσημων κατά τη
διάρκεια του έργου. Εναλλακτικές προσεγγίσεις, όπως ο εξερευνητικός
προγραμματισμός, είναι τέτοιες, ώστε ο ορισμός ορόσημων να είναι μια πιο δύσκολη
και λιγότερο αξιόπιστη διαδικασία. Κατά συνέπεια, παρ’ όλες τις γνωστές του
αδυναμίες, κάποια παραλλαγή του μοντέλου του καταρράκτη θα συνεχίσει
πιθανότατα να είναι το διαδικαστικό μοντέλο για μεγάλα έργα λογισμικού.
Δραστηριότητες
Αναφορά Αναφορά
εκτίμησης Σκιαγράφηση
σκοπιμότητας Ορισμός Προσδιορισμός
πρωτοτύπου αρχιτεκτονικού
(Feasibility απαιτήσεων (Prototype απαιτήσεων
σχεδιασμού
Report) evaluation report)
85
Σχεδιασμός και χρονοπρογραμματισμός του έργου
86
Σχεδιασμός και χρονοπρογραμματισμός του έργου
στο σχήμα 6.4, η αξιοπιστία μετράται σαν ο ρυθμός εμφάνισης σφαλμάτων οπότε όσο
μικρότερη είναι η τιμή αυτή τόσο το καλύτερο. Έτσι, η μικρότερη τιμή βρίσκεται στο
πιο απομακρυσμένο άκρο του άξονα και η μεγαλύτερη τιμή στο κέντρο. Αντίθετα, η
αποδοτικότητα (εκφρασμένη σαν ποσοστό της πιο αποδοτικής επιλογής)
αναπαρίσταται έτσι ώστε η μέγιστη τιμή να βρίσκεται στο τέλος του αντίστοιχου
άξονα και η ελάχιστη στην αρχή. Έτσι, η ‘βέλτιστη’ συνολικά επιλογή είναι εκείνη
που περικλείει το μέγιστο εμβαδόν (Επιλογή Β στο σχήμα 6.4).
Υπόμνημα:
Επιλογή Α
Επιλογή Β
Επιλογή Γ
Διάρκεια
Αξιοπιστία
Επαναχρησιμοποίηση
Κόστος
Μεταφερσιμότητα Αποδοτικότητα
Αυτοί οι πολικοί γράφοι είναι οδηγοί για τους διοικητές του έργου και δε θα
πρέπει να μεταφράζονται τελείως κυριολεκτικά. Μια από τις επιλογές που
κατατάσσεται πρώτη στον πολικό γράφο ενδέχεται να βρίσκεται σε αντίθεση με ένα
σημαντικό στόχο του οργανισμού ή του έργου. Για παράδειγμα, ο οργανισμός μπορεί
να προσδοκά να αναλάβει και άλλα έργα στο χώρο της συγκεκριμένης εφαρμογής,
άρα ίσως να επιλέξει την επιλογή που παρέχει τον μεγαλύτερο αριθμό
επαναχρησιμοποιήσιμων συστατικών ώστε να μειώσει το κόστος ανάπτυξης
μεταγενέστερων έργων.
Ο Boehm (1981) περιγράφει μια τεχνική ανάλυσης επιλογών που λέγεται
πίνακας ανταπόδοσης, όπου συνοψίζεται σε ένα πίνακα το μέγιστο όφελος. Για
παράδειγμα, ας υποθέσουμε ότι έχουν προταθεί δύο πιθανές στρατηγικές υλοποίησης
ενός έργου και έχει εκτιμηθεί το μέγιστο και το ελάχιστο κόστος κάθε στρατηγικής.
87
Σχεδιασμός και χρονοπρογραμματισμός του έργου
Τα ενδεχόμενα φαίνονται στο σχήμα 6.5. Η ανταπόδοση είναι η διαφορά μεταξύ του
μέγιστου και του ελάχιστου κόστους.
88
Σχεδιασμός και χρονοπρογραμματισμός του έργου
89
Σχεδιασμός και χρονοπρογραμματισμός του έργου
90
Σχεδιασμός και χρονοπρογραμματισμός του έργου
Από το σχήμα 6.6 μπορούμε να δούμε ότι η εργασία Τ3 εξαρτάται από την
εργασία Τ1. Αυτό σημαίνει ότι η εργασία Τ1 πρέπει να ολοκληρωθεί πριν ξεκινήσει η
Τ3. Για παράδειγμα, Τ1 ίσως είναι η προετοιμασία της σχεδίασης λογισμικού και Τ3
η υλοποίηση αυτού του σχεδιασμού. Πριν αρχίσει η υλοποίηση, πρέπει να έχει
ολοκληρωθεί ο σχεδιασμός.
Φυσικά στην πράξη οι χρόνοι που υπολογίστηκαν για τη διάρκεια των
εργασιών του σχήματος 6.6 θα περιλαμβάνουν κάποια απρόοπτα για να
αντισταθμίσουν απρόβλεπτες καθυστερήσεις. Η συνεκτίμηση λαθών και απρόσμενων
καθυστερήσεων είναι ένα ζωτικό γεγονός για τη διοίκηση έργων και θα πρέπει πάντα
να θεωρούνται αποδεκτές παραλείψεις για εκτιμήσεις της διάρκειας του έργου.
Δεδομένων των εξαρτήσεων και της εκτιμούμενης διάρκειας των εργασιών,
μπορούν να παραχθούν διάφορες γραφικές αναπαραστάσεις του χρονοδιαγράμματος
του έργου. Ένα παράδειγμα είναι ένα δίκτυο δραστηριοτήτων που δείχνει τις
εξαρτήσεις των εργασιών (Σχήμα 6.7). Δείχνει ποιες δραστηριότητες μπορούν να
πραγματοποιηθούν παράλληλα και ποιες πρέπει να εκτελεσθούν σειριακά εξαιτίας
κάποιας εξάρτησης με προηγούμενη δραστηριότητα.
91
Σχεδιασμός και χρονοπρογραμματισμός του έργου
Μ1 Τ3 Τ9
8 μέρες
4/8/88
Τ1
5 μέρες 25/8/88
Μ4
25/7/88
Τ6 Μ6
4/7/88 Μ3
7 μέρες
20 μέρες
Εκκίνηση Τ11
15 μέρες Τ7
Τ2 5/9/88
11/8/88
Μ8
Μ7
25/7/88
Τ5 Τ10 Τ12
10 μέρες
18/7/88 25 μέρες 19/9/88
Τ4 Μ5 Τ8 Λήξη
92
Σχεδιασμός και χρονοπρογραμματισμός του έργου
4/7 11/7 18/7 25/7 1/8 8/8 15/8 22/8 29/8 5/9 12/9 19/9
Εκκίνηση
T4
T1
T2
M1
T7
T3
T8
M3
M2
T6
T5
M4
T9
M7
T10
M6
T11
M8
T12
Τέλος
93
Σχεδιασμός και χρονοπρογραμματισμός του έργου
Εργασία Προγραμματιστής
Τ1 Γιάννα
Τ2 Άννα
Τ3 Γιάννα
Τ4 Κώστας
Τ5 Μαρία
Τ6 Άννα
Τ7 Δημήτρης
Τ8 Κώστας
Τ9 Γιάννα
Τ10 Άννα
Τ11 Κώστας
Τ12 Κώστας
Σχήμα 6.9 Κατανομή προσωπικού
94
Σχεδιασμός και χρονοπρογραμματισμός του έργου
4/7 11/7 18/7 25/7 1/8 8/8 15/8 22/8 29/8 5/9 12/9 19/9
Κώστας Τ4
T8
T11
T12
Γιάννα Τ1
T3
T9
Άννα Τ2
T6
Τ10
Δημήτρης Τ7
Μαρία Τ5
95
Σχεδιασμός και χρονοπρογραμματισμός του έργου
ΚΥΡΙΑ ΣΗΜΕΙΑ
ΑΝΑΦΟΡΕΣ
Software Engineering Econmics. Πρόκειται για ένα καλό γενικό κείμενο πάνω στη
διοίκηση επιχειρίσεων, το οποίο περιέχει θαυμάσια κεφάλαια σχετκά με την ανάλυση
ρίσκων. (Β.W. Boehm, 1981, Prenice-Hall.)
Managing the Software Process. To κεφάλαιο 6 αυτού του βιβλίου αποτελεί μία καλή
περιγραφή του σχεδιασμού έργων γενικότερα, αν και δεν είναι ιδιαίτερα λεπτομερές.
(W.S. Humphries, 1989, Addison-Wesley.)
96
ΚΕΦΑΛΑΙΟ 7: ΔΙΟΙΚΗΣΗ ΕΡΓΩΝ ΛΟΓΙΣΜΙΚΟΥ
ΠΕΡΙΕΧΟΜΕΝΑ
97
Διοίκηση έργων λογισμικού
Λόγω αυτών των προβλημάτων, δεν εκπλήσει το ότι τα έργα λογισμικού είναι
συνήθως αργοπορημένα, εκτός προϋπολογισμού και χρονοπρογραμματισμού. Κάθε
ενέργεια ανάπτυξης μεγάλου συστήματος λογισμικού είναι ένα νέο και καινοτομικό
έργο και πολλά μηχανικά έργα που είναι καινοτομικά (όπως νέα συστήματα
μεταφοράς, γέφυρες κ.λ.π.) συχνά έχουν προβλήματα χρονοπρογραμματισμού.
Δεδομένων των εμπλεκόμενων δυσκολιών, είναι ίσως αξιοσημείωτο το ότι πολλά
έργα λογισμικού παραδίδονται στην ώρα τους και ικανοποιώντας τον
προϋπολογισμό!
98
Διοίκηση έργων λογισμικού
Σύνταξη προσφοράς
Εκτίμηση του κόστους
Σχεδιασμός και χρονοπρογραμματισμός του έργου
Παρακολούθηση και αναθεώρηση του έργου
Επιλογή και αξιολόγηση προσωπικού
Σύνταξη και παρουσίαση αναφορών
99
Διοίκηση έργων λογισμικού
Στην πορεία ενός έργου, είναι φυσικό να υπάρχει ένας αριθμός τυπικών
διοικητικών αναθεωρήσεων για το έργο. Αυτές ασχολούνται με την συγκεντρωτική
αναθεώρηση της προόδου και της τεχνικής ανάπτυξης του έργου και λαμβάνουν υπ’
όψη την κατάσταση του έργου σε σχέση με του στόχους του οργανισμού που
αναθέτει το έργο.
Ο χρόνος ανάπτυξης για ένα μεγάλο έργο λογισμικού μπορεί να είναι πολλά
χρόνια και, κατά τη διάρκεια αυτού του χρόνου, οι στόχοι του οργανισμού πιθανόν να
αλλάξουν. Οι αλλαγές ίσως σημαίνουν ότι το έργο δε χρειάζεται πια ή ότι οι αρχικές
απαιτήσεις από το έργο είναι ακατάλληλες. Η διοίκηση μπορεί να αποφασίσει να
σταματήσει την ανάπτυξη του έργου ή να αλλάξει το έργο ώστε να προσαρμόσει τις
αλλαγές στους στόχους του οργανισμού.
Ο υπεύθυνος ενός έργου συνήθως έχει την ευθύνη της επιλογής προσωπικού
για το έργο αυτό. Το ιδανικό είναι να υπάρχει διαθέσιμο ικανό προσωπικό με την
κατάλληλη εμπειρία για να διεκπεραιώσει το έργο. Στην πλειοψηφία των
περιπτώσεων, αυτό δεν μπορεί να επιτευχθεί. Οι λόγοι για αυτό είναι:
100
Διοίκηση έργων λογισμικού
101
Διοίκηση έργων λογισμικού
Διευθυντής
λογισμικού
102
Διοίκηση έργων λογισμικού
επίπεδο γίνεται από παλιότερα μέλη της ομάδας αλλά ο σχεδιασμός σε χαμηλό
επίπεδο, είναι υπευθυνότητα του μέλους το οποίο ανέλαβε το συγκεκριμένο καθήκον.
Οι άτυπες ομάδες μπορούν να είναι πολύ επιτυχείς, ιδίως σε εκείνες στις
οποίες η πλειοψηφία των μελών είναι έμπειρα και ανταγωνιστικά. Η ομάδα
λειτουργεί με δημοκρατικό τρόπο, παίρνοντας ομόφωνες αποφάσεις. Ψυχολογικά,
αυτό βελτιώνει το πνεύμα της ομάδας με αποτέλεσμα αύξηση της συνεκτικότητας
και της απόδοσης. Αν η ομάδα αποτελείται κυρίως από άπειρα και μη ανταγωνιστικά
μέλη, η έλλειψη τυπικότητας μπορεί να αποτελέσει κώλυμα. Δεν υπάρχει κάποιος
ορισμένος αρχηγός για να διευθύνει τη δουλειά, κάτι που δημιουργεί έλλειψη
συντονισμού μεταξύ των μελών της ομάδας και πιθανή αποτυχία του έργου.
Ένα πρόβλημα που συχνά κάνει την εμφάνιση του είναι η έλλειψη έμπειρων
μελών στις ομάδες. Οι ομάδες συνήθως αποτελούνται από σχετικά άπειρους
μηχανικούς πληροφορικής. Σε μερικούς οργανισμούς ανάπτυξης λογισμικού, ικανό
τεχνολογικά προσωπικό φτάνει σε ένα “επίπεδο καριέρας” σχετικά γρήγορα.
Προχωρόντας μακρύτερα, το προσωπικό αυτό πρέπει να επωμιστεί διοικητικές
υπευθυνότητες, κάτι που απαιτεί διαφορετικές ικανότητες. Ικανοί μηχανικοί
λογισμικού δεν κάνουν απαραίτητα ικανούς διευθύνοντες λογισμικού. Η προαγωγή
τέτοιων ατόμων σε διοικητικές θέσεις συχνά σημαίνει ότι χρήσιμες τεχνικές
ικανότητες χάνονται.
Για να αξιοποιούνται αυτές οι ικανότητες των έμπειρων και ανταγωνιστικών
προγραμματιστών, θα πρέπει να τους ανατίθενται υπευθυνότητες και επιβραβεύσεις
ανάλογες με αυτές που θα λάμβανε κάποιος σε μια διοικητική θέση. Για να
αποφεύγονται απώλειες τεχνικών ικανοτήτων από κάποιο έργο, κάποιο οργανισμοί
ανέπτυξαν παράλληλες τεχνικές και διοικητικές δομές καριέρας ίδιας αξίας. Καθώς η
καριέρα ενός μηχανικού αναπτύσσεται, αυτός/ή μπορεί να εξειδικευτεί είτε σε
τεχνικές είτε σε διοικητικές δραστηριότητες και μπορεί να μετακινηθεί μεταξύ τους
δίχως απώλεια της θέσης του στην εταιρία (status) ή μισθού.
103
Διοίκηση έργων λογισμικού
είναι ο/η χειρούργος. Αυτός/ή δέχεται βοήθεια από ικανό, εξειδικευμένο προσωπικό
όπως ο/η αναισθησιολόγος, ο/η αρχηγός νοσοκόμα κ.λ.π.
Δεξαμενή ειδικών
Αρχηγός
προγραμματιστής Εφεδρικός
προγραμματιστής
Βιβλιοθηκάριος Eξωτερική
επικοινωνία
Σχήμα 7.2 Μια ομάδα με αρχηγό προγραμματιστή
Ανάλογα με το μέγεθος και τον τύπο της εφαρμογής, μπορούν να προστεθούν και
άλλοι ειδικοί στην ομάδα προσωρινά ή μόνιμα. Αυτοί μπορεί να περιλαμβάνουν:
1. Έναν διαχειριστή του έργου (project administrator) που απαλλάσσει τον αρχηγό
προγραμματιστή από καθήκοντα διαχείρισης.
2. Έναν “σιδερά” (toolsmith) που είναι υπεύθυνος για την παραγωγή εργαλείων
λογισμικού για την υποστήριξη του έργου.
3. Έναν συντάκτη τεκμηρίωσης ο οποίος παίρνει την τεκμηρίωση του λογισμικού
από τον αρχηγό και τον εφεδρικό προγραμματιστή και το ετοιμάζει για έκδοση.
4. Έναν ειδικό για το σύστημα/γλώσσα που είναι εξοικειωμένος με τα
χαρακτηριστικά της συγκεκριμένης γλώσσας προγραμματισμού και του
συστήματος που χρησιμοποιούνται και του οποίου ο ρόλος είναι να συμβουλεύει
τον αρχηγό προγραμματιστή για το πως να χρησιμοποιήσει τις ευκολίες που του
παρέχονται.
5. Έναν δοκιμαστή του οποίου καθήκον είναι να αναπτύσσει αντικειμενικές
περιπτώσεις ελέγχου για να πιστοποιεί τη δουλειά του αρχηγού προγραμματιστή.
6. Έναν ή περισσότερους προγραμματιστές υποστήριξης που γράφουν κώδικα για
κάποια σχεδίαση του αρχηγού προγραμματιστή. Αυτοί οι προγραμματιστές
104
Διοίκηση έργων λογισμικού
105
Διοίκηση έργων λογισμικού
Δεν είναι δυνατή η απ’ ευθείας παραγωγή ενός τύπου που επιτρέπει τη
μέτρηση των παραγόμενων λειτουργιών ανά ώρα, αν και οι Albrecht και
Gaffney(1983) πρότειναν τη χρήση “σημείων λειτουργιών” (function points) σαν
μέσα μέτρησης της παραγωγικότητας. Πρέπει βέβαια να υποστηρίζονται από την
ανθρώπινη κρίση και διαίσθηση για να εκτιμήσουν την πραγματική παραγωγικότητα
της διαδικασίας.
Η παραγωγικότητα δεν μπορεί να μετρηθεί για όλο τον κύκλο ζωής
λογισμικού, γι αυτό μετριέται μόνο κατά το στάδιο της παραγωγής του λογισμικού.
Αν παραχθεί γρήγορα κακής ποιότητας λογισμικό, αυτοί που το ανέπτυξαν μπορεί να
φαίνονται περισσότερο παραγωγικοί από προγραμματιστές που παράγουν αξιόπιστα
και εύκολο να διατηρηθούν συστήματα.
Οι μονάδες παραγωγικότητας που εκφράζονται σε ποσότητα/χρόνο δεν
λαμβάνουν υπ’ όψη τους την ποιότητα του ολοκληρωμένου συστήματος. Υπονοούν
ότι περισσότερο σημαίνει πάντα και καλύτερο και δεν λαμβάνουν υπ’ όψη τους το
γεγονός ότι φαινομενικά μεγαλύτερη παραγωγικότητα κατά την ανάπτυξη μπορεί
τελικά να εμπεριέχει αυξημένο κόστος συντήρησης του συστήματος.
Διάφορες μονάδες έχουν χρησιμοποιηθεί σαν μέτρα προγραμματιστικής
παραγωγικότητας:
Γραμμές πηγαίου κώδικα που γράφονται από κάθε προγραμματιστή/μήνα.
Εντολές εκτελέσιμου κώδικα που παράγονται από κάθε
προγραμματιστή/μήνα.
Σελίδες τεκμηρίωσης που γράφονται από κάθε προγραμματιστή/μήνα.
Περιπτώσεις ελέγχου που γράφονται και εκτελούνται ανά
προγραμματιστή/μήνα.
Χρόνος ανάλυσης
Χρόνος σχεδίασης
Παραγωγή κώδικα
Χρόνος ελέγχου
Χρόνος ανάπτυξης
106
Διοίκηση έργων λογισμικού
107
Διοίκηση έργων λογισμικού
108
Διοίκηση έργων λογισμικού
Μια μελέτη που έγινε από τον Sackman (1968) έδειξε ότι οι ατομικές
διαφορές στην παραγωγικότητα μπορούν να είναι πολύ μεγάλες. Οι καλύτεροι
προγραμματιστές μπορούν να είναι και δέκα φορές πιο παραγωγικοί από τους
χειρότερους. Αυτός ο παράγων ικανότητας είναι πολύ πιθανόν να είναι κυρίαρχος σε
ατομικές συγκρίσεις παραγωγικότητας. Αναλόγως, οι παράγοντες που συζητούνται
παρακάτω σχετίζονται μόνο με ομάδες προγραμματιστών που αποτελούνται από
προγραμματιστές με εύρος ικανοτήτων.
Οι Walston και Felix (1977) έκαναν μια έρευνα παραγωγικότητας για να
προσδιορίσουν τη βελτίωση στην παραγωγικότητα από τη χρησιμοποίηση
μεθοδολογιών όπως η από πάνω προς τα κάτω (top down) ανάπτυξη, ο δομημένος
προγραμματισμός, κ.λ.π. Συνέλεξαν δεδομένα από περισσότερο από 60 έργα που
εκτείνονταν από απλά εμπορικά προγράμματα γραφείου σε μεγάλα συστήματα
ελέγχου διαδικασιών. Επέλεξαν 68 μεταβλητές για ανάλυση και προσδιόρισαν 29 από
αυτές σαν σημαντικά συσχετιζόμενες με την παραγωγικότητα. Αυτές οι μεταβλητές
περιελάμβαναν χαρακτηριστικά του υπό ανάπτυξη συστήματος, την εμπειρία αυτών
που ανέπτυσσαν τα συστήματα, περιορισμούς στο υλικό, τη χρήση νέων τεχνολογιών
ανάπτυξης συστημάτων, περιορισμούς στο σχεδιασμό των προγραμμάτων και την
ποσότητα της τεκμηρίωσης που απαιτούνταν.
Ο πιο σημαντικός παράγοντας που επηρεάζει την παραγωγικότητα ήταν η
πολυπλοκότητα της διεπαφής του χρήστη. Έργα με χαμηλή πολυπλοκότητα διεπαφής
του χρήστη παρουσίαζαν παραγωγικότητα της τάξης των 500 γραμμών/
προγραμματιστή ανά μήνα, τη στιγμή που έργα με υψηλή πολυπλοκότητα διεπαφής
του χρήστη παράγονταν με ρυθμό 124 γραμμών/προγραμματιστή ανά μήνα.
Άλλοι σημαντικοί παράγοντες είναι ο βαθμός συμμετοχής των χρηστών στον
καθορισμό των απαιτήσεων και η εμπειρία της ομάδας προγραμματισμού. Όπου δε
συμμετείχε ο χρήστης στον καθορισμό των απαιτήσεων, η παραγωγικότητα
μετρήθηκε στις 491 γραμμές/ προγραμματιστή ανά μήνα, αλλά εκεί όπου ήταν
σημαντική η συμμετοχή του χρήστη έπεσε στις 205 γραμμές/μήνα. Ομάδες με αρκετή
εμπειρία παρήγαγαν με ρυθμό 410 γραμμές/ προγραμματιστή ανά μήνα εκεί όπου
άπειρες παρήγαγαν με ρυθμό 132 γραμμές/ προγραμματιστή.
Τα αποτελέσματα στην παραγωγικότητα της πολυπλοκότητας της διεπαφής
του χρήστη και της εμπειρίας της ομάδας είναι διαισθητικά προφανή παρά το ότι η
μελέτη των Walston και Felix ήταν χρήσιμη στο να δείξει τη σημασία τους. Θα
μπορούσε επίσης να περιμένει κανείς ότι αν ο χρήστης είχε μικρότερη συμμετοχή
στον καθορισμό των απαιτήσεων η παραγωγικότητα θα ήταν μεγαλύτερη, παρ’ όλο
που σε αυτήν την περίπτωση το τελικό προϊόν ίσως να μην κάλυπτε τις ανάγκες του.
Οι μεθοδολογίες σχεδίασης και προγραμματισμού, όπως ο δομημένος
προγραμματισμός, οι αναθεωρήσεις του σχεδιασμού και του κώδικα, και η από πάνω
προς τα κάτω σχεδίαση, είχαν θετική επίδραση στην παραγωγικότητα, αν και όχι
109
Διοίκηση έργων λογισμικού
τόσο μεγάλη όσο οι παράγοντες που συζητήθηκαν προηγουμένως. Παρ’ όλα αυτά, οι
βελτιώσεις στην παραγωγικότητα που απορρέουν από τη χρήση αυτών των τεχνικών
θα πρέπει να θεωρηθούν σαν μια επιβράβευση (bonus). Η κύρια λειτουργία τους είναι
να βελτιώσουν την αξιοπιστία και τη συντηρησιμότητα του λογισμικού.
Ένας άλλος παράγοντας που προφανώς επηρεάζει την παραγωγικότητα είναι η
ποσότητα του χρόνου που ένας μηχανικός λογισμικού πραγματικά αφιερώνει
εργαζόμενος στην ανάπτυξη λογισμικού. Αγνοώντας τις διακοπές και πιθανές
ασθένειες, κάθε μέλος μιας ομάδας ανάπτυξης λογισμικού ξοδεύει χρόνο στην
εκπαίδευση, στην παρουσία σε συνεδριάσεις και σε καθήκοντα διαχείρισης. Αν ένα
έργο περιλαμβάνει νέες τεχνικές, θα χρειαστεί εκπαίδευση, αν το έργο περιλαμβάνει
περισσότερες από μια γεωγραφικές τοποθεσίες, ξοδεύεται χρόνος σε μετακινήσεις και
όσο μεγαλύτερη είναι η ομάδα, τόσο περισσότερος χρόνος ξοδεύεται στην
επικοινωνία. Ο McCue (1978) ανακάλυψε ότι το 20% με 30% ενός μηχανικού μπορεί
να ξοδευτεί σε μη “παραγωγικές” δραστηριότητες.
ΚΥΡΙΑ ΣΗΜΕΙΑ:
Η καλή διοίκηση των έργων λογισμικού είναι απαραίτητη αν τα έργα της
τεχνολογίας λογισμικού πρόκειται να αναπτυχθούν μέσα στα όρια του
προϋπολογισμού και του χρονοπρογραμματισμού.
Η διοίκηση λογισμικού είναι διαφορετική από άλλες μορφές τεχνολογικής
διοίκησης επειδή το λογισμικό δεν είναι χειροπιαστό, επειδή δεν είναι
επακριβώς κατανοητή η διαδικασία παραγωγής λογισμικού και επειδή τα
περισσότερα έργα λογισμικού είναι καινοφανή και πρωτοποριακά.
Ένας υπεύθυνος λογισμικού έχει διάφορους ρόλους αλλά οι πιο σημαντικές
δραστηριότητες του είναι ο σχεδιασμός του έργου, η εκτίμηση και ο
χρονοπρογραμματισμός.
Έχουν υιοθετηθεί διάφορες οργανώσεις ομάδων ανάπτυξης. Οι
δημοκρατικές ομάδες εργάζονται καλά όταν αποτελούνται από έμπειρο και
ανταγωνιστικό προσωπικό. Οι ομάδες με αρχηγό προγραμματιστή
προσπαθούν να χρησιμοποιήσουν με τον καλύτερο τρόπο ένα σπάνιο μέσο,
συγκεκριμένα, την προγραμματιστική ικανότητα.
Ο κύριος παράγοντας στην προγραμματιστική παραγωγικότητα είναι η
ικανότητα του προγραμματιστή σαν άτομο.
Συγκρίσεις μεταξύ διαφορετικών γλωσσών προγραμματισμού με κριτήριο
τις γραμμές κώδικα ανά μήνα δεν θα πρέπει να γίνονται.
Τα υπάρχοντα μέτρα προγραμματιστικής παραγωγικότητας δεν λαμβάνουν
υπ’ όψη τους την ποιότητα του τελικού προϊόντος
110
Διοίκηση έργων λογισμικού
ΛΕΞΙΚΟ ΟΡΩΝ
ΑΝΑΦΟΡΕΣ
IEE/BCS Software Engineering J. Ένα ειδικό άρθρο από ένα περιοδικό, το οποίο
αναφέρεται σε θέματα τεχνολογίας λογισμικού. Η πρώτη ενότητα περιλαμβάνει
αρκετά papers σχετικά με τη διοίκηση έγων λογισμικού. Συνίσταται ιδιαίτερα το
paper του Rock.
The Mythical Man Month (F.P. Brooks, 1975, Addison-Wesley) Mία ενδιαφέρουσα
και καλογραμμένη αναφορά των προβλημάτων διοίκησης που εμφανίστηκαν κατά
την ανάπτυξη ενός από τα πρώτα πολύ μεγάλα έργα λογισμικού, το IBM OS/360
λειτουργικό σύστημα. Ο συγγραφέας της αναφοράς ήταν και διοικητής (manager)
σ’αυτό το έργο, από όπου αποκόμισε πολύ εμπειρία.
The Program Development Process : Part 2 - The Programming Team : Ένα άλλο
κείμενο που αναφέρεται στη διοίκηση λογισμικού, από συγγραφέα του οποίου η
εμπειρία είναι στην IBM. Πρόκειται για ένα πολύ ενδιαφέρον βιβλίο, όχι τόσο
διασκεδαστικό όσο του Brook, ωστόσο εξίσου πολύτιμo συμπλήρωμα σ’αυτό το
κεφάλαιο.
111
ΚΕΦΑΛΑΙΟ 8: AΞΙΟΠΙΣΤΙΑ ΛΟΓΙΣΜΙΚΟΥ
ΠΕΡΙΕΧΟΜΕΝΑ
112
Αξιοπιστία λογισμικού
Οι χρήστες δεν θεωρούν όλες τις υπηρεσίες ίσης σπουδαιότητας και ένα
σύστημα μπορεί να χαρακτηριστεί ως αναξιόπιστο αν αποτυγχάνει να παρέχει μερικές
χρήσιμες υπηρεσίες. Για παράδειγμα, ας θεωρήσουμε ένα σύστημα, το οποίο
χρησιμοποιείται για να ελέγχει το φρενάρισμα ενός αεροσκάφους αλλά αποτυγχάνει
να λειτουργήσει κάτω από ένα σύνολο πολύ σπάνιων συνθηκών. Αν ένα αεροσκάφος
συντριφτεί γιατί παρουσιάστηκαν αυτές οι συνθήκες αποτυχίας, οι πιλότοι άλλων
όμοιων αεροσκαφών θα θεωρούσαν (λογικά) το λογισμικό αναξιόπιστο.
113
Αξιοπιστία λογισμικού
Αυτό παρουσιάζεται στο σχήμα 8.1, το οποίο προέρχεται από τον Littlewood
(1990), και το οποίο παρουσιάζει ένα σύστημα λογισμικού σαν μία αντιστοίχιση ενός
συνόλου εισόδων σε ένα σύνολο εξόδων. Ένα πρόγραμμα έχει πολλές πιθανές
εισόδους (για απλότητα, συνδυασμοί και ακολουθίες εισόδων θεωρούνται σα μια
μοναδική είσοδος). Το πρόγραμμα ανταποκρίνεται σε αυτές τις εισόδους παράγοντας
μία έξοδο ή ένα σύνολο εξόδων. Κάποιες από αυτές τις εισόδους (παρουσιάζονται με
τη σκιασμένη έλλειψη στο σχήμα 8.1) προκαλούν αποτυχίες συστήματος, όπου
παράγονται από το πρόγραμμα λανθασμένες έξοδοι. Η αξιοπιστία του προϊόντος
σχετίζεται με την πιθανότητα, σε μια συγκεκριμένη εκτέλεση του προγράμματος, η
είσοδος στο σύστημα να είναι μέλος του συνόλου των εισόδων που προκαλούν
λανθασμένη έξοδο.
Πρόγραμμα
Λανθασμένες έξοδοι
Σύνολο εξόδου Oe
Σχήμα 8.1
Ένα σύστημα σαν μια αντιστοίχιση
εισόδου/εξόδου
Είναι πιθανό ότι θα υπάρχει ένας μικρός αριθμός μελών του I e , τα οποία είναι
περισσότερο πιθανά να επιλεγούν από ότι κάποια άλλα. Η αξιοπιστία του
114
Αξιοπιστία λογισμικού
Στο σχήμα 8.2, το σύνολο των λανθασμένων εισόδων, που αντιστοιχεί στη
σκιασμένη έλλειψη του σχήματος 8.1, είναι επίσης σκιασμένη. Το σύνολο των
εισόδων που παράγονται από το χρήστη 2 τέμνεται με το σύνολο των λανθασμένων
εισόδων, κι έτσι για κάποιες εισόδους του χρήστη 2, το σύστημα θα αποτύχει. Οι
χρήστες 1 και 3, όμως, δεν επιλέγουν ποτέ εισόδους από το λανθασμένο σύνολο κι
έτσι θα βλέπουν πάντα το σύστημα σαν απόλυτα αξιόπιστο.
115
Αξιοπιστία λογισμικού
Πιθανές
είσοδοι
Χρήστης 1 Λανθασμένες
είσοδοι
Χρήστης 3
Χρήστης 2
Σχήμα 8.2
Πρότυπα χρήσης λογισμικού
Κόστος
100% Αξιοπιστία
Σχήμα 8.3
Κόστος συναρτήσει της αξιοπιστίας
116
Αξιοπιστία λογισμικού
1. Οι υπολογιστές είναι τώρα φτηνοί και γρήγοροι, κι έτσι δεν υπάρχει ουσιαστική
ανάγκη να μεγιστοποιήσουμε τη χρήση εξοπλισμού. Κατά παράδοξο τρόπο όμως,
ο ταχύτερος εξοπλισμός οδηγεί σε αυξανόμενες προσδοκίες από τη μεριά του
χρήστη κι έτσι τα ζητήματα αποδοτικότητας δεν μπορούν να αγνοηθούν τελείως.
2. Αναξιόπιστο λογισμικό έχει την τάση να αποφεύγεται από τους χρήστες. Αν μια
εταιρία αποκτήσει φήμη για αναξιοπιστία λόγω κάποιου μεμονωμένου προϊόντος,
είναι πιθανόν να επηρεαστούν οι μελλοντικές πωλήσεις όλων των προϊόντων αυτής
της εταιρίας.
3. Για κάποιες εφαρμογές, όπως ένα σύστημα ελέγχου αντιδραστήρα ή ένα σύστημα
κυβέρνησης αεροσκάφους, το κόστος της αποτυχίας του συστήματος είναι τάξεις
μεγέθους μεγαλύτερο από το κόστος του συστήματος ελέγχου. Υπάρχει ένας
αυξανόμενος αριθμός συστημάτων που αρχίζουν να χρησιμοποιούνται, όπου το
ανθρώπινο και οικονομικό κόστος μιας καταστροφικής αποτυχίας του συστήματος
είναι μη αποδεκτό.
117
Αξιοπιστία λογισμικού
Μπορεί να φαίνεται ότι η χρήση τυπικών μεθόδων για την ανάπτυξη του
συστήματος θα οδηγήσει απαραίτητα σε περισσότερο αξιόπιστα συστήματα. Δεν
υπάρχει αμφιβολία ότι μια τυπική προδιαγραφή συστήματος είναι λιγότερο πιθανό να
περιέχει ανωμαλίες, οι οποίες πρέπει να επιλυθούν από το σχεδιαστή του συστήματος.
Όμως, δεν υπάρχει καμιά εγγύηση ότι η προδιαγραφή καθορίζει ένα σύστημα το
οποίο ικανοποιεί τις ανάγκες του χρήστη και παρέχει μια υψηλού επιπέδου
διακρινόμενη αξιοπιστία. Πράγματι, υπάρχει περίπτωση η αδιαφάνεια των τυπικών
παραστάσεων να κάνει πιο δύσκολο για τους χρήστες να αποδείξουν εάν ένα σύστημα
ικανοποιεί τις ανάγκες τους ή όχι.
Κάποιες από τις μονάδες που έχουν χρησιμοποιηθεί για τον υπολογισμό της
αξιοπιστίας του λογισμικού είναι:
Ο χρόνος είναι ένας παράγοντας σε όλες αυτές τις μετρικές και πρέπει να
επιλεχτούν κατάλληλες χρονικές μονάδες. Οι χρονικές μονάδες μπορεί να είναι
ημερολογιακός χρόνος, χρόνος απασχόλησης της CPU για τη συγκεκριμένη
εφαρμογή (processor time) ή μπορεί να είναι μερικές διακριτές μονάδες, όπως ένας
αριθμός από δοσοληψίες (transactions). Εξαρτάται από την εφαρμογή και από το πώς
αντιλαμβάνονται οι χρήστες του συστήματος το χρόνο. Για συστήματα που
βρίσκονται σε συνεχή χρήση, μπορεί να είναι κατάλληλο να χρησιμοποιηθεί
ημερολογιακός χρόνος. Για συστήματα που χρησιμοποιούνται περιοδικά αλλά είναι
αδρανή για τον περισσότερο χρόνο (για παράδειγμα, ένα σύστημα αυτόματης
τραπεζικής μηχανής—bank auto-teller), η πιο κατάλληλη χρονική μονάδα είναι ένας
αριθμός από δοσοληψίες.
119
Αξιοπιστία λογισμικού
συνέπειες δεν είναι σοβαρές, είναι μικρής πρακτικής σημασίας στη λειτουργική
χρήση του λογισμικού. Για παράδειγμα, ας θεωρήσουμε ένα σύστημα λογισμικού το
οποίο υπολογίζει το μέσο όρο διαφόρων θερμοκρασιών, οι οποίες λαμβάνονται ανά
διαστήματα του ενός λεπτού. Η απώλεια κάποιων από αυτά τα δεδομένα είναι
απίθανο να έχει κάποια σημαντική επίδραση στον υπολογισμό της μέσης τιμής.
Δυστυχώς, πολλοί αναλυτές απαιτήσεων έχουν μικρή γνώση της θεωρίας της
αξιοπιστίας και αναφέρουν τις απαιτήσεις αξιοπιστίας με έναν υποκειμενικό, άσχετο
ή μη μετρήσιμο τρόπο. Για παράδειγμα, δηλώσεις όπως “Το λογισμικό πρέπει να
είναι όσο πιο αξιόπιστο γίνεται” δεν έχουν νόημα. Δήθεν ποσοτικές δηλώσεις όπως
“Το λογισμικό δεν πρέπει να εμφανίζει περισσότερα από Ν ελαττώματα/1000
γραμμές” είναι ισοδύναμα άσχετο. Όχι μόνο είναι αδύνατο να μετρηθεί ο αριθμός των
ελαττωμάτων/1000 γραμμές κώδικα (πώς μπορεί κάποιος να πει ότι όλα έχουν
ανακαλυφθεί;), αλλά και η δήλωση δεν σημαίνει τίποτα από την άποψη της δυναμικής
συμπεριφοράς του συστήματος. Όπως έχει ήδη αναφερθεί, αξιόπιστη λειτουργία κατά
την παρουσία ελαττωμάτων είναι αρκετά πιθανή.
120
Αξιοπιστία λογισμικού
Σχήμα 8.4
Ταξινόμηση αποτυχιών
1. Για κάθε υποσύστημα που αναγνωρίζεται, ανάλυσε τις συνέπειες των πιθανών
αποτυχιών του συστήματος. Τα περισσότερα μεγάλα συστήματα αποτελούνται
από διάφορα υποσυστήματα και είναι απίθανο να έχουν όλα τις ίδιες απαιτήσεις
αξιοπιστίας.
2. Από την ανάλυση των αποτυχιών του συστήματος, διένειμε τις αποτυχίες στις
κατάλληλες κατηγορίες. Ένα λογικό σημείο εκκίνησης είναι η χρήση των
κατηγοριών των αποτυχιών που παρουσιάζονται στο σχήμα 8.4.
3. Για κάθε τάξη αποτυχίας που αναγνωρίζεται, καθόρισε τις απαιτήσεις αξιοπιστίας
χρησιμοποιώντας την κατάλληλη μετρική της αξιοπιστίας. Μπορεί να είναι
απαραίτητο να χρησιμοποιηθούν διαφορετικές μετρικές για διαφορετικά
υποσυστήματα.
121
Αξιοπιστία λογισμικού
Σχήμα 8.5
Παραδείγματα προδιαγραφών
αξιοπιστίας
122
Αξιοπιστία λογισμικού
123
Αξιοπιστία λογισμικού
Όμως, όταν ένα σύστημα λογισμικού είναι νέο και περιέχει καινοτομίες είναι
περισσότερο δύσκολο να προβλεφθεί πώς θα χρησιμοποιηθεί. Οι παραγωγοί του
συστήματος και οι προμηθευτές του μπορεί να έχουν το δικό τους μοντέλο του πώς
θα ήθελαν να χρησιμοποιηθεί το σύστημα, αλλά οι χρήστες των ηλεκτρονικών
υπολογιστών συχνά χρησιμοποιούν τα συστήματα με τρόπους που δεν μπορούν να
προβλεφθούν από τους παραγωγούς τους. Το πρόβλημα συνδυάζεται περισσότερο με
το γεγονός ότι το λειτουργικό προφίλ μπορεί να αλλάξει καθώς το σύστημα
χρησιμοποιείται. Τα συστήματα χρησιμοποιούνται από μια ποικιλία χρηστών με
διαφορετικές προσδοκίες, υπόβαθρα και εμπειρίες. Όταν οι ικανότητες και η
εμπιστοσύνη των χρηστών αλλάζει καθώς αποκτούν εμπειρία με το σύστημα, μπορεί
να το χρησιμοποιούν με περισσότερο πολύπλοκους τρόπους.
124
Αξιοπιστία λογισμικού
Πιθανό-
τητα
εισόδου
…
Κατηγορία εισόδου
Σχήμα 8.6
Ένα τυπικό
λειτουργικό προφίλ
Τυπικά, το λειτουργικό προφίλ είναι τέτοιο έτσι ώστε οι είσοδοι που έχουν τη
μεγαλύτερη πιθανότητα να δημιουργηθούν εμπίπτουν σε έναν μικρό αριθμό τάξεων,
αλλά υπάρχει ένας εξαιρετικά μεγάλος αριθμός κατηγοριών όπου υπάρχει μια πολύ
μικρή αλλά πεπερασμένη πιθανότητα ότι θα δημιουργηθεί μια είσοδος από αυτή την
τάξη (σχήμα 8.6).
Παρ’ όλο που μπορεί να είναι εύκολο να δημιουργηθούν έλεγχοι με τις πιο
κοινές εισόδους, είναι σημαντικό να συμπεριλαμβάνεται στο σύνολο ελέγχου ένα
στατιστικά σημαντικό ποσοστό από τις μη πιθανές εισόδους. Η δημιουργία τους
μπορεί να είναι δύσκολη. Αυτό είναι αληθές ιδιαίτερα αν χρησιμοποιείται ένα
πρόγραμμα παραγωγής δεδομένων ελέγχου, καθώς ίσως θα πρέπει να είναι ειδικά
τροποποιημένο για να δημιουργήσει αυτές τις σπάνιες αλλά έγκυρες εισόδους.
Όταν το λογισμικό έχει απαιτήσεις πολύ υψηλής αξιοπιστίας, αυτό υπονοεί ότι
πολύ λίγες είσοδοι στο σύνολο δεδομένων ελέγχου θα πρέπει να προκαλέσουν
αποτυχία του συστήματος. Έτσι, το σύνολο δεδομένων ελέγχου πρέπει να είναι
υπερβολικά μεγάλο και ο χρόνος που απαιτείται για τη δημιουργία ενός στατιστικά
σημαντικού αριθμού αποτυχιών (και ως εκ τούτου για την εκτίμηση της αξιοπιστίας
του συστήματος) μπορεί να είναι τόσο μεγάλος που είναι μη πρακτικό να εκτελεστούν
οι έλεγχοι.
125
Αξιοπιστία λογισμικού
126
Αξιοπιστία λογισμικού
της αξιοπιστίας απ’ ότι η επισκευή των ελαττωμάτων που εκδηλώνονται πολύ
περιστασιακά.
ROCOF
t1 t2 t3 t4 t5 Χρόνος
Σχήμα 8.7
Μοντέλο λειτουργίας σταθερού βήματος για
την ανάπτυξη της αξιοπιστίας
Άλλα μοντέλα, όπως αυτό που περιγράφηκε από τους Littlewood και Verrall
(1973) λαμβάνουν υπ’ όψη τέτοια προβλήματα με την εισαγωγή ενός τυχαίου
παράγοντα στην βελτίωση της ανάπτυξης της αξιοπιστίας για κάθε μία από τις
διορθώσεις λογισμικού που γίνονται. Έτσι, κάθε επιδιόρθωση δεν επηρεάζει με τον
ίδιο τρόπο την βελτίωση της αξιοπιστίας αλλά διαφέρει ανάλογα με την τυχαία
ανωμαλία που προκάλεσε το σφάλμα (σχήμα 8.8).
t1 t2 t3 t4 t5
Χρόνος
Σχήμα 8.8
Μοντέλο λειτουργίας τυχαίου βήματος για
την ανάπτυξη της αξιοπιστίας
127
Αξιοπιστία λογισμικού
128
Αξιοπιστία λογισμικού
Αξιοπιστία
= Μετρούμενη αξιοπιστία
Καμπύλη μοντέλου
αξιοπιστίας προσέγγισης
σημείου
Απαιτού-
μενη
αξιοπιστία
Σχήμα 8.9
Πρόβλεψη της
αξιοπιστίας
ΣΗΜΕΙΑ ΚΛΕΙΔΙΑ
Η αξιοπιστία ενός συστήματος λογισμικού δεν είναι ένα απλό μέτρο το οποίο
μπορεί να συσχετιστεί με το σύστημα. Εξαρτάται από το πρότυπο χρήσης αυτού
του συστήματος. Είναι αρκετά πιθανό για ένα σύστημα να περιέχει ελαττώματα
αλλά παρ’ όλα αυτά να θεωρείται ως αξιόπιστο.
129
Αξιοπιστία λογισμικού
Τα μοντέλα ανάπτυξης αξιοπιστίας είναι ένας τρόπος εκτίμησης της μεταβολής της
αξιοπιστίας καθώς αναπτύσσεται ένα προϊόν. Δεν πρέπει να υποθέτουν ότι η
αξιοπιστία πάντα αυξάνει με αλλαγές στο σύστημα.
ΑΝΑΦΟΡΕΣ
Software Reliability Handbook. Αντίθετα με τον τίτλο του, αυτό το βιβλίο έχει πολύ
ευρύτερη εμβέλεια από απλά θέματα αξιοπιστίας. Περιέχει επίσης θαυμάσιες
ενότητες πάνω στις μετρικές και την εξασφάλιση ποιότητας. (P. Rook (ed.), 1990,
Elsevier.)
‘Quantifying software validation: When to stop testing’. Πρόκειται για ένα υπέροχο
άρθρο, που εισάγει τις έννοιες του στατιστικού έλεγχου και της αύξησης της
αξιοπιστίας, και δείχνει πώς αυτές μπορούν να χρησιμοποιηθούν στην κατάστρωση
σχεδίου ελέγχου. Παρέχει λεπτομέρειες σχετικά με πραγματικές εμπειρίες πάνω στον
στατιστικό έλεγχο. (J.D. Musa and A. Frank Ackerman, IEEE Software, 6 (3), 1989.)
130
Επαλήθευση και Επικύρωση
Ο σκοπός αυτού του κεφαλαίου, είναι να κάνει μια γενική θεώρηση της διαδικασίας
της επαλήθευσης και της επικύρωσης και να εισάγει τον έλεγχο σαν μία μέθοδο
επικύρωσης. Ο έλεγχος είναι μια διαδικασία πολλαπλών σταδίων τα οποία
αναπτύσσονται στο πρώτο μέρος αυτού του κεφαλαίου. Καλύπτεται ο
προγραμματισμός και ο σχεδιασμός του ελέγχου ενώ προτείνεται και ένα γενικό
περίγραμμα για τα σχέδια ελέγχου. Στο τελευταίο μέρος αυτού του κεφαλαίου,
περιγράφεται μια ποικιλία από στρατηγικές ελέγχου συμπεριλαμβανόμενων του
top-down, bottom-up, thread και stress ελέγχου.
ΠΕΡΙΕΧΟΜΕΝΑ
9.1. Η διαδικασία ελέγχου.
9.2. Σχεδιασμός ελέγχου.
9.3 Στρατηγικές ελέγχου.
9.3.1. Top-down έλεγχος
9.3.2. Bottom-up έλεγχος
9.3.3. Thread έλεγχος
9.3.4. Stress έλεγχος
131
Επαλήθευση και Επικύρωση
Για την ικανοποίηση των στόχων της διαδικασίας Ε&Ε, μπορούν να χρησιμοποιηθούν
τόσο στατικές όσο και δυναμικές τεχνικές ελέγχου και ανάλυσης. Οι στατικές
τεχνικές ασχολούνται με την ανάλυση των αναπαραστάσεων του συστήματος όπως
είναι οι απαιτήσεις, το σχέδιο και η λίστα του προγράμματος. Εφαρμόζονται σε όλα
τα στάδια της διαδικασίας διαμέσου δομημένων ανασκοπήσεων. Οι δυναμικές
τεχνικές ή τα δυναμικά τεστ αφορούν έλεγχο υλοποίησης. Το σχήμα 9.1 δείχνει το
ρόλο των στατικών και δυναμικών τεχνικών στη διαδικασία λογισμικού.
ΣΤΑΤ ΙΚΗ
ΕΠΑΛΗΘΕΥΣΗ
ΠΡΟΔΙΑΓΡΑΦΕΣ ΣΧΕΔΙΑΣΜΟΣ
ΑΠΑΙΤΗΣΕΩΝ ΤΥΠΙΚΕΣ ΛΕΠΤΟΜΕΡΗΣ ΠΡΟΓΡΑΜΜΑ
ΥΨΗΛΟΥ
ΠΡΟΔΙΑΓΡΑΦΕΣ ΣΧΕΔΙΑΣΜΟΣ
ΕΠΙΠΕΔΟΥ
ΔΥΝΑΜΙΚΗ
ΠΡΩΤΟΤΥΠΟ ΕΠΙΚΥΡΩΣΗ
132
Επαλήθευση και Επικύρωση
Παρόλο που οι στατικές τεχνικές επαλήθευσης γίνονται όλο και περισσότερο ευρέως
χρησιμοποιήσιμες, ο έλεγχος του προγράμματος είναι η επικρατέστερη Ε&Ε τεχνική.
Ο έλεγχος κανονικά εκτελείται κατά τη διάρκεια της υλοποίησης και επίσης σε μια
διαφορετική μορφή, όταν η εφαρμογή έχει ολοκληρωθεί. Ο έλεγχος περιλαμβάνει το
να δοκιμάζεται το πρόγραμμα χρησιμοποιώντας δεδομένα σαν τα πραγματικά
δεδομένα που το πρόγραμμα επεξεργάζεται. Η ύπαρξη ατελειών ή ακαταλληλοτήτων
στο πρόγραμμα, φαίνεται από οποιαδήποτε ανωμαλία στην έξοδο.
Για να επιτευχθούν οι δύο στόχοι της διαδικασίας E&E υπάρχουν δύο ειδών έλεγχοι :
Ο έλεγχος του προγράμματος μπορεί μόνο να δείξει την ύπαρξη ατελειών στο
πρόγραμμα αλλά δεν μπορεί να αποδείξει ότι δεν έχει λάθη. Μη εντοπισμένες
ατέλειες μπορούν να συνεχίζουν να υπάρχουν ακόμα και μετά από τον πιο εκτενή
έλεγχο. Σύμφωνα με τον Myers (1979), ως εκ τούτου, ως επιτυχές τεστ εύρεσης
ατελειών καθορίζεται αυτό που αποκαλύπτει την παρουσία των ατελειών στο υπό
εξέταση λογισμικό.
Αυτό διαφέρει από την συχνά χρησιμοποιούμενη σημασία του επιτυχούς τεστ
ατελειών, που είναι ένα τεστ που δεν επιδεικνύει ανωμαλίες στην έξοδο. Ο
εναλλακτικός καθορισμός γοητεύει κατά κάποιο τρόπο (δηλώσεις όπως "το σύστημα
έχει περάσει όλα τα τεστ» είναι δελεαστικές) αλλά μπορεί να οδηγήσει σε πλάνη. Αν
η ακολουθία των ελέγχων για ένα πρόγραμμα δεν ανιχνεύει ατέλειες, αυτό σημαίνει
απλά ότι τα επιλεγόμενα τεστ δεν έχουν εξετάσει το σύστημα έτσι ώστε να
αποκαλυφθούν οι ατέλειες. Δεν σημαίνει ότι το πρόγραμμα δεν έχει ατέλειες.
133
Επαλήθευση και Επικύρωση
Σχεδίαση
Εντοπισμός Επιδιόρθωσης Επιδόρθωση Επανέλεγχος
Λάθους Λάθους Λάθους Προγράμματος
Είναι αδύνατον να παρουσιαστεί ένα σετ από οδηγίες για την αποσφαλμάτωση του
προγράμματος. Οι ειδικευμένοι στην αποσφαλμάτωση ψάχνουν για πρότυπα στην
έξοδο του ελέγχου όπου εμφανίζεται το λάθος και στη συνέχεια χρησιμοποιούν
γνώσεις περί του συγκεκριμένου λάθους, των προτύπων που μπορεί να εντοπίσθηκαν
στην έξοδο και περι της προγραμματιστικής διαδικασίας για τον εντοπισμό της
ατέλειας. Η γνώση της διαδικασίας εντοπισμού ατελει είναι πολύ σημαντική. Οι
ειδικευμένοι στην αποσφαλμάτωση γνωρίζουν κοινότυπα προγραμματιστικά λάθη
(όπως η αποτυχία αύξησης ενός μετρητή) και τα συνδυάζουν σε αντιπαράθεση με τα
παρατηρούμενα πρότυπα.
Αφότου έχει ανακαλυφθεί μία ατέλεια σε ένα πρόγραμμα, πρέπει να διορθωθεί. Αυτό
μπορεί να σημαίνει επανασχεδιασμό τμημάτων του προγράμματος και συνεπώς
ολόκληρο το σύστημα πρέπει να επανελεγχθεί. Ένας τέτοιος επανέλεγχος
συνεπάγεται μεγάλο κόστος, έτσι το να σχεδιαστούν ανασκοπήσεις και στατικές
επικυρώσεις πριν αρχίσει η κωδικοποίηση, είναι τεχνικές εύρεσης ατελειών που δεν
είναι δαπανηρές, μια και βρίσκουν ατέλειες χωρίς να προσθέτουν επιπρόσθετο
κόστος.
Εκτός από μικρά προγράμματα, τα συστήματα δεν πρέπει να ελέγχονται σαν μια
απλή μονολιθική μονάδα. Μεγάλα συστήματα χτίζονται από υποσυστήματα, τα οποία
χτίζονται από modules, τα οποία συντίθεται από διαδικασίες και συναρτήσεις.
Γι'αυτό πρέπει η διαδικασία ελέγχου να προχωρεί σε στάδια όπου ο έλεγχος
εφαρμόζεται επαυξητικά από κοινού με την υλοποίηση του συστήματος.
2. Έλεγχος module : Ένα module είναι μια συλλογή από εξαρτώμενα συστατικά όπως
ένα αντικείμενο, μία αφαιρετική δομή δεδομένων ή μια τυχαία συλλογή από
134
Επαλήθευση και Επικύρωση
5. Έλεγχος αποδοχής : Αυτό είναι το τελικό στάδιο στην διαδικασία ελέγχου πριν το
σύστημα γίνει αποδεκτό για λειτουργική χρήση. Αφορά έλεγχο του συστήματος με
πραγματικά δεδομένα (τα οποία παρέχει ο χρήστης του συστήματος) και όχι με
δεδομένα προσομοίωσης που αναπτύσσονται σαν τμήμα της διαδικασίας ελέγχου.
Ο έλεγχος αποδοχής πολύ συχνά φανερώνει λάθη και παραλείψεις στον ορισμό
των απαιτήσεων του συστήματος. Οι απαιτήσεις μπορεί να μην απεικονίζουν τις
πραγματικές ευκολίες και την απόδοση που απαιτείται από τους χρήστες και ο
έλεγχος μπορεί να δείξει ότι το σύστημα δεν παρουσιάζει την απαιτούμενη
απόδοση και λειτουργικότητα.
Ο έλεγχος αποδοχής μερικές φορές καλείται και alpha έλεγχος. Για τα συστήματα επί
παραγγελία (δηλ. τα συστήματα που κατασκευάζονται ειδικά για έναν πελάτη), αυτός
ο έλεγχος συνεχίζει μέχρις ότου αυτός που ανέπτυξε το σύστημα και αυτός που θα
πάρει το σύστημα (ο τελικός χρήστης) φτάσουν σε συμφωνία ότι το παραδιδόμενο
σύστημα είναι μια αποδεκτή αναπαράσταση των απαιτήσεων του συστήματος.
Όταν ένα σύστημα πρόκειται να βγεί στην αγορά σαν ένα προϊόν λογισμικού,
χρησιμοποιείται συχνά ο beta έλεγχος. Αυτός αφορά την παράδοση του συστήματος
σε ένα αριθμό από πιθανούς πελάτες οι οποίοι συμφωνούν να χρησιμοποιήσουν το
σύστημα και να αναφέρουν τα προβλήματά του στους κατασκευαστές του. Αυτό
εκθέτει το προϊόν σε πραγματική χρήση και εμφανίζει λάθη τα οποία ίσως να μην
είχαν προβλεφθεί από τους κατασκευαστές του συστήματος. Μετά από αυτή την
ανατροφοδότηση, το σύστημα τροποποιείται και είτε εκχωρείται για περαιτέρω beta
έλεγχο ή για γενική πώληση.
135
Επαλήθευση και Επικύρωση
ΕΛΕΓΧΟΣ
ΜΟΝΑΔΑΣ
ΕΛΕΓΧΟΣ
MODULE
ΕΛΕΓΧΟΣ
ΥΠΟΣΥΣΤΗΜΑΤΟΣ
ΕΛΕΓΧΟΣ
ΣΥΣΤΗΜΑΤΟΣ
ΕΛΕΓΧΟΣ
ΑΠΟΔΟΧΗΣ
Ο έλεγχος του συστήματος είναι δαπανηρός. Για μερικά μεγάλα συστήματα όπως τα
real-time συστήματα με σύνθετους χρονικούς περιορισμούς, ο έλεγχος μπορεί να
απορροφήσει περίπου το μισό από το κόστος της συνολικής ανάπτυξης. Έτσι ο
προσεκτικός σχεδιασμός των ελέγχων είναι απαραίτητος για την όσο το δυνατόν
μεγαλύτερη αποδοτικότητα των ελέγχων και τον περιορισμό του αντίστοιχου κόστους
αυτών.
136
Επαλήθευση και Επικύρωση
Τα σχέδια ελέγχου δεν είναι απλώς διαχειριστικά κείμενα για την διοίκηση της
διαδικασίας ελέγχου. Απευθύνονται και στους μηχανικούς λογισμικού
ασχολούμενους με τον σχεδιασμό και την πραγματοποίηση των ελέγχων του
συστήματος. Επιτρέπουν στο τεχνικό προσωπικό να λάβει μια συνολική εικόνα των
ελέγχων του συστήματος, και να τοποθετήσει την δική του δουλειά σ' αυτό το
πλαίσιο. Τα σχέδια ελέγχου παράγουν πληροφορίες στο προσωπικό που είναι
υπεύθυνο να εξασφαλίσει ότι οι κατάλληλοι πόροι από πλευράς υλικού και
λογισμικού είναι διαθέσιμοι στην ομάδα ελέγχου.
Όπως άλλα σχέδια, το σχέδιο ελέγχου δεν είναι στατικό κείμενο. Θα πρέπει να
αναθεωρείται ανά τακτά διαστήματα αφού ο έλεγχος είναι μια δραστηριότητα
εξαρτώμενη από την ολοκληρωμένη υλοποίηση. Εάν ένα κομμάτι του συτήματος δεν
έχει ολοκληρωθεί, η διαδικασία ελέγχου του συστήματος δεν μπορεί να ξεκινήσει.
137
Επαλήθευση και Επικύρωση
Η διαδικασία ελέγχου
Μια περιγραφή των κυρίων φάσεων της διαδικασίας ελέγχου. Αυτά μπορεί να είναι
έτσι όπως περιγράφτηκαν προηγούμενα σ’ αυτό το κεφάλαιο.
Ανιχνευσιμότητα απαιτήσεων
Οι χρήστες ενδιαφέρονται περισσότερο για το αν το σύστημα ικανοποιεί τις
απαιτήσεις του και γι' αυτό ο έλεγχος πρέπει να σχεδιαστεί έτσι ώστε όλες οι
απαιτήσεις να ελεχθούν ξεχωριστά.
Περιορισμοί
Οι περιορισμοί που επηρεάζουν την διαδικασία ελέγχου, όπως η ανεπάρκεια
προσωπικού, θα έπρεπε να προβλεφθούν εδώ.
138
Επαλήθευση και Επικύρωση
Έλεγχος Έλεγχος
Έλεγχος
Υπηρεσία Ολοκλήρωσης Ολοκλήρωσης
Αποδοχής
Συστήματος Υποσυστημάτων
Μετέπειτα στάδια ελέγχου αφορούν την ολοκλήρωση δουλειάς ενός μεγάλου αριθμού
προγραμματιστών. Αυτοί οι έλεγχοι πρέπει να σχεδιαστούν προκαταβολικά καί να
αναληφθούν από μια ανεξάρτητη ομάδα από ελεγκτές. Οι έλεγχοι modules και
υποσυστημάτων πρέπει να σχεδιάζονται καθώς κατασκευάζεται ο σχεδιασμός των
υποσυστημάτων. Οι έλεγχοι ολοκλήρωσης πρέπει να αναπτυχθούν σε συνδυασμό με
τον σχεδιασμό του συστήματος. Τα τεστ αποδοχής πρέπει να σχεδιαστούν με την
προδιαγραφή του προγράμματος και πρέπει να γραφτούν στο συμβόλαιο για τον
κατασκευαστή του συστήματος.
139
Επαλήθευση και Επικύρωση
Στο παράδειγμα του σχήματος 9.7, οι έλεγχοι Τ1, Τ2, και Τ3 τρέχουν αρχικά στο
σύστημα που συντίθεται από τα Module Α και Module Β. Μετά την ολοκλήρωση
(integration) του Module C, επαναλαμβάνονται οι ίδιοι έλεγχοι με την προσθήκη και
του ελέγχου Τ4. Στη συνέχεια oλοκληρώνεται το Module D και επαναλάμβανονται οι
προηγούμενοι έλεγχοι στο νέο ολοκληρωμένο σύστημα με την προσθήκη και του
ελέγχου Τ5. Καθώς προστίθενται νέα modules, πρέπει να προστεθούν νέοι έλεγχοι
στο σύνολο των ελέγχων.
T1
A
T1
A
T1 T2
A T2 B
T2 B T3
T3
B C
T3 T4
C
T4
D
T5
Ο έλεγχος αυτός αρχίζει με τον έλεγχο των υποσυστημάτων, ενώ modules του
χαμηλότερου επιπέδου αναπαρίστανται σαν stubs. Αυτά είναι απλά συστατικά τα
οποία έχουν τα ίδια χαρακτηριστικά με τα modules (επειδή τα πραγματικά modules
δεν είναι ακόμη διαθέσιμα). Μετά την ολοκλήρωση του ελέγχου των
υποσυστημάτων, συνεχίζεται ο έλεγχος των modules με τον ίδιο τρόπο. Οι
συναρτήσεις αναπαρίστανται από stubs. Τελικά τα συστατικά του προγράμματος
αντικαθίστανται από πραγματικό κώδικα ο οποίος ελέγχεται (Σχήμα 9.8).
140
Επαλήθευση και Επικύρωση
ΕΠΙΠΕΔΟ 1 ΕΠΙΠΕΔΟ 1
ΑΚΟΛΟΥΘΙΑ ΕΛΕΓΧΟΥ
Ο top-down έλεγχος έχει και το περαιτέρω πλεονέκτημα ότι, ένα περιορισμένο αλλά
εν λειτουργία σύστημα, είναι διαθέσιμο σε ένα αρχικό στάδιο ανάπτυξης συστήματος.
Αυτή είναι μια σημαντική ψυχολογική ενθάρρυνση γι'αυτούς που έχουν να κάνουν
με την κατασκευή του συστήματος, και επίσης μπορεί να αιτιολογήσει στη διοίκηση
του οργανισμού τη σκοπιμότητα του συστήματος. Η επικύρωση, σαν ξεχωριστή
διαδικασία από την επαλήθευση, μπορεί να ξεκινήσει κατά τα πρώτα στάδια της
διαδικασίας ελέγχου καθώς μπορεί να διατεθεί στους χρήστες ένα σύστημα που
δουλεύει (μερικώς).
Αυστηρός top-down έλεγχος είναι δύσκολο να υλοποιηθεί λόγω της απαίτησης ότι
πρέπει να παραχθούν stubs του προγράμματος, για να προσομοιώνουν κατώτερα
επίπεδα του συστήματος. Ο μηχανισμός για την υλοποίηση τέτοιων stubs
προγράμματος αφορά είτε στην παραγωγή μιας πολύ απλοποιημένης έκδοσης των
απαιτούμενων συστατικών, επιστρέφοντας κάποια τυχαία τιμή του σωστού τύπου ή
αλληλεπιδρώντας με τον ελεγκτή ο οποίος εισάγει μια κατάλληλη τιμή ή
προσομοιώνει την λειτουργία των συστατικών.
Εάν το συστατικό είναι πολύπλοκο, ίσως να μην είναι εφικτό να παραχθεί ένα stub
προγράμματος που να το προσομοιώνει με ακρίβεια. Σκεφτείτε μια συνάρτηση η
οποία να βασίζεται πάνω στη μετατροπή ενός πίνακα από αντικείμενα σε μια
συνδεδεμένη λίστα. Ο υπολογισμός των αποτελεσμάτων του, αφορά εσωτερικά
αντικείμενα του προγράμματος, τους δείκτες που συνδέουν στοιχεία στη λίστα. Είναι
141
Επαλήθευση και Επικύρωση
Άλλο ένα μειονέκτημα του ελέγχου αυτού είναι ότι τα αποτελέσματά του ίσως είναι
δύσκολο να παρατηρηθούν. Σε πολλά συστήματα, τα υψηλότερα επίπεδα δεν
παράγουν έξοδο αλλά, κι έτσι για να ελεχθούν αυτά τα συστήματα, πρέπει να
εξαναγκαστούν να παράγουν έξοδο. Ο ελεγκτής πρέπει να δημιουργήσει ένα τεχνητό
περιβάλλον για να παράγει τα αποτελέσματα του ελέγχου.
Ο Bottom-up έλεγχος είναι το αντίστροφο του top-down. Αφορά έλεγχο modules στα
χαμηλότερα επίπεδα στην ιεραρχία και μετά έλεγχο προς τα ανώτερα επίπεδα της
ιεραρχίας των modules μέχρις ότου ελεγχθεί το τελικό module (Σχήμα 9.9). Τα
πλεονεκτήματα αυτής της τεχνικής είναι τα μειονεκτήματα της top-down και
αντιστρόφως.
TEST
DRIVERS
TEST
DRIVERS
Εάν η top-down ανάπτυξη συνδυαστεί με τον bottom-up έλεγχο, όλα τα τμήματα του
συστήματος πρέπει να έχουν υλοποιηθεί πρίν αρχίσει ο έλεγχος. Αρχιτεκτονικά λάθη
δεν θα ανακαλυφθούν μέχρις ότου ελεγχθεί ένα μεγάλο μέρος του συστήματος. Η
διόρθωση αυτών των λαθών ίσως να έχει να κάνει με ξαναγράψιμο και επανέλεγχο
των modules των χαμηλότερων επιπέδων του συστήματος.
142
Επαλήθευση και Επικύρωση
Ι2(Ρ 1) Ρ1
Ρ2
Ι3(Ρ 1)
Ρ3
Ρ5
Ι1 (Ρ3)
Ο1 (Ρ5)
Ρ4
Ο1 (Ρ4)
Ο2 (Ρ4)
Ο έλεγχος thread είναι μια στρατηγική ελέγχου που ακολουθεί ξεχωριστό έλεγχο
διαδικασιών. Η επεξεργασία κάθε εξωτερικού γεγονότος προκαλεί την εκτέλεση
κάποιου/-ων νήματος/-ων (thread) εντολών μέσα στις διάφορες διαδικασίες του
συστήματος. Το «thread testing» αφορά αναγνώριση και εκτέλεση κάθε πιθανού
143
Επαλήθευση και Επικύρωση
thread. Φυσικά, ολοκληρωμένος thread έλεγχος μπορεί να είναι αδύνατος λόγω του
πλήθους των πιθανών συνδυασμών εισόδων και εξόδων. Σε αυτές τις περιπτώσεις
πρέπει να αναγνωριστούν και να συλλεγούν για έλεγχο, τα πιο πιθανά threads.
Ένα πιθανό thread παρουσιάζεται στο σχήμα 9.11, όπου μία είσοδος
μετασχηματίζεται μέσω μίας σειράς διαδοχικών διαδικασιών με σκοπό να
δημιουργήσει μία έξοδο.
Ι1 (Ρ3) Ο1 (Ρ4)
Ρ3 Ρ2 Ρ4
Μετά τον έλεγχο κάθε thread με ένα απλό γεγονός, μπορεί να ελεγχθεί η επεξεργασία
πολλαπλών γεγονότων της ίδιας κατηγορίας μόνο, δηλ. χωρίς γεγονότα από άλλες
κατηγορία. Π.χ. ένα σύστημα πολλαπλών χρηστών μπορεί αρχικά να ελεγθεί
χρησιμοποιώντας ένα τερματικό και στην συνέχεια να εισαχθεί βαθμιαία έλεγχος
πολλών τερματικών. Στο παραπάνω μοντέλο, αυτός ο τύπος ελέγχου μπορεί να αφορά
επεξεργασία όλων των εισόδων σε διαδικασίες με πολλαπλές εισόδους. Το σχήμα
9.12 δείχνει ένα παράδειγμα τέτοιας διαδικασίας όπου χρησιμοποιούνται τρεις
είσοδοι στην ίδια διαδικασίας σαν δεδομένα ελέγχου.
Ι1 (Ρ 1)
Ι2 (Ρ 1) Ο 1 (Ρ5)
Ρ1 Ρ2 Ρ5
Ι3 (Ρ 1)
Ι1 (Ρ 1) Ι1 (Ρ 2)
Ι2 (Ρ 1) Ο 1 (Ρ5)
Ρ1 Ρ2 Ρ5
Ι3 (Ρ 1)
Ο 2 (Ρ 4)
Ρ4
Αφού έχει ελεγχθεί η αντίδραση του συστήματος σε κάθε μία κατηγορία γεγονότων,
μπορεί να ελεγθεί για τις αντιδράσεις του σε περισσότερες από μία κατηγορίες από
ταυτόχρονα γεγονότα. Σ'αυτό το στάδιο πρέπει βαθμιαία να εισαχθούν νέα τεστ έτσι
ώστε να μπορούν να εντοπιστούν τα λάθη του συστήματος. Στο παραπάνω μοντέλο
αυτό μπορεί να ελεγχθεί όπως φαίνεται στο σχήμα 9.13.
144
Επαλήθευση και Επικύρωση
Ο stress έλεγχος συνεχίζει αυτά τα τεστ πέρα από το μέγιστο σχεδιασμένο φορτίο του
συστήματος. Η φόρτωση αυξάνεται σταθερά μέχρι το σύστημα να καταρρεύσει. Αυτό
το είδος του ελέγχου έχει μια διπλή λειτουργικότητα:
Πιέζει το σύστημα και ίσως προκαλέσει να έρθουν στο φως ατέλειες οι οποίες
φυσιολογικά δεν θα ενεφανίζοντο. Αν και μπορεί κάποιος να ισχυρισθεί ότι αυτές
οι ατέλειες είναι απίθανο να προκαλέσουν αποτυχία του συστήματος σε κανονική
χρήση, πιθανά να υπάρξουν ασυνήθιστοι συνδυασμοί από φυσιολογικά συμβάντα.
Γι’ αυτό λοιπόν είναι απαραίτητος ο stress έλεγχος.
145
Επαλήθευση και Επικύρωση
ΚΥΡΙΑ ΣΗΜΕΙΑ
Ο έλεγχος μπορεί μόνο να αναδείξει την ύπαρξη των λαθών. Δεν μπορεί να
αποδείξει την απουσία τους.
ΒΙΒΛΙΟΓΡΑΦΙΑ
Myers, G.J. (1979). The art of software testing, John Wiley & Sons.
IEEE Software, 6 (3), May 1989.
Comm. ACM, 31 (6), June 1988.
146