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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Git - Version Control System

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

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

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

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

SocialSkip Service v2.0

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

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

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

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

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

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

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

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

Σεμινάριο Git & GitLab. Γιώργος Τσιάτσιος Δημήτρης Κάσσος

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

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

SocialSkip Service v1.0

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

Εργαστήριο Λειτουργικών Συστημάτων. Minix Overview

EPL451: Data Mining on the Web Lab 6

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

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

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

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

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

Σεμινάριο Git & GitLab. Τάκης Παναγόπουλος Νικόλας Μπομπέτσης

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

JOOMLA CMS ΒΑΣΙΚΗ ΠΑΡΑΜΕΤΡΟΠΟΙΗΣΗ (PART I)

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

Εισαγωγή στα SCM εργαλεία και στο Subversion

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java

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

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

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

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

Πρακτικές Agile Development στην Ανάπτυξη του le .me

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

Version Control Systems Mercurial SCM. Μανώλης Κιαγιάς

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

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

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

Ανάλυση Πληροφοριακών Συστημάτων. Εαρινό Εξάμηνο Lec06 (Εργαστήριο) 26/03/2019 Διδάσκων: Γεώργιος Χρ. Μακρής

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

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

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

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

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

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

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

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

Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας

Introduction to JAX-WS. Φοιτητής : ηµόπουλος Κωνσταντίνος

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

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

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

Company LOGO. Nazaret Kazarian. 1

Τεχνολογία Διοίκησης Επιχειρησιακών Διαδικασιών

Προγραμματισμός Ι. Πολλαπλά Αρχεία. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

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

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

Αποθηκευμένες Διαδικασίες Stored Routines (Procedures & Functions)

Προγραμματισμός ΙΙ (Java) 6. Διαχείριση δεδομένων

Ανάλυση / Σχεδίαση και Υλοποίηση Εφαρμογής Υποβοήθησης Καθηγητών

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

VHDL Εισαγωγικές έννοιες

Πρότυπες εφαρμογές ανάλυσης Αστικών Δεδομένων

Μεταγλωττιστές. Δημήτρης Μιχαήλ. Ακ. Έτος Εισαγωγή. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

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

Σεμινάριο Git & GitHub. Θέμης Παπαμελετίου Διονύσης Ζήνδρος

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

Οδηγίες εγκατάστασης plug-in για δημιουργία του σχήματος της Europeana σε αποθετήριο DSpace, εκτέλεση και παραμετροποίηση

Εθνικό Πληροφοριακό Σύστηµα Έρευνας και Τεχνολογίας: Η Εξέλιξη των Yποδοµών Ανοικτής Πρόσβασης- ράσεις και Προκλήσεις

Διπλωματική Εργασία. Μουσικές Εφαρμογές σε Περιβάλλον Κινητών Συσκευών Android με Χαρακτηριστικά Εξατομίκευσης

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 26/2/2008

Transcript:

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

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

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

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

Τεχνική διαχείριση έργου λογισμικού γενικά Διαχείριση εκδόσεων του πηγαίου κώδικα version control Διαχείριση των συστατικών του λογισμικού και των εκδόσεών τους dependencies & artifacts Αυτόματο "χτίσιμο" του λογισμικού build automation Eκτέλεση σεναρίων ελέγχου tests Συνεχής ολοκλήρωση continuous integration Συντήρηση και εξέλιξη λογισμικού software maintenance & evolution Εγκατάσταση και παράδοση λογισμικού software deployment & delivery 5

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

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

Συμβάσεις για τη δομή των αρχείων Διάρθρωση και τοποθέτηση των αρχείων 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 8

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 9

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 10

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

Καθημερινές διαδικασίες Version control checkout, commit, branch, tag, merge, push Code review merge/pull requests Build Test Deploy to CI Pre release Deploy to staging User acceptance tests Release Deploy to production 12

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

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

Στο μάθημα Εργαλείο git 15

Build automation Ζητούμενα Αυτοματοποίηση της διαδικασίας "χτισίματος" του λογισμικού Διαχείριση εξαρτήσεων Εκτέλεση ελέγχων Πώς από το source base παράγεται το software artifact.jar,.exe,.rpm,.deb, κλπ 16

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

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

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

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

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

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

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

Εξαρτήσεις λογισμικού software dependencies Compile time dependencis "static" linking Runtime dependencies "dynamic" linking 24

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

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

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

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

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

Για παράδειγμα Εκτέλεση όλων των προαπαιτούμενων για την παραγωγή του 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 30

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

Συνεχής ολοκλήρωση Χτίσιμο του λογισμικού μετά από κάθε αλλαγή στο version control π.χ. μετά από κάθε git push Μεταγλώττιση κώδικα, εκτέλεση σεναρίων ελέγχου Αναφορές / ενδείξεις ότι "όλα πήγαν καλά" Δεν θα το συζητήσουμε στο μάθημα 32

Εργαλεία build automation 33

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

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

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

Ant Πρώτη έκδοση το 2000 XML Πιο portable από το make και κυρίως για χρήση σε έργα Java "Χειροκίνητη" ρύθμιση όλων των παραμέτρων και της διαχείρισης των εξαρτήσεων 37

Παράδειγμα build.xml <project name="myproject" default="dist" basedir="."> <! set global properties for this build > <property name="src" location="src"/> <property name="build" location="build"/> <property name="dist" location="dist"/> <target name="init"> <! Create the build directory structure used by compile > <mkdir dir="${build}"/> </target> <target name="compile" depends="init"> <! Compile the java code from ${src} into ${build} > <javac srcdir="${src}" destdir="${build}"/> </target> 38

Παράδειγμα συνέχεια <target name="dist" depends="compile"> <! Create the distribution directory > <mkdir dir="${dist}/lib"/> <! Put everything in ${build} into the MyProject.jar file > <jar jarfile="${dist}/lib/myproject.jar" basedir="${build}"/> </target> <target name="clean"> <! Delete the ${build} and ${dist} directory trees > <delete dir="${build}"/> <delete dir="${dist}"/> </target> </project> 39

Χρήση > ls project src build.xml > ant [target] Το target έχει οριστεί στο build.xml π.χ. compile, dist 40

Maven Πρώτη έκδοση το 2004 XML Αυτόματη διαχείριση εξαρτήσεων Δημιουργία του Maven Central maven artifact repository 41

Σημαντική συμβολή στο Java οικοσύστημα Convention over configuration Project Object Model POM Plugins provide goals Build lifecycles provide phases Dependencies Maven artifacts jar + dependency metadata Maven co ordinates groupid:artifactid:version, π.χ. org.apache.ivy:ivy:2.4.0 42

Παράδειγμα pom.xml <project> <modelversion>4.0.0</modelversion> <groupid>com.mycompany.app</groupid> <artifactid>my app</artifactid> <version>1.0</version> <dependencies> <dependency> <groupid>junit</groupid> <artifactid>junit</artifactid> <version>3.8.1</version> <scope>test</scope> </dependency> </dependencies> </project> 43

Χρήση > ls project src pom.xml > mvn [plugin]:[command] > mvn [phase] Default lifecycle phases validate, generate sources, process sources, generate resources, process resources, compile, process test sources, process testresources, test compile, test, package, install, deploy 44

Ivy Πρώτη έκδοση 2007 XML Transitive dependency manager Συμπληρωματικό του ant 45

Gradle https://www.slideshare.net/kostassaidis/an introduction to gradlefor java developers 46

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

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

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

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/ 50

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