ιεργασία & κύκλος ζωής Μοντελοποίηση ιεργασιών και Κύκλου Ζωής Λογισµικού Αντώνης Καραγεώργος Τµήµα Μηχανικών Η/Υ και ικτύων Πανεπιστήµιο Θεσσαλίας karageorgos@inf.uth.gr ιεργασία είναι ένα σύνολο διατεταγµένων δραστηριοτήτων: µια σειρά βηµάτων που εκτελούνται χρησιµοποιώντας πόρους και πληρώντας περιορισµούς ώστε επιφέρουν κάποιο επιθυµητό αποτέλεσµα Π.χ. Η κατασκευή ενός γλυκού χρησιµοποιεί ορισµένες ποσότητες υλικών. Επιπλέον το ψήσιµο του γλυκού γίνεται αφού έχουν προστεθεί και αναµιχθεί όλα τα σχετικά υλικά Μια διεργασία µπορεί να αποτελείται από υπο-διεργασίες Συγκεκριµένη αρχή και τέλος για κάθε δραστηριότητα, άρα και συγκεκριµένη χρονική διάρκεια, και για κάθε διεργασία Όταν το αποτέλεσµα είναι η παραγωγή κάποιου προϊόντος τότε η διεργασία αναφέρεται και σαν κύκλος ζωής Παράδειγµα διεργασίας: κατασκευή οµελέτας ιαδικασίες και ιεργασίες Κατασκευή οµελέτας Προετοιµασία υλικών Χτύπηµα αυγών και ανάµιξη Τηγάνισµα ψήσιµο Κοπή κρεµµυδιών Κοπή µανιταριών Κοπή πατάτας Με µαχαίρι Με τρίφτη Με µίξερ Κάθε διεργασία µπορεί να περιλαµβάνει µια ή περισσότερες υπο-διεργασίες ή/και δραστηριότητες Οι υπο-διεργασίες µπορούν να εκτελούνται παράλληλα ή σειριακά ανάλογα µε τους πόρους και τις εξαρτήσεις εισόδου/εξόδου τους ιαδικασία: δοµηµένος τρόπος για συνδυασµό τεχνικώνκαι εργαλείων ώστε να πραγµατοποιηθεί µια δραστηριότητα (να ολοκληρωθεί µια εργασία) ιεργασία: Συλλογή διαδικασιών οργανωµένη ώστε να κατασκευάζουµε προϊόντα που ικανοποιούν κάποιους στόχους ή/και προδιαγραφές Οι διαδικασίες είναι σηµαντικές γιατί προσθέτουν συνέπεια και δοµή σε ένα σύνολο δραστηριοτήτων Ακολουθούµε διεργασίες όταν θέλουµε να κάνουµε κάτι σωστά µε δοκιµασµένο και συστηµατικό τρόπο [π.χ. χτίσιµο τοίχουµε τούβλα] ηµιουργούµε διεργασίες όταν θέλουµε να διασφαλίσουµε οτι κι άλλοι θα µπορέσουν να το επαναλάβουν Περιγραφή διεργασίας Περιγραφή των κυρίων δραστηριοτήτων Προσδιορισµός των πόρων και των περιορισµών τους Αποτελείται από υποδιεργασίες Κάθε δραστηριότητα έχει κριτήρια εισόδου και εξόδου Οι δραστηριότητες οργανώνονται σε σειρά Προσδιορίζονταιοιστόχοικάθεδραστηριότητας Κύκλος Ζωής Λογισµικού Κύκλος ζωής λογισµικού είναι µια περιγραφή των γεγονότων που συµβαίνουν µεταξύ της έναρξης και του τέλους ενός έργου λογισµικού. 1
Εξαγωγή Απαιτήσεων Στάδια κύκλου ζωής λογισµικού Τα βασικά στάδια ανάπτυξης λογισµικού Ανάλυση Σχεδιασµός Υλοποίηση Έλεγχος Τί; Εξαγωγή απαιτήσεων και ανάλυση προδιαγραφών Πώς; Σχεδίαση Υλοποίηση Έλεγχος Συντήρηση Χρόνος Συντήρηση Απαιτήσεις Αυτό που θέλουµε να κάνει το σύστηµά µας Στόχοι, επιθυµίες Οι απαιτήσεις δεν είναι αρχιτεκτονική λογισµικού, σχέδιο ούτε ο τρόπος διασύνδεσης µε τοχρήστη Οι απαιτήσεις είναι ανάγκες που πρέπει να ικανοποιηθούν από το σύστηµα, π.χ. Ο υπολογισµός και η εµφάνιση συγκεκριµένων αποτελεσµάτων. Ανάλυση Απαιτήσεων όµηση και έλεγχος των απαιτήσεων Προσδιορισµός των παραγόντων που επιδρούν στις απαιτήσεις καθώς και τυχόν αλληλεπιδράσεις µεταξύ τους. Εξασφαλίζουµε οτι γνωρίζουµε αρκετά για τις απαιτήσεις ώστε να συνεχίσουµε Παραδείγµατα Απαιτήσεων Στύλ δηλώσεων: Το σύστηµα θα παρέχει τρόπο για αναζήτηση και ανάγνωση αρχείων που δηµιουργήθηκαν από άλλα εργαλεία. Στυλ σεναρίων: Οι εργαζόµενοι που είναι άρρωστοι για περισσότερο από 3 ηµέρες παίρνουν αναρρωτική άδεια. Πληρώνονται όλο το µισθό τους για 190 εργάσιµες µέρες και µετά το 70% του µισθού για 270 µέρες. Για λογιστικούς λόγους η αµοιβή αναρρωτικής αδείας πρέπει να υπολογίζεται ξεχωριστά από την κανονική αµοιβή. Σχεδίαση Πώς θα ικανοποιήσουµε τις προδιαγραφές; Τι θα κατασκευάσουµε για να ικανοποιήσουµε τις προδιαγραφές; Ηεφαρµογή µεθόδων και αρχών µε σκοπότονορισµό ενός συστήµατος λογισµικού σε ικανοποιητική λεπτοµέρεια που να επιτρέπει την ανάπτυξή του. 2
Παράδειγµα Σχεδίου Robot football Αρχή Γενική αναζήτηση Εντοπισµός άλλου robot ιαφορετική οµάδα Υλοποίηση Μετάφραση της σχεδίασης σε µορφή κατανοητή από τη µηχανή. Υλοποίηση µπορεί να είναι δηµιουργία διαγράµµατα σε ένα CASE tool, συγγραφή κώδικα σε µια γλώσσα προγραµµατισµού ή είσοδος γραµµών εντολών σε κάποιο web-page editor. Αποµάκρυνση Υπολογισµός απόστασης Μικρή απόσταση Μεγάλη απόσταση Εκτίµηση οµάδας Ζήτα τη µπάλα Ίδια οµάδα Παράδειγµα υλοποίησης Έλεγχος Στόχοι του ελέγχου: Έλεγχος είναι η διαδικασία της εκτέλεσης ενός προγράµµατος µε σκοπότηνανεύρεσηλαθών. Μια καλή περίπτωση ελέγχου είναι κάποια που έχει υψηλή πιθανότητα ανεύρεσης ενός σφάλµατος που δεν έχει προκύψει ξανά µέχρι εκείνη τη στιγµή. Επιτυχής έλεγχος είναι αυτός που αποκαλύπτει καινούρια σφάλµατα. Παράδειγµα Ελέγχου Συντήρηση Στόχος η διαρκής ικανοποίηση των αναγκών του χρήστη Τροποποίηση ενός υπάρχοντος συστήµατος εξ αιτίας σφαλµάτων, αλλαγών στο περιβάλλον και στις απαιτήσεις ή για να γίνει πιο εύκολη η µελλοντική συντήρηση (Feathers, 1999) 3
Μοντέλα ιεργασιών Λογισµικού (Στην πραγµατικότητα...) Προσδιορίζουν τον τρόπο µε τον οποίο θα πρέπει να προχωρήσει η ανάπτυξη του λογισµικού Περιγράφουν τον τρόπο που η ανάπτυξη του λογισµικού γίνεται στην πραγµατικότητα Κοινή κατανόηση δραστηριοτήτων πόρων και περιορισµών που χαρακτηρίζουν την ανάπτυξη λογισµικού. Εντοπισµός ασυνεπειών, πλεονασµών και παραλείψεων που υπάρχουν στη διεργασία. Κάθε µοντέλο διεργασίας ανάπτυξης λογισµικού περιλαµβάνει απαιτήσεις του συστήµατος σαν είσοδο και παραδοτέο προιόν σαν έξοδο. ΣΥΝΤΗΡΗΣΗ ΠΑΡΑ ΟΣΗ ΑΝΑΛΥΣΗ ΑΠΑΙΤΗΣΕΩΝ ΠΡΟΓΡΑΜΜΑΤΩΝ ΕΝΟΠΟΙΗΣΗΣ ΛΕΙΤΟΥΡΓΙΚΩΝ ΜΟΝΑ ΩΝ ΥΛΟΠΟΙΗΣΗ ΠΡΟΓΡΑΜΜΑΤΩΝ ΑΝΑΛΥΣΗ ΑΠΑΙΤΗΣΕΩΝ ΗΜΙΟΥΡΓΙΑ ΠΡΩΤΟΤΥΠΩΝ ΠΡΟΓΡΑΜΜΑΤΩΝ ΚΩ ΙΚΟΠΟΙΗΣΗ ΜΟΝΑ ΩΝ ΚΑΙ ΕΝΟΠΟΙΗΣΗΣ Μοντέλο Καταρράκτη ΑΝΑΛΥΣΗ ΑΠΑΙΤΗΣΕΩΝ Το Μοντέλο V ΠΡΟΓΡΑΜΜΑΤΩΝ Επικύρωση προδιαγραφών Επαλήθευση σχεδίασης ΜΟΝΑ ΩΝ ΚΑΙ ΕΝΟΠΟΙΗΣΗΣ ΛΕΙΤΟΥΡΓΙΑ ΚΑΙ ΣΥΝΤΗΡΗΣΗ ΑΠΟ ΟΧΗΣ ΑΠΟ ΟΧΗΣ ΛΕΙΤΟΥΡΓΙΑ ΚΑΙ ΣΥΝΤΗΡΗΣΗ ΚΩ ΙΚΟΠΟΙΗΣΗ Το Μοντέλο Προτυποποίησης Μοντέλο Λειτουργικών Προδιαγραφών ΛΙΣΤΑ ΑΝΑΘΕΩΡΗΣΕΩΝ Αναθεώρηση πρωτοτύπου Εξέταση Χρήστη/ πελάτη ΛΙΣΤΑ ΑΝΑΘΕΩΡΗΣΕΩΝ ΛΙΣΤΑ ΑΝΑΘΕΩΡΗΣΕΩΝ Εκτέλεση και Αναθεώρηση ΠΡΟ ΙΑΓΡΑΦΕΣ ΠΡΩΤΟΤΥΠΟΥ ΣΧΕ ΙΑΣΜΟΣ ΠΡΩΤΟΤΥΠΟΥ ΠΡΩΤΟΤΥΠΟ ΣΥΣΤΗΜΑ ΛΕΙΤΟΥΡΓΙΚΗ ΠΡΟ ΙΑΓΡΑΦΗ (προσανατολισµένες Στο πρόβληµα) ΜΕΤΑΣΧΗΜΑΤΙΣΜΕΝΗ ΠΡΟ ΙΑΓΡΑΦΗ (προσανατολισµένη Στην υλοποίηση) ΠΡΟ ΙΑΓΡΑΦΕΣ (µερικές φορές Πρόχειρες ή ελλειπείς) ΣΥΣΤΗΜΑ ΠΟΥ ΠΑΡΑ Ι ΕΤΑΙ ΠΡΟ ΙΑΓΡΑΦΕΣ (µερικές φορές Πρόχειρες ή ελλιπείς) ΣΥΣΤΗΜΑ ΠΟΥ ΠΑΡΑ Ι ΕΤΑΙ 4
Μοντέλο Μετασχηµατισµού Μοντέλο Ανάπτυξης σε φάσεις Σύγκριση µε προδιαγραφέ; Ενηµέρωση αν χρειάζεται ΚΑΤΑΓΡΑΦΗ ΤΥΠΙΚΗΣ ΙΕΡΓΑΣΙΑΣ ΑΝΑΠΤΥΞΗΣ Ακολουθία µετασχηµατισµών και Αιτιολογία γι αυτούς ΗΜΙΟΥΡΓΟΙ ανάπτυξης 1 Συστήµατα Ανάπτυξης ανάπτυξης 2 Ανάπτυξης 3 Ν-οστός ΜΕΤΑΣΧΗΜΑΤΙΣΜΟΣ.. Χρόνος ΤΥΠΙΚΗ ΠΡΟ ΙΑΓΡΑΦΗ 2ος ΜΕΤΑΣΧΗΜΑΤΙΣΜΟΣ 1ος ΜΕΤΑΣΧΗΜΑΤΙΣΜΟΣ ΧΡΗΣΤΕΣ Χρήστη 1 Χρήστη 2 Συστήµατα Παραγωγής Χρήστη 3 ΠΡΟ ΙΑΓΡΑΦΕΣ (µερικές φορές Πρόχειρες ή ελλιπείς) ΣΥΣΤΗΜΑ ΠΟΥ ΠΑΡΑ Ι ΕΤΑΙ Μοντέλα Αυξητικής και Επαναληπτικής Ανάπτυξης Το Σπειροειδές Μοντέλο ΑΥΞΗΤΙΚΗ ΑΝΑΠΤΥΞΗ ΚΑΘΟΡΙΣΜΟΣ ΣΤΟΧΩΝ ΕΝΑΛΛΑΚΤΙΚΩΝ ΛΥΣΕΩΝ ΠΕΡΙΟΡΙΣΜΩΝ Περιορισµοί 4 Ανάλυση κινδύνων 4 ΑΞΙΟΛΟΓΗΣΗ ΕΝΑΛΛΑΚΤΙΚΩΝ ΛΥΣΕΩΝ ΚΑΙ ΚΙΝ ΥΝΩΝ ΕΠΑΝΑΛΗΠΤΙΚΗ ΑΝΑΠΤΥΞΗ Προυπο λογισµός 4 Προυπο λογισµός 3 ΠΛΑΝΟ Εναλλακτικά 4 Εναλλακτικά 3 Ενοποίηση και πλάνο δοκιµών Πλάνο ανάπτυξης Εναλλακτικά 2 Περιορισµοί 3 Περιορισµοί 2 Περιορισµοί 1 Εναλλακτικά 1 Ανάλυση κινδύνων 3 Ανάλυση κινδύνων 2 Ανάλυση κινδύνων 1 Πρωτό Πρωτό Πρωτό Προυπο Προυπο Πρωτότυπο λογισµός λογισµός 1 τυπο 2 τυπο 3 τυπο 4 2 1 start Αρχές Προδιαγραφές, λειτουργίας Λεπτοµερής σχεδίαση σχέδιο κύκλου ζωής Κωδικο ποίηση οκιµή λειτουργικών µονάδων οκιµή Συστήµατος Πλάνο υλοποίησης οκιµή αποδοχής ΑΝΑΠΤΥΞΗ & ΟΚΙΜΕΣ Επικυρωµένες προδιαγραφές Προδιαγραφές Λογισµικού Επικυρωµένο/επαληθευµένο σχέδιο Σχεδίαση Λογισµικού Rational Unified Process Model Driven Architecture 5
Κίνητρα για Μοντελοποίηση ιεργασιών Για να σχηµατιστεί κοινή αντίληψη του πως θα διεξαχθεί η ανάπτυξη του λογισµικού Για να βρεθούν ασυνέπειες, παραλείψεις καθώς και περιττά στοιχεία Για να βρεθούν και να επαληθευθούν δραστηριότητες που οδηγούν στην επίτευξη του στόχου της διεργασίας (π.χ. Λογισµικό υψηλής ακρίβειας) Για να προσαρµοστεί µια γενικότερη διεργασία στη συγκεκριµένη κατάσταση που θα χρησιµοποιηθεί Πρακτική µοντελοποίηση διεργασιών Η µοντελοποίηση των διεργασιών προσφέρει πολλά πλεονεκτήµατα για κατανόηση των διεργασιών και ανακάλυψη ασυνεπειών Ειδικές γλώσσες βοηθούν στον ορισµό και την εκτέλεση των διεργασιών, όπως η γλώσσα προσδιορισµού Marvel (Marvel Specification Language, MSL) Τα µοντέλα διεργασιών είναι ιδιαίτερα χρήσιµα γιασυνεργασία στα πλαίσια µιας οµάδας εργασίας. Μια διεργασία περιλαµβάνει: Όλες τις κύριες δραστηριότητες Τους πόρους που χρησιµοποιούνται καθώς και τους περιορισµούς τους (όπως είναι το χρονοδιάγραµµα) Ενδιάµεσα και τελικά προϊόντα Υποδιεργασίες και ιεραρχίες ή συνδέσεις µεταξύ τους Κριτήρια εισόδου και εξόδου για κάθε δραστηριότητα Σειρά δραστηριοτήτων ώστε ο χρονισµός να είναι ξεκάθαρος Οδηγίες συµπεριλαµβανοµένων των στόχων της κάθε δραστηριότητας Περιορισµούς για κάθε δραστηριότητα, πόροήπροιόν Εργαλεία και Τεχνικές για µοντελοποίηση διεργασιών Επιλογή Γλώσσας ή Σηµειολογίας Ένα στατικό µοντέλο αναπαριστά τη διεργασία δείχνοντας οτι οι είσοδοι µετατρέπονται σε εξόδους Ένα δυναµικό µοντέλο µπορεί να εκτελέσει τη διεργασία ώστε οχρήστηςναµπορεί να δεί πως τα ενδιάµεσα και τελικά προϊόντα µετασχηµατίζονται µε την πάροδο του χρόνου Στατική Μοντελοποίηση: Σηµειολογία του Lai Φόρµες ορισµού περιέχουν πληροφορίες σχετικά µε την πληρότητα κάθε αντικειµένου σε κάποιο χρόνο ιαγράµµατα µετάβασης δείχνουν πως οι καταστάσεις σχετίζονται µεταξύ τους. Φόρµα Ορισµού και ιάγραµµα Μετάβασης Σταθµευµένο: ((state_of(car.engine) = off) (state_of(car.gear) = park) (state_of(car.speed) = stand)) εκκίνηση ΣΕ ΛΕΙΤΟΥΡΓΙΑ ΣΤΑΘΜΕΥΜΕΝΟ έξοδος στάση κίνηση ΣΕ ΚΙΝΗΣΗ 6
υναµική Μοντελοποίηση: υναµική Συστηµάτων Παραδείγµατα µοντέλων διεργασιών λογισµικού Προσοµοίωση της διεργασίας ώστε οτιδήποτε αλλαγές να γίνουν πριν διατεθούν οι απαιτούµενοι πόροι. Μελετώνται οι παράγοντες που επηρεάζουν τη συνολική παραγωγικότητα Προσδιορίζονται (ποσοτικοποιηµένες) σχέσεις (συνδέσεις) µεταξύ των παραγόντων. Τα µοντέλα δυναµικής συστηµάτων υποστηρίζονται από λογισµικό που προσοµοιώνει τη συνολική διεργασία Το µοντέλο καταρράκτη ηµιουργία πρωτοτύπων Το µοντέλο V Λειτουργικές προδιαγραφές Μοντέλο µετασχηµατισµού Ανάπτυξη σε φάσεις: αυξητική και επαναληπτική ανάπτυξη Το σπειροειδές µοντέλο Εργαλεία και Τεχνικές για Μοντελοποίηση ιεργασιών Παράδειγµα: Η σηµειολογία Lai ραστηριότητα Ακολουθία Μοντέλο ιεργασίας Πόρος έλεγχος Πολιτική Οργανισµός Table 2.1. Artifact definition form for artifact car (Lai 1991). Name Car Synopsis This is the artifact that represents a class of cars. Com plexity type Composite Data type (car_c, user-defined) Artifact-state list p arked ((state_of(car.engine) = off) Car is not moving, and engine (state_of(car.gear) = park) is not running. (state_of(car.speed) = stand)) initiated ((state_of(car.engine) = on) Car is not moving, but the (state_of(car.key_hole) = haskey) engine is running (state_of(car-driver(car.)) = in-car) (state_of(car.gear) = drive) (state_of(car.speed) = stand)) moving ((state_of(car.engine) = on) Car is moving forward or (state_of(car.keyhole) = haskey) backward. (state_of(car-driver(car.)) = driving) ((state_of(car.gear) = drive) or (state_of(car.gear) = reverse)) ((state_of(car.speed) = stand) or (state_of(car.speed) = slow) or (state_of(car.speed) = medium) or (state_of(car.speed) = high)) Sub-artifact list doors The four doors of a car. engine The engine of a car. keyhole The ignition keyhole of a car. gear The gear of a car. speed The speed of a car. Relations list car-key This is the relation between a car and a key. car-driver This is the relation between a car and a driver. υναµικά µοντέλα διεργασιών Γλώσσα προσδιορισµού Marvel Καθιστούν δυνατή την εκτέλεση της διεργασίας για να εξεταστεί τι συµβαίνει στους πόρους και στις οντότητες του συστήµατος καθώς συµβαίνουν οι διάφορες δραστηριότητες Προσοµοίωση εναλλακτικών επιλογών και υλοποίηση αλλαγών για βελτίωση της διεργασίας Παράδειγµα: Μοντέλα δυναµικής συστηµάτων Τρία βασικά δοµικά στοιχεία: κλάσεις (classes), κανόνες (rules), και φακέλους εργαλείων (tool envelopes) Η διεργασία περιγράφεται από τρία µέρη: Η συµπεριφορά της διεργασίας προσδιορίζεται από κανόνες Αντικειµενοστραφής ορισµόςτης διεργασίας πληροφοριών του µοντέλου Σύνολο φακέλων διασύνδεσης µεταξύ της γλώσσας Marvel και των εξωτερικών εργαλείων λογισµικού που χρησιµοποιούνται για την εκτέλεση της διεργασίας 7
T I C K E T : : s u p e r c l a s s E N T I T Y s t a t u s : ( i n i t i a l, o p e n, r e f e r r e d _ o u t, r e f e r r a l _ d o n e, Παράδειγµα σεmarvel diagnostics level description referred_to referrals process end closed, fixed) = initial; : (terminal, non_terminal, none) = none; : integer; : text; : link WORKCENTER; : set_of link TICKET; : link PROC_INST; diagnose [?t: TICKET]: (exists PROC_INST?p suchthat (linkto [?t.process?p])) : (and (?t.status = open}(?t.diagnostics = none)) {TICKET_UTIL diagnose?t.name} (and (?t.diagnostics = terminal) (?p.last_task = diagnose) (?p.next_task = refer_to_wc3)); (and (?t.diagnostics = non_terminal) (?p.last_task = diagnose) (?p.next_task = refer_to_wc2)); Class definition for trouble tickets Rul e for diagnosing ticket 8