Πόσοι προγραμματιστές χρειάζονται για να διατηρηθεί ο προηγουμένως γραμμένος κώδικας;

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

— Ο αριθμός των προγραμματιστών θα αυξάνεται συνεχώς - επειδή η ποσότητα του κώδικα αυξάνεται και όλο και περισσότεροι προγραμματιστές καλούνται συνεχώς να τον υποστηρίξουν.
— Αλλά ο κωδικός παλιώνει, ορισμένα από αυτά δεν υποστηρίζονται πλέον. Είναι ακόμη πιθανό να υπάρχει κάποιου είδους ισορροπία.

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

Ερώτηση ένα. Μπορεί να υποστηρίξει «καταναλώσει» όλους τους αναπτυξιακούς πόρους;

Σκεφτείτε μια ομάδα προγραμματιστών στην οποία ο αριθμός των συμμετεχόντων είναι σταθερός. Μερίδιο του χρόνου εργασίας τους Πόσοι προγραμματιστές χρειάζονται για να διατηρηθεί ο προηγουμένως γραμμένος κώδικας; (Πόσοι προγραμματιστές χρειάζονται για να διατηρηθεί ο προηγουμένως γραμμένος κώδικας;) δαπανάται για την ανάπτυξη νέου κώδικα και το υπόλοιπο μερίδιο χρόνου Πόσοι προγραμματιστές χρειάζονται για να διατηρηθεί ο προηγουμένως γραμμένος κώδικας; πηγαίνει για υποστήριξη. Μέσα στις παραδοχές του μοντέλου, υποθέτουμε ότι ο πρώτος τύπος δραστηριότητας στοχεύει στην αύξηση του όγκου του κώδικα και ο δεύτερος στοχεύει στην αλλαγή του (διόρθωση σφαλμάτων) και δεν έχει σημαντικό αντίκτυπο στον όγκο του κώδικα.

Ας υποδηλώσουμε Πόσοι προγραμματιστές χρειάζονται για να διατηρηθεί ο προηγουμένως γραμμένος κώδικας; ολόκληρο το ποσό του κώδικα που γράφτηκε μέχρι εκείνη τη στιγμή Πόσοι προγραμματιστές χρειάζονται για να διατηρηθεί ο προηγουμένως γραμμένος κώδικας;. Υποθέτοντας ότι η ταχύτητα γραφής του κώδικα είναι ανάλογη Πόσοι προγραμματιστές χρειάζονται για να διατηρηθεί ο προηγουμένως γραμμένος κώδικας;, παίρνουμε:

Πόσοι προγραμματιστές χρειάζονται για να διατηρηθεί ο προηγουμένως γραμμένος κώδικας;

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

Πόσοι προγραμματιστές χρειάζονται για να διατηρηθεί ο προηγουμένως γραμμένος κώδικας;

ή

Πόσοι προγραμματιστές χρειάζονται για να διατηρηθεί ο προηγουμένως γραμμένος κώδικας;

Οπου

Πόσοι προγραμματιστές χρειάζονται για να διατηρηθεί ο προηγουμένως γραμμένος κώδικας;

Λαμβάνουμε μια διαφορική εξίσωση που μπορεί εύκολα να ενσωματωθεί. Εάν την αρχική στιγμή το ποσό του κωδικού είναι μηδέν, τότε

Πόσοι προγραμματιστές χρειάζονται για να διατηρηθεί ο προηγουμένως γραμμένος κώδικας;

Στο Πόσοι προγραμματιστές χρειάζονται για να διατηρηθεί ο προηγουμένως γραμμένος κώδικας; λειτουργία Πόσοι προγραμματιστές χρειάζονται για να διατηρηθεί ο προηγουμένως γραμμένος κώδικας;Και Πόσοι προγραμματιστές χρειάζονται για να διατηρηθεί ο προηγουμένως γραμμένος κώδικας;. Και αυτό σημαίνει σταδιακή μείωση με την πάροδο του χρόνου στην ανάπτυξη νέων λειτουργιών στο μηδέν και μεταφορά όλων των πόρων στην υποστήριξη.

Ωστόσο, εάν κατά τη διάρκεια του χρόνου Πόσοι προγραμματιστές χρειάζονται για να διατηρηθεί ο προηγουμένως γραμμένος κώδικας; ο κωδικός γίνεται παρωχημένος και παύει να υποστηρίζεται, τότε ο αριθμός του κώδικα που απαιτεί υποστήριξη κάθε φορά Πόσοι προγραμματιστές χρειάζονται για να διατηρηθεί ο προηγουμένως γραμμένος κώδικας; είναι ήδη ίσο Πόσοι προγραμματιστές χρειάζονται για να διατηρηθεί ο προηγουμένως γραμμένος κώδικας; Τότε

Πόσοι προγραμματιστές χρειάζονται για να διατηρηθεί ο προηγουμένως γραμμένος κώδικας;

