02β Μοντέλα και Μεθοδολογίες Ανάπτυξης Λογισμικού ·...

56
02β Μοντέλα και Μεθοδολογίες Ανάπτυξης Λογισμικού Τεχνολογία Λογισμικού Σχολή Hλεκτρολόγων Mηχανικών & Mηχανικών Yπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Χειμερινό εξάμηνο 2017‐18 Δρ. Κώστας Σαΐδης ﴾[email protected]﴿

Transcript of 02β Μοντέλα και Μεθοδολογίες Ανάπτυξης Λογισμικού ·...

Page 1: 02β Μοντέλα και Μεθοδολογίες Ανάπτυξης Λογισμικού · Επαναληπτικό μοντέλο Πρωτοτυποποίηση Σπειροειδές

02β Μοντέλα και ΜεθοδολογίεςΑνάπτυξης Λογισμικού

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

Σχολή Hλεκτρολόγων Mηχανικών & Mηχανικών YπολογιστώνΕθνικό Μετσόβιο Πολυτεχνείο

Χειμερινό εξάμηνο 2017‐18

Δρ. Κώστας Σαΐδης ﴾[email protected]﴿

Page 2: 02β Μοντέλα και Μεθοδολογίες Ανάπτυξης Λογισμικού · Επαναληπτικό μοντέλο Πρωτοτυποποίηση Σπειροειδές

Κύκλος ζωής του λογισμικούΣυγκέντρωση, καταγραφή και ανάλυση απαιτήσεωνλογισμικού.

Σχεδιασμός λογισμικού.Υλοποίηση λογισμικού.Έλεγχος, επαλήθευση και επικύρωση λογισμικού.Εγκατάσταση, έλεγχος, παραμετροποίηση και ολοκλήρωσηλογισμικού στο παραγωγικό του περιβάλλον.

Συντήρηση και επέκταση λογισμικού.

2

Page 3: 02β Μοντέλα και Μεθοδολογίες Ανάπτυξης Λογισμικού · Επαναληπτικό μοντέλο Πρωτοτυποποίηση Σπειροειδές

Τρόπος εκτέλεσης των βημάτωνΑκολουθιακός/παράλληλοςΜια φορά/σε επαναλήψειςΣυχνότητα αλληλεπίδρασης με τους χρήστες

3

Page 4: 02β Μοντέλα και Μεθοδολογίες Ανάπτυξης Λογισμικού · Επαναληπτικό μοντέλο Πρωτοτυποποίηση Σπειροειδές

Πολλά μοντέλα & μεθοδολογίεςΜοντέλο καταρράκτηΑυξητικό μοντέλοΕπαναληπτικό μοντέλο

ΠρωτοτυποποίησηΣπειροειδές μοντέλοRational Unified ProcessΕυέλικτη διαδικασία ﴾agile﴿

ScrumDevOps

Extreme programming, test‐driven, behavior‐driven και model‐drivendevelopment σε επόμενη διάλεξη

4

Page 5: 02β Μοντέλα και Μεθοδολογίες Ανάπτυξης Λογισμικού · Επαναληπτικό μοντέλο Πρωτοτυποποίηση Σπειροειδές

Μοντέλο καταρράκτη

5

Page 6: 02β Μοντέλα και Μεθοδολογίες Ανάπτυξης Λογισμικού · Επαναληπτικό μοντέλο Πρωτοτυποποίηση Σπειροειδές

W.W. Royce, www‐scf.usc.edu/~csci201/lectures/Lecture11/royce1970.pdf

6

Page 7: 02β Μοντέλα και Μεθοδολογίες Ανάπτυξης Λογισμικού · Επαναληπτικό μοντέλο Πρωτοτυποποίηση Σπειροειδές

W.W. Royce, www‐scf.usc.edu/~csci201/lectures/Lecture11/royce1970.pdf

7

Page 8: 02β Μοντέλα και Μεθοδολογίες Ανάπτυξης Λογισμικού · Επαναληπτικό μοντέλο Πρωτοτυποποίηση Σπειροειδές

Winston W. Royce"Winston Walker Royce ﴾August 15, 1929 – June 7, 1995﴿ wasan American computer scientist, director at Lockheed SoftwareTechnology Center in Austin, Texas. He was a pioneer in thefield of software development, known for his 1970 paper fromwhich the Waterfall model for software development wasmistakenly drawn." ﴾Wikipedia﴿.

