1 HMMY Τεχνολογία Λογισμικού Διδάσκων Κώστας Κοντογιάννης Αναπλ. Καθηγητής, Ε.Μ.Π
2 Περί Απαιτήσεων Λογισμικού Γενικές Έννοιες –Τύποι απαιτήσεων –Χαρακτηριστικά Απαιτήσεων –Διαδικασία Προδιαγραφής Απαιτήσεων –Κέλυφος Απαιτήσεων Τεχνικές Μοντελοποίησης Απαιτήσεων –Κλασική Τεχνική Διαγράμματα Ροής Δεδομένων Διαγράμματα Οντότητας-Συνάφειας Διαγράμματα Κατάστασης –Αντικειμενοστραφής Τεχνική Διαγράμματα Χρήσης Ακολουθιακά Διαγράμματα Συνεργατικά Διαγράμματα
3 Γενικές Έννοιες
4 Μηχανική Απαιτήσεων (Requirements Engineering) Προδιαγραφή απαιτήσεων (ένα εγχειρίδιο που περιγράφει Τι θα πρέπει να υλοποιηθέι και όχι το Πως) Ανάλυση των απαιτήσεων (η διαδικασία ανάπτυξης των απαιτήσεων του συστήματος) Ιδέα για ένα Νέο προϊόν (Επίλυση κάποιου πρακτικού προβλήματος)
5 Βασικοί Λόγοι Αποτυχίας Έργων Λογισμικού
6 Κατηγοριοποίηση της Μηχανικής Απαιτήσεων Μηχανική Απαιτήσεων Ανάπτυξη ΑπαιτήσεωνΔιαχείριση Απαιτήσεων ΕξόρυξηΑνάλυσηΠροδιαγραφήΕπιβεβαίωση
7 Τι Είναι Απαίτηση σε ένα Έργο Λογισμικού Τρεις βασικές κατηγορίες απαιτήσεων: –Λειτουργικές απαιτήσεις (functional requirements): Τι πρέπει να κάνει ένα σύστημα - Οι λειτουργίες του συστήματος Ορίζουν το λόγους ύπαρξης του συστήματος –Μη-λειτουργικές απαιτήσεις (non-functional requirements): Πια χαρακτηριστικά πρέπει να έχει το σύστημα Ποιοτικά χαρακτηριστικά, ιδιότητες, κλπ. Ορίζουν το λόγους σύμφωνα με τους οποίους θα θεωρήσουμε το σύστημα επιτυχημένο –Περιορισμοί (constraints): Απαιτήσεις που έχουν γενική εμβέλεια στο σύστημα –Ουσιαστικά οι απαιτήσεις για ένα σύστημα υπάρχουν διότι είτε Η κατηγορία του προϊόντος τις απαιτεί, είτε Ο χρήστης τις θέλει
8 Χαρακτηριστικά Στοιχεία Απαιτήσεων Λογισμικού Σαφήνεια: Το νόημα και η σημασία είναι ορισμένα με σαφήνεια Συνέπεια: Μια απαίτηση δεν πρέπει να είναι ανακόλουθη με κάποια άλλη Πληρότητα: Η απαίτηση ορίζεται σε όλο της το εύρος (σχετίζεται με τη σαφήνεια) Επαληθευσιμότητα (verification): Η απαίτηση μπορεί να ελεγχθεί σε σχέση με την τελική υλοποίηση Ανεξαρτησία από τεχνολογικές αποφάσεις: Απαλλαγμένη από προκαταλήψεις που σχετίζονται με πιθανές σχεδιαστικές αποφάσεις που θα θέλαμε να πάρουμε –Απαίτηση (τι θέλουμε το σύστημα να κάνει) –Υλοποίηση (πως το σύστημα ικανοποιεί τις απαιτήσεις)
9 Επιβεβαίωση Απαιτήσεων (Requirements Validation) Τα κριτήρια που χρησιμοποιούμε για την επιβεβαίωση των απαιτήσεων περιλαμβάνουν: –Επιβεβαίωση ορθότητας απαιτήσεων (Correctness): Το μοντέλο της απαίτησης είναι σωστό σε σχέση με την ιδέα που έχει ο χρήστης –Επιβεβαίωση πληρότητας απαιτήσεων (Completeness): Όλες οι πιθανές χρήσεις και σενάρια του συστήματος έχουν καταγραφεί και μοντελοποιηθεί σαν απαιτήσεις και οι απαιτήσεις δεν είναι ανακόλουθες μεταξύ τους –Επιβεβαίωση ρεαλιστικής υλοποίησης (Realism): Οι απαιτήσεις μπορούν να υλοποιηθούν με την διαθέσιμη τεχνολογία –Επιβεβαίωση σχέσης υλοποιημένων λειτουργιών και μοντελοποιημένων απαιτήσεων (Traceability): Κάθε υλοποιημένη λειτουργία του συστήματος μπορεί να καθοριστεί σε σχέση με κάποια απαίτηση
10 Κέλυφος Απαίτησης Περιγράφει τα δομικά στοιχεία μιας απαίτησης –Μονοσήμαντα ορισμένος κωδικός απαίτησης –Τύπος απαίτησης –Κωδικός σχετικής περίπτωσης χρήσης –Συνοπτική περιγραφή –Σκεπτικό: Γιατί η απαίτηση είναι απαραίτητη –Πηγή: Ποιοι θέλουν την συγκεκριμένη απαίτηση –Κριτήρια ικανοποιησιμότητας: Μια μετρική που θα μας βοηθήσει να επιβεβαιώσουμε ότι η τελική λύση ικανοποιεί την απαίτηση –Σημασία / Σπουδαιότητα για τον χρήστη: Βαθμός που θέλει ο χρήστης να υλοποιηθεί η απαίτηση και βαθμός που ο χρήστης θα δυσαρεστηθεί εάν δεν ικανοποιηθεί η συγκεκριμένη απαίτηση –Εξάρτηση / Συνάφεια από άλλες απαιτήσεις –Αντίφαση με άλλες απαιτήσεις –Σχετικό υλικό υποστήριξης –Ιστορικά στοιχεία και διαχείριση αλλαγών της απαίτησης
11 Γενική Διαδικασία Προδιαγραφής Απαιτήσεων Διαδικασία Ανάλυσης Απαιτήσεων Προσδιορισμός Απαιτήσεων : Μοντέλο Αναλυτικές Προδιαγραφές Απαιτήσεων: Μοντέλο Διαδικασία Ορισμού Προβλήματος Διαδικασία Εξόρυξης Απαιτήσεων Ορισμός Προβλήματος (Διάγραμμα Δραστηριότητας) Νέα Ιδέα
12 Διαδικασία Εξόρυξης Απαιτήσεων Διαδικασία που απαιτεί οργάνωση και συνέπεια. Υπάρχουν διάφορες προσεγγίσεις στο θέμα Οι βασικοί συμμέτοχοι σε αυτή τη διαδικασία είναι οι: –Χρήστες του συστήματος με γνώση του αντικειμένου της εφαρμογής –Μηχανικοί λογισμικού με γνώση της μοντελοποίησης και επίλυσης του προβλήματος Το αντικείμενο αυτής της διαδικασίας είναι να γεφυρώσουμε το σημασιολογικό χάσμα ανάμεσα στους χρήστες του συστήματος και στους σχεδιαστές του συστήματος. Αυτό επιτυγχάνεται με τη συγγραφή Σεναρίων Λειτουργίας και Περιπτώσεων Χρήσης: –Σενάριο Λειτουργίας: Συγκεκριμένο παράδειγμα λειτουργίας του συστήματος και η αλληλεπίδρασή του με άλλα συστήματα –Περίπτωση Χρήσης: Ορίζει και περιγράφει μια κατηγορία σεναρίων
13 Προσδιορισμός Απαιτήσεων κ. Αναλυτική Προδιαγραφή Απαιτήσεων Και τα δύο μοντέλα εστιάζουν στις απαιτήσεις του συστήματος από την σκοπιά του χρήστη Προσδιορισμός Απαιτήσεων: χρήση της φυσικής γλώσσας και δομημένων κειμένων που περιγράφουν σενάρια και περιπτώσεις χρήσης (είναι καλό μοντέλο για τον χρήστη) Αναλυτικές Προδιαγραφές Απαιτήσεων: χρήση κάποιου φορμαλισμού ή γλώσσας μοντελοποίησης για τη περιγραφή των σεναρίων και των περιπτώσεων (είναι καλό μοντέλο για τον μηχανικό λογισμικού)
14 Σενάρια σαν Μέθοδος Εξόρυξης Απαιτήσεων Σενάριο: Περιγραφή μιας συγκεκριμένης περίπτωσης λειτουργίας του συστήματος Τύποι Σεναρίων: –Τρέχοντα: Περιγράφουν λειτουργίες του συστήματος στην τρέχουσά του μορφή –Μελλοντικά: Περιγράφουν πιθανές μελλοντικές λειτουργίες του συστήματος –Αξιολόγησης: Περιγράφουν λειτουργίες με τις οποίες θα αξιολογηθεί το σύστημα –Επιμόρφωσης: Περιγράφουν τα βήματα με τα οποίες θα επιμορφωθεί για τις λειτουργίες του συστήματος ένας νέος χρήστης – Εύρεση Σεναρίων –Ρωτάμε τις παρακάτω ερωτήσεις: Ποιες είναι οι βασικές λειτουργίες του συστήματος Ποια δεδομένα θα παράγουν, τροποποιήσουν ή θα αποθηκεύσουν οι «χρήστες» (δράστες) του συστήματος –Παρατηρούμε τους χρήστες να διεκπεραιώνουν μια εργασία σχετική με το σύστημα –Σύσκεψη για ανταλλαγή ιδεών ανάμεσα στους αναλυτές και τους χρήστες
15 Περιπτώσεις Χρήσης Περίπτωση Χρήσης (Use Case) –Μια περίπτωση χρήσης ορίζει και περιγράφει την αλληλεπίδραση ανάμεσα στους Δράστες (actors) και Συγκεκριμένα σημεία της εφαρμογής (υπηρεσίες του συστήματος) –Δηλαδή μια περίπτωση χρήσης περιγράφει συστηματικά και μεθοδικά πως μια εφαρμογή θα χρησιμοποιηθεί σε κάποια συγκεκριμένη κατηγορία σεναρίων –Πολλές περιπτώσεις χρήσεις καλύπτουν τελικά όλες τις απαιτήσεις και την επιθυμητή συμπεριφορά της εφαρμογής –Έχουμε σενάρια τα οποία είναι σενάρια ομαλής λειτουργίας του συστήματος, και παθολογικά σενάρια που ορίζουν ακραίες και μη ομαλές καταστάσεις του συστήματος
16 Παράδειγμα Περίπτωσης Χρήσης: Αλλαγή Ώρας Πτήσης Δράστες: ταξιδιώτης, βάση δεδομένων, σύστημα κράτησης θέσεων Αεροπορικής Εταιρίας Προαπαιτούμενα (Preconditions): –Ο Ταξιδιώτης έχει ήδη εγγραφεί στο σύστημα και έχει επιλέξει «αλλαγή ταξιδιού» Βασική Πορεία Χρήσης: –Το σύστημα ανακτά τις πληροφορίες του λογαριασμού και τη πτήση (πτήσεις) του ταξιδιώτη από τη βάση δεδομένων –Το σύστημα ρωτά τον ταξιδιώτη να επιλέξει κάποιο συγκεκριμένη πτήση; Ο ταξιδιώτης επιλέγει συγκεκριμένη πτήση –Το σύστημα ρωτά τον ταξιδιώτη για την προτεινόμενη νέα ώρα αναχώρησης; Ο ταξιδιώτης δίνει την συγκεκριμένη πληροφορία –Εάν η πτήση είναι διαθέσιμη... –… –Το σύστημα παρουσιάζει τη περίληψη της συναλλαγής. Εναλλακτικές πορείες χρήσης: – Εάν η πτήση δεν είναι διαθέσιμη τοτε …
17 Μοντέλα Χρήσης Ένα μοντέλο χρήσης (use case model) περιγράφει τις περιπτώσεις χρήσεις σε κάποιο συγκεκριμένο φορμαλισμό Τα μοντέλα χρήσης περιγράφουν τις λειτουργικές απαιτήσεις (functional requirements) του συστήματος χρησιμοποιώντας Στη γλώσσα UML, όπως θα δούμε παρακάτω, τα μοντέλα χρήσης ορίζονται με τη βοήθεια Διαγραμμάτων Χρήσης, Περιγραφές Χρήσης, και Διαγραμμάτων Αλληλεπίδρασης δηλαδή με τα Συνεργατικά Διαγράμματα, και τα Ακολουθιακά Διαγράμματα Οι Περιγραφές Χρήσης είναι απλά ένα δομημένο κείμενο που περιγράφει μια περίπτωση χρήσης
18 Περιεχόμενα Εγχειριδίου Προδιαγραφής Απαιτήσεων Σκοπός του συστήματος Κατηγορίες χρηστών (stakeholders) Εμβέλεια του συστήματος (τι είναι εντός και τι είναι εκτός του συστήματος, και σημεία δι-επαφής με άλλα συστήματα) Περιορισμοί Σχετικά δεδομένα Παραδοχές Απαιτήσεις –Λειτουργικές –Μη-λειτουργικές