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

Σχετικά έγγραφα
Εργαστήριο Ανάπτυξης Εφαρμογών Βάσεων Δεδομένων. Εξάμηνο 7 ο

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

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

02 Αντικειμενοστρεφής Προγραμματισμός

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

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

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

Αρχές Τεχνολογίας Λογισμικού Εργαστήριο

ΓΡΑΜΜΙΚΟΣ & ΔΙΚΤΥΑΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Test Data Management in Practice

ΕΠΛ 012. JavaScripts

Scrum framework: Ρόλοι

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

About these lecture notes. Simply Typed λ-calculus. Types

Εισαγωγικό Φροντιστήριο

The Simply Typed Lambda Calculus

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

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

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

Formal Semantics. 1 Type Logic

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

Partial Trace and Partial Transpose

(C) 2010 Pearson Education, Inc. All rights reserved.

Assalamu `alaikum wr. wb.

ΓΛΩΣΣΙΚΗ ΤΕΧΝΟΛΟΓΙΑ. Python & NLTK: Εισαγωγή

Agile Προσέγγιση στη Διαχείριση Έργων Λογισμικού

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

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

Αντικειμενοστρεφής Προγραμματισμός

Γλωσσική Τεχνολογία. Εισαγωγικό Φροντιστήριο

Διαχείριση Περιεχομένου Παγκόσμιου Ιστού και Γλωσσικά Εργαλεία ΕΙΣΑΓΩΓΙΚΟ ΦΡΟΝΤΙΣΤΗΡΙΟ

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

8. Μέθοδοι (Methods)

Ασφάλεια σε χώρους αναψυχής: Ένα σύστημα από έξυπνα αντικείμενα

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

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

Dynamic types, Lambda calculus machines Section and Practice Problems Apr 21 22, 2016

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

Introduction to Object-Oriented Analysis and Design

Αντικειμενοστρεφής Προγραμματισμός

alpha Language age (3/5) alpha Language Φροντιστήριο Syntax Directed Translation and

Διδάσκων: Παναγιώτης Ανδρέου

ΟΡΓΑΝΙΣΜΟΣ ΒΙΟΜΗΧΑΝΙΚΗΣ ΙΔΙΟΚΤΗΣΙΑΣ

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

2 Composition. Invertible Mappings

IT & Networking DEVELOPING Essential Python 3. Κωδικός Σεμιναρίου / Code

Δίκτυα Επικοινωνιών ΙΙ: OSPF Configuration

05 Ανάλυση απαιτήσεων

Elements of Information Theory

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

derivation of the Laplacian from rectangular to spherical coordinates

Galatia SIL Keyboard Information

Γιάννης Σαμωνάκης. 1 ο ΣΧΟΛΕΙΟ ΚΩΔΙΚΑ «Βασικά Θέματα Προγραμματισμού στην Ανάπτυξη Δυναμικών Διαδικτυακών Εφαρμογών» (Part 4 - PHP)

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

Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 7 η Διάλεξη: Σύντομη εισαγωγή στην Java

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

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

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

(Διαφάνειες Νίκου Βιδάκη)

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

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

ΠΕΡΙΕΧΟΜΕΝΑ. Κεφάλαιο 1: Κεφάλαιο 2: Κεφάλαιο 3:

C.S. 430 Assignment 6, Sample Solutions

Δομές Δεδομένων - Εργαστήριο 2. Λίστες

03 Η ιδεατή μηχανή της Java

Εργαστήριο Java. Διδάσκουσα: Εργαστηριακοί Συνεργάτες:

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

An Inventory of Continuous Distributions

ΑΦAΙΡΕΤΙΚΟΣ (ή ΑΦΗΡΗΜΕΝΟΣ) ΤΥΠΟΣ ΔΕΔΟΜΕΝΩΝ (ΑΤΔ) (Abstract Data Type-ADT) - σύνολο δεδομένων (data, objects) - σύνολο πράξεων στα δεδομένα

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

Ανοικτά Δεδομένα. Η εμπειρία του OpenDataCloud

Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #2

Αντικειμενοστρεφής Προγραμματισμός

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

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

SCHOOL OF MATHEMATICAL SCIENCES G11LMA Linear Mathematics Examination Solutions

Laravel 5. Εισαγωγή στο Laravel PHP framework (5.1 LTS)

D Alembert s Solution to the Wave Equation

Section 8.3 Trigonometric Equations


Scrum Μέθοδος για τη Διαχείριση Έργων Λογισμικού

Scrum framework: Γεγονότα

Κατανεμημένα Συστήματα. Javascript LCR example

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

Εισαγωγή στον Αντικειμενοστρέφή Προγραμματισμό Διάλεξη #12

Ανάπτυξη διαδικτυακής διαδραστικής εκπαιδευτικής εφαρμογής σε λειτουργικό σύστημα Android

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008

Other Test Constructions: Likelihood Ratio & Bayes Tests

Μεθοδολογία Προγραμματισμού

DESIGN OF MACHINERY SOLUTION MANUAL h in h 4 0.

ω ω ω ω ω ω+2 ω ω+2 + ω ω ω ω+2 + ω ω+1 ω ω+2 2 ω ω ω ω ω ω ω ω+1 ω ω2 ω ω2 + ω ω ω2 + ω ω ω ω2 + ω ω+1 ω ω2 + ω ω+1 + ω ω ω ω2 + ω

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

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

Πρόβλημα 1: Αναζήτηση Ελάχιστης/Μέγιστης Τιμής

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

ΕΠΛ 233: Αντικειμενοστρεφής Προγραμματισμός (Object-oriented programming)

Αντικειμενοστρεφής Προγραμματισμός

SOLUTIONS TO MATH38181 EXTREME VALUES AND FINANCIAL RISK EXAM

Chapter 6: Systems of Linear Differential. be continuous functions on the interval

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

Transcript:

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

Πώς αναπτύσσουμε εφαρμογές γρήγορα; Χωρίς να "χάσουμε" σε άλλες παραμέτρους; 2

Δεν υπάρχει ασημένια σφαίρα Οι απαιτήσεις αλλάζουν, απαιτείται ταχεία ανάδραση από τους χρήστες και ταχεία αντίδραση από τους προγραμματιστές Ένας συνδυασμός εργαλείων και μεθοδολογιών που ταιριάζει στην ομάδα και το έργο 3

Περιεχόμενα Ανάπτυξη πρωτοτύπων Εργαλεία και μεθοδολογίες Δυναμικές γλώσσες προγραμματισμού Γλώσσες ειδικού σκοπού 4

Πρωτότυπα prototypes Ενδείκνυται η ανάπτυξη σε εφαρμογές που έχουν χρηστικές διεπαφές Human computer interaction User interfaces User experience Δεν ενδείκνυται σε εφαρμογές με απαιτητικούς υπολογισμούς ή εργασίες δέσμης 5

Είδη Οριζόντια πρωτότυπα Κάθετα πρωτότυπα 6

Διαδικασίες Throw away prototyping Evolutionary prototyping 7

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

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

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

Να είναι σαφής εξαρχής ο ρόλος του πρωτοτύπου στο έργο Προς όλους: χρήστες και προγραμματιστές Throw away vs. evolutionary 11

Μεθοδολογίες ταχείας ανάπτυξης λογισμικού RAD μεθολογία δεκαετία 1980 Ενοποιημένη unified process, δεκαετία 1990 Ευέλικτη μεθοδολογία agile methodology κ.ά 12

Ευέλικτη μεθοδολογία By PierreSelim Own work, CC BY SA 3.0, https://commons.wikimedia.org/w/index.php?curid=17336884 13

Scrum Μικρή ομάδα Δια λειτουργική Αυτο οργάνωση Στον ίδιο χώρο 14

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

Ρόλοι Product owner Έμφαση στη business πλευρά Development team Αυτο οργάνωση Scrum master Όχι manager 16

Έννοιες και διαδικασίες User story Product backlog Sprint iteration Sprint backlog 17

Sprint backlog Product backlog TODO Doing Done User Story A #1 #2 #3 Story B #4 #6 #5 Story C Story D Story E Story F 18

Εργαλεία Γενικά Αυτοματοποίηση χτισίματος είδαμε σε προηγούμενη διάλεξη Αυτοματοποίηση εκδόσεων/releases είδαμε σε προηγούμενη διάλεξη Αυτοματοποίηση εγκατάστασης Continuous integration & delivery, DevOps 19

Εργαλεία για ανάπτυξη Editors Debuggers CASE tools Computer aided software engineering Model driven development UML, ER diagrams GUI Builders IDEs 20

Επαναχρησιμοποίηση ανοικτού λογισμικού Apache, Eclipse, Google, κτλ. Artifact repositories Dependency management 21

Χρήση γλωσσών/τεχνολογιών ειδικού σκοπού Domain specific Languages Π.χ. SQL Τεχνολογίες ειδικού σκοπού Π.χ. Java Server Pages, Gradle, XSLT 22

Χρήση frameworks & toolkits Back end Spring, Hibernate, Grails, GORM, Restlet, Jersey Front end JS jquery, KnockoutJS, React, AngularJS Front end CSS Bootstrap, Foundation, SemanticUI 23

Χρήση δυναμικών γλωσσών Python Ruby Javascript Groovy 24

Δυναμικές γλώσσες προγραμματισμού Εκτέλεση ελέγχων Στατικές γλώσσες: κατά τη μεταγλώττιση Δυναμικές γλώσσες: κατά την εκτέλεση Επομένως, έμμεσα: Διαφορές και στην επίκληση μεθόδων method dispatch 25

Συστήματα τύπων στις γλώσσες προγραμματισμού a Statically typed language Ο τύπος μιας μεταβλητής θεσπίζεται κατά τη μεταγλώττιση και δε μπορεί να αλλάξει κατά την εκτέλεση. Ο τύπος κάθε έκφρασης αποτιμάται κατά τη μεταγλώττιση. Dynamically typed language Ο τύπος μιας μεταβλητής μπορεί να αλλάξει κατά την εκτέλεση, οι εκφράσεις αποτιμόνται κατά την εκτέλεση. 26

Συστήματα τύπων στις γλώσσες προγραμματισμού b Strongly typed language Η γλώσσα παρέχει εγγυήσεις για τη συμβατότητα των τιμών σε τύπους type conformance Weakly typed language Η γλώσσα δεν παρέχει εγγυήσεις ελλιπείς "αφαιρέσεις" από το σύστημα τύπων 27

Γιατί να επιλέξουμε μια δυναμική γλώσσα; O βασικός λόγος: Αύξηση παραγωγικότητας Πιο γρήγορη ανάπτυξη αν ξέρεις τι κάνεις 28

Το "αδύνατο σημείο" των δυναμικών γλωσσών IDE Support code analysis & completion Code Refactoring Τεχνική για την αναδιάρθρωση του κώδικα Βέλτιστα αποτελέσματα σε στατικές γλώσσες https://github.com/jhug/jhug General Resources/blob/master/presentations/2017/03 March/Refactoring In Practice.pdf 29

Javascript A dynamically typed, interpreted language that was intentionally designed to look like Java supporting Scheme like functions functional paradigm and Self like prototypes object oriented paradigm 30

Example https://github.com/monsur/jscache function Cache(maxSize, debug, storage) { this.maxsize_ = maxsize 1; this.debug_ = debug false; this.storage_ = storage new Cache.BasicCacheStorage(); this.fillfactor_ =.75; } this.stats_ = {}; this.stats_['hits'] = 0; this.stats_['misses'] = 0; 31

JavaScript is the first lambda language to go mainstream. Deep down, JavaScript has more in common with Lisp and Scheme than with Java. It is Lisp in C s clothing. This makes JavaScript a remarkably powerful language. Douglas Crockford 32

Λίστα αναγνωσμάτων 15. Douglas Crockford, "Javascript: The good parts", O'Reilly Media Yahoo Press, 978 0596517748 33

Τα πρώτα είκοσι χρόνια είναι δύσκολα Προσοχή this global variables Scope Hoisting == typeof Arrays 34

Για αρχάριους EcmaScript 6 ES6 ή ES2015 TypeScript 35

Lambdas, Anonymous functions, Closures 36

Code as data Lambdas: function valued expressions Functions as first class objects They can be assigned to variables They can be passed as arguments Higher order functions 37

Function statements, function expressions and anonymous functions function adder(x, y) { return x + y; } // a function statement var adderfunction = adder; //a function assigned to a var foo.onclick = function(event) { //deal with the event } //an anonymous function directly assigned to a var array.foreach(function(element) { //do something with the element }); //an anonymous function directly passed as an argument 38

Closures A closure is the combination of a function and the lexical environment within which that function was declared. This environment consists of any local variables that were in scope at the time that the closure was created. A closure is a persistent local variable scope, holding on to local variables even after the code execution has moved out of the function block. The scope and all its local variables are tied to the function, and will persist as long as that function persists. Closures exist only at runtime. Help accomplish OO encapsulation and information hiding. 39

Example var getterof = function(object) { var counter = 0; return { get: function() { counter = counter + 1; //free variable return object; } count: function() { return counter; //free variable } } } var o = {... }; //an object var getter = getterof(o); getter.get(); //returns the original object getter.count(); //1 40

Another example var adder = function(a, b) { return function(b) { return a + b; } } var addto4 = adder(4); var addto5 = adder(5); addto4(3); //7 addto5(3); //8 41

ES6 Features Modules with import and export Constants with const Block scoped variables with let Arrow functions with => Classes with class and extends and super String interporation with `${var}` 42

ES6 Features Default parameter values, rest & spread operators Desctructuring of objects and arrays Promises Enhanced object literals New collections Set, Map, WeakSet, WeakMap 43

ES6 Features Generators & iterators Various other goodies, such as Symbols Metaprogramming Proxies & Reflection Math, String, Number enhancements Binary and octal literals and more... 44

Example https://github.com/saikos/netbeanses6support 45

Groovy Dynamic with optional typing With static compilation and static type checking capabilities Multi paradigm OO, Functional Smooth integration with Java language and runtime 46

Για περισσότερα groovy lang.org https://www.slideshare.net/kostassaidis/an introduction togroovy for java developers https://www.slideshare.net/kostassaidis/apache groovy thelanguage and the ecosystem 47