8

Page 9: 02β Μοντέλα και Μεθοδολογίες Ανάπτυξης Λογισμικού · Επαναληπτικό μοντέλο Πρωτοτυποποίηση Σπειροειδές

Λίστα αναγνωσμάτωνWinston. W. Royce, "Managing the development of large softwaresystems: concepts and techniques", Proceedings of the 9thInternational Conferense of Software Engineering, 1987, p. 328 ‐338.

Η πρώτη έκδοση του άρθρου ﴾1970﴿: www‐scf.usc.edu/~csci201/lectures/Lecture11/royce1970.pdf

9

Page 10: 02β Μοντέλα και Μεθοδολογίες Ανάπτυξης Λογισμικού · Επαναληπτικό μοντέλο Πρωτοτυποποίηση Σπειροειδές

Βασικά προβλήματα του μοντέλουκαταρράκτη

Δεν προσαρμόζεται στις αλλαγές των απαιτήσεων.Οι χρήστες συμμετέχουν μόνο στην αρχή ﴾απαιτήσεις﴿ καιστο τέλος ﴾λειτουργία﴿.

Δεν επαρκεί να επικοινωνεί το κάθε βήμα με τα γειτονικά τουμόνο

10

Page 11: 02β Μοντέλα και Μεθοδολογίες Ανάπτυξης Λογισμικού · Επαναληπτικό μοντέλο Πρωτοτυποποίηση Σπειροειδές

The required design changes are likely to be so disruptive thatthe software requirements upon which the design is basedand which provides the rationale for everything are violated.Either the requirements must be modified, or a substantialchange in the design is required. In effect the developmentprocess has returned to the origin and one can expect up to a100‐percent overrun in schedule and/or costs.

Winston W. Royce

11

Page 12: 02β Μοντέλα και Μεθοδολογίες Ανάπτυξης Λογισμικού · Επαναληπτικό μοντέλο Πρωτοτυποποίηση Σπειροειδές

Αυξητικό μοντέλοΓια σταθερές προδιαγραφές

12

Page 13: 02β Μοντέλα και Μεθοδολογίες Ανάπτυξης Λογισμικού · Επαναληπτικό μοντέλο Πρωτοτυποποίηση Σπειροειδές

RahulT, CC BY‐SA 3.0,https://commons.wikimedia.org/w/index.php?curid=27752117

13

Page 14: 02β Μοντέλα και Μεθοδολογίες Ανάπτυξης Λογισμικού · Επαναληπτικό μοντέλο Πρωτοτυποποίηση Σπειροειδές

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

Κάθε έκδοση είναι λειτουργικήΜικρή ευελιξία στις αλλαγές των απαιτήσεων

Στην πράξη, με αυτόν τον τρόπο γίνεται η "διάθεση" ﴾release﴿ τουλογισμικού: μετάβαση από τις εκδόσεις ελέχγου ﴾π.χ. ALPHA, BETA,RELEASE CANDIDATE﴿ στην τελική ﴾περισσότερα στα περί εκδόσεων﴿

14

Page 15: 02β Μοντέλα και Μεθοδολογίες Ανάπτυξης Λογισμικού · Επαναληπτικό μοντέλο Πρωτοτυποποίηση Σπειροειδές

Επαναληπτικό/εξελικτικό μοντέλο

15

Page 16: 02β Μοντέλα και Μεθοδολογίες Ανάπτυξης Λογισμικού · Επαναληπτικό μοντέλο Πρωτοτυποποίηση Σπειροειδές

16

Page 17: 02β Μοντέλα και Μεθοδολογίες Ανάπτυξης Λογισμικού · Επαναληπτικό μοντέλο Πρωτοτυποποίηση Σπειροειδές

ΧαρακτηριστικάΕπαναλαμβανόμενοι κύκλοι ﴾iterations﴿ σε μικρά χρονικάδιαστήματαΜε συχνές διαδράσεις με το χρήστηΠαρόμοια με προηγουμένως, έχουμε πολλές εκδόσειςΟι οποίες, όμως, υλοποιούν νέες απαιτήσεις καθώςπροκύπτουν/εξελίσσονται

Όσες θα δούμε παρακάτω βασίζονται σε αυτήν την προσέγγιση

17

Page 18: 02β Μοντέλα και Μεθοδολογίες Ανάπτυξης Λογισμικού · Επαναληπτικό μοντέλο Πρωτοτυποποίηση Σπειροειδές

Διαδικασία πρωτοτυποίησης﴾Prototyping, Rapid Application Development﴿

18

Page 19: 02β Μοντέλα και Μεθοδολογίες Ανάπτυξης Λογισμικού · Επαναληπτικό μοντέλο Πρωτοτυποποίηση Σπειροειδές

Είναι μια επαναληπτική διαδικασία1 Ανάλυση απαιτήσεων2 Ανάπτυξη πρωτοτύπου ﴾prototype﴿3 Αποτίμηση4 Βελτίωση5 Επανάληψη

19

Page 20: 02β Μοντέλα και Μεθοδολογίες Ανάπτυξης Λογισμικού · Επαναληπτικό μοντέλο Πρωτοτυποποίηση Σπειροειδές

Πρωτότυπα ﴾prototypes﴿Ενδείκνυται η ανάπτυξή τους σε εφαρμογές που έχουνχρηστικές διεπαφέςΔεν ενδείκνυται σε εφαρμογές με απαιτητικούς υπολογισμούςή εργασίες δέσμης

20

Page 21: 02β Μοντέλα και Μεθοδολογίες Ανάπτυξης Λογισμικού · Επαναληπτικό μοντέλο Πρωτοτυποποίηση Σπειροειδές

Οριζόντια πρωτότυπαΈμφαση στη διεπαφή με το χρήστη, παρά στη χαμηλούεπιπέδου λειτουργικότητα

Συνήθως UI prototypes ﴾wireframes﴿Επιβεβαίωση χρηστικών απαιτήσεωνΔοκιμαστικές εκδόσεις για την προσέγγιση χρηστών﴾πελατών ή επενδυτών, π.χ. MVP: minimum viable product﴿Βοηθούν στην εκτίμηση κόστους / χρόνου

21

Page 22: 02β Μοντέλα και Μεθοδολογίες Ανάπτυξης Λογισμικού · Επαναληπτικό μοντέλο Πρωτοτυποποίηση Σπειροειδές

Κάθετα πρωτότυπαΑπόκτηση λεπτομερών απαιτήσεων για μια συγκεκριμένηλειτουργίαΣυγκέντρωση πληροφοριών για τη συμπεριφορά τουσυστήματος σε συγκεκριμένο περιβάλλον ﴾π.χ. όγκοςδεδομένων, ταχύτητα δικτύου, μετρήσεις απόδοσης, κλπ.﴿

Αποκρυστάλλωση των απαιτήσεων για σύνθετες λειτουργίες

22

Page 23: 02β Μοντέλα και Μεθοδολογίες Ανάπτυξης Λογισμικού · Επαναληπτικό μοντέλο Πρωτοτυποποίηση Σπειροειδές

Rapid ﴾throw‐away﴿ prototypingΣκιαγράφηση απαιτήσεωνΣχεδιασμός πρωτοτύπουΧρηστική εμπειρία του, νέες απαιτήσεις

Επανάληψη, αν χρειάζεταιΚαθορισμός των τελικών απαιτήσεων ﴾τέλος ζωήςπρωτοτύπου﴿

23

Page 24: 02β Μοντέλα και Μεθοδολογίες Ανάπτυξης Λογισμικού · Επαναληπτικό μοντέλο Πρωτοτυποποίηση Σπειροειδές

Evolutionary prototypingΧτίσιμο ενός στιβαρού πρωτοτύπου, που μέσω συνεχώςεπεκτάσεων και βελτιώσεων, θα αποτελέσει το τελικόσύστημαΥλοποίηση των απόλυτα κατανοητών απαιτήσεων ανάχρονική στιγμήΑποτίμηση από χρήστεςΠαράλληλη ανάπτυξη των επιμέρους συστατικών τουσυστήματος με την ίδια λογική

24

