College Compass

College Compass

Mental Wealth: Professional Life 1 (IT Project) · CN4005

Εβδομάδα 1: Μηχανική λογισμικού και πληροφοριακά συστήματα

  • software-engineering
  • software-crisis
  • information-systems
  • ethics

Σημειώσεις μελέτης βασισμένες στις διαλέξεις της Εβδομάδας 1: «Μηχανική Λογισμικού: Εισαγωγή και Ιστορικό» και «Εισαγωγή στα πληροφοριακά συστήματα». Οι διαφάνειες βρίσκονται στο Moodle.

Αυτή η εβδομάδα στήνει το πλαίσιο του μαθήματος: γιατί χρειαζόμαστε κανόνες για να φτιάχνουμε λογισμικό, τι είναι η μηχανική λογισμικού και πού «ζει» το λογισμικό μέσα σε μια επιχείρηση.

Η κρίση λογισμικού

Ο όρος κρίση λογισμικού ακούστηκε για πρώτη φορά στο συνέδριο του ΝΑΤΟ για τη μηχανική λογισμικού, το 1968 στη Γερμανία. Οι υπολογιστές είχαν γίνει πολύ πιο ισχυροί χάρη στα ολοκληρωμένα κυκλώματα, και μπορούσαν πια να λύσουν πολύ πιο σύνθετα προβλήματα. Οι τρόποι όμως με τους οποίους γραφόταν το λογισμικό δεν είχαν προλάβει να αλλάξουν. Ο Edsger Dijkstra το συνόψισε το 1972: όσο μεγάλωναν οι υπολογιστές, τόσο μεγάλωνε και το πρόβλημα του προγραμματισμού.

Τα συμπτώματα ήταν γνώριμα και σήμερα:

  • έργα που ξεπερνούσαν τον προϋπολογισμό και τον χρόνο·
  • λογισμικό χαμηλής ποιότητας, που δεν έκανε αυτό που ζητήθηκε·
  • κώδικας που γινόταν δύσκολο να συντηρηθεί·
  • έργα που δεν παραδόθηκαν ποτέ.

Η απάντηση ήταν ένα σύνολο τεχνικών, διαδικασιών και μεθοδολογιών που έγιναν γνωστές ως μηχανική λογισμικού (software engineering). Δεν υπάρχει μία «ιδανική» προσέγγιση, και πολλά έργα εξακολουθούν να αποτυγχάνουν, κυρίως όταν είναι μεγάλα, ασαφή ή όταν οι τεχνικές δεν εφαρμόζονται σωστά. Όσο το λογισμικό γίνεται πιο σύνθετο, τόσο περισσότερο χρειάζεται.

Τι είναι λογισμικό

Λογισμικό δεν είναι μόνο τα προγράμματα. Περιλαμβάνει και:

  • την τεκμηρίωση χρήστη (πώς χρησιμοποιείται)·
  • την τεκμηρίωση συστήματος (πώς είναι φτιαγμένο)·
  • τα αρχεία ρυθμίσεων·
  • τη συμφωνία χρήσης (άδεια).

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

Υπάρχουν δύο βασικοί τύποι λογισμικού:

Κριτήριο Γενικό (generic, COTS) Κατά παραγγελία (bespoke)
Τι είναι έτοιμο προϊόν που πουλιέται ελεύθερα φτιάχνεται για έναν συγκεκριμένο πελάτη
Ποιος ορίζει τις προδιαγραφές η εταιρεία που το αναπτύσσει ο πελάτης που το παραγγέλνει
Παράδειγμα ένα πρόγραμμα επεξεργασίας κειμένου το σύστημα κρατήσεων μιας αεροπορικής

Τι είναι μηχανική λογισμικού

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

Στο κέντρο της βρίσκεται ο πελάτης. Στο τέλος ενός έργου ρωτάμε: καλύφθηκαν οι απαιτήσεις; Κάνει το προϊόν αυτό που ήθελε ο πελάτης; Παραδόθηκε στην ώρα του και μέσα στον προϋπολογισμό; Είναι εύχρηστο, εύκολο στη συντήρηση και κατάλληλο για το περιβάλλον του; Για να απαντηθούν θετικά, η μηχανική λογισμικού χρησιμοποιεί διαδικασίες, εργαλεία και μεθόδους.

