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

Διομήδης Σπινέλλης
Τμήμα Διοικητικής Επιστήμης και Τεχνολογίας
Οικονομικό Πανεπιστήμιο Αθηνών
dds@aueb.gr

Εισαγωγή

Η τεχνολογία λογισμικού (software engineering) είναι ο κλάδος αυτός της πληροφορικής που έχει ως σκοπό την εξεύρεση τεχνικών και εργαλείων που η χρησιμοποίησή τους στην παραγωγή λογισμικού να εξασφαλίζει για το παραγόμενο προϊόν:
  1. συμμόρφωση με τις προδιαγραφές,
  2. παράδοση στο προδιαγεγραμμένο χρόνο,
  3. κατασκευή στο προδιαγεγραμμένο κόστος,
  4. προσιτή συντήρηση.

Ο κύκλος ζωής του λογισμικού

Το μοντέλο του καταρράκτη (waterfall model)

'Αλλα μοντέλα

Προσδιορισμός απαιτήσεων

Ο προσδιορισμός των απαιτήσεων διαχωρίζεται Το έγγραφο προδιαγραφών απαιτήσεων από το σύστημα (system requirements document) περιέχει τα παρακάτω στοιχεία (Σκορδαλάκης 1991, σ. 54):
  1. Ορισμός του προβλήματος
  2. Αιτιολόγηση του προβλήματος
  3. Σκοπός του συστήματος και του έργου
  4. Σκοπός του συστήματος και του έργου
  5. Περιορισμοί στο σύστημα και στο έργο
  6. Λειτουργίες ανά συνιστώσα του προβλήματος
    1. Υλικό
    2. Λογισμικό
    3. Άνθρωποι
  7. Χαρακτηριστικά χρηστών
  8. Περιβάλλοντα
    1. ανάπτυξης,
    2. λειτουργίας και
    3. συντήρησης
  9. Στρατηγική λύσης του προβλήματος
  10. Προτεραιότητες στα χαρακτηριστικά του συστήματος
  11. Κριτήρια αποδοχής του συστήματος
  12. Πηγές πληροφοριών
  13. Λεξιλόγιο
Αντίστοιχα το έγγραφο προδιαγραφών απαιτήσεων από το λογισμικό (software requirements document) περιέχει τα παρακάτω στοιχεία (Σκορδαλάκης 1991, σ. 63):
  1. Εισαγωγή
    1. Σκοπός
    2. Έκταση
    3. Ορισμοί, ακρονυμίες και συντομογραφίες
    4. Αναφορές
    5. Γενική εικόνα
  2. Γενική περιγραφή
    1. Προοπτική του προϊόντος
    2. Λειτουργίες
    3. Χαρακτηριστικά των χρηστών
    4. Γενικοί περιορισμοί
    5. Παραδοχές και εξαρτήσεις
  3. Ειδικές απαιτήσεις
    1. Λειτουργικές απαιτήσεις
      1. Λειτουργική απαίτηση 1
        1. Εισαγωγή
        2. Είσοδοι
        3. Επεξεργασία
        4. Έξοδοι
      2. Λειτουργική απαίτηση 1
      3. ...
      4. Λειτουργική απαίτηση ν
    2. Απαιτήσεις εξωτερικών διαπροσωπειών
      1. Διαπροσωπείες χρήστη (user interfaces)
      2. Διαπροσωπείες υλικού (hardware interfaces)
      3. Διαπροσωπείες λογισμικού (software interfaces)
      4. Διαπροσωπείες επικοινωνιών (communication interfaces)
    3. Απαιτήσεις επίδοσης
    4. Περιορισμοί σχεδίασης
      1. Συμμόρφωση με τα πρότυπα
      2. Περιορισμοί από το υλικό
    5. Ιδιώματα
      1. Διαθεσιμότητα
      2. Ασφάλεια
      3. Συντηρισιμότητα
      4. Μεταφερσιμότητα
    6. Άλλες απαιτήσεις
      1. Βάση δεδομένων
      2. Τρόποι λειτουργίας
      3. Προσαρμογή στο χώρο εγκατάστασης
  4. Παραρτήματα
  5. Ευρετήριο

Ανάλυση

Για την κατανόηση, τον προσδιορισμό και την έκφραση των απαιτήσεων από το λογισμικό είναι απαραίτητο ένα ιδεατό μοντέλο (conceptual model) των διεργασιών του συστήματος στο οποίο θα λειτουργήσει το λογισμικό. Τα μοντέλα αυτά χρησιμοποιούν τις παρακάτω τεχνικές παράστασης:
  1. Ροή δεδομένων (data flow)
  2. Μηχανή πεπερασμένων καταστάσεων (finite state machine)
  3. επικοινωνούσες ταυτόχρονες διεργασίες (communicating concurrent processes)
  4. Μοντέλο οντοτήτων σχέσεων (entity relationship models)
  5. Εξομοίωση (simulation)
  6. Λειτουργική σύνθεση (functional composition)

Σχεδίαση

Κωδικοποίηση

Έλεγχος

Διοίκηση, οργάνωση και κοστολόγηση

Διασφάλιση ποιότητας

Περιβάλλοντα και γλώσσες ανάπτυξης

Παραδείγματα

Τα παραδείγματα που ακολουθούν προέρχονται από το περιβάλλον Microsoft Visual Studio.


Διαλογικός σχεδιασμός διεπαφής χρήστη


Ολοκληρωμένο σύστημα βοήθειας


Οδηγός δημιουργίας της εφαρμογής


Διαλογική μεταγλώττιση


Αποσφαλμάτωση


Φυλλομέτρηση κλάσεων

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

Ασκήσεις