Software Engineering
Diomidis Spinellis
Department of Management Science and Technology
Athens University of Economics and Business
Athens, Greece
dds@aueb.gr
Η σημασία του λογισμικού
Το λογισμικό
- ενεργοποιεί τις ενσωματωμένες συσκευές,
- αποτελεί τη βάση στα πληροφοριακά συστήματα,
- χρησιμοποιείται ως μέσο αποθήκευσης γνώσης.
Μέσα αποθήκευσης γνώσης:
- DNA
- Εγκέφαλος
- Υλικό
- Βιβλία
- Λογισμικό
Προβλήματα στην υλοποίηση συστημάτων που βασίζονται σε λογισμικό
Η διεργασία ανάπτυξης του λογισμικού καλείται σήμερα να επιλύσει
τα παρακάτω συχνά εμφανιζόμενα προβλήματα:
Επίσης, πρέπει να απαντηθούν οι παρακάτω προκλήσεις:
Τεχνολογία λογισμικού
-
Η εφαρμογή μιας συστηματικής πειθαρχημένης και ποσοτικοποιούμενης προσέγγισης στην ανάπτυξη, λειτουργία και συντήρηση του λογισμικού. με άλλα λόγια η εφαρμογή των τεχνικών του μηχανικού στο λογισμικό.
-
Η μελέτη προσεγγίσεων στο παραπάνω πρόβλημα.
Η τεχνολογία λογισμικού περιλαμβάνει τις παρακάτω περιοχές:
- Απαιτήσεις
- Σχεδιασμός
- Υλοποίηση
- Έλεγχος
- Συντήρηση
- Διαχείριση σχηματισμών
- Διαχείριση του οργανισμού, της διεργασίας (process)
και του έργου
- Διεργασίες τεχνολογίας λογισμικού
- Εργαλεία και μέθοδοι
- Ποιότητα
Κατηγορίες λογισμικού
Χαρακτηριστικά του λογισμικού
- Το λογισμικό αναπτύσσεται, δεν παράγεται βιομηχανικά
- Το λογισμικό δε φθείρεται
- Το μεγαλύτερο ποσοστό του λογισμικού παράγεται κατά παραγγελία
Ιδιότητες του λογισμικού
Ο κύκλος ζωής του λογισμικού
Σχεδιασμός με UML
Η ενοποιημένη γλώσσα σχεδιασμού (unified modeling language)
(UML) είναι μια γραφική γλώσσα για την οπτική παράσταση,
τη διαμόρφωση προδιαγραφών και την τεκμηρίωση συστημάτων που βασίζονται
σε λογισμικό.
Η UML στοχεύει στο σχεδιασμό αντικειμενοστρεφών συστημάτων.
Το σχέδιο είναι μια απλοποιημένη παράσταση της πραγματικότητας.
Σχεδιάζουμε για να μπορέσουμε να καταλάβουμε το σύστημα που αναπτύσσουμε.
Έτσι δημιουργώντας ένα σχέδια επιτυγχάνουμε τέσσερεις στόχους:
- παριστάνουμε οπτικά το σύστημα που έχουμε ή θέλουμε να κατασκευάσουμε,
- προσδιορίζουμε τη δομή και τη συμπεριφορά του συστήματος,
- δημιουργούμε ένα πρότυπο για να βασίσουμε την κατασκευή του συστήματος,
- τεκμηριώνουμε τις αποφάσεις που λάβαμε.
Σε όλους τους τεχνολογικούς τομείς ο σχεδιασμός βασίζεται σε τέσσερεις
βασικές αρχές:
- η επιλογή του είδους του σχεδίου έχει επίπτωση στον τρόπο και την
μορφή επίλυσης του προβλήματος,
- όλα τα σχέδια εκφράζονται σε διαφορετικές βαθμίδες ακρίβειας,
- τα καλύτερα σχέδια σχετίζονται με την πραγματικότητα,
- ένα είδος σχεδίων δεν είναι ποτέ αρκετό.
Η UML περιλαμβάνει τρία βασικά στοιχεία:
- Οντότητες
- Σχέσεις
- Διαγράμματα
Η UML είναι μια πλήρης και πλούσια γλώσσα με εξαιρετικά ευρύ πεδίο εφαρμογής.
Στο μάθημα αυτό θα εξετάσουμε εξαιρετικά συνοπτικά τον τρόπο παράστασης
ορισμένων αντικειμενοστρεφών δομών σε UML.
Διαγράμματα της UML
Η UML ορίζει τα παρακάτω διαγράμματα:
Προβλήματα στη διοίκηση έργων λογισμικού
- Το προϊόν δεν έχει φυσική έκφανση
- Δεν υπάρχουν κοινώς αποδεκτές και κοινές διεργασίες υλοποίησης
- Τα μεγάλα έργα κατασκευάζονται κατά παραγγελία για συγκεκριμένες απαιτήσεις
- Υπάρχει η ψευδαίσθηση πως το λογισμικό είναι εύπλαστο
- Μικρές αλλαγές στο λογισμικό επηρεάζουν συχνά δυσανάλογα πολλά τμήματα
- Δε χρησιμοποιούνται συχνά έτοιμα εξαρτήματα
Οι σημαντικότεροι κίνδυνοι
- Το προϊόν δεν έχει φυσική έκφανση
- Δεν υπάρχουν κοινώς αποδεκτές και κοινές διεργασίες υλοποίησης
- Τα μεγάλα έργα κατασκευάζονται κατά παραγγελία για συγκεκριμένες απαιτήσεις
- Υπάρχει η ψευδαίσθηση πως το λογισμικό είναι εύπλαστο
- Μικρές αλλαγές στο λογισμικό επηρεάζουν συχνά δυσανάλογα πολλά τμήματα
- Δε χρησιμοποιούνται συχνά έτοιμα εξαρτήματα
Στοιχεία της ευέλικτης ανάπτυξης
Η ευέλικτη ανάπτυξη λογισμικού (agile software development)
προσδίδει αξία:
- στους ανθρώπους και τις σχέσεις τους και όχι σε διεργασίες και εργαλεία
- σε λογισμικό που δουλεύει και όχι σε εκτενή τεκμηρίωση
- σε συνεργασία με τον πελάτη και όχι σε συμβατικές διαπραγματεύσεις
- σε άμεση απόκριση σε αλλαγές και όχι στην τήρηση ενός προδιαγεγραμμένου
σχεδίου
Ασυμβίβαστος προγραμματισμός
Ο ασυμβίβαστος προγραμματισμός (ΑΠ) (eXtreme programing (XP))
εδραιώθηκε ως μεθοδολογία ανάπτυξης για μικρές ομάδες ανάπτυξης έργων
στα οποία αλλάζουν συχνά οι προδιαγραφές.
Βασικά του χαρακτηριστικά είναι:
- Ο προγραμματισμός σε ζευγάρια
- Η συγγραφή ελέγχων μονάδος πριν από τον κώδικα.
- Η συνεχής ολοκλήρωση και ο συνεχής έλεγχος του κώδικα (πολλές
φορές μέσα στην ημέρα).
- Η βαθμιαία εξέλιξη του σχεδίου του έργου.
- Η γρήγορη παραγωγική χρήση του συστήματος για την
εκμαίευση των απαιτήσεων με το μεγαλύτερο όφελος για τον πελάτη.
Η μεθοδολογία δεν είναι κατάλληλη για:
- Επιχειρηματικά περιβάλλοντα όπου η διοίκηση θέλει να έχει τον
πλήρη έλεγχο του έργου.
- Έργα με αυστηρές προδιαγραφές.
- Έργα που βασίζονται σε σύμβαση με βάση τις προδιαγραφές.
- Συστήματα των οποίων τα αποτελέσματα αργούν να εμφανιστούν.
- Περιβάλλοντα στα οποία οι έλεγχοι είναι ακριβοί (OIS).
Βιβλιογραφία
- 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.
- J. Glenn Brookshear.
Computer Science, pages 286–318.
Addison-Wesley, 8th edition, 2004.
- 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.
- Steve C McConnell.
Code
Complete: A Practical Handbook of Software Construction.
Microsoft Press, Redmond, WA, second edition, 2004.
- 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, London, fifth edition, 2000.
European Adaptation. Adapted by Darrel Ince.
- 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 Clemens Szyperski.
How is open source affecting software development? ( http://www.spinellis.gr/pubs/jrnl/2004-IEEESW-OSS/html/ge-intro.html).
IEEE Software, 21(1):28–33, January/February 2004.
(doi:10.1109/MS.2004.1259204 (http://dx.doi.org/10.1109/MS.2004.1259204))
- Diomidis Spinellis.
Software reliability: Modern challenges ( http://www.spinellis.gr/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.spinellis.gr/pubs/Breview/2000-IEEE-XP/html/review.html).
IEEE Software, 17(4):113–114, July/August 2000.
Book review: eXtreme Programming Explained: Embrace Change.
- Diomidis Spinellis.
The tools at hand ( http://www.spinellis.gr/pubs/jrnl/2005-IEEESW-TotT/html/v22n1.html).
IEEE Software, 22(1):10–13, January/February 2005.
- Edward Yourdon.
Death
March.
Prentice-Hall, 1997.