Page 25: 02β Μοντέλα και Μεθοδολογίες Ανάπτυξης Λογισμικού · Επαναληπτικό μοντέλο Πρωτοτυποποίηση Σπειροειδές

Πλεονεκτήματα πρωτοτυποποίησηςΜείωση χρόνου και κόστουςΑνάμειξη των χρηστών

25

Page 26: 02β Μοντέλα και Μεθοδολογίες Ανάπτυξης Λογισμικού · Επαναληπτικό μοντέλο Πρωτοτυποποίηση Σπειροειδές

Πιθανά προβλήματαΕλλιπής ανάλυσηΣύγχυση χρηστώνΣύγχυση προγραμματιστών

26

Page 27: 02β Μοντέλα και Μεθοδολογίες Ανάπτυξης Λογισμικού · Επαναληπτικό μοντέλο Πρωτοτυποποίηση Σπειροειδές

Να είναι σαφής εξαρχής ο ρόλος τουπρωτοτύπου στο έργο

Προς όλους: χρήστες και προγραμματιστές

Throw‐away vs. evolutionary

27

Page 28: 02β Μοντέλα και Μεθοδολογίες Ανάπτυξης Λογισμικού · Επαναληπτικό μοντέλο Πρωτοτυποποίηση Σπειροειδές

Ακραία πρωτοτυποποίησηΧρησιμοποιείται συχνά για την ανάπτυξη διαδικτυακώνεφαρμογών

1. Παραγωγή στατικών σχεδίων/σελίδων2. Προγραμματισμός λειτουργικών σελίδων με χρήση

"εξομοίωσης" των back‐end υπηρεσιών

3. Υλοποίηση των back‐end υπηρεσιών

28

Page 29: 02β Μοντέλα και Μεθοδολογίες Ανάπτυξης Λογισμικού · Επαναληπτικό μοντέλο Πρωτοτυποποίηση Σπειροειδές

Σπειροειδές μοντέλο

29

Page 30: 02β Μοντέλα και Μεθοδολογίες Ανάπτυξης Λογισμικού · Επαναληπτικό μοντέλο Πρωτοτυποποίηση Σπειροειδές

30

Page 31: 02β Μοντέλα και Μεθοδολογίες Ανάπτυξης Λογισμικού · Επαναληπτικό μοντέλο Πρωτοτυποποίηση Σπειροειδές

Τέσσερα επαναληπτικά βήματα1. Καθορισμός στόχων2. Αναγνώριση και αντιμετώπιση ρίσκου3. Ανάπτυξη, έλεγχος, επαλήθευση4. Σχεδιασμός επόμενης επανάληψης

31

Page 32: 02β Μοντέλα και Μεθοδολογίες Ανάπτυξης Λογισμικού · Επαναληπτικό μοντέλο Πρωτοτυποποίηση Σπειροειδές

Παρόμοιο με το μοντέλο πρωτοτυποποίησης, όπου στηναρχή κάθε επανάληψης γίνεται έλεγχος σκοπιμότητας καιανάλυση ρίσκουΚατάλληλο για πολύ μεγάλα έργα ﴾μεγάλο κόστοςδιαχείρισης﴿

32

Page 33: 02β Μοντέλα και Μεθοδολογίες Ανάπτυξης Λογισμικού · Επαναληπτικό μοντέλο Πρωτοτυποποίηση Σπειροειδές

Rational Unified Process ﴾RUP﴿

33

Page 34: 02β Μοντέλα και Μεθοδολογίες Ανάπτυξης Λογισμικού · Επαναληπτικό μοντέλο Πρωτοτυποποίηση Σπειροειδές

ΧαρακτηριστικάΕξελικτικό μοντέλο με ανάδρασηΚαθοδηγείται από μελέτες χρήσης ﴾use cases﴿Είναι επικεντρωμένο στην αρχιτεκτονικήΧρησιμοποιεί την UML σαν γλώσσα μοντελοποίησης

34

Page 35: 02β Μοντέλα και Μεθοδολογίες Ανάπτυξης Λογισμικού · Επαναληπτικό μοντέλο Πρωτοτυποποίηση Σπειροειδές

Δομικά στοιχείαΡόλοι ﴾ποιος﴿ ‐ Δικαιοδοσίες και ικανότητεςΑποτελέσματα ﴾τι﴿ ‐ Ένα παραγόμενο από το έργοαποτέλεσμαΕνέργειες ﴾πώς﴿ ‐ Μια ενότητα εργασίας που έχει ανατεθεί σεκάποιο ρόλο

35

Page 36: 02β Μοντέλα και Μεθοδολογίες Ανάπτυξης Λογισμικού · Επαναληπτικό μοντέλο Πρωτοτυποποίηση Σπειροειδές

6 βασικές αρχέςBusiness modeling

RequirementsAnalysis and designImplementationTesting

Deployment

36

Page 37: 02β Μοντέλα και Μεθοδολογίες Ανάπτυξης Λογισμικού · Επαναληπτικό μοντέλο Πρωτοτυποποίηση Σπειροειδές

3 βοηθητικές αρχέςConfiguration & change managementProject managementEnvironment management and setup

37

Page 38: 02β Μοντέλα και Μεθοδολογίες Ανάπτυξης Λογισμικού · Επαναληπτικό μοντέλο Πρωτοτυποποίηση Σπειροειδές

4 φάσειςInception: Ορισμός και έκταση του έργουElaboration: Κατάστρωση μεθόδου υλοποίησης του έργου,μοντελοποίηση χαρακτηριστικών του έργου, ορισμός τηςαρχιτεκτονικής του συστήματος

Construction: Υλοποίηση του έργουTransition: Εγκατάσταση κι ολοκλήρωση του συστήματος στολειτουργικό του περιβάλλον

38

Page 39: 02β Μοντέλα και Μεθοδολογίες Ανάπτυξης Λογισμικού · Επαναληπτικό μοντέλο Πρωτοτυποποίηση Σπειροειδές

39

Page 40: 02β Μοντέλα και Μεθοδολογίες Ανάπτυξης Λογισμικού · Επαναληπτικό μοντέλο Πρωτοτυποποίηση Σπειροειδές

Ευέλικτο ﴾agile﴿ μοντέλο

40

Page 41: 02β Μοντέλα και Μεθοδολογίες Ανάπτυξης Λογισμικού · Επαναληπτικό μοντέλο Πρωτοτυποποίηση Σπειροειδές

ΑρχέςΠολυ‐λειτουργικές και αυτο‐διοικούμενες ομάδες ﴾self‐organizing & cross‐functional﴿.Προσαρμοστικός σχεδιασμός, εξελικτική ανάπτυξη, ταχείαπαράδοση και συνεχής βελτίωση.

Ταχεία και ευέλικτη προσαρμογή στις αλλαγές.Manifesto for Agile Software Development ‐http://agilemanifesto.org/

41

Page 42: 02β Μοντέλα και Μεθοδολογίες Ανάπτυξης Λογισμικού · Επαναληπτικό μοντέλο Πρωτοτυποποίηση Σπειροειδές

42

Page 43: 02β Μοντέλα και Μεθοδολογίες Ανάπτυξης Λογισμικού · Επαναληπτικό μοντέλο Πρωτοτυποποίηση Σπειροειδές

12 Αρχές1. Customer satisfaction by early and continuous delivery of

valuable software2. Welcome changing requirements, even in late development

3. Working software is delivered frequently ﴾weeks rather thanmonths﴿

4. Close, daily cooperation between business people anddevelopers

43

Page 44: 02β Μοντέλα και Μεθοδολογίες Ανάπτυξης Λογισμικού · Επαναληπτικό μοντέλο Πρωτοτυποποίηση Σπειροειδές

5. Projects are built around motivated individuals, who should betrusted

6. Face‐to‐face conversation is the best form of communication﴾co‐location﴿

7. Working software is the primary measure of progress8. Sustainable development, able to maintain a constant pace

44

Page 45: 02β Μοντέλα και Μεθοδολογίες Ανάπτυξης Λογισμικού · Επαναληπτικό μοντέλο Πρωτοτυποποίηση Σπειροειδές

9. Continuous attention to technical excellence and good design10. Simplicity—the art of maximizing the amount of work not

done—is essential11. Best architectures, requirements, and designs emerge from

self‐organizing teams12. Regularly, the team reflects on how to become more effective,

and adjusts accordingly

45

