Εισαγωγή στη Σχεδίαση Λογισμικού

Σχετικά έγγραφα
Ανάπτυξη & Σχεδίαση Λογισμικού (ΗΥ420)

Αρχιτεκτονική Λογισμικού

Πίνακας Περιεχομένων. μέρος A 1 Εισαγωγή στην Τεχνολογία Λογισμικού

Τεχνολογία Λογισμικού

Αρχιτεκτονικές Συστημάτων

Ειδικά θέματα τεχνολογίας λογισμικού

Τεχνολογία Λογισμικού

Πληροφορική 2. Τεχνολογία Λογισμικού

Ελεγχος, Αξιοπιστία και Διασφάλιση Ποιότητας Λογισµικού Πολυπλοκότητα

Σχεδίαση Κλάσεων. Γρηγόρης Τσουµάκας. Τµήµα Πληροφορικής, Αριστοτέλειο Πανεπιστήµιο Θεσσαλονίκης. Έκδοση:

ΠΕΡΙΕΧΟΜΕΝΑ. 2.5 Παράδειγµα πληροφοριακού συστήµατος Παράδειγµα συστήµατος πραγµατικού χρόνου

Υποδείγματα Ανάπτυξης

Σχεδιασµός βασισµένος σε συνιστώσες

Τεχνολογία λογισμικού στην πράξη

περιεχόμενα παρουσίασης

Προδιαγραφές Απαιτήσεων Επικύρωση Απαιτήσεων

Έγγραφο Περιγραφής Απαιτήσεων Λογισμικού

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ Π ΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ Π ΕΡΙΒΑΛΛΟΝ

Κωδικοποίηση και Έλεγχος Ορθότητας

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Πληροφορική II. Ενότητα 4 : Τεχνολογία λογισμικού. Δρ.

Κεφάλαιο 10 ο Υποπρογράµµατα

Σημειώσεις στο μάθημα «Στοιχεία Προγραμματισμού σε Γραφικό Περιβάλλον»

Μοντελοποίηση Πεδίου

Απαιτήσεις Λογισμικού

Υπολογιστικής Σκέψης

ΕΝΙΑΙΟ ΠΛΑΙΣΙΟ ΠΡΟΓΡΑΜΜΑΤΟΣ ΣΠΟΥΔΩΝ

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι

Τεχνολογία Λογισμικού

Διαδικασίες παραγωγής λογισμικού. Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση

Έλεγχος Συνένωσης και Διασφάλιση Ποιότητας

περιεχόμενα παρουσίασης Actors Σενάρια Περιεχόμενο περιπτώσεων χρήσης Πρότυπα περιπτώσεων χρήσης Διαγράμματα περιπτώσεων χρήσης

Μεταγλώττιση και σύνδεση πολλαπλών αρχείων κώδικα. Προγραμματισμός II 1

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΑΝΑΛΥΣΗ Rational Unified Process. Ιωάννης Σταμέλος Βάιος Κολοφωτιάς Πληροφορική

ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ. Κάθε υποπρόγραμμα έχει μόνο μία είσοδο και μία έξοδο. Κάθε υποπρόγραμμα πρέπει να είναι ανεξάρτητο από τα άλλα.

Το λειτουργικό σύστημα. Προγραμματισμός II 1

Σχεδιαστικά Προγράμματα Επίπλου

ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ

Οδηγίες για αξιολόγηση στο πλαίσιο ομότιμης συνεργατικής μάθησης

Εισαγωγή, Βασικές Έννοιες, Οφέλη και Κίνδυνοι

8 Τεχνικός Εφαρμογών Πληροφορικής με Πολυμέσα

Σχεδιασμός Οικολογικού Διαμεσολαβητή για την εποπτεία και διαχείριση δικτύου διανομής ηλεκτρικής ενέργειας

Στρατηγικό Σχεδιασµό Πληροφοριακών Συστηµάτων

Εισαγωγή Η VHDL υποστηρίζει τους εξής τρείς βασικούς και διαφορετικούς τρόπους περιγραφής

ΚΥΚΛΟΣ ΖΩΗΣ ΛΟΓΙΣΜΙΚΟΥ και ΔΙΑΓΡΑΜΜΑΤΑ ΡΟΗΣ ΔΕΔΟΜΕΝΩΝ

Τεχνολογία Λογισμικού & Πνευματική Ιδιοκτησία. ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική

Ανάπτυξη & Σχεδίαση Λογισμικού (ΗΥ420)

Εισαγωγή στην ανάλυση

Αρχιτεκτονικές κατανεμημένων συστημάτων. I. Sommerville 2006 Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση Κεφ. 12

ΚΕΦΑΛΑΙΟ 5. Κύκλος Ζωής Εφαρμογών ΕΝΟΤΗΤΑ 2. Εφαρμογές Πληροφορικής. Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών

Ανάπτυξη & Σχεδίαση Λογισμικού (ΗΥ420)

Αρχές Προγραμματισμού Υπολογιστών

ΚΕΦΑΛΑΙΟ 10 ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ

Επιχειρηµατικές ιαδικασίες: Εισαγωγικές Έννοιες & Αρχικά στάδια µοντελοποίησης

Το λειτουργικό σύστημα. Προγραμματισμός II 1

Εισαγωγή στην Τεχνολογία Λογισμικού

Επιλογή και επανάληψη. Λογική έκφραση ή συνθήκη

Οικονόμου Παναγιώτης.

. Μεθοδολογία Προγραμματισμού. Καλή και κακή σχεδίαση. Νικόλαος Πεταλίδης. Εισαγωγή Εαρινό Εξάμηνο 2014

Διαδικασίες παραγωγής λογισμικού. I. Sommerville 2006 Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση Κεφ. 4

Αρχιτεκτονικές κατανεμημένων συστημάτων. I. Sommerville 2006 Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση Κεφ. 12

ΣΧΕ ΙΑΣΗ ΑΝΤΙΚΕΙΜΕΝΩΝ ΜΕ ΑΡΜΟ ΙΟΤΗΤΕΣ. Ορισµός σχεδιαστικών προτύπων Εφαρµογή των 9 GRASP προτύπων

Εισαγωγή στην Πληροφορική

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ

Μαλούτα Θεανώ Σελίδα 1

ΔΙΑΓΩΝΙΣΜΑ ΤΕΛΙΚΗΣ ΕΠΑΝΑΛΗΨΗΣ ΣΤΙΣ ΕΝΟΤΗΤΕΣ

Προγραμματισμός Η/Υ. Προτεινόμενα θέματα εξετάσεων Εργαστήριο. Μέρος 1 ό. ΤΕΙ Λάρισας- Σχολή Τεχνολογικών Εφαρμογών Τμήμα Πολιτικών Έργων Υποδομής

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ. Ενότητα 1: Εισαγωγή στις Βάσεις Δεδομένων. Αθανάσιος Σπυριδάκος Διοίκηση Επιχειρήσεων

Κεφάλαιο 2ο. Κατανοώντας την αντικειμενοστρέφεια

Έλεγχος Προγραμμάτων και Συστήματος

Εισαγωγή στην. Γιάννης Σμαραγδάκης

. Μεθοδολογία Προγραμματισμού. Εισαγωγή. Νικόλαος Πεταλίδης. Εισαγωγή Εαρινό Εξάμηνο 2014

Αρχιτεκτονική σχεδίαση με ηλεκτρονικό υπολογιστή

Δομή και Στόχοι του Μαθήματος - Εισαγωγή

Διεργασίες (μοντέλο μνήμης & εκτέλεσης) Προγραμματισμός II 1

ΔΙΔΑΚΤΙΚΗ της ΠΛΗΡΟΦΟΡΙΚΗΣ

Περιεχόμενο του μαθήματος

Τ.Ε.Ι. ΑΝΑΤΟΛΙΚΗΣ ΜΑΚΕΔΟΝΙΑΣ ΚΑΙ ΘΡΑΚΗΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ & ΕΠΙΧΕΙΡΗΣΕΩΝ

ΕΠΑΝΑΛΗΠΤΙΚΟ ΤΕΣΤ ΣΤΙΣ ΕΝΟΤΗΤΕΣ

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

Τμήμα Μηχανικών Η/Υ Τηλεπικοινωνιών & Δικτύων,

Κεφάλαιο 6 ο Εισαγωγή στον Προγραμματισμό 1

Διοίκηση Παραγωγής και Υπηρεσιών

2.5.1 Χρήση δεξιοτήτων αρχειοθέτησης για τη διατήρηση ενός καθιερωμένου συστήματος

Κεφάλαιο 8. Αριθμητική Λογική μονάδα

Κωδικός: <Κωδ.Αρ.Εγγράφου/ΚωδικόΌνομαΈργου/Αρ. Έκδοσης> <Company Name> <Όνομα - Κωδικό Όνομα Έργου> Έγγραφο Περιγραφής Σχεδίου Λογισμικού

Δομές Δεδομένων. Ενότητα 1 - Εισαγωγή. Χρήστος Γκουμόπουλος. Πανεπιστήμιο Αιγαίου Τμήμα Μηχανικών Πληροφοριακών και Επικοινωνιακών Συστημάτων

Μεθοδική Ανάπτυξη Δικτυακής Υποδομής. Παρουσίαση στην ημερίδα για Σύγχρονες τάσεις στις Τηλεπικοινωνίες και Τεχνολογίες Αιχμής

Πλεονεκτήματα και μειονεκτήματα της προσομοίωσης

Διαδικασίες παραγωγής λογισμικού. Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση

Μάθημα «Υπηρεσίες Ηλεκτρονικής Υγείας»

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ

ΟΡΟΛΟΓΙΑ. απαιτήσεις αξιοπιστίας, στις απαιτήσεις ασφάλειας, στις απαιτήσεις λειτουργίας κλπ.

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι

Σχεδίαση Συστήματος Λογισμικού

METROPOLIS. Ένα περιβάλλον σχεδιασμού για ετερογενή συστήματα

Οργάνωση επεξεργαστή (2 ο μέρος) ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική

ΠΡΟΓΡΑΜΜΑ ΣΠΟΥΔΩΝ ΠΛΗΡΟΦΟΡΙΚΗ, Γ ΤΑΞΗ ΓΕΝΙΚΟΥ ΛΥΚΕΙΟΥ

Σχεδιασµός Οικολογικού ιαµεσολαβητή για την εποπτεία και διαχείριση δικτύου διανοµής ηλεκτρικής ενέργειας

ΜΕΘΟΔΟΛΟΓΙΑ ΑΝΑΠΤΥΞΗΣ ΕΜΠΟΡΙΚΩΝ ΕΦΑΡΜΟΓΩΝ

Transcript:

Εισαγωγή στη Σχεδίαση Λογισμικού

περιεχόμενα παρουσίασης Τι είναι η σχεδίαση λογισμικού Έννοιες σχεδίασης Δραστηριότητες σχεδίασης Σχεδίαση και υποδείγματα ανάπτυξης λογισμικού

σχεδίαση Η σχεδίαση του λογισμικού απαντά στο ερώτημα πώς θα είναι το λογισμικό που θα ικανοποιεί τις απαιτήσεις που περιγράφονται στο ΕΠΑΛ. Για να δώσει αυτή την απάντηση η σχεδίαση, οι σχεδιαστές λαμβάνουν ένα σύνολο αποφάσεων. Ορισμένες από τις αποφάσεις αυτές είναι σημαντικές και δύσκολα αλλάζουν, άλλες είναι λιγότερο σημαντικές και αλλάζουν εύκολα. Ορισμένες από τις αποφάσεις σχεδίασης δεν είναι ούτε απόλυτα σωστές ούτε απόλυτα λανθασμένες, αλλά είναι δυνατόν να οδηγούν σε λύσεις με μειονεκτήματα ή και πλεονεκτήματα. Τις περισσότερες φορές η σχεδίαση δεν αξιολογείται ως σωστή ή λανθασμένη, αλλά ως καλή ή κακή. Η σχεδίαση δεν είναι μηχανική διαδικασία, είναι περισσότερο ευριστική.

σχεδίαση Η καλή σχεδίαση «αναδύεται» μετά από δοκιμές, αποτυχίες και αναθεωρήσεις. Αν και η σχεδίαση δεν είναι μηχανική διαδικασία, υπάρχουν κριτήρια αξιολόγησης της καλής σχεδίασης. Υπάρχουν επίσης και κανόνες που όταν εφαρμόζονται οδηγούν σε καλή σχεδίαση. Όλες οι αποφάσεις σχεδίασης υπάρχουν στον τελικό κώδικα του λογισμικού. Από μόνος του ο κώδικας όμως δε διευκολύνει στο να έρθουν στην επιφάνεια όλες οι αποφάσεις της σχεδίασης. Για αυτό το λόγο οι σημαντικότερες σχεδιαστικές επιλογές απεικονίζονται σε μοντέλα σχεδίασης. Η δημιουργία των μοντέλων σχεδίασης βοηθά στην κατανόηση, επικοινωνία, διερεύνηση, αξιολόγηση και αναθεώρηση των αποφάσεών μας.

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

τι είναι η σχεδίαση λογισμικού Στη συνέχεια ο ορισμός αυτός υπέστη αναδιατυπώσεις αλλά η βασική έννοια του ορισμού είναι ότι η μονάδα προγράμματος αποτελεί ένα μέρος του συστήματος, το οποίο έχει μία ταυτότητα στο λογισμικό και που μπορεί να «συνεργαστεί» με άλλα μέρη για να παραχθούν τα αποτελέσματα που περιγράφουν οι προδιαγραφές του συστήματος. Η σχεδίαση προσδιορίζει τα μέρη αυτά του συστήματος, τη συμπεριφορά κάθε μέρους, καθώς και τον τρόπο συνεργασίας των μερών μεταξύ τους. Η σχεδίαση απαντά στο ερώτημα «πώς θα είναι το προϊόν;» που θα υλοποιεί τις απαιτήσεις που περιγράφουν οι προδιαγραφές του λογισμικού.

μοντέλο ανάλυσης και μοντέλο σχεδίασης Το μοντέλο σχεδίασης παρέχει λεπτομέρειες σχετικά με την αρχιτεκτονική του συστήματος, τις δομές δεδομένων, τις διεπαφές και τα δομικά μέρη που υλοποιούν το σύστημα. Το μοντέλο ανάλυσης εστιάζεται στα απαιτούμενα δεδομένα, τις λειτουργίες και συμπεριφορές του συστήματος. Η σχεδίαση ασχολείται και με τις μη λειτουργικές απαιτήσεις (απόδοση κλπ) και τα ποιοτικά χαρακτηριστικά του λογισμικού (συντηρησιμότητα κλπ) Η σχεδίαση επομένως επιτρέπει στους μηχανικούς λογισμικού να παράγουν ένα μοντέλο του συστήματος πριν αυτό κατασκευαστεί και αφού το αξιολογήσουν, όσον αφορά την ποιότητα του, να κάνουν όλες τις απαραίτητες τροποποιήσεις, πριν ξεκινήσει η υλοποίησή του. Η σχεδίαση προσφέρει στους μηχανικούς λογισμικού την ευκαιρία να συγκρίνουν εναλλακτικές λύσεις υλοποίησης του λογισμικού και να επιλέξουν την «καλύτερη».

το πρόβλημα της σχεδίασης Υπάρχουν πολλές λύσεις για ένα πρόβλημα. Σχεδίαση: Το σύνολο των αποφάσεων για την επίλυση του προβλήματος που περιγράφουν οι απαιτήσεις.

έννοιες σχεδίασης Αφαίρεση Τμηματικότητα Απόκρυψη πληροφοριών Σύζευξη Συνεκτικότητα

αφαίρεση Ένας τρόπος για την διαχείριση της πολυπλοκότητας του λογισμικού είναι η αφαίρεση (abstraction). Με την αφαίρεση επιχειρούμε να αγνοήσουμε πληροφορίες που προς στιγμήν δε μας ενδιαφέρουν και να εστιάσουμε την προσοχή μας σε εκείνες τις πληροφορίες που προς στιγμή κρίνουμε σημαντικές. Η αφαίρεση χρησιμοποιείται και για την ίδια τη σχεδίαση. Θέλουμε να κατανοήσουμε τη βασική δομή του λογισμικού σε υψηλό επίπεδο.

αφαίρεση Την υψηλού επιπέδου αφαίρεσή μας την προσφέρει το αρχιτεκτονικό σχέδιο του λογισμικού. Το αρχιτεκτονικό σχέδιο εστιάζεται στα βασικότερα υψηλού επιπέδου δομικά στοιχεία του λογισμικού. Σε χαμηλότερο επίπεδο αφαίρεσης μπορούμε να εξετάσουμε το λογισμικό μέσω του λεπτομερούς σχεδίου. Το λεπτομερές σχέδιο μας προσφέρει περισσότερη λεπτομέρεια για κάθε δομική μονάδα του λογισμικού.

τμηματικότητα

απόκρυψη πληροφοριών

απόκρυψη πληροφοριών Απόκρυψη πληροφοριών. Η απόκρυψη επιλογών σχεδίασης μίας μονάδας λογισμικού σε όσους τη χρησιμοποιούν. Διαχωρισμός διεπαφών και υλοποίησης. Εξάρτηση των πελατών σε διεπαφές και όχι σε υλοποιήσεις. Ενθυλάκωση. Έννοια σχεδόν ταυτόσημη με την απόκρυψη πληροφοριών. Η απόκρυψη δεδομένων, αλγορίθμων, δομών δεδομένων κλπ από τους χρήστες μία μονάδας. Ανοιχτή κλειστή σχεδίαση. Μία μονάδα λογισμικού θα πρέπει να είναι ανοιχτή για επέκταση και κλειστή σε τροποποίηση. Θα πρέπει να επεκτείνουμε μία μονάδα χωρίς να αλλάζουμε τον κώδικά της. Απόκρυψη μεταβλητότητας. Η απόκρυψη της μεταβλητότητας μίας μονάδας πίσω από τη διεπαφή της.

σύζευξη Η σύζευξη (coupling) είναι ένα μέτρο εξάρτησης μεταξύ των μονάδων του λογισμικού. Επιθυμούμε δύο διαφορετικές μονάδες λογισμικού να έχουν χαλαρή σύζευξη. Να έχουν δηλαδή μικρή εξάρτηση. Η χαλαρή σύζευξη των μονάδων λογισμικού έχει ως συνέπεια: Τοπικότητα αλλαγών Καλύτερη συντηρησιμότητα Ευκαιρίες επαναχρησιμοποίησης Διευκόλυνση στον έλεγχο και την εκσφαλμάτωση

παράγοντες σύζευξης Οι κλήσεις που γίνονται από μια μονάδα σε άλλη. Για παράδειγμα, η μονάδα Α καλεί τη μονάδα Β. Έτσι η λειτουργία της μονάδας Α εξαρτάται από τη μονάδα Β. Η ποσότητα των δεδομένων, που περνά από μια μονάδα σε άλλη. Για παράδειγμα, η μονάδα Α μπορεί να περνά το περιεχόμενο ενός πίνακα στη μονάδα Β. Έτσι η μονάδα Β εξαρτάται από την Α. Το μέγεθος του ελέγχου που μια μονάδα έχει πάνω σε μια άλλη. Για παράδειγμα η μονάδα Α μπορεί να περνά στη μονάδα Β ένα flag ελέγχου. Η λειτουργία που εκτελείται από τη Β εξαρτάται από την τιμή του flag. Ο βαθμός πολυπλοκότητας στη διεπαφή μιας μονάδας με τις άλλες. Για παράδειγμα, εάν η μονάδα Α περνά ένα flag στη μονάδα Β, αλλά οι μονάδες C και D ανταλλάσσουν τιμές, πριν η D συμπληρώσει τη λειτουργία της, τότε η διάταξη μεταξύ Α και Β είναι λιγότερο πολύπλοκη από ό,τι μεταξύ των C και D.

τύποι σύζευξης περιεχόμενη σύζευξη (content coupling): μια μονάδα επεμβαίνει και τροποποιεί μια άλλη. Η τροποποιημένη μονάδα είναι πλήρως εξαρτημένη από την πρώτη. από κοινού σύζευξη (common coupling): δεδομένα σε μια καθολική (global) ή κοινή (common) περιοχή. Όταν μια μονάδα περνά flags για να ελέγξει τη δραστηριότητα μιας άλλης μονάδας λέμε ότι υπάρχει σύζευξη ελέγχου (control coupling) μεταξύ των δύο μονάδων.

τύποι σύζευξης Εστω ότι περνάμε μια δομή δεδομένων σε μια μονάδα για να περάσουμε πληροφορία από μια μονάδα σε μια άλλη. Αν η μονάδα η οποία λαμβάνει τη δομή δεδομένων χρησιμοποιεί μόνο ένα τμήμα της πληροφορίας της δομής δεδομένων, τότε έχουμε σύζευξη αντιγράφου (stamp coupling) μεταξύ των μονάδων. Η σύζευξη αντιγράφου εμφανίζεται, όταν η πληροφορία που αποστέλλεται μεταξύ των μονάδων δεν είναι η απολύτως απαραίτητη. Όταν δύο μονάδες ανταλλάσουν μόνο τα απαραίτητα δεδομένα, τότε οι μονάδες συνδέονται με σύζευξη δεδομένων (data coupling).

η κλίμακα της σύζευξης 5. Σύζευξη δεδομένων Χαλαρή ή χαμηλή (επιθυμητή) 4. Σύζευξη αντιγράφου 3. Σύζευξη ελέγχου 2. Σύζευξη από κοινού 1. Περιεχόμενη Σύζευξη Υψηλή (μη επιθυμητή)

συνεκτικότητα Επιθυμούμε μία μονάδα λογισμικού να εμφανίζει υψηλή συνεκτικότητα. Η συνεκτικότητα εστιάζει σε μία μονάδα λογισμικού και στα δομικά της στοιχεία. Υψηλή συνεκτικότητα σημαίνει ότι μία μονάδα λογισμικού εξυπηρετεί ένα και καλά ορισμένο σκοπό.

επίπεδα συνεκτικότητας Συμπτωματική συνεκτικότητα (coincidental cohesion) : τα τμήματα μιας μονάδας είναι εντελώς ασυσχέτιστα. Λογική συνεκτικότητα (logical cohesion): ένας αριθμός λογικά συσχετισμένων λειτουργιών τοποθετούνται στην ίδια μονάδα. Χρονική συνεκτικότητα (temporal cohesion): οι λειτουργίες της μονάδας σχετίζονται μόνο λόγω της χρονικής τους σχέσης.

επίπεδα συνεκτικότητας Διαδικαστικά συνεκτική (procedurally cohesive).: οι λειτουργίες ομαδοποιούνται σε μονάδες ακριβώς για να επιβεβαιώνεται η σειρά εκτέλεσης. Εναλλακτικά μπορούμε να συσχετίσουμε συγκεκριμένες λειτουργίες, είτε επειδή δουλεύουν με, ή παράγουν, τα ίδια δεδομένα. Μερικές φορές αυτή η κατασκευή φαίνεται βολική. Οι μονάδες που κατασκευάζονται με αυτό τον τρόπο είναι επικοινωνιακά συνεκτικές (communicationally cohesive). Εάν η έξοδος από ένα τμήμα μιας μονάδας είναι είσοδος σε ένα επόμενο τμήμα, η μονάδα έχει ακολουθιακή συνεκτικότητα (sequential cohesion). Λειτουργική συνεκτικότητα (functional cohesion) : κάθε στοιχείο επεξεργασίας είναι απαραίτητο για την εκτέλεση μιας λειτουργίας.

κλίμακα τύπων συνεκτικότητας

δραστηριότητες σχεδίασης Ανεξάρτητα από το υπόδειγμα ανάπτυξης που υιοθετείται, η σχεδίαση περιλαμβάνει τις δραστηριότητες : της αρχιτεκτονικής σχεδίασης (architectural design), της λεπτομερούς σχεδίασης (detailed design) και τον έλεγχο του σχεδίου.

αρχιτεκτονική σχεδίαση Κατά την αρχιτεκτονική σχεδίαση (ή γενική σχεδίαση ή σχεδίαση υψηλού επιπέδου ή σχεδίαση συστήματος) προσδιορίζονται οι μονάδες που συνθέτουν το σύστημα λογισμικού σύμφωνα με τη συγκεκριμένη σχεδιαστική λύση. Οι σχεδιαστές μελετούν διεξοδικά το ΕΠΑΛ και όλα τα έγγραφα του έργου και παράγουν μια δομή μονάδων που εξασφαλίζει την επιθυμητή λειτουργικότητα και ικανοποιεί τις μη λειτουργικές απαιτήσεις.

αρχιτεκτονική σχεδίαση Πέρα από τον προσδιορισμό των μονάδων περιγράφεται και ο τρόπος διασύνδεσής τους. Το αποτέλεσμα είναι ένα μοντέλο του συστήματος που θα πρέπει να έχει τη «σωστή» τμηματικότητα, να κάνει χρήση της απόκρυψης πληροφοριών, να αξιοποιεί την αφαίρεση, να έχει χαλαρή σύζευξη ανά ζεύγος μονάδων και κάθε μονάδα να έχει υψηλή συνεκτικότητα. Επιπρόσθετα στην αρχιτεκτονική σχεδίαση λαμβάνονται υπόψη και τα ποιοτικά χαρακτηριστικά του λογισμικού, όπως η αξιοπιστία, η απόδοση, η ελεγξιμότητα κ.τ.λ.

λεπτομερής σχεδίαση Η λεπτομερής σχεδίαση (ή σχεδίαση μονάδας ή σχεδίαση χαμηλού επιπέδου) επικεντρώνεται σε μονάδες λογισμικού παράγοντας το σχέδιο κάθε μονάδας. Επιλέγονται συγκεκριμένοι αλγόριθμοι και δομές δεδομένων και περιγράφεται λεπτομερώς η επεξεργασία της κάθε μονάδας. Κάθε λεπτομερής σχεδίαση μπορεί να θεωρηθεί ένα αυτοτελές έργο σχεδίασης, αγνοώντας το γεγονός ότι είναι μέρος ενός όλου.

έλεγχος σχεδίου Ο έλεγχος σχεδίου ακολουθεί τη λεπτομερή σχεδίαση και εξετάζει την ορθότητα της αρχιτεκτονικής λύσης σε συνδυασμό με τα λεπτομερή σχέδια, παρέχοντας την δυνατότητα εντοπισμού τυχόν λαθών στη σχεδίαση, πριν ξεκινήσει η υλοποίηση των σχεδίων. Για τον έλεγχο του σχεδίου εκτελούμε τεχνικές ανασκοπήσεις όπως οι περιηγήσεις και οι επιθεωρήσεις. Ο έλεγχος του σχεδίου απαντά στο ερώτημα εάν χτίζουμε σωστά το λογισμικό, ενώ αντίθετα ο έλεγχος της τεκμηρίωσης των απαιτήσεων απαντά στο ερώτημα εάν χτίζουμε το σωστό λογισμικό.

σχεδίαση και υποδείγματα ανάπτυξης Σχεδίαση προσανατολισμένη στις λειτουργίες. Η έμφαση δίδεται στις λειτουργίες και στην υψηλή συνεκτικότητα των μονάδων. Σχεδίαση προσανατολισμένη στα δεδομένα. Η σχεδίαση ξεκινά με τον προσδιορισμό των δομών δεδομένων και ακολουθεί ο προσδιορισμός μονάδων επεξεργασίας των δεδομένων. Σχεδίαση προσανατολισμένη στα αντικείμενα. Η σχεδίαση αντιμετωπίζει τις λειτουργίες και τα δεδομένα από κοινού, χωρίς να δίδει προτεραιότητα σε ένα εκ των δυο.