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

Σχετικά έγγραφα
ΔΙΟΙΚΗΣΗ ΕΡΓΩΝ ΠΛΗΡΟΦΟΡΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ: ΘΕΩΡΙΑ ΚΑΙ ΜΕΛΕΤΗ ΠΕΡΙΠΤΩΣΗΣ

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

Εισαγωγή στην Τεχνολογία Λογισμικού

Τεχνολογία Λογισμικού

6. Διαχείριση Έργου. Έκδοση των φοιτητών

Διαδικασίες παραγωγής λογισμικού. Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΑΝΑΛΥΣΗ Rational Unified Process. Ιωάννης Σταμέλος Βάιος Κολοφωτιάς Πληροφορική

Μεθοδική Ανάπτυξη Δικτυακής Υποδομής. Παρουσίαση στην ημερίδα για Σύγχρονες τάσεις στις Τηλεπικοινωνίες και Τεχνολογίες Αιχμής

Μεθοδολογίες Παραγωγής Λογισµικού

Πληροφοριακά Συστήματα Διοίκησης. Διοικητική Επιστήμη και Λήψη Αποφάσεων

Διαχείριση έργων. Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση

ΕΝΙΑΙΟ ΠΛΑΙΣΙΟ ΠΡΟΓΡΑΜΜΑΤΟΣ ΣΠΟΥΔΩΝ

ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ

Τεχνολογία Λογισμικού & Ανάλυση Συστημάτων

Εκπαιδευτική Μονάδα 10.2: Εργαλεία χρονοπρογραμματισμού των δραστηριοτήτων.

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

Τεχνολογία Λογισµικού Ι Κεφάλαια 1-21

Agile Προσέγγιση στη Διαχείριση Έργων Λογισμικού

Τεχνολογία Λογισμικού

Ανάπτυξη πληροφοριακών συστημάτων

Διαδικασίες παραγωγής λογισμικού. I. Sommerville 2006 Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση Κεφ. 4

Διαδικασίες παραγωγής λογισμικού. Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση

Σημειώσεις στο μάθημα «Στοιχεία Προγραμματισμού σε Γραφικό Περιβάλλον»

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

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

Διαχείριση Έργων. Ενότητα 7: Εκτέλεση, παρακολούθηση και έλεγχος έργου

ΣΧΕΔΙΑΣΗ & ΑΝΑΠΤΥΞΗ ΛΟΓΙΣΜΙΚΟΥ

Εισαγωγή στην Τεχνολογία Λογισµικού

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

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

Πληροφοριακό έντυπο διαχείριση κινδύνων υγείας και ασφάλειας στο χώρο εργασίας

Εισαγωγή στην Τεχνολογία Λογισµικού

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

Σκοπός του μαθήματος

Α.Ε.Ι. Πειραιά Τ.Τ. Τμήμα Μηχανικών Αυτοματισμού Τ.Ε. Διαχείριση Έργων Αυτοματισμού και Πληροφορικής

ίκτυα και Internet στο Επιχειρηματικό Περιβάλλον

ΚΕΦΑΛΑΙΟ 2 ΜΟΝΤΕΛΑ ΚΥΚΛΟΥ ΖΩΗΣ ΛΟΓΙΣΜΙΚΟΥ. Σκοπός. Έννοιες-κλειδιά

Εισαγωγή στην Τεχνολογία Λογισµικού

ΕΝΟΤΗΤΑ 1. ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΔΙΑΧΕΙΡΙΣΗ ΕΡΓΟΥ - ΙΣΤΟΡΙΑ. Κατερίνα Αδάμ, Μ. Sc., PhD Eπίκουρος Καθηγήτρια

Η συμβολή στην επιτυχία ενός οργανισμού, παρουσιάζοντας σχετικά δεδομένα με τη χρήση τεχνικών 2Δ ή 3Δ τεχνολογίας. Αρμοδιότητα

Μέθοδος : έρευνα και πειραματισμός

Εισαγωγή στη Σχεδίαση Λογισμικού

Τεχνολογία Λογισμικού

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

ΔΙΕΚ ΜΥΤΙΛΗΝΗΣ ΤΕΧΝΙΚΟΣ ΜΗΧΑΝΟΓΡΑΦΗΜΕΝΟΥ ΛΟΓΙΣΤΗΡΙΟΥ Γ ΕΞΑΜΗΝΟ ΜΑΘΗΜΑ: ΛΟΓΙΣΤΙΚΗ ΚΟΣΤΟΥΣ Ι ΜΑΘΗΜΑ 2 ο

Αρχιτεκτονική Λογισμικού

Πίνακας Περιεχομένων. μέρος A 1 Εισαγωγή στην Τεχνολογία Λογισμικού

Διαδικασίες παραγωγής λογισμικού. I. Sommerville 2006 Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση Κεφ. 4

Κεφάλαιο 2: Έννοιες και Ορισμοί

Απελευθερώστε τη δυναμική της επιχείρησής σας

DeSqual Ενότητες κατάρτισης 1. Ενδυνάμωση των εξυπηρετούμενων

Εισαγωγή, Βασικές Έννοιες, Οφέλη και Κίνδυνοι

Αναδιοργάνωση στους Οργανισμούς

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

Σχεδιαστής Ιστοσελίδων

Περιεχόµενα. Πληροφοριακά Συστήµατα: Κατηγορίες και Κύκλος Ζωής. Π.Σ. ιαχείρισης Πράξεων. Π.Σ. ιοίκησης. Κατηγορίες Π.Σ. Ο κύκλος ζωής Π.Σ.

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

ΣΧΕΔΙΑΣΜΟΣ & ΑΝΑΠΤΥΞΗ ΠΡΟΪΟΝΤΟΣ

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

Agile Προσέγγιση στη Διαχείριση Έργων Λογισμικού

Το κείμενο που ακολουθεί αποτελεί επεξεργασία του πρωτότυπου κειμένου του Α. Κάστωρ για την επίλυση των παραδειγμάτων κρίσιμης αλυσίδας που

Χαιρετισμός του Ειδικού Γραμματέα για την Κοινωνία της Πληροφορίας Καθ. Β. Ασημακόπουλου. στο HP day

Π3.1 ΣΧΕΔΙΟ ΑΞΙΟΛΟΓΗΣΗΣ

«ΕΥΕΛΙΚΤΟ ERP. ΥΛΟΠΟΙΗΣΗ ΕΝΟΣ ΜΙΚΡΟΥ ΣΥΣΤΗΜΑΤΟΣ ERP»

Στρατηγική Αξιολόγησης κατά την Υλοποίηση Εκπαιδευτικού Λογισμικού

ΟΔΗΓΙΕΣ ΓΙΑ ΤΟ BUSINESS PLAN

Διαχείριση Έργων Πληροφορικής

2.2 Οργάνωση και ιοίκηση (Μάνατζµεντ -Management) Βασικές έννοιες Ιστορική εξέλιξη τον µάνατζµεντ.

Ποιότητα και Πρότυπα στη Διοίκηση Επιχειρήσεων Συστήµατα Διασφάλισης Ποιότητας ISO Διεργασιακή Προσέγγιση Διάλεξη 3

Εισαγωγή στην τεχνολογία λογισμικού. I. Sommerville 2006 Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση Κεφ. 1

Εκπόνηση σχεδίων. 1a. Διαδικασία Εκκίνησης (Project Initiation) Επιχειρηματικό σχέδιο έργου (Project Business Case)

ΔΙΟΙΚΗΣΗ ΕΠΙΚΟΙΝΩΝΙΑΣ ΔΗΜΟΣΙΩΝ ΣΧΕΣΕΩΝ. Public Relations Management

Διαχείριση έργων. Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση

Διαφάνεια Μέρος 3 Υλοποίηση. Κεφάλαιο 10 Διαχείριση αλλαγών

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

Εκπαιδευτική Μονάδα 1.1: Τεχνικές δεξιότητες και προσόντα

ΕΠΙΚΟΙΝΩΝΙΑΚΗ ΔΙΑΧΕΙΡΙΣΗ ΚΡΙΣΕΩΝ. Communications Crisis Management

Γ Γυμνασίου: Οδηγίες Γραπτής Εργασίας και Σεμιναρίων. Επιμέλεια Καραβλίδης Αλέξανδρος. Πίνακας περιεχομένων

Φάση 3: Λεπτομερής Σχεδιασμός

ΤΕΙ ΛΑΡΙΣΑΣ - ΛΑΜΙΑΣ. Ενθάρρυνση Επιχειρηματικών Δράσεων, Καινοτομικών Εφαρμογών και Μαθημάτων Επιλογής Φοιτητών ΤΕΙ Λάρισας - Λαμίας PLEASE ENTER

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

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

Προγραμματισμός και στρατηγική διοίκηση. 4 ο Κεφάλαιο

ΔΙΑΧΕΙΡΙΣΗ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΚΑΙΝΟΤΟΜΙΑΣ ΚΕΦΑΛΑΙΟ 8 ΕΠΙΧΕΙΡΗΜΑΤΙΚΗ ΚΑΙ ΤΕΧΝΟΛΟΓΙΚΗ ΣΤΡΑΤΗΓΙΚΗ

Εταιρείες Πληροφορικής και Τηλεπικοινωνιών

Ανάπτυξη & Σχεδίαση Λογισμικού (ΗΥ420)

Διοίκηση Παραγωγής και Υπηρεσιών

Ορισμός Ευκαιρίας. 2.Διαδικασία Αναγνώρισης Ευκαιρίας

ΕΙΔΙΚΗ ΕΠΙΣΤΗΜΟΝΙΚΗ ΕΠΙΤΡΟΠΗ ΘΕΜΑΤΩΝ ΤΥΠΟΠΟΙΗΣΗΣ, ΠΙΣΤΟΠΟΙΗΣΗΣ ΚΑΙ ΔΙΑΧΕΙΡΙΣΗΣ ΠΟΙΟΤΗΤΑΣ. Εισηγήτρια: Γκαβέλα Σταματία Δρ. Χημικός Μηχανικός ΕΜΠ

Κατασκευή Μαθησιακών Στόχων και Κριτηρίων Επιτυχίας: Αξιολόγηση για Μάθηση στην Πράξη

Δεύτερη Συνάντηση ΜΑΘΗΣΗ ΜΕΣΑ ΑΠΟ ΟΜΑΔΕΣ ΕΡΓΑΣΙΕΣ. Κάππας Σπυρίδων

ΠΕΡΙΓΡΑΜΜΑ ΜΑΘΗΜΑΤΟΣ

Τεχνολογία Λογισμικού

Στρατηγικό Σχεδιασµό Πληροφοριακών Συστηµάτων

9. Κάθε στρατηγική επιχειρηματική μονάδα αποφασίζει για την εταιρική στρατηγική που θα εφαρμόσει. α. Λάθος. β. Σωστό.

ΔΙΑΧΕΙΡΙΣΗ ΠΡΟΓΡΑΜΜΑΤΩΝ ΚΑΙ ΧΑΡΤΟΦΥΛΑΚΙΩΝ ΕΡΓΩΝ. Διάλεξη 1 η Εισαγωγικές έννοιες και ορισμοί Δημήτρης Τσέλιος

Τα Διδακτικά Σενάρια και οι Προδιαγραφές τους. του Σταύρου Κοκκαλίδη. Μαθηματικού

ΜΑΘΗΜΑ 2Σ6 01 ΕΡΓΑΣΤΗΡΙΟ ΧΩΡΟΤΑΞΙΚΟΥ ΣΧΕΔΙΑΣΜΟΥ

