Επαναχρησιμοποίηση Λογισμικού Ανάπτυξη Λογισμικού. Γρήγορη Ανάπτυξη Λογισμικού - Επαναχρησιμοποίηση Λογισμικού. Τσαδήμας Ανάργυρος

Σχετικά έγγραφα
Ενότητα 4 (κεφάλαιο 17) Τεχνολογία Λογισμικού βάσει Συστατικών Στοιχείων

Ενότητα 3 (κεφάλαιο 16) Επαναχρησιμοποίηση Λογισμικού

Ενότητα 1 (κεφάλαια 3 και 23.4) Ευέλικτη Ανάπτυξη Λογισμικού

Διαδικασίες παραγωγής λογισμικού. Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση

Διαδικασίες παραγωγής λογισμικού. I. Sommerville 2006 Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση Κεφ. 4

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ

Μεθοδολογίες Παραγωγής Λογισµικού

Ανάπτυξη & Σχεδίαση Λογισμικού (ΗΥ420)

Διαδικασίες παραγωγής λογισμικού. Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση

Διαδικασίες παραγωγής λογισμικού. I. Sommerville 2006 Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση Κεφ. 4

Περιεχόμενα. Κεφάλαιο 2 Κοινωνικοτεχνικά συστήματα 49

Αρχιτεκτονική Λογισμικού

Πληροφορική 2. Τεχνολογία Λογισμικού

Πίνακας Περιεχομένων. μέρος A 1 Εισαγωγή στην Τεχνολογία Λογισμικού

ΜΕΘΟΔΟΛΟΓΙΕΣ ΑΝΑΠΤΥΞΗΣ ΣΥΣΤΗΜΑΤΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ

Εισαγωγή στη Σχεδίαση Λογισμικού

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ

Ενότητα 2. Πηγές Λογισμικού. Πληροφοριακά Συστήματα Διοίκησης ΙI Νίκος Καρακαπιλίδης 2-1

ΣΕΧΝΟΛΟΓΙΑ ΛΟΓΙΜΙΚΟΤ ΔΕΤΣΕΡΗ ΔΙΑΛΕΞΗ ΔΙΑΔΙΚΑΙΑ ΠΑΡΑΓΩΓΗ ΛΟΓΙΜΙΚΟΤ

Ανάλυση Απαιτήσεων Απαιτήσεις Λογισµικού

Αρχιτεκτονικές κατανεμημένων συστημάτων. I. Sommerville 2006 Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση Κεφ. 12

«ΕΥΕΛΙΚΤΟ ERP. ΥΛΟΠΟΙΗΣΗ ΕΝΟΣ ΜΙΚΡΟΥ ΣΥΣΤΗΜΑΤΟΣ ERP»

Ενότητα 12 (κεφάλαιο 28) Αρχιτεκτονικές Εφαρμογών

Διαχείριση έργων. Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΑΝΑΛΥΣΗ Εισαγωγή. Ιωάννης Σταμέλος Βάιος Κολοφωτιάς Πληροφορική

1 Συστήματα Αυτοματισμού Βιβλιοθηκών

Ανάλυση Απαιτήσεων Mεθοδολογίες Ανάπτυξης

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ

Ανάλυση Συστηµάτων και Τεχνολογία Λογισµικού

ΕΝΟΤΗΤΑ 2 η ΙΑΧΕΙΡΙΣΗ ΡΟΗΣ ΕΡΓΑΣΙΑΣ (WORKFLOW MANAGEMENT) 2.1 Εισαγωγή

Υπηρεσίες Ιστού (Web Services) ΜΙΧΑΛΗΣ ΜΑΛΙΑΠΠΗΣ

Πληροφοριακά Συστήματα Απομακρυσμένης Εποπτείας και Μετρήσεων

Διαδικτυακές Εφαρμογές. Ενότητα 2: Enterprise Java Beans και Java Server Faces Μιχάλας Άγγελος Βούρκας Δημήτριος Τμήμα Μηχανικών Πληροφορικής ΤΕ

ΣΧΕΔΙΑΣΗ & ΑΝΑΠΤΥΞΗ ΛΟΓΙΣΜΙΚΟΥ

Αλλάξτε τον τρόπο που κάνετε τη δουλειά σας

Υποσυστήματα Πωλήσεων και Μάρκετινγκ

Περιεχόμενο του μαθήματος

Αρχιτεκτονικές κατανεμημένων συστημάτων. I. Sommerville 2006 Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση Κεφ. 12

EΚΤΕΛΕΣΤΙΚΗ ΑΠΟΦΑΣΗ (ΕΕ) /... ΤΗΣ ΕΠΙΤΡΟΠΗΣ. της

6. Διαχείριση Έργου. Έκδοση των φοιτητών

Πρακτικά όλα τα προβλήματα ασφαλείας οφείλονται σε λάθη στον κώδικα

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΑΝΑΛΥΣΗ Επιχειρηματική Μοντελοποίηση. Ιωάννης Σταμέλος Βάιος Κολοφωτιάς Πληροφορική

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΑΝΑΛΥΣΗ Rational Unified Process. Ιωάννης Σταμέλος Βάιος Κολοφωτιάς Πληροφορική

Ανάπτυξη & Σχεδίαση Λογισμικού (ΗΥ420)

Εισαγωγή στην τεχνολογία λογισμικού. I. Sommerville 2006 Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση Κεφ. 1

Έγγραφο Περιγραφής Απαιτήσεων Λογισμικού

Θέματα Ατομικής Διπλωματικής Εργασίας Ακαδημαϊκό Έτος 2017/2018. Γεωργία Καπιτσάκη (Επίκουρη Καθηγήτρια)

Αλληλεπίδραση Ανθρώπου- Υπολογιστή & Ευχρηστία

ΕΙΣΑΓΩΓΗ ΣΤΗ ΔΙΑΧΕΙΡΙΣΗ ΚΑΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΕΡΓΩΝ

ΚΕΦΑΛΑΙΟ 5. Κύκλος Ζωής Εφαρμογών ΕΝΟΤΗΤΑ 2. Εφαρμογές Πληροφορικής. Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών

Προδιαγραφές Απαιτήσεων Επικύρωση Απαιτήσεων

Τεχνολογία λογισμικού στην πράξη

Τεχνολογία Λογισμικού

Ενότητα 8 (κεφάλαιο 21) Θεματοκεντρική Τεχνολογία Λογισμικού

. Μεθοδολογία Προγραμματισμού. Εισαγωγή. Νικόλαος Πεταλίδης. Εισαγωγή Εαρινό Εξάμηνο 2014

Στρατηγική Επιλογή Capital B.O.S. Capital B.O.S.

Σχεδιαστικά Προγράμματα Επίπλου

Βελτιωμένη Εφαρμογή. Νέες δυνατότητες. Νέα Ιστοσελίδα

Η συμβολή στην επιτυχία ενός οργανισμού, παρουσιάζοντας σχετικά δεδομένα με τη χρήση τεχνικών 2Δ ή 3Δ τεχνολογίας. Αρμοδιότητα

Σχεδιασμός Οικολογικού Διαμεσολαβητή για την εποπτεία και διαχείριση δικτύου διανομής ηλεκτρικής ενέργειας

Επιχειρησιακά Πληροφοριακά Συστήματα. Site: Στόχος Σκοπός μαθήματος

ΣΥΓΚΡΙΤΙΚΗ ΜΕΛΕΤΗ ΤΕΧΝΟΛΟΓΙΩΝ ΔΙΑΔΙΚΤΥΑΚΩΝ ΥΠΗΡΕΣΙΩΝ ΚΑΙ ΑΞΙΟΛΟΓΗΣΗ ΤΗΣ ΤΕΧΝΟΛΟΓΙΑΣ REST ΠΛΑΣΤΑΡΑΣ ΕΥΡΙΠΙΔΗΣ

Τεχνολογία Διοίκησης Επιχειρησιακών Διαδικασιών

ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ

IBM IoT Continuous Engineering on Cloud και IBM Collaborative Lifecycle Management on Cloud

Σχεδιαστής Ιστοσελίδων

ΤΕΧΝΟΛΟΓΙΕΣ & ΑΣΦΑΛΕΙΑ ΠΛΗΡΟΦΟΡΙΩΝ ΙΩΑΝΝΗ Δ. ΙΓΓΛΕΖΑΚΗ

Θέματα Ατομικής Διπλωματικής Εργασίας - DRAFT Ακαδημαϊκό Έτος 2015/2016. Γεωργία Καπιτσάκη (Λέκτορας)

οικονομικές τάσεις Εκτεταμένη συνεργασία της εφοδιαστικής αλυσίδας. έργου FLUID-WIN το οποίο χρηματοδοτήθηκε από το 6ο Πρόγραμμα Πλαίσιο Παγκόσμιες

Ενσωματωμένα controls τα οποία προσαρμόζονται και χρησιμοποιούνται σε οποιαδήποτε ιστοσελίδα επιλέγει ο φορέας.

ΓΙΑ ΜΙΑ ΑΝΟΙKΤΗ ΕΠΙΧΕΙΡΗΣΗ. mobile CRM ΔΩΣΤΕ ΝΕΑ ΠΝΟΗ ΣΤΙΣ ΣΧΕΣΕΙΣ ΜΕ ΤΟΥΣ ΠΕΛΑΤΕΣ ΣΑΣ

08 Η γλώσσα UML I. Τεχνολογία Λογισμικού. Σχολή Hλεκτρολόγων Mηχανικών & Mηχανικών Yπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο. Χειμερινό εξάμηνο

Στρατηγική Επιλογή. Το xline ERP - Λογιστικές Εφαρμογές αποτελείται από:

Αρχιτεκτονική του πληροφοριακού συστήµατος Cardisoft Γραµµατεία 2003 ιαχείριση Προσωπικού

Διαχείριση Έργων. Ενότητα 7: Εκτέλεση, παρακολούθηση και έλεγχος έργου

Σκοπός του μαθήματος

Ολοκληρωμένη, σύγχρονη και ευέλικτη λύση ERP (Enterprise Resource Planning-Σύστημα Διαχείρισης Επιχειρησιακών Πόρων) για επιχειρήσεις, που επιθυμούν

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ

LABORATORY INFORMATION MANAGEMENT SYSTEM

Cloud ERP. Αλλάξτε τον τρόπο που κάνετε τη δουλειά σας

ΕΝΤΥΠΟ ΕΣΩΤΕΡΙΚΗΣ ΟΡΙΖΟΝΤΙΑΣ ΕΠΙΘΕΩΡΗΣΗΣ

Συστήματα Διαχείρισης Ποιότητας Το πρότυπο ISO9001:2015 και οι εφαρμογές του

Αρχιτεκτονικές Συστημάτων

Τεχνικές σχεδίασης προγραμμάτων, Προγραμματιστικά Περιβάλλοντα

Αντικειμενοστρεφής Προγραμματισμός

Μοντελοποίηση δεδομένων με UML Χρήση σε πολυμεσικές εφαρμογές

Μεθοδική Ανάπτυξη Δικτυακής Υποδομής. Παρουσίαση στην ημερίδα για Σύγχρονες τάσεις στις Τηλεπικοινωνίες και Τεχνολογίες Αιχμής

Μοτίβα Σχεδίασης (Design Patterns)

Ημερομηνία Παράδοσης: 4/4/2013

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΑΝΑΛΥΣΗ Διαγράμματα Αλληλεπίδρασης. Ιωάννης Σταμέλος Βάιος Κολοφωτιάς Πληροφορική

Ενότητα 4: Πληροφοριακά συστήματα για την επιχείρηση

ΠΑΝΕΠΙΣΤΗΜΙΟ ΣΤΕΡΕΑΣ ΕΛΛΑΔΑΣ- ΤΜΗΜΑ ΠΕΡΙΦΕΡΕΙΑΚΗΣ ΟΙΚΟΝΟΜΙΚΗΣ ΑΝΑΠΤΥΞΗΣ, ΜΑΘΗΜΑ: ΔΙΑΧΕΙΡΙΣΗ ΑΝΘΡΩΠΙΝΩΝ ΚΑΙ ΦΥΣΙΚΩΝ ΠΟΡΩΝ- ΧΡΙΣΤΟΣ ΑΠ.

