Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Διαδικασία ανάπτυξης Προσδιορισμός απαιτήσεων Αρχιτεκτονικός Σχεδιασμός Λεπτομερής Σχεδιασμός Κωδικοποίηση Έλεγχος Παράδοση Συστήματος Λειτουργία - Συντήρηση.

Παρόμοιες παρουσιάσεις


Παρουσίαση με θέμα: "Διαδικασία ανάπτυξης Προσδιορισμός απαιτήσεων Αρχιτεκτονικός Σχεδιασμός Λεπτομερής Σχεδιασμός Κωδικοποίηση Έλεγχος Παράδοση Συστήματος Λειτουργία - Συντήρηση."— Μεταγράφημα παρουσίασης:

1 Διαδικασία ανάπτυξης Προσδιορισμός απαιτήσεων Αρχιτεκτονικός Σχεδιασμός Λεπτομερής Σχεδιασμός Κωδικοποίηση Έλεγχος Παράδοση Συστήματος Λειτουργία - Συντήρηση Ποιο το πρόβλημα ? Ποια η λύση ? Πώς θα υλοποιηθεί η λύση ? Κώδικας ??? Επιλύθηκε το πρόβλημα? Αξιοποιεί ο πελάτης τη λύση ? Παρουσιάζονται προβλήματα ?

2 Στη φάση αυτή το σχέδιο λογισμικού μεταφράζεται σε κώδικα. Είσοδοι: Απαιτήσεις από το σύστημα / λογισμικό Περιγραφή του σχεδίου λογισμικού Πρότυπα κωδικοποίησης Ταυτότητα γλώσσας προγραμματισμού Κωδικοποίηση

3 Παραγωγή ορθού κώδικα Ανάπτυξη κατανοητού κώδικα Παραγωγή καλής τεκμηρίωσης έτσι ώστε να υπάρχει : Σωστή λειτουργικότητα Εύκολος έλεγχος ορθότητας και εντοπισμός λαθών Εύκολη τροποποίηση Δυνατότητα επαναχρησιμοποίησης στο μέλλον Στόχοι

4 Δομημένη κωδικοποίηση Στόχος της δομημένης κωδικοποίησης είναι η ευθυγράμμιση της ροής του ελέγχου μέσα σε ένα πρόγραμμα, έτσι ώστε η σειρά εκτέλεσης να συμβαδίζει κατά το δυνατόν με τη σειρά που έχει γραφεί ο κώδικας. Με αυτό τον τρόπο η δυναμική δομή του προγράμματος κατά την εκτέλεση μοιάζει με τη στατική δομή του κώδικα ως κειμένου Συγγραφή κώδικα

5 Γραμμική Ροή Ελέγχου μπορεί να επιτευχθεί με τον περιορισμό των επιτρεπόμενων γλωσσικών δομών ελέγχου ροής σε αυτά που έχουν μία είσοδο και μία έξοδο Δομημένη Κωδικοποίηση

6 Το 1966 οι Bohm και Jacopini έθεσαν τα θεμέλια του δομημένου προγραμματισμού: απέδειξαν ότι κάθε αλγόριθμος : { αλγόριθμος: διαδικασία επίλυσης υπολογιστικών προβλημάτων η οποία: α) Δεν περιέχει λογικές αντιφάσεις β) Λύνει κάθε πρόβλημα για το οποίο έχει κατασκευαστεί γ) Τελειώνει μετά από πεπερασμένο αριθμό πράξεων δ)Δεν περιέχει εκφράσεις οι οποίες ερμηνεύονται με υποκειμενικό τρόπο } Δομημένη Κωδικοποίηση

7 απέδειξαν ότι κάθε αλγόριθμος : μπορεί να γραφεί χρησιμοποιώντας τρεις δομές ελέγχου ροής : την ακολουθία, την επιλογή και την επανάληψη Ακολουθία :S 1 ; S 2 ; S 3 ; Επιλογή:if (condition) then S 1 else S 2 ; Επανάληψη: while (condition) do S; Όλες οι ανωτέρω δομές ελέγχου έχουν μία είσοδο και μία έξοδο ……. Δομημένη Κωδικοποίηση

8 S1 S2 S3 cond S1 T S2 F cond S1 T F

9 Δομημένη Κωδικοποίηση Κάθε ένα από τα δομικά στοιχεία μιας γλώσσας προγραμματισμού (π.χ. C) μπορεί να εκφραστεί με τη βοήθεια των βασικών δομικών στοιχείων : C C Δομικό στοιχείο if (cond) S; if (cond) S; else; if (cond) then S1; else S2; for (i=0;i<N;i++) S1; i=0; while (i<N) { S1; i++; } while (cond) do S1;

10 Παραβίαση Δομημένης Κωδικοποίησης Στην πράξη, όταν αναφερόμαστε σε δομημένο προγραμματισμό, εννοούμε συγγραφή κώδικα χωρίς τη χρήση της εντολής GOTO Η εντολή GOTO παρέχει τη δυνατότητα άνευ όρων μεταφοράς της ροής ελέγχου και έτσι επιτρέπει παραβίαση του κανόνα της μιας εισόδου – μιας εξόδου Θεωρήθηκε η πηγή του κακού για την αποτυχία πολλών μεγάλων έργων λογισμικού Καταγγέλθηκε από τον Dijkstra το 1968

11 Παραβίαση Δομημένης Κωδικοποίησης Ο Wirth (1974) δίνει την ακόλουθη συμβουλή: ‘’Η εντολή GOTO πρέπει να χρησιμοποιείται μόνο σε σπάνιες ή ασυνήθιστες καταστάσεις, όπου πρέπει να σπάσει η φυσική δομή ενός αλγορίθμου. Ένας καλός κανόνας είναι η αποφυγή χρήσης αλμάτων για να εκφράσουμε επαναλήψεις, ή εκτέλεση εντολών υπό συνθήκη, γιατί αυτά τα άλματα καταστρέφουν την αντανάκλαση της δυναμικής δομής του προγράμματος επάνω στη στατική δομή. Αυτή η έλλειψη αντιστοιχίας μεταξύ στατικής και δυναμικής δομής καταστρέφει την καθαρότητα του προγράμματος και δυσχεραίνει την επαλήθευση’’

12 Καμιά καλή κουβέντα για το GOTO ? Αφαίρεση διαθέσιμων εργαλείων: Η εντολή goto ανήκει στο ‘’οπλοστάσιο’’ του προγραμματιστή. Η αφαίρεσή της ισοδυναμεί με μείωση των διαθέσιμων δυνατοτήτων Εξαιρέσεις (Exceptions): Συχνά απαιτείται από ένα πρόγραμμα η ανάληψη ειδικής ‘’δράσης’’ σε περίπτωση π.χ. λάθους, ανάγκη που συχνά ικανοποιείται με χρήση του goto (αν και πολλές γλώσσες διαθέτουν ειδικούς μηχανισμούς απόκρισης σε εξαιρέσεις) Απόδοση προγραμμάτων: Σε ορισμένες περιπτώσεις ένα πρόγραμμα με χρήση goto είναι ταχύτερο. Π.χ. αναζήτηση ενός στοιχείου x σε έναν πίνακα a.

13 Καμιά καλή κουβέντα για το GOTO ? for(i=1; i<=tablesize; i++) if(a[i] = x) goto found; not found :...... found:...... return; Το πλησιέστερο πρόγραμμα με χρήση δομημένου προγραμματισμού είναι: for(i=1; i<=tablesize; i++) if(a[i] = x) flag = 1; if (flag==0)...... else...... return; Που απαιτεί έναν επιπλέον έλεγχο !

14 Τελικά ?? Ένα καλά δομημένο πρόγραμμα είναι ουσιαστικά ένα πρόγραμμα εύκολα κατανοητό. Το πιο χρήσιμο εργαλείο στην κατανόηση είναι η απόκρυψη πληροφορίας (αφαίρεση). Η αφαίρεση συντελεί στον εντοπισμό των κυριοτέρων στοιχείων ενός προγράμματος και στην αγνόηση λεπτομερειών Αφαίρεση επιτυγχάνεται μόνο με τη συνεπή χρήση των βασικών δομών ελέγχου και αποφυγή του goto Έστω το ακόλουθο πρόγραμμα. Γύρω από κάθε δομή μπορούμε να τοποθετήσουμε ένα πλαίσιο

15 Αφαίρεση..... while … do...... if.... then...... else...... endif...... endWhile....... if...... then...... endif Σε ένα πλήρως δομημένο πρόγραμμα οι δομές δεν επικαλύπτονται Κάθε φορά που ‘’ανοίγουμε’’ ένα πλαίσιο, δεν προκύπτουν ξαφνικά συνδέσεις με άλλες δομές Αν όμως υπήρχαν goto ??

16 Αφαίρεση..... while … do...... if.... then goto label...... else...... endif...... endWhile label:.............. if...... then...... endif Η δομικότητα καταστρέφεται

17 Τεχνοτροπία Κωδικοποίησης (Coding Style) Ο κώδικας είναι δυνατόν να γραφεί με πολλούς διαφορετικούς τρόπους Ισοδυναμία Κώδικα: συνεπάγεται ότι για τα ίδια δεδομένα ο κώδικας που αντιστοιχεί στον κάθε τρόπο, παράγει τα ίδια αποτελέσματα και αυτό για όλους τους δυνατούς συνδυασμούς δεδομένων Η χρησιμοποίηση των εντολών μιας γλώσσας με ένα ορισμένο τρόπο, που να είναι πάντοτε περίπου ο ίδιος (συνεπής) ονομάζεται τεχνοτροπία κωδικοποίησης (Google: Java coding Style)

18 Γενικές Συμβουλές (Fairley 1985) Χρήση περιορισμένων γλωσσικών δομικών στοιχείων ροής ελέγχου Συνετή χρήση της εντολής GOTO Ορισμός καινούριων τύπων δεδομένων για την ευχερέστερη διάκριση οντοτήτων (OOP principle) Απόκρυψη δομών δεδομένων πίσω από διαδικασίες πρόσβασης (information hiding principle) Απομόνωση των τμημάτων του κώδικα που εξαρτώνται από το μηχάνημα σε ξεχωριστές (λίγες) συναρτήσεις Χρήση τυποποιημένων περιγραφικών προλόγων στην αρχή κάθε υποπρογράμματος

19 Γενικές Συμβουλές (Fairley 1985) Προσεκτική εξέταση συναρτήσεων με λιγότερες από 5 ή περισσότερες από 25 εντολές Χρήση μεταβλητής στοίχισης, παρενθέσεων, κενών, κενών γραμμών και τετράγωνα περιοχών σχολίων Don’t be too smart (Ο κώδικας γίνεται δυσανάγνωστος) Χρήση shorthands int i=0; int x = i++; //x = 0

20 Γενικές Συμβουλές (Fairley 1985) Παράδειγμα smart programming: Χρήση macros #include #define max(a,b) ( (a) > (b) ? (a) : (b) ) void main() { int c=5,d=7; int x = max(++c, ++d); printf("%d",x); } Τι εκτυπώνει ? 9 !!! #include #define add(a,b) ( (a) + (b) ) void main() { int c=5,d=7; printf(“sum= %d",add(c,d)); }

21 Γενικές Συμβουλές (Fairley 1985) Αποφυγή χρήσης εντολών της μίας μέσα στην άλλη σε μεγάλο βάθος, π.χ. printf(“%d”, func1(s*3*func2(4*s))); Αποφυγή υπερβελτιστοποίησης (Καταβολή υπερβολικά μεγάλης προσπάθειας στο ραφινάρισμα ενός τμήματος κώδικα που έχει μικρό τμήμα στην όλη αποδοτικότητα του προγράμματος. Ούτως η άλλως η απόδοση περιορίζεται από το νόμο του Amdahl :

22 Νόμος του Amdahl Έστω ότι βελτίωση E επιταχύνει ένα ποσοστό F του συνολικού προγράμματος κατά S (Π.χ. σε ένα πρόγραμμα 100 γραμμών που εκτελείται σε 10 secs 10 γραμμές βελτιώνονται ώστε να τρέχουν x2 γρηγορότερα, S=2)

23 Νόμος του Amdahl

24 Έστω ότι βελτιώνουμε έναν επεξεργαστή έτσι ώστε οι εντολές floating point να εκτελούνται στο μισό χρόνο (επιτάχυνση 2x) Αλλά οι εντολές κινητής υποδιαστολής αποτελούν το 10% του συνόλου των εντολών σε ένα μέσο πρόγραμμα.


Κατέβασμα ppt "Διαδικασία ανάπτυξης Προσδιορισμός απαιτήσεων Αρχιτεκτονικός Σχεδιασμός Λεπτομερής Σχεδιασμός Κωδικοποίηση Έλεγχος Παράδοση Συστήματος Λειτουργία - Συντήρηση."

Παρόμοιες παρουσιάσεις


Διαφημίσεις Google