ΑΝΑΠΤΥΞΗ ΤΕΧΝΙΚΗΣ ΓΙΑ ΤΗΝ ΙΕΡΑΡΧΗΣΗ ΛΕΙΤΟΥΡΓΙΚΩΝ ΚΑΙ ΜΗ ΛΕΙΤΟΥΡΓΙΚΩΝ ΑΠΑΙΤΗΣΕΩΝ ΣΕ ΕΠΑΝΑΛΗΠΤΙΚΑ ΕΡΓΑ ΑΝΑΠΤΥΞΗΣ ΛΟΓΙΣΜΙΚΟΥ / ΓΕΩΡΓΙΟΣ ΤΖΙΚΑΣ
Με τον όρο απαιτήσεις λογισμικού (software requirements) καθορίζονται είτε οι λειτουργίες που απαιτείται να εκτελεί ένα λογισμικό είτε τα χαρακτηριστικά, περιορισμοί που πρέπει να χαρακτηρίζουν ένα λογισμικό. Οι μεν απαιτούμενες λειτουργίες ονομάζονται Λειτουργικές Απαιτήσεις (Functional Requirements), τα δε χαρακτηριστικά/απαιτήσεις ποιότητας ονομάζονται Μη Λειτουργικές Απαιτήσεις (Non Functional Requirements). Mε τον όρο Προτεραιοποίηση Απαιτήσεων (Requirements Prioritisation) ονομάζεται η διαδικασία με την οποία αποφασίζεται ποιες απαιτήσεις τελικά θα υλοποιηθούν στην επόμενη έκδοση ενός συστήματος Λογισμικού. Η απόφαση αυτή συνήθως λαμβάνεται ταξινομώντας τις απαιτήσεις ή αξιολογώντας αυτές με χρήση πολλαπλών κριτηρίων ιεράρχησης-προτεραιοποίησης. Αυτή η προτεραιοποίηση-ιεράρχηση αναδεικνύει την σειρά (με βάση κριτήρια όπως το κόστος, την αξία/σημαντικότητα, ρίσκο, βαθμό μεταβλητότητας, της κάθε απαίτησης) με την οποία θα υλοποιηθεί η κάθε υποψήφια απαίτηση στις επόμενες εκδόσεις τους Λογισμικού (software releases). Η διαδικασία πραγματοποιείται επαναληπτικά προκειμένου να αποφασισθούν ποιες απαιτήσεις ενός υπό ανάπτυξη συστήματος θα υλοποιηθούν στην επόμενη έκδοση. Η αναφερθείσα διαδικασία της ιεράρχησης των απαιτήσεων θεωρείται εξαιρετικά σημαντική στη ανάπτυξη ενός λογισμικού (software development) και πρέπει να πραγματοποιηθεί με συστηματικό τρόπο γιατί διαφορετικά μπορεί να οδηγήσει και σε αποτυχία του όλου έργου ανάπτυξης.
Στη συναφή βιβλιογραφία παρατηρείται μία πληθώρα τεχνικών για την προτεραιοποίηση-ιεράρχηση των απαιτήσεων λογισμικού (software requirements prioritisation). Εν τούτοις οι τεχνικές αυτές δεν έχουν υιοθετηθεί ευρέως στην πράξη, καθώς μπορεί να είναι χρονοβόρες, να παρουσιάζουν αδυναμία επεκτασιμότητας τους, δεν λαμβάνουν υπόψη επαρκώς την αβεβαιότητα και υποκειμενικότητα των συμμετεχόντων-εμπλεκομένων (stakeholders), οι οποίοι μπορεί να είναι εκπρόσωποι των τελικών χρηστών, αναλυτές απαιτήσεων, προγραμματιστές, κλπ.. Επίσης η ίδια η εφαρμογή της τεχνικής να μην επιτρέπει ευελιξία, να είναι στατική, να παρουσιάζει ασάφεια και υποκειμενικότητα, ή μπορεί να είναι πολύ σύνθετη υπολογιστικά. Ακόμη να παρουσιάζει αδυναμίες και περιορισμούς σε περιβάλλοντα με δεκάδες ή εκατοντάδες απαιτήσεις, ή να μην μπορεί να εφαρμοστεί σε περιβάλλοντα agile [136], κλπ. Η διαδικασία ιεράρχησης απαιτήσεων λογισμικού, ειδικά σε περιβάλλοντα με δεκάδες ή εκατοντάδες απαιτήσεις, γίνεται ακόμα πιο δύσκολη και χρονοβόρα, μπορεί να υπάρξει πρόσθετη αβεβαιότητα, ασάφεια, ή ακόμη και «σύγκρουση» μεταξύ των συμμετεχόντων εξαιτίας της υποκειμενικότητας και του «ειδικού» ή όχι βάρους ενός ή περισσοτέρων εμπλεκομένων (λόγω θέσης και εμπειρίας του συμμετέχοντος) στη διαδικασία.
H συγκεκριμένη Πτυχιακή Εργασία (ΠΕ) σκοπεύει να παρουσιάσει τις βασικές έννοιες της μηχανικής των απαιτήσεων (requirements engineering) και, συγκεκριμένα, της διαδικασίας της ιεράρχησης απαιτήσεων λογισμικού (software requirements prioritisation), να προσπαθήσει να αξιολογήσει τις ευρέως χρησιμοποιούμενες τεχνικές και τις επεκτάσεις τους, που χρησιμοποιούνται σήμερα με βάση τα πλεονεκτήματά τους αλλά και τα μειονεκτήματά τους. Να τις κατατάξει σε κατηγορίες, να περιγράψει πρακτικά προβλήματα που εμφανίζονται κατά την εφαρμογή τους, όπως διαθεσιμότητα πόρων, κόστος, χρόνος, τον τρόπο που λαμβάνουν υπόψη παράγοντες αβεβαιότητας και υποκειμενικής κρίσης των συμμετεχόντων, καθώς και να παρουσιάσει μία μέθοδο που θα μπορούσε να εφαρμοστεί για την αντιμετώπιση αυτών των προβλημάτων.
Συγκεκριμένα η παρούσα ΠΕ θα προσπαθήσει να αναλύσει τις τεχνικές που κάνουν χρήση της Ασαφούς Λογικής (Fuzzy Logic), τα Ασαφή Σύνολα (Fuzzy Sets) καθώς και τις επεκτάσεις τους. Οι τεχνικές αυτές προσπαθούν να επιλύσουν την ασάφεια (ambiguity), αοριστία (vagueness), αβεβαιότητα (uncertainty), δισταγμό (hesitation) και υποκειμενικότητα (subjectiveness) των εμπλεκομένων κατά την εκμαίευση (elicitation) και προτεραιοποίηση των υπό υλοποίηση απαιτήσεων λογισμικού. Ειδικότερα θα εστιάσει στις τεχνικές των ασαφών συνόλων (fuzzy sets techniques), στις ποιοτικές (qualitative) αξιολογήσεις των συμμετεχόντων που χρησιμοποιούν ασαφείς γλωσσικούς όρους (fuzzy linguistic terms) και στην επεξεργασία αυτών με χρήση CWW (Computing With Words, Υπολογιστική με χρήση Λέξεων). Χαρακτηριστικότερο παράδειγμα αυτών αποτελεί το μοντέλο των Συνόλων Διστακτικά Ασαφών Γλωσσικών 'Ορων (Hesitant Fuzzy Linguistic Term Sets - HFLTS), το οποίο δίνει περισσότερη ευελιξία στους εμπλεκομένους στην έκφραση των ποιοτικών χαρακτηρισμών και στην αξιολόγηση αυτών, ώστε να υπάρχει όσο το δυνατόν μεγαλύτερη αντικειμενικότητα, αποτύπωση των εννοιών, να αποτυπωθεί ευκρινέστερα η ασάφεια, αβεβαιότητα, δισταγμός, αλλά και η αντιστοίχιση αυτών των γλωσσικών όρων σε τιμές προκειμένου να πραγματοποιηθούν οι απαραίτητοι υπολογισμοί. Το βασικό χαρακτηριστικό αυτού του μοντέλου είναι ότι οι συμμετέχοντες μπορούν να χρησιμοποιούν γλωσσικούς όρους οι οποίοι να κυμαίνονται σε ένα εύρος τιμών (λαμβάνοντας υπόψη την ασάφεια, αβεβαιότητα του συμμετέχοντα-αξιολογητή, δηλαδή σε μία αξιολόγηση μίας συγκεκριμένης απαίτησης ως προς ένα από τα πολλά κριτήρια, του τύπου over than medium η οποία περιλαμβάνει αρκετές τιμές -medium,high,very high,extremely high, perfect- με χρήση μίας κλίμακας τιμών).
Frequently in real world qualitative decision-making problems the representation of linguistic information is quite challenging because of the difficulty of modeling and coping with uncertainty. Several different approaches, techniques and tools have been proposed to address indeterminacy, and recently in cases where stakeholders hesitate among several values and are uncertain about the ranking of software requirements the fuzzy linguistic approach is considered as a solution. One of the most commonly used approaches in multiple criteria decision-making problems is the technique for order preference by similarity to ideal solution (TOPSIS). In addition, Hesitant fuzzy linguistic term sets (HFLTSs), which can be elicited by comparative linguistic expressions, have been proposed for the convenience of utilizing several consecutive terms at the same time and accommodating uncertainties and hesitations in human linguistic assessments. In this paper a novel requirements prioritization technique is presented where the concept of hesitant fuzzy linguistic term sets is presented in combination with a fuzzy extension of the nominal scale requirements taxonomy and technique MoSCoW. The above provide a linguistic and computational basis in order to increase the richness of linguistic elicitation based on the fuzzy linguistic approach and the use of context-free grammars by using comparative terms.
The use of TOPSIS technique on top of the elicited HFLTS provides the final priority list of requirements derived by applying a multi-criteria decision method with respect to the prioritization criteria. An illustrative example is given to elaborate the proposed technique and rank requirements. Finally, through a case study it is demonstrated that the method is suitable for prioritizing requirements in agile development environments.