Πόσοι προγραμματιστές χρειάζονται για να διατηρηθεί ο προηγουμένως γραμμένος κώδικας;

а Πόσοι προγραμματιστές χρειάζονται για να διατηρηθεί ο προηγουμένως γραμμένος κώδικας; είναι μια λύση σε μια διαφορική εξίσωση με καθυστερημένο όρισμα [1]:

Πόσοι προγραμματιστές χρειάζονται για να διατηρηθεί ο προηγουμένως γραμμένος κώδικας;

Η λύση μιας τέτοιας εξίσωσης καθορίζεται μοναδικά με τον καθορισμό των τιμών Πόσοι προγραμματιστές χρειάζονται για να διατηρηθεί ο προηγουμένως γραμμένος κώδικας; "πριν από την αρχή του χρόνου" Πόσοι προγραμματιστές χρειάζονται για να διατηρηθεί ο προηγουμένως γραμμένος κώδικας;. Δεδομένου ότι ο κώδικας δεν είχε γραφτεί ακόμη πριν από την αρχική χρονική στιγμή, στην περίπτωσή μας Πόσοι προγραμματιστές χρειάζονται για να διατηρηθεί ο προηγουμένως γραμμένος κώδικας; στο Πόσοι προγραμματιστές χρειάζονται για να διατηρηθεί ο προηγουμένως γραμμένος κώδικας;.

Ας δούμε μερικά παραδείγματα. Θα μετρήσουμε τον χρόνο σε χρόνια και την ποσότητα του κώδικα σε χιλιάδες γραμμές. Στη συνέχεια για Πόσοι προγραμματιστές χρειάζονται για να διατηρηθεί ο προηγουμένως γραμμένος κώδικας; Οι τιμές της τάξης των δεκάδων είναι αποδεκτές, θα πάρουμε 50 και 100. Δηλαδή, σε ένα χρόνο η ομάδα ανάπτυξης θα γράψει πενήντα και εκατό χιλιάδες γραμμές κώδικα, αντίστοιχα. Για Πόσοι προγραμματιστές χρειάζονται για να διατηρηθεί ο προηγουμένως γραμμένος κώδικας; αποδεκτές τιμές μπορεί να είναι: Πόσοι προγραμματιστές χρειάζονται για να διατηρηθεί ο προηγουμένως γραμμένος κώδικας;, Πόσοι προγραμματιστές χρειάζονται για να διατηρηθεί ο προηγουμένως γραμμένος κώδικας;, Πόσοι προγραμματιστές χρειάζονται για να διατηρηθεί ο προηγουμένως γραμμένος κώδικας;. Αυτό σημαίνει ότι μια ομάδα ανάπτυξης μπορεί να υποστηρίξει την ποσότητα του κώδικα που γράφει σε ένα χρόνο, είτε είναι ένα τέταρτο, είτε μισό είτε πλήρης απασχόληση. Ως μέση διάρκεια ζωής του κώδικα, θα ορίσουμε τις ακόλουθες τιμές: 1, 2 και 4 έτη. Λύνοντας την εξίσωση αριθμητικά, λαμβάνουμε παραδείγματα συμπεριφοράς της συνάρτησης Πόσοι προγραμματιστές χρειάζονται για να διατηρηθεί ο προηγουμένως γραμμένος κώδικας; για ορισμένους συνδυασμούς παραμέτρων Πόσοι προγραμματιστές χρειάζονται για να διατηρηθεί ο προηγουμένως γραμμένος κώδικας;.
Πόσοι προγραμματιστές χρειάζονται για να διατηρηθεί ο προηγουμένως γραμμένος κώδικας;
Συμπεριφορά της συνάρτησης Πόσοι προγραμματιστές χρειάζονται για να διατηρηθεί ο προηγουμένως γραμμένος κώδικας; καθώς ο κώδικας παλιώνει, έχει αλλάξει. Η συνάρτηση δεν είναι πλέον μονότονη, αλλά οι διακυμάνσεις «ηρεμούν» με την πάροδο του χρόνου και υπάρχει η τάση να Πόσοι προγραμματιστές χρειάζονται για να διατηρηθεί ο προηγουμένως γραμμένος κώδικας; σε κάποια σταθερή τιμή. Τα γραφήματα δείχνουν: τόσο περισσότερο Πόσοι προγραμματιστές χρειάζονται για να διατηρηθεί ο προηγουμένως γραμμένος κώδικας;, Πόσοι προγραμματιστές χρειάζονται για να διατηρηθεί ο προηγουμένως γραμμένος κώδικας; и Πόσοι προγραμματιστές χρειάζονται για να διατηρηθεί ο προηγουμένως γραμμένος κώδικας;, δηλαδή όσο πιο αργά γερνάει ο κώδικας, όσο πιο γρήγορα αναπτύσσεται ο νέος κώδικας και όσο χαμηλότερη είναι η ποιότητα του κώδικα, τόσο λιγότεροι πόροι θα απομένουν για την ανάπτυξη νέας λειτουργικότητας. Υπήρχε η επιθυμία να δοθεί τουλάχιστον ένα παράδειγμα στο οποίο Πόσοι προγραμματιστές χρειάζονται για να διατηρηθεί ο προηγουμένως γραμμένος κώδικας; «κουμπώθηκε» κοντά στο μηδέν. Αλλά αυτό απαιτούσε την επιλογή δεικτών ποιότητας ανάπτυξης πολύ κακής ποιότητας και κώδικα που δεν παλιώνει για μεγάλο χρονικό διάστημα. Ακόμη και στο κάτω αριστερό γράφημα, παραμένει σημαντικός αριθμός πόρων για τη νέα λειτουργικότητα. Επομένως, η σωστή απάντηση στην πρώτη ερώτηση είναι μάλλον η εξής: θεωρητικά - ναι, είναι δυνατό. πρακτικά - δύσκολα.

