05 Ανάλυση απαιτήσεων Τεχνολογία Λογισμικού Τμήμα Πληροφορικής & Τηλεπικοινωνιών, ΕΚΠΑ Εαρινό εξάμηνο 2016 17 Δρ. Κώστας Σαΐδης saiko@di.uoa.gr
Ανάλυση και Σχεδιασμός Η διαδικασία που μας επιτρέπει να: Αναλύσουμε ένα πολύπλοκο σύστημα σε επιμέρους απλούστερα τμήματα. Σχεδιάσουμε ξεχωριστά το ένα τμήμα από το άλλο. Συνθέσουμε ξανά τα τμήματα και τις αλληλεπιδράσεις τους σε ένα ενιαίο σύνολο. Επικοινωνήσουμε το αποτέλεσμα στους εμπλεκόμενους. 2
Περιεχόμενα Ανάλυση απαιτήσεων Συγγραφή προδιαγραφών 3
Ανάλυση απαιτήσεων Λειτουργικές απαιτήσεις Μη λειτουργικές απαιτήσεις Απαιτήσεις συστήματος Αναδυόμενες απαιτήσεις 4
Λειτουργικές απαιτήσεις Οι απαιτήσεις της λειτουργίας του λογισμικού συνήθως η νέα λειτουργικότητα που πρέπει να αναπτυχθεί στο πλαίσιο του έργου Παραδείγματα: επιχειρησιακή λογική, διαπίστευση και δικαιοδοσία χρηστών, διαχειριστικές λειτουργίες 5
Επιχειρησιακή λογική business logic Οι επιχειρησιακές διαδικασίες business processes Οι επιχειρησιακοί κανόνες business rules Μερική ή πλήρης "ηλεκτρονικοποίηση" των λειτουργιών του οργανισμού 6
Διαπίστευση χρηστών user authentication Σημεία εισόδου στο σύστημα entry points μηχανισμοί διαπίστευσης χρηστών Επιβεβαίωση ότι ο χρήστης είναι: "υπαρκτός" π.χ. ο λογαριασμός του είναι εγγεγραμμένος στον "πίνακα" των χρηστών της ΒΔ "έγκυρος" π.χ. γνωρίζει το προσωπικό του "μυστικό" που έχει συνδεθεί με το λογαριασμό του "ενεργός" π.χ. δεν έχει απενεργοποιηθεί από το διαχειριστή 7
Δικαιοδοσία χρηστών user authorization Διαχείριση δικαιωμάτων: ποιος χρήστης επιτρέπεται να εκτελέσει ποια ενέργεια. Ανάθεση/ανάκληση δικαιωμάτων Ρόλοι, Access Control List ACL 8
Διαχειριστικές λειτουργίες administrative functions Ποιες είναι οι διαχειριστικές λειτουργίες; Πώς εκτελούνται; Θα παραμετροποιούνται από το χρήστη και πόσο; 9
Λειτουργίες αναφορών reporting requirements Τι αναφορές απαιτούνται ; Πόσο παραμετροποιήσιμες πρέπει να είναι; Ποιος έχει δικαίωμα να τις προσπελαύνει; 10
Μη λειτουργικές απαιτήσεις Απαιτήσεις για ποιοτικά χαρακτηριστικά του λογισμικού Προσβασιμότητα από ΑμεΑ Διαθεσιμότητα Ανάνηψη από καταστροφές Ασφάλεια Ακεραιότητα Ευελιξία Επεκτασιμότητα Απόδοση Απροκρισιμότητα Στην πράξη, κάποιες απαιτήσεις μπορεί να βρίσκονται "κάπου ανάμεσα" στις λειτουργικές και στις μη λειτουργικές 11
Απαιτήσεις συστήματος Απαιτήσεις σχετικές με το "σύστημα" ή το "περιβάλλον" στο οποίο εντάσσεται το υπό ανάπτυξη λογισμικό π.χ. μπορεί να είναι συστατικό ενός μεγαλύτερου όλου Απαιτήσεις υλικού, απαιτήσεις δικτύου, απαιτήσεις διαλειτουργικότητας, κ.ά 12
Αναδυόμενες απαιτήσεις Ποιοτικά χαρακτηριστικά που προκύπτουν από την ένταξη του λογισιμικού στο "σύστημα" ή "περιβάλλον" και αναφέρονται στη λειτουργία του ως όλον. 13
Παραδείγματα Συνήθως τα παρακάτω παραδείγματα αφορούν μη λειτουργικές απαιτήσεις απαιτήσεις συστήματος αναδυόμενες απαιτήσεις Αλλά αυτό ποικίλει ανάλογα με το υπό ανάπτυξη λογισμικό, το περιβάλλον λειτουργίας του και τους εμπλεκόμενους φορείς χρήστες του 14
Τήρηση ημερολογίων audit tracking Ποιες ενέργεις καταγράφονται σε ημερολόγια; Σε ποιο βαθμό λεπτομέρειας; Και με ποια τελική χρήση; 15
Μαζική εισαγωγή / εξαγωγή δεδομένων Data import / export Απατείται η μαζική εισαγωγή / εξαγωγή δεδομένων; Θα παραμετροποιείται από το χρήστη και πόσο; Ποιοι μορφότυποι αρχείων / δεδομένων θα πρέπει να υποστηρίζονται; 16
Διαλειτουργικότητα interoperability Το υπό ανάπτυξη σύστημα θα διαλειτουργεί με τρίτα συστήματα; Τι είδους δεδομένα θα ανταλλάσονται; Με ποιους μηχανισμούς, μορφότυπους και πρωτόκολλα; 17
Νομικές ή κανονιστικές απαιτήσεις Το υπό ανάπτυξη σύστημα θα πρέπει να είναι σύννομο προσωπικά δεδομένα, πνευματικά δικαιώματα, κτλ. Το υπό ανάπτυξη σύστημα μπορεί να διέπεται από συγκεκριμένο νομικό ή κανονιστικό πλαίσιο για παράδειγμα, πληροφοριακά συστήματα δημοσίου τομέα. 18
Συγγραφή Προδιαγραφών Το κείμενο που μετατρέπει τις απαιτήσεις σε τεχνικές προδιαγραφές Η συγγραφή του λαμβάνει χώρα ΠΡΙΝ την υλοποίηση Και αποτελεί το "συμβόλαιο" "κοινό τόπο" για το τι θα αναπτυχθεί 19
Κοινός τόπος Η ανάλυση των απαιτήσεων πρέπει να καταλήξει σε ένα κοινά αποδεκτό ζητούμενο Το οποίο, συνήθως, είναι δύσκολο στην πράξη για μη τεχνικούς λόγους επικοινωνίας, οργάνωσης, διαφορετικής κουλτούρας, παγίωσης μη βέλτιστων πρακτικών, κτλ. 20
Οπτικοποίηση των προδιαγραφών UML διαγράμματα ER διαγράμματα DF διαγράμματα Διάφορα διαγράμματα και εργαλεία μοντελοποίησης ανά περίπτωση π.χ. business process modeling Wireframes Software prototyping 21
Ζητούμενα από το κείμενο των προδιαγραφών Σαφής καθορισμός των ορίων του λογισμικού και της αλληλεπίδρασής του με το παραγωγικό του περιβάλλον production environment Αρχιτεκτονικός σχεδιασμός και συστατικά του λογισμικού Επαληθευσιμότητα, ακρίβεια και σαφήνεια των απαιτήσεων Σύνδεση των απαιτήσεων με τις ανάγκες πηγή/προέλευση απαίτησης Οριοθέτηση αποδοχής/απόρριψης παραδοτέων Χρονοπρογραμματισμός έργου και παραδοτέα: σε επόμενη διάλεξη 22
Έλεγχοι αποδοχής acceptance tests Έλεγχοι που καθορίζουν την αποδοχή ή την απόρριψη συστατικών ή λειτουργιών ή "οθονών" του λογισμικού Ενδέχεται να έχουν προβλεφθεί σε κάποιο βαθμό στις προδιαγραφές Ένας από τους κύριους στόχους ένταξης ελέγχων στον κύκλο του λογισμικού είναι η ελαχιστοποίηση των σφαλμάτων που θα προκύψουν κατά τους ελέγχους αποδοχής 23
Πρακτικές συμβουλές α Αν δεν καταλαβαίνεις εσύ τι γράφεις, μην περιμένεις να το καταλάβουν οι άλλοι Θα πρέπει το κείμενο να είναι κατανοητό από όλους τους συμμετέχοντες στην ανάλυση με την εξαίρεση, ενδεχομένως, των πολύ τεχνικών σημείων Δημιουργία ενιαίου αφηγήματος Ανάδειξη των αναγκών και των στόχων 24
Πρακτικές συμβουλές β Ιεράρχηση και διάκριση των ζητημάτων πλήρως ή μερικώς απαραίτητο, πρωτεύον ή δευτερεύον, προαπαιτούμενο ή επακόλουθο Ισοβαρής ανάλυση των σημαντικών ζητημάτων Οριοθέτηση των αποδεκτών εναλλακτικών Χρήση εικόνων, σχημάτων και διαγραμμάτων αλλά όχι υπερβολική Χρήση όσο το δυνατό πιο μικρών προτάσεων για τα πιο τεχνικά μέρη 25