Τεχνολογία λογισμικού
Διομήδης Σπινέλλης
Τμήμα Διοικητικής Επιστήμης και Τεχνολογίας
Οικονομικό Πανεπιστήμιο Αθηνών
dds@aueb.gr
Εισαγωγή
Η τεχνολογία λογισμικού (software engineering)
είναι ο κλάδος αυτός της πληροφορικής που έχει ως σκοπό την
εξεύρεση τεχνικών και εργαλείων που η χρησιμοποίησή τους στην
παραγωγή λογισμικού να εξασφαλίζει για το παραγόμενο προϊόν:
- συμμόρφωση με τις προδιαγραφές,
- παράδοση στο προδιαγεγραμμένο χρόνο,
- κατασκευή στο προδιαγεγραμμένο κόστος,
- προσιτή συντήρηση.
Ο κύκλος ζωής του λογισμικού
- - Απαιτήσεις από το σύστημα
- - - Απαιτήσεις από το λογισμικό
- - - - Προκαταρκτική σχεδίαση
- - - - - Λεπτομερής σχεδίαση
- - - - - - Κωδικοποίηση και εκκαθάριση λαθών
- - - - - - - Συνένωση
- - - - - - - - Έλεγχος και δοκιμαστική λειτουργία
- - - - - - - - - Λειτουργία και συντήρηση
'Αλλα μοντέλα
Προσδιορισμός απαιτήσεων
Ο προσδιορισμός των απαιτήσεων διαχωρίζεται
- στον προσδιορισμό των απαιτήσεων από το σύστημα και
- στον προσδιορισμό των απαιτήσεων από το λογισμικό.
Το έγγραφο προδιαγραφών απαιτήσεων από το σύστημα (system requirements document)
περιέχει τα παρακάτω στοιχεία (Σκορδαλάκης 1991, σ. 54):
- Ορισμός του προβλήματος
- Αιτιολόγηση του προβλήματος
- Σκοπός του συστήματος και του έργου
- Σκοπός του συστήματος και του έργου
- Περιορισμοί στο σύστημα και στο έργο
- Λειτουργίες ανά συνιστώσα του προβλήματος
- Υλικό
- Λογισμικό
- Άνθρωποι
- Χαρακτηριστικά χρηστών
- Περιβάλλοντα
- ανάπτυξης,
- λειτουργίας και
- συντήρησης
- Στρατηγική λύσης του προβλήματος
- Προτεραιότητες στα χαρακτηριστικά του συστήματος
- Κριτήρια αποδοχής του συστήματος
- Πηγές πληροφοριών
- Λεξιλόγιο
Αντίστοιχα το έγγραφο προδιαγραφών απαιτήσεων από το λογισμικό (software requirements document)
περιέχει τα παρακάτω στοιχεία (Σκορδαλάκης 1991, σ. 63):
- Εισαγωγή
- Σκοπός
- Έκταση
- Ορισμοί, ακρονυμίες και συντομογραφίες
- Αναφορές
- Γενική εικόνα
- Γενική περιγραφή
- Προοπτική του προϊόντος
- Λειτουργίες
- Χαρακτηριστικά των χρηστών
- Γενικοί περιορισμοί
- Παραδοχές και εξαρτήσεις
- Ειδικές απαιτήσεις
- Λειτουργικές απαιτήσεις
- Λειτουργική απαίτηση 1
- Εισαγωγή
- Είσοδοι
- Επεξεργασία
- Έξοδοι
- Λειτουργική απαίτηση 1
- ...
- Λειτουργική απαίτηση ν
- Απαιτήσεις εξωτερικών διαπροσωπειών
- Διαπροσωπείες χρήστη (user interfaces)
- Διαπροσωπείες υλικού (hardware interfaces)
- Διαπροσωπείες λογισμικού (software interfaces)
- Διαπροσωπείες επικοινωνιών (communication interfaces)
- Απαιτήσεις επίδοσης
- Περιορισμοί σχεδίασης
- Συμμόρφωση με τα πρότυπα
- Περιορισμοί από το υλικό
- Ιδιώματα
- Διαθεσιμότητα
- Ασφάλεια
- Συντηρισιμότητα
- Μεταφερσιμότητα
- Άλλες απαιτήσεις
- Βάση δεδομένων
- Τρόποι λειτουργίας
- Προσαρμογή στο χώρο εγκατάστασης
- Παραρτήματα
- Ευρετήριο
Ανάλυση
Για την κατανόηση, τον προσδιορισμό και την έκφραση των απαιτήσεων από το
λογισμικό είναι απαραίτητο ένα
ιδεατό μοντέλο (conceptual model) των διεργασιών
του συστήματος στο οποίο θα λειτουργήσει το λογισμικό.
Τα μοντέλα αυτά χρησιμοποιούν τις παρακάτω τεχνικές
παράστασης:
- Ροή δεδομένων (data flow)
- Μηχανή πεπερασμένων καταστάσεων (finite state machine)
- επικοινωνούσες ταυτόχρονες διεργασίες (communicating concurrent processes)
- Μοντέλο οντοτήτων σχέσεων (entity relationship models)
- Εξομοίωση (simulation)
- Λειτουργική σύνθεση (functional composition)
Σχεδίαση
Κωδικοποίηση
- Δομημένη κωδικοποίηση
- Αντικειμενοστρεφής κωδικοποίηση
- Τεκμηρίωση του κώδικα
Έλεγχος
- Ορίζουμε ως επαλήθευση (verification) τη διεργασία
που προσδιορίζει το αν το προϊόν ενός σταδίου ανάπτυξης του κύκλου ζωής
του λογισμικού είναι σύμφωνο με τις προδιαγραφές που τέθηκαν στο προηγούμενο
στάδιο.
- Ορίζουμε ως επικύρωση (validation) τη διεργασία που
προσδιορίζει κατά το τέλος ανάπτυξης του λογισμικού το αν το προϊόν που
αναπτύχθηκε είναι σύμφωνο με τις προδιαγραφές του.
- Στατικός και δυναμικός έλεγχος
- Βήτα έλεγχος (Beta testing)
Διοίκηση, οργάνωση και κοστολόγηση
- Χρονοπρογραμματισμός και ορόσημα (milestones)
- Μακροσκοπική και μικροσκοπική οργάνωση
- Κοστολόγηση και τεχνικές της
- Κατακερματισμός της εργασίας
- Αλγοριθμικές τεχνικές
- Στελέχωση
Διασφάλιση ποιότητας
- Ποιότητα λογισμικού
- Πρότυπα διασφάλισης ποιότητας
- Απαιτήσεις ποιότητας
- Ευθύνη της διοίκησης
- Σύστημα Ποιότητας
- Ανασκόπηση συμβάσεων
- Έλεγχος σχεδιασμού
- Έλεγχος εγγράφων
- Προμήθειες
- Προϊόντα που προμηθεύονται ευθύνη του πελάτη
- Αναγνώριση - Σήμανση προϊόντων και ιχνηλασιμότητα
- Έλεγχος διεργασιών
- Επιθεώρηση και έλεγχος
- Εξοπλισμός ελέγχου, μετρήσεων και δοκιμών
- Κατάσταση επιθεωρήσεων και ελέγχων
- Έλεγχος μη συμμορφουμένων υλικών και προϊόντων
- Διορθωτικές ενέργειες
- Χειρισμός, αποθήκευση, συσκευασία και παράδοση
- Αρχεία Ποιότητας
- Εσωτερικές επιθωρήσεις ΣΔΠ
- Εκπαίδευση
- Εξυπηρέτηση μετά την πώληση
- Στατιστικές τεχνικές
- Πλάνο διασφάλισης ποιότητας
Περιβάλλοντα και γλώσσες ανάπτυξης
- Εργαλεία
- Ολοκληρωμένα περιβάλλοντα ανάπτυξης
- Το περιβάλλον προγραμματισμού Unix
- Γλώσσες τέταρτης γενιάς
- Γλώσσες υποστήριξης εφαρμογών
- Εκτελέσιμες γλώσσες προδιαγραφών
- Γεννήτριες εκθέσεων
- Περιβάλλοντα σχεδιασμού διεπαφών
Παραδείγματα
Τα παραδείγματα που ακολουθούν προέρχονται από το περιβάλλον
Microsoft Visual Studio.
Διαλογικός σχεδιασμός διεπαφής χρήστη
Ολοκληρωμένο σύστημα βοήθειας
Οδηγός δημιουργίας της εφαρμογής
Διαλογική μεταγλώττιση
Αποσφαλμάτωση
Φυλλομέτρηση κλάσεων
Βιβλιογραφία
- Peter Rechenberg.
Εισαγωγή στην Πληροφορική. σ. 155-162
Κλειδάριθμος, 1992.
- Εμμανουήλ Σκορδαλάκης.
Εισαγωγή στην Τεχνολογία Λογισμικού.
Συμμετρία, 1991.
- Εμμ. Α. Γιακουμάκης
Τεχνολογία Λογισμικού: Απαιτήσεις Λογισμικού, σχεδίαη λογισμικού
Εκδόσεις Α. Σταμούλης, Αθήνα Πειραιάς 1994.
- Εμμ. Α. Γιακουμάκης
Τεχνολογία Λογισμικού: Κωδικοποίηση, έλεγχος και συντήρηση λογισμικού
Εκδόσεις Α. Σταμούλης, Αθήνα Πειραιάς 1993.
- Α. Λυπιτάκης
Ο σύγχρονος κόσμος των υπολογιστών. σ. 180-188,
1997.
- Kent Beck.
Extreme Programming Explained: Embrace Change.
Addison Wesley Longman, 2000.
- Grady Booch, James
Rumbaugh, and Ivar Jacobson.
The
Unified Modeling Language User Guide.
Addison-Wesley, 1999.
- F. P. Brooks.
The
Mythical Man Month.
Addison-Wesley, 1975.
- J. Glenn Brookshear.
Computer Science, pages 286–318.
Addison-Wesley, sixth edition, 2000.
- William J. Brown,
Raphael C. Malveau, Hays W. McCormick III, and Thomas J. Mowbray.
AntiPatterns Refactoring Software, Architectures, and Projects in
Crisis.
Wiley, 1998.
- Alan Cooper.
The Inmates are Running the Asylum.
Sams, Indianapolis, IN, USA, 1999.
- 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.
- Erich Gamma, Richard
Helm, Ralph Johnson, and John Vlissides.
Design
Patterns: Elements of Reusable Object-Oriented Software.
Addison-Wesley, 1995.
- Robert L. Glass.
Software Runaways: Lessons Learned from Massive Software Project
Failures.
Prentice-Hall, 1998.
- Robert L. Glass.
Frequently forgotten fundamental facts about software engineering.
IEEE Software, 18(3):110–112, May/June 2001.
- Watts S. Humphrey.
Managing the Software Process.
Addison-Wesley, 1989.
- Andrew Hunt and David
Thomas.
The
Pragmatic Programmer: From Journeyman to Master.
Addison Wesley Longman, 2000.
- Cem Kaner, Jack Falk, and
Hung Quoc Nguyen.
Testing Computer Software.
Wiley, 1999.
- Brian W. Kernighan
and Rob Pike.
The
Practice of Programming.
Addison-Wesley, 1999.
- 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, sixth edition, 2001.
- Diomidis
Spinellis and V. Guruprasad.
Lightweight languages as software engineering tools (http://www.dmst.aueb.gr/dds/pubs/conf/1997-DSL-Lightweight/html/paper.html).
In USENIX Conference on Domain-Specific Languages, pages 67–76,
Santa Monica, CA, USA, October 1997. Usenix Association.
- Diomidis Spinellis,
Sophia Drossopoulou, and Susan Eisenbach.
Language and architecture paradigms as object classes: A unified approach
towards multiparadigm programming.
In Jürg Gutknecht, editor, Programming Languages and System
Architectures International Conference, pages 191–207, Zurich,
Switzerland, March 1994. Springer-Verlag.
Lecture Notes in Computer Science 782.
- Diomidis Spinellis.
Explore, excogitate, exploit: Component mining (http://www.dmst.aueb.gr/dds/pubs/jrnl/1999-Computer-Components/html/comp.html).
IEEE Computer, 32(9):114–116, September 1999.
- Diomidis Spinellis.
Software reliability: Modern challenges (http://www.dmst.aueb.gr/dds/pubs/conf/1999-ESREL-SoftRel/html/chal.html).
In G. I. Schuëller and P. Kafka, editors, Proceedings ESREL '99 —
The Tenth European Conference on Safety and Reliability, pages
589–592, Munich-Garching, Germany, September 1999. ESRA, VDI, TUM, A. A.
Balkema.
- Diomidis Spinellis.
Taking common sense to the extreme (http://www.dmst.aueb.gr/dds/pubs/Breview/2000-IEEE-XP/html/review.html).
IEEE Software, 17(4):113–114, July/August 2000.
Book review: eXtreme Programming Explained: Embrace Change.
- Edward Yourdon.
Death
March.
Prentice-Hall, 1997.
Ασκήσεις
- Πρέπει να κατασκευαστεί λογισμικό που θα καθοδηγεί τον ταμία
ενός καταστήματος στο να δίνει τα σωστά ρέστα στους πελάτες.
Καταγράψτε ενδεικτικά το περιεχόμενο κάθε στάδιου του κύκλου ζωής
του λογισμικού αυτού.
- Περιγράψτε με συντομία το περιεχόμενο των απαιτήσεων ενός συστήματος
διασφάλισης ποιότητας για μια από τις παρακάτω δραστηριότητες:
- Εκδρομή στο εξωτερικό
- Ληστεία τράπεζας
- Διοίκηση του Ελληνικού Κράτους