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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

EPL451: Data Mining on the Web Lab 6

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

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

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

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

Καλώς ήλθατε στην παρουσίαση του έργου SmartGov.

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

ΥΠΟΔΟΧΗ ΠΡΩΤΟΕΤΩΝ ΦΟΙΤΗΤΩΝ Παρουσίαση του Τµήµατος

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

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

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

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

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

Σύστημα διαχείρισης περιεχομένου (Content Management System)

Πριν ξεκινήσουμε: Γά Γιάννης Σμαραγδάκης

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

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

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

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

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

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

Σύστημα Διαχείρισης Περιεχομένου

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

Diving in the code of a CMS

Παράγοντες Επιτυχίας ενός Έργου ERP

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

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

Έλεγχος Λογισμικού. Software Testing

Git - Version Control System

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

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

EΔET A.E. Εθνικό Δίκτυο Έρευνας & Τεχνολογίας. GRNET S.A. Greek Research & Technology Network

Test Data Management in Practice

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

Η λίστα με τα 87 επαγγέλματα με αυξημένη ζήτηση την επόμενη 20ετία

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

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

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

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

Θερινό Σχολείο, Ιουλίου Εισαγωγή στο. Αχιλλέας Πιπινέλης. Μονάδα Αριστείας ΕΛ/ΛΑΚ ΤΕΙ Αθήνας

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

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

Σχεδιασμός Βάσεων Δεδομένων

ΑΝΑΡΤΗΤΕΑ ΣΤΟ ΔΙΑΔΙΚΤΥΟ

IBM IoT Continuous Engineering on Cloud και IBM Collaborative Lifecycle Management on Cloud

ΑΝΑΡΤΗΤΕΑ ΣΤΟ ΔΙΑΔΙΚΤΥΟ

SCRIPTUM. Οδηγός Εγκατάστασης SCRIPTUM από τον Πηγαίο Κώδικα

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

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

ΚΑΤΑΛΟΓΟΣ ΕΚΠΑΙΔΕΥΣΗΣ

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

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

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

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

ΑΝΑΡΤΗΤΕΑ ΣΤΟ ΔΙΑΔΙΚΤΥΟ

Εισαγωγή της αναγκαιότητας εργαλείων DevOps

Άσκηση 3 (ανακοινώθηκε στις 24 Απριλίου 2017, προθεσμία παράδοσης: 2 Ιουνίου 2017, 12 τα μεσάνυχτα).

Συνοπτικό εγχειρίδιο χρήσης του Microsoft Visual Studio 2010

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

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

Βάσεις Δεδομένων. Εισαγωγή για το Εργαστήριο. Δρ. Τιάκας Ελευθέριος. Τμήμα Πληροφορικής ΑΠΘ

BPMN Abstraction Tool ΠΑΡΟΥΣΙΑΣΗ ΕΡΓΑΛΕΙΟΥ ΑΦΑΙΡΕΣΗΣ ΕΠΙΧΕΙΡΗΣΙΑΚΩΝ ΔΙΑΔΙΚΑΣΙΩΝ

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

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

Κατευθυντήριες γραµµές

Τέσσερις καλές πρακτικές για την ανάπτυξη λογισμικού στην Ανοιχτή Επιστήμη. Φώτης Ε. Ψωμόπουλος, Ερευνητής Γ ΙΝΕΒ ΕΚΕΤΑ

Λευτέρης Κουμάκης ΠΟΛΥΜΕΣΙΚΕΣ ΥΠΗΡΕΣΙΕΣ ΣΤΗΝ ΥΓΕΙΑ

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

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

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

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

Επίπεδο δικτύου IP Forwading κτλ

Αποτελεί ισχυρό εργαλείο, µε υψηλή απόδοση & αποτελεσµατικότητα.

Architecture οf Integrated Ιnformation Systems (ARIS)

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

Οπτικός Προγραμματισμός σε NetBeans με Java Swing

SocialSkip Service v2.0

ΕΡΓΟ: «ΣΧΕΔΙΑΣΜΟΣ ΚΑΙ ΑΝΑΠΤΥΞΗ ΛΕΙΤΟΥΡΓΙΩΝ ΔΙΑΧΕΙΡΙΣΗΣ ΑΣΦΑΛΙΣΤΙΚΩΝ ΠΡΟΪΟΝΤΩΝ ΓΙΑ ΤΗΝ ΕΦΑΡΜΟΓΗ ONE» ΚΩΔΙΚΟΣ ΕΡΓΟΥ ΦΚ: D.931

Transcript:

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

Περιεχόμενα Διοίκηση ομάδας ανάπτυξης λογισμικού Τεχνικές και εργαλεία ελέγχου ανάπτυξης λογισμικού Διαχείριση συστατικών του λογισμικού 2

Διοίκηση ομάδας ανάπτυξης λογισμικού Συνήθεις ρόλοι Αλληλεπιδράσεις μεταξύ τους Καλές διεθνείς πρακτικές 3

Τεχνικές και εργαλεία Διαχείριση εκδόσεων version control Έμφαση στο git Αυτόματο "χτίσιμο" λογισμικού build automation Έμφαση στο gradle Στατική ανάλυση κώδικα και αυτόματος εντοπισμός σφαλμάτων JDepend, FindBugs, PMD, Jacoco, CodeNarc, κ.ά Αυτόματη εκτέλεση σεναρίων ελέγχου tests Smoke unit regression functional database integration user acceptance testing test coverage Συνεχής ολοκλήρωση, εγκατάσταση και παράδοση continuous integration, deployment & delivery Jenkins, GitLab, κ.ά 4

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

Παράδειγμα 1η εργασία 6

Βασικά Ζητήματα Ρόλοι προσώπων στο έργο Συμβάσεις συγγραφής κώδικα coding conventions Αυτόματο "χτίσιμο" κώδικα Διαχείριση συστατικών 7

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

Ενδεικτικοί Ρόλοι α Project/Product manager Architect Team lead Senior developer Junior developer Quality assurance engineer tester User interface designer User experience engineer 9

Ενδεικτικοί Ρόλοι β Back end developer Front end developer Full stack developer Database developer Data scientist Information system analyst Customer support DevOps engineer 10

Συνήθως Σε μικρές ομάδες, ένα πρόσωπο έχει πολλούς ρόλους Σε μεγάλες ομάδες, ένα πρόσωπο έχει ένα ρόλο 11

Για τις ανάγκες της 2ης εργασίας Ποιοι είναι οι ρόλοι που έχετε σκεφτεί; 12

Διοίκηση της ομάδας Project/Product manager: Οριοθέτηση στόχων ομάδας και χαρακτηριστικών λογισμικού Διαχείριση χρόνου και προσπάθειας των μελών σε μακροσκοπικό επίπεδο 13

Διοίκηση της ομάδας Architect Λήψη των σημαντικών σχεδιαστικών αποφάσεων major design decisions Θέσπιση των διεπαφών interfaces, των συστατικών components και των εξαρτήσεων dependencies Επιλογή εργαλείων tooling 14

Διοίκηση της ομάδας Team Lead Ανάθεση των επιμέρους εργασιών στα μέλη της ομάδας Διαχείριση χρόνου και προσπάθειας των μελών σε καθημερινό επίπεδο 15

Σύναψη κοινής "κουλτούρας" Βασικά σημεία Κοινές συμβάσεις conventions Κοινά εργαλεία tools Κοινές διαδικασίες procedures Κοινά αποδεκτός και εκ των προτέρων επιμερισμός αρμοδιοτήτων ownership 16

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

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

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 19

Java Packages β package x.y.z; class FooΤest {... } Πηγαίος κώδικας src/main/test/x/y/z/footest.java Class files build/classes/x/y/z/footest.class 20

Εργαλεία www.ayorkshirehome.com 21

Εργαλεία Version control IDE Building Testing Bug detection Continuous integration, deployment and delivery Containers Monitoring Alerting 22

Διαδικασίες Πολιτική versioning branches, tags, merges, releases Code review Build Test Deploy to CI Deploy to staging Deploy to production 23

Επιμερισμός αρμοδιοτήτων Ποιος είναι αρμόδιος για ποιο κομμάτι κώδικα / λειτουργικότητας / χαρακτηριστικών; Αποφυγή "ορφανού" κώδικα Αποφυγή "αποκλεισμένου" κώδικα Τουλάχιστον δύο πρόσωπα με την ίδια αρμοδιότητα σε κάποιο κομμάτι 24

Διαχείριση εκδόσεων version control Ζητούμενα Καταγραφή των αλλαγών ιστορικό Συνεργατική ανάπτυξη Ποιος έκανε ποια αλλαγή και πότε Ανάκτηση συγκεκριμένης παρελθούσας κατάστασης 25

git https://speakerdeck.com/schacon/introduction to git 26

Build tool Στο Java οικοσύστημα Apache Ant Apache Maven Apache Ivy Gradle 27

make η αρχή όλων Stuard Feldman, Bell Labs, 1976 2003 ACM Software System Award Targets, prerequisites, commands, macros Topological sorting 28

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

Ant α <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> 30

Ant β <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> 31

Ant γ > ls project src build.xml > ant [target] 32

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

Maven α Πρώτη έκδοση το 2004 XML Συμβάσεις conventions Εξαρτήσεις dependencies Maven Central maven artifact repository 34

Maven β <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> 35

Maven γ Convention over configuration Project Object Model POM Plugins provide goals Build lifecycles provide phases Dependencies Maven co ordinates 36

Maven δ > 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 37

Ivy Πρώτη έκδοση 2007 Transitive dependency manager όχι των ΒΔ 38

Transitive dependencies Οι εξαρτήσεις των εξαρτήσεων P roject > Lib1, Lib2 Lib1 > Lib11 Lib2 > Lib22, Lib23 Lib22 > Lib3 39

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