Έλεγχος Προγραμμάτων και Συστήματος

Στρατηγικό Σχεδιασµό Πληροφοριακών Συστηµάτων

Σχεδιασμός προϊόντων και υπηρεσιών. Source: Toyota (GB) plc

ΣΥΣΤΗΜΑ ΔΙΑΧΕΙΡΙΣΗΣ ΕΠΙΧΕΙΡΗΣΙΑΚΩΝ ΠΟΡΩΝ

Όροι Χρήσης της IBM Όροι για Συγκεκριμένες Προσφορές SaaS. IBM Bluemix Garage Services

ποτελεσματικότητα διαδικασίες sms ταχύτητα οργανόγραμμα ανάθεσηαρχειοθέτηση υτοματοποιημένη εκτέλεση ψηφιακή υπογραφή ISO ενημερώσεις διαγράμματα

Εισαγωγή στην. Γιάννης Σμαραγδάκης

Transcript:

Ανάπτυξη Λογισμικού Γρήγορη Ανάπτυξη Λογισμικού - Τσαδήμας Ανάργυρος Χαροκόπειο Πανεπιστήμιο, Τμήμα Πληροφορικής & Τηλεματικής 24 Μαΐου 2016 wwwdithuagr (tsadimas@huagr) Ανάπτυξη Λογισμικού 24 Μαΐου 2016 1 / 97

Περιεχόμενα 1 Γρήγορη Ανάπτυξη Λογισμικού - Ευέλικτες μέθοδοι Εισαγωγή στη «Γρήγορη Ανάπτυξη Λογισμικού» Ευέλικτες μέθοδοι Ακραίος προγραμματισμός 2 Βασικές έννοιες «Επαναχρησιμοποίησης λογισμικού» Πλαίσια εργασίας εφαρμογών - Application frameworks Γραμμές προϊόντων λογισμικού Επαναχρησιμοποίηση Συστημάτων Εφαρμογών - COTS product reuse 3 Βασικές έννοιες «Ανάπτυξης βάσει συστατικών στοιχείων» Μοντέλα συστατικών στοιχείων Η διαδικασία τεχνολογίας λογισμικού βάσει συστατικών στοιχείων Σύνθεση συστατικών στοιχείων wwwdithuagr (tsadimas@huagr) Ανάπτυξη Λογισμικού 24 Μαΐου 2016 2 / 97

Περιεχόμενα 1 Γρήγορη Ανάπτυξη Λογισμικού - Ευέλικτες μέθοδοι Εισαγωγή στη «Γρήγορη Ανάπτυξη Λογισμικού» Ευέλικτες μέθοδοι Ακραίος προγραμματισμός 2 Βασικές έννοιες «Επαναχρησιμοποίησης λογισμικού» Πλαίσια εργασίας εφαρμογών - Application frameworks Γραμμές προϊόντων λογισμικού Επαναχρησιμοποίηση Συστημάτων Εφαρμογών - COTS product reuse 3 Βασικές έννοιες «Ανάπτυξης βάσει συστατικών στοιχείων» Μοντέλα συστατικών στοιχείων Η διαδικασία τεχνολογίας λογισμικού βάσει συστατικών στοιχείων Σύνθεση συστατικών στοιχείων wwwdithuagr (tsadimas@huagr) Ανάπτυξη Λογισμικού 24 Μαΐου 2016 3 / 97

Περιεχόμενα 1 Γρήγορη Ανάπτυξη Λογισμικού - Ευέλικτες μέθοδοι Εισαγωγή στη «Γρήγορη Ανάπτυξη Λογισμικού» Ευέλικτες μέθοδοι Ακραίος προγραμματισμός 2 Βασικές έννοιες «Επαναχρησιμοποίησης λογισμικού» Πλαίσια εργασίας εφαρμογών - Application frameworks Γραμμές προϊόντων λογισμικού Επαναχρησιμοποίηση Συστημάτων Εφαρμογών - COTS product reuse 3 Βασικές έννοιες «Ανάπτυξης βάσει συστατικών στοιχείων» Μοντέλα συστατικών στοιχείων Η διαδικασία τεχνολογίας λογισμικού βάσει συστατικών στοιχείων Σύνθεση συστατικών στοιχείων wwwdithuagr (tsadimas@huagr) Ανάπτυξη Λογισμικού 24 Μαΐου 2016 4 / 97

Γρήγορη ανάπτυξη λογισμικού Εξαιτίας του ταχύτατα μεταβαλλόμενου επιχειρησιακού περιβάλλοντος, οι εταιρείες πρέπει να ανταποκρίνονται σε νέες ευκαιρίες και να ανταπεξέρχονται στον ανταγωνισμό Γι αυτό απαιτείται η χρήση λογισμικού, οπότε η γρήγορη ανάπτυξη και παράδοση συχνά αποτελεί την πλέον κρίσιμη απαίτηση για τα συστήματα λογισμικού Υπάρχουν επιχειρήσεις που είναι πρόθυμες να δεχθούν λογισμικό χαμηλότερης ποιότητας αν αυτό πρόκειται να συμβάλει στη γρηγορότερη παράδοση τουλάχιστον των ουσιαστικών λειτουργικών δυνατοτήτων wwwdithuagr (tsadimas@huagr) Ανάπτυξη Λογισμικού 24 Μαΐου 2016 5 / 97

Απαιτήσεις Λόγω του μεταβαλλόμενου περιβάλλοντος, συχνά είναι πρακτικά αδύνατο να παραχθεί ένα πλήρες και συνεπές σύνολο απαιτήσεων για το εκάστοτε σύστημα Συνεπώς το μοντέλο καταρράκτη για την ανάπτυξη λογισμικού δεν είναι πρακτικό, οπότε ο μόνος τρόπος για τη γρήγορη παράδοση του λογισμικού είναι μια προσέγγιση ανάπτυξης που βασίζεται στην επαναληπτική κατάρτιση προδιαγραφών και επίδοση παραδοτέων wwwdithuagr (tsadimas@huagr) Ανάπτυξη Λογισμικού 24 Μαΐου 2016 6 / 97

Χαρακτηριστικά των διαδικασιών γρήγορης ανάπτυξης λογισμικού Οι διαδικασίες της κατάρτισης των προδιαγραφών, του σχεδιασμού και της υλοποίησης είναι ταυτόχρονες Δεν υπάρχουν λεπτομερείς προδιαγραφές του συστήματος, ενώ η τεκμηρίωση του σχεδιασμού είναι η ελάχιστη δυνατή Το σύστημα αναπτύσσεται σε μια σειρά επαυξήσεων Οι τελικοί χρήστες του συστήματος αξιολογούν κάθε επαύξηση και προτείνουν αλλαγές για μεταγενέστερες επαυξήσεις Οι διασυνδέσεις χρήστη της εφαρμογής συχνά αναπτύσσονται με τη χρήση ενός αλληλεπιδραστικού συστήματος wwwdithuagr (tsadimas@huagr) Ανάπτυξη Λογισμικού 24 Μαΐου 2016 7 / 97

Μια επαναληπτική διαδικασία ανάπτυξης Σχήμα : Μια επαναληπτική διαδικασία ανάπτυξης wwwdithuagr (tsadimas@huagr) Ανάπτυξη Λογισμικού 24 Μαΐου 2016 8 / 97

Πλεονεκτήματα της βαθμιαίας ανάπτυξης Ταχύτερη παράδοση υπηρεσιών στον πελάτη Με κάθε επαύξηση παραδίδεται στον πελάτη η λειτουργική δυνατότητα με τη μεγαλύτερη προτεραιότητα Συμμετοχή των χρηστών στο σύστημα Οι χρήστες πρέπει να συμμετέχουν στη διαδικασία της ανάπτυξης, το οποίο συνεπάγεται ότι το σύστημα έχει περισσότερες πιθανότητες να ικανοποιεί τις ανάγκες τους και επίσης ότι και εκείνοι έχουν συνεισφέρει wwwdithuagr (tsadimas@huagr) Ανάπτυξη Λογισμικού 24 Μαΐου 2016 9 / 97

Προβλήματα με τη βαθμιαία ανάπτυξη Διαχειριστικά προβλήματα Δύσκολα κρίνεται η πρόοδος του έργου και δύσκολα εντοπίζονται ενδεχόμενα προβλήματα επειδή δεν υπάρχει τεκμηρίωση η οποία παρουσιάζει τι έχει επιτευχθεί Προβλήματα σύμβασης Το σύνηθες μοντέλο σύμβασης βασίζεται σε κάποιο σύνολο προδιαγραφών Όταν δεν υπάρχουν τέτοιες προδιαγραφές, πρέπει να αναζητηθούν άλλες μορφές συμβάσεων Προβλήματα επικύρωσης Αν δεν υπάρχουν προδιαγραφές, με ποιο μέτρο συγκρίνεται το σύστημα; Προβλήματα συντήρησης Οι συνεχείς αλλαγές τείνουν να αλλοιώνουν τη δομή οποιουδήποτε συστήματος λογισμικού, καθιστώντας έτσι πιο ακριβή την πραγματοποίηση τροποποιήσεων σε αυτό και την εξέλιξή του ώστε να ανταποκρίνεται σε νέες απαιτήσεις wwwdithuagr (tsadimas@huagr) Ανάπτυξη Λογισμικού 24 Μαΐου 2016 10 / 97

Περιεχόμενα 1 Γρήγορη Ανάπτυξη Λογισμικού - Ευέλικτες μέθοδοι Εισαγωγή στη «Γρήγορη Ανάπτυξη Λογισμικού» Ευέλικτες μέθοδοι Ακραίος προγραμματισμός 2 Βασικές έννοιες «Επαναχρησιμοποίησης λογισμικού» Πλαίσια εργασίας εφαρμογών - Application frameworks Γραμμές προϊόντων λογισμικού Επαναχρησιμοποίηση Συστημάτων Εφαρμογών - COTS product reuse 3 Βασικές έννοιες «Ανάπτυξης βάσει συστατικών στοιχείων» Μοντέλα συστατικών στοιχείων Η διαδικασία τεχνολογίας λογισμικού βάσει συστατικών στοιχείων Σύνθεση συστατικών στοιχείων wwwdithuagr (tsadimas@huagr) Ανάπτυξη Λογισμικού 24 Μαΐου 2016 11 / 97

Ευέλικτες μέθοδοι Η δυσαρέσκεια την οποία προκαλούσαν οι πρόσθετες καθυστερήσεις που συνεπάγονταν οι μέθοδοι σχεδιασμού οδήγησαν στη δημιουργία των ευέλικτων μεθόδων Αυτές: επικεντρώνονται στον κώδικα και όχι στο σχεδιασμό βασίζονται σε μια επαναληπτική προσέγγιση για την ανάπτυξη του λογισμικού έχουν σκοπό τη γρήγορη παράδοση λογισμικού που λειτουργεί και την ταχεία εξέλιξή του για την ικανοποίηση των μεταβαλλόμενων απαιτήσεων Οι ευέλικτες μέθοδοι πιθανότατα ταιριάζουν καλύτερα σε συστήματα μικρού ή μεσαίου μεγέθους ή σε προϊόντα υπολογιστών wwwdithuagr (tsadimas@huagr) Ανάπτυξη Λογισμικού 24 Μαΐου 2016 12 / 97

Αρχές των ευέλικτων μεθόδων Αρχή Συμμετοχή του Πελάτη Βαθμιαία Παράδοση Άνθρωποι, όχι διαδικασίες Πρόβλεψη για μεταβολές Διατήρηση απλότητας Περιγραφή Οι πελάτες πρέπει να συμμετέχουν στενά σε όλη τη διαδικασία της ανάπτυξης Ο ρόλος τους είναι να παρέχουν νέες απαιτήσεις συστήματος και να καθορίζουν την προτεραιότητά τους, καθώς και να αξιολογούν τις επαναλήψεις του συστήματος Το λογισμικό αναπτύσσεται σε επαυξήσεις, και ο πελάτης καθορίζει τις απαιτήσεις που θα συμπεριληφθούν σε κάθε επαύξηση Πάντοτε πρέπει να προσδιορίζονται και να αξιοποιούνται οι ικανότητες της ομάδας ανάπτυξης Τα μέλη της ομάδας πρέπει να έχουν το ελεύθερο να αναπτύξουν τους δικούς τους τρόπους εργασίας, χωρίς προδιαγεγραμμένες διαδικασίες Να περιμένετε ότι οι απαιτήσεις του συστήματος θα αλλάξουν, οπότε σχεδιάστε το σύστημα έτσι ώστε να είναι σε θέση να δεχτεί αυτές τις μεταβολές Επικεντρωθείτε στην απλότητα τόσο του προς ανάπτυξη λογισμικού όσο και της διαδικασίας ανάπτυξης Όπου είναι δυνατό, αφιερώστε προσπάθεια για να εξαλείψετε την πολυπλοκότητα από το σύστημα wwwdithuagr (tsadimas@huagr) Ανάπτυξη Λογισμικού 24 Μαΐου 2016 13 / 97

