Προσδιορισμός απαιτήσεων, ανάλυση και σχεδίαση

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

Απαιτήσεις

Ο προσδιορισμός των απαιτήσεων διαχωρίζεται Το έγγραφο προδιαγραφών απαιτήσεων από το σύστημα (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)
Η δομημένη ανάλυση (structured analysis) χρησιμοποιεί ως βάση το μοντέλο ροής δεδομένων και μια σειρά από εξειδικευμένους συμβολισμούς για την καταγραφή των απαιτήσεων: Εκτός από τη δομημένη ανάλυση η οποία ταιριάζει με το διαδικασιακό παράδειγμα προγραμματισμού όπως υποστηρίζεται από τις γλώσσες C, Pascal, Fortran κλπ, στις μέρες μας χρησιμοποιείται συχνά και η αντικειμενοστρεφής ανάλυση (object oriented analysis) σε συνδυασμό με αντικειμενοστρεφείς γλώσσες όπως η C++, Java, Eiffel, Smalltalk κλπ.

Διάγραμμα ροής δεδομένων

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

Έτσι, το επόμενο σχήμα παριστάνει το διάγραμμα ροής δεδομένων για έναν απλό ελεγκτή ορθογραφίας. Το κείμενο αρχικά χωρίζεται σε λέξεις (split words) οι οποίες ταξινομούνται (sort). Στη συνέχεια απαλείφονται οι πολλαπλές εμφανίσεις λέξεων (unique). Το λεξικό του συστήματος ενώνεται με το λεξικό του χρήστη (merge). Τέλος, εμφανίζονται οι λέξεις που υπάρχουν στο κείμενο αλλά όχι στα ενωμένα λεξικά (not common).

Λεξικό δεδομένων

Κατά τη δημιουργία ενός μοντέλου θα ονομαστεί τυπικά ένας μεγάλος αριθμός από οντότητες, τύπους, σχέσεις και ιδιότητες. Το λεξικό δεδομένων περιέχει όλα τα παραπάνω ονόματα, μαζί με τον τύπο και μια επεξήγηση του κάθε ονόματος. Ο παρακάτω πίνακας περιέχει ένα παράδειγμα από λεξικό δεδομένων για μια υποθετική εφαρμογή τράπεζας.
Όνομα Τύπος Περιγραφή
Πελάτης Δομή Η εγγραφή με τα στοιχεία ενός πελάτη. Περιέχει όνομα, κωδικό λογαριασμού και υπόλοιπο λογαριασμού.
Κωδικός λογαριασμού INT(20) Ο μοναδικός κωδικός του λογαριασμού
Όνομα CHAR(30) Το ονοματεπώνυμο ενός πελάτη
Υπόλοιπο λογαριασμού INT(12) Το καθαρό υπόλοιπο του λογαριασμού σε δρχ.

Δομικές μονάδες

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

Έτσι για παράδειγμα το λειτουργικό σύστημα Windows NT μακροσκοπικά χωρίζεται σε συστήματα επικοινωνίας με το χρήστη, επικοινωνίας με το υλικό, βοηθητικά προγράμματα, κλπ. Το σύστημα επικοινωνίας με το χρήστη χωρίζεται στα υποσυστήματα γραφικών, κειμένου, ήχου, ελεγκτών (controls) κλπ. Μικροσκοπικά, οι σύνθετες δομικές μονάδες του υποσυστήματος ελεγκτών μπορεί να είναι ο ελεγκτής για γραφικό πλήκτρο (button), ελεγκτής πεδίο εισόδου (input box), ελεγκτής για κυλιόμενη μπάρα (scrollbar) κλπ. Τέλος, ο ελεγκτής για την κυλιόμενη μπάρα αποτελείται από απλές δομικές μονάδες (συναρτήσεις) που αντιδρούν στις εντολές του χρήστη.

Μερικά παραδείγματα σύνθετων δομικών μονάδων είναι τα παρακάτω:

Σχεδίαση

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

Για την αποτύπωση του αρχιτεκτονικού σχεδίου της δομής του προγράμματος χρησιμοποιείται συχνά το διάγραμμα δομής προγράμματος (program structure chart). Στο διάγραμμα αυτό κάθε δομική μονάδα παριστάνεται από έναν κόμβο και κάθε κλήση από μια δομική μονάδα σε άλλη από ένα βέλος. Παράλληλα με τα βέλη της κλήσης παριστάνεται με πρόσθετα βέλη τα οποία περιγράφουν την είσοδο ή το αποτέλεσμα μιας δομικής μονάδας και η ροή των δεδομένων μεταξύ δομικών μονάδων. Το παρακάτω σχήμα αποτελεί το διάγραμμα δομής προγράμματος για έναν απλό υπολογιστή μιγαδικών αριθμών.

Για την αποτύπωση του λεπτομερούς σχεδίου του λογισμικού χρησιμοποιείται ο ψευδοκώδικας (pseudocode) καθώς και τα διαγράμματα ροής (flow charts). Ο ψευδοκώδικας αποτελείται από εντολές ελέγχου της ροής της εκτέλεσης αντίστοιχες με αυτές των γλωσσών προγραμματισμού (if, while, do). Η περιγραφές όμως των συνθηκών και των εντολών δίνονται αδρά, σε φυσική γλώσσα, έτσι ώστε να είναι πιο περιεκτικές και ευνόητες από τις αντίστοιχες εντολές της γλώσσας προγραμματισμού.

Παράδειγμα ψευδοκώδικα ελέγχου κωδικού (PIN) σε μηχάνημα ATM:

do
	Display message asking the user for PIN
	Read user PIN
	if incorrect PIN
		Display error message
while incorrect PIN

Ασκήσεις

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

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