Page 46: 02β Μοντέλα και Μεθοδολογίες Ανάπτυξης Λογισμικού · Επαναληπτικό μοντέλο Πρωτοτυποποίηση Σπειροειδές

Scrum

By PierreSelim ‐ Own work, CC BY‐SA 3.0,https://commons.wikimedia.org/w/index.php?curid=17336884

46

Page 47: 02β Μοντέλα και Μεθοδολογίες Ανάπτυξης Λογισμικού · Επαναληπτικό μοντέλο Πρωτοτυποποίηση Σπειροειδές

ScrumΜικρή ομάδαΠολυ‐λειτουργική / πολυμορφικήΑυτο‐οργάνωσηΣτον ίδιο χώρο

47

Page 48: 02β Μοντέλα και Μεθοδολογίες Ανάπτυξης Λογισμικού · Επαναληπτικό μοντέλο Πρωτοτυποποίηση Σπειροειδές

ΑξίεςΑφοσίωση

ΘάρροςΣυγκέντρωσηΑνοικτότητα ‐ διαφάνειαΣεβασμός

48

Page 49: 02β Μοντέλα και Μεθοδολογίες Ανάπτυξης Λογισμικού · Επαναληπτικό μοντέλο Πρωτοτυποποίηση Σπειροειδές

ΡόλοιProduct owner

Έμφαση στη business πλευράDevelopment team

Αυτο‐οργάνωση ﴾pull και όχι push﴿

Scrum masterΌχι manager

49

Page 50: 02β Μοντέλα και Μεθοδολογίες Ανάπτυξης Λογισμικού · Επαναληπτικό μοντέλο Πρωτοτυποποίηση Σπειροειδές

Έννοιες και διαδικασίεςUser stories ﴾Epics & issues﴿Product backlogSprint ﴾iteration﴿Sprint backlog

50

Page 51: 02β Μοντέλα και Μεθοδολογίες Ανάπτυξης Λογισμικού · Επαναληπτικό μοντέλο Πρωτοτυποποίηση Σπειροειδές

Sprint backlogProduct backlog TODO Doing Done

User Story A #1 #2 #3

Story B #4 #6 #5

Story C

Story D

Story E

Story F

51

Page 52: 02β Μοντέλα και Μεθοδολογίες Ανάπτυξης Λογισμικού · Επαναληπτικό μοντέλο Πρωτοτυποποίηση Σπειροειδές

DevOps

Development + Operations

52

Page 53: 02β Μοντέλα και Μεθοδολογίες Ανάπτυξης Λογισμικού · Επαναληπτικό μοντέλο Πρωτοτυποποίηση Σπειροειδές

By Devops.png: Rajiv.Pant derivative work: Wylve ‐ This file wasderived from Devops.png:, CC BY 3.0,https://commons.wikimedia.org/w/index.php?curid=20202905 53

Page 54: 02β Μοντέλα και Μεθοδολογίες Ανάπτυξης Λογισμικού · Επαναληπτικό μοντέλο Πρωτοτυποποίηση Σπειροειδές

ΧαρακτηριστικάΑυτοματισμός και παρακολούθηση των ﴾"τελικών" κυρίως﴿βημάτων ανάπτυξης λογισμικού:

from integration, testing, releasing to deployment andinfrastructure management.

Στόχοι: μικρότεροι κύκλοι ανάπτυξης, συχνότερεςεγκαταστάσεις ﴾deployments﴿, πιο αξιόπιστες εκδόσεις﴾releases﴿, καλύτερη ευθυγράμμιση με τις επιδιώξεις τουοργανισμού ﴾business goals﴿.

54

Page 55: 02β Μοντέλα και Μεθοδολογίες Ανάπτυξης Λογισμικού · Επαναληπτικό μοντέλο Πρωτοτυποποίηση Σπειροειδές

DevOps toolchain1. Code2. Build

3. Test4. Package5. Release6. Configure

7. Monitor

55

Page 56: 02β Μοντέλα και Μεθοδολογίες Ανάπτυξης Λογισμικού · Επαναληπτικό μοντέλο Πρωτοτυποποίηση Σπειροειδές

By Kharnagy ‐ Own work, CC BY‐SA 4.0,https://commons.wikimedia.org/w/index.php?curid=51215412

56