01 Εισαγωγή. Τεχνολογία Λογισμικού. Τμήμα Πληροφορικής & Τηλεπικοινωνιών Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών. Εαρινό εξάμηνο

Σχετικά έγγραφα
Τεχνολογία Λογισμικού

01 Εισαγωγή. Τεχνολογία Λογισμικού. Τμήμα Πληροφορικής & Τηλεπικοινωνιών, ΕΚΠΑ Εαρινό εξάμηνο Δρ. Κώστας Σαΐδης

Test Data Management in Practice

06 Αντικειμενοστρεφής ανάλυση και σχεδιασμός

2 Composition. Invertible Mappings

Assalamu `alaikum wr. wb.

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

Πανεπιστήµιο Πειραιώς Τµήµα Πληροφορικής

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

ΓΗΠΛΧΜΑΣΗΚΖ ΔΡΓΑΗΑ ΑΡΥΗΣΔΚΣΟΝΗΚΖ ΣΧΝ ΓΔΦΤΡΧΝ ΑΠΟ ΑΠΟΦΖ ΜΟΡΦΟΛΟΓΗΑ ΚΑΗ ΑΗΘΖΣΗΚΖ

08 Η γλώσσα UML I. Τεχνολογία Λογισμικού. Σχολή Hλεκτρολόγων Mηχανικών & Mηχανικών Yπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο. Χειμερινό εξάμηνο

Right Rear Door. Let's now finish the door hinge saga with the right rear door

Finite Field Problems: Solutions

ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΗΡΑΚΛΕΙΟ ΚΡΗΤΗΣ ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΛΟΓΙΣΤΙΚΗΣ

ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ

Phys460.nb Solution for the t-dependent Schrodinger s equation How did we find the solution? (not required)

Ακαδημαϊκός Λόγος Εισαγωγή

CHAPTER 25 SOLVING EQUATIONS BY ITERATIVE METHODS

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΜΣ «ΠΡΟΗΓΜΕΝΑ ΣΥΣΤΗΜΑΤΑ ΠΛΗΡΟΦΟΡΙΚΗΣ» ΚΑΤΕΥΘΥΝΣΗ «ΕΥΦΥΕΙΣ ΤΕΧΝΟΛΟΓΙΕΣ ΕΠΙΚΟΙΝΩΝΙΑΣ ΑΝΘΡΩΠΟΥ - ΥΠΟΛΟΓΙΣΤΗ»

EE512: Error Control Coding

09 Η γλώσσα UML I. Τεχνολογία Λογισμικού. Τμήμα Πληροφορικής & Τηλεπικοινωνιών Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών. Εαρινό εξάμηνο

Επιβλέπουσα Καθηγήτρια: ΣΟΦΙΑ ΑΡΑΒΟΥ ΠΑΠΑΔΑΤΟΥ

ΟΙ ΑΞΙΕΣ ΤΗΣ ΖΩΗΣ THE VALUES OF LIFE Η ΥΠΕΥΘΥΝΟΤΗΤΑ..THE RESPONSIBILITY ΔΗΜΗΤΡΑ ΚΩΝΣΤΑΝΤΙΝΟΥ

Ακαδημαϊκός Λόγος Εισαγωγή

Section 8.3 Trigonometric Equations

Τομέας: Ανανεώσιμων Ενεργειακών Πόρων Εργαστήριο: Σχεδιομελέτης και κατεργασιών

C.S. 430 Assignment 6, Sample Solutions

The Simply Typed Lambda Calculus

3.4 SUM AND DIFFERENCE FORMULAS. NOTE: cos(α+β) cos α + cos β cos(α-β) cos α -cos β

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 19/5/2007

7 Present PERFECT Simple. 8 Present PERFECT Continuous. 9 Past PERFECT Simple. 10 Past PERFECT Continuous. 11 Future PERFECT Simple

ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ ΒΑΛΕΝΤΙΝΑ ΠΑΠΑΔΟΠΟΥΛΟΥ Α.Μ.: 09/061. Υπεύθυνος Καθηγητής: Σάββας Μακρίδης

ΕΠΙΧΕΙΡΗΣΙΑΚΗ ΑΛΛΗΛΟΓΡΑΦΙΑ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑ ΣΤΗΝ ΑΓΓΛΙΚΗ ΓΛΩΣΣΑ

TMA4115 Matematikk 3

Homework 3 Solutions

Fourier Series. MATH 211, Calculus II. J. Robert Buchanan. Spring Department of Mathematics

Συστήματα Διαχείρισης Βάσεων Δεδομένων

2016 IEEE/ACM International Conference on Mobile Software Engineering and Systems

Πανεπιστήμιο Πειραιώς Τμήμα Πληροφορικής Πρόγραμμα Μεταπτυχιακών Σπουδών «Πληροφορική»

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

Partial Trace and Partial Transpose

Main source: "Discrete-time systems and computer control" by Α. ΣΚΟΔΡΑΣ ΨΗΦΙΑΚΟΣ ΕΛΕΓΧΟΣ ΔΙΑΛΕΞΗ 4 ΔΙΑΦΑΝΕΙΑ 1

Εγκατάσταση λογισμικού και αναβάθμιση συσκευής Device software installation and software upgrade

Συντακτικές λειτουργίες

12 Έλεχος και επαλήθευση λογισμικού

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

Writing for A class. Describe yourself Topic 1: Write your name, your nationality, your hobby, your pet. Write where you live.

ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΠΕΛΟΠΟΝΝΗΣΟΥ

Τι είναι η λογική αρχιτεκτονική

Code Breaker. TEACHER s NOTES

Concrete Mathematics Exercises from 30 September 2016

The challenges of non-stable predicates

On a four-dimensional hyperbolic manifold with finite volume

Η αλληλεπίδραση ανάμεσα στην καθημερινή γλώσσα και την επιστημονική ορολογία: παράδειγμα από το πεδίο της Κοσμολογίας

ΠΑΝΔΠΙΣΗΜΙΟ ΜΑΚΔΓΟΝΙΑ ΠΡΟΓΡΑΜΜΑ ΜΔΣΑΠΣΤΥΙΑΚΧΝ ΠΟΤΓΧΝ ΣΜΗΜΑΣΟ ΔΦΑΡΜΟΜΔΝΗ ΠΛΗΡΟΦΟΡΙΚΗ

derivation of the Laplacian from rectangular to spherical coordinates

ST5224: Advanced Statistical Theory II

Τεχνολογία Λογισμικού & Ανάλυση Συστημάτων 21/11/2016. Δρ. Ανδριάνα Πρέντζα Αναπληρώτρια Καθηγήτρια.

UML: Unified modelling language


Η ΨΥΧΙΑΤΡΙΚΗ - ΨΥΧΟΛΟΓΙΚΗ ΠΡΑΓΜΑΤΟΓΝΩΜΟΣΥΝΗ ΣΤΗΝ ΠΟΙΝΙΚΗ ΔΙΚΗ

Section 7.6 Double and Half Angle Formulas

6.1. Dirac Equation. Hamiltonian. Dirac Eq.

EPL 603 TOPICS IN SOFTWARE ENGINEERING. Lab 5: Component Adaptation Environment (COPE)

HOMEWORK 4 = G. In order to plot the stress versus the stretch we define a normalized stretch:

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

FINAL TEST B TERM-JUNIOR B STARTING STEPS IN GRAMMAR UNITS 8-17

Οι αδελφοί Montgolfier: Ψηφιακή αφήγηση The Montgolfier Βrothers Digital Story (προτείνεται να διδαχθεί στο Unit 4, Lesson 3, Αγγλικά Στ Δημοτικού)

Instruction Execution Times

«ΑΓΡΟΤΟΥΡΙΣΜΟΣ ΚΑΙ ΤΟΠΙΚΗ ΑΝΑΠΤΥΞΗ: Ο ΡΟΛΟΣ ΤΩΝ ΝΕΩΝ ΤΕΧΝΟΛΟΓΙΩΝ ΣΤΗΝ ΠΡΟΩΘΗΣΗ ΤΩΝ ΓΥΝΑΙΚΕΙΩΝ ΣΥΝΕΤΑΙΡΙΣΜΩΝ»

Démographie spatiale/spatial Demography

ΟΙΚΟΝΟΜΟΤΕΧΝΙΚΗ ΑΝΑΛΥΣΗ ΕΝΟΣ ΕΝΕΡΓΕΙΑΚΑ ΑΥΤΟΝΟΜΟΥ ΝΗΣΙΟΥ ΜΕ Α.Π.Ε

LESSON 14 (ΜΑΘΗΜΑ ΔΕΚΑΤΕΣΣΕΡΑ) REF : 202/057/34-ADV. 18 February 2014

Απόκριση σε Μοναδιαία Ωστική Δύναμη (Unit Impulse) Απόκριση σε Δυνάμεις Αυθαίρετα Μεταβαλλόμενες με το Χρόνο. Απόστολος Σ.

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 6/5/2006

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

Στο εστιατόριο «ToDokimasesPrinToBgaleisStonKosmo?» έξω από τους δακτυλίους του Κρόνου, οι παραγγελίες γίνονται ηλεκτρονικά.

Srednicki Chapter 55

Information and Communication Technologies in Education

5.4 The Poisson Distribution.

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΣΥΣΤΗΜΑΤΩΝ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΕΡΓΑΣΤΗΡΙΟ ΥΨΗΛΩΝ ΤΑΣΕΩΝ

14 Lesson 2: The Omega Verb - Present Tense

BECAUSE WE REALLY WANT TO KNOW WHAT YOU THINK ABOUT SCHOOL AND YOUR GARDEN. Fairly true If I decide to learn something hard, I can.

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ

Statistical Inference I Locally most powerful tests

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

Partial Differential Equations in Biology The boundary element method. March 26, 2013

ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ Α. Διαβάστε τις ειδήσεις και εν συνεχεία σημειώστε. Οπτική γωνία είδησης 1:.

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

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

Μεταπτυχιακή διατριβή. Ανδρέας Παπαευσταθίου

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ & ΠΛΗΡΟΦΟΡΙΚΗΣ. του Γεράσιμου Τουλιάτου ΑΜ: 697

ΚΒΑΝΤΙΚΟΙ ΥΠΟΛΟΓΙΣΤΕΣ

ΣΧΕΔΙΑΣΜΟΣ ΚΑΙ ΕΝΙΣΧΥΣΗ ΤΩΝ ΚΟΜΒΩΝ ΟΠΛΙΣΜΕΝΟΥ ΣΚΥΡΟΔΕΜΑΤΟΣ ΜΕ ΒΑΣΗ ΤΟΥΣ ΕΥΡΩΚΩΔΙΚΕΣ

10α Έλεγχος και επαλήθευση λογισμικού

þÿ»±íº »¹ Áà  : É º±¹ Ä þÿ Á³ Ä Å : ¼¹± ºÁ¹Ä¹º ±À Ä ¼

Every set of first-order formulas is equivalent to an independent set

Γιπλυμαηική Δπγαζία. «Ανθπυποκενηπικόρ ζσεδιαζμόρ γέθςπαρ πλοίος» Φοςζιάνηρ Αθανάζιορ. Δπιβλέπυν Καθηγηηήρ: Νηθφιανο Π. Βεληίθνο

Verklarte Nacht, Op.4 (Εξαϋλωμένη Νύχτα, Έργο 4) Arnold Schoenberg ( )

Transcript:

01 Εισαγωγή Τεχνολογία Λογισμικού Τμήμα Πληροφορικής & Τηλεπικοινωνιών Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών Εαρινό εξάμηνο 2017 18 Δρ. Κώστας Σαΐδης saiko@di.uoa.gr

Περιεχόμενα Στόχος του μαθήματος Εισαγωγή στην τεχνολογία λογισμικού 2

Στόχος του μαθήματος Πραγματιστική εισαγωγή στην Τεχνολογία Λογισμικού 3

Διαδικασία ανάπτυξης μικρού και απλού λογισμικού W.W. Royce, wwwscf.usc.edu/~csci201/lectures/lecture11/royce1970.pdf 4

Ανάπτυξη μεγάλου και σύνθετου λογισμικού; Τεχνολογία Λογισμικού: μεθοδολογίες, τεχνολογίες, εργαλεία, τεχνικές και πρακτικές για τη βέλτιστη υλοποίηση σύνθετων έργων λογισμικού 5

Τεχνολογία λογισμικού Μεγάλα έργα Με πολλές και μεγάλες ομάδες Με πολύπλοκες απαιτήσεις Με οικογένειες εφαρμογών Με πολλές παράλληλες αλλαγές και εκδόσεις Που χρησιμοποιούνται για πολλά χρόνια 6

Τεχνολογία Λογισμικού Γιατί μας απασχολεί η τεχνολογία λογισμικού; Γιατί το λογισμικό, αν και κατέχει πλέον, σημαίνοντα ρόλο σε όλες σχεδόν τις δραστηριότητες της ανθρωπότητας είναι πολύ δύσκολο να αναπτυχθεί "σωστά"! 7

Σωστά; Εντός προϋπολισμού Έγκαιρα Ικανοποιώντας πλήρως τους χρήστες του Χωρίς λάθη και προβλήματα στη λειτουργία του Να είναι αξιόπιστο, να είναι εύκολο να συντηρηθεί, να επεκταθεί, κτλ. 8

Τι το ιδιαίτερο έχει η ανάπτυξη λογισμικού; Γιατί είναι δύσκολο να γίνει "σωστά"; Most software today is very much like an Egyptian pyramid with millions of bricks piled on top of each other, with no structural integrity, but just done by brute force and thousands of slaves. Alan Kay 9

Alan Kay "Alan Curtis Kay is an American computer scientist... best known for his pioneering work on object oriented programming and windowing graphical user interface design." Wikipedia. Βραβείο Turing 2003. 10

Ένας πιθανός λόγος Στα μεγάλα έργα λογισμικού εμπλέκονται πολλοί συμμετέχοντες: Χρήστες Πελάτες Διοίκηση ακόμα και Μέτοχοι ή Επενδυτές Προγραμματιστές Δοκιμαστές Σχεδιαστές διεπαφών Υπεύθυνοι έργου κτλ. 11

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

Δεύτερος πιθανός λόγος Most software estimates are performed at the beginning of the life cycle. This makes sense until we realize that estimates are obtained before the requirements are defined and thus before the problem is understood. Estimation, therefore, usually occurs at the wrong time. Robert Glass 13

Robert Glass "Robert L. Bob Glass born 1932 is an American software engineer and writer, known for his works on software engineering, especially on the measuring of the quality of software design and his studies of the state of the art of software engineering research." Wikipedia 14

Robert L. Glass, "Facts and Fallacies of Software Engineering", Addison Wesley, 2002, 0 321 11742 5. 15

Τρίτος πιθανός λόγος Σε επίπεδο υλοποίησης, το κύριο πρόβλημα είναι η πολυπλοκότητα complexity : τυχαία πολυπλοκότητα accidental ουσιώδης πολυπλοκότητα essential Ακόμα κι αν γίνουν σωστές εκτιμήσεις και βρεθεί κοινός τόπος, ένα έργο λογισμικού μπορεί να αποτύχει λόγω της ουδιώδους πολυπλοκότητάς του. 16

Πολυπλοκότητα The function of good software is to make the complex appear to be simple. Grady Booch 17

Grady Booch "Grady Booch born February 27, 1955 is an American software engineer, best known for developing the Unified Modeling Language UML with Ivar Jacobson and James Rumbaugh. He is recognized internationally for his innovative work in software architecture, software engineering, and collaborative development environments." Wikipedia 18

Τι το ιδιαίτερο έχει η ανάπτυξη λογισμικού; Με τι μοιάζει και σε τι διαφέρει από τα άλλα ανθρώπινα έργα και προϊόντα; Programming is an unnatural act. Alan Perlis 19

Alan Perlis "Alan Jay Perlis April 1, 1922 February 7, 1990 was an American computer scientist and professor at Yale University known for his pioneering work in programming languages and the first recipient of the Turing Award [Το 1966!]" Wikipedia. 20

Alan J. Perlis, "Epigrams on Programming", ACM SIGPLAN Notices, Vol. 17, Issue 9, Sep. 1982, p. 7 13. www.cs.yale.edu/~perlis alan/quotes.html 21

Αν το σκεφτείτε Το λογισμικό: δεν υπάρχει δεν έχει φυσική υπόσταση δεν τελειώνει/οριστικοποιείται ποτέ εκτός από ένα/δυο πρέπει να λειτουργεί/διατηρείται σε πολλές παράλληλες εκδόσεις 22

Ο νόμος του Wirth Η ταχύτητα με την οποία το λογισμικό γίνεται πιο αργό είναι μεγαλύτερη από την ταχύτητα με την οποία το υλικό γίνεται πιο γρήγορο. Were it not for a thousand times faster hardware, modern software would be utterly unusable. Niklaus Wirth 23

Niklaus Wirth "Niklaus Emil Wirth born 15 February 1934 is a Swiss computer scientist, best known for designing several programming languages, including Pascal, and for pioneering several classic topics in software engineering." Wikipedia Βραβείο Turing 1984. 24

N. Wirth, "A Plea for Lean Software", IEEE Computer, Vol 28, Issue 2, Feb. 1995, p. 64 68. 25

Ωχ! The most amazing achievement of the computer software industry is its continuing cancellation of the steady and staggering gains made by the computer hardware industry. Henry Petroski 26

"Henry Petroski is an American engineer specializing in failure analysis. A professor both of civil engineering and history at Duke University, he is also a prolific author." Wikipedia. 27

Henry Petroski, "To Engineer Is Human: The Role of Failure in Successful Design", St. Martin's Press, 1985. 28

Σφαίρα από ασήμι So we hear desperate cries for a silver bullet, something to make software costs drop as rapidly as computer hardware costs do. But, as we look to the horizon of a decade hence, we see no silver bullet. There is no single development, in either technology or management technique, which by itself promises even one order of magnitude improvement in productivity, in reliability, in simplicity. Fred Brooks 29

Fred Brooks "Frederick Phillips Brooks, Jr. born April 19, 1931 is an American computer architect, software engineer, and computer scientist, best known for managing the development of IBM's System/360 family of computers and the OS/360 software support package, then later writing candidly about the process in his seminal book The Mythical Man Month." Wikipedia. Βραβείο Turing 1999. 30

Fred P. Brooks, "No Silver Bullet Essence and Accident in Software Engineering", Proceedings of the IFIP Tenth World Computing Conference, April 1987, p. 1069 1076. http://www.cs.nott.ac.uk/~pszcah/g51iss/documents/nosilverbulle t.html Fred P. Brooks, "The Mythical Man Month", Addison Wesley, 1975, 0 201 00650 2. 31

Ο Μυθικός ανθρωπο μήνας Η προσθήκη ανθρωπο προσπάθειας σε ένα αργοπορημένο έργο λογισμικού το καθυστερεί ακόμα περισσότερο! 32

Περιεχόμενα διαλέξεων 33

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

Μοντέλα ανάπτυξης λογισμικού Ακολουθιακή διαδικασία sequential Μοντέλο Καταρράκτη waterfall Επαναληπτική διαδικασία iterative Αυξητική διαδικασία incremental Ευέλικτη διαδικασία agile 35

Μεθοδολογίες ανάπτυξης λογισμικού Ταχεία Πρωτοτυποίηση Rapid prototyping. «Ακραίος Προγραμματισμός» Extreme Programming. Ανάπτυξη βασισμένη σε ελέγχους Test driven Development. Συνεχής παράδοση Continuous Delivery Ανάπτυξη / Λειτουργία «DevOps». 36

Ανάλυση απαιτήσεων Ανάλυση και μοντελοποίηση απαιτήσεων Σύνταξη προδιαγραφών και παραδοτέων 37

Σχεδιασμός Λογισμικού Βασικές αρχές Αντικειμονοστρεφής σχεδιασμός συστημάτων Συστατικά λογισμικού 38

Γλώσσα μοντελοποίησης UML Διαγράμματα κλάσεων Class diagrams Διαγράμματα ακολουθιών Sequence diagrams Διαγράμματα δραστηριοτήτων Activity diagrams Διαγράμματα σεναρίων χρήσης Use case diagrams κτλ. 39

Πρότυπα Σχεδίασης Design Patterns Κατασκευαστικά πρότυπα Creational patterns Δομικά πρότυπα Structural patterns Πρότυπα συμπεριφοράς Behavioral patterns 40

Αρχιτεκτονική Λογισμικού Αρχιτεκτονικός σχεδιασμός σύνθετων κατανεμημένων συστημάτων Βασικές έννοιες Αρχιτεκτονικά πρότυπα Architectural patterns Έμφαση σε εφαρμογές διαδικτύου Αρχιτεκτονική REST Representation State Transfer Ανάπτυξη RESTful Application Programming Interfaces APIs Θέματα ασφάλειας Θέματα απόδοσης 41

Σχεδιασμός διεπαφής χρήστη Ευχρηστία, διαδραστικότητα και αποκρισιμότητα Σύγχρονες μεθοδολογίες ανάπτυξης διεπαφής χρήστη Πρότυπα σχεδίασης Model View Controller, Model View ViewModel και Observable Έμφαση σε τεχνολογίες εφαρμογών διαδικτύου HTML5, CSS3, Javascript Εφαρμογές μιας σελίδας Single page applications Ασύγχρονες τεχνικές AJAX, Promises 42

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

Τεχνικές και Εργαλεία Διοίκησης, Παρακολούθησης και Ελέγχου της Ανάπτυξης Λογισμικού Έλεγχος εκδόσεων Version Control Έμφαση στο σύστημα Git το πλέον διαδεδομένο Version Control System Αυτοματισμός διαδικασίας «χτισίματος» λογισμικού Build automation Έμφαση στο σύστημα Gradle χρησιμοποιείται στην ανάπτυξη Android εφαρμογών Ανάλυση προγράμματος program analysis και αυτόματος εντοπισμός σφαλμάτων bug detection 44

Σενάρια ελέγχου Unit testing, Regression testing, Functional testing, Integration testing, test coverage Συνεχής ολοκλήρωση Continuous integration Αξιοπιστία λογισμικού Η έννοια του «τεχνικού/σχεδιαστικού χρέους» technical debt. 45

Διαχείριση συστατικών του λογισμικού Συστατικά λογισμικού και αλληλεξαρτήσεις τους software components and dependencies Αποθήκες συστατικών λογισμικού Software artifact repositories Διαχείριση εκδόσεων λογισμικού software releases Μέθοδοι αρίθμησης εκδόσεων versioning schemes 46

Πριν ξεκινήσουμε Μια τελευταία οπτική 47

Ανάπτυξη λογισμικού: τέχνη ή επιστήμη; When CACM began publication in 1959, the members of ACM's Editorial Board made the following remark as they described the purposes of ACM's periodicals: "If computer programming is to become an important part of computer research and development, a transition of programming from an art to a disciplined science must be effected." Such a goal has been a continually recurring theme during the ensuing years; for example, we read in 1970 of the "first steps toward transforming the art of programming into a science". Meanwhile we have actually succeeded in making our discipline a science, and in a remarkably simple way: merely by deciding to call it "computer science." Donald Knuth 48

Donald Knuth Donald Ervin Knuth is an American computer scientist, mathematician, and professor emeritus at Stanford University. He is the author of the multi volume work The Art of Computer Programming. He contributed to the development of the rigorous analysis of the computational complexity of algorithms and systematized formal mathematical techniques for it... Knuth is the creator of the TeX computer typesetting system, the related METAFONT font definition language and rendering system, and the Computer Modern family of typefaces. Βραβείο Turing 1974. 49

Donald E. Knuth, "Computer Programming as an Art", Communications of the ACM, Vol. 7, Issue 12, Dec. 1974, p. 667 673. Η ομιλία του D. Knuth κατά τη λήψη του βραβείου Turing το 1974 www.cs.bilkent.edu.tr/~canf/knuth1974.pdf 50

Κατά τη γνώμη του Knuth To summarize: We have seen that computer programming is an art, because it applies accumulated knowledge to the world, because it requires skill and ingenuity, and especially because it produces objects of beauty. A programmer who subconsciously views himself as an artist will enjoy what he does and will do it better. Therefore we can be glad that people who lecture at computer conferences speak about the state of the Art. Donald Knuth 51

Άλλη μια γνώμη σχετικά To put it in another way: it is my purpose to transmit the importance of good taste and style in programming, the specific elements of style presented serve only to illustrate what benefits can be derived from "style" in general. In this respect I feel akin to the teacher of composition at a conservatory: he does not teach his pupils how to compose a particular symphony, he must help his pupils to find their own style and must explain to them what is implied by this. It has been this analogy that made me talk about "The Art of Programming". E.W. Dijkstra 52

Edsger Dijkstra "One of the most influential members of computing science's founding generation, Dijkstra helped shape the new discipline from both an engineering and a theoretical perspective. Many of his papers are the source of new research areas. Several concepts and problems that are now standard in computer science were first identified by Dijkstra or bear names coined by him." Wikipedia Βραβείο Turing 1972. 53

E.W. Dijkstra, "EWD316: A Short Introduction to the Art of Programming", August 1971. https://www.cs.utexas.edu/users/ewd/transcriptions/ewd03xx/ew D316.html 54

Και μια τελευταία What we can say with some confidence is that these are the glory days of hacking. In most fields the great work is done early on. The paintings made between 1430 and 1500 are still unsurpassed. Shakespeare appeared just as professional theater was being born, and pushed the medium so far that every playwright since has had to live in his shadow.... Over and over we see the same pattern. A new medium appears, and people are so excited about it that they explore most of its possibilities in the first couple generations. Hacking seems to be in this phase now. Painting was not, in Leonardo's time, as cool as his work helped make it. How cool hacking turns out to be will depend on what we can do with this new medium. Paul Graham 55

Paul Graham "Paul Graham is an English computer scientist, venture capitalist, and essayist. He is known for his work on Lisp, for co founding Viaweb later renamed "Yahoo! Store", and for co founding the Y Combinator seed capital firm." Wikipedia. 56

Paul Graham, "Hackers and Painters", O'Reilly Media, 2004, 0 596 00662 4. Εδώ το διάσημο ομώνυμο essay: http://www.paulgraham.com/hp.html 57

Να θυμάστε ότι The best programmers are up to 28 times better than the worst programmers, according to "individual differences" research. Robert Glass 58