Αλληλεπίδραση Ανθρώπου- Υπολογιστή & Ευχρηστία

H Έννοια και η Φύση του Προγραμματισμού. Αθανασία Καρακίτσιου, PhD

Transcript:

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

2

ΠΙΝΑΚΑΣ ΠΕΡΙΕΧΟΜΕΝΩΝ Ευχαριστίες... 5 ΠΡΟΛΟΓΟΣ... 6 ΚΙΝΗΤΡΟ-ΧΡΗΣΙΜΟΤΗΤΑ-ΣΥΝΕΙΣΦΟΡΑ... 8 Περίληψη... 10 ΚΕΦΑΛΑΙΟ 1 : ΚΥΚΛΟΙ ΖΩΗΣ ΕΡΓΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ... 12 1.1 Εισαγωγή... 12 1.2 Φάσεις ανάπτυξης πληροφοριακών συστημάτων... 12 1.3 Το μοντέλο του καταρράκτη... 14 1.4 Το μοντέλο πρωτυποποίησης... 17 1.5 Το μοντέλο λειτουργικής επαύξησης... 19 1.6 Το σπειροειδές μοντέλο... 21 1.7 Το μοντέλο του πίδακα... 24 1.8 Σύγχρονα μοντέλα κύκλου ζωής λογισμικού... 26 ΚΕΦΑΛΑΙΟ 2: ΠΡΟΣΕΓΓΙΣΕΙΣ ΑΝΑΠΤΥΞΗΣ ΠΛΗΡΟΦΟΡΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ... 28 2.1 Εισαγωγή... 28 2.2 Ευέλικτες Μέθοδοι Ανάπτυξης (Agile Software Development)... 28 2.3 Extreme Programming... 33 2.4 Rational Unified Process... 36 2.5 Μεθοδολογία Scrum... 41 ΚΕΦΑΛΑΙΟ 3 : ΜΕΘΟΔΟΛΟΓΙΕΣ ΔΙΟΙΚΗΣΗΣ ΕΡΓΩΝ... 51 3.1 Εισαγωγή... 51 3.2 Prince2... 52 3.3 PMBOK... 57 3.4 Σύγκριση Prince2 και PMBOK... 61 ΚΕΦΑΛΑΙΟ 4 : ΧΡΟΝΟΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΕΡΓΩΝ... 63 4.1 Εισαγωγή... 63 4.2 Δομή Ανάλυσης Εργασιών... 63 4.3 Μέθοδοι χρονοπρογραμματισμού... 65 4.3.1 Δικτυακή Απεικόνιση ενός Έργου... 65 4.3.2 Ανάλυση PERT/CPM... 67 4.3.3 Χρονική Παρακολούθηση Έργων με το Διάγραμμα GANTT... 71 3

4.4 Εργαλεία διοίκησης έργων πληροφορικής... 73 4.4.1 GanttProject... 74 4.4.2 OmniPlan... 75 4.4.3 Open Workbench... 75 4.4.4 PertMaster... 75 4.4.5 PlanningForce... 76 4.4.6 Microsoft Project... 77 4.4.7 Achievo... 77 ΚΕΦΑΛΑΙΟ 5 : ΜΕΛΕΤΗ ΠΕΡΙΠΤΩΣΗΣ... 79 5.1 Εισαγωγή... 79 5.2 Σύντομη περιγραφή της επιχείρησης... 79 5.3 Πλαίσιο Εφαρμογής... 80 5.4 Εφαρμογή της PRINCE2 στη Διοίκηση Έργου Ανάπτυξης Τραπεζικού Συστήματος... 80 5.5 Μεθοδολογία Σχεδιασμού και Ανάπτυξης Τραπεζικού Συστήματος... 81 5.6 Προσέγγιση Υλοποίησης... 84 5.6.1 Στάδια έργου Ανάπτυξης του Συστήματος... 84 5.6.2 Λίστα δραστηριοτήτων και εργασιών... 85 5.7 Παραδοτέα Έργου... 102 5.7.1 Έγγραφο Καθορισμού Συστήματος (SSD)... 103 5.7.2 Έγγραφο Σχεδιασμού Συστήματος (SDD)... 104 5.7.3 Εγχειρίδιο Διαχειριστή του Συστήματος (SΑΜ)... 105 5.7.4 Εγχειρίδια Λειτουργίας (SOΜ)... 106 5.7.5 Έγγραφα Ελέγχου Αποδοχής (AΤ)... 106 ΚΕΦΑΛΑΙΟ 6 : ΣΥΜΠΕΡΑΣΜΑΤΑ - ΜΕΛΛΟΝΤΙΚΕΣ ΕΠΕΚΤΑΣΕΙΣ... 108 Μελλοντικές Επεκτάσεις... 110 Αναφορές... 111 4

Ευχαριστίες Η δίψα για γνώση είναι το κύριο κίνητρο για τον πνευματικό και όχι μόνο, μόχθο των ανθρώπων. Απώτερος σκοπός της εκπόνησης μιας διπλωματικής εργασίας είναι η απόκτηση γνώσης. Πρέπει όμως να σημειωθεί πως ένα πολύ μεγάλο μέρος των επιτευγμάτων της εργασίας αυτής δεν θα είχε υπόσταση χωρίς τη βοήθεια συγκεκριμένων ανθρώπων. Ανθρώπων υπεύθυνων και ευσυνείδητων που δεν δίστασαν να προσφέρουν τον προσωπικό τους χρόνο και την εργασία τους, προκειμένου να ανταποκριθούν στις απαιτήσεις μου όπως και της εργασίας άμεσα και έγκαιρα. Η αναφορά των ονομάτων τους και του έργου τους αποτελεί το ελάχιστο ευχαριστώ προς το πρόσωπό τους. Θα ήθελα να ευχαριστήσω τον επιβλέποντα Καθηγητή μου κ. Παυλίδη Γεώργιο, ο οποίος με τίμησε με την συνεργασία του και μου έδωσε την ευκαιρία να ασχοληθώ με ένα τόσο ενδιαφέρον αντικείμενο, όπως αυτό της διαχείρισης των έργων. Οι ουσιώδεις υποδείξεις του και η γενικότερη εποικοδομητική συνεργασία μας, οδήγησαν στην επίτευξη του επιθυμητού επιπέδου υλοποίησης και συγγραφής. Ακόμη θα ήθελα να ευχαριστήσω τον κ. Αθανάσιο Τσακαλίδη και τον κ. Χρήστο Μακρή, για την τιμή που μου έκαναν να είναι μέλη της Τριμελούς Επιτροπής. Επίσης δεν πρέπει να παραβλέψω να ευχαριστήσω τους γονείς μου, τον αδερφό μου και τους φίλους μου για την υποστήριξη τους κατά την διάρκεια εκπόνησης αυτής της διπλωματικής και όχι μόνο._ Γιώργος Ανύσιος Δεκέμβριος 2016 5

ΠΡΟΛΟΓΟΣ Η επιστημονική διαχείριση των έργων αντλεί γνώσεις και τεχνικές από πολλά επιστημονικά πεδία. Προϋποθέτει χρονικό προγραμματισμό με βάση την θεωρία δικτύων, μαθηματικό (γραμμικό ή μη) προγραμματισμό, επεξεργασία δεδομένων, θεωρία προτύπων και συστημάτων, ανάλυση κόστους-οφέλους, μεθόδους επιλογής εναλλακτικών λύσεων, θεωρία αποφάσεων και παιγνίων, τεχνικές ελέγχου, διαχείριση κινδύνου (risk) και επιπλέον εξειδικευμένες γνώσεις, ανάλογα με τη φύση του κάθε έργου. Ωστόσο, δεν αποτελεί απλά ένα άθροισμα όλων αυτών. Η επιστημονική διαχείριση απαιτεί επιπλέον την διαδικασία σύνθεσης/ολοκλήρωσης όλων όσων πρέπει να γίνουν ώστε να υλοποιηθούν οι στόχοι του έργου. Η ιστορική εξέλιξη του πολιτισμού και της ανθρώπινης κοινωνίας είναι συνυφασμένη με την υλοποίηση έργων, δηλαδή εγχειρημάτων κατά τα οποία ανθρώπινοι και οικονομικοί πόροι οργανώνονται ώστε να παραχθεί συγκεκριμένο μετρήσιμο επωφελές αποτέλεσμα, τέτοιο ώστε η κατάσταση (της κοινωνικής πραγματικότητας) μετά το πέρας του έργου να έχει σαφή διαφορά από την κατάσταση κατά την έναρξη του έργου. Ανεξάρτητα από το είδος του έργου (έργο πληροφορικής, υποδομής, ερευνητικό, στρατιωτική επιχείρηση, τραπεζικές διαδικασίες ή οτιδήποτε άλλη επιχειρηματική δραστηριότητα), η μεθοδική οργάνωση της υλοποίησής του, καθώς και ο συντονισμός της διαχείρισης του έργου, είναι αναγκαία προϋπόθεση για την επιτυχία του εγχειρήματος. Στο σημερινό περίπλοκο κόσμο όπου ζούμε, η ικανότητα να διευθύνει και να οδηγεί κανείς τους άλλους είναι μία από τις βασικότερες δεξιότητες που έχει να επιδείξει ο άνθρωπος. Η ικανότητα αυτή είναι ζωτικής σημασίας για την περαιτέρω πρόοδο των ήδη αναπτυγμένων χωρών και αποτελεί απαραίτητο στοιχείο προκειμένου να υλοποιηθούν οι φιλοδοξίες των αναπτυσσόμενων χωρών. Στις μέρες μας, η ραγδαίως μεταβαλλόμενη τεχνολογία, ο σκληρός ανταγωνισμός στην διεθνή αγορά για διασφάλιση μεριδίου, η στενότητα των διαθέσιμων πόρων, η επιρροή που ασκούν ισχυρές ομάδες πίεσης, η αστάθεια των οικονομικών συνθηκών-παραμέτρων, έχουν υποχρεώσει τις επιχειρήσεις να αλλάξουν τα συστήματα διοίκησης που χρησιμοποιούσαν. Στον αγώνα για επιβίωση που χαρακτηρίζει τη σύγχρονη αγορά, η επιστημονική διαχείριση έργων φαίνεται να προσφέρει πραγματικές λύσεις στα προβλήματα που δημιουργούνται. Αν και οι πρώτες σύγχρονες τεχνικές εμφανίστηκαν στις αρχές του 20 ου αιώνα, η επιστήμη της διαχείρισης των έργων αναπτύχθηκε ουσιαστικά κατά τη διάρκεια του Β Παγκοσμίου πολέμου και μετά. Ένα νέο επιστημονικό πεδίο εμφανίζεται δυναμικά, η διοίκηση και η διαχείριση έργων (Project Management), το αντικείμενο του οποίου επικεντρώνεται στην ανάπτυξη και εφαρμογή επιστημονικών μεθόδων, εργαλείων και μεθοδολογιών στην διοίκηση έργων. Η Διοίκηση Έργου 6

έχει συνδεθεί περισσότερο με την μελέτη και εκτέλεση κατασκευαστικών έργων ή την εγκατάσταση λογισμικών συστημάτων. Στον τομέα των παραγωγικών διαδικασιών ισχύουν και εφαρμόζονται οι κανόνες και πρακτικές της Διοίκησης Λειτουργιών. Για την αποτελεσματικότητα και παρακολούθηση των έργων αυτών χρησιμοποιούνται ορισμένα λογισμικά, όπως το Ms Project, το Primavera και άλλα. 7

ΚΙΝΗΤΡΟ-ΧΡΗΣΙΜΟΤΗΤΑ-ΣΥΝΕΙΣΦΟΡΑ Στο σημερινό ανταγωνιστικό επιχειρηματικό τοπίο, όπου οι επιχειρήσεις κινούνται με πολύ γρήγορο κι επιθετικό ρυθμό, είναι φυσικό να συμπιέζεται και ο κύκλος ζωής των έργων. Η έμφαση που δίνεται στην ταχύτητα αναγκάζει τους διευθυντές και τις ομάδες έργων να προβαίνουν σε γρήγορες αποφάσεις μέσα σε ένα περιβάλλον αβεβαιότητας και ελλιπούς πληροφόρησης. Η λήψη των σωστών αποφάσεων γίνεται ακόμα δύσκολη σε έργα που διακρίνονται από εγγενή αβεβαιότητα, με ασαφείς ή συχνά μεταβαλλόμενες προδιαγραφές, και που μέχρι την επιτυχή ολοκλήρωσή τους εξερευνούν πολλά διαφορετικά μονοπάτια και περνάνε από πολλά κομβικά σημεία αποφάσεων και επαναλήψεων. Είναι αλήθεια ότι πολλές από τις κοινές πρακτικές και τα εργαλεία της Διοίκησης των Έργων είναι κατάλληλα για μεγάλα έργα με κάλα προσδιορισμένες προδιαγραφές και με σχετικά αργούς ρυθμούς εξέλιξης. Ωστόσο, οι ίδιες τεχνικές διοίκησης έργων έχουν διεισδύσει και σε πολλές μεσαίες και μικρές επιχείρήσεις και χρησιμοποπιούνται σε όλες τις κατηγορίες έργων [41]. Η διοίκηση συνυπάρχει με τα έργα από την πρώτη φορά που οι άνθρωποι προσπάθησαν να πετύχουν «κάτι» - εποχή που ήταν πολύ πριν τους ιστορικούς χρόνους [42]. Αρχικά, ο κάθε υπεύθυνος υλοποίησης ενός στόχου ακολουθούσε τις δικές του εμπειρικές ή ιδιογκρασιακές μεθόδους με σκοπό να σχεδιάσει τις απαιτούμενες ενέργειες που έπρεπε να κάνει καθώς και να βρεί τρόπους για να οργανώσει και να ελέγξει την υλοποίηση τους. Η πρώτη συστηματική προσπάθεια επίτευξης καλύτερου αποτελέσματος μέσω οργάνωσης της παραγωγικής διαδικασίας έγινε τον 19 ο αιώνα σε ένα εργοστάσιο χυτοσίδηρου των Ηνωμένων Πολιτειών Αμερικής. Στα χρόνια που ακολούθησαν και εξαιτίας έργων της εποχής εκείνης (σιδηροδρομικό δίκτυο, πρώτοι ουρανοξύστες) έγιναν διάφορες άλλες σχετικές μελέτες κυρίως στις Ηνωμένες Πολιτείες και κυρίως από μηχανικούς. Όλα τα παραπάνω συντέλεσαν στη διαμόρφωση της αντίληψης πως η σπουδαιότητα της διοίκησης έργου έγκειται στην οικονομικότερη παραγωγή έργων των οποίων η μετέπειτα εκμετάλλευση αποσβένει το κόστος δημιουργίας τους και παράγει «νέο πλούτο». Ο νέος αυτός «πλούτος» είναι και το βασικό κίνητρο πίσω από τη μελέτη, ενασχόληση, δημιουργία και τέλος πλήρους αποδοχής σήμερα της όλης γνωστικής περιοχής της διοίκησης έργου (Παντουβάκης, 2003). Καθώς οι οργανισμοί συνειδητοποίησαν τη συνεισφορά της διοίκησης έργου στην επιτυχία τους, τη μετέτραψαν σε εστιακό σημείο των προσπαθειών βελτίωσής τους. Όλο και περισσότεροι οργανισμοί είδαν στην διοίκηση έργου μια στρατιγική-κλειδί στον αγώνα τους για διατήρηση της ανταγωνιστικότητάς τους στο σύγχροο, εξαιρετικά ανταγωνιστικό επιχειριματικό περιβάλλον [43]. 8

Από το 1990 ο επιχειρισιακός κόσμος άρχισε να ωριμάζει και στην πλειοψηφία τους πλέον οι οργανισμοί, συμπεριλαμβάνοντας τόσο τις καθοδηγούμενες από έργα εταιρίες (αυτές των οποίων οι λειτουργίες αποτελούνται κυρίως από έργα), όσο και αυτές που δεν καθοδηγούνται από έργα, εφαρμόζουν τις αρχές της διοίκησης έργου [43]. Η διοίκηση έργου είναι πλέον μια καθολική διαδικασία, εφαρμόσιμη και απαραίτητη σε κάθε έργο ανεξαρτήτως κατηγορίας (κατασκευαστικο, πληροφορικής, τηλεπικοινωνιών, ανάπτυξης νέου προιόντος, αναδιοργάνωσης), μεγέθους (απλό έργο ή πολύπλοκο) και φορέα (ιδιωτικού, δημόσιου τομέα ή ακόμη και μη κυβερνητικών οργανώσεων ή φιλανθρωπικών οργανισμών). Η επιστήμη της διοίκησης έργου έχει περάσει από πολλά στάδια. Γνωστή εδώ και αιώνες, μόλις τα τελευταία σαράντα χρόνια καθιερώνεται στον επιστημονικό κόσμο και ενώ αρχικά χρησιμοποιείται με σκοπό απλά και μόνον για να ολοκληρωθούν οι εργασίες μετατρέπεται από εκτελεστική διαδικασία σε μηχανισμό εξοικονόμησης για την εταιρεία που την εφαρμόζει. Αντέχοντας τις πιέσεις και τις έντονες αντιδράσεις από τους μετέχοντες σε μια επιχειρηματική διαδικασία, εξελίσσεται σε κύρια συνιστώσα για τη διατήρηση της πλεονεκτικής, ανταγωνιστικής θέσης της εταιρείας για να αποτελέσει σήμερα αναπόσπαστο κομμάτι της λειτουργίας της εταιρείας και να καταστεί συνώνυμο της επιβίωσής της [43]. Η αποδοτική και αποτελεσματική διοίκηση του έργου δεν μπορεί να επιτευχθεί χωρίς μια υγιή μεθοδολογία που στηρίζεται σε ποιοτικά θεμέλια, ξεκάθαρες διαδικασίες και τη δυνατότητα του διευθυντή του έργου να οδηγεί και να παρακινεί τους ανθρώπους. Οι μέθοδοι και τεχνικές διαχείρισης του έργου σχεδιάζονται για να βοηθήσουν τους διευθυντές του προγράμματος, στην αντιμετώπιση των σχετικών με το έργο προκλήσεων, μέσω της παροχής οδηγιών σχετικά με την εφαρμογή των τεχνικών διαχείρισης σε ένα πλαίσιο που αναγνωρίζει τις αλληλεπιδράσεις μεταξύ του έργου και του εκάστοτε οργανωτικού περιβάλλοντος. Η μεθοδολογία διαχείρισης του έργου αποτελεί μια απαραίτητη, πειθαρχημένη, δομημένη προσέγγιση στη διαχείριση των προγραμμάτων. Εμπλέκεται σε όλες τις φάσεις διαχείρισης του έργου, από τη σύλληψη έως την ολοκλήρωση. Οι μεθοδολογίες διαχείρισης του έργου ενσωματώνουν τον σκοπό, την ποιότητα, το χρόνο, τις δαπάνες, τον κίνδυνο, το ανθρώπινο δυναμικό, τη σύμβαση, και τη διαχείριση της επικοινωνίας. Η συνεισφορά της διοίκησης των έργων στους οργανισμούς έγκειται στην βελτιωμένη επικοινωνία μεταξύ των συμμετεχόντων στο έργο, την αυξημένη κατανόηση του έργου και του σκοπού του, την δυνατότητα ορισμού και ελέγχου του εύρους του έργου, την δυνατότητα προσδιορισμού, εποπτείας και παρακολούθησης των οροσήμων, την ακριβή πρόβλεψη των απαιτήσεων σε πόρους, στον προσδιορισμό των προβληματικών περιοχών και στην αποσαφήνιση και ευθυγράμμιση με τους στόχους του οργανισμού. Οι εσφαλμένες αντιλήψεις του παρελθόντος έχουν πια ξεπεραστεί, δίνοντας τη θέση τους σε σύγχρονες θεωρήσεις που αποδεικνύουν τη σπουδαιότητα της διοίκησης έργου. 9

Περίληψη Ένας από τους τομείς που παρουσιάζει ιδιαίτερο ενδιαφέρον στον κλάδο της Πληροφορικής είναι αυτός της Διοίκησης Έργων Ανάπτυξης Πληροφοριακών συστημάτων. Τόσο για τη διοίκηση όσο και για την ανάπτυξη πληροφοριακών συστημάτων, έχουν αναπτυχθεί πλήθος μεθοδολογιών, προτύπων και εργαλείων που μπορούν να εφαρμοστούν αναλόγως. Στην παρούσα εργασία γίνεται μια κριτική ανάλυση των σημαντικότερων μεθοδολογιών διοίκησης έργων πληροφοριακών συστημάτων, παρουσιάζονται τα βασικότερα χαρακτηριστικά τους και εντοπίζονται τα σημεία στα οποία διαφοροποιούνται. Έχοντας σχηματίσει το θεωρητικό υπόβαθρο, η παρούσα διπλωματική εργασία ολοκληρώνεται με τη μελέτη περίπτωσης από τον τραπεζικό χώρο που αφορά την ανάπτυξη και εφαρμογή Ολοκληρωμένου Συστήματος Τραπεζικών Συναλλαγών (Core Banking) κατά την ανάπτυξη του οποίου χρησιμοποιήθηκε η μεθοδολογία PRINCE2 ως μέθοδος διοίκησης του έργου. Πιο συγκεκριμένα η παρούσα διπλωματική είναι δομημένη από πέντε κεφάλαια. Αρχικά αναφέρεται στον κύκλο ζωής του λογισμικού. Περιγράφει τις φάσεις από τις οποίες διέρχεται μια εφαρμογή λογισμικού από την σύλληψή της, κατά την κατασκευή, χρήση, συντήρησή της μέχρι την απόσυρσή της. Στη συνέχεια γίνεται αναφορά σε χαρακτηριστικά μοντέλα κύκλου ζωής λογισμικού όπως : το μοντέλο του καταρράκτη, το μοντέλο πρωτοτυποποίησης, το μοντέλο λειτουργικής επαύξησης, το σπειροειδές μοντέλο, το μοντέλο του πίδακα και τέλος γίνεται αναφορά σε ένα γενικό μοντέλο κύκλου ζωής. Γίνεται μια περιγραφή των ευέλικτων μεθόδων ανάπτυξης πληροφοριακών συστημάτων. Ευελιξία στον προγραμματισμό είναι η ικανότητα της προσαρμογής και επαναπροσδιορισμού ενός αναπτυσσόμενου και συνεχώς εξελισσόμενου συστήματος στην περίπτωση που εμφανίζονται αλλαγές στις αρχικές θεωρήσεις και παραδοχές. Οι ευέλικτες μέθοδοι είναι επαναληπτικές, αυξητικές, αυτό-διοργανούμενες και προκύπτουσες. Επίσης αναφέρονται οι φάσεις διαχείρισης έργου μιας ευέλικτης μεθοδολογίας καθώς και τα χαρακτηριστικά και η αρχιτεκτονική της. Επιπλέον γίνεται αναλυτική αναφορά στις ευέλικτες μεθοδολογίες, του ακραίου προγραμματισμού (Extreme Programming), της Rational Unified Process καθώς και της μεθοδολογίας SCRUM. Στην συνέχεια εξηγείται πως απώτερος στόχος της διοίκησης έργου είναι η μεγιστοποίηση της πιθανότητας δημιουργίας μιας αλυσίδας από επιτυχημένα διοικούμενα έργα, γεγονός που θα οδηγήσει τελικά σε ένα διατηρήσιμο πλεονέκτημα. Ο καλύτερος τρόπος για να συμβεί αυτό είναι μέσω μιας μεθοδολογίας διοίκησης έργου. Αφότου γίνει ανάλυση της μεθοδολογίας έργου έπειτα παρουσιάζονται οι μεθοδολογίες διοίκησης έργων Prince2 που αποτελεί μετεξέλιξη της Prince που είναι μια δομημένη μέθοδος με σκοπό την αποτελεσματική διοργάνωση ενός μεγάλου γεγονότος και της PMBOK ή αλλιώς Project Body of Knowledge που είναι μια συλλογή από διαδικασίες και γνωστικές περιοχές, που θεωρούνται ως οι πλέον καλύτερες τεχνικές για τη διοίκηση και παρέχεται μια σύγκριση αυτών των δυο. Το επόμενο μέρος της διπλωματικής αναφέρεται στον χρονοπρογραμματισμό των έργων. Μόλις ολοκληρωθεί η φάση έναρξης του έργου, η ομάδα έργου, συνήθως ο διαχειριστής του έργου και οι αναλυτές στα πρώτα στάδια, πρέπει να καθορίσουν την προσπάθεια που πρέπει να 10

καταβληθεί για να ολοκληρωθούν οι απαραίτητες εργασίες. Γίνεται αναφορά στις τρείς βασικές μεθοδολογίες που έχουν αναπτυχθεί για τον χρονοπρογραμματισμό : της PERT (Project Evaluation & Review Technique) : Μεθοδολογία αξιολόγησης και παρακολούθησης έργου, Critical Path Method: Μέθοδος Κρίσιμης Διαδρομής και των Διαγραμμάτων GANTT, οι οποίες χρησιμοποιούν γραφήματα απεικόνισης διαφόρων τύπων. Επίσης γίνεται ανάλυση της δομής των εργασιών που αποτελεί μια ιεραρχική αποσύνθεση ή ανάλυση του έργου ή μιας σημαντικής δραστηριότητας σε μεγάλα διαδοχικά βήματα-επίπεδα, όπου κάθε βήμα-επίπεδο είναι μικρότερο του προηγούμενου και γίνεται ανάλυση των φάσεων της. Επιπλέον γίνεται αναφορά σε κάποια βασικά εργαλεία διοίκησης έργων πληροφορικής. Τέλος μελετάται ένα πραγματικό σενάριο διοίκησης ενός έργου ανάπτυξης ενός συστήματος Διαχείρισης και Αξιολόγησης Προμηθευτών (ΣΔΑΠ) που υλοποιήθηκε από μεγάλο τραπεζικό όμιλο και συγκεκριμένα της τράπεζας Alpha Bank με σκοπό τη διαχείριση και αξιολόγηση των προμηθευτών του ομίλου. 11

ΚΕΦΑΛΑΙΟ 1 : ΚΥΚΛΟΙ ΖΩΗΣ ΕΡΓΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ 1.1 Εισαγωγή Με τον όρο μεθοδολογία ανάπτυξης πληροφοριακού συστήματος αναφερόμαστε στο πλαίσιο που χρησιμοποιείται για να δομηθεί, να σχεδιασθεί και να ελεγχθεί η διαδικασία της ανάπτυξης ενός πληροφοριακού συστήματος. Κάθε μεθοδολογία έχει τα δικά της πλεονεκτήματα και μειονεκτήματα και χρησιμοποιείται ανάλογα με το είδος του έργου. Η χρήση της ίδιας μεθοδολογίας δεν είναι κατάλληλη για όλα τα έργα. Η επιλογή της εκάστοτε μεθοδολογίας γίνεται με βάση τεχνικών και οργανωτικών εκτιμήσεων. Ο κύκλος ανάπτυξης ενός πληροφορικού συστήματος είναι μια μεθοδολογία που χρησιμοποιείται για να περιγράψει τη διαδικασία για τη δημιουργία πληροφοριακών συστημάτων, που σκοπό έχει την ανάπτυξη πληροφοριακών συστημάτων με δομημένο και μεθοδικό τρόπο, με επανάληψη κάθε σταδίου του κύκλου ζωής. Ο κύκλος ζωής ανάπτυξης πληροφοριακών συστημάτων, σύμφωνα με τους Έλιοτ & Στράχαν & Radford (2004), «ξεκίνησε τη δεκαετία του 1960, για την ανάπτυξη μεγάλης κλίμακας λειτουργικών επιχειρησιακών συστημάτων. Οι δράσεις που περιλάμβαναν τα πληροφοριακά συστήματα επικεντρώθηκαν γύρω από την περιοχή της επεξεργασίας δεδομένων». Αρκετά πλαίσια ανάπτυξης πληροφοριακών συστημάτων βασίζονται εν μέρει στον κύκλο ζωής ανάπτυξης πληροφοριακών συστημάτων, όπως η δομημένη ανάλυση και μέθοδος σχεδιασμού συστημάτων (Structured Systems Analysis and Design Method) που σχεδιάστηκε για την κυβέρνηση του Ηνωμένου Βασιλείου Γραφείο Κυβερνητικού Εμπορίου στη δεκαετία του 1980. Από τότε, σύμφωνα με το Έλιοτ (2004), «οι παραδοσιακές προσεγγίσεις του κύκλου ζωής ανάπτυξης πληροφοριακών συστημάτων αντικαθίστανται με εναλλακτικές προσεγγίσεις, που ξεπερνούν τις εν γένει αδυναμίες του παραδοσιακού κύκλου ζωής πληροφοριακών συστημάτων». 1.2 Φάσεις ανάπτυξης πληροφοριακών συστημάτων Ο κύκλος ζωής ανάπτυξης πληροφοριακών συστημάτων παρέχει μια σειρά από δραστηριότητες που οι σχεδιαστές συστημάτων και οι προγραμματιστές πρέπει να 12

ακολουθήσουν. Αποτελείται από μια σειρά βημάτων ή φάσεων στα οποία κάθε φάση χρησιμοποιεί ως δεδομένα εισόδου τα αποτελέσματα της προηγουμένης. Κάθε εφαρμογή λογισμικού διέρχεται από τέτοιες φάσεις, σε καθεμιά εκ των οποίων πρέπει να γίνονται ορισμένες διεργασίες. Οι φάσεις που διέρχεται μια εφαρμογή λογισμικού είναι [2] : σύλληψη, κατασκευή, χρήση / συντήρηση και απόσυρση. Εικόνα 1 : Γενικές φάσεις του κύκλου ζωής του λογισμικού [48]. Ένα μοντέλο κύκλου ζωής λογισμικού είναι μια περιγραφή των δραστηριοτήτων και των επιμέρους φάσεων από τις οποίες διέρχεται μια εφαρμογή λογισμικού, καθώς των εργασιών που γίνονται σε καθεμιά από τις φάσεις αυτές. Τα μοντέλα κύκλου ζωής λογισμικού προσδιορίζουν τις διαδικασίες ανάπτυξης που γίνονται κατά τις φάσεις «κατασκευή» και «χρήση/ συντήρηση», που προσδιορίζουν τις επιμέρους φάσεις στις οποίες αυτές αναλύονται, τα προϊόντα που παράγονται σε καθεμιά από αυτές, όπως και τη σειρά εκτέλεσής τους. Σε κάθε διαδικασία ανάπτυξης λογισμικού μπορούμε να διακρίνουμε περισσότερες από μια επιμέρους φάσεις, ενώ σε κάθε επιμέρους φάση μπορούμε να ξεχωρίσουμε περισσότερες από μια εργασίες. Οι διαδικασίες ανάπτυξης λογισμικού μπορούν να ταξινομηθούν ως ακολούθως : προδιαγραφή, δηλαδή καθορισμός των εργασιών που θα επιτελεί το λογισμικό, καθώς και των περιορισμών και των παραδοχών που ισχύουν. Ανάπτυξη, δηλαδή κατασκευή του λογισμικού. Εδώ, σε όλα τα μοντέλα κύκλου ζωής μπορούμε να διακρίνουμε τρείς επιμέρους φάσεις : την ανάλυση, τη σχεδίαση και τη συγγραφή του πηγαίου κώδικα, την οποία στη συνέχεια θα ονομάζουμε και κωδικοποίηση. Επαλήθευση, δηλαδή επιβεβαίωση της ικανοποίησης των προδιαγραφών και της μη ύπαρξης σφαλμάτων. 13

Εξέλιξη, δηλαδή επαύξηση των λειτουργικών χαρακτηριστικών του λογισμικού ή τροποποίηση υπαρχουσών, προκειμένου να ικανοποιούνται οι μεταβαλλόμενες ανάγκες. Ένα μοντέλο κύκλου ζωής λογισμικού έχει στόχο την καθοδήγηση του κατασκευαστή με σκοπό αυτός να επιτύχει την καλύτερη δυνατή υλοποίηση των διαδικασιών ανάπτυξης λογισμικού. Τα παραπάνω μπορούν να διαφοροποιούνται ανάλογα με το μέγεθος και το θεματικό πεδίο εφαρμογής λογισμικού, με την εμπειρία και τα ιδιαίτερα χαρακτηριστικά του κάθε κατασκευαστή και, ασφαλώς, με το εκάστοτε περιβάλλον ανάπτυξης. Μια σημαντική παράμετρος που καταδεικνύει τη σημασία των μοντέλων κύκλου ζωής λογισμικού είναι το κόστος. Το κόστος αναθεώρησης αποφάσεων ή/και διόρθωσης σφαλμάτων είναι τόσο μεγαλύτερο, όσο μεγαλύτερη είναι και η απαιτούμενη οπισθοδρόμηση της διαδικασίας που αυτή συνεπάγεται. Το κόστος αυτό δεν αφορά μόνο οικονομικούς πόρους που αποδίδονται στο έργο, αλλά και το χρόνο καθυστέρησης, που δεν είναι πάντα διαθέσιμος σε πραγματικές συνθήκες. Επίσης, είναι συχνό φαινόμενο οι παρενέργειες στο υπόλοιπο σύστημα λογισμικού, οι οποίες μπορούν να μεταβάλλουν προς το χειρότερο τα ποιοτικά του χαρακτηριστικά και δεν εντοπίζονται εύκολα από την αρχή. Υπάρχουν αρκετά μοντέλα κύκλου ζωής λογισμικού, τα οποία διαφοροποιούνται ως προς τη σύλληψη της ιδέας του τρόπου κατασκευής, αλλά και ως προς τις επιμέρους φάσεις που προτείνουν, την επαναληπτικότητα και την εμβέλεια των εργασιών αυτών, τα ενδιάμεσα προϊόντα συστατικά λογισμικού και την περιγραφή τους, τις οικονομικές και επιχειρηματικές πλευρές της χρήσης τους κ.α. Καθεμιά από τις ενέργειες που περιγράφεται σε ένα μοντέλο κύκλου ζωής λογισμικού είναι μια διαδικασία επίλυσης προβλημάτων. 1.3 Το μοντέλο του καταρράκτη Ένα από τα πιο διαδεδομένα μοντέλα κύκλου ζωής λογισμικού είναι αυτό του καταρράκτη (Waterfall). Η κεντρική ιδέα του μοντέλου του καταρράκτη [7] είναι ότι η εφαρμογή αναπτύσσεται περνώντας από διαδοχικές επιμέρους φάσεις, καθεμιά από τις οποίες θεωρείται περατωμένη με την παραγωγή ορισμένων παραδοτέων. Κάθε επιμέρους φάση ολοκληρώνεται με μια εργασία επαλήθευσης / επικύρωσης των παραδοτέων της, κατά την οποία αποφασίζεται η μετάβαση ή όχι στην επόμενη φάση. Το λογισμικό εμφανίζεται πλήρες, δηλαδή με όλα τα λειτουργικά του χαρακτηριστικά, από την επιμέρους φάση συνένωσης και μετά. Χαρακτηριστικό του μοντέλου του καταρράκτη είναι ότι, για να ξεκινήσει μια φάση πρέπει να έχει ολοκληρωθεί πλήρως η προηγούμενη φάση. Η ανάπτυξη με αυτόν τον τρόπο χαρακτηρίζεται ως ακολουθιακή, επειδή οι επιμέρους φάσεις από τις οποίες διέρχεται είναι διακριτές και ακολουθούν η μια την άλλη. 14

Αρχικά καθορίζονται οι απαιτήσεις από το λογισμικό. Στη συνέχεια γίνεται η προκαταρκτική και η λεπτομερής σχεδίαση του λογισμικού, αντίστοιχα. Κατά την προκαταρκτική σχεδίαση καθορίζονται οι μονάδες που θα αποτελούν το λογισμικό, καθώς και οι συσχετίσεις μεταξύ τους. Ο καθορισμός αυτός μπορεί να συμβεί σε περισσότερα από ένα επίπεδα λεπτομέρειας, ανάλογα με το μέγεθος και την πολυπλοκότητα του λογισμικού. Κατά τη λεπτότερη σχεδίαση καθορίζεται η εσωτερική δομή της κάθε μονάδας λογισμικού, η οποία αντιστοιχεί στην πράξη σε μονάδες πηγαίου κώδικα προγράμματος. Ο καθορισμός αυτός περιλαμβάνει όλα τα απαραίτητα στοιχεία, ώστε η συγγραφή του πηγαίου κώδικα, που ακολουθεί, να είναι μια διαδικασία διεκπεραίωσης και μόνο. Ακολουθεί η συνένωση των μονάδων και ο έλεγχος ολόκληρου του συστήματος, η ολοκλήρωση του οποίου επιτρέπει την παράδοση ολόκληρου του προϊόντος στον πελάτη και το πέρασμα στη φάση της λειτουργίας και της συντήρησης. Το μοντέλο του καταρράκτη ήταν για μεγάλο χρονικό διάστημα το πιο διαδομένο μοντέλο κύκλου ζωής λογισμικού. Είναι ιδιαίτερα χρήσιμο σε περιπτώσεις όπου οι απαιτήσεις από το λογισμικό είναι από την αρχή γνωστές και μη μεταβαλλόμενες κατά την διάρκεια ανάπτυξης του λογισμικού, και μπορεί να χρησιμοποιηθεί με αποτέλεσμα για την βιομηχανοποίηση της ανάπτυξης τέτοιων εφαρμογών. Παραδείγματος χάριν, τέτοιες είναι οι εφαρμογές που επιλύουν μεγάλα προβλήματα χρησιμοποιώντας μαθηματικούς υπολογισμούς. Σε πολλές, όμως, περιπτώσεις εφαρμογών οι απαιτήσεις είτε δεν είναι από την αρχή κα με σαφήνεια γνωστές είτε μπορεί να μεταβληθούν κατά την διάρκεια ανάπτυξης. Τα πλεονεκτήματα αυτής της μεθόδου είναι : ιδανικό για ομάδες και υπευθύνους με μικρή σχετική εμπειρία. Η διαδοχική σειρά των σταδίων ανάπτυξης και ο αυστηρός έλεγχος για να διασφαλισθεί η επαρκής τεκμηρίωση διασφαλίζουν την ποιότητα την αξιοπιστία και την συντηρησιμότητα του αναπτυσσόμενου λογισμικού. Με αυτό το μοντέλο η πρόοδος της ανάπτυξης του συστήματος είναι μετρήσιμη Εξοικονομούνται πόροι Και τα μειονεκτήματα : Άκαμπτη, αργή δαπανηρή και περίπλοκη λόγω μεγάλης δομής και των αυστηρών ελέγχων. Η υλοποίηση του έργου δεν περιλαμβάνει πολλά βήματα όπου να χρησιμοποιείται η ανάδραση. Δεν χρησιμοποιείται η επαναληπτικότητα που μπορεί να μειώσει το διαχειριστικό κόστος. Εξαρτάται από τον έγκαιρο εντοπισμό και προδιαγραφή των απαιτήσεων αλλά οι χρήστες μπορεί να μην είναι σε θέση να ορίσουν με σαφήνεια τι χρειάζονται πριν ξεκινήσει το έργο. 15

Νέες απαιτήσεις και νέα στοιχεία του συστήματος, που έχουν σαν αποτέλεσμα νέα ανάπτυξη ανακαλύπτονται κατά τον σχεδιασμό και την κωδικοποίηση. Εικόνα 2 : Το μοντέλο του καταρράκτη [48]. Τα προβλήματα συχνά ανακαλύπτονται κατά τη φάση της δοκιμής. Η απόδοση του συστήματος δεν μπορεί να ελεγχθεί μέχρι το σύστημα να είναι έτοιμο και αν υπάρχει πρόβλημα είναι δύσκολο να λυθεί όταν το σύστημα είναι στην παραγωγή. Δύσκολο να ανταποκριθεί στις αλλαγές. Αλλαγές που συμβαίνουν αργότερα στον κύκλο ζωής λογισμικού είναι πιο δαπανηρές και, συνεπώς δεν συνίστανται. 16

Παράγει υπερβολική τεκμηρίωση και η ενημέρωσή της κατά την πρόοδο του έργου είναι χρονοβόρα. Προωθεί το χάσμα μεταξύ των χρηστών και προγραμματιστών, με σαφή διαχωρισμό των αρμοδιοτήτων. 1.4 Το μοντέλο πρωτυποποίησης Η κεντρική ιδέα του μοντέλου πρωτυποποίησης [30] είναι η ανάπτυξη του λογισμικού όχι ολόκληρου, αλλά τμηματικά, που ονομάζονται πρωτότυπα. Οι διαδικασίες ανάπτυξης επαναλαμβάνονται για ένα τμήμα του συστήματος κάθε φορά και, για το λόγο αυτό, το μοντέλο χαρακτηρίζεται ως επαναληπτικό. Το κάθε πρωτότυπο περιλαμβάνει τις βασικές από τις λειτουργίες που προορίζεται να εκτελεί το λογισμικό και τίθεται σε δοκιμή από τον εκάστοτε πελάτη. Από εκεί συλλέγονται παρατηρήσεις και η διαδικασία κατασκευής ενός νέου πρωτοτύπου επαναλαμβάνεται μέχρις ότου ένα πρωτότυπο να ικανοποιεί τις απαιτήσεις, δηλαδή να εκτελεί τις επιθυμητές λειτουργίες του λογισμικού με τρόπο που να ικανοποιεί και να γίνεται αποδεκτό από τον πελάτη. Από το σημείο αυτό και μετά μπορούν να προστεθούν και οι υπόλοιπες λειτουργίες, ώστε το λογισμικό να μπορέσει να ολοκληρωθεί. Ένα σημαντικό πλεονέκτημα του μοντέλου αυτού είναι ότι μπορεί να αποκτά άποψη για την εφαρμογή λογισμικού νωρίτερα από ότι στο μοντέλο του καταρράκτη. Αυτό μπορεί να γλιτώσει την ανάπτυξη από καθυστερήσεις ή ακόμη και από ολική αποτυχία, τα οποία θα επέρχονταν, αν ο κατασκευαστής αναγκαζόταν να οπισθοδρομήσει την ανάπτυξη, ενώ αυτή είχε προχωρήσει πολύ. Παράλληλα, ιδιαίτερη σημασία αποκτά η διοίκηση του έργου, η οποία πρέπει να εξασφαλίζει το αν το πρωτότυπο υλοποιείται και τροποποιείται εύκολα. Κάθε κατασκευή πρωτοτύπου μπορεί να θεωρηθεί ως ένα μικρό κομμάτι λογισμικού το οποίο κατασκευάζεται με διαδικασίες που μπορούν να ακολουθούν άλλα μοντέλα κύκλου ζωής, όπως αυτό του καταρράκτη. Με βάση τις παραπάνω παρατηρήσεις, το μοντέλο πρωτυποποίησης χρησιμοποιείται στην ανάπτυξη εφαρμογών λογισμικού όταν δεν υπάρχει βεβαιότητα στην αρχή της ανάπτυξης για τις απαιτήσεις του λογισμικού, οπότε δεν μπορούν να συμφωνηθούν και να παγιοποιηθούν. Τέτοιες είναι εφαρμογές που κατασκευάζονται για πρώτη φορά ή που είναι στενά εξαρτημένες από τον πελάτη, χωρίς να υπάρχει αποδεκτό προηγούμενο παράδειγμα. Ωστόσο, το μέγεθος των εφαρμογών αυτών δε μπορεί να είναι ιδιαίτερα μεγάλο επειδή ο χρόνος ανάπτυξης του εκάστοτε πρωτοτύπου επιμηκύνεται και η απαιτούμενη ευελιξία μειώνεται. Τα πλεονεκτήματα αυτής της μεθόδου είναι : 17

