Software Metrics - Μετρήσεις πηγαίου κώδικα (II)



  • DC (Decision Count): Αποτιμά τη λογική δομή ενός προγράμματος (Rushby J.; 1988). Καθορίζεται από το πλήθος των δομών ελέγχου (υπό-συνθήκη δομές και ανακυκλώσεις).

  • DSI (Delivered Source Instructions): Ο δείκτης αναφέρεται στο πλήθος των εκτελέσιμων εντολών ενός λογισμικού (Boehm B.;19814. Μετρά τις διαφορετικές εντολές στην ίδια γραμμή ως διαφορετικές και αγνοεί τα σχόλια, τις δηλώσεις δεδομένων και τα headings.

  •  ECM (Essential Complexity Measure): Η βασική πολυπλοκότητα ενός τμήματος λογισμικού (module) υπολογίζεται αφού πρώτα αφαιρεθούν όλα τα πρωτογενή στοιχεία δομής του. Μετρά δηλαδή πόσο θα ‘μειωθεί’ o γράφος ροής, δηλαδή αν αποσυντεθεί σε στοιχειώδεις δομές (Watson A., McCabe T.; 1996).

  • EOR (Extent of Reuse): Μετρά το ποσοστό επαναχρησιμοποίησης κώδικα σε ένα υπάρχον πρόγραμμα. Ορίζονται τέσσερα διαφορετικά επίπεδα: reused verbatim (κώδικας που επαναχρησιμοποιήθηκε χωρίς καμία αλλαγή), slightly modified (λιγότερο από 25% κώδικα έχει αλλαχθεί), extensively modified (25% και περισσότερο των γραμμών του κώδικα έχει αλλαχθεί) και new (εντελώς νέος κώδικας). Με τον τρόπο αυτό, για ένα συγκεκριμένο πρόγραμμα ορίζεται το μέγεθος (size) που τροποποιήθηκε σε σχέση με το συνολικό και, επομένως, το ποσοστό επαναχρησιμοποίησης στα τέσσερα επίπεδα (Frakes W. Terry C.;1996).

  • ESM (Equivalent Size Measure): Μια καλή πρακτική κατά την ανάπτυξη λογισμικού είναι η επαναχρησιμοποίηση κώδικα. Έτσι για πολλούς το μέγεθος των προγραμμάτων έχει δύο συνιστώσες. Μια για πρόσφατο κώδικα και μια για κώδικα που υπήρχε και προσαρμόστηκε για να επαναχρησιμοποιηθεί. Οι συνιστώσες αυτές μπορεί να εκφραστούν με μετρήσεις σε γραμμές κώδικα (Boehm B.;1981).

  • FC (Function Count): Ορίζεται από τον αριθμό των συναρτήσεων (functions) ενός προγράμματος. Συνάρτηση θεωρείται μια συλλογή εκτελέσιμων εντολών που πραγματοποιούν μια συγκεκριμένη εργασία και οι δηλώσεις των παραμέτρων που διαχειρίζονται οι εντολές αυτές (Conte S., Dunsmore H., Shen V., Zage W.; 1987)

  • FUP (Function Points):  Ο δείκτης είναι βασισμένος στο πλήθος των δομών δεδομένων που ορίζονται κα χρησιμοποιούνται σε ένα λογισμικό και επιχειρεί να καταδείξει με ένα αριθμητικό μέγεθος την ποσότητα των επιχειρησιακών λειτουργιών που προσφέρει ένα λογισμικό στον τελικό χρήστη του (Albrecht A., Gaffney J.;1983).

  • IFL (Information Flow): Είναι δείκτης ο οποίος αποτυπώνει την πολυπλοκόητητα ενός τμήματος λογισμικού (module). Μετρά τις κλήσεις ενός υποπρογράμματος (module) από το λογισμικό (Henry S., Kafura D.;1981).

  •  ΚΝΜ (Knot Measure): Είναι δείκτης ο οποίος καταμετρά τον συνολικό αριθμό των διελεύσεων από κάθε σημείο ελέγχου ροής ενός λογισμικού (Woodward M., Hennell M., Hedley D.;1979).

  • LVA (Live Variables): H μετρική μετρά για κάθε γραμμή κώδικα πόσες μεταβλητές βρίσκονται σε χρήση (Dunsmore H., Gannon J.;1979).

  • LOC (Lines Of Code):  Μετρά τον αριθμό των γραμμών κώδικα. Παραλλαγές της είναι οι μετρικές που μετράνε τον αριθμό των κενών γραμμών, του εκτελέσιμου κώδικα, των γραμμών του πηγαίου κώδικα, το ποσοστό σχολίων κλπ. (Conte S., Dunsmore H., Shen V.;1986);

  • MNP (Minimum Number Of Path): Μετρά τον ελάχιστο αριθμό των μονοπατιών κατά την εκτέλεση εντός προγράμματος και την επισκεψιμότητα καθενός κόμβου του προγράμματος  (Schneidewind N., Hoffmann H.;1979).

  • MOR (Morphology Metrics): Μετρά τα μορφολογικά χαρακτηριστικά ενός λογισμικού, όπως το μέγεθος του, το αριθμό των υποπρογραμμάτων του, το πλήθος των διεπαφών μεταξύ υποπρογραμμάτων κλπ (Yourdon E., Constantine L.;1979).

  • NLE (Nesting Levels): Ο δείκτης αποτυπώνει το βάθος των εμφωλιασμένων δομών στις δομές ελέγχου του προγράμματος (Zolnowski J., Simmons D.;1981);

  • RA (Reach Ability): Μετρά τη λογική δομή του προγράμματος. Ορίζει την επισκεψιμότητα ως

R = πλήθος διαφορετικών τρόπων για να φτάσει κάποιος ένα κόμβο και
R’ = (συνολικό πλήθος μονοπατιών) / (αριθμός κόμβων)
Η μετρική αυτή σχετίζεται με τον αριθμό των λαθών και τον χρόνο εντοπισμού τους (Schneidewind N., Hoffmann H.;1979);

  •  SSC (Software Science and Cyclomatic complexity): Αφορά ένα σύνθετο δείκτη ο οποίος συνδυάζει αφενος την προσέγγιση Halsteads Software Science (θεωρεί ότι τα προγράμματα μπορούν να ειδωθούν ως γλώσσες έκφρασης και εκπονεί διάφορους δείκτες) και αφετέρου την προσέγγιση του McCabe ως προς την πολυπλοκότητα (Baker A., Zweben S.;1980);
  • SSM (Software Science Metrics): Αφορά ένα σύνολο δεικτών οι οποίοι απεικονίζουν διάφορα χαρακτηριστικά του λογισμικού. Βασίζονται κατ’ εξοχήν σε δύο ποσοτικά χαρακτηριστικά ενός προγράμματος α) το πλήθος των διακριτών  τελεστών και β) το πλήθος των διακριτών  των τελεστέων  (Halstead M.;1977).
  • SWM (Specification Weight Metrics): Η παρούσα μετρική αποτελείται από 2 δείκτες. Την δείκτη function bang που βασίζεται στον αριθμό των χαμηλότερου επιπέδου (πρωτογενών) λειτουργιών σε ένα διάγραμμα ροής δεδομένων και τον δείκτη data bang που σταθμίζεται ανάλογα με τον αριθμό των σχέσεων που εμπλέκονται σε κάθε οντότητα (DeMarco T,; 1982);
  • TRI (Tree Impurity): Ένα σωστά σχεδιασμένο σύστημα έχει ιεραρχική δομή. Αυτό σημαίνει ότι ένα υψηλότερο επίπεδο κανονικά πρέπει να χρησιμοποιεί αρκετές λειτουργίες χαμηλότερου επιπέδου. Έτσι η εξάρτηση αυτή μπορεί να σχεδιαστεί με την μορφή δέντρου (γράφου). Ο παρών δείκτης μετρά πόσο ο σχηματιστείς γράφος απέχει από το να έχει δενδρική δομή (Breiman L., Freidman R., Olsen R. Stone C.; 1984).
  • TRU (Transfer Usage): Ένα πρόγραμμα είναι κατανοητό αν οι διαδοχικές δηλώσεις αντιστοιχούν σε διαδοχικές δράσεις στο χρόνο. Η χρήση μη δομημένων εντολών μεταφοράς προγράμματος από ένα σημείο σε ένα άλλο χωρίς εννοιολογική συσχέτιση, π.χ. με χρήση της εντολής GOTO, διαταράσσει την ομαλή ροή και κάνει ιδιαίτερα δύσκολη την κατανόηση του. Ο δείκτης TRU αποτυπώνει αν και κατά πόσο τηρείται η λογική ακολουθία στο λογισμικό (Woodward M., Hennell M., Hedley D.;1979). 


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

  1. Rushby J.; (1988); “Quality Measures and Assurance for AI Software”; SRI International; Sponsored by National Aeronautics and Space AdministrationLangley Research Center
  2. Boehm B.;(1984); “Software engineering economics”; ”; IEEE Transactions on Software Engineering; SE-10; Issue 1; pp 4-21.
  3. Watson A., McCabe T.; (1996); “Structured Testing: A Testing Methodology
    Using the Cyclomatic Complexity Metric”; National Institute of Standards and Technology Special Publication 500-235
  4. Frakes W. Terry C.;(1996); “Software Reuse: Metrics and Models”; ACM Computing Surveys; Vol. 28; No. 2; pp 416- 435
  5. Conte S., Dunsmore H., Shen V., Zage W.; (1987); “A Software Metrics Survey”; Computer Science Technical Report; Paper 621; Purdue University
  6. Albrecht A., Gaffney J.;(1983); “Software function, source lines of code and development effort prediction”; IEEE Transactions on Software Engineering; SE-9; Volume 6;  pp 639-648.
  7. Henry S., Kafura D.;(1981); “Software structure metrics based on information flow”; IEEE Transactions on Software Engineering; SE-7; Volume 5;  pp 510-518.
  8. Woodward M., Hennell M., Hedley D.;(1979); “A measure of control flow complexity in program text”; IEEE Transactions on Software Engineering; SE-5; Volume 1;  pp 45-50.
  9. Dunsmore H., Gannon J.;(1979);  “Data referencing: an empirical investigation”; IEEE Computer; Volume 12;  pp 50-59.
  10. Conte S., Dunsmore H., Shen V.;(1986); “Software engineering metrics and models”; Benjamin/Cummings; pp 62-70.
  11. Schneidewind N., Hoffmann H.;(1979); “An experiment in software error data collection and analysis”; IEEE Transactions on Software Engineering; SE-5; Volume 3; pp 276- 286.
  12. Yourdon E., Constantine L.;(1979); Structured Design; New Jersey: PTR Prentice Hall.
  13. Zolnowski J., Simmons D.;(1981); “Taking the measure of program complexity”; Proceedings of the National Computer Conference;  pp 329-336.
  14. Baker A., Zweben S.;(1980); “A comparison of measures of control flow complexity”; IEEE Transactions on Software Engineering; SE-6; Volume 6; pp 506-512.
  15. Halstead M.;(1977); Elements of software science; New York: Elsevier Science LTD, 1977.
  16. DeMarco T,;(1982); Controlling Software Projects; Yourdon Press, 1982.
  17. Breiman L., Freidman R., Olsen R. Stone C.; (1984); Classification and Regression Trees; New York: Wadsworth; Pacific Grove, CA, 1984.

Δεν υπάρχουν σχόλια: