Εκτίµηση Κόστους και Προσπάθειας Έργου Λογισµικού Αντώνης Καραγεώργος Τµήµα Μηχανικών Η/Υ και ικτύων Πανεπιστήµιο Θεσσαλίας karageorgos@inf.uth.gr Εκτίµηση της προσπάθειας και του χρόνου Η διεργασία σχεδίασης είναι τόσο σηµαντική όσο η διεργασία ανάπτυξης Πόσος χρόνος? Πόση προσπάθεια? Πόσοι πόροι (άνθρωποι και υλικά)? Μέτρηση χρόνου και προσπάθειας Χρόνος: διάστηµα µεταξύ της αρχής και του τέλους του έργου Προσπάθεια: το εργατικό δυναµικό που αθροιστικά χρειάζεται για την ολοκλήρωση του έργου Παράδειγµα: 5 τεχνίτες βάφουν µια κατοικία σε 3 ηµέρες Χρόνος: 3 µέρες (από την αρχή ως το τέλος του έργου) Προσπάθεια: 15 ανθρωποηµέρες (5x3) Η κατανοµή της προσπάθειας δεν είναι πάντα οµογενής Οι τεχνίτες µπορεί να χρειαστεί να βιαστούν την Τρίτη ηµέρα Εύρεση του κατάλληλου µοντέλου Ποιό µοντέλο εύρεσης προσπάθειας και κόστους είναι το καλύτερο? Εξαρτάται από την εκάστοτε κατάσταση Με βάση εµπειρικά δεδοµένα το µοντέλο Bailey-Basili συµπεριφέρεται καλύτερα από τα υπόλοιπα υό στατιστικά µεγέθη: PRED (x/100) το ποσοστό των έργων για τα οποία η εκτίµηση αποκλίνει µέχρι x% της πραγµατικής τιµής MMRE µέσο µέγεθος του σχετικού σφάλµατος 1
ιαφορετικές αναφορές για την κατανοµή των προσπαθειών Έλεγχος Brooks Σχεδίαση Συγγραφή κώδικα Σχεδίαση Άλλα Yourdon Συγγραφή κώδικα ιαφορετικές απόψεις για την προσπάθεια που απαιτείται Στις κρίσιµες δραστηριότητες της ανάπτυξης Βαθµοί λειτουργίας Βαθµοί λειτουργίας (Functional Points) FP. Μονάδες που χρησιµεύουν στον υπολογισµό του χρόνου και της απαιτούµενης προσπάθειας Η ιδέα είναι να προσδιοριστούν κάποιες βασικές δραστηριότητες (δοµικές µονάδες σχεδίασης έργου) και να υπολογιστεί το άθροισµα τουβάρουςτηςκαθεµιάς Ηεύρεσητωνδοµικών µονάδων και η απόδοση του βάρους της καθεµιάς εξαρτάται από Παγκόσµια βάση δεδοµένων από πρακτικές χρήσης µονάδων λειτουργίας Ιστορία της εκάστοτε εταιρείας Εµπειρία των ανθρώπων που εφαρµόζουν τη µέθοδο Βαθµοί λειτουργίας (συνέχεια) Οι δοµικές µονάδες FP σχετίζονται µε τηνεφαρµογή και όχι µε την υλοποίηση Βασικές δοµικές µονάδες FP Αρχεία εισόδου προσδιορίζουν την είσοδο της εφαρµογής Αρχεία εξόδου προσδιορισµός της εξόδου Πληροφορίες διερεύνησης πληροφορίες που απαιτούνται για την κατάσταση της εφαρµογής info requested on the state of application Αρχεία εισόδου πληροφορίες σχετικά µε µετατροπή εισόδου σε έξοδο Εξωτερικές διασυνδέσεις πληροφορίες για το εξωτερικό περιβάλλον Βαθµολόγηση κάθε δοµικής µονάδας µε βάση την πολυπλοκότητα: χαµηλή, µέση και υψηλή Το άθροισµα τωνβαθµών είναι η µη διορθωµένη ποσότητα βαθµών λειτουργίας (Unadjusted FP (UFP)) Βαθµοί λειτουργίας (συνέχεια) 14 τεχνικοί παράγοντες σχετικά µε την πολυπλοκότητα: Οµαδοποιούνται σε 3 κατηγορίες πολυπλοκότητας: συστήµατος, εισόδου/εξόδου και εφαρµογής Κάθε παράγοντας βαθµολογείται από 0 µέχρι 5. Παράγοντας τεχνικής πολυπλοκότητας (Technical complexity factor (TCF) Άθροισµατωνβαθµών των 14 παραγόντων 14 TCF = ( ) i= TCF 1 i 0. 01 ιορθωµένοι βαθµοί λειτουργίας Adjusted function points (AFP or FP) FP = UFP X (0.65 + TCF) Ανάλογα µε τηντιµή τουfp µπορούµε να υπολογίσουµε τοχρόνο και την προσπάθεια που απαιτείται µε βάσητηνεµπειρία 2
Παράδειγµα χρήσηςβαθµών λειτουργίας UFP Name Type (building block) Complexity Milk Input File Medium 4 Coffee Input File Medium 4 Water Input File Low 3 Cappuccino Output File High 7 Water Temperature Inquiry Low 3 External Temperature External Interface Medium 7 Value Total Unadjusted Function Points 28 Παράδειγµα χρήσηςβαθµών λειτουργίας (συνέχεια) 1. System Complexity 2. I/O Complexity 3. Application Complexity 1.1 Data communication 5 2.1 Reliable and transaction-oriented data management 1.2 Distributed data processing 1.3 Relevance of performances 1.4 Configuration of the hardware and the software 3 2.2 Online data management 4 2.3 Usability and efficiency of the end user 4 2.4 Online update of the data 0 3.1 Algorithms and processing ability 4 3.2 Need of reuse of the 0 code 4 3.3 Installation easiness 5 2 3.4 Startup, shutdown, and operation easiness Partial (1) 16 Partial (2) 10 3.5 Requirements to run on multiple sites Total = 39 3.6 Readiness to change 2 Partial (3) 13 1 3 2 Παράδειγµα χρήσηςβαθµών λειτουργίας (συνέχεια) FP = UFP X (0.65 + TCF) = 28 X (0.65 + (39 X 0.01)) = 29.12 Άρα αν γνωρίζουµε οτι η οµάδα µας παράγει έργο που αντιστοιχεί σε 10 FP την ηµέρα χρειαζόµαστε 3 ηµέρες Αξιολόγηση της µεθόδου βαθµών λειτουργίας Υπέρ: Μπορεί να προβλέψει το χρόνο και την προσπάθεια που απαιτούνται Κατά: εν υπάρχει επιστηµονική βάση στη µέθοδο Η απόδοση των προγραµµατιστών επηρεάζεται από τις προβλέψεις Για ανιτκειµενοστραφή ανάπτυξη εχουν προταθεί Βαθµοί αντικειµένων Υπάρχουν διαθέσιµοι πίνακες που αντιστοιχούν γραµµές κώδικα µε FP 3
COCOMO οµικό µοντέλο κόστους (COnstructive COst MOdel COCOMO) Υπολογίζει το µέγεθος µε βάση στοιχεία υψηλού επιπέδου όπως: Αριθµό των πινάκων δεδοµένων στον εξυπηρέτη Αριθµό των πινάκων δεδοµένων στον πελάτη Αριθµό οθονών Αριθµό αναφορών Ποσοστό αναφορών και οθονών που επαναχρησιµοποιούνται από προηγούµενα έργα COCOMO Μοντέλο για τον υπολογισµό του χρόνου και της προσπάθειας Εναλλακτικό στη µέθοδο βαθµών λειτουργίας Χρησιµοποιεί διάφορους παραµέτρους όπως: Platform factors Personnel factors Project factors Execution Time Constraint Analyst Capability Use of Modern Programming Practices Main Storage Constraint Programmer Capability Use of Software Tools Platform Volatility Applications Experience Multi-site Development Computer Turnaround Time Platform Experience Required Development Schedule Language and Tool Experience Classified Security Application Personnel Continuity COCOMO (συνέχεια) Πολυωνυµικό µοντέλο Effort( Size) = A Size where A, B > 0 B Τα Α και Β υπολογίζονται µε βάση τις προηγούµενες παραµέτρους Υπάρχουν διαθέσιµα εγχειρίδια για τον υπολογισµό των Α και Β Χρειάζεται επίσης και το µέγεθος του έργου και συνήθως αυτό υπολογίζεται επίσης Οικονοµίες κλίµακας B < 1; Οικονοµίες κλίµακας, κοίλη καµπύλη B > 1; Μη οικονοµίες κλίµακας; Κυρτή καµπύλη B = 1; Ευθεία γραµµή Effort Effort( Size) = A Size where A, B > 0 B B>1, convex B=1 B<1, concave Size 4
Οικονοµίες κλίµακας B < 1; Οικονοµίες κλίµακας Μεγαλύτερο έργο λιγότερη οριακή προσπάθεια Τυπικό στην οργάνωση επιχειρήσεων παραγωγής B > 1; Μη οικονοµίες κλίµακας Πιο πολύπλοκο έργο More complicated project περισσότερη οριακή προσπάθεια Αυτό συµβαίνει στα περισσότερα έργα λογισµικού Η ελάττωση το Β στο 1 απαιτεί πολύ καλή επικοινωνία, δοµές και εξοικείωση Παράµετροι του COCOMO Λαµβάνονται υπ όψει πολλοί παράγοντες Υπέρ: Απαιτεί από αυτούς που το χρησιµοποιούν να ανιτλαµβάνεονται σε βάθος το πεδίο της εφαρµογής Κατά: Ο µεγάλος αριθµός παραµέτρων µπορεί να αποτρέπει τη χρήση της µεθόδου Τα αποτελέσµατα µπορεί να διερµηνεύονται διαφορετικά από διαφορετικούς χρήστες Κάθε µοντέλο COCOMO χρειάζεται διεξοδική ρύθµιση Παράγοντες Παραγωγικότητας Πολυπλοκότητα διασύνδεσης µε τον πελάτη Συµµετοχή των χρηστών στον προσδιορισµό των απαιτήσεων Αλλαγές στη σχεδίαση του προγράµµατος που ξεκινούν από τον πελάτη Εµπειρία των πελατών στην περιοχή εφαρµογής Συνολική εµπειρία του προσωπικού Παράγοντες Παραγωγικότητας (συνέχεια) Χρήση δοµηµένου προγραµµατισµού Χρήση επιθεώρησης σχεδίου και κώδικα Χρήση ανάπτυξης από πάνω προς τα κάτω Συνολική πολυπλοκότητα του κώδικα Πολυπλοκότητα της ροής του προγράµµατος Συνολικοί περιορισµοί στη σχεδίαση του προγράµµατος 5
Προσδιορισµός του µεγέθους Μπορούµε ναµαντέψουµε τοµέγεθος του έργου (educated guess) Χρησιµοποιούµε τοcocomo Χρήση των βαθµών λειτουργίας κατευθείαν (COCOMO 2) Μετατροπή των βαθµών λειτουργίας σε γραµµές κώδικα Προσδιορισµός του µεγέθους (συνέχεια) Χρήση του COCOMO για υπολογισµό του µεγέθους των έργου Parameters of COCOMO Parameters for FP estimation Function Points Size estimation in FP FP to LOC conversion COCOMO Size estimation in LOC Note: LOC Lines of code Effort estimation Αξιολόγηση του COCOMO Υπέρ: Αυξάνει την αντίληψη σχετικά µε όλη τη διεργασία ανάπτυξης λογισµικού Αντιµετωπίζει θέµατα οικονοµίας κλίµακας Προσδιορίζει παράγοντες που επηρεάζουν την ανάπτυξη του λογισµικού Κατά: Περιλαµβάνει πολλούς παραµέτρους Βασίζεται σε µεγάλο βαθµό στον υπολογισµό του µεγέθους ιαχείριση κινδύνων Κίνδυνος (risk) είναι ένα γεγονός που έχει αρνητικές επιπτώσεις Η διαχείριση κινδύνων περιλαµβάνει αντίληψη και έλεγχο των κινδύνων Γενικός κίνδυνος: κοινός σε όλα τα έργα λογισµικού Κίνδυνος για συγκεκριµένο έργο: αναφέρεται σε σηµεία στα οποία είναι ευάλωτο το συγκεκριµένο έργο 6
Ποσοτικοποίηση κινδύνου Υπολογισµός έκθεσης σε κίνδυνο Επιπτώσεις του κινδύνου (Risk impart): η απώλεια που συνδέεται µε τον κίνδυνο Πιθανότητα κινδύνου (Risk probability): η πιθανότητα να συµβεί το συµβάν Έκθεση στον κίνδυνο: Risk exposure = risk impart * risk probability Έλεγχος κινδύνων (Risk control): Σειρά ενεργειών που αποσκοπούν στο να µειωθεί ή να εξαλειφθεί ένας κίνδυνος Ελάττωση κινδύνου Λαµβάνουµε υπ όψει µας το κόστος της µείωσης των κινδύνων. Μόχλευση του κινδύνου: η διαφοράτηςέκθεσης στον κίνδυνο διαιρεµένη µε τοκόστοςµείωσης του κινδύνου. (έκθεση στον κίνδυνο πριν τη µείωση - έκθεση στον κίνδυνο µετά τη µείωση) / κόστος µείωσης κινδύνου Καταγράφουµε τις αποφάσεις µας σε ένα πλάνο διαχείρισης κινδύνων Risk management Βήµατα διαχείρισης κινδύνων Risk assessment Risk analysis Risk prioritization Risk control Risk identification Checklist Decomposition Assumption analysis Decision driver analysis System dynamics Performance models Cost models Network analysis Decision analysis Quality risk factor analysis Risk exposure Compound risk reduction Buying information Risk avoidance Risk transfer Risk reduction Risk reduction leverage Development process Risk management planning Risk element planning Risk plan integration Risk resolution Risk mitigation Risk monitoring and reporting Risk reassessment 7
Σηµαντικότερες αιτίες κινδύνων Αδυναµίες προσωπικού Μη ρεαλιστικά χρονοδιαγράµµατα και υπολογισµοί Ανάπτυξη λανθασµένων λειτουργιών λογισµικού Ανάπτυξη λανθασµένων διασυνδέσεων µε το χρήστη Μη απαραίτητα έξοδα Συνεχείς αλλαγές στις απαιτήσεις Αδυναµίεςσεεξωτερικέςεργασίες(π.χ. λογιστικοί έλεγχοι για απόδοση αµοιβών) Αδυναµίες σε έτοιµα συστατικά λογισµικού, π.χ. συγκριτικές δοκιµές που γίνονται εξωτερικά Αδυναµίεςαπόδοσηςπραγµατικού χρόνου, π.χ. προσοµοιώσεις Υπέρβαση των τεχνολογικών δυνατοτήτων, π.χ. τεχνική ανάλυση Το πλάνο του έργου Κείµενο που χρησιµοποιείται για: Επικοινωνία της ανάλυσης και της διαχείρισης κινδύνων Υπολογισµούς του κόστους του έργου Πρόγραµµα εργασίας και Οργάνωση εργασίας Με τους πελάτες και µε τηνοµάδα εργασίας Boehm 1991 Στοιχεία καλού πλάνου έργου Εύρος του έργου Χρονοδιάγραµµα του έργου Οργάνωση της οµάδας εργασίας Τεχνική περιγραφή του προτεινόµενου συστήµατος Πρότυπα του έργου, διαδικασίες και προτεινόµενες τεχνικές και εργαλεία Πλάνο εξασφάλισης ποιότητας Στοιχεία καλού πλάνου έργου (συνέχεια) Πλάνο διαχείρισης σχηµατισµών Πλάνο τεκµηρίωσης Πλάνο διαχείρισης δεδοµένων Πλάνο διαχείρισης πόρων Πλάνο ελέγχων Πλάνο εκπαίδευσης Πλάνο ασφάλειας Πλάνο διαχείρισης κινδύνων Πλάνο συντήρησης 8
Μοντέλα διεργασιών και διοίκηση έργων Στόχος η κατασκευή προϊόντων υψηλής ποιότητας στο δοσµένο χρόνο και µέσα στον προϋπολογισµό Προσαρµόζουµε τις τεχνικές διαχείρισης έργου στα Ιδιαίτερα χαρακτηριστικά και πόρους που που χρειάζεται η εφαρµογή Στη διεργασία ανάπτυξης λογισµικού που έχουµε επιλέξει και Στο ανθρώπινο δυναµικό ιαχείριση Συστράτευσης ιαχείριση Συστράτευσης (enrollment management) Ευρεία κοινή οπτική εσµεύσεις εξουσιοδότηση Λεπτοµερής επιθεώρηση Αναγνώριση Εκµάθηση Βοηθάει στη διαπίστωση προβληµάτων νωρίς και στην επικέντρωση της εργασίας στα σηµεία που είναι κρίσιµα για την πρόοδο του έργου Μοντελοποίηση ευθυνών ηµιουργία οµάδων µε άτοµα διαφορετικής ειδικότητας µε στόχο την παραγωγή ενός συγκεκριµένου αποτελέσµατος Συνεχής ανταλλαγή απολογισµών ώστε να γίνεται αυτό που αφορά την οµάδα και τους παραλήπτες Περιοδική αξιολόγηση της προόδου (π.χ. υπολογισµός της τιµής κάλυψης) Πλεονεκτήµατα Μηχανισµός για επικοινωνία και συντονισµό ιευκολύνει τη διαχείριση των κινδύνων Συνενώνει την αναφορές προόδου µε επίλυση προβληµάτων 9