«Αντιμετωπίζει την ανικανότητα πολλών χρηστών να προσδιορίσουν τις πληροφορίες που χρειάζονται και την δυσκολία των αναλυτών συστημάτων να καταλάβουν το περιβάλλον των χρηστών παρέχοντας στους χρήστες ένα δοκιμαστικό σύστημα για διερευνητικούς λόγους όσον το δυνατόν νωρίτερα [40]». «Μπορεί να χρησιμοποιηθεί για να παρουσιάσει ρεαλιστικά σημαντικές πτυχές του συστήματος σε κάθε βήμα του παραδοσιακού κύκλου ζωής του λογισμικού [41]» Βελτιώνει τη συμμετοχή των χρηστών στην ανάπτυξη του συστήματος καθώς και την επικοινωνία μεταξύ των υπευθύνων του έργου Βοηθά να εντοπιστούν μπερδεμένες ή δύσκολες λειτουργίες καθώς και ελλιπής λειτουργικότητα. Ιδιαίτερα χρήσιμη για να διευκρινιστούν ασαφείς απαιτήσεις Ενθαρρύνει την καινοτομία και τον ευέλικτο σχεδιασμό Παρέχει γρήγορη υλοποίηση μιας ημιτελούς αλλά λειτουργικής εφαρμογής. Και τα μειονεκτήματα : Η διαδικασία έγκρισης και ελέγχου δεν είναι αυστηρή. Η ελλιπής ή ανεπαρκής ανάλυση του προβλήματος που είναι πιθανό να προκύψει θα οδηγήσει στην αντιμετώπιση μόνο των πιο προφανών και επιφανειακών αναγκών, με αποτέλεσμα αναποτελεσματικές μέθοδοι να ενσωματωθούν στο νέο σύστημα. Οι απαιτήσεις αλλάζουν συχνά και σε μεγάλο βαθμό Η ταυτοποίηση μη λειτουργικών στοιχείων είναι δύσκολο να καταγραφεί Οι σχεδιαστές μπορούν να πρωτοτυπήσουν πάρα πολύ γρήγορα, χωρίς την επαρκή εκ των προτέρων ανάλυση των αναγκών των χρηστών, με αποτέλεσμα σχεδίαση που περιορίζει τις μελλοντικές δυνατότητες ανάπτυξης του συστήματος Οι σχεδιαστές μπορούν να παραμελούν την δημιουργία τεκμηρίωσης, με αποτέλεσμα ανεπαρκή αιτιολόγηση για το τελικό προϊόν και ανεπαρκή στοιχεία για το μέλλον. Μπορεί να οδηγήσει σε κακοσχεδιασμένα συστήματα. Μπορεί να οδηγήσει σε ψευδείς προσδοκίες, όπου ο πελάτης πιστεύει λανθασμένα ότι το σύστημα «τελείωσε» όταν στην πραγματικότητα δεν έχει ολοκληρωθεί. Το σύστημα φαίνεται καλό και έχει επαρκείς διεπαφές χρήστη, αλλά δεν είναι πραγματικά λειτουργικό. 18

Εικόνα 3 : Το μοντέλο πρωτοτυποποίησης [48]. Οι επαναλήψεις επιβαρύνουν του προϋπολογισμό και τα χρονοδιαγράμματα του έργου, έτσι το πρόσθετο κόστος πρέπει να σταθμιστεί έναντι των δυνητικών οφελών. Πολύ λίγα έργα μπορεί να είναι σε θέση να δικαιολογήσουν τον επιπλέον χρόνο και χρήμα ενώ μόνο τα υψηλού κινδύνου τμήματα των πολύ μεγάλων, πολύπλοκων έργων μπορούν να επωφεληθούν από τη χρήση πρωτοτύπων. 1.5 Το μοντέλο λειτουργικής επαύξησης Το μοντέλο της λειτουργικής επαύξησης [33] συνδυάζει την ακολουθιακή ανάπτυξη του μοντέλου του καταρράκτη με την τμηματική ανάπτυξη του μοντέλου της πρωτυποποίησης. Κεντρική ιδέα είναι η κατάτμηση του υπό κατασκευή λογισμικού σε τμήματα που αναπτύσσονται ανεξάρτητα, ακολουθώντας τα καθένα ακολουθιακή ανάπτυξη σύμφωνα με το 19

μοντέλο του καταρράκτη. Κατά την αρχική φάση ανάλυσης και σχεδίασης αποφασίζονται τα τμήματα στα οποία θα κατατμηθεί η εφαρμογή, η ανάπτυξη των οποίων γίνεται στη συνέχεια ανεξάρτητα και παράλληλα. Όταν ολοκληρώνεται η ανάπτυξη κάθε τμήματος, αυτό ενσωματώνεται στο σύνολο της εφαρμογής. Το μοντέλο της λειτουργικής επαύξησης χρησιμοποιείται στην ανάπτυξη μεγάλων εφαρμογών λογισμικού για τις οποίες ισχύουν οι απαιτήσεις του μοντέλου του καταρράκτη, δηλαδή σαφής γνώση και μικρή ή καθόλου μεταβλητότητα των απαιτήσεων κατά την ανάπτυξη. Τα πλεονεκτήματα αυτής της μεθόδου είναι : Καθώς εξελίσσεται το έργο υπάρχει η δυνατότητα για αξιοποίηση τεχνογνωσίας που έχει αποκτηθεί σε προηγούμενες φάσεις του έργου. Ένας μέτριος έλεγχος υπάρχει σε όλη τη διάρκεια του έργου με τη χρήση εγγράφων και την επίσημη έγκριση και αναθεώρηση από τον χρήστη και τον υπεύθυνο του έργου σε συγκεκριμένα ορόσημα του έργο (milestones). Οι ενδιαφερόμενοι μπορούν να έχουν συγκεκριμένα στοιχεία για την κατάσταση του έργου καθ όλη τη διάρκεια του κύκλου ζωής λογισμικού. Βοηθά ώστε να μετριαστούν οι σχεδιαστικοί κίνδυνοι καθώς και οι κίνδυνοι κατά την παράδοση του έργου. Επιτρέπει την παράδοση μιας σειράς υλοποιήσεων που είναι σταδιακά πιο πλήρης και μπορούν να μπουν στην παραγωγή πιο γρήγορα ως βελτιωμένες εκδόσεις. Η σταδιακή εφαρμογή παρέχει τη δυνατότητα να παρακολουθούν την επίδραση των σταδιακών αλλαγών, να απομονωθούν τα προβλήματα και να κάνουν τις αναγκαίες προσαρμογές πριν υπάρξει πρόβλημα. Η δυνατότητα παράλληλης ανάπτυξης τμημάτων του λογισμικού, η οποία τελικά καταλαμβάνει μικρότερο χρόνο. Και τα μειονεκτήματα : Κατά τη χρήση μιας σειράς από μίνι-καταρράκτες για ένα μικρό μέρος του συστήματος πριν από τη μετάβαση στην επόμενη αύξηση, υπάρχει συνήθως η έλλειψη συνολικής εξέτασης του επιχειρηματικού προβλήματος και των τεχνικών απαιτήσεων για το συνολικό σύστημα. Δεδομένου ότι ορισμένες ενότητες θα ολοκληρωθούν πολύ νωρίτερα από τις άλλες απαιτούνται σαφώς καθορισμένες διεπαφές. Δύσκολα σημεία του έργου μετατίθεται στο μέλλον ώστε να παρουσιάζεται στη διοίκηση μια ωραιοποιημένη εικόνα. Η αρχική κατάτμηση και γενική σχεδίαση του συστήματος αποκτά ιδιαίτερη βαρύτητα. Σφάλματα σε αυτή μπορεί να έχουν σημαντικές επιπτώσεις στο λογισμικό που θα κατασκευαστεί στη συνέχεια. 20

Σε περίπτωση μεταβολής των λειτουργικών απαιτήσεων κατά τη χρήση του ημιτελούς συστήματος, μπορεί η αρχιτεκτονική αυτού να μεταβληθεί σε βαθμό που να κλονιστεί η ανάπτυξη των υπόλοιπων τμημάτων αυτού. Εικόνα 4 : Το μοντέλο της λειτουργικής επαύξησης [48]. 1.6 Το σπειροειδές μοντέλο Τα μοντέλα κύκλου ζωής λογισμικού που παρουσιάστηκαν μέχρι τώρα αποτελούν παραλλαγές της βασικής ιδέας του μοντέλου του καταρράκτη. Η ανάπτυξη παραμένει, επί της ουσίας, μια ακολουθιακή διαδικασία, η οποία εφαρμόζεται είτε σε ολόκληρο είτε σε ένα μέρος του συστήματος. Στο μοντέλο της προτυποποίησης, καθώς και σε αυτό της λειτουργικής επαύξησης, η κατάτμηση είναι λίγο ως πολύ αυθαίρετη. Το ρίσκο δεν αποτιμάται, κάτι που έχει ως αποτέλεσμα κάθε οπισθοδρόμηση ή ανατροπή να κοστίζει σε χρόνο και σε οικονομικούς όρους, συχνά δε σε συνολική αποτυχία των έργων. Από την άλλη, η αποδοχή των φάσεων που προτείνονται από το μοντέλο του καταρράκτη δεν είναι εφικτό να ακολουθείται σε όλες τις περιπτώσεις και από όλους τους κατασκευαστές, με αποτέλεσμα η ανάπτυξη του λογισμικού είτε να γίνεται άναρχα, με βάση τη διαίσθηση των κατασκευαστών, είτε να είναι μια δαπανηρή και στρυφνή διαδικασία, στην οποία πρέπει να ακολουθηθούν κάποια συγκεκριμένα βήματα, ανεξάρτητα από τις εκάστοτε συνθήκες. 21

Λύση στα παραπάνω προβλήματα καλείται να δώσει το σπειροειδές μοντέλο [7] κύκλου ζωής λογισμικού. Πρόκειται για μια γενίκευση των μοντέλων της λειτουργικής επαύξησης και της πρωτοτυποποίησης, με σημαντικά νέα στοιχεία : Οι φάσεις και οι διαδικασίες ανάπτυξης λογισμικού δεν είναι προκαθορισμένες από το μοντέλο, αλλά εξειδικεύονται στο χώρο της εφαρμογής του. Η ανάπτυξη ολόκληρου του συστήματος χωρίζεται σε πολλούς κύκλους, σε καθέναν από τους οποίους προστίθενται νέα λειτουργικά χαρακτηριστικά στο σύστημα. Πριν την έναρξη κάθε κύκλου γίνεται μια μελέτη σκοπιμότητας και ανάλυση κινδύνων, από την οποία προκύπτουν, αφενός, οι συγκεκριμένες εργασίες που θα εκτελεστούν μέσα στον κύκλο, αφετέρου, η ίδια η εφικτότητα εκτέλεσης του κύκλου αυτού. Στο σπειροειδές μοντέλο διακρίνονται τέσσερις κατηγορίες εργασιών : προσδιορισμός στόχων, εντοπισμός και επίλυση κινδύνων, εκτέλεση διαδικασιών ανάπτυξης και επαλήθευση, καθώς και εργασίες προγραμματισμού. Κατά τον προσδιορισμό στόχων καθορίζονται τα αντικείμενα εργασιών κάθε επανάληψης, καταγράφονται οι περιορισμοί επί του προϊόντος, αλλά και επί της διαδικασίας για την οποία κατασκευάζεται ένα αναλυτικό πλάνο διοίκησης. Επίσης. Καταγράφονται οι κίνδυνοι που εμπεριέχει η διαδικασία και οι εναλλακτικές λύσεις, όπου υπάρχουν. Κατά τις εργασίες επίλυσης κινδύνων αναλύονται οι κίνδυνοι που έχουν καταγραφεί και αποτιμάται κάθε εναλλακτική λύση. Στο σημείο αυτό λαμβάνονται αποφάσεις για τη συνέχιση ή όχι της ανάπτυξης, για το μοντέλο που θα ακολουθηθεί στη συγκεκριμένη επανάληψη, για την κατασκευή ή όχι πρωτοτύπου κ.α. Ακολουθεί η εκτέλεση των βημάτων της διαδικασίας ανάπτυξης λογισμικού που έχει επιλεγεί για το τμήμα εκείνο του συστήματος που αφορά η τρέχουσα επανάληψη. Τέλος, μετά την επαλήθευση των αποτελεσμάτων, ενδιάμεσων προϊόντων λογισμικού γίνεται προγραμματισμός της συνέχισης της ανάπτυξης. Το σπειροειδές μοντέλο δεν καθορίζει εκ των προτέρων ποιες ακριβώς είναι οι εργασίες ανάπτυξης λογισμικού που πρέπει να γίνουν ούτε σε ποια έκταση του συστήματος αυτές θα εφαρμοστούν. Διαφορετικές διαδικασίες ανάπτυξης μπορεί να επιλεγούν για διαφορετικά τμήματα του λογισμικού. Αυτό που προτείνει είναι ότι ο καθορισμός των λεπτομερειών υλοποίησης πρέπει να γίνεται συνεχώς κατά την ανάπτυξη (και όχι μια φορά, όπως συμβαίνει με τα μοντέλα κύκλου ζωής λογισμικού που αναφέρθηκαν μέχρι τώρα) με ευθύνη και με τεκμηρίωση από πλευράς του ίδιου του κατασκευαστή. Η εφαρμογή του σπειροειδούς μοντέλου στην πράξη δεν είναι πάντα εύκολη υπόθεση. Εισάγονται νέες εργασίες, που δεν ανήκουν καθαρά στις εργασίες ανάπτυξης λογισμικού, αλλά 22

