Ο προσδιορισμός απαιτήσεων έργου Λογισμικού, είναι ένα από τα πολυπλοκότερα τεχνικά κατασκευάσματα! Σε αντίθεση με τα τεχνικά έργα, η κατασκευή των οποίων συνήθως ακολουθεί μια προκαθορισμένη οδό, γνωστή από την αρχή, η ανάπτυξη λογισμικού μοιάζει με σκόπευση κινούμενου στόχου από κινούμενο έδαφος και με όπλο που συνεχώς αλλάζει τη συμπεριφορά του.
Ο στόχος είναι κινούμενος γιατί οι απαιτήσεις των χρηστών συνεχώς μεταβάλλονται, ακόμη και μέσα στη διαδικασία ανάπτυξης μιας εφαρμογής που προορίζεται να τις ικανοποιήσει.
Το έδαφος είναι κινούμενο γιατί το περιβάλλον ανάπτυξης του λογισμικού είναι και το ίδιο συνεχώς εξελισσόμενο μαζί με το υλικό, αλλά κει μαζί με τις επιλογές και την έκβαση των μη τεχνικών διαμαχών στο χώρο της αγοράς τεχνογνωσίας και τεχνολογίας πληροφορικής.
Σαν να μην έφταναν τα παραπάνω, το όπλο με το οποίο γίνεται η «σκόπευση», δηλαδή οι μεθοδολογίες, τα εργαλεία και τα περιβάλλοντα ανάπτυξης και λειτουργίας του λογισμικού, είναι επίσης ραγδαία μεταβαλλόμενα με το χρόνο.
η ανάπτυξη λογισμικού μοιάζει με σκόπευση κινούμενου στόχου από κινούμενο έδαφος και με όπλο που συνεχώς αλλάζει τη συμπεριφορά του.
Προσδιορισμός Απαιτήσεων
Το πλήθος και η πολυπλοκότητα που χαρακτηρίζει πολλές από τις απαιτήσεις από το λογισμικό, ο σαφής προσδιορισμός και η παρακολούθηση των συσχετίσεων μεταξύ των απαιτήσεων του λογισμικού μα και του συστήματος, τα διαφορετικά επίπεδα λειτουργίας στην βασική περιγραφή τους, είναι μερικά από τα σημαντικότερα προβλήματα που συναντά κανείς, όταν καλείται να αντιμετωπίσει ένα πρόβλημα προσδιορισμού απαιτήσεων από το λογισμικό.
Βήματα στον προσδιορισμό απαιτήσεων
Η πρώτη πηγή για τον καθορισμό των απαιτήσεων είναι ασφαλώς, ο πελάτης. Η περιγραφή αυτή συνήθως γίνεται με την μορφή έκθεσης. Η έκθεση αυτή αποτελεί το πρώτο υλικό που έχουμε στην διάθεσή μας προκειμένου να καθορίσουμε την αξία υλοποίησης και να εκτιμήσουμε τον χρόνο που θα απαιτηθεί
Ο κύκλος ζωής του λογισμικού
- Προσδιορισμός απαιτήσεων συστήματος (system requirements)
- Προσδιορισμός απαιτήσεων λογισμικού (software requirements)
- Σχεδίαση (design)
- Κωδικοποίηση (coding)
- Έλεγχος (testing)
- Παράδοση συστήματος (delivery)
- Λειτουργία (operation)
- Συντήρηση (maintenance)
ΕΑΝ ακόμη σε ΕΣΑΣ γνωστά τα περισσότερα, από όσα διαβάσατε, παρακαλώ για την προσοχή σας! Πιθανά τα ακόλουθα να σας θυμίσουν στιγμές του επαγγελματικού σας βίου!
Εμπειρικοί αφορισμοί
- Η ανακάλυψη και διόρθωση ενός προβλήματος του λογισμικού μετά την παράδοση, είναι 100 φορές πιο ακριβή από την ανακάλυψη και διόρθωσή του στο στάδιο των απαιτήσεων.
- Για κάθε 1 Ευρώ που ξοδεύεται στην ανάπτυξη του λογισμικού, θα ξοδεύονται 2 Ευρώ στη συντήρηση.
- Το κόστος ανάπτυξης και συντήρησης του λογισμικού είναι πρωταρχικά συνάρτηση του αριθμού των πηγαίων γραμμών κώδικα στο προϊόν.
- Η ετερογένεια των ατόμων ευθύνεται για τις μεγαλύτερες διαφορές στην παραγωγικότητα λογισμικού.
- Η γενική αναλογία κόστους λογισμικού προς κόστος υλικού μεταβλήθηκε από 15/85 το 1955 σε 85/15 το 1985 και συνεχίζει να διευρύνεται.
- Η ανάπτυξη λογισμικού σήμερα ακολουθεί μια κατανομή 60-15-25. Το 60% της ανάπτυξης αφιερώνεται στην ανάλυση και σχεδιασμό, το 15% στον προγραμματισμό και 25% στον έλεγχο.
- Στη διαδικασία του ελέγχου ανακαλύπτεται το 60% των λαθών.
Ο προσδιορισμός απαιτήσεων είναι ο ακρογωνιαίος λίθος κάθε έργου λογισμικού. Με σαφή κατανόηση των αναγκών και στόχων, εξασφαλίζεται η επιτυχία, η αποδοτικότητα και η ικανοποίηση των χρηστών. Η προσεκτική ανάλυση και τεκμηρίωση των απαιτήσεων αποτελεί τη βάση για μια ομαλή ανάπτυξη και ένα ποιοτικό τελικό προϊόν.