Η ομοιότητα μεταξύ του ελέγχου των συμβατικών εγγράφων και του debugging από πρώην μηχανικό πληροφορικής που είναι πλέον δικηγόρος
Το κύριο καθήκον ενός λεγόμενου “συμβολαιογράφου σύμβουλου εταιρείας” είναι ο έλεγχος και η τροποποίηση των συμβάσεων που η εταιρεία συνάπτει καθημερινά με πελάτες και εταίρους συνεργασίας. Ωστόσο, αυτοί οι ελέγχοι και οι τροποποιήσεις απαιτούν αναγκαστικά έναν “άνθρωπο που γνωρίζει καλά και το νομικό πεδίο και τον συγκεκριμένο τομέα εργασίας”. Θα εξηγήσουμε γιατί αυτό είναι απαραίτητο.
Ωστόσο, η ακόλουθη εξήγηση μπορεί να είναι δύσκολο να κατανοηθεί από κάποιον που δεν είναι μηχανικός ή δεν έχει εμπειρία στον προγραμματισμό. Το Monolith Law Office είναι ένα δικηγορικό γραφείο με έναν πρώην μηχανικό πληροφορικής και έμπειρο στην επιχειρηματική διαχείριση ως επικεφαλής. Το άρθρο αυτό είναι καταρτισμένο με την ιδέα ότι “ένα δικηγορικό γραφείο με πρώην μηχανικό πληροφορικής και επιχειρηματία ως επικεφαλής παρέχει εξηγήσεις σχετικά με τον έλεγχο και την τροποποίηση συμβάσεων σε μηχανικούς και επιχειρηματίες με εμπειρία στον προγραμματισμό”.
Με αυτή την προοπτική, ο έλεγχος και η τροποποίηση των συμβάσεων μπορούν να θεωρηθούν παρόμοιες διαδικασίες με το λεγόμενο “debugging” στον προγραμματισμό.
- Τι είναι τελικά το “bug”
- Τι ακριβώς είναι η διαδικασία του “debugging”
- Πώς ορίζει μια σύμβαση τους αλγόριθμους
- Τι περιλαμβάνει η διαδικασία τροποποίησης μιας σύμβασης
Θα ξεκινήσουμε με θέματα που για τους μηχανικούς είναι “αυτονόητα”, αλλά ακολουθεί εξήγηση.
Τι είναι τα “Bugs” και το “Debugging”
Τι δεν είναι ένα bug: Δεν είναι «βλάβη του Η/Υ»
Όταν ακούμε τη λέξη «bug», μπορεί να φανταστούμε έναν υπολογιστή που καπνίζει και εμφανίζει περίεργα μηνύματα στην οθόνη… Ωστόσο, ένας Η/Υ, κατά βάση, απλώς εκτελεί τις εντολές που του δίνονται. Αυτό ισχύει και όταν προκύπτει ένα bug. Δηλαδή, ένα «bug» είναι:
- Ο Η/Υ εκτελεί τις εντολές όπως του έχουν δοθεί
- Αλλά η συμπεριφορά του είναι «απρόσμενη» για τον χρήστη
αυτό το φαινόμενο.
Γιατί συμβαίνουν «απρόβλεπτες συμπεριφορές»
Ας σκεφτούμε, για παράδειγμα, το σφάλμα «διάτρησης τοίχου» σε ένα παιχνίδι δράσης τύπου Mario.
Το άλμα του Mario είναι μια δευτεροβάθμια συνάρτηση. Επιτάχυνση, ταχύτητα, συντεταγμένες. Ωστόσο, αν και μια δευτεροβάθμια συνάρτηση μπορεί να διαιρεθεί σε άπειρα λεπτομερείς τιμές X, όπως «Τι είναι το Y όταν X=1.76582;», στα βιντεοπαιχνίδια δεν μπορούμε να διαιρέσουμε τον χρόνο σε άπειρα λεπτομερείς στιγμές. Η οθόνη ανανεώνεται μόνο (για παράδειγμα) 30 φορές το δευτερόλεπτο. Επομένως, ο Mario κάνει κατά κάποιον τρόπο «τηλεμεταφορά» 30 φορές το δευτερόλεπτο.
Σε αυτό το πλαίσιο, ένα παράδειγμα όπου «ο Mario χτυπάει σε έναν τοίχο πάνω του κατά τη διάρκεια ενός άλματος και αναπηδά» είναι όταν
- την προηγούμενη στιγμή ο Mario βρισκόταν στον αέρα και
- την επόμενη στιγμή οι συντεταγμένες του Mario βρίσκονται μέσα στον τοίχο
Αυτή είναι η περίπτωση.
Σε τέτοιες περιπτώσεις, μπορούμε να κρίνουμε ότι «ο Mario χτύπησε σε έναν τοίχο πάνω του κατά τη διάρκεια ενός άλματος». Επομένως, αν γράψουμε ένα πρόγραμμα με φυσική γλώσσα ως εξής
Εάν οι συντεταγμένες του Mario βρίσκονται μέσα στον τοίχο, τότε εκτελείται η διαδικασία αναπήδησης (※1)
μπορούμε να υλοποιήσουμε τη διαδικασία όπου «ο Mario χτυπάει σε έναν τοίχο πάνω του κατά τη διάρκεια ενός άλματος και αναπηδά».
Το ※1 φαίνεται σωστό όσο γράφεται έτσι. Και πράγματι, «υπό ορισμένες συνθήκες» αυτή η διαδικασία είναι σωστή.
Ωστόσο, αν το σκεφτούμε πιο προσεκτικά, υπάρχουν επίσης περιπτώσεις όπως η ακόλουθη (※2).
Σε αυτή την περίπτωση, δεν υπάρχει στιγμή όπου «οι συντεταγμένες του Mario βρίσκονται μέσα στον τοίχο», και επομένως δεν εκτελείται η διαδικασία αναπήδησης, με αποτέλεσμα ο Mario να διαπερνά τον τοίχο.
Αυτό είναι ένα παράδειγμα «σφάλματος». Ακόμη και αν συμβεί ένα «σφάλμα διάτρησης τοίχου» για τούτο το λόγο, δεν σημαίνει ότι ο υπολογιστής έχει χαλάσει. Ο υπολογιστής απλώς εκτελεί τη συμπεριφορά που του έχει δοθεί, και η αξιολόγηση αυτής της συμπεριφοράς ως «απρόβλεπτη» ή «σφάλμα» γίνεται από τους ανθρώπους. Και αυτό το «σφάλμα» προκύπτει επειδή ο αλγόριθμος δεν είναι κατάλληλος.
Η εξέταση του εάν θα προκύψουν απρόβλεπτες λειτουργίες
Ωστόσο, δεν είναι σαφές από την αφηρημένη σκέψη μόνο εάν θα συμβεί το “πέρασμα μέσα από τοίχους” κατά τη διάρκεια του παιχνιδιού. Εάν το “πέρασμα μέσα από τοίχους” είναι δυνατόν ή όχι εξαρτάται από συνθήκες όπως:
- Πόσο ισχυρή είναι η αρχική ταχύτητα του άλματος του Μάριο; Υπάρχουν αντικείμενα που αυξάνουν τη δύναμη του άλματος;
- Πόσο λεπτός είναι ο τοίχος στην πιο λεπτή του κατάσταση;
Εξαρτάται από τις παραπάνω συνθήκες εάν μπορεί να συμβεί κάτι όπως το παράδειγμα ※2. Εάν το παράδειγμα ※2 δεν είναι δυνατόν, τότε το πρόγραμμα του παραδείγματος ※1 δεν έχει κανένα άλλο πρόβλημα.
Τι είναι η διαδικασία του «Debugging»;
Επομένως, η διαδικασία του «Debugging», δηλαδή της εντοπισμού και διόρθωσης σφαλμάτων, απαιτεί τα εξής βήματα:
- Κατανόηση του αλγορίθμου του προγράμματος (αν και το παραπάνω ※1 είναι σε φυσική γλώσσα, τα προγράμματα γράφονται σε ειδικές γλώσσες, κάτι που καθιστά την κατανόηση από μόνη της δύσκολη)
- Εξέταση των συνθηκών υπό τις οποίες λειτουργεί το πρόγραμμα (για παράδειγμα, έρευνα της ικανότητας αναπήδησης ή του πάχους των τοίχων)
- Αξιολόγηση για τυχόν απρόβλεπτες συμπεριφορές που μπορεί να εμφανιστούν
Αυτή είναι η διαδικασία που απαιτείται.
Τι ακριβώς περιλαμβάνει ο έλεγχος ενός συμβολαίου;
Ο έλεγχος ενός συμβολαίου είναι μια διαδικασία παρόμοια με αυτήν. Ένα συμβόλαιο καθ’ αυτό είναι ένα έγγραφο που προβλέπει τα γεγονότα που μπορεί να συμβούν στο μέλλον μεταξύ των μερών, του α’ και β’, και καθορίζει τα δικαιώματα και τις υποχρεώσεις που προκύπτουν για αυτά, καθώς και το πώς θα πρέπει να δράσουν αντίστοιχα. Σε αυτή την έννοια, μπορεί να περιγραφεί ως ένα “πρόγραμμα που ρυθμίζει τον πραγματικό κόσμο”. Για παράδειγμα,
Σε περίπτωση που συμβεί το γεγονός ΧΧ, ο α’ θα πρέπει να αποζημιώσει τον β’ με το ποσό των 1.000.000 γιεν.
Ένα συμβόλαιο που ρυθμίζει τέτοιες περιπτώσεις ορίζει τις συνθήκες και τις συνέπειες που σχετίζονται με μελλοντικά γεγονότα.
Κατά συνέπεια, η διαδικασία ελέγχου αυτού του “προγράμματος που ρυθμίζει τον πραγματικό κόσμο” για τυχόν προβλήματα και η διόρθωσή τους εάν χρειάζεται, αναπόφευκτα μοιάζει με τη διαδικασία του “debugging”.
Το συμβόλαιο δεν περιλαμβάνει την πλήρη εικόνα του αλγορίθμου
Ωστόσο, υπάρχει ένα σημείο που είναι δύσκολο να κατανοήσουν οι μη ειδικοί στο δίκαιο, αλλά είναι εξαιρετικά σημαντικό στα “συμβόλαια”. Τα συμβόλαια καθορίζουν μόνο ένα “μέρος” του αλγορίθμου που διέπει τις σχέσεις μεταξύ των μερών. Με άλλα λόγια, διαβάζοντας μόνο το συμβόλαιο, δεν μπορείτε να καταλάβετε πλήρως τον αλγόριθμο που ρυθμίζει τις σχέσεις σας με τον άλλο μέρος.
Για παράδειγμα, όταν αγοράζετε ένα μεταχειρισμένο CD από ένα κατάστημα, εσείς και το κατάστημα δεν συνάπτετε ένα “συμβόλαιο αγοράς” ως τέτοιο, αλλά αν το CD έχει γρατζουνιές που το καθιστούν αναπαραγωγή αδύνατη, θα θέλατε να παραπονεθείτε στο κατάστημα, και αναμένετε ότι το κατάστημα θα ανταποκριθεί σε αυτό. Αυτό δεν είναι απλώς ένα ζήτημα “επειδή είναι υπηρεσία”, αλλά θεωρητικά:
- Ένα συμβόλαιο αγοράς συνάπτεται ακόμα και χωρίς γραπτό συμβόλαιο
- Ο Ιαπωνικός Αστικός Κώδικας (Japanese Civil Code) ορίζει ότι ο πωλητής φέρει ευθύνη για ελαττώματα σε περιπτώσεις πώλησης συγκεκριμένων αντικειμένων, όπως τα μεταχειρισμένα CD
- Επομένως, ο αλγόριθμος που ορίζει ο Ιαπωνικός Αστικός Κώδικας λειτουργεί μεταξύ του καταστήματος και του πελάτη, και το κατάστημα φέρει την ευθύνη για τα ελαττώματα
Αυτή είναι η λογική. Και το “συμβόλαιο” είναι αυτό που αντικαθιστά τον αλγόριθμο που ορίζεται από τους νόμους όπως ο Ιαπωνικός Αστικός Κώδικας. Για παράδειγμα, αν μεταξύ του καταστήματος και του πελάτη έχει συναφθεί ένα συμβόλαιο που λέει “το κατάστημα δεν θα δεχθεί καμία επιστροφή για οποιοδήποτε ελάττωμα του CD μετά την αγορά”, τότε:
- Ένα συμβόλαιο αγοράς έχει συναφθεί
- Ο Ιαπωνικός Αστικός Κώδικας ορίζει ότι ο πωλητής φέρει ευθύνη για ελαττώματα
- Ωστόσο, οι όροι του συμβολαίου αντικαθιστούν την αρχή του 2, και έτσι το κατάστημα δεν φέρει ευθύνη για τα ελαττώματα
Αυτή είναι η κατάσταση.
Τα συμβόλαια “αντικαθιστούν” τις αρχές του Αστικού Κώδικα και άλλων νόμων
Αυτό ισχύει και στην περίπτωση συμβάσεων που συνάπτονται μεταξύ εταιρειών, όπως στην ανάπτυξη συστημάτων. Για παράδειγμα, αν έχει συναφθεί μια σύμβαση ανάθεσης ανάπτυξης συστημάτων μεταξύ δύο μερών,
- Η συγκεκριμένη σύμβαση καθιστά σαφές ότι έχει συναφθεί μια σύμβαση ανάθεσης.
- Στην περίπτωση της σύμβασης ανάθεσης, ο Αστικός Κώδικας επιβάλλει στον ανάδοχο την ευθύνη για τυχόν ελαττώματα.
- Εάν η σύμβαση περιλαμβάνει ρήτρες για την ευθύνη ελαττωμάτων, τότε αυτές οι ρήτρες “αντικαθιστούν” τις αρχές του Αστικού Κώδικα. Για παράδειγμα, αν έχει οριστεί μια περίοδος ευθύνης για ελαττώματα μεγαλύτερη από αυτήν που προβλέπει ο Αστικός Κώδικας, τότε ισχύει η περίοδος που έχει οριστεί.
Η δομή είναι λοιπόν αυτή. Δηλαδή, ακόμα και αν το συμβόλαιο δεν περιλαμβάνει ειδικές ρήτρες για την ευθύνη ελαττωμάτων, η ευθύνη αυτή παραμένει.
Αυτό δεν περιορίζεται μόνο στην ανάθεση ή την ανάπτυξη συστημάτων, αλλά αφορά μια γενική θεωρία σχετικά με όλες τις συμβάσεις που συνάπτονται από τις εταιρείες, όπως η μεταβίβαση μετοχών, η χρηματοδότηση μέσω δανεισμού (δάνεια κατανάλωσης χρημάτων), η απασχόληση, η έκδοση μετοχών κ.λπ.
Ως εκ τούτου, διαβάζοντας μόνο το συμβόλαιο, δεν μπορείτε να κατανοήσετε την πλήρη εικόνα του “αλγορίθμου” που διέπει τη σχέση μεταξύ της δικής σας εταιρείας και του συνεργάτη. Για να κατανοήσετε αυτήν την πλήρη εικόνα, πρέπει να κατανοήσετε τον “προεπιλεγμένο αλγόριθμο” που ορίζεται από τον Αστικό Κώδικα και άλλους νόμους. Το συμβόλαιο απλώς “αντικαθιστά” αυτόν τον προεπιλεγμένο αλγόριθμο.
Αν δεν μπορείτε να προβλέψετε μελλοντικά γεγονότα, τότε δεν μπορείτε να «αποσφαλματώσετε»
Επιπλέον, η απλή κατανόηση ενός αλγορίθμου δεν είναι αρκετή για να επιβεβαιώσετε ότι «ο αλγόριθμος δεν θα παρουσιάσει απρόβλεπτες συμπεριφορές». Όπως συμβαίνει με τα «σφάλματα» σε ένα παιχνίδι, οι αλγόριθμοι είναι κατά βάση αφηρημένες έννοιες και, αν δεν προβλέψετε ποια γεγονότα μπορεί να συμβούν στο μέλλον, δεν θα μπορέσετε να ελέγξετε αν «θα προκύψουν απρόβλεπτες συμπεριφορές σε περίπτωση που συμβούν τέτοια γεγονότα».
Αυτό αποτελεί ιδιαίτερα σημαντικό ζήτημα, ειδικά όταν πρόκειται για νέες εφαρμογές ή υπηρεσίες και προϊόντα, ή νέα επιχειρηματικά σχήματα. Σε περίπτωση που αναπτύξετε μια επιχείρηση με τέτοια προϊόντα ή σχήματα, τι μπορεί να συμβεί στο μέλλον; Αυτό είναι κάτι που είναι δύσκολο να προβλεφθεί χωρίς γνώση του συγκεκριμένου τομέα. Επιπλέον, ειδικά στην περίπτωση συμβάσεων μεταξύ εταιρειών, και οι δύο πλευρές ενεργούν με βάση ορισμένες οικονομικές λογικές, οπότε για την πρόβλεψη μελλοντικών γεγονότων και των πιθανών ενεργειών της αντίπαλης πλευράς, απαιτείται επίσης μια στρατηγική σκέψη που βασίζεται στη θεωρία παιχνιδιού στη διοίκηση επιχειρήσεων.
Εάν κάτι είναι «απρόβλεπτο» εξαρτάται επίσης από τη διοικητική κρίση
Επιπλέον, όπως οι άνθρωποι και όχι οι υπολογιστές κρίνουν τι αποτελεί «σφάλμα», έτσι και η απόφαση για το αν ένα αποτέλεσμα που προκύπτει από ένα συμβόλαιο είναι «απρόβλεπτο» δεν είναι απλώς ένα νομικό ζήτημα, αλλά ένα ζήτημα διοικητικής κρίσης.
Για παράδειγμα, ένας αλγόριθμος που ακολουθεί τις αρχές του «Ιαπωνικού Αστικού Κώδικα» μπορεί να είναι απαράδεκτος για μια συγκεκριμένη επιχείρηση σε ένα συγκεκριμένο επιχειρηματικό πεδίο. Αλλάζοντας το παράδειγμα, ο Ιαπωνικός Αστικός Κώδικας προβλέπει ως προεπιλεγμένο αλγόριθμο για τα συμβόλαια εντολής ότι η επαναπροσλήψη από τον εντολοδόχο αποτελεί παραβίαση του συμβολαίου. Ωστόσο, υπάρχουν περιπτώσεις όπου «για μια εταιρεία, η χρήση υπεργολάβων σε ένα συγκεκριμένο επιχειρηματικό πεδίο είναι κάτι το αναμενόμενο». Σε τέτοιες περιπτώσεις, η αποδοχή ενός συμβολαίου που:
- δεν αναφέρει τίποτα σχετικά με την επαναπροσλήψη (σε αυτή την περίπτωση, εφαρμόζεται ο προεπιλεγμένος αλγόριθμος του Ιαπωνικού Αστικού Κώδικα)
- αναφέρει ότι η επαναπροσλήψη είναι αδύνατη
δεν θα έπρεπε να είναι δυνατή, ακόμα και αν αυτό συμφωνεί με τις «αρχές του Ιαπωνικού Αστικού Κώδικα».
Επιπρόσθετα, στη διοίκηση υπάρχει πάντα το ρίσκο να κληθεί κανείς να αναλάβει ευθύνη εάν συμβεί κάποιο συγκεκριμένο γεγονός. Συμβόλαια που δεν ενέχουν «ρίσκο» για την εταιρεία σας, βασικά δεν υπάρχουν. Η αποδοχή ή μη αυτού του ρίσκου είναι τελικά ένα ζήτημα διοικητικής κρίσης. Οι διοικητικές αποφάσεις λαμβάνονται από τους διευθυντές και όχι από συμβούλους ή νομικούς συμβούλους, αλλά οι σύμβουλοι οφείλουν να παρέχουν στους διευθυντές όλες τις απαραίτητες πληροφορίες για να λάβουν τις αποφάσεις τους, και να επισημαίνουν τα ρίσκα με διακριτικότητα, όπως:
- ρίσκα που δεν χρειάζεται να επισημανθούν κάθε φορά
- ρίσκα που απαιτούν σημαντική απόφαση από την εταιρεία και μπορεί να χρειαστούν συνεδριάσεις ή άλλες διαδικασίες
Για να καθορίσουν την «διακριτικότητα» των ρίσκων, οι δικηγόροι που ελέγχουν τα συμβόλαια πρέπει να έχουν ένα βαθμό αίσθησης της διοίκησης, όπως και οι σύμβουλοι σε άλλους τομείς.
Συνοπτικά
Όπως φαίνεται, ο έλεγχος και η τροποποίηση ενός συμβολαίου είναι κατά βάση οι ακόλουθες διαδικασίες:
- Κατανόηση του πώς οι αρχές του Αστικού Κώδικα και άλλων νόμων τροποποιούνται μέσω του συμβολαίου και ποιο αλγόριθμο δημιουργείται ως αποτέλεσμα
- Εξέταση των πιθανών γεγονότων που μπορεί να συμβούν στο μέλλον υπό αυτόν τον αλγόριθμο
- Αξιολόγηση του εάν μπορεί να προκύψει κάποια απρόβλεπτη συμπεριφορά
Και οι παραπάνω διαδικασίες απαιτούν:
- Ειδική γνώση του νόμου, χωρίς την οποία η εργασία είναι δύσκολη
- Κατανόηση του περιεχομένου της επιχείρησης που ρυθμίζεται από το συμβόλαιο, όπως εφαρμογές ή ιστοσελίδες υπηρεσιών, και του επιχειρηματικού σχεδίου, χωρίς την οποία η εργασία είναι δύσκολη
- Κάποιο βαθμό κατανόησης του περιεχομένου και της διοικητικής φιλοσοφίας της επιχείρησης, χωρίς την οποία η εργασία είναι δύσκολη
Για αυτούς τους λόγους, ο έλεγχος και η τροποποίηση ενός συμβολαίου είναι μια εξαιρετικά «εξειδικευμένη» διαδικασία.
Οδηγίες για τη Δημιουργία και Επιθεώρηση Συμβολαίων από το Δικηγορικό μας Γραφείο
Στο Δικηγορικό Γραφείο Monolith, ως ένα γραφείο με ειδίκευση στον τομέα της Πληροφορικής, του Διαδικτύου και των Επιχειρήσεων, παρέχουμε υπηρεσίες δημιουργίας και επιθεώρησης διαφόρων ειδών συμβολαίων στις εταιρείες-συμβούλους και στους πελάτες μας.
Εάν σας ενδιαφέρει, παρακαλούμε δείτε τις λεπτομέρειες παρακάτω.
Category: IT
Tag: ITSystem Development