αφορούν την τεκμηρίωση της σκοπιμότητας και τον τμηματικό προγραμματισμό της ανάπτυξης. Οι εργασίες αυτές επιφέρουν ασφαλώς κάποιο κόστος, το οποίο όμως μπορεί να αποσβεστεί από τον έγκαιρο εντοπισμό προβλημάτων και την αποφυγή πιθανού ναυαγίου, κάτι που έχει συμβεί σε αρκετές περιπτώσεις. Τα πλεονεκτήματα αυτής της μεθόδου είναι : Βελτιώνει την αποφυγή του κινδύνου Βοηθάει να επιλέξουμε την καλύτερη μέθοδο για την ανάπτυξη ενός συγκεκριμένου μέρους του λογισμικού, με βάση τον κίνδυνο του έργου. Μπορεί να ενσωματώσει τα μοντέλα του καταρράκτη, της προτυποποίησης και επαναληπτικών μεθοδολογιών ως ειδικές περιπτώσεις στο πλαίσιο, και να παρέχει καθοδήγηση ως προς το ποιος συνδυασμός αυτών των μοντέλων ταιριάζει για μια συγκεκριμένη επανάληψη του λογισμικού, με βάση το είδος του κινδύνου του έργου. Για παράδειγμα, ένα έργο με χαμηλό κίνδυνο στο να μην πλήρη τις απαιτήσεις των χρηστών αλλά υψηλού κινδύνου στην τήρηση του προϋπολογισμού και του χρονοδιαγράμματος θα ακολουθήσει ουσιαστικά μια γραμμική προσέγγιση καταρράκτη για μια δεδομένη επανάληψη λογισμικού. Αντίθετα, αν οι παράγοντες κινδύνου αναστραφούν, η σπειροειδής μεθοδολογία θα μπορούσε να αποφέρει μια επαναληπτική προσέγγιση. Και τα μειονεκτήματα : Είναι δύσκολο να καθοριστεί η ακριβής σύνθεση των μεθοδολογιών ανάπτυξης που θα χρησιμοποιηθούν για κάθε επανάληψη γύρω από το σπειροειδές μοντέλο. Εξαιρετικά προσαρμοσμένη σε κάθε έργο, και έτσι είναι αρκετά περίπλοκη, περιορίζοντας τις δυνατότητες επαναχρησιμοποίησης. Ένας εξειδικευμένος και έμπειρός υπεύθυνος έργου απαιτείται για να καθορίσει πώς να την εφαρμόσει σε ένα έργο. Δεν υπάρχουν έλεγχοι για τη μετάβαση από έναν κύκλο ζωής λογισμικού σε έναν άλλο κύκλο. Χωρίς ελέγχους, κάθε κύκλος μπορεί να δημιουργήσει περισσότερη δουλειά για τον επόμενο κύκλο. Δεν υπάρχουν αυστηρές προθεσμίες. Οι κύκλοι συνεχίζονται χωρίς σαφή τερματισμό, οπότε ελλοχεύει ο κίνδυνος να ξεφύγει ο προϋπολογισμός και το χρονοδιάγραμμα του έργου. Υπάρχει πιθανότητα ότι το έργο θα καταλήξει να υλοποιηθεί με το μοντέλο του καταρράκτη. 23

Εικόνα 5 : Το σπειροειδές μοντέλο κύκλου ζωής λογισμικού [48]. 1.7 Το μοντέλο του πίδακα Αρκετά μοντέλα κύκλου ζωής λογισμικού που έχουν προταθεί αποτελούν παραλλαγές αυτών που αναφέρθηκαν, τα χαρακτηριστικά των οποίων υποβάλλονται από τις μεθοδολογίες ανάπτυξης. Οι πρώτες προσεγγίσεις του θέματος με βάση την αντικειμενοστραφή τεχνολογία διαφοροποίησαν το παραπάνω σχήμα βασιζόμενες σε δυο ιδιαίτερα γνωρίσματά της : πρώτον, ότι οι έννοιες ανάλυση, σχεδίαση και κωδικοποίηση έρχονται στο αντικειμενοστραφές παράδειγμα πολύ πιο κοντά και, δεύτερον, ότι το αποτέλεσμα κάθε διαδικασίας κατασκευής λογισμικού είναι όχι μόνο ένα σύστημα, αλλά και επαναχρησιμοποιήσιμες μονάδες, οι οποίες μπορούν να χρησιμοποιηθούν από τις πρώτες φάσεις της ανάπτυξης μελλοντικών συστημάτων. Με τον τρόπο αυτό προέκυψε το μοντέλο του πίδακα [2]. Κατά την ανάπτυξη παρατηρούνται επικαλύψεις των φάσεων ανάλυση, σχεδίαση και κωδικοποίηση, οι οποίες φαίνονται με την επικάλυψη των κύκλων στην εικόνα. Κατά το τέλος της ανάπτυξης, ορισμένα από τα συστατικά λογισμικού που έχουν παραχθεί ενσωματώνονται σε 24

μια δεξαμενή συστατικών και διατίθενται για να χρησιμοποιηθούν στην ανάπτυξη και νέων συστημάτων. Η ιδέα του μοντέλου κύκλου ζωής λογισμικού του πίδακα τονίζει περισσότερο τα επιθυμητά χαρακτηριστικά της μεθοδολογίας κατασκευής του λογισμικού σύμφωνα με την αντικειμενοστραφή λογική, ήταν δε αρκετά επίκαιρη κατά την έκρηξη ενδιαφέροντος για την αντικειμενοστραφή τεχνολογία στα τέλη της δεκαετίας του 80 και στις αρχές της δεκαετίας του 90. Εικόνα 6 : Το μοντέλο κύκλου ζωής του πίδακα [48]. 25

1.8 Σύγχρονα μοντέλα κύκλου ζωής λογισμικού Μεταγενέστερα μοντέλα κύκλου ζωής λογισμικού προσπαθούν να δώσουν μια γενική κατεύθυνση εφαρμογής των υπαρχουσών ιδεών, αφήνοντας σημαντικούς βαθμούς ελευθερίας στον κατασκευαστή που τα ακολουθεί. Αυτό είναι ιδιαίτερα επιθυμητό, διότι η αυστηρή πειθαρχία που επιχειρήθηκε να εισαχθεί τα πρώτα χρόνια της έκρηξης της χρήσης του λογισμικού δε συμβάδιζε με την ωριμότητα σκέψης που διέθετε η τεχνική κοινότητα την εποχή εκείνη ούτε και μπορούσε να παρακολουθήσει τους υψηλούς ρυθμούς εξελίξεων στο χώρο της πληροφορικής. Η πειθαρχία αυτή τελικά δεν οδήγησε στην κατασκευή λογισμικού αναμενόμενης ποιότητας. Μια περιγραφή ενός σύγχρονου μοντέλου κύκλου ζωής λογισμικού περιέχει μόνο γενικές κατευθύνσεις, οι οποίες εξειδικεύονται στο εκάστοτε περιβάλλον ανάπτυξης. Επίσης, δεν είναι άρρηκτα συνδεδεμένο με κάποια μεθοδολογία ανάπτυξης λογισμικού, αλλά μπορεί να εξειδικευτεί για την πρακτική του κάθε κατασκευαστή. Ένα τέτοιο μοντέλο φαίνεται στην παρακάτω εικόνα και μπορεί να χαρακτηριστεί ως απόγονος πολλών από τα μοντέλα που προαναφέρθηκαν. Το γενικό πλαίσιο του μοντέλου αυτού περιλαμβάνει τις φάσεις σύλληψης, κατασκευής και λειτουργίας. Καθεμιά από αυτές αναλύεται σε επιμέρους εργασίες, σύμφωνα με τα χαρακτηριστικά του εκάστοτε περιβάλλοντος. Ιδιαίτερα η γενική φάση της κατασκευής αναλύεται σε κύκλους ανάπτυξης, καθένας εκ των οποίων προσθέτει νέα χαρακτηριστικά και λειτουργίες στο υπό κατασκευή λογισμικό. Εικόνα 7 : Ένα γενικό μοντέλο κύκλου ζωής το οποίο ενσωματώνει χαρακτηριστικά πολλών από τα μοντέλα που αναφέρθηκαν [48]. 26

Τα επιμέρους βήματα σε κάθε κύκλο ανάπτυξης μοιάζουν με τα βήματα του μοντέλου του καταρράκτη, μόνο που δεν εφαρμόζονται για ολόκληρο το σύστημα, αλλά για το μικρό μέρος του που κατασκευάζεται στον εν λόγω κύκλο, όπως στο μοντέλο της πρωτοτυποποίησης. Για την εκκίνηση κάθε κύκλου ανάπτυξης μπορεί να έχει προηγηθεί ανάλυση ρίσκου και σκοπιμότητας, όπως στο σπειροειδές μοντέλο. Ζητήματα όπως αλληλουχία των ενεργειών, ακριβής καθορισμός των κύκλων ανάπτυξης κ.α. αφήνονται στη διακριτική ευχέρεια του κάθε κατασκευαστή, από τον οποίο και καθορίζονται σύμφωνα με τις ιδιαιτερότητες κάθε περίπτωσης. 27

ΚΕΦΑΛΑΙΟ 2: ΠΡΟΣΕΓΓΙΣΕΙΣ ΑΝΑΠΤΥΞΗΣ ΠΛΗΡΟΦΟΡΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ 2.1 Εισαγωγή Η προσέγγιση μεθοδολογία ανάπτυξης πληροφοριακών συστημάτων είναι ένα οργανωμένο σύνολο διαδικασιών, τεχνικών, εργαλείων και μέσων τεκμηρίωσης που καθοδηγεί τις ενέργειες σε ένα χώρο γνώσης. Περιγράφεται από φάσεις, στάδια, βήματα και δραστηριότητες. Σε αυτό το κεφάλαιο επικεντρωνόμαστε κυρίως στις νέες ευέλικτες προσεγγίσεις ανάπτυξης πληροφοριακών συστημάτων. Η απογοήτευση από τη χρήση μεθόδων που απαιτούσαν την προσοχή των μηχανικών λογισμικών στην τεκμηρίωση του συστήματος που σχεδιαζόταν, οδήγησε στην δεκαετία του 90 ένα μεγάλο μέρος μηχανικών λογισμικού να προτείνουν νέες και πιο ευέλικτες μεθόδους. Αυτές οι μέθοδοι επιτρέπουν στην ομάδα ανάπτυξης να επικεντρωθεί στη σχεδίαση του λογισμικού. Οι μέθοδοι αυτές ονομάστηκαν ευέλικτες μέθοδοι (agile methods) και βασίζονται εξολοκλήρου σε ένα πλαίσιο, όπου οι διαδικασίες του προσδιορισμού των προδιαγραφών του λογισμικού, της ανάπτυξης και της παράδοσής του, επαναλαμβάνονται. 2.2 Ευέλικτες Μέθοδοι Ανάπτυξης (Agile Software Development) Ευελιξία στον προγραμματισμό είναι η ικανότητα της προσαρμογής και του επαναπροσδιορισμού ενός αναπτυσσόμενου και συνεχώς εξελισσόμενου συστήματος στην περίπτωση που εμφανίζονται αλλαγές στις αρχικές θεωρήσεις και παραδοχές. Οι οργανισμοί που χρησιμοποιούν ευέλικτες μεθόδους βλέπουν την αλλαγή σαν ευκαιρία βελτίωσης και προόδου και όχι σαν απειλή. Οι ευέλικτες μέθοδοι είναι [23] : Επαναληπτικές (iterative) : Αρχικά παραδίδεται ένα πλήρες σύστημα και στη συνέχεια γίνονται αλλαγές στη λειτουργία κάθε υποσυστήματος σε κάθε νέα έκδοση. Αυξητικές (incremental) : Το σύστημα διαιρείται σε υποσυστήματα με βάση τη λειτουργία τους. Νέες λειτουργίες προστίθενται σε κάθε νέα έκδοση. 28

