Σάββατο 5 Μαΐου 2012

Αντίστροφη κατασκευή προγραμμάτων

Απευθύνομαι σε προγραμματιστές.
Συνήθως ξεκινάμε από την ανάλυση ενός προβλήματος και προχωρούμε στην κατασκευή ενός προγράμματος (πρακτικά, ενός συνόλου προγραμμάτων) που αντιμετωπίζουν το πρόβλημα.
Άλλοτε, μας προσλαμβάνουν σε μια ομάδα προγραμματιστών και μας αναθέτουν να φτιάξουμε ένα μέρος της εφαρμογής με γλώσσα προγραμματισμού και προϋποθέσεις συμβατά με την δουλειά που ήδη έχει γίνει.
Σε όλες αυτές τις περιπτώσεις τα προγράμματα φτιάχνονται από εμάς. Δεν κάνουμε reverse engineering σε κάποιο ήδη υπάρχον πρόγραμμα (που απαγορεύεται σε αρκετά νομικά πλαίσια). Άρα δεν μπορεί να έρθει ένας τρίτος και να μας απαγορεύσει να χρησιμοποιούμε αυτή την εφαρμογή ή να μας ζητήσει τον πηγαίο κώδικα που γράψαμε, επειδή τάχα είναι δικός του.

Παρένθεση : Δυστυχώς έχει γίνει κι αυτό στην Ελλάδα. Ένας προγραμματιστής έγραψε πηγαία προγράμματα για μια εφαρμογή που χρειαζόταν κάποια εταιρεία και τους έδωσε τα εκτελέσιμα. Η εταιρεία μετά από χρόνια άλλαξε διοίκηση. Ο νέος CEO κάλεσε σε ραντεβού γνωριμίας τον προγραμματιστή. Το ραντεβού έγινε. Ο CEO έκανε μετά μήνυση στον προγραμματιστή ότι, όταν τους επισκέφθηκε, τους έκλεψε τα πηγαία που ήσαν ιδιοκτησία της εταιρείας. Ο προγραμματιστής είπε ότι ποτέ δεν είχε παραδώσει τα πηγαία προγράμματα και παρουσίασε στο δικαστήριο τρεις ανεξάρτητες πραγματογνωμοσύνες που έλεγαν ότι [είχε φτιάξει ένα program generator που έφτιαχνε το σύνολο προγραμμάτων μιας εφαρμογής. Με αυτό είχε φτιάξει σε ανύποπτο χρόνο εφαρμογές με εμφανείς ομοιότητες, για τρεις επιχειρήσεις και για την μηνύτρια επιχείρηση. Αποκλειόταν να είχε φτιάξει κάποιος τρίτος τα πηγαία της επιχείρησης όμοια με τα εξαγόμενα από το program generator του προγραμματιστή]. Το δικαστήριο αποφάσισε ότι τα πηγαία ανήκαν στην μηνύτρια επιχείρηση και ότι έπρεπε να τα "επιστρέψει" αμέσως ο προγραμματιστής αλλιώς θα έμπαινε δέκα χρόνια φυλακή.

Πρόσφατα το Ευρωπαϊκό Δικαστήριο αποφάσισε ότι οι δυνατότητες ενός προγράμματος και οι γλώσσες προγραμματισμού δεν μπορούν να έχουν copyright. Δηλαδή, αν δω ένα εκτελέσιμο να δουλεύει με κάποιο τρόπο, μπορώ να δημιουργήσω ένα δικό μου πρόγραμμα που να κάνει την ίδια δουλειά (αυτό είναι το reverse engineering, η αντίστροφη κατασκευή) και να μην μπορεί να έρθει κάποιος να μου απαγορεύσει την χρήση αυτού του προγράμματος.

Περισσότερες λεπτομέρειες θα δείτε εδώ.