Διεργασία ανάπτυξης λογισμικού
Διομήδης Σπινέλλης
Τμήμα Διοικητικής Επιστήμης και Τεχνολογίας
Οικονομικό Πανεπιστήμιο Αθηνών
dds@aueb.gr
Η έννοια της διεργασίας
Η διεργασία (process) ανάπτυξης του λογισμικού
καθορίζει τις τεχνικές και διοικητικές πρακτικές που ακολουθούνται
κατά την
του λογισμικού.
Η τεχνολογία λογισμικού εξετάζει παράλληλα και
- τον καθορισμό,
- την υλοποίηση,
- τη μέτρηση,
- τη διοίκηση,
- την αλλαγή και
- τη βελτίωση
της ίδιας της διεργασίας ανάπτυξης.
Στοιχεία της διεργασίας
Στη διεργασία ανάπτυξης του λογισμικού ξεχωρίζουμε ορισμένες
κάθετες φάσεις και μια σειρά από
οριζόντιες ενέργειες (umbrella activities)
που καλύπτουν όλες τις φάσεις.
Φάσεις
Οι κύριες φάσεις της διεργασίας ανάπτυξης είναι:
- Ορισμός (τι;)
- Ανάπτυξη (πως;)
- Υποστήριξη (αλλαγή)
Η υποστήριξη περιλαμβάνει:
- Διορθώσεις
- Προσαρμογή
- Βελτιώσεις
- Πρόληψη
Οριζόντιες ενέργειες
Ωριμότητα της διεργασίας
Το CMU Software Engineerint Institute έχει ορίσει τα παρακάτω
επίπεδα ωριμότητας της διεργασίας:
- Αρχική (initial) (χαώδης)
- Επαναλήψιμη (repeatable)
- Καθορισμένη (defined) (τεκμηριωμένη)
- Διοικούμενη (managed) (με βάση ποσοτικά κριτήρια)
- Βελτιστοποιούμενη (optimizing)
Κάθε επίπεδο περιλαμβάνει τα στοιχεία του προηγούμενου.
Το μοντέλο του καταρράκτη
Το μοντέλο του καταρράκτη (waterfall) ακολουθεί
γραμμικά τις φάσεις ανάπτυξης του συστήματος:
- Ανάλυση
- Σχεδιασμός
- Κωδικοποίηση
- Έλεγχος
- Συντήρηση
Κάθε φάση ακολουθεί την προηγούμενη.
Προβλήματα
- Αλλαγές στο μέσο του έργου δημιουργούν προβλήματα
- Δύσκολο να διατυπωθούν οι απαιτήσεις από την αρχή
- Απαιτεί υπομονή από τον πελάτη
Ανάπτυξη αρχέτυπου
Το αρχέτυπο (prototype) του λογισμικού
επιτρέπει το γρήγορο έλεγχο:
- της διεπαφής με το χρήστη,
- της λειτουργικότητας,
- των αλγορίθμων.
Υλοποιείται με συνεχείς κύκλους σε στενή συνεργασία με τον πελάτη.
Προβλήματα
- Ο πελάτης μπορεί να το θεωρήσει το τελικό σύστημα.
- Ο τεχνικός μπορεί να παγιδευτεί σε αδόκιμες τεχνικές υλοποίησης.
Γρήγορη ανάπτυξη
Το μοντέλο της
γρήγορης ανάπτυξης εφαρμογών (rapid application development)
χρησιμοποιείται για την ανάπτυξη τυποποιημένων εφαρμογών επεξεργασίας
δεδομένων.
Περιλαμβάνει τις παρακάτω φάσεις:
- Αποτύπωση της επιχειρηματικής λειτουργίας (business modelling)
- Αποτύπωση δεδομένων (data modelling)
- Αποτύπωση διεργασιών (process modelling)
- Υλοποίηση εφαρμογής με εργαλεία τέταρτης γενιάς (4GL)
- Έλεγχος
Προβλήματα
- Για την παράλληλη ανάπτυξη τμημάτων απαιτείται το αντίστοιχο ανθρώπινο δυναμικό.
- Απαιτείται άμεση απόκριση του πελάτη.
- Προβλήματα απόδοσης
- Κατάλληλο για ορισμένες μόνο κατηγορίες εφαρμογών
- Προβληματικό όταν η τεχνολογία είναι ανώριμη
Βηματική εκλέπτυνση
- Το μοντέλο της βηματικής εκλέπτυνσης (incremental refinement)
αποτελείται από επικαλυπτόμενες αλληλουχίες του μοντέλου του καταρράκτη.
- Κάθε βήμα προσθέτει λειτουργικότητα.
- Κατάλληλο όταν δεν υπάρχουν από την αρχή οι ανθρώπινοι πόροι.
Σπειροειδές μοντέλο
Στο σπειροειδές μοντέλο (spiral model)
ακολουθεί σε κάθε κύκλο της σπείρας τα παρακάτω βήματα:
- Επαφή με τον πελάτη
- Σχεδιασμός
- Ανάλυση κινδύνου
- Υλοποίηση
- Μετρήσεις
- Αξιολόγηση
Η σπείρα από μέσα προς τα έξω μπορεί να περιλαμβάνει:
- Αρχέτυπο
- Νέο προϊόν
- Βελτιωμένο προϊόν
- Συντήρηση
Τυπική ανάπτυξη συστημάτων
Η ανάπτυξη λογισμικού με τυπικές μεθόδους (formal methods):
- Περιλαμβάνει τον καθορισμό των απαιτήσεων σε μια
τυπική γλώσσα (formal language) και
το διαδοχικό τυπικό μετασχηματισμό τους σε εκτελέσιμο πρόγραμμα.
- Μπορεί θεωρητικά να οδηγήσει σε λογισμικό χωρίς λάθη.
Προβλήματα
- Χρονοβόρα και υψηλού κόστους διεργασία.
- Λίγοι προγραμματιστές έχουν το απαραίτητο μαθηματικό υπόβαθρο.
- Ο φορμαλισμός των απαιτήσεων μπορεί να μην είναι κατανοητός από τους χρήστες.
- Δε διασφαλίζονται σφάλματα από λανθασμένες προδιαγραφές.
- Μπορεί να σημειωθούν ανθρώπινα λάθη κατά το μετασχηματισμό.
Επαναχρησιμοποίηση
Η ανάπτυξη λογισμικού με
επαναχρησιμοποίηση (reusability) βασίζεται
σε έτοιμα εξαρτήματα (components).
Ακολουθεί τα παρακάτω βήματα:
- Καθορισμός πιθανών εξαρτημάτων
- Εύρεση εξαρτημάτων στη βιβλιοθήκη
- Υλοποίηση νέων εξαρτημάτων και αρχειοθέτησή τους
- Σύνδεση εξαρτημάτων
Ανάλυση προδιαγραφών
Η ανάλυση προδιαγραφών περιλαμβάνει:
- μελέτη σκοπιμότητας
- ανάλυση απαιτήσεων
- καταγραφή προδιαγραφών
- έλεγχο προδιαγραφών
Σχεδιασμός
Ο σχεδιασμός καθορίζει:
- Αρχιτεκτονική
- Υποσυστήματα
- Διεπαφές
- Εξαρτήματα
- Δομές δεδομένων
- Αλγόριθμοι
Τεχνικές
- Ροή δεδομένων
- Οντότητες συσχετίσεις
- Δομικό μοντέλο
- Αντικειμενοστρεφείς
Επαλήθευση και επικύρωση
Ο έλεγχος περιλαμβάνει:
Εξέλιξη
Η εξέλιξη του λογισμικού γίνεται με την παρακάτω διεργασία:
- καθορισμός νέων απαιτήσεων,
- αποτίμηση υπάρχοντος συστήματος
- προτάσεις αλλαγών
- μετατροπές
- έλεγχος
Αυτοματοποίηση της διεργασίας
Για την αυτοματοποίηση της διεργασίας χρησιμοποιούνται τα παρακάτω
είδη εργαλείων:
- εργαλεία διαχείρισης έργου
- διορθωτές
- εργαλεία διαχείρισης αλλαγών
- εργαλεία διαχείρισης σχηματισμών
- συστήματα κατασκευής αρχετύπων
- εργαλεία υποστήριξης της διεργασίας
- μεταγλωττιστές και διερμηνευτές
- εργαλεία ανάλυσης προγραμμάτων
- εργαλεία ελέγχου
- αποσφαλματωτές
- επεξεργαστές κειμένου
- εργαλεία επανασχεδιασμού
Υλικό στον ιστό
Βιβλιογραφία
- Εμμ. Α. Γιακουμάκης
Τεχνολογία Λογισμικού: Απαιτήσεις Λογισμικού, σχεδίαση λογισμικού,
σελίδες 31-36.
Εκδόσεις Α. Σταμούλης, Αθήνα, Πειραιάς, 1994.
- Εμμανουήλ Σκορδαλάκης.
Εισαγωγή στην Τεχνολογία Λογισμικού, σελίδες 11-48.
Εκδόσεις Συμμετρία, 1991.
- Janet Barnes, Rod
Chapman, Randy Johnson, James Widmaier, Bill Everett, and David Cooper.
Engineering the
Tokeneer enclave protection system.
In IEEE International Symposium on Secure Software Engineering,
Los Alamitos, California, March 2006.
- Watts S. Humphrey.
Managing the
Software Process, pages 247–285.
Addison-Wesley, 1989.
- Institute of Electrical and
Electronics Engineers, Inc., New York, NY, USA.
Developing Software Life Cycle Processes, 1997.
IEEE Standard 1074-1997.
- Roger S. Pressman.
Software
Engineering: A Practitioner's Approach, pages 17–49.
McGraw-Hill, fifth edition, 2000.
European Adaptation. Adapted by Darrel Ince.
- Ian Sommerville.
Software
Engineering, pages 42–69.
Addison-Wesley, sixth edition, 2001.
- Diomidis Spinellis
and Konstantinos Raptis.
Component mining: A process and its pattern language ( http://www.spinellis.gr/pubs/jrnl/2000-IST-Components/html/comp.html).
Information and Software Technology, 42(9):609–617, June
2000.
- Diomidis Spinellis.
Explore, excogitate, exploit: Component mining ( http://www.spinellis.gr/pubs/jrnl/1999-Computer-Components/html/comp.html).
IEEE Computer, 32(9):114–116, September 1999.
Ασκήσεις
- Περιγράψτε περιπτώσεις κατα τις οποίες κάποιες κάθετες φάσεις
ή οριζόντιες ενέργειες της ανάπτυξης λογισμικού παραλείπονται.
- Διαβάστε για το μοντέλο της ωριμότητας λογισμικού
στο http://www.sei.cmu.edu (http://www.sei.cmu.edu).
- Φτιάξτε έναν κατάλογο με σύγχρονα εργαλεία τέταρτης γενιάς που
χρησιμοποιούνται για την υλοποίηση πληροφοριακών συστημάτων.
- Τι θεωρείτε πιο σημαντικό: το προϊόν, ή τη διεργασία ανάπτυξής του;