Αυτό- διοργανούμενες (self-organising) : Η ομάδα έχει την αυτονομία να οργανωθεί κατά βούληση. Προκύπτουσες (emergent) : Οι απαιτήσεις και η τεχνολογία που θα χρησιμοποιηθεί προκύπτουν κατά τη διάρκεια του κύκλου ανάπτυξης λογισμικού. Οι ευέλικτες μέθοδοι εμφανίστηκαν τα τελευταία χρόνια ως μια εναλλακτική κατεύθυνση στην τεχνολογία λογισμικού [14]. Μεταξύ των ευέλικτων μεθόδων είναι και οι extreme Programming [13] και Rational Unified Process [21] και η SCRUM που θα μελετηθούν αναλυτικά στις επόμενες υποενότητες. Οι διαδικασίες αυτές αρχικά σχεδιάστηκαν για την υποστήριξη της ανάπτυξης επιχειρηματικών λογισμικών, όπου οι απαιτήσεις του συστήματος αλλάζουν συχνά κατά τη διάρκεια της ανάπτυξης. Η μεθοδολογία αυτή δημιουργήθηκε από την προσπάθεια να ξεπεραστούν οι αδυναμίες των παραδοσιακών στις περιπτώσεις που οι απαιτήσεις του έργου αλλάζουν διαρκώς και με ταχύτητα. Κάτι τέτοιο σίγουρα συμβαίνει σε αρκετές κατηγορίες σύγχρονων προϊόντων λογισμικού. Καταρχήν, η μεθοδολογία αυτή δεν δίνει τόσο έμφαση στην ολοκλήρωση του προϊόντος όσο στην συνεχή εξέλιξη του με την προσθήκη καινούριων χαρακτηριστικών και την βελτίωσή του σε διαδοχικές εκδόσεις. Σε σύγκριση με παρόμοιες μεθοδολογίες που επίσης προτείνουν την επαναληπτική εξέλιξη του έργου μέσα από διαδοχικές εκδόσεις, η agile φιλοσοφία διαφέρει στο ότι προωθεί την πραγματικά πολύ γρήγορη δημιουργία διαδοχικών εκδόσεων, της τάξης των μερικών εβδομάδων αντί για αρκετών μηνών. 29

Εικόνα 8 : Οι φάσεις διαχείρισης έργου με μια agile μεθοδολογία [50]. Πιθανότατα η πιο γνωστή ευέλικτη μέθοδος είναι ο ακραίος προγραμματισμός (extreme programming), ο οποίος περιγράφεται παρακάτω. Ωστόσο, υπάρχουν και άλλες μέθοδοι όπως οι [8] : Scrum, Crystal, Adaptive Software Development, DSDM, Feature Driven Development, Iconix, Dynamic System Development Methodology (DSDM) και Lean Development Η επιτυχία αυτών των μεθόδων οδήγησε στην ένταξή τους σε πιο παραδοσιακές μεθόδους ανάπτυξης λογισμικού που βασίζονται στην μοντελοποίηση του συστήματος. Παρόλο που αυτές οι μέθοδοι βασίζονται στην ιδέα της αυξανόμενης ανάπτυξης και παράδοσης λογισμικού και προτείνουν διαφορετικές διεργασίες για να το πετύχουν. Ωστόσο, μοιράζονται ένα κοινό σύνολο αρχών και για αυτό έχουν πολλά κοινά σημεία. Αυτές οι αρχές φαίνονται στον παρακάτω πίνακα: Πίνακας 1 : Χαρακτηριστικά μεθοδολογία Agile Software Deployment Αρχή Ανάμειξη του πελάτη Αυξανόμενη παράδοση Άνθρωποι, όχι διεργασίες Αποδοχή αλλαγών Περιγραφή Οι πελάτες θα πρέπει να είναι άμεσα αναμεμειγμένοι με την διεργασία της ανάπτυξης λογισμικού. Ο ρόλος τους είναι να παρέχουν νέες απαιτήσεις, να τους δίνουν προτεραιότητες και να αξιολογούν τις επαναληπτικές εκδόσεις του συστήματος. Το λογισμικό αναπτύσσεται σε μέρη και οι πελάτες ορίζουν τις απαιτήσεις που θα περιληφθούν σε κάθε μέρος Οι ικανότητες της ομάδας ανάπτυξης θα πρέπει να αναγνωρίζονται και να εκμεταλλεύονται. Τα μέλη της ομάδας θα πρέπει να έχουν την δυνατότητα να εργάζονται με τον δικό τους τρόπο και όχι στα πλαίσια μιας ορισμένης διεργασίας. Θα πρέπει να αναμένονται αλλαγές στις απαιτήσεις του συστήματος, για αυτό το λόγο το σύστημα πρέπει να σχεδιαστεί ώστε να δέχεται τέτοιες αλλαγές. 30

Διατήρηση απλότητας Θα πρέπει να γίνεται εστίαση στην απλότητα τόσο του λογισμικού που αναπτύσσεται όσο και της διαδικασίας της ανάπτυξης. Όποτε είναι δυνατό, εκτελούνται εργασίες για την εξάλειψη πολυπλοκότητας από το σύστημα. Επιπλέον, όλες οι ευέλικτες μέθοδοι βασίζονται σε 12 αρχές που περιγράφονται στη διακηρυκτική συνεδρίαση για τις ευέλικτες μεθόδους και είναι οι εξής [14] : 1. Ικανοποίηση του πελάτη. 2. Συχνή παράδοση λογισμικού. 3. Η αλλαγή είναι ευπρόσδεκτη. 4. Καθημερινή συνεργασία με τον πελάτη. 5. Ικανό προσωπικό και περιβάλλον εμπιστοσύνης στην ομάδα. 6. Διαπροσωπική συζήτηση για την ανταλλαγή πληροφοριών. 7. Σωστή λειτουργία του λογισμικού που κατασκευάζεται. 8. Εξασφάλιση σταθερού ρυθμού ανάπτυξης. 9. Τεχνική αρτιότητας και καλός σχεδιασμός. 10. Υλοποίηση στόχων με σύντομο και αποτελεσματικό τρόπο. 11. Αυτό-διοργανούμενες ομάδες. 12. Επαναπροσδιορισμός της συμπεριφοράς της ομάδας. Συνοπτικά τα σημεία στα οποία οι ευέλικτες μέθοδοι δίνουν αξία είναι τα εξής : Άτομα και αλληλεπιδράσεις αντί διαδικασίες και εργαλεία. Δυναμικός κώδικας αντί γραπτής τεκμηρίωσης. Συνεργασία με τον πελάτη αντί αυστηρών συμβολαίων. Ανταπόκριση σε αλλαγές αντί ακολουθούμενου σχεδίου. Στην πραγματικότητα, οι αρχές στις οποίες βασίζονται οι ευέλικτες μέθοδοι είναι πολλές φορές δύσκολο να πραγματοποιηθούν [9] : 1. Παρόλο που η ιδέα της ανάμειξης του πελάτη στη διαδικασία ανάπτυξης του λογισμικού είναι ελκυστική, η επιτυχία της εξαρτάται από την επιθυμία και τη δυνατότητα του πελάτη να διαθέσει χρόνο στην ομάδα ανάπτυξης. Συχνά, οι πελάτες έχουν άλλες υποχρεώσεις και δεν μπορούν να έχουν πλήρη συμμετοχή στην ανάπτυξη του λογισμικού. 2. Κάποια άτομα, μέλη μιας ομάδας, μπορεί να μην έχουν τον κατάλληλο χαρακτήρα και προσωπικότητα για να συμμετέχουν εντατικά σε μια ομάδα, κάτι που είναι τυπικό στις ευέλικτες μεθόδους. Για αυτό το λόγο, μπορεί να μη συνεργάζονται σωστά με τα άλλα μέλη της ομάδας. 3. Το να θέσεις προτεραιότητες στις αλλαγές του συστήματος μπορεί να γίνει δύσκολο, ειδικά για συστήματα που υπάρχουν περισσότερα του ενός άτομα που 31

θέτουν τις προτεραιότητες για τις αλλαγές του συστήματος. Συχνά, κάθε άτομο θέτει διαφορετικές προτεραιότητες σε διαφορετικές αλλαγές. 4. Η διατήρηση της απλότητας απαιτεί περισσότερη εργασία. Υπό την πίεση των προθεσμιών παράδοσης του συστήματος, η ομάδα μπορεί να μην έχει το χρόνο να κάνει τις επιθυμητές απλοποιήσεις στο σύστημα. Ένα άλλο πρόβλημα, μη τεχνικό, το οποίο είναι ένα πρόβλημα που αντιμετωπίζουν όλες οι μέθοδοι αυξητικής ανάπτυξης είναι το γεγονός ότι ο πελάτης χρησιμοποιεί έναν εξωτερικό οργανισμό για την ανάπτυξη του συστήματος. Το κείμενο του προσδιορισμού των προδιαγραφών του συστήματος είναι το συμβόλαιο που δεσμεύει τα δύο μέρη, δηλαδή τον πελάτη και τον οργανισμό που αναπτύσσει το σύστημα. Επειδή, όμως, με τη μεθοδολογία των ευέλικτων μεθόδων, ο όγκος των απαιτήσεων μεγαλώνει με ταχύτητα, το γεγονός αυτό είναι ένα πρόβλημα για τη συγγραφή συμβολαίων. Συνεπώς, οι ευέλικτες μέθοδοι βασίζονται στα συμβόλαια, στα οποία ο πελάτης πληρώνει για το χρόνο που απαιτείται για την ανάπτυξη του λογισμικού και όχι για ένα συγκεκριμένο σύνολο απαιτήσεων. Εφόσον όλα πάνε καλά, αυτό ωφελεί και τον πελάτη και το δημιουργό του συστήματος. Ωστόσο, αν προκύψουν προβλήματα, θα προκύψουν διαφωνίες, που δύσκολα επιλύονται, για το ποιος ευθύνεται και ποιος πρέπει να πληρώσει για τον επιπλέον χρόνο και τους πόρους που χρειάστηκαν για να επιλυθούν τα προβλήματα. Εικόνα 9 : Αρχιτεκτονική της ευέλικτης μεθοδολογίας [49]. 32