Προβλήματα των ευέλικτων μεθόδων Είναι δύσκολη η διατήρηση του ενδιαφέροντος των πελατών που εμπλέκονται στη διαδικασία Κάποια άτομα της ομάδας ανάπτυξης ίσως να μην ταιριάζουν στην έντονη συμμετοχή που συνηθίζεται στις ευέλικτες μεθόδους Η απόδοση προτεραιοτήτων σε μεταβολές μπορεί να αποδειχτεί εξαιρετικά δύσκολη υπόθεση σε συστήματα όπου υπάρχουν πολλοί ενδιαφερόμενοι Η διατήρηση της απλότητας απαιτεί επιπλέον εργασία Πρόβλημα μπορεί να αποτελέσουν και οι συμβάσεις, κάτι που μπορεί να συμβεί και σε άλλες προσεγγίσεις βαθμιαίας ανάπτυξης wwwdithuagr (tsadimas@huagr) Ανάπτυξη Λογισμικού 24 Μαΐου 2016 14 / 97

Περιεχόμενα 1 Γρήγορη Ανάπτυξη Λογισμικού - Ευέλικτες μέθοδοι Εισαγωγή στη «Γρήγορη Ανάπτυξη Λογισμικού» Ευέλικτες μέθοδοι Ακραίος προγραμματισμός 2 Βασικές έννοιες «Επαναχρησιμοποίησης λογισμικού» Πλαίσια εργασίας εφαρμογών - Application frameworks Γραμμές προϊόντων λογισμικού Επαναχρησιμοποίηση Συστημάτων Εφαρμογών - COTS product reuse 3 Βασικές έννοιες «Ανάπτυξης βάσει συστατικών στοιχείων» Μοντέλα συστατικών στοιχείων Η διαδικασία τεχνολογίας λογισμικού βάσει συστατικών στοιχείων Σύνθεση συστατικών στοιχείων wwwdithuagr (tsadimas@huagr) Ανάπτυξη Λογισμικού 24 Μαΐου 2016 15 / 97

Ακραίος προγραμματισμός Ίσως η πιο γνωστή και πιο ευρέως διαδεδομένη ευέλικτη μέθοδος Ο ακραίος προγραμματισμός (extreme Programming - XP) υιοθετεί μια «ακραία» προσέγγιση της βαθμιαίας ανάπτυξης Μπορεί να δομηθούν πολλές νέες εκδόσεις κάθε ημέρα Οι επαυξήσεις παραδίδονται στους πελάτες κάθε 2 εβδομάδες Για κάθε δόμηση πρέπει να εκτελεστούν όλες οι δοκιμές, ενώ η δόμηση αυτή γίνεται αποδεκτή μόνο αν όλες οι δοκιμές εκτελεστούν σωστά wwwdithuagr (tsadimas@huagr) Ανάπτυξη Λογισμικού 24 Μαΐου 2016 16 / 97

Ο κύκλος εκδόσεων του ακραίου προγραμματισμού Σχήμα : Ο κύκλος εκδόσεων του ακραίου προγραμματισμού wwwdithuagr (tsadimas@huagr) Ανάπτυξη Λογισμικού 24 Μαΐου 2016 17 / 97

Πρακτικές του ακραίου προγραμματισμού Ι Πρακτική Βαθμιαίος Προγραμματισμός Μικρές εκδόσεις Απλός σχεδιασμός Ανάπτυξη βάσει δοκιμών Ανασύνθεση (refactoring) Περιγραφή Οι απαιτήσεις γράφονται σε κάρτες Ιστοριών και οι Ιστορίες που θα συμπεριληφθούν σε μια έκδοση καθορίζονται από το διαθέσιμο χρόνο και τη σχετική τους προτεραιότητα Οι προγραμματιστές χωρίζουν αυτές τις ιστορίες σε «εργασίες» ανάπτυξης Πρώτα αναπτύσσεται το ελάχιστο σύνολο λειτουργικότητας που είναι χρήσιμο στην επιχείρηση Οι εκδόσεις του συστήματος είναι συχνές και προσθέτουν λειτουργικότητα στην πρώτη έκδοση με βαθμιαίο τρόπο Πραγματοποιείται όσος σχεδιασμός είναι απαραίτητος για την ικανοποίηση των τρεχουσών απαιτήσεων, και όχι περισσότερος Χρησιμοποιείται ένα αυτοματοποιημένο πλαίσιο εργασίας για τη συγγραφή δοκιμών κάθε νέου τμήματος λειτουργικότητας, πριν υλοποιηθεί η ίδια η λειτουργικότητα Κάθε προγραμματιστής πρέπει συνεχώς να ανασυνθέτει αμέσως μόλις εντοπίζονται πιθανές βελτιώσεις Με αυτόν τον τρόπο ο κώδικας διατηρείται απλός και συντηρήσιμος wwwdithuagr (tsadimas@huagr) Ανάπτυξη Λογισμικού 24 Μαΐου 2016 18 / 97

Πρακτικές του ακραίου προγραμματισμού ΙΙ Πρακτική Προγραμματισμός ανά ζεύγη Συλλογική Ιδιοκτησία Συνεχής ενσωμάτωση Μη εξοντωτικοί ρυθμοί εργασίας Πάντα διαθέσιμος πελάτης Περιγραφή Οι προγραμματιστές εργάζονται ανά ζεύγη, ελέγχοντας ο ένας τη δουλειά του άλλου και παρέχοντας υποστήριξη ώστε να γίνεται πάντα καλή δουλειά Τα ζεύγη προγραμματιστών εργάζονται σε όλους τους τομείς του συστήματος έτσι ώστε να μη δημιουργούνται απομονωμένες νησίδες εξειδίκευσης και όλος ο κώδικας να ανήκει σε όλους Ο καθένας μπορεί να αλλάξει οτιδήποτε Μόλις ολοκληρωθεί μια εργασία, ενσωματώνεται στο συνολικό σύστημα Μετά από κάθε τέτοια ενσωμάτωση, πρέπει να εκτελεστούν με επιτυχία όλες οι δοκιμές της μονάδας (unit tests) του συστήματος Οι πολλές ώρες εργασίας δε θεωρούνται αποδεκτή πρακτική, καθώς το τελικό αποτέλεσμα είναι να ελαττώνεται η ποιότητα του κώδικα και η παραγωγικότητα να κυμαίνεται σε μέτρια επίπεδα Η ομάδα του ακραίου προγραμματισμού πρέπει να έχει την κάθε στιγμή στη διάθεσή της έναν αντιπρόσωπο του τελικού χρήστη του συστήματος (τον πελάτη) Σε μια διαδικασία ακραίου προγραμματισμού, ο πελάτης αποτελεί μέλος της ομάδας ανάπτυξης και είναι υπεύθυνος για να τροφοδοτεί την ομάδα με απαιτήσεις συστήματος προς υλοποίηση wwwdithuagr (tsadimas@huagr) Ανάπτυξη Λογισμικού 24 Μαΐου 2016 19 / 97

Ακραίος προγραμματισμός και αρχές των ευέλικτων μεθόδων Η βαθμιαία ανάπτυξη υποστηρίζεται μέσω μικρών και συχνών εκδόσεων του συστήματος Η συμμετοχή του πελάτη συνεπάγεται την πλήρη απασχόλησή του στην ομάδα ανάπτυξης Η αρχή «άνθρωποι, όχι διαδικασίες» υποστηρίζεται με τον προγραμματισμό ανά ζεύγη, τη συλλογική ιδιοκτησία του κώδικα του συστήματος και μια διαδικασία ανάπτυξης η οποία δεν απαιτεί εξοντωτική εργασία Οι μεταβολές υποστηρίζονται μέσω τακτικών εκδόσεων του συστήματος Η διατήρηση της απλότητας υποστηρίζεται μέσω της συνεχούς ανασύνθεσης του κώδικα wwwdithuagr (tsadimas@huagr) Ανάπτυξη Λογισμικού 24 Μαΐου 2016 20 / 97

Σενάρια απαιτήσεων Στον ακραίο προγραμματισμό, όλες οι απαιτήσεις εκφράζονται με τη μορφή σεναρίων ή ιστοριών χρήστη Γράφονται σε κάρτες και μετά η ομάδα ανάπτυξης τις διασπά σε εργασίες υλοποίησης Αυτές οι εργασίες αποτελούν τη βάση των χρονικών και οικονομικών εκτιμήσεων Ο πελάτης επιλέγει τις ιστορίες που θα συμπεριληφθούν στην επόμενη έκδοση με βάση τις προτεραιότητες και τις εκτιμήσεις που αφορούν το χρονοδιάγραμμα wwwdithuagr (tsadimas@huagr) Ανάπτυξη Λογισμικού 24 Μαΐου 2016 21 / 97

Κάρτα ιστορίας, παράδειγμα Σχήμα : Κάρτα ιστορίας για το κατέβασμα εγγράφων wwwdithuagr (tsadimas@huagr) Ανάπτυξη Λογισμικού 24 Μαΐου 2016 22 / 97

Ακραίος προγραμματισμός και πραγματοποίηση τροποποιήσεων Μια γενική αρχή της τεχνολογίας λογισμικού είναι ότι ο σχεδιασμός πρέπει να γίνεται λαμβάνοντας υπόψη το ενδεχόμενο πραγματοποίησης αλλαγών Είναι σκόπιμη η επένδυση χρόνου και προσπάθειας για την πρόβλεψη αλλαγών καθώς αυτό θα μειώσει τα έξοδα σε μεταγενέστερα στάδια του κύκλου ζωής του συστήματος Όμως, σύμφωνα με τον ακραίο προγραμματισμό, αυτό δεν αξίζει τον κόπο αφού οι διάφορες αλλαγές δεν μπορούν να προβλεφθούν με αξιόπιστο τρόπο Αντ αυτού, προτείνεται η συνεχής βελτίωση του κώδικα (ανασύνθεση) προκειμένου να διευκολυνθεί η διαδικασία αλλαγών όταν πρόκειται αυτές να υλοποιηθούν wwwdithuagr (tsadimas@huagr) Ανάπτυξη Λογισμικού 24 Μαΐου 2016 23 / 97

Εκτέλεση δοκιμών στον ακραίο προγραμματισμό Τα κύρια σημεία της εκτέλεσης δοκιμών στον ακραίο προγραμματισμό είναι: Ανάπτυξη βάσει δοκιμών Γράφονται πρώτα σενάρια και μετά ο κώδικας Βαθμιαία ανάπτυξη δοκιμών από σενάρια Συμμετοχή των χρηστών στην ανάπτυξη και επικύρωση των δοκιμών Κάθε φορά που δομείται μια νέα έκδοση, χρησιμοποιούνται αυτοματοποιημένα δοκιμαστικά προγράμματα για την εκτέλεση των δοκιμών όλων των συστατικών στοιχείων wwwdithuagr (tsadimas@huagr) Ανάπτυξη Λογισμικού 24 Μαΐου 2016 24 / 97

Κάρτες εργασιών, παράδειγμα Σχήμα : Κάρτες εργασιών για το κατέβασμα εγγράφων wwwdithuagr (tsadimas@huagr) Ανάπτυξη Λογισμικού 24 Μαΐου 2016 25 / 97

Περιγραφή περίπτωσης δοκιμής (test case), παράδειγμα Σχήμα : Περιγραφή περίπτωσης δοκιμής για εγκυρότητα πιστωτικής κάρτας wwwdithuagr (tsadimas@huagr) Ανάπτυξη Λογισμικού 24 Μαΐου 2016 26 / 97

Ανάπτυξη βάσει δοκιμών Η δημιουργία δοκιμών πριν από τη δημιουργία κώδικα συμβάλλει στη διευκρίνιση των απαιτήσεων που πρόκειται να υλοποιηθούν Οι δοκιμές γράφονται με τη μορφή προγραμμάτων και όχι δεδομένων ώστε να μπορούν να εκτελούνται αυτόματα Κάθε δοκιμή περιλαμβάνει έναν έλεγχο για τη σωστή εκτέλεσή της Κάθε φορά που προστίθενται νέες λειτουργικές δυνατότητες, εκτελούνται αυτόματα όλες οι νέες, αλλά και οι προηγούμενες δοκιμές Έτσι ελέγχεται το ενδεχόμενο εμφάνισης σφαλμάτων εξαιτίας των νέων δυνατοτήτων wwwdithuagr (tsadimas@huagr) Ανάπτυξη Λογισμικού 24 Μαΐου 2016 27 / 97

Video Intro to Agile wwwdithuagr (tsadimas@huagr) Ανάπτυξη Λογισμικού 24 Μαΐου 2016 28 / 97

Περιεχόμενα 1 Γρήγορη Ανάπτυξη Λογισμικού - Ευέλικτες μέθοδοι Εισαγωγή στη «Γρήγορη Ανάπτυξη Λογισμικού» Ευέλικτες μέθοδοι Ακραίος προγραμματισμός 2 Βασικές έννοιες «Επαναχρησιμοποίησης λογισμικού» Πλαίσια εργασίας εφαρμογών - Application frameworks Γραμμές προϊόντων λογισμικού Επαναχρησιμοποίηση Συστημάτων Εφαρμογών - COTS product reuse 3 Βασικές έννοιες «Ανάπτυξης βάσει συστατικών στοιχείων» Μοντέλα συστατικών στοιχείων Η διαδικασία τεχνολογίας λογισμικού βάσει συστατικών στοιχείων Σύνθεση συστατικών στοιχείων wwwdithuagr (tsadimas@huagr) Ανάπτυξη Λογισμικού 24 Μαΐου 2016 29 / 97

Περιεχόμενα 1 Γρήγορη Ανάπτυξη Λογισμικού - Ευέλικτες μέθοδοι Εισαγωγή στη «Γρήγορη Ανάπτυξη Λογισμικού» Ευέλικτες μέθοδοι Ακραίος προγραμματισμός 2 Βασικές έννοιες «Επαναχρησιμοποίησης λογισμικού» Πλαίσια εργασίας εφαρμογών - Application frameworks Γραμμές προϊόντων λογισμικού Επαναχρησιμοποίηση Συστημάτων Εφαρμογών - COTS product reuse 3 Βασικές έννοιες «Ανάπτυξης βάσει συστατικών στοιχείων» Μοντέλα συστατικών στοιχείων Η διαδικασία τεχνολογίας λογισμικού βάσει συστατικών στοιχείων Σύνθεση συστατικών στοιχείων wwwdithuagr (tsadimas@huagr) Ανάπτυξη Λογισμικού 24 Μαΐου 2016 30 / 97

Επαναχρησιμοποίηση λογισμικού Στους περισσότερους τεχνικούς κλάδους, η διαδικασία σχεδιασμού συστημάτων βασίζεται στην επαναχρησιμοποίηση υφιστάμενων συστατικών στοιχείων που έχουν χρησιμοποιηθεί σε άλλα συστήματα Ο τομέας της τεχνολογίας λογισμικού επικεντρωνόταν περισσότερο στην ανάπτυξη νέων στοιχείων, αλλά πλέον αναγνωρίζεται ότι, για τη δημιουργία καλύτερου λογισμικού σε μικρότερο χρόνο και με χαμηλότερο κόστος, πρέπει να υιοθετηθεί μια σχεδιαστική διαδικασία βασισμένη στη συστηματική επαναχρησιμοποίηση λογισμικού wwwdithuagr (tsadimas@huagr) Ανάπτυξη Λογισμικού 24 Μαΐου 2016 31 / 97

Τεχνολογία λογισμικού βάσει επαναχρησιμοποίησης Επαναχρησιμοποίηση συστημάτων εφαρμογών Ένα σύστημα εφαρμογών μπορεί να επαναχρησιμοποιηθεί στο σύνολό του, είτε με την ενσωμάτωσή του χωρίς αλλαγές σε άλλα συστήματα (επαναχρησιμοποίηση εμπορικών εφαρμογών) ή με την ανάπτυξη οικογενειών εφαρμογών Επαναχρησιμοποίηση συστατικών στοιχείων Από μια εφαρμογή μπορούν να επαναχρησιμοποιηθούν συστατικά στοιχεία τα οποία μπορεί να είναι από ολόκληρα υποσυστήματα μέχρι μεμονωμένα αντικείμενα Επαναχρησιμοποίηση συναρτήσεων και αντικειμένων Μπορούν να επαναχρησιμοποιηθούν συστατικά στοιχεία λογισμικού τα οποία υλοποιούν μια συγκεκριμένη καλά καθορισμένη λειτουργία ή ένα αντίστοιχο αντικείμενο wwwdithuagr (tsadimas@huagr) Ανάπτυξη Λογισμικού 24 Μαΐου 2016 32 / 97

Οφέλη από την επαναχρησιμοποίηση λογισμικού Αυξημένη φερεγγυότητα Έχει δοκιμαστεί και ελεγχθεί σε συστήματα που βρίσκονται ήδη σε λειτουργία, τα λάθη σχεδιασμού και υλοποίησης έχουν ήδη εντοπιστεί και διορθωθεί Μειωμένος κίνδυνος κατά τη διαδικασία Το κόστος του υφιστάμενου λογισμικού είναι ήδη γνωστό, ενώ το κόστος ανάπτυξης είναι πάντοτε ζήτημα κρίσης Αυτός ο παράγοντας είναι σημαντικός για τη διαχείριση έργων, καθώς μειώνει το περιθώριο λάθους στην εκτίμηση του κόστους Αυτό ισχύει ιδιαίτερα όταν επαναχρησιμοποιούνται σχετικά μεγάλα συστατικά στοιχεία λογισμικού, όπως υποσυστήματα Αποτελεσματική χρήση εξειδικευμένου προσωπικού Οι ειδικοί εφαρμογών μπορούν να αναπτύξουν επαναχρησιμοποιήσιμο λογισμικό το οποίο εμπεριέχει τις γνώσεις τους Συμμόρφωση με πρότυπα Ορισμένα πρότυπα, όπως τα πρότυπα διασύνδεσης χρήστη, μπορούν να υλοποιηθούν ως ένα σύνολο επαναχρησιμοποιήσιμων τυποποιημένων συστατικών στοιχείων Η χρήση τυποποιημένων διασυνδέσεων χρήστη βελτιώνει τη φερεγγυότητα, καθώς οι χρήστες που έρχονται σε επαφή με μια οικεία διασύνδεση έχουν λιγότερες πιθανότητες να κάνουν λάθη Ταχύτερη ανάπτυξη Η κυκλοφορία ενός συστήματος στην αγορά όσο το δυνατόν πιο νωρίς συχνά είναι σημαντικότερη από το συνολικό κόστος της ανάπτυξης Η επαναχρησιμοποίηση λογισμικού μπορεί να επιταχύνει την παραγωγή συστημάτων, επειδή τόσο ο χρόνος ανάπτυξης όσο και ο χρόνος επικύρωσης μειώνονται wwwdithuagr (tsadimas@huagr) Ανάπτυξη Λογισμικού 24 Μαΐου 2016 33 / 97

Προβλήματα της επαναχρησιμοποίησης Αυξημένο κόστος συντήρησης Όταν ο πηγαίος κώδικας δεν είναι διαθέσιμος, το κόστος συντήρησης μπορεί να αυξηθεί, καθώς τα επαναχρησιμοποιήσιμα στοιχεία γίνονται όλο και περισσότερο ασύμβατα με τις αλλαγές που πραγματοποιούνται στο σύστημα Έλλειψη υποστήριξης εργαλείων Το σύνδρομο «δεν το φτιάξαμε εδώ» Ελλειψη εμπιστοσύνης, η δημιουργία πρωτότυπου λογισμικού αποτελεί μεγαλύτερη πρόκληση από την επαναχρησιμοποίηση λογισμικού άλλων Δημιουργία και συντήρηση βιβλιοθήκης συστατικών στοιχείωνμεγάλο κόστος Τεχνικές ανάπτυξης πρέπει να υιοθετηθούν ώστε να εξασφαλιστεί η επαναχρησιμοποίηση της βιβλιοθήκης Εντοπισμός, κατανόηση, και προσαρμογή των επαναχρησιμοποιήσιμων συστατικών στοιχείων wwwdithuagr (tsadimas@huagr) Ανάπτυξη Λογισμικού 24 Μαΐου 2016 34 / 97

Επαναχρησιμοποίηση Σχήμα : Προσεγγίσεις επαναχρησιμοποίησης λογισμικού wwwdithuagr (tsadimas@huagr) Ανάπτυξη Λογισμικού 24 Μαΐου 2016 35 / 97

Προσεγγίσεις προσανατολισμένες στην επαναχρησιμοποίηση λογισμικού Σχεδιαστικά υποδείγματα (Design Patterns) Αρχιτεκτονικά υποδείγματα (Architectural Patterns) Ανάπτυξη βάσει συστατικών στοιχείων (Component-based Development) Πλαίσια εργασίας εφαρμογών (Application frameworks) «Περιτύλιξη» κληρονομημένων συστημάτων (Legacy system wrapping) Υπηρεσιοκεντρικά συστήματα (Service-oriented systems) Γραμμές προϊόντων εφαρμογών (Software product lines) Ενοποίηση COTS (COTS integration) Συστήματα ERP Διευθετήσιμες κάθετες εφαρμογές (configurable vertical applications) Βιβλιοθήκες προγραμμάτων Γεννήτριες προγραμμάτων (πχ PrimeFaces) Μοντελοκεντρική ανάπτυξη λογισμικού (Model-driven engineering) Ανάπτυξη λογισμικού προσανατολισμένη σε θέμα (Aspect-Oriented Software development) wwwdithuagr (tsadimas@huagr) Ανάπτυξη Λογισμικού 24 Μαΐου 2016 36 / 97

Παράγοντες κατά το σχεδιασμό της επαναχρησιμοποίησης Το χρονοδιάγραμμα ανάπτυξης του λογισμικού (πόσο γρήγορα) Ο αναμενόμενος χρόνος ζωής του λογισμικού (συντήρηση) Το υπόβαθρο, οι γνώσεις και η πείρα της ομάδας ανάπτυξης Η κρισιμότητα του συστήματος και οι μη λειτουργικές απαιτήσεις του Το πεδίο της εφαρμογής Η πλατφόρμα στην οποία θα εκτελεστεί το σύστημα wwwdithuagr (tsadimas@huagr) Ανάπτυξη Λογισμικού 24 Μαΐου 2016 37 / 97

Περιεχόμενα 1 Γρήγορη Ανάπτυξη Λογισμικού - Ευέλικτες μέθοδοι Εισαγωγή στη «Γρήγορη Ανάπτυξη Λογισμικού» Ευέλικτες μέθοδοι Ακραίος προγραμματισμός 2 Βασικές έννοιες «Επαναχρησιμοποίησης λογισμικού» Πλαίσια εργασίας εφαρμογών - Application frameworks Γραμμές προϊόντων λογισμικού Επαναχρησιμοποίηση Συστημάτων Εφαρμογών - COTS product reuse 3 Βασικές έννοιες «Ανάπτυξης βάσει συστατικών στοιχείων» Μοντέλα συστατικών στοιχείων Η διαδικασία τεχνολογίας λογισμικού βάσει συστατικών στοιχείων Σύνθεση συστατικών στοιχείων wwwdithuagr (tsadimas@huagr) Ανάπτυξη Λογισμικού 24 Μαΐου 2016 38 / 97

Πλαίσια εργασίας εφαρμογών Ένα πλαίσιο εργασίας (ή πλαίσιο εφαρμογών) αποτελεί το σχεδιασμό ενός υποσυστήματος ο οποίος αποτελείται από μια συλλογή αφηρημένων και συγκεκριμένων κλάσεων και τη διασύνδεση μεταξύ τους Κάθε υποσύστημα υλοποιείται με την προσθήκη συστατικών στοιχείων για τη συμπλήρωση τμημάτων του σχεδιασμού και με τη συγκεκριμενοποίηση (υλοποίηση) των αφηρημένων κλάσεων στο πλαίσιο εργασίας Τα πλαίσια εργασιών (εφαρμογών) είναι σχετικά μεγάλες επαναχρησιμοποιήσιμες οντότητες wwwdithuagr (tsadimas@huagr) Ανάπτυξη Λογισμικού 24 Μαΐου 2016 39 / 97

Κατηγορίες πλαισίων εργασίας Πλαίσια εργασίας υποδομής συστημάτων Υποστηρίζουν την ανάπτυξη των υποδομών ενός συστήματος, όπως οι επικοινωνίες, οι διασυνδέσεις χρήστη, και οι μεταγλωττιστές Πλαίσια εργασίας ενοποίησης ενδιάμεσου λογισμικού - middleware integration frameworks Πρότυπα και κλάσεις αντικειμένων οι οποίες υποστηρίζουν την επικοινωνία και την ανταλλαγή πληροφοριών μεταξύ συστατικών στοιχείων Παράδειγμα Microsoft s NET και Enterprise Java Beans (EJB) Πλαίσια εργασίας επιχειρησιακών εφαρμογών Υποστηρίζουν την ανάπτυξη συγκεκριμένων τύπων εφαρμογών, όπως οι τηλεπικοινωνίες ή τα χρηματοοικονομικά συστήματα wwwdithuagr (tsadimas@huagr) Ανάπτυξη Λογισμικού 24 Μαΐου 2016 40 / 97

Επέκταση πλαισίων εργασίας Τα πλαίσια εργασίας είναι γενικές δομές που μπορούν να επεκταθούν για τη δημιουργία ενός πιο συγκεκριμένου υποσυστήματος ή εφαρμογής Η επέκταση ενός πλαισίου εργασίας περιλαμβάνει Την προσθήκη συγκεκριμένων κλάσεων, οι οποίες κληρονομούν λειτουργίες από αφηρημένες κλάσεις του πλαισίου Την προσθήκη μεθόδων οι οποίες καλούνται ως απόκριση σε συμβάντα που αναγνωρίζονται από το πλαίσιο εργασίας Το πρόβλημα των πλαισίων εργασίας είναι η πολυπλοκότητά τους, η οποία σημαίνει ότι χρειάζεται πολύς χρόνος για την αποδοτική χρήση τους wwwdithuagr (tsadimas@huagr) Ανάπτυξη Λογισμικού 24 Μαΐου 2016 41 / 97

Πλαίσιο εργασίας Μοντέλο-Προβολή-Ελεγκτής Πλαίσιο εργασίας υποδομής συστημάτων για το σχεδιασμό διασυνδέσεων χρήστη Επιτρέπει την ύπαρξη πολλών τρόπων παρουσίασης των αντικειμένων και ξεχωριστές αλληλεπιδράσεις με καθέναν τους Το πλαίσιο εργασίας Μοντέλο-Προβολή-Ελεγκτής συνεπάγεται τη συγκεκριμενοποίηση μιας σειράς υποδειγμάτων wwwdithuagr (tsadimas@huagr) Ανάπτυξη Λογισμικού 24 Μαΐου 2016 42 / 97

Προσέγγιση Μοντέλου-Προβολής-Ελεγκτή Σχήμα : Προσέγγιση Μοντέλου-Προβολής-Ελεγκτή wwwdithuagr (tsadimas@huagr) Ανάπτυξη Λογισμικού 24 Μαΐου 2016 43 / 97

Web Application frameworks Τα Web Application frameworks περιλαμβάνουν άλλα συγκεκριμένα frameworks τα οποία υποστηρίζουν συγκεκριμένα χαρακτηριστικά των εφαρμογών, όπως Ασφάλεια (user authentication) Δυναμικές ιστοσελίδες (web page templates, present data from databases) Υποστήριξη Βάσης Δεδομένων (classes to provide abstract interfaces to many databases) Διαχείριση συνόδου Αλληλεπίδραση με το χρήστη (AJAX support) wwwdithuagr (tsadimas@huagr) Ανάπτυξη Λογισμικού 24 Μαΐου 2016 44 / 97

Περιεχόμενα 1 Γρήγορη Ανάπτυξη Λογισμικού - Ευέλικτες μέθοδοι Εισαγωγή στη «Γρήγορη Ανάπτυξη Λογισμικού» Ευέλικτες μέθοδοι Ακραίος προγραμματισμός 2 Βασικές έννοιες «Επαναχρησιμοποίησης λογισμικού» Πλαίσια εργασίας εφαρμογών - Application frameworks Γραμμές προϊόντων λογισμικού Επαναχρησιμοποίηση Συστημάτων Εφαρμογών - COTS product reuse 3 Βασικές έννοιες «Ανάπτυξης βάσει συστατικών στοιχείων» Μοντέλα συστατικών στοιχείων Η διαδικασία τεχνολογίας λογισμικού βάσει συστατικών στοιχείων Σύνθεση συστατικών στοιχείων wwwdithuagr (tsadimas@huagr) Ανάπτυξη Λογισμικού 24 Μαΐου 2016 45 / 97

Γραμμές προϊόντων λογισμικού Οι γραμμές προϊόντων λογισμικού, ή οικογένειες εφαρμογών, είναι εφαρμογές με γενικές λειτουργικές δυνατότητες οι οποίες μπορούν να προσαρμοστούν και να διευθετηθούν προς χρήση σε κάποιες συγκεκριμένες συνθήκες Η προσαρμογή μπορεί να απαιτεί: Διευθέτηση των συστατικών στοιχείων και του συστήματος Προσθήκη νέων συστατικών στοιχείων στο σύστημα Επιλογή στοιχείων από μια βιβλιοθήκη υπάρχοντων συστατικών στοιχείων Τροποποίηση συστατικών στοιχείων ώστε να ικανοποιούν νέες απαιτήσεις wwwdithuagr (tsadimas@huagr) Ανάπτυξη Λογισμικού 24 Μαΐου 2016 46 / 97

Εξειδίκευση γραμμών προϊόντων λογισμικού Εξειδίκευση πλατφόρμας Αναπτύσσονται διαφορετικές εκδοχές της εφαρμογής για κάθε πλατφόρμα Εξειδίκευση περιβάλλοντος Δημιουργούνται διαφορετικές εκδοχές της εφαρμογής για το χειρισμό συγκεκριμένων περιβαλλόντων λειτουργίας, για παράδειγμα, διαφορετικοί τύποι εξοπλισμού επικοινωνιών Εξειδίκευση λειτουργιών Δημιουργούνται διαφορετικές εκδοχές της εφαρμογής για κάθε πελάτη, ο οποίος έχει διαφορετικές απαιτήσεις Εξειδίκευση διαδικασιών Δημιουργούνται διαφορετικές εκδοχές της εφαρμογής για την υποστήριξη των διάφορων επιχειρηματικών διαδικασιών wwwdithuagr (tsadimas@huagr) Ανάπτυξη Λογισμικού 24 Μαΐου 2016 47 / 97

Παράδειγμα: Διάθεση οχημάτων Πρόκειται για ένα εξειδικευμένο σύστημα διαχείρισης πόρων, στο οποίο ο σκοπός είναι η κατανομή των πόρων (οχημάτων) για το χειρισμό των περιστατικών Προσαρμογές: Στο επίπεδο της διασύνδεσης χρήστη υπάρχουν συστατικά στοιχεία για τη διασύνδεση χειρισμού και τη διασύνδεση επικοινωνιών Στο επίπεδο διαχείρισης Ε/Ε υπάρχουν συστατικά στοιχεία τα οποία αναλαμβάνουν την πιστοποίηση ταυτότητας των χειριστών, την παραγωγή αναφορών και τον προγραμματισμό των διαδρομών Στο επίπεδο διαχείρισης πόρων περιλαμβάνονται συστατικά στοιχεία για τον εντοπισμό και τη διάθεση οχημάτων, την ενημέρωση της κατάστασης των οχημάτων, καθώς και την καταγραφή των λεπτομερειών των περιστατικών Στη βάση δεδομένων του συστήματος υπάρχουν ξεχωριστές βάσεις δεδομένων για τα οχήματα, τον εξοπλισμό και τους χάρτες wwwdithuagr (tsadimas@huagr) Ανάπτυξη Λογισμικού 24 Μαΐου 2016 48 / 97

Αρχιτεκτονική εφαρμογής : Σύστημα διαχείρισης πόρων Σχήμα : Σύστημα διαχείρισης πόρων wwwdithuagr (tsadimas@huagr) Ανάπτυξη Λογισμικού 24 Μαΐου 2016 49 / 97

Αρχιτεκτονική γραμμής προϊόντων: Σύστημα διάθεσης οχημάτων Σχήμα : Η αρχιτεκτονική της γραμμής παραγωγής ενός συστήματος διάθεσης οχημάτων wwwdithuagr (tsadimas@huagr) Ανάπτυξη Λογισμικού 24 Μαΐου 2016 50 / 97

Γενική διαδικασία επέκτασης Σχήμα : Διαδικασία επέκτασης μιας γραμμής προϊόντος λογισμικού για τη δημιουργία μιας νέας εφαρμογής wwwdithuagr (tsadimas@huagr) Ανάπτυξη Λογισμικού 24 Μαΐου 2016 51 / 97

Διευθέτηση συστημάτων Διευθέτηση κατά τη φάση διανομής Ένα γενικό σύστημα διευθετείται με την ενσωμάτωση των γνώσεων των απαιτήσεων και των επιχειρησιακών διαδικασιών κάθε πελάτη Δεν τροποποιείται το ίδιο το λογισμικό Διευθέτηση κατά τη φάση σχεδιασμού Ο κοινός γενικός κώδικας προσαρμόζεται και τροποποιείται ανάλογα με τις απαιτήσεις κάθε πελάτη wwwdithuagr (tsadimas@huagr) Ανάπτυξη Λογισμικού 24 Μαΐου 2016 52 / 97

Διευθέτηση κατά τη φάση της διανομής Σχήμα : Διευθέτηση κατά τη φάση της διανομής wwwdithuagr (tsadimas@huagr) Ανάπτυξη Λογισμικού 24 Μαΐου 2016 53 / 97

Διευθέτηση κατά τη φάση σχεδιασμού Οι γραμμές προϊόντων λογισμικού που διευθετούνται κατά τη φάση σχεδιασμού αποτελούν συγκεκριμενοποιήσεις (υλοποιήσεις) γενικών αρχιτεκτονικών εφαρμογών Τα γενικά προϊόντα συνήθως εμφανίζονται μετά από τη συσσώρευση εμπειριών με συγκεκριμένα προϊόντα wwwdithuagr (tsadimas@huagr) Ανάπτυξη Λογισμικού 24 Μαΐου 2016 54 / 97

Περιεχόμενα 1 Γρήγορη Ανάπτυξη Λογισμικού - Ευέλικτες μέθοδοι Εισαγωγή στη «Γρήγορη Ανάπτυξη Λογισμικού» Ευέλικτες μέθοδοι Ακραίος προγραμματισμός 2 Βασικές έννοιες «Επαναχρησιμοποίησης λογισμικού» Πλαίσια εργασίας εφαρμογών - Application frameworks Γραμμές προϊόντων λογισμικού Επαναχρησιμοποίηση Συστημάτων Εφαρμογών - COTS product reuse 3 Βασικές έννοιες «Ανάπτυξης βάσει συστατικών στοιχείων» Μοντέλα συστατικών στοιχείων Η διαδικασία τεχνολογίας λογισμικού βάσει συστατικών στοιχείων Σύνθεση συστατικών στοιχείων wwwdithuagr (tsadimas@huagr) Ανάπτυξη Λογισμικού 24 Μαΐου 2016 55 / 97

