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

Σχετικά έγγραφα
03 Τεχνική διαχείριση έργων λογισμικού

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

07 Διαχείριση έργων λογισμικού ΙΙ

09 Διοίκηση έργων λογισμικού

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

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

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

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

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

Εργαστήριο 2. Εισαγωγή στο Git Versioning System

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #1 ο : Εισαγωγή στο Περιβάλλον Ανάπτυξης (IDE)

Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #1 ο : Εισαγωγή στο Περιβάλλον Ανάπτυξης (IDE)

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

Βρίγκας Μιχαήλ Α.Μ.744 Μπράχος Χ. Ευάγγελος Α.Μ.795

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

Πανεπιστήμιο Κρήτης, Τμήμα Επιστήμης Υπολογιστών ΗΥ463 Συστήματα Ανάκτησης Πληροφοριών Χειμερινό Εξάμηνο

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

Εισαγωγή στη γλώσσα προγραμματισμού JAVA. Δομές Δεδομένων Διδάσκων: Π.Α. Μήτκας Τομέας Ηλεκτρονικής και Υπολογιστών

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

Δημιουργία μιας εφαρμογής Java με το NetBeans

Τι χρειάζεται ένας φοιτητής για τη σωστή παρακολούθηση και συμμετοχή στο μαθημα;

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

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

Οδηγίες Εγκατάστασης και χρήσης προγραμμάτων για την γλώσσα C

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

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

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

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

Περιγραφή του Apache Ant

Ελληνικό Ανοικτό Πανεπιστήµιο. Η Υλοποίηση στην Ενοποιηµένη ιαδικασία. ρ. Πάνος Φιτσιλής

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

ΕΠΛ233 Βιβλιοθήκες και Προσδιοριστές Πρόσβασης στην JAVA

ΚΕΦΑΛΑΙΟ 1. Εισαγωγή στην Python. 1.1 Εισαγωγή

Εισαγωγή. Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 8 & 9 18/10/07

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

ΑΣΚΗΣΗ 1: TO ΠΕΡΙΒΑΛΛΟΝ ΕΡΓΑΣΙΑΣ DEV-C++

Κεφάλαιο 7: Τεχνολογία Λογισμικού

Το ελεύθερο λογισμικό στη ζωή μας

Εργασία για το Facility Game Μάθημα: Δομές Δεδομένων Σωτήρης Γυφτόπουλος

Θέματα Ατομικής Διπλωματικής Εργασίας Ακαδημαϊκό Έτος 2017/2018. Γεωργία Καπιτσάκη (Επίκουρη Καθηγήτρια)

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

Subversion. Τριγάζη Ελισάβετ. Επιβλέπων: Μηνάς Δασυγένης

11/28/2016 Απόδοση Συστημάτων, Remote Jmeter και Dacappo

Εισαγωγή στη γλώσσα προγραμματισμού C++

Εργαστήριο 1-1 η Άσκηση - Ανάλυση

1 η ΕΝΟΤΗΤΑ ΕΙΣΑΓΩΓΗ (Προγραμματισμός & MATLAB)

VERSION 1.0 ΝΟΕΜΒΡΙΟΣ, 2016 ΤΕΧΝΟΛΟΓΙΕΣ ΥΠΟΛΟΓΙΣΤΙΚΟΥ ΝΕΦΟΥΣ ΤΟ ΠΕΡΙΒΑΛΛΟΝ ΠΡΟΣΟΜΟΙΩΣΗΣ CLOUDSIM ΕΠΙΜΕΛΕΙΑ: ΒΑΣΙΛΕΙΟΣ ΤΣΑΚΑΝΙΚΑΣ

Συμβολική γλώσσα Εκπαιδευτικού Υπολογιστή - Λογισμικό Υπολογιστών

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr

Εισαγωγή στον Προγραμματισμό

make Προγραμματισμός II 1

Μεταγλώττιση και σύνδεση πολλαπλών αρχείων κώδικα. Προγραμματισμός II 1

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

Company LOGO. Nazaret Kazarian. 1

ΕΡΓΑΣΙΑ: Ετήσιας Συντήρησης και Υποστήριξης Λειτουργίας Δημοτικής Διαδικτυακής Πύλης

CE121 Προγραµµατισµός 2. Εισαγωγή σε Makefiles. CE121 -

Ενότητα 2. Πηγές Λογισμικού. Πληροφοριακά Συστήματα Διοίκησης ΙI Νίκος Καρακαπιλίδης 2-1

Εξοικείωση με τα Εργαλεία για το μάθημα Τεχνολογίες Εφαρμογών Διαδικτύου. Χειμερινό

ΟΔΗΓΙΕΣ ΕΓΚΑΤΑΣΤΑΣΗΣ Α2Α

ΑΠΟΘΕΤΗΡΙΟ ΕΦΑΡΜΟΓΩΝ ΥΠΠΕΘ ΚΑΙ ΕΠΟΠΤΕΥΟΜΕΝΩΝ ΦΟΡΕΩΝ (git.minedu.gov.gr)

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

Εφαρµογές WebGIS Open Source

Κατανεμημένα Συστήματα

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

Git - Version Control System

Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #4 ο : Αποσφαλμάτωση (debugging), μετατροπές

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

Διάλεξη 17: Έλεγχος Λογισμικού

Αναπτύσσοντας developer tools στην Αpple. Αργύριος Κυρτζίδης Προπτυχιακός φοιτητής ΗΜΜΥ

FORTRAN & Αντικειμενοστραφής Προγραμματισμός ΣΝΜΜ 2016

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

LGAF Project LGAF Team Roles ΠΡΟΣΚΛΗΣΗ ΕΚΔΗΛΩΣΗΣ ΕΝΔΙΑΦΕΡΟΝΤΟΣ ΓΙΑ ΣΥΝΕΡΓΑΤΕΣ

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

Βασίλειος Κοντογιάννης ΠΕ19

Android Studio για Linux

ΠΡΟΑΙΡΕΤΙΚΑ ΣΕΜΙΝΑΡΙΑ Πληροφορική και Επιστήμη Ηλεκτρονικών Υπολογιστών

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

SocialSkip Service v2.0

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

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

Digital Academy. Εισαγωγή στην ανάπτυξη Android Εφαρμογών

Ατομική Διπλωματική Εργασία ΣΧΕΔΙΑΣΜΟΣ ΚΑΙ ΥΛΟΠΟΙΗΣΗ MARKETPLACE ΛΟΓΙΣΜΙΚΟΥ ΒΑΣΙΣΜΕΝΟ ΣΤΟ REPOSITORY SONATYPE NEXUS ΓΙΑ ΤΟ CAMF. Αθανάσιος Τρύφωνος

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #4 ο : Αποσφαλμάτωση (debugging), μετατροπές

Δομημένος Προγραμματισμός

Introduction to Java. Getting started, Java Basics. Prepared by Costantinos Costa for EPL 233. ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 1

Microsoft Visual Studio Γιώργος Καµαρινός Developer Programs Marketing Manager Microsoft Hellas

Εισαγωγή στην Πληροφορική

FORTRAN & Αντικειμενοστραφής Προγραμματισμός ΣΝΜΜ 2016

Application... 4 Java Development Kit... 4 Android SDK... 5 Android Studio... 6 Genymotion... 8 ια ο Web Panel... 10

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

TaxiCounter Android App. Περδίκης Ανδρέας ME10069

Εισαγωγή ΕΙΣΑΓΩΓΗ. Γεώργιος Παπαϊωάννου ( )

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

ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ ΔΙΟΙΚΗΣΗΣ MANAGEMENT INFORMATION SYSTEMS (M.I.S.)

Bundles & Modules MINIMUM ΧΡΗΣΤΕΣ:5

ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗ ΕΠΙΧΕΙΡΗΣΕΩΝ ΕΠΙΠΕΔΟ ΣΠΟΥΔΩΝ Προπτυχιακό ΚΩΔΙΚΟΣ ΜΑΘΗΜΑΤΟΣ GD2520

Διάλεξη 1: Αντικειμενοστρεφής Προγραμματισμός -Εισαγωγή. Διδάσκων: Παναγιώτης Ανδρέου

Νεογεωγραφία και Χαρτογραφική Διαδικτυακή Απεικόνιση. Η χρήση Ελεύθερων Γεωγραφικών Δεδομένων και Λογισμικού Ανοιχτού Κώδικα σε Φορητές Συσκευές.

