Παραγωγικότητα και κοστολόγηση

Διομήδης Σπινέλλης
Τμήμα Διοικητικής Επιστήμης και Τεχνολογίας
Οικονομικό Πανεπιστήμιο Αθηνών
dds@aueb.gr

Στοιχεία του προγραμματισμού

Οι ερωτήσεις που πρέπει να απαντηθούν για τον προγραμματισμό ενός έργου είναι: Τα παραπάνω στοιχεία πρέπει να εκτιμηθούν από την αρχή του έργου, αλλά ενημερώνονται σε όλη τη διάρκειά του.

Δέκα εμπειρικοί αφορισμοί

  1. Η ανακάλυψη και διόρθωση ενός προβλήματος του λογισμικού μετά την παράδοση, είναι 100 φορές πιο ακριβή από την ανακάλυψη και διόρθωσή του στο στάδιο των απαιτήσεων.
  2. Το πρόγραμμα ανάπτυξης του λογισμικού μπορεί να συμπιεστεί κατά 25% του ονομαστικού, αλλά όχι περισσότερο.
  3. Για κάθε 1 Ευρώ που ξοδεύεται στην ανάπτυξη του λογισμικού, θα ξοδεύονται 2 Ευρώ στη συντήρηση.
  4. Το κόστος ανάπτυξης και συντήρησης του λογισμικού είναι πρωταρχικά συνάρτηση του αριθμού των πηγαίων γραμμών στο προϊόν.
  5. Η ετερογένεια των ατόμων ευθύνεται για τις μεγαλύτερες διαφορές στην παραγωγικότητα λογισμικού.
  6. Η γενική αναλογία κόστους λογισμικού προς κόστος υλικού μεταβλήθηκε από 15/85 το 1955 σε 85/15 το 1985 και συνεχίζει να διευρύνεται.
  7. Η ανάπτυξη λογισμικού σήμερα ακολουθεί μια κατανομή 60-15-25. Το 60% της ανάπτυξης αφιερώνεται στην ανάλυση και σχεδιασμό, το 15% στον προγραμματισμό και 25% στον έλεγχο.
  8. Τα συστήματα λογισμικού και τα προϊόντα λογισμικού κοστίζουν τρεις φορές περισσότερο για να αναπτυχθούν από ότι ένα αυτόνομο πρόγραμμα λογισμικού.
  9. Στη διαδικασία του ελέγχου ανακαλύπτεται το 60% των λαθών.
  10. Πολλές πρακτικές και φαινόμενα λογισμικού ακολουθούν κατανομή Pareto, όπου το 80% της συνεισφοράς προέρχεται από το 20% των συμμετεχόντων.
(Από το IEEE Software, Vol 4, No 5, Sept 1987, pp 84-85. Επίσης στο Merlin Dorfman, Richard H.Thayer. Software Engineering. Foreword by Barry W. Boehm. IEEE Computer Society Press, 1997. Μετάφραση από την Ιωάννα Γκρίνια)

Ποσοτικά στοιχεία του κόστους

Το κόστος ενός έργου περιλαμβάνει τα παρακάτω στοιχεία: Στο κόστος του ανθρώπινου δυναμικού υπολογίζονται εκτός από τους μισθούς, τα παρακάτω γενικά έξοδα (overheads): Τα παραπάνω τυπικά διπλασιάζουν το κόστος ανά μήνα εργασίας με βάση το μισθό. Στην Ελλάδα μην ξεχνάτε να υπολογίζετε 14 μισθούς το χρόνο!

Παράγοντες που επηρεάζουν την τιμή

Η τιμή που υπολογίζεται για την ανάπτυξη του λογισμικού συχνά επηρεάζεται από τους παρακάτω παράγοντες:

Τρόποι μέτρησης

Γραμμές κώδικα

Παραδείγματα

Λειτουργικά χαρακτηριστικά