Επαναχρησιμοποίηση προϊόντων εμπορικών εφαρμογών COTS - Commercial Off-The-Shelf (εμπορική εφαρμογή) Συνήθως τα συστήματα COTS είναι ολοκληρωμένα συστήματα εφαρμογών που διαθέτουν μια διασύνδεση προγραμματισμού εφαρμογών (API) Η δημιουργία μεγάλων συστημάτων, όπως τα συστήματα ηλεκτρονικού εμπορίου, μέσω της ενοποίησης μιας ομάδας συστημάτων COTS, είναι πλέον μια σοβαρή σχεδιαστική επιλογή που μπορεί να εφαρμοστεί Τα βασικά οφέλη είναι η πιο ταχεία ανάπτυξη εφαρμογών και, συνήθως, το χαμηλότερο κόστος ανάπτυξης wwwdithuagr (tsadimas@huagr) Ανάπτυξη Λογισμικού 24 Μαΐου 2016 56 / 97

Πλεονεκτήματα Γρήγορη ανάπτυξη αξιοπιστου συστήματος Η παρεχόμενη λειτουργικότητα μπορεί να είναι γνωστή από τις εφαρμογές και είναι εύκολο να κριθεί αν είναι κατάλληλη Άλλες εταιρείες μπορεί να το χρησιμοποιούν ήδη οπότε αυτή η εμπειρία μπορεί να είναι διαθέσιμη Αποφεύγονται κάποια ρίσκα που αφορούν την ανάπτυξη, παρόλο που υπάρχουν άλλα ρίσκα κατά την επαναχρησιμοποίηση Οι επιχειρήσεις επικεντρώνονται στις δραστηριότητές τους και δε χρειάζεται να διαθέσουν αρκετούς πόρους στην ανάπτυξη του IT συστήματός τους Καθώς οι πλατφόρμες εξελίσσονται, η ευθύνη της ανανέωσης βαραίνει τους παρόχους του εμπορικού λογισμικού wwwdithuagr (tsadimas@huagr) Ανάπτυξη Λογισμικού 24 Μαΐου 2016 57 / 97

Προβλήματα με το συνδυασμό συστημάτων COTS Έλλειψη ελέγχου λειτουργικότητας και απόδοσης Τα συστήματα COTS μπορεί να είναι λιγότερο αποτελεσματικά απ ότι φαίνονται Προβλήματα με τη διαλειτουργικότητα συστημάτων COTS Σε κάθε σύστημα COTS γίνονται διαφορετικές παραδοχές, κάτι που σημαίνει ότι είναι δύσκολη η ενοποίηση Κανένας έλεγχος ως προς την εξέλιξη του συστήματος Την εξέλιξη των συστημάτων ελέγχουν οι κατασκευαστές COTS και όχι οι χρήστες τους Υποστήριξη από κατασκευαστές COTS Οι κατασκευαστές COTS μπορεί να μην υποστηρίζουν κάποιο προϊόν καθόλη τη διάρκεια ζωής του wwwdithuagr (tsadimas@huagr) Ανάπτυξη Λογισμικού 24 Μαΐου 2016 58 / 97

Κατηγορίες επαναχρησιμοποίησης εμπορικών προϊόντων COTS solution systems Αποτελούνται από μια γενικής χρήσης εφαρμογή η οποία παράγεται από έναν κατασκευαστή, η οποία παραμετροποιείται για τις ανάγκες του πελάτη COTS integrated systems Περιλαμβάνουν την ολοκλήρωση δύο ή περισσοτέρων εμπορικών εφαρμογών (πιθανόν από διαφορετικούς κατασκευαστές) ώστε να δημιουργήσουν την εφαρμογή του πελάτη Σχήμα : Κατηγορίες επαναχρησιμοποίησης εμπορικών προϊόντων wwwdithuagr (tsadimas@huagr) Ανάπτυξη Λογισμικού 24 Μαΐου 2016 59 / 97

COTS solution systems Συστήματα ERP (Enterprise Resource Planning) τα οποία είναι μεγάλης κλίμακας ολοκληρωμένα συστήματα και χρησιμοποιούνται για την υποστήριξη των επιχειρηματικών δραστηριοτήτων Απαιτούν εκτεταμένη παραμετροποίηση Σχήμα : Η αρχιτεκτονική ενός συστήματος ERP wwwdithuagr (tsadimas@huagr) Ανάπτυξη Λογισμικού 24 Μαΐου 2016 60 / 97

COTS integrated systems Ποια προϊόντα COTS προσφέρουν τις πλέον κατάλληλες λειτουργικές δυνατότητες; Μπορεί να υπάρχουν πολλά παρόμοια προϊόντα που μπορούν να χρησιμοποιηθούν Πώς θα γίνεται η ανταλλαγή δεδομένων; Κάθε προϊόν χρησιμοποιεί τις δικές του δομές και μορφές δεδομένων Ποιες λειτουργίες του προϊόντος θα χρησιμοποιηθούν πραγματικά; Τα περισσότερα προϊόντα COTS διαθέτουν περισσότερες λειτουργίες από όσες χρειάζεστε Πρέπει να αποκλείσετε την πρόσβαση σε λειτουργικές δυνατότητες που δεν χρησιμοποιούνται wwwdithuagr (tsadimas@huagr) Ανάπτυξη Λογισμικού 24 Μαΐου 2016 61 / 97

COTS integrated systems : Ηλεκτρονικό σύστημα προμηθειών Σχήμα : Ηλεκτρονικό σύστημα προμηθειών wwwdithuagr (tsadimas@huagr) Ανάπτυξη Λογισμικού 24 Μαΐου 2016 62 / 97

COTS integrated systems : Ηλεκτρονικό σύστημα προμηθειών Στον πελάτη χρησιμοποιούνται τυποποιημένες εφαρμογές περιήγησης Ιστού και ηλεκτρονικού ταχυδρομείου Στο διακομιστή, πρέπει να γίνει ενοποίηση της πλατφόρμας ηλεκτρονικού εμπορίου με το υφιστάμενο σύστημα παραγγελιών Χρειάζεται η δημιουργία ενός προσαρμογέα ώστε να μπορούν να ανταλλάσουν δεδομένα Επίσης ενσωματώνεται και ένα σύστημα ηλεκτρονικού ταχυδρομείου για την παραγωγή μηνυμάτων προς τους πελάτες Και αυτό απαιτεί έναν προσαρμογέα για τη λήψη δεδομένων από το σύστημα παραγγελιών και έκδοσης τιμολογίων wwwdithuagr (tsadimas@huagr) Ανάπτυξη Λογισμικού 24 Μαΐου 2016 63 / 97

Περιεχόμενα 1 Γρήγορη Ανάπτυξη Λογισμικού - Ευέλικτες μέθοδοι Εισαγωγή στη «Γρήγορη Ανάπτυξη Λογισμικού» Ευέλικτες μέθοδοι Ακραίος προγραμματισμός 2 Βασικές έννοιες «Επαναχρησιμοποίησης λογισμικού» Πλαίσια εργασίας εφαρμογών - Application frameworks Γραμμές προϊόντων λογισμικού Επαναχρησιμοποίηση Συστημάτων Εφαρμογών - COTS product reuse 3 Βασικές έννοιες «Ανάπτυξης βάσει συστατικών στοιχείων» Μοντέλα συστατικών στοιχείων Η διαδικασία τεχνολογίας λογισμικού βάσει συστατικών στοιχείων Σύνθεση συστατικών στοιχείων wwwdithuagr (tsadimas@huagr) Ανάπτυξη Λογισμικού 24 Μαΐου 2016 64 / 97

Περιεχόμενα 1 Γρήγορη Ανάπτυξη Λογισμικού - Ευέλικτες μέθοδοι Εισαγωγή στη «Γρήγορη Ανάπτυξη Λογισμικού» Ευέλικτες μέθοδοι Ακραίος προγραμματισμός 2 Βασικές έννοιες «Επαναχρησιμοποίησης λογισμικού» Πλαίσια εργασίας εφαρμογών - Application frameworks Γραμμές προϊόντων λογισμικού Επαναχρησιμοποίηση Συστημάτων Εφαρμογών - COTS product reuse 3 Βασικές έννοιες «Ανάπτυξης βάσει συστατικών στοιχείων» Μοντέλα συστατικών στοιχείων Η διαδικασία τεχνολογίας λογισμικού βάσει συστατικών στοιχείων Σύνθεση συστατικών στοιχείων wwwdithuagr (tsadimas@huagr) Ανάπτυξη Λογισμικού 24 Μαΐου 2016 65 / 97

Ανάπτυξη βάσει συστατικών στοιχείων Η τεχνολογία λογισμικού βάσει συστατικών στοιχείων (CBSE) είναι μια προσέγγιση ανάπτυξης λογισμικού η οποία βασίζεται στην επαναχρησιμοποίηση λογισμικού Προέκυψε λόγω της αδυναμίας της αντικειμενοστρεφούς ανάπτυξης να υποστηρίξει αποτελεσματικά την επαναχρησιμοποίηση Οι απλές κλάσεις αντικειμένων είναι εξαιρετικά λεπτομερείς και εξειδικευμένες Τα συστατικά στοιχεία είναι πιο αφηρημένα από τις κλάσεις αντικειμένων και μπορούν να θεωρηθούν ως αυτόνομοι πάροχοι υπηρεσιών wwwdithuagr (tsadimas@huagr) Ανάπτυξη Λογισμικού 24 Μαΐου 2016 66 / 97

Βασικά χαρακτηριστικά της τεχνολογίας λογισμικού βάσει συστατικών στοιχείων Ανεξάρτητα συστατικά στοιχεία που καθορίζονται πλήρως από τις διασυνδέσεις τους Πρότυπα συστατικών στοιχείων τα οποία διευκολύνουν την ενοποίηση των στοιχείων αυτών Ενδιάμεσο λογισμικό που παρέχει υποστήριξη λογισμικού για τη διαλειτουργικότητα των συστατικών στοιχείων Μια διαδικασία ανάπτυξης η οποία είναι προσανατολισμένη στην επαναχρησιμοποίηση wwwdithuagr (tsadimas@huagr) Ανάπτυξη Λογισμικού 24 Μαΐου 2016 67 / 97

CBSE και σχεδιαστικές αρχές Εκτός από τα οφέλη της επαναχρησιμοποίησης, η τεχνολογία λογισμικού βάσει συστατικών στοιχείων βασίζεται σε στιβαρές σχεδιαστικές αρχές της τεχνολογίας λογισμικού: Τα συστατικά στοιχεία είναι ανεξάρτητα, και έτσι δεν παρεμβαίνει το ένα στη λειτουργία του άλλου Οι λεπτομέρειες υλοποίησης είναι κρυμμένες Η επικοινωνία των συστατικών στοιχείων διεξάγεται μέσω καλά ορισμένων διασυνδέσεων Οι πλατφόρμες των συστατικών στοιχείων είναι κοινόχρηστες και μειώνουν το κόστος της ανάπτυξης εφαρμογών wwwdithuagr (tsadimas@huagr) Ανάπτυξη Λογισμικού 24 Μαΐου 2016 68 / 97

Συστατικά στοιχεία Τα συστατικά στοιχεία παρέχουν μια υπηρεσία χωρίς να λαμβάνουν υπόψη το περιβάλλον εκτέλεσής τους ή τη γλώσσα προγραμματισμού στην οποία βασίζεται το περιβάλλον αυτό Συστατικό στοιχείο είναι μια ανεξάρτητη εκτελέσιμη οντότητα η οποία μπορεί να απαρτίζεται από ένα ή περισσότερα εκτελέσιμα αντικείμενα Η διασύνδεση του συστατικού στοιχείου δημοσιοποιείται, οπότε όλες οι αλληλεπιδράσεις γίνονται μέσω αυτής της δημόσιας διασύνδεσης Επικρατέστεροι ορισμοί: Councill και Heinmann: Συστατικό στοιχείο λογισμικού είναι ένα στοιχείο λογισμικού το οποίο συμμορφώνεται με ένα μοντέλο συστατικών στοιχείων, και μπορεί να διανεμηθεί και να συνδυαστεί ανεξάρτητα χωρίς τροποποιήσεις, σύμφωνα με κάποιο πρότυπο σύνθεσης Szyperski: Συστατικό στοιχείο λογισμικού είναι μια μονάδα σύνθεσης η οποία διαθέτει αποκλειστικά διασυνδέσεις καθορισμένες μέσω συμβάσεων και ρητές εξαρτήσεις περιβάλλοντος Το συστατικό στοιχείο λογισμικού μπορεί να διανεμηθεί ανεξάρτητα και να συνδυαστεί με άλλα στοιχεία από τρίτους wwwdithuagr (tsadimas@huagr) Ανάπτυξη Λογισμικού 24 Μαΐου 2016 69 / 97