Μηχανική λογισμικού, επιστήμη υπολογιστών, προγραμματισμός

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

Τα στάδια

Όλοι οι ορισμοί συμφωνούν σε μια σειρά από δραστηριότητες: ανάλυση, απαιτήσεις, σχεδιασμός, κωδικοποίηση και ενοποίηση, δοκιμές, παράδοση και συντήρηση. Αυτή η σειρά είναι ο κύκλος ζωής ανάπτυξης λογισμικού (SDLC). Υπάρχουν πολλά μοντέλα για το πώς οργανώνονται τα στάδια, όπως ο καταρράκτης και το σπειροειδές μοντέλο, που τα βλέπουμε στην Εβδομάδα 3.

Τα οφέλη

  • Εξοικονομεί χρόνο και χρήμα: περισσότερη δουλειά στην αρχή, για καλό σχεδιασμό, σημαίνει λιγότερες «φωτιές» αργότερα.
  • Λιγότερα σφάλματα: τα προβλήματα αναζητούνται από νωρίς, και οι δοκιμές γίνονται συστηματικά.
  • Καλύτερες λύσεις: εξετάζονται συστηματικά οι εναλλακτικές.
  • Διαφάνεια: οι αποφάσεις τεκμηριώνονται, η πληροφορία μοιράζεται στην ομάδα και τα λάθη εντοπίζονται ευκολότερα.

Τα χαρακτηριστικά του καλού λογισμικού

Χαρακτηριστικό Τι σημαίνει
Συντηρησιμότητα μπορεί να αλλάζει για να καλύπτει τις νέες ανάγκες του πελάτη
Αξιοπιστία λειτουργεί σωστά και με ασφάλεια, χωρίς να προκαλεί ζημιά όταν κάτι πάει στραβά
Αποδοτικότητα δεν σπαταλά πόρους, όπως μνήμη και χρόνο επεξεργαστή
Ευχρηστία κάνει τη δουλειά για την οποία φτιάχτηκε, με κατάλληλη διεπαφή και τεκμηρίωση

Πληροφοριακά συστήματα και επιχειρήσεις

Το περιβάλλον των επιχειρήσεων

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

Σύστημα, οργανισμός, πληροφοριακό σύστημα

  • Σύστημα είναι ένα σύνολο στοιχείων που σχετίζονται και αλληλεπιδρούν, ώστε να πετύχουν μαζί ένα αποτέλεσμα. Το πώς λειτουργεί εξαρτάται και από τα στοιχεία του και από τις σχέσεις τους.
  • Μια επιχείρηση είναι κι αυτή σύστημα: έχει εισόδους (χρήματα, ανθρώπους, πρώτες ύλες, δεδομένα), επεξεργασία, εξόδους (προϊόντα, υπηρεσίες) και ανατροφοδότηση. Οι κερδοσκοπικές επιχειρήσεις στοχεύουν στο κέρδος· οι μη κερδοσκοπικοί οργανισμοί (σύλλογοι, πανεπιστήμια) σε άλλους σκοπούς.
  • Οι διαδοχικές διαδικασίες που μετατρέπουν τους πόρους σε προϊόντα σχηματίζουν την αλυσίδα αξίας. Δύο κρίσιμα σημεία της είναι η διαχείριση της εφοδιαστικής αλυσίδας (τι προμήθειες χρειάζονται, πώς γίνονται προϊόντα, πώς αποστέλλονται) και η διαχείριση πελατειακών σχέσεων (CRM: προώθηση, πωλήσεις, εξυπηρέτηση, προφίλ πελατών).

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

Το μοντέλο των πέντε στοιχείων

Ένα πληροφοριακό σύστημα αποτελείται από πέντε στοιχεία:

  1. Υλικό: η τεχνολογική υποδομή.
  2. Λογισμικό: λογισμικό συστήματος και λογισμικό εφαρμογών.
  3. Δεδομένα: συλλέγονται, επεξεργάζονται, αποθηκεύονται και χρησιμοποιούνται.
  4. Διαδικασίες: οι κανόνες για το πώς δουλεύουν μαζί τα υπόλοιπα.
  5. Άνθρωποι: χρήστες, τεχνικό προσωπικό, στελέχη, ιδιοκτήτες.