Τα στοιχεία που αθροίζονται είναι τα παρακάτω:
ΣτοιχείοΑριθμός Απλό Μέτριο Πολύπλοκο Σύνολο
Είσοδοι χρήστη  3 4 6  
Έξοδοι χρήστη  4 5 7  
Ερωτήσεις χρήστη  3 4 6  
Αρχεία ή πίνακες  7 10 15  
Εξωτερικές διεπαφές  5 7 10  
Οι ρυθμίσεις είναι το άθροισμα (0: ασήμαντο - 5: ιδιαίτερα σημαντικό) στις παρακάτω ερωτήσεις:
  1. Απαιτείται αξιόπιστο σύστημα εφεδρείας των στοιχείων;
  2. Απαιτείται επικοινωνία δεδομένων;
  3. Απαιτείται κατανεμημένη επεξεργασία;
  4. Είναι σημαντική η απόδοση;
  5. Το σύστημα θα τρέξει σε υπάρχον περιβάλλον;
  6. Απαιτείται διεπαφή για την είσοδο των στοιχείων;
  7. Η είσοδος των στοιχείων θα είναι σε πολλαπλές οθόνες;
  8. Η ενημέρωση των κυρίων αρχείων θα γίνεται άμεσα;
  9. Είναι περίπλοκες οι είσοδοι, έξοδοι, ή οι ερωτήσεις;
  10. Είναι περίπλοκοι οι εσωτερικοί υπολογισμοί;
  11. Ο κώδικας θα πρέπει να επαναχρησιμοποιηθεί;
  12. Περιλαμβάνεται στο σχεδιασμό η μετάπτωση και η εγκατάσταση;
  13. Το σύστημα θα χρησιμοποιείται από διαφορετικούς οργανισμούς ή σε διαφορετικές εγκαταστάσεις;
  14. Θα μπορούν οι χρήστες να τροποποιούν το σύστημα;

Λειτουργικά αντικείμενα

ΣτοιχείοΑριθμός Απλό Μέτριο Πολύπλοκο Σύνολο
Οθόνες  1 2 3  
Αναφορές  2 5 8  
Αρθρώματα 3GL  10 10 10  

Σχέση ΛΧ και ΓΚ

Ο παρακάτω πίνακας εμφανίζει τη σχέση ΓΚ/ΛΧ για ορισμένες γλώσσες προγραμματισμού:
ΓλώσσαΓΚ/ΛΧ
Συμβολική γλώσσα337
Access35
Ada154
ASP69
C++66
C162
COBOL77
FORTRAN106
Java62
JSP59
Pascal90
Perl60
Powerbuilder32
Smalltalk26
SQL40
Visual Basic47

Τεχνικές εκτίμησης της τιμής

Αλγοριθμικές
Χρησιμοποιούμε ιστορικά στοιχεία για να συσχετίσουμε μέγεθος με κόστος. Το μοντέλο υπολογίζει το έργο με βάση το μέγεθος. Παράδειγμα τέτοιων τεχνικών είναι οι τεχνικές COCOMO και COCOMO II.
Κρίση του ειδικού (expert judgement)
Ρωτάμε ειδικούς που έχουν εμπειρία σε παρόμοια ανάπτυξη. Οι γνώμες συγκρίνονται και σε περίπτωση διαφωνίας η διαδικασία επαναλαμβάνεται μετά από συζήτηση.
Κατακερματισμός της εργασίας
Το σύστημα κατακερματίζεται σε επιμέρους τμήματα για τα οποία υπάρχουν ιστορικά στοιχεία.
Εκτίμηση με αναλογία
Συγκρίνουμε το έργο με παρόμοια έργα.
Νόμος του Parkinson
Το έργο το χρόνο που είναι διαθέσιμος. Το κόστος εξαρτάται από τους πόρους που θα διατεθούν!
Κέρδος
Το κόστος καθορίζεται με βάση το ποσό που είναι διατεθειμένος να διαθέσει ο πελάτης.

Η τεχνική COCOMO 2

Αρχέτυπο

PM = (NOP * (1 - %reuse/100)) / PROD
Όπου:
PM
ΑΜ
NOP
Αριθμός από λειτουργικά αντικείμενα (number of object points)
%reuse
Ποσοστό επαναχρησιμοποίησης
PROD
Ικανότητα και εμπειρία των προγραμματιστών (4: πολύ χαμηλή, 6: χαμηλή, 15: μέση, 25: υψηλή, 50: πολύ υψηλή)

Αρχικό σχέδιο

PM = A * SizeB * M + PMM
Όπου:
A
2.5
Size
Χιλιάδες γραμμές πηγαίου κώδικα
B
Βλ. "υπολογισμός του εκθέτη"
Μ
PERS * RCPX * RUSE * RDIF * PREX * FCIL * SCED
Όπου:
PERS
Ικανότητα προσωπικού
RCPX
Αξιοπιστία και πολυπλοκότητα (reliability and complexity)
RUSE
Επαναχρησιμοποίηση (reuse)
RDIF
Δυσκολία της πλατφόρμας υλοποίησης (platform difficulty)
PREX
Εμπειρία προσωπικού (personel experience)
FCIL
Μέσα υποστήριξης (support facilities)
SCED
Πρόγραμμα (schedule)
PMM
Υπολογίζεται σε έργα που μεγάλο ποσοστό του κώδικα παράγεται αυτόματα.
PMM = (ASLOC * (AT / 100)) / ATPROD
Όπου
ASLOC
Αυτόματα παραγόμενες γραμμές
AT
Ποσοστό του κώδικα που είναι αυτόματα παραγόμενος
AT
Παραγωγικότητα για αυτόματα παραγόμενο κώδικα