Το συστατικό στοιχείο ως πάροχος υπηρεσίας Το συστατικό στοιχείο είναι μια ανεξάρτητη, εκτελέσιμη οντότητα Δεν χρειάζεται ο μεταγλωττισμός της προτού χρησιμοποιηθεί σε συνδυασμό με άλλα συστατικά στοιχεία Οι υπηρεσίες που παρέχει το συστατικό στοιχείο διατίθενται μέσω μιας διασύνδεσης, οπότε όλες οι αλληλεπιδράσεις με το στοιχείο αυτό διεξάγονται μέσω αυτής της διασύνδεσης wwwdithuagr (tsadimas@huagr) Ανάπτυξη Λογισμικού 24 Μαΐου 2016 70 / 97

Χαρακτηριστικά συστατικών στοιχείων Τυποποιημένο Eνα συστατικό στοιχείο που χρησιμοποιείται σε μια διαδικασία CBSE πρέπει να ακολουθεί κάποιο τυποποιημένο μοντέλο Το μοντέλο αυτό μπορεί να ορίζει τις διασυνδέσεις του συστατικού στοιχείου, τα μεταδεδομένα του, την τεκμηρίωση, τον τρόπο σύνθεσης, και τον τρόπο διανομής Ανεξάρτητο H σύνθεση και η διανομή του πρέπει να μπορούν να πραγματοποιηθούν χωρίς να απαιτείται κάποιο άλλο συγκεκριμένο συστατικό στοιχείο Σε περιπτώσεις όπου το συστατικό στοιχείο χρειάζεται εξωτερικά παρεχόμενες υπηρεσίες, αυτές θα πρέπει να περιγράφονται με σαφήνεια σε κάποια προδιαγραφή απαιτήσεων διασύνδεσης Συνθέσιμο Ολες οι εξωτερικές αλληλεπιδράσεις πρέπει να λαμβάνουν χώρα μέσω δημόσια ορισμένων διασυνδέσεων Επιπλέον, πρέπει να παρέχει εξωτερική πρόσβαση σε πληροφορίες σχετικά με τον εαυτό του, όπως οι μέθοδοι και οι ιδιότητές του Με δυνατότητα διανομής Πρέπει να είναι αυτάρκες και να λειτουργεί ως αυτόνομη οντότητα σε μια πλατφόρμα η οποία υλοποιεί το μοντέλο συστατικών στοιχείων Αυτό συνήθως σημαίνει ότι το συστατικό στοιχείο είναι δυαδικό, και δε χρειάζεται να μεταγλωττιστεί Τεκμηριωμένο Οι πιθανοί χρήστες να μπορούν να αποφασίσουν αν καλύπτουν τις ανάγκες τους ή όχι Η σύνταξη και, στην ιδανική περίπτωση, η σημασιολογία όλων των διασυνδέσεων των συστατικών στοιχείων πρέπει να είναι καθορισμένη wwwdithuagr (tsadimas@huagr) Ανάπτυξη Λογισμικού 24 Μαΐου 2016 71 / 97

Διασυνδέσεις συστατικού στοιχείου Σχήμα : Διασυνδέσεις συστατικού στοιχείου Σχήμα : Παράδειγμα διασυνδέσεων συστατικού στοιχείου: συλλογή δεδομένων wwwdithuagr (tsadimas@huagr) Ανάπτυξη Λογισμικού 24 Μαΐου 2016 72 / 97

Περιεχόμενα 1 Γρήγορη Ανάπτυξη Λογισμικού - Ευέλικτες μέθοδοι Εισαγωγή στη «Γρήγορη Ανάπτυξη Λογισμικού» Ευέλικτες μέθοδοι Ακραίος προγραμματισμός 2 Βασικές έννοιες «Επαναχρησιμοποίησης λογισμικού» Πλαίσια εργασίας εφαρμογών - Application frameworks Γραμμές προϊόντων λογισμικού Επαναχρησιμοποίηση Συστημάτων Εφαρμογών - COTS product reuse 3 Βασικές έννοιες «Ανάπτυξης βάσει συστατικών στοιχείων» Μοντέλα συστατικών στοιχείων Η διαδικασία τεχνολογίας λογισμικού βάσει συστατικών στοιχείων Σύνθεση συστατικών στοιχείων wwwdithuagr (tsadimas@huagr) Ανάπτυξη Λογισμικού 24 Μαΐου 2016 73 / 97

Μοντέλα συστατικών στοιχείων Ένα μοντέλο συστατικών στοιχείων ορίζει διάφορα πρότυπα για την υλοποίηση, την τεκμηρίωση και τη διανομή συστατικών στοιχείων Παραδείγματα μοντέλων συστατικών στοιχείων Μοντέλο EJB (Enterprise Java Beans) Μοντέλο NET (Microsoft NET model) Web Services model [sample web service] Το μοντέλο συστατικών στοιχείων καθορίζει πώς πρέπει να οριστούν οι διασυνδέσεις, καθώς και τους παράγοντες που θα συμπεριληφθούν στον ορισμό μιας διασύνδεσης wwwdithuagr (tsadimas@huagr) Ανάπτυξη Λογισμικού 24 Μαΐου 2016 74 / 97

Μοντέλο συστατικών στοιχείων Διασυνδέσεις: Πως καθορίζονται οι διασυνδέσεις, παράγοντες που θα οριστούν σε έναν ορισμό διασύνδεσης, Γλώσσα: web services => WSDL, EJB => Java, NET = > CIL Χρήση: Ονοματολογία, μεταδεδομένα, παραμετροποίηση Διανομή και Χρήση: Packaging ώστε να αποτελούν ανεξάρτητες εκτελέσιμες οντότητες μαζί με τα υποστηρικτικά λογισμικά, τεκμηρίωση και υποστήριξη εξέλιξης (τι μπορεί να αλλάξει και με ποιες προϋποθέσεις) wwwdithuagr (tsadimas@huagr) Ανάπτυξη Λογισμικού 24 Μαΐου 2016 75 / 97

Υποστήριξη ενδιάμεσου λογισμικού Τα μοντέλα συστατικών στοιχείων αποτελούν τη βάση για ενδιάμεσο λογισμικό συστήματος το οποίο παρέχει υποστήριξη για την εκτέλεση των συστατικών στοιχείων Οι υλοποιήσεις των μοντέλων συστατικών στοιχείων παρέχουν: Υπηρεσίες πλατφόρμας, που επιτρέπουν την επικοινωνία μεταξύ των συστατικών στοιχείων τα οποία έχουν δημιουργηθεί με βάση το εκάστοτε μοντέλο Οριζόντιες υπηρεσίες, που είναι ανεξάρτητες από συγκεκριμένες εφαρμογές και μπορεί να χρησιμοποιούνται από πολλά διαφορετικά συστατικά στοιχεία Για να χρησιμοποιήσουν τις υπηρεσίες που παρέχονται από ένα μοντέλο συστατικών στοιχείων, τα συστατικά στοιχεία διανέμονται σε έναν υποδοχέα Αυτό είναι ένα σύνολο διασυνδέσεων οι οποίες χρησιμοποιούνται για την προσπέλαση των υλοποιήσεων των υπηρεσιών υποστήριξης wwwdithuagr (tsadimas@huagr) Ανάπτυξη Λογισμικού 24 Μαΐου 2016 76 / 97

Παράδειγμα: JEE Aplication server and containers wwwdithuagr (tsadimas@huagr) Ανάπτυξη Λογισμικού 24 Μαΐου 2016 77 / 97

Υπηρεσίες που παρέχει ένα μοντέλο συστατικών στοιχείων wwwdithuagr (tsadimas@huagr) Ανάπτυξη Λογισμικού 24 Μαΐου 2016 78 / 97

Περιεχόμενα 1 Γρήγορη Ανάπτυξη Λογισμικού - Ευέλικτες μέθοδοι Εισαγωγή στη «Γρήγορη Ανάπτυξη Λογισμικού» Ευέλικτες μέθοδοι Ακραίος προγραμματισμός 2 Βασικές έννοιες «Επαναχρησιμοποίησης λογισμικού» Πλαίσια εργασίας εφαρμογών - Application frameworks Γραμμές προϊόντων λογισμικού Επαναχρησιμοποίηση Συστημάτων Εφαρμογών - COTS product reuse 3 Βασικές έννοιες «Ανάπτυξης βάσει συστατικών στοιχείων» Μοντέλα συστατικών στοιχείων Η διαδικασία τεχνολογίας λογισμικού βάσει συστατικών στοιχείων Σύνθεση συστατικών στοιχείων wwwdithuagr (tsadimas@huagr) Ανάπτυξη Λογισμικού 24 Μαΐου 2016 79 / 97

Η διαδικασία CBSE Ανάπτυξη για επαναχρησιμοποίηση Επικεντρώνεται στην ανάπτυξη συστατικών στοιχείων ή υπηρεσιών τα οποία θα επαναχρησιμοποιηθούν σε άλλες εφαρμογές Περιλαμβάνει τη γενίκευση υπαρχόντων συστατικών στοιχείων Ανάπτυξη με επαναχρησιμοποίηση Επικεντρώνεται στην ανάπτυξη νέων εφαρμογών οι οποίες χρησιμοποιούν υπάρχοντα συστατικά στοιχεία και υπηρεσίες wwwdithuagr (tsadimas@huagr) Ανάπτυξη Λογισμικού 24 Μαΐου 2016 80 / 97

Ανάπτυξη για επαναχρησιμοποίηση wwwdithuagr (tsadimas@huagr) Ανάπτυξη Λογισμικού 24 Μαΐου 2016 81 / 97

Αλλαγές με σκοπό τη δυνατότητα επαναχρησιμοποίησης Αφαίρεση μεθόδων οι οποίες αφορούν αποκλειστικά τη συγκεκριμένη εφαρμογή Αλλαγές ονομάτων ώστε να γίνουν πιο γενικά Προσθήκη μεθόδων ώστε να παρέχεται πληρέστερη λειτουργική κάλυψη Δημιουργία συνεπούς χειρισμού εξαιρέσεων για όλες τις μεθόδους Προσθήκη μιας διασύνδεσης διευθέτησης, η οποία θα επιτρέπει την προσαρμογή των συστατικών στοιχείων Ενοποίηση απαιτούμενων συστατικών στοιχείων για βελτίωση της ανεξαρτησίας wwwdithuagr (tsadimas@huagr) Ανάπτυξη Λογισμικού 24 Μαΐου 2016 82 / 97

Ανάπτυξη με επαναχρησιμοποίηση Σχήμα : Διαδικασία προσδιορισμού συστατικών στοιχείων Ζητήματα σχετικά με τον προσδιορισμό συστατικών στοιχείων Εμπιστοσύνη Πρέπει να μπορείτε να εμπιστευτείτε τον προμηθευτή ενός συστατικού στοιχείου Αν είστε τυχεροί, ένα συστατικό στοιχείο που δεν είναι έμπιστο μπορεί απλώς να μη λειτουργεί όπως διαφημίζεται Στη χειρότερη περίπτωση, μπορεί να διακυβεύσει την προστασία του συστήματος από εξωτερικούς κινδύνους Απαιτήσεις Κάθε ομάδα συστατικών στοιχείων ικανοποιεί διαφορετικές απαιτήσεις Επικύρωση Η προδιαγραφή ενός συστατικού στοιχείου μπορεί να μην είναι αρκετά λεπτομερής ώστε να επιτρέπει την ανάπτυξη διεξοδικών δοκιμών Δηλαδή τα συστατικά στοιχεία μπορεί να διαθέτουν μη επιθυμητές λειτουργικές δυνατότητες Πώς μπορείτε να ελέγξετε ότι κάτι τέτοιο δεν πρόκειται να αντιβαίνει στη λειτουργία της δικής σας εφαρμογής; wwwdithuagr (tsadimas@huagr) Ανάπτυξη Λογισμικού 24 Μαΐου 2016 83 / 97