Η μελέτη των πληροφοριακών συστημάτων αντλεί από πολλές επιστήμες: πληροφορική, επιχειρησιακή έρευνα, διοίκηση, ψυχολογία, κοινωνιολογία, πολιτική επιστήμη και οικονομικά. Ανάλογα με το τι κοιτάμε, μιλάμε για τεχνική προσέγγιση (υλικό, αλγόριθμοι), συμπεριφορική (πώς τα βλέπουν οι άνθρωποι· η καλύτερη τεχνική λύση αποτυγχάνει αν δεν την αποδεχτούν οι χρήστες), κοινωνικο-τεχνική (και τα δύο μαζί) και επιχειρηματική (το σύστημα είναι επένδυση και πρέπει να φέρει όφελος: περισσότερα έσοδα, λιγότερα έξοδα, μεγαλύτερη παραγωγικότητα).

Ηθική στην κοινωνία της πληροφορίας

  • Ιδιωτικότητα: προστασία των προσωπικών δεδομένων, ειδικά των «ευαίσθητων» (υγεία, θρησκεία, πολιτικές πεποιθήσεις, ποινικό μητρώο κ.ά.). Στην Ελλάδα την εποπτεύει η Αρχή Προστασίας Δεδομένων Προσωπικού Χαρακτήρα.
  • Ακρίβεια: οι πληροφορίες να είναι σωστές, πλήρεις και επίκαιρες, με διαδικασίες για τη διόρθωσή τους.
  • Πνευματική ιδιοκτησία: τα ψηφιακά έργα αντιγράφονται εύκολα, γι’ αυτό προστατεύονται από νόμους (copyright). Το πειρατικό λογισμικό δεν έχει εγγύηση ούτε υποστήριξη.
  • Εμπιστευτικότητα: τι γίνεται αν ένας εργαζόμενος με πρόσβαση σε κρίσιμα στοιχεία μετακινηθεί σε ανταγωνίστρια εταιρεία; Γι’ αυτό υπάρχουν οι συμφωνίες εμπιστευτικότητας.
  • Πρόσβαση: ποιος μπορεί να χρησιμοποιήσει τις πληροφορίες, με ποια υποδομή και ποιες γνώσεις, και πώς μένουν προσβάσιμες και σε άτομα με αναπηρία.

Στα μέσα κοινωνικής δικτύωσης προστίθενται ζητήματα όπως τα προφίλ που φτιάχνουν οι εταιρείες χωρίς συγκατάθεση, οι ψεύτικες ταυτότητες, το δικαίωμα στη λήθη και ο διαδικτυακός εκφοβισμός. Για τις επιχειρήσεις, μια απρόσεκτη ανάρτηση ενός υπαλλήλου μπορεί να βλάψει τη φήμη τους, και ο νόμος συχνά δεν προλαβαίνει την τεχνολογία. Πολλές εταιρείες χρησιμοποιούν δικά τους εταιρικά κοινωνικά δίκτυα, όπως το Microsoft Teams.

Ερωτήσεις αυτοαξιολόγησης

1. Ποια ήταν τα συμπτώματα της «κρίσης λογισμικού»;

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

2. Μια τράπεζα παραγγέλνει μια εφαρμογή μόνο για τους δικούς της πελάτες. Είναι γενικό ή κατά παραγγελία λογισμικό, και ποιος ορίζει τις προδιαγραφές;

Κατά παραγγελία (bespoke). Τις προδιαγραφές τις ορίζει ο πελάτης, η τράπεζα, και η εταιρεία ανάπτυξης δουλεύει σύμφωνα με αυτές.

3. Ποια είναι τα πέντε στοιχεία ενός πληροφοριακού συστήματος;

Υλικό, λογισμικό, δεδομένα, διαδικασίες και άνθρωποι.

4. Γιατί λέμε ότι ο προγραμματισμός είναι «μόνο ένα μικρό μέρος» της μηχανικής λογισμικού;

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


Πηγές: Διαλέξεις της Εβδομάδας 1 του μαθήματος· I. Sommerville, Software Engineering (10η έκδοση)· R. S. Pressman και B. R. Maxim, Software Engineering: A Practitioner’s Approach (8η έκδοση).