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

Post on 24-Jun-2020

4 views 0 download

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

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

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

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

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

Δρ. Κώστας Σαΐδης ﴾saiko@di.uoa.gr﴿

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

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

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

2

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

3

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

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

ScrumDevOps

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

4

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

5

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

6

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

7

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

Λίστα αναγνωσμάτων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

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

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

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

10

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

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

12

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

13

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

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

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

14

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

15

16

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

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

17

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

18

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

19

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

20

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

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

21

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

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

22

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

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

23

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

24

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

25

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

26

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

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

Throw‐away vs. evolutionary

27

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

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

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

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

28

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

29

30

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

31

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

32

Rational Unified Process ﴾RUP﴿

33

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

34

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

35

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

RequirementsAnalysis and designImplementationTesting

Deployment

36

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

37

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

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

38

39

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

40

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

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

41

42

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

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

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

Scrum

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

46

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

47

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

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

48

ΡόλοιProduct owner

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

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

Scrum masterΌχι manager

49

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

50

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

DevOps

Development + Operations

52

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

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

from integration, testing, releasing to deployment andinfrastructure management.

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

54

DevOps toolchain1. Code2. Build

3. Test4. Package5. Release6. Configure

7. Monitor

55

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

56