Τεχνολογία λογισμικού
Διομήδης Σπινέλλης
Τμήμα Διοικητικής Επιστήμης και Τεχνολογίας
Οικονομικό Πανεπιστήμιο Αθηνών
dds@aueb.gr
Προηγούμενα θέματα για σκέψη
- Περιγράψτε σε ψευδοκώδικα πως πρέπει να γίνεται ανάληψη χρημάτων
από λογαριασμό με έλεγχο μη υπέρβασης του υπολοίπου.
Χρησιμοποιήστε σηματοφόρους για να ελέγξετε το ενδεχόμενο
ταυτόχρονης ανάληψης από δύο υποκαταστήματα.
- Περιγράψτε λογικό πρόγραμμα για την εύρεση δρομολογίων ανάμεσα
σε τυχαίες πόλεις.
- Ορίστε κάνοντας χρήση της κληρονόμικότητας πιθανές ιδιότητες
των παρακάτω τάξεων:
- Λιοντάρι
- Έμβιο
- Θηλαστικό
- Καρχαρίας
- Έντομο
- Ψάρι
Ζωγραφίστε τη σχέση των τάξεων με τη μορφή δέντρου.
Εισαγωγή
Η τεχνολογία λογισμικού (software engineering)
είναι ο κλάδος αυτός της πληροφορικής που έχει ως σκοπό την
εξεύρεση τεχνικών και εργαλείων που η χρησιμοποίησή τους στην
παραγωγή λογισμικού να εξασφαλίζει για το παραγόμενο προϊόν:
- συμμόρφωση με τις προδιαγραφές,
- παράδοση στο προδιαγεγραμμένο χρόνο,
- κατασκευή στο προδιαγεγραμμένο κόστος,
- προσιτή συντήρηση.
Ο κύκλος ζωής του λογισμικού
- - Απαιτήσεις από το σύστημα
- - - Απαιτήσεις από το λογισμικό
- - - - Προκαταρκτική σχεδίαση
- - - - - Λεπτομερής σχεδίαση
- - - - - - Κωδικοποίηση και εκκαθάριση λαθών
- - - - - - - Συνένωση
- - - - - - - - Έλεγχος και δοκιμαστική λειτουργία
- - - - - - - - - Λειτουργία και συντήρηση
Προσδιορισμός απαιτήσεων
- Το έγγραφο προδιαγραφών (requirements document)
- Ορισμός του προβλήματος
- Λειτουργίες του συστήματος
- Χαρακτηριστικά χρηστών
- Περιβάλλοντα ανάπτυξης, λειτουργίας και συντήρησης
- Πληροφορορίες συντήρησης
- Τυπική προδιαγραφή
- Προϋποθέσεις
- Μετασυνθήκες
Σχεδίαση
Κωδικοποίηση
- Δομημένη κωδικοποίηση
- Αντικειμενοστρεφής κωδικοποίηση
- Τεκμηρίωση του κώδικα
Έλεγχος
- Ορίζουμε ως επαλήθευση (verification) τη διεργασία
που προσδιορίζει το αν το προϊόν ενός σταδίου ανάπτυξης του κύκλου ζωής
του λογισμικού είναι σύμφωνο με τις προδιαγραφές που τέθηκαν στο προηγούμενο
στάδιο.
- Ορίζουμε ως επικύρωση (validation) τη διεργασία που
προσδιορίζει κατά το τέλος ανάπτυξης του λογισμικού το αν το προϊόν που
αναπτύχθηκε είναι σύμφωνο με τις προδιαγραφές του.
- Στατικός και δυναμικός έλεγχος
- Βήτα έλεγχος (Beta testing)
Διοίκηση, οργάνωση και κοστολόγηση
- Χρονοπρογραμματισμός και ορόσημα (milestones)
- Μακροσκοπική και μικροσκοπική οργάνωση
- Κοστολόγηση και τεχνικές της
- Κατακερματισμός της εργασίας
- Αλγοριθμικές τεχνικές
- Στελέχωση
Διασφάλιση ποιότητας
- Ποιότητα λογισμικού
- Πρότυπα διασφάλισης ποιότητας
- Απαιτήσεις ποιότητας
- Ευθύνη της διοίκησης
- Σύστημα Ποιότητας
- Ανασκόπηση συμβάσεων
- Έλεγχος σχεδιασμού
- Έλεγχος εγγράφων
- Προμήθειες
- Προϊόντα που προμηθεύονται ευθύνη του πελάτη
- Αναγνώριση - Σήμανση προϊόντων και ιχνηλασιμότητα
- Έλεγχος διεργασιών
- Επιθεώρηση και έλεγχος
- Εξοπλισμός ελέγχου, μετρήσεων και δοκιμών
- Κατάσταση επιθεωρήσεων και ελέγχων
- Έλεγχος μη συμμορφουμένων υλικών και προϊόντων
- Διορθωτικές ενέργειες
- Χειρισμός, αποθήκευση, συσκευασία και παράδοση
- Αρχεία Ποιότητας
- Εσωτερικές επιθωρήσεις ΣΔΠ
- Εκπαίδευση
- Εξυπηρέτηση μετά την πώληση
- Στατιστικές τεχνικές
- Πλάνο διασφάλισης ποιότητας
Περιβάλλοντα και γλώσσες ανάπτυξης
- Εργαλεία
- Περιβάλλοντα
- Το περιβάλλον προγραμματισμού Unix
- Γλώσσες τέταρτης γενιάς
- Γλώσσες υποστήριξης εφαρμογών
- Εκτελέσιμες γλώσσες προδιαγραφών
- Γεννήτριες εκθέσεων
Βιβλιογραφία
- Peter Rechenberg.
Εισαγωγή στην Πληροφορική. σ. 155-162
Κλειδάριθμος, 1992.
- Εμμανουήλ Σκορδαλάκης.
Εισαγωγή στην Τεχνολογία Λογισμικού.
Συμμετρία, 1991.
- Εμμ. Α. Γιακουμάκης
Τεχνολογία Λογισμικού: Απαιτήσεις Λογισμικού, σχεδίαη λογισμικού
Εκδόσεις Α. Σταμούλης, Αθήνα Πειραιάς 1994.
- Εμμ. Α. Γιακουμάκης
Τεχνολογία Λογισμικού: Κωδικοποίηση, έλεγχος και συντήρηση λογισμικού
Εκδόσεις Α. Σταμούλης, Αθήνα Πειραιάς 1993.
- F. P. Brooks.
The
Mythical Man Month.
Addison-Wesley, 1975.
- Alan M. Davis.
201
Principles of Software Development.
McGraw-Hill, 1995.
- Tom DeMarco and
Timothy R. Lister.
Peopleware: Productive Projects and Teams.
Dorset House Publishing, 1987.
- Jr. Frederick
P. Brooks.
No silver bullet: Essence and accidents of software engineering (http://www.di.ufpe.br/ java/graduacao/referencias/BrooksNoSilverBullet.html).
IEEE Computer, pages 10–19, April 1987.
- P. J. Plauger.
Programming on Purpose: Essays on Software Design.
Prentice-Hall, 1993.
- P. J. Plauger.
Programming on Purpose II: Essays on Software People.
Prentice-Hall, 1993.
- P. J. Plauger.
Programming on Purpose III: Essays on Software Technology.
Prentice-Hall, 1994.
- Roger S. Pressman.
Software Engineering: A Practitioner's Approach.
McGraw-Hill, 1987.
- Charles H. Schmauch.
ISO
9000 for Software Developers.
ASQC Quality Press, Milwaukee, Wisconsin, USA, 1995.
- Ian Sommerville.
Software Engineering.
Addison-Wesley, third edition, 1989.
- Edward Yourdon.
Death
March.
Prentice-Hall, 1997.
Ασκήσεις
- Πρέπει να κατασκευαστεί λογισμικό που θα καθοδηγεί τον ταμία
ενός καταστήματος στο να δίνει τα σωστά ρέστα στους πελάτες.
Καταγράψτε ενδεικτικά το περιεχόμενο κάθε στάδιου του κύκλου ζωής
του λογισμικού αυτού.
- Περιγράψτε με συντομία το περιεχόμενο των απαιτήσεων ενός συστήματος
διασφάλισης ποιότητας για μια από τις παρακάτω δραστηριότητες:
- Εκδρομή στο εξωτερικό
- Ληστεία τράπεζας
- Διοίκηση του Ελληνικού Κράτους