Περιεχόμενα 1 Γρήγορη Ανάπτυξη Λογισμικού - Ευέλικτες μέθοδοι Εισαγωγή στη «Γρήγορη Ανάπτυξη Λογισμικού» Ευέλικτες μέθοδοι Ακραίος προγραμματισμός 2 Βασικές έννοιες «Επαναχρησιμοποίησης λογισμικού» Πλαίσια εργασίας εφαρμογών - Application frameworks Γραμμές προϊόντων λογισμικού Επαναχρησιμοποίηση Συστημάτων Εφαρμογών - COTS product reuse 3 Βασικές έννοιες «Ανάπτυξης βάσει συστατικών στοιχείων» Μοντέλα συστατικών στοιχείων Η διαδικασία τεχνολογίας λογισμικού βάσει συστατικών στοιχείων Σύνθεση συστατικών στοιχείων wwwdithuagr (tsadimas@huagr) Ανάπτυξη Λογισμικού 24 Μαΐου 2016 84 / 97

Σύνθεση συστατικών στοιχείων H διαδικασία του συνδυασμού συστατικών στοιχείων με σκοπό τη δημιουργία ενός συστήματος Η σύνθεση αφορά την ενοποίηση των συστατικών στοιχείων τόσο μεταξύ τους όσο και με την υποδομή του συστήματος Κανονικά πρέπει να γράψετε συγκολλητικό κώδικα για την ενοποίηση των συστατικών στοιχείων wwwdithuagr (tsadimas@huagr) Ανάπτυξη Λογισμικού 24 Μαΐου 2016 85 / 97

Τύποι σύνθεσης Σειριακή σύνθεση, στην οποία τα επιμέρους συστατικά στοιχεία ενός σύνθετου στοιχείου εκτελούνται με τη σειρά Γι αυτό απαιτείται η σύνθεση των παρεχόμενων διασυνδέσεων κάθε συστατικού στοιχείου Ιεραρχική σύνθεση, στην οποία ένα συστατικό στοιχείο καλεί απευθείας τις υπηρεσίες οι οποίες παρέχονται από κάποιο άλλο στοιχείο Η παρεχόμενη διασύνδεση ενός συστατικού στοιχείου συνδυάζεται με την απαιτούμενη διασύνδεση κάποιου άλλου Προσθετική σύνθεση, στην οποία οι διασυνδέσεις δύο ή περισσοτέρων συστατικών στοιχείων τοποθετούνται μαζί (προστίθενται) με σκοπό τη δημιουργία ενός νέου στοιχείου wwwdithuagr (tsadimas@huagr) Ανάπτυξη Λογισμικού 24 Μαΐου 2016 86 / 97

Ασυμβατότητα διασυνδέσεων Ασυμβατότητα παραμέτρων, στην οποία κάποιες λειτουργίες έχουν το ίδιο όνομα, αλλά διαφέρουν οι τύποι τους Ασυμβατότητα λειτουργιών, στην οποία είναι διαφορετικά τα ονόματα των λειτουργιών στις σύνθετες διασυνδέσεις Έλλειψη πληρότητας λειτουργιών, όταν η παρεχόμενη διασύνδεση ενός συστατικού στοιχείου είναι υποσύνολο της απαιτούμενης διασύνδεσης κάποιου άλλου στοιχείου wwwdithuagr (tsadimas@huagr) Ανάπτυξη Λογισμικού 24 Μαΐου 2016 87 / 97

Συστατικά στοιχεία προσαρμογέων Αντιμετωπίζουν το πρόβλημα της ασυμβατότητας των συστατικών στοιχείων εναρμονίζοντας τις διασυνδέσεις των συστατικών στοιχείων των οποίων γίνεται σύνθεση Ανάλογα με τον τύπο της σύνθεσης απαιτούνται διαφορετικοί τύποι προσαρμογέων Μπορούμε να συνθέσουμε το συστατικό στοιχείο addressfinder και το συστατικό στοιχείο mapper με τη βοήθεια ενός προσαρμογέα που αποσπά τον ταχυδρομικό κώδικα από μια διεύθυνση και τον διαβιβάζει στο συστατικό στοιχείο mapper Το συστατικό στοιχείο postcodestripper είναι ο προσαρμογέας που διευκολύνει τη σειριακή σύνθεση των συστατικών στοιχείων addressfinder και mapper address = addressfinderlocation (phonenumber) ; postcode = postcodestrippergetpostcode (address) ; mapperdisplaymap(postcode, 10000) ; wwwdithuagr (tsadimas@huagr) Ανάπτυξη Λογισμικού 24 Μαΐου 2016 88 / 97

Προσαρμογέας για το συστατικό στοιχείο συλλογής δεδομένων Εναρμονίζει τις απαιτούμενες συνδέσεις του πρώτου component με τις παρεχόμενες διασυνδέσεις του δεύτερου wwwdithuagr (tsadimas@huagr) Ανάπτυξη Λογισμικού 24 Μαΐου 2016 89 / 97

Σημασιολογία διασυνδέσεων Για να αποφασίσουμε αν διασυνδέσεις που είναι συντακτικά συμβατές είναι πράγματι πλήρως συμβατές, πρέπει να βασιστούμε στην τεκμηρίωση των διασυνδέσεων public void additem (Identifier pid ; Photograph p; CatalogEntry photodesc) ; public Photograph retrieve (Identifier pid) ; public CatalogEntry catentry (Identifier pid) ; Τεκμηρίωση για το additem: Αυτή η μέθοδος προσθέτει στη βιβλιοθήκη μια φωτογραφία και συσχετίζει τη φωτογραφία αυτή με το δεδομένο αναγνωριστικό (Identifier) και καταχώριση καταλόγου (CatalogEntry) Τι συμβαίνει αν το αναγνωριστικό της φωτογραφίας είναι ήδη συσχετισμένο με μια άλλη φωτογραφία; Είναι η περιγραφή της φωτογραφίας συσχετισμένη με την καταχώριση καταλόγου, όπως είναι συσχετισμένη με τη φωτογραφία; Δηλαδή, αν διαγράψω τη φωτογραφία, θα διαγράψω και τις πληροφορίες καταλόγου; wwwdithuagr (tsadimas@huagr) Ανάπτυξη Λογισμικού 24 Μαΐου 2016 90 / 97

Η Γλώσσα Περιορισμών Αντικειμένων - OCL Η Γλώσσα Περιορισμών Αντικειμένων (OCL) είναι σχεδιασμένη για την περιγραφή περιορισμών στα μοντέλα αντικειμένων της UML Βασίζεται στην έννοια της προδιαγραφής προσυνθηκών και μετασυνθηκών wwwdithuagr (tsadimas@huagr) Ανάπτυξη Λογισμικού 24 Μαΐου 2016 91 / 97

OCL, παράδειγμα The context keyword names the component to which the conditions apply context additem The preconditions specify what must be true before execution of additem pre: PhotoLibrarylibSize() > 0 PhotoLibraryretrieve(pid) = null The postconditions specify what is true after execution post: libsize () = libsize()@pre + 1 PhotoLibraryretrieve(pid) = p PhotoLibrarycatEntry(pid) = photodesc context delete pre: PhotoLibraryretrieve(pid) <>null ; post: PhotoLibraryretrieve(pid) = null PhotoLibrarycatEntry(pid) = PhotoLibrarycatEntry(pid)@pre PhotoLibrarylibSize() = libsize()@pre 1 Δεν πρέπει να υπάρχει στη βιβλιοθήκη φωτογραφία η οποία θα διαθέτει αναγνωριστικό ίδιο με το αναγνωριστικό της φωτογραφίας προς εισαγωγή Η βιβλιοθήκη πρέπει να υπάρχει θεωρούμε ότι η δημιουργία μιας βιβλιοθήκης προσθέτει ένα στοιχείο σε αυτήν Κάθε καινούργια καταχώριση αυξάνει το μέγεθος της βιβλιοθήκης κατά 1 Αν πραγματοποιήσετε ανάκτηση χρησιμοποιώντας το ίδιο αναγνωριστικό, τότε λαμβάνετε τη φωτογραφία που προσθέσατε Αν εκτελέσετε αναζήτηση στον κατάλογο χρησιμοποιώντας αυτό το αναγνωριστικό, λαμβάνετε την καταχώριση καταλόγου που δημιουργήσατε wwwdithuagr (tsadimas@huagr) Ανάπτυξη Λογισμικού 24 Μαΐου 2016 92 / 97

Συμβιβασμοί στη σύνθεση Κατά τη σύνθεση συστατικών στοιχείων, μπορείτε να διαπιστώσετε αντιφάσεις μεταξύ των λειτουργικών και των μη λειτουργικών απαιτήσεων, καθώς και συγκρούσεις μεταξύ της αναγκαιότητας για ταχεία παράδοση και της εξέλιξης του συστήματος Πρέπει να πάρετε αποφάσεις όπως: Ποια σύνθεση συστατικών στοιχείων είναι περισσότερο αποτελεσματική για την παράδοση των λειτουργικών απαιτήσεων του συστήματος; Ποια σύνθεση συστατικών στοιχείων θα επιτρέψει προσαρμογές για μελλοντικές αλλαγές στις απαιτήσεις; Ποιες θα είναι οι ανακύπτουσες ιδιότητες του συστήματος που θα συντεθεί; wwwdithuagr (tsadimas@huagr) Ανάπτυξη Λογισμικού 24 Μαΐου 2016 93 / 97

Αντικρουόμενες συνθέσεις συστατικών στοιχείων Η πρώτη είναι πιο προσαρμόσιμη ενώ η δεύτερη πιο γρήγορη και αξιόπιστη wwwdithuagr (tsadimas@huagr) Ανάπτυξη Λογισμικού 24 Μαΐου 2016 94 / 97

The Life of a Software Engineer wwwdithuagr (tsadimas@huagr) Ανάπτυξη Λογισμικού 24 Μαΐου 2016 95 / 97

Θέμα προς συζήτηση - A Υποδείξτε το καταλληλότερο μοντέλο γενικής διαδικασίας παραγωγής λογισμικού (καταρράκτη, εξελικτική ανάπτυξη, component-based), που θα μπορούσε να χρησιμοποιηθεί ως βάση για τη διαχείριση της ανάπτυξης των παρακάτω συστημάτων, αιτιολογώντας την απάντησή σας με βάση τον τύπο συστήματος Ένα κοινωνικό δίκτυο τύπου Facebook Μια εφαρμογή παρακολούθησης, αγοράς και πώλησης μετοχών για το Χρηματιστήριο Αθηνών, διαφορετικές εκδόσεις της οποίας πρέπει να τρέχουν σε υπολογιστή και σε smartphone Μια πλατφόρμα για την προσφορά ηλεκτρονικών μαθημάτων, η οποία πρέπει να περιλαμβάνει βίντεο, διαμοιρασμό αρχείων και online ερωτηματολόγια για την εξέταση των μαθημάτων Ένα νέο λογισμικό κειμενογράφου που φιλοδοξεί να ανταγωνιστεί το Microsoft Word wwwdithuagr (tsadimas@huagr) Ανάπτυξη Λογισμικού 24 Μαΐου 2016 96 / 97

Θέμα προς συζήτηση - B Σχήμα : Αποτέλεσμα εφαρμογής Θέλετε να σχεδιάσετε ένα σύστημα το οποίο να παίρνει σαν είσοδο έναν αριθμό τηλεφώνου και να παράγει σαν έξοδο οδηγίες πλοήγησης από το σημείο που βρίσκεστε μέχρι το σημείο προορισμού, δηλαδή τη διεύθυνση στην οποία αντιστοιχεί ο εν λόγω αριθμός τηλεφώνου Σχεδιάστε το εν λόγω σύστημα προσδιορίζοντας από την εμπειρία σας υποσυστήματα (components) τα οποία μπορούν να συντεθούν προκειμένου να παρέχετε τη ζητούμενη λειτουργικότητα Περιγράψτε τα θέματα που μπορεί να προκύψουν κατά τη διασύνδεση των υποσυστημάτων μεταξύ τους wwwdithuagr (tsadimas@huagr) Ανάπτυξη Λογισμικού 24 Μαΐου 2016 97 / 97