Μετά τον αρχιτεκτονικό σχεδιασμό

Στον παράγοντα Μ συμμετέχουν τα παρακάτω χαρακτηριστικά (οι τιμές δίνονται από πίνακες βαθμονόμησης σαν αυτόν που βρίσκεται στο τέλος). Υπολογίζεται και ο κώδικας από επαναχρησιμοποίηση σύμφωνα με τον τύπο
ESLOC = ASLOC * (AA + SU + 0.4DM + 0.3CM + 0.3IM) / 100
Όπου:
ESLOC
Ανάλογες χιλιάδες γραμμές πηγαίου κώδικα
ASLOC
Χιλιάδες γραμμές επαναχρησιμοποιούμενου κώδικα
AA
Έργο για εκτίμηση του κώδικα (0-8)
SU
Κόστος κατανόησης του κώδικα (50: κακογραμμένος, 10: δομημένος)
DM
Ποσοστό αλλαγής του σχεδίου
CM
Ποσοστό αλλαγής του κώδικα
IM
Ποσοστό του συνολικού έργου ολοκλήρωσης που απαιτείται για τον επαναχρησιμοποιούμενο κώδικα

Υπολογισμός του εκθέτη

Ο εκθέτης Β εξαρτάται από την οργανωσιακή πολυπλοκότητα του έργου και εκφράζει τις οικονομίες κλίμακας (economies of scale) ή τις αντίστοιχες αντιοικονομίες κλίμακας (diseconomies of scale) που συνδέονται με το έργο. Όταν είναι < 1 όσο μεγαλώνει το έργο, τόσο αυξάνεται η παραγωγικότητα, σε αντίθετη περίπτωση η παραγωγικότητα μειώνεται με την αύξηση του μεγέθους του έργου. Το Β υπολογίζεται ως
Β = Σ / 100 + 1.01
όπου Σ το άθροισμα των παρακάτω παραγόντων στην κλίμακα (5: πολύ χαμηλό - 0: πολύ υψηλό):

Βαθμονόμηση των πολλαπλασιαστών

Παράγοντας ΠΧ Χ Μ Υ ΠΥ ΕΥ
RELY 0.75 0.88 1.00 1.15 1.40  
DATA   0.94 1.00 1.08 1.16  
CPLX 0.75 0.88 1.00 1.15 1.30 1.65
RUSE   0.89 1.00 1.16 1.34 1.56
DOCU 0.85 0.93 1.00 1.08 1.17  
TIME     1.00 1.11 1.30 1.66
STOR     1.00 1.06 1.21 1.56
PVOL   0.87 1.00 1.15 1.30  
ACAP 1.5 1.22 1.00 0.83 0.67  
PCAP 1.37 1.16 1.00 0.87 0.74  
PCON 1.26 1.11 1.00 0.91 0.83  
AEXP 1.23 1.10 1.00 0.88 0.80  
PEXP 1.26 1.12 1.00 0.88 0.80  
LTEX 1.24 1.11 1.00 0.9 0.82  
TOOL 1.20 1.10 1.00 0.88 0.75  
SITE 1.24 1.10 1.00 0.92 0.85 0.79
SCED 1.23 1.08 1.00 1.04 1.10  
Οι τιμές για τους πολλαπλασιαστές του αρχικού σχεδίου προκύπτουν από τη σύνθεση των παραπάνω πολλαπλασιαστών, σύμφωνα με τον παρακάτω πίνακα:
Αρχικός Τελικοί
RCPX RELY, DATA, CPLX, DOCU
RUSE RUSE
PDIF TIME, STOR, PVOL
PERS ACAP, PCAP, PCON
PREX AEXP, PEXP, LTEX
FCIL TOOL, SITE
SCED SCED

Εκτίμηση χρόνου με βάση την τεχνική COCOMO

Ο χρόνος υλοποίησης του έργου μπορεί να υπολογιστεί ως
TDEV = 3 * PM0.33 + 0.2 * (B - 1.01)

36-hour watches

Παράγοντες που επηρεάζουν την παραγωγικότητα

Εμπειρία στο συγκεκριμένο τομέα

Ποιότητα της διεργασίας ανάπτυξης (+)

Μέγεθος του έργου (-)

Τεχνολογική υποστήριξη (+)

Περιβάλλον εργασίας (+)

Βιβλιογραφία

Ασκήσεις

  1. Εφαρμόστε κάθε έναν από τους τρόπους μέτρησης του έργου πάνω στην εργασία που υλοποιήσατε για το μάθημα. Συγκρίνετε τα αποτελέσματά σας με αυτά άλλων ομάδων.