Transcript:

Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο Πολυτεχνείο Τεχνολογία Λογισμικού 7ο / 9ο Εξάμηνο 2018 19 Ν.Παπασπύρου, Αν.Καθ. ΣΗΜΜΥ, nickie@softlab.ntua,gr Β.Βεσκούκης, Αν.Καθ. ΣΑΤΜ, v.vescoukis@cs.ntua,gr Κ.Σαΐδης, ΠΔ 407, saiko@softlab.ntua.gr

Περιεχόμενα Τεχνική διαχείριση έργων λογισμικού Εργαλεία Διαχείριση συστατικών λογισμικού Software artifacts 2

Το ζητούμενο 3

Πώς ο επικεφαλής μηχανικός Ο οποίος συμμετέχει σε μια ομάδα ανάπτυξης Διαχειρίζεται τεχνικά τη διαδικασία ανάπτυξης Διασφαλίζοντας την ποιότητα του τελικού αποτελέσματος 4

Ανεξάρτητα από Τους ρόλους των ανθρώπων στην ομάδα Τη μεθοδολογία ανάπτυξης Την αρχιτεκτονική του υπό ανάπτυξη λογισμικού 5

Τεχνική διαχείριση έργου λογισμικού γενικά Διαχείριση εκδόσεων κώδικα version control Αυτόματο "χτίσιμο" λογισμικού build automation Στατική ανάλυση κώδικα και αυτόματος εντοπισμός σφαλμάτων bug detection Eκτέλεση σεναρίων ελέγχου tests Συνεχής ολοκλήρωση continuous integration Διαχείριση συστατικών λογισμικού και των εκδόσεών τους Συναφή με το λεγόμενο "software configuration management" 6

Καθημερινότητα ομάδας ανάπτυξης Λήψη και ενσωμάτωση των αλλαγών που έγιναν στον κώδικα από τα υπόλοιπα μέλη της ομάδας Version control tool Επανάληψη: Ανάπτυξη νέου κώδικα / διόρθωση υπάρχοντος Editor, IDE Μεταγλώττιση κώδικα, "πακετάρισμα" κι εκτέλεση τοπικών σεναρίων ελέγχου Build automation tool Διαμοιρασμός των αλλαγών / προσθηκών που κάναμε στον κώδικα στα υπόλοιπα μέλη της ομάδας Version control tool 7

Επίσης Συνεχής ολοκλήρωση CI : ένας server που εκτελεί αυτόματα και μηχανικά όλα τα σενάρια ελέγχου και τις δοκιμές μετά από κάθε αλλαγή στον πηγαίο κώδικα commit Εγκατάσταση λογισμικού σε ενδιάμεσο περιβάλλον Staging deployment Εγκατάσταση λογισμικού στο παραγωγικό περιβάλλον Production deployment Δημοσίευση του λογισμικού σε κάποια αποθήκη artifact repository 8

Πριν ξεκινήσει το όποιο έργο Σύναψη κοινής "τεχνικής κουλτούρας" Κοινές συμβάσεις conventions Για τον κώδικα, τη μορφοποίηση, την οματοδοσία, την τοποθεσία, κλπ. Κοινά εργαλεία tools & διαδικασίες procedures Κοινά αποδεκτός και σαφώς ορισμένος ο επιμερισμός ευθύνης ownership 9

Επιμερισμός ευθύνης ownership Ποιος είναι αρμόδιος για ποιο κομμάτι κώδικα / λειτουργικότητας / χαρακτηριστικών ή για ποιο βήμα; Αποφυγή "ορφανού" κώδικα / βήματος κανείς δεν ξέρει πως δουλεύει το component Χ ή πώς να εκτελέσει το βήμα Χ Αποφυγή "αποκλεισμένου" κώδικα / βήματος μόνο ο Χ ξέρει το Ψ Τουλάχιστον δύο πρόσωπα με την ίδια αρμοδιότητα σε κάποιο κομμάτι 10

Bus factor Κι αν τους χτυπήσει λεωφορείο; The "bus factor" is the minimum number of team members that have to suddenly disappear from a project before the project stalls due to lack of knowledgeable or competent personnel. Wikipedia 11

Συμβάσεις conventions Παραδείγματα 12

Συμβάσεις για τη δομή του κώδικα Τρόπος συγγραφής κώδικα Ονόματα κλάσεων, μεθόδων, μεταβλητών Στοίχιση κώδικα Παράδειγμα: Java coding conventions NameOfClass nameofmethod, nameofvariable και nameoffield NAME_OF_CONSTANT 13

Συμβάσεις για τη δομή των αρχείων Διάρθρωση και τοποθέτηση των αρχείων Source files, resources, configuration files, libraries, κτλ. Στο JVM τα Maven directory structure conventions αποτελούν το de facto standard src/main/java src/main/resources src/test/java src/test/resources build/classes 14

Java Packages package x.y.z; class Foo {... } Πηγαίος κώδικας src/main/java/x/y/z/foo.java Class files build/classes/x/y/z/foo.class 15

Test Packages package x.y.z; class FooTest { //the tests of class Foo... } Πηγαίος κώδικας src/test/java/x/y/z/foo.java Class files build/classes/x/y/z/foo.class 16

Εργαλεία Version control Integrated Development Environments IDEs Building Testing Bug detection Continuous integration Continuous deployment and delivery DevOps Containers monitoring alerting 17

Version control Ζητούμενα Διαχείριση του source code base της "βάσης" του κώδικα Καταγραφή των αλλαγών ιστορικό, ποιος έκανε τι και πότε Συνεργατική ανάπτυξη Τήρηση πολλών παράλληλων καταστάσεων του κώδικα ταυτόχρονα Ανάκτηση συγκεκριμένης παρελθούσας κατάστασης κ.ά. 18

Στο μάθημα Εργαλείο git φροντιστήριο σε λίγο 19

Software build automation Ζητούμενα Αυτοματοποίηση της διαδικασίας "χτισίματος" του λογισμικού Πώς από το source code base παράγεται το software artifact.jar,.exe,.rpm,.deb, κλπ 20

Ο βασικός "τεχνικός" στόχος κάθε έργου λογισμικού είναι η παραγωγή ενός ή περισσότερων software artifacts 21

Software build automation Αυτόματη διαχείριση εξαρτήσεων dependencies Μεταγλώττιση κώδικα compilation Εκτέλεση σεναρίων ελέγχου testing Συνεχής ολοκλήρωση του λογισμικού Continuous integration Παραγωγή των software artifacts assemble Απόθεση/δημοσίευσή τους σε κάποια αποθήκη software release / publication 22

Εργαλεία build automation 23

make Η αρχή όλων Stuard Feldman, Bell Labs, 1976 2003 ACM Software System Award Βασικές έννοιες Targets, prerequisites, commands, macros Topological sorting 24

Topological sorting Γραμμική διάταξη των κόμβων ενός κατευθυνόμενου γράφου, στην οποία το u προηγείται του v αν υπάρχει κατευθυνόμενη ακμή u > v. Ο γράφος δεν πρέπει να έχει κύκλους ακυκλικός Directed Acyclic Graph DAG. Εκτέλεση των build targets. 25

Εργαλεία στο Java οικοσύστημα Apache Ant Apache Ivy Apache Maven Gradle έμφαση στο μάθημα 26

Gradle https://www.slideshare.net/kostassaidis/an introduction to gradlefor java developers Θα σας δοθεί έτοιμο για χρήση Gradle project ως παράδειγμα 27

Διαχείριση συστατικών λογισμικού 28

Software artifacts Αυτοτελή αρχεία έτοιμα προς εκτέλεση ή Μερικώς αυτοτελή αρχεία προς ενσωμάτωση σε άλλες εφαρμογές βιβλιοθήκες Δομή/περιεχόμενα ανάλογα με τη γλώσσα προγραμματισμού, το λειτουργικό σύστημα, την εφαρμογή, κτλ. 29

Στη Java κοινότητα Software artifact = Jar συνήθως ή APK android Jar αρχείο = Zip αρχείο Περιέχει.class αρχεία JVM κλάσεις και ενδεχομένωςmetadata manifests, resources images, αρχεία ρυθμίσεων κ.ο.κ. APK αρχείο = Zip αρχείο Περιέχει.dex αρχεία και metadata manifests, resources images κ.λπ. 30

Στην πράξη Κάθε ξεχωριστή προγραμματιστική/τεχνολογική κοινότητα συνήθως: έχει ξεχωριστούς μορφότυπους artifacts έχει ξεχωριστά εργαλεία διαχείρισής τους έχει όπως λέγεται ξεχωριστό technology stack 31

Ας το δούμε αντίστροφα Τι είναι ένα software artifact; Μπορεί να είναι οτιδήποτε: Application, Library, Component, Server, Client Μπορεί να χρησιμοποιείται για ένα μόνο σκοπό π.χ. standalone app ή να είναι επαναχρησιμοποιήσιμο για πολλούς σκοπούς π.χ. library Ας πούμε ότι, γενικά, είναι ένα συστατικό λογισμικού 32

Συστατικά λογισμικού Επαναχρησιμοποιήσιμα τμήματα λογισμικού που διατίθενται ως ξεχωριστά software artifacts Αποθήκες συστατικών λογισμικού software artifact repositories Διαχείριση εκδόσεων συστατικών software releases, artifact versioning 33

Εξαρτήσεις λογισμικού software dependencies Compile time dependencies "static" linking : οι εξαρτήσεις του λογισμικού από συστατικά που πρέπει να είναι διαθέσιμα κατά τη μεταγλώττιση Runtime dependencies "dynamic" linking : οι εξαρτήσεις του λογισμικού από συστατικά που πρέπει να είναι διαθέσιμα κατά το χρόνο εκτέλεσης 34

Μεταβατικές εξαρτήσεις transitive dependencies Οι εξαρτήσεις των εξαρτήσεων τα συστατικά δεν είναι πάντα αυτοτελή, μπορεί να εξαρτώνται από άλλα συστατικά / artifacts για τη λειτουργία τους Project > Lib1, Lib2 Lib1 > Lib11 Lib2 > Lib21, Lib22 Lib21 > Lib211 35

Αποθήκες συστατικών λογισμικού software artifact repositories Tήρηση των software artifacts files Σε πολλές εκδόσεις Τήρηση μεταδεδομένων για τις αλληλο εξαρτήσεις τους Δημόσιες ή ιδιωτικές αποθήκες 36

Παραδείγματα δημόσιων αποθηκών Java https://search.maven.org/ https://bintray.com/bintray/jcenter https://plugins.gradle.org/ 37

Ιδιωτικές αποθήκες Για μεγάλες ομάδες Για σύνθετο λογισμικό Φιλοξενία της αποθήκης στο εσωτερικό δίκτυο του οργανισμού 38

Δημοσίευση συστατικού Ανέβασμα του συστατικού σε κάποια αποθήκη artifact publication Αυτοματοποιημένη διαδικασία μέσω του build εργαλείου Παράδειγμα gradle publish η mvn release 39

Για παράδειγμα Εκτέλεση όλων των προαπαιτούμενων για την παραγωγή του jar αρχείου download dependencies, compile code, run tests, assemble files Παραγωγή του jar αρχείου με κάποια σύμβαση για το όνομα και την έκδοσή του π.χ. project name 1.2.jar Ανέβασμα του αρχείου στην αποθήκη σε κάποια συγκεκριμένη κατά σύμβαση θέση π.χ. /gr/ntua/softeng17b/foo/1.2/project name 1.2.jar μαζί με πληροφορίες/μεταδεδομένα για τις εξαρτήσεις του π.χ. maven pom, ivy file 40

Διαχείριση εκδόσεων λογισμικού Versioning Releasing 41

Τυποποίηση εκδόσεων λογισμικού Δεν υπάρχει ομοιομορφία και συνέπεια στην ανάθεση εκδόσεων Διαφορετικά σχήματα Με βάση την ημερομηνία, με βάση κάποια σύμβαση, με βάση εμπορικούς λόγους, κλπ. 42

Παράδειγμα [major].[minor].[revision].[build] major: Σημαντική αλλαγή στο λογισμικό major release minor: Προσθήκη ή βελτίωση στο λογισμικό minor release revision: Patch, διόρθωση bug, επίλυση προβλήματος ασφαλείας, κτλ. maintenance release build: Αυτόματη αρίθμηση του build π.χ. αύξων αριθμός, commit id, κτλ. internal release 43

Semantic Versioning [major].[minor].[patch] major: Breaking change minor: Add new backwards compatible functionality patch: Apply backwards compatible bug fixes Βασική έννοια: Public API http://semver.org/ 44

Επίτευξη του release Επιμέρους στάδια και ενδιάμεσες εκδόσεις Pre release internal release Early Access EA Alpha Beta Release candidate Release General Availability, GA Θα επανέλθουμε στη διάλεξη για testing. 45

Σε κάθε βήμα του release Pre, ΕΑ, GA Publish the artifact Tag the commit with the published version number Update the version file Commit the change Push it Αυτοματοποίηση μέσω του build εργαλείου 46