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

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

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

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

Test Data Management in Practice

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

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

Assalamu `alaikum wr. wb.

2 Composition. Invertible Mappings

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

Finite Field Problems: Solutions

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

EE512: Error Control Coding

Code Breaker. TEACHER s NOTES

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

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

Homework 3 Solutions

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

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

C.S. 430 Assignment 6, Sample Solutions

CHAPTER 25 SOLVING EQUATIONS BY ITERATIVE METHODS

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

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

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

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

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

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

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

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

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

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

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

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

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

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

The challenges of non-stable predicates

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

The Simply Typed Lambda Calculus

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

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

TMA4115 Matematikk 3

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

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

ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΣΧΟΛΗ ΜΗΧΑΝΙΚΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ. Πτυχιακή εργασία

5.4 The Poisson Distribution.

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

Study of In-vehicle Sound Field Creation by Simultaneous Equation Method

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

Κατανοώντας και στηρίζοντας τα παιδιά που πενθούν στο σχολικό πλαίσιο

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

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

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

Χρειάζεται να φέρω μαζί μου τα πρωτότυπα έγγραφα ή τα αντίγραφα; Asking if you need to provide the original documents or copies Ποια είναι τα κριτήρια

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

derivation of the Laplacian from rectangular to spherical coordinates

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

6.1. Dirac Equation. Hamiltonian. Dirac Eq.

Section 8.3 Trigonometric Equations

Strain gauge and rosettes

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

ΜΟΝΤΕΛΑ ΛΗΨΗΣ ΑΠΟΦΑΣΕΩΝ

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

Concrete Mathematics Exercises from 30 September 2016

On a four-dimensional hyperbolic manifold with finite volume

Démographie spatiale/spatial Demography

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

14 Πρότυπα Σχεδίασης συνέχεια

ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΣΧΟΛΗ ΓΕΩΤΕΧΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΚΑΙ ΔΙΑΧΕΙΡΙΣΗΣ ΠΕΡΙΒΑΛΛΟΝΤΟΣ. Πτυχιακή εργασία

Διαχείριση Έργων Πληροφορικής

DESIGN OF MACHINERY SOLUTION MANUAL h in h 4 0.

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

ΣΤΥΛΙΑΝΟΥ ΣΟΦΙΑ

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

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

Instruction Execution Times


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

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

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

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

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

Other Test Constructions: Likelihood Ratio & Bayes Tests

Scrum framework: Ρόλοι

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

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

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

02α Διαχείριση Έργων Λογισμικού

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

ΜΕΤΑΠΤΥΧΙΑΚΗ ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ «ΘΕΜΑ»

IPSJ SIG Technical Report Vol.2014-CE-127 No /12/6 CS Activity 1,a) CS Computer Science Activity Activity Actvity Activity Dining Eight-He

Section 1: Listening and responding. Presenter: Niki Farfara MGTAV VCE Seminar 7 August 2016

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ - ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 133: ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΕΡΓΑΣΤΗΡΙΟ 3 Javadoc Tutorial

(Biomass utilization for electric energy production)

«ΨΥΧΙΚΗ ΥΓΕΙΑ ΚΑΙ ΣΕΞΟΥΑΛΙΚΗ» ΠΑΝΕΥΡΩΠΑΪΚΗ ΕΡΕΥΝΑ ΤΗΣ GAMIAN- EUROPE

Το πλαίσιο για την ανάθεση δημοσίων συμβάσεων έργων agile IT

ΣΥΓΧΡΟΝΕΣ ΤΑΣΕΙΣ ΣΤΗΝ ΕΚΤΙΜΗΣΗ ΚΑΙ ΧΑΡΤΟΓΡΑΦΗΣΗ ΤΩΝ ΚΙΝΔΥΝΩΝ

14 Lesson 2: The Omega Verb - Present Tense

Statistical Inference I Locally most powerful tests

Πτυχιακή Εργασία Η ΠΟΙΟΤΗΤΑ ΖΩΗΣ ΤΩΝ ΑΣΘΕΝΩΝ ΜΕ ΣΤΗΘΑΓΧΗ

Transcript:

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

Τεχνολογία Λογισμικού Γιατί μας απασχολεί η τεχνολογία λογισμικού; Γιατί το λογισμικό, αν και κατέχει, πλέον, σημαίνοντα ρόλο σε όλες σχεδόν τις δραστηριότητες της ανθρωπότητας Είναι πολύ δύσκολο να αναπτυχθεί "σωστά" Φθηνά, γρήγορα, έγκαιρα, χωρίς λάθη Ικανοποιώντας πλήρως τους χρήστες του Χωρίς προβλήματα στη λειτουργία του 2

Most people find the concept of programming obvious, but the doing impossible. Alan Perlis 3

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" Wikipedia. Πότε δόθηκε το πρώτο βραβείο Turing; Το 1966! 4

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

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

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

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

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. 9

Λίστα αναγνωσμάτων 2. N. Wirth, "A Plea for Lean Software", IEEE Computer, Vol 28, Issue 2, Feb. 1995, p. 64 68. 10

Σφαίρα από ασήμι 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 11

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. 12

Λίστα αναγνωσμάτων 3. 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/nosilver Bullet.html 4. Fred P. Brooks, "The Mythical Man Month", Addison Wesley, 1975, 0 201 00650 2. 13

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

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

Λίστα αναγνωσμάτων 5. Winston. W. Royce, "Managing the development of large software systems: concepts and techniques", Proceedings of the 9th International Conferense of Software Engineering, 1987, p. 328 338. Η πρώτη έκδοση του άρθρου 1970. www scf.usc.edu/~csci201/lectures/lecture11/royce1970.pdf 16

Winston W. Royce "Winston Walker Royce August 15, 1929 June 7, 1995 was an American computer scientist, director at Lockheed Software Technology Center in Austin, Texas. He was a pioneer in the field of software development, known for his 1970 paper from which the Waterfall model for software development was mistakenly drawn." Wikipedia. 17

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

Ανάπτυξη μεγάλου και σύνθετου λογισμικού 19

Μοντέλο καταρράκτη W.W. Royce, wwwscf.usc.edu/~csci201/lectures/lecture11/royce1970.pdf 20

Προβληματικό The required design changes are likely to be so disruptive that the software requirements upon which the design is based and which provides the rationale for everything are violated. Either the requirements must be modified, or a substantial change in the design is required. In effect the development process has returned to the origin and one can expect up to a 100 percent overrun in schedule and/or costs. Winston W. Royce 21

"It is easier to change the specification to fit the program than vice versa." Alan Perlis 22

Επαληπτική διαδικασία W.W. Royce, wwwscf.usc.edu/~csci201/lectures/lecture11/royce1970.pdf 23

Αυξητική διαδικασία RahulT, CC BY SA 3.0, https://commons.wikimedia.org/w/index.php?curid=27752117 24

Ευέλικτη διαδικασία Συνδυασμός επαναληπτικής και αυξητικής Συνεχή συνεργασία με πελάτη Ταχεία παράδοση Συνεχής βελτίωση Γρήγορη αντίδραση στις αλλαγές Manifesto for Agile Software Development 25

Σχεδιασμός Λογισμικού Βασικές αρχές: Τμηματοποίηση modularization Απόκρυψη πληροφορίας information hiding Διαχωρισμός ενδιαφερόντων separation of concerns Επαναχρησιμοποίηση reuse 26

We have tried to demonstrate by these examples that it is almost always incorrect to begin the decomposition of a system into modules on the basis of a flowchart. We propose instead that one begins with a list of difficult design decisions or design decisions which are likely to change. Each module is then designed to hide such a decision from the others. Since, in most cases, design decisions transcend time of execution, modules will not correspond to steps in the processing. To achieve an efficient implementation we must abandon the assumption that a module is one or more subroutines, and instead allow subroutines and programs to be assembled collections of code from various modules. David Parnas 27

David Parnas "David Lorge Parnas born February 10, 1941 is a Canadian early pioneer of software engineering, who developed the concept of information hiding in modular programming, which is an important element of object oriented programming today." Wikipedia. 28

Λίστα αναγνωσμάτων 6. David L. Parnas, "On the criteria to be used in decomposing systems into modules", Proceedings of the 9th International Conferense of Software Engineering, 1987, p. 328 338. 29

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

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

Σχεδιασμός Λογισμικού α Καταγραφή και ανάλυση απαιτήσεων συστήματος και λογισμικού Αντικειμονοστρεφής σχεδιασμός συστημάτων Συστατικά λογισμικού Γλώσσα μοντελοποίησης UML Διαγράμματα κλάσεων Class diagrams Διαγράμματα ακολουθιών Sequence diagrams Διαγράμματα δραστηριοτήτων Activity diagrams Διαγράμματα σεναρίων χρήσης Use case diagrams 32

Σχεδιασμός Λογισμικού β Πρότυπα Σχεδίασης Design Patterns Κατασκευαστικά πρότυπα Creational patterns Δομικά πρότυπα Structural patterns Πρότυπα συμπεριφοράς Behavioral patterns Παραδείγματα χρήσης των προτύπων από επιτυχημένα έργα ανοικτού λογισμικού Σύνταξη προδιαγραφών και παραδοτέων 33

Λίστα αναγνωσμάτων 7. Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides, "Design Patterns: Elements of Reusable Object Oriented Software", Addison Wesley, 1994, 0 201 63361 2. 34

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

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

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

Διοίκηση και Διαχείριση Έργου β Τεχνικές και Εργαλεία Διοίκησης, Παρακολούθησης και Ελέγχου της Ανάπτυξης Λογισμικού Έλεγχος εκδόσεων Version Control. Έμφαση στο git. Αυτοματισμός διαδικασίας «χτισίματος» λογισμικού Build automation. Έμφαση στο Gradle. Αυτόματος εντοπισμός σφαλμάτων bug detection. Αυτόματη εκτέλεση σεναρίων ελέγχου. Unit testing, Regression testing, Functional testing, Integration testing, test coverage. Συνεχής ολοκλήρωση Continuous integration 38

Διοίκηση και Διαχείριση Έργου γ Διαχείριση συστατικών του λογισμικού Διαχείριση συστατικών λογισμικού και των αλληλεξαρτήσεών τους software components and dependencies. Αποθήκες συστατικών λογισμικού Software artifact repositories. Διαχείριση εκδόσεων συστατικών software releases. 39

Προηγμένα θέματα τεχνολογίας λογισμικού Τυπικές μέθοδοι επαλήθευσης και επικύρωσης της ορθότητας του λογισμικού. Μετα προγραμματισμός Meta programming. 40

Κάποιες σκέψεις για περαιτέρω προβληματισμό 41

Καλώς ήλθατε στο λάκκο! The tar pit of software engineering will continue to be sticky for a long time to come. One can expect the human race to continue attempting systems just within or just beyond our reach; and software systems are perhaps the most intricate and complex of man's handiworks. The management of this complex craft will demand our best use of new languages and systems, our best adaptation of proven engineering management methods, liberal doses of common sense, and a God given humility to recognize our fallibility and limitations. Fred Brooks 42

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

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

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 45

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 46

Λίστα αναγνωσμάτων 8. Robert L. Glass, "Facts and Fallacies of Software Engineering", Addison Wesley, 2002, 0 321 11742 5. 47

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

Simplicity does not precede complexity, but follows it. Alan Perlis 49

Ανάπτυξη λογισμικού: τέχνη ή επιστήμη; 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 50

Donald Knuth Τι εννοείτε ποιος είναι ο Knuth; 51

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

Κατά τη γνώμη του 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 53

Everyone can be taught to sculpt: Michelangelo would have had to be taught not to. So it is with great programmers. Alan Perlis 54

Άλλη μια γνώμη σχετικά 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 55

Edsger W.Dijkstra Τι εννοείτε ποιος είναι ο Dijsktra; 56

Λίστα αναγνωσμάτων 10. E.W. Dijkstra, "EWD316: A Short Introduction to the Art of Programming", August 1971. https://www.cs.utexas.edu/users/ewd/transcriptions/ewd03xx /EWD316.html 57

Και μια τελευταία 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 58

Paul Graham "Paul Graham born 13 November 1964 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. 59

Λίστα αναγνωσμάτων 11. Paul Graham, "Hackers and Painters", O'Reilly Media, 2004, 0 596 00662 4. Το διάσημο ομώνυμο essay: http://www.paulgraham.com/hp.html 60

Fools ignore complexity. Pragmatists suffer it. Some can avoid it. Geniuses remove it. Alan Perlis 61

The best programmers are up to 28 times better than the worst programmers, according to "individual differences" research. Given that their pay is never commensurate, they are the biggest bargains in the software field. Robert Glass 62