Ερωτήματα που δεν μπορούσαν να απαντηθούν:

  1. Είναι αλήθεια ότι Πόσοι προγραμματιστές χρειάζονται για να διατηρηθεί ο προηγουμένως γραμμένος κώδικας; τείνει σε κάποιο όριο στο Πόσοι προγραμματιστές χρειάζονται για να διατηρηθεί ο προηγουμένως γραμμένος κώδικας; για όλα Πόσοι προγραμματιστές χρειάζονται για να διατηρηθεί ο προηγουμένως γραμμένος κώδικας;? Αν όχι για όλους, τότε για ποιους;
  2. Εάν υπάρχει όριο, πώς εξαρτάται η τιμή του Πόσοι προγραμματιστές χρειάζονται για να διατηρηθεί ο προηγουμένως γραμμένος κώδικας;?

Ερώτηση δεύτερη. Θα μπορούσε η συντήρηση του κώδικα να προκαλέσει απεριόριστη αύξηση στον αριθμό των προγραμματιστών;

Ας υποδηλώσουμε Πόσοι προγραμματιστές χρειάζονται για να διατηρηθεί ο προηγουμένως γραμμένος κώδικας; ο αριθμός των προγραμματιστών που εμπλέκονται στην ανάπτυξη νέου κώδικα. Οπως παραπάνω, Πόσοι προγραμματιστές χρειάζονται για να διατηρηθεί ο προηγουμένως γραμμένος κώδικας; — η ποσότητα του κώδικα που έχει γραφτεί μέχρι ένα χρονικό σημείο Πόσοι προγραμματιστές χρειάζονται για να διατηρηθεί ο προηγουμένως γραμμένος κώδικας;. Επειτα

Πόσοι προγραμματιστές χρειάζονται για να διατηρηθεί ο προηγουμένως γραμμένος κώδικας;

Διατηρήστε την υποστήριξη κωδικών απασχολημένη Πόσοι προγραμματιστές χρειάζονται για να διατηρηθεί ο προηγουμένως γραμμένος κώδικας; προγραμματιστές. Λαμβάνοντας υπόψη τον κωδικό γήρανσης,

Πόσοι προγραμματιστές χρειάζονται για να διατηρηθεί ο προηγουμένως γραμμένος κώδικας;

Οπου

Πόσοι προγραμματιστές χρειάζονται για να διατηρηθεί ο προηγουμένως γραμμένος κώδικας;

αν Πόσοι προγραμματιστές χρειάζονται για να διατηρηθεί ο προηγουμένως γραμμένος κώδικας;, Στη συνέχεια

Πόσοι προγραμματιστές χρειάζονται για να διατηρηθεί ο προηγουμένως γραμμένος κώδικας;

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

Συμπέρασμα

Τα μοντέλα που εξετάζονται είναι «μαλακά» μαθηματικά μοντέλα [2]. Είναι πολύ απλά. Ωστόσο, η εξάρτηση των αποτελεσμάτων της προσομοίωσης από τις τιμές των παραμέτρων αντιστοιχεί σε ό,τι αναμένεται για τα πραγματικά συστήματα, αυτό συνηγορεί υπέρ της επάρκειας των μοντέλων και της επαρκής ακρίβειας για τη λήψη εκτιμήσεων υψηλής ποιότητας.

Αναφορές

1. Elsgolts L.E., Norkin S.B. Εισαγωγή στη θεωρία των διαφορικών εξισώσεων με αποκλίνοντα όρισμα. Μόσχα. Εκδοτικός οίκος «Επιστήμη». 1971.
2. Arnold V.I. «Σκληρά» και «μαλακά» μαθηματικά μοντέλα. Μόσχα. Εκδοτικός οίκος MCNMO. 2004.

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο