Διαχείριση σχηματισμών
Διομήδης Σπινέλλης
Τμήμα Διοικητικής Επιστήμης και Τεχνολογίας
Οικονομικό Πανεπιστήμιο Αθηνών
dds@aueb.gr
Ανάγκες
Η διαχείριση σχηματισμών (configuration management)
είναι η διεργασία που ελέγχει τον τρόπο με τον οποίο συνθέτονται τα
στοιχεία του λογισμικού για να αποτελέσουν το τελικό προϊόν.
Η διεργασία αυτή έχει ως στόχο να δώσει απάντηση στα παρακάτω προβλήματα:
- Αλλαγές από πολλούς προγραμματιστές στο ίδιο τμήμα του κώδικα
- Ενημέρωση πολλών προγραμματιστών για αλλαγές του κώδικα
- Αλληλεξαρτήσεις τμημάτων του λογισμικού
- Ανάπτυξη και διαχείριση οργανωμένων εκδόσεων
Απαντήσεις
Ένα σύστημα διαχείρισης σχηματισμών μπορεί να μας δώσει απαντήσεις
στα παρακάτω ερωτήματα:
- Ποιος είναι ο τρέχων σχηματισμός του λογισμικού
- Σε τι κατάσταση βρίσκεται; (πειραματική, σταθερή, ...)
- Πώς ελέγχονται οι αλλαγές στο σχηματισμό;
- Πώς ενημερώνονται τα άλλα μέλη της ομάδας;
- Τι αλλαγές έχουν γίνει στο λογισμικό;
- Πώς είμαι βέβαιος πως θα κατασκευαστούν σωστά τα τμήματα του
λογισμικού που εξαρτώνται από τις αλλαγές;
- Επηρεάζουν οι αλλαγές άλλων το δικό μου λογισμικό;
Τα στοιχεία ενός σχηματισμού
Τα παρακάτω στοιχεία πρέπει να βρίσκονται κάτω από έλεγχο σχηματισμών
λογισμικού:
- Προδιαγραφές
- Λεξικό δεδομένων
- Αρχιτεκτονικό σχέδιο
- Σχέδια αρθρωμάτων
- Σχέδια διεπαφών
- Σχέδιο ελέγχου
- Διαδικασίες ελέγχου
- Περιπτώσεις ελέγχου
- Πηγαίος κώδικας
- Τεκμηρίωση
Σχέδιο διαχείρισης σχηματισμών
Το σχέδιο διαχείρισης σχηματισμών (configuration management plan) του λογισμικού περιλαμβάνει τα παρακάτω στοιχεία:
- Εισαγωγή
- Σκοπός
- Εμβέλεια
- Ορισμοί και συντομογραφίες
- Αναφορές
- Διοίκηση
- Οργανισμός
- Υπευθυνότητες
- Ορισμός διεπαφών
- Τρόπος υλοποίησης
- Εφαρμόσιμες πολιτικές, κατευθύνσεις, διαδικασίες
- Δραστηριότητες
- Καθορισμός σχηματισμού
- Έλεγχος αλλαγών
- Προσδιορισμός κατάστασης σχηματισμού
- Έλεγχος σχηματισμού
- Εργαλεία, τεχνικές, μέθοδοι
- Βασικές εκδόσεις
- Τρόπος αναγνώρισης τμημάτων
- Επιθεωρήσεις
- Αυτόματες και μη διεργασίες
- Έντυπα και αρχεία
- Εργαλεία
- Έλεγχος προμηθευτή
- Συλλογή και διαφύλαξη στοιχείων
Ονομασία οντοτήτων
Κάθε στοιχείο του σχηματισμού του λογισμικού πρέπει να μπορεί να
απεικονίζεται μονοσήμαντα για μια συγκεκριμένη έκδοσή του.
Για το λόγο αυτό το χαρακτηρίζουμε με:
Με βάση τα παραπάνω στοιχεία μπορούμε να σχηματίσουμε και την εικόνα
ολόκληρου του σχηματισμού μιας έκδοσης του λογισμικού
Εκδόσεις και παραλλαγές του στοιχείου cat.c στο λειτουργικό σύστημα NetBSD.
Στοιχεία σχηματισμού του προγράμματος cat στο λειτουργικό σύστημα FreeBSD:
$FreeBSD: src/lib/libc/i386/string/strncmp.S,v 1.6 1999/08/27 23:59:35 peter Exp $
$FreeBSD: src/lib/libc/i386/string/strchr.S,v 1.5 1999/08/27 23:59:33 peter Exp $
$FreeBSD: src/lib/libc/i386/string/strcat.S,v 1.5 1999/08/27 23:59:33 peter Exp $
$FreeBSD: src/lib/libc/i386/string/strcpy.S,v 1.5 1999/08/27 23:59:34 peter Exp $
$FreeBSD: src/lib/libc/i386/string/strcmp.S,v 1.5 1999/08/27 23:59:33 peter Exp $
$FreeBSD: src/lib/libc/i386/string/memchr.S,v 1.8 1999/08/27 23:59:31 peter Exp $
$NetBSD: bcopy.S,v 1.6 1996/11/12 00:50:06 jtc Exp $
$FreeBSD: src/lib/libc/i386/string/memset.S,v 1.5 1999/08/27 23:59:32 peter Exp $
$NetBSD: bcopy.S,v 1.6 1996/11/12 00:50:06 jtc Exp $
$FreeBSD: src/lib/libc/i386/sys/brk.S,v 1.7 1999/08/27 23:59:38 peter Exp $
$FreeBSD: src/lib/libc/i386/sys/sbrk.S,v 1.7 1999/08/27 23:59:44 peter Exp $
$FreeBSD: src/lib/libc/i386/sys/cerror.S,v 1.10 1999/08/27 23:59:38 peter Exp $
$FreeBSD: src/bin/cat/cat.c,v 1.14.2.1 2000/05/16 08:38:49 asmodai Exp $
$FreeBSD: src/lib/libc/locale/setlocale.c,v 1.25.2.1 2000/06/04 21:47:39 ache Exp $
$FreeBSD: src/lib/libc/gen/err.c,v 1.6 1999/08/27 23:58:33 peter Exp $
$FreeBSD: src/lib/libc/i386/gen/isinf.c,v 1.6 1999/08/27 23:59:21 peter Exp $
Διαχείριση αλλαγών
Οι αποφάσεις για αλλαγές στο λογισμικό πρέπει να λαμβάνονται
από μια οργανωμένη
ομάδα διαχείρισης σχηματισμών (change control board)
σύμφωνα με την παρακάτω διεργασία:
- Παραλαβή έντυπου αίτησης αλλαγής (change request form)
- Ανάλυση της αίτησης σύμφωνα με
- Εγκυρότητα
- Τρόπο υλοποίησης
- Κόστος
- Καταχώρηση της αίτησης στη ΒΔ
- Απόφαση για την αλλαγή
- Αλλαγές στον πηγαίο κώδικα
- Καταχώρηση αλλαγών στο σύστημα ελέγχου σχηματισμών
- Έλεγχος ποιότητας
- Δημιουργία νέας έκδοσης προϊόντος
Οι αιτήσεις για αλλαγές πρέπει να περιλαμβάνουν τα στοιχεία που
έχουμε επισημάνει στην ενότητα του ελέγχου.
Διαχείριση εκδόσεων
Κάθε έκδοση του συστήματος πρέπει να περιλαμβάνει τα παρακάτω στοιχεία:
Η δημιουργία νέων εκδόσεων εξαρτάται από τους παρακάτω παράγοντες:
- Ποιότητα του υπάρχοντος συστήματος
- Ανταγωνισμός
- Ανάγκες του τμήματος της αγοραστικής (μάρκετινγκ)
- Αιτήσεις αλλαγών των πελατών
Βάση δεδομένων σχηματισμών
Όλοι οι σχηματισμοί του λογισμικού πρέπει να φυλάσσονται σε μια βάση δεδομένων
με τα παρακάτω στοιχεία για κάθε τμήμα και αλλαγή του σχηματισμού:
- Όνομα του στοιχείου
- Περιεχόμενα του στοιχείου (π.χ. πηγαίος κώδικας)
- Τρέχουσα έκδοση
- Στοιχεία του προσώπου που έκανε την αλλαγή
- Ημερομηνία και ώρα της αλλαγής
- Εκδόσεις του λογισμικού που συμμετέχει το στοιχείο αυτό
- Σχόλια για την αλλαγή
- Παραπομπή στη ΒΔ ελέγχου αλλαγών
- Διαφορές από την προηγούμενη έκδοση
Περίληψη αλλαγών σε στοιχείο σχηματισμού:
RCS file: RCS/thread.pl
Working file: thread.pl
head: 1.20
branch:
locks: strict
dds: 1.20
access list:
symbolic names:
keyword substitution: kv
total revisions: 20; selected revisions: 20
description:
Thread HTML pages.
----------------------------
revision 1.20 locked by: dds;
date: 2001/12/25 20:20:21; author: dds; state: Exp; lines: +2 -2
Fixed missing quote.
----------------------------
revision 1.19
date: 2001/12/03 17:13:39; author: dds; state: Exp; lines: +21 -10
Calculate and print the time of last modification in the "whole" files.
Better handling of greek language indentification in the face of caching.
----------------------------
revision 1.18
date: 2001/12/03 16:51:00; author: dds; state: Exp; lines: +12 -7
Added URLs
Fixed bug with handling of fmtcode.
----------------------------
revision 1.17
date: 2001/12/03 14:19:12; author: dds; state: Exp; lines: +2 -2
Print already defined words in english.
----------------------------
revision 1.16
date: 2001/11/16 15:12:27; author: dds; state: Exp; lines: +27 -4
Fixed handling of optimised formatted code scetions using a cache.
----------------------------
revision 1.15
date: 2001/11/16 14:43:53; author: dds; state: Exp; lines: +5 -1
Optimise fmtcode generation.
----------------------------
revision 1.14
date: 2001/11/12 21:52:31; author: dds; state: Exp; lines: +25 -1
Can format code.
----------------------------
revision 1.13
date: 2001/10/16 20:16:09; author: dds; state: Exp; lines: +37 -32
Works with native character set.
----------------------------
revision 1.12
date: 2001/09/30 16:50:52; author: dds; state: Exp; lines: +31 -31
Convert to ISO-8859-7
----------------------------
revision 1.11
date: 2001/09/30 16:48:09; author: dds; state: Exp; lines: +2 -2
Handle multiple hrefs to images on a line.
----------------------------
revision 1.10
date: 2001/06/29 11:19:57; author: dds; state: Exp; lines: +28 -1
Display my details in printed pages.
----------------------------
revision 1.9
date: 2001/06/29 10:31:49; author: dds; state: Exp; lines: +25 -11
Can now create english text.
----------------------------
revision 1.8
date: 2001/06/29 10:05:11; author: dds; state: Exp; lines: +28 -2
Only update changed items.
----------------------------
revision 1.7
date: 2001/03/19 23:24:28; author: dds; state: Exp; lines: +3 -2
Change file destination.
----------------------------
revision 1.6
date: 2000/08/19 18:23:05; author: dds; state: Exp; lines: +3 -3
Indexprint is now idxprint to work with 16 bit programs.
----------------------------
revision 1.5
date: 1999/12/07 22:35:50; author: dds; state: Exp; lines: +4 -1
Added pointer to toc in the detailed toc page.
----------------------------
revision 1.4
date: 1999/11/10 09:41:34; author: dds; state: Exp; lines: +12 -3
Added better support for printable pages.
----------------------------
revision 1.3
date: 1999/11/10 00:33:12; author: dds; state: Exp; lines: +30 -3
Added detailed table of contents.
----------------------------
revision 1.2
date: 1999/05/31 17:27:31; author: dds; state: Exp; lines: +26 -11
Added local file references.
Added improved indexing.
----------------------------
revision 1.1
date: 1999/01/12 10:18:53; author: dds; state: Exp;
Initial revision
=============================================================================
Εργαλεία ελέγχου σχηματισμών
Τα εργαλεία ελέγχου σχηματισμών επιτρέπουν την αυτοματοποίηση
πολλών από τις διεργασίες που έχουμε περιγράψει.
Μερικά γνωστά εργαλεία είναι τα RCS, SCCS, CVS και Visual Source Safe.
Για παράδειγμα το εργαλεία CVS παρέχει τις παρακάτω εντολές:
- add
- Add a new file/directory to the repository
- admin
- Administration front end for rcs
- annotate
- Show last revision where each line was modified
- checkout
- Checkout sources for editing
- commit
- Check files into the repository
- diff
- Show differences between revisions
- edit
- Get ready to edit a watched file
- editors
- See who is editing a watched file
- export
- Export sources from CVS, similar to checkout
- history
- Show repository access history
- import
- Import sources into CVS, using vendor branches
- init
- Create a CVS repository if it doesn't exist
- log
- Print out history information for files
- login
- Prompt for password for authenticating server.
- logout
- Removes entry in .cvspass for remote repository.
- rdiff
- Create 'patch' format diffs between releases
- release
- Indicate that a Module is no longer in use
- remove
- Remove an entry from the repository
- rtag
- Add a symbolic tag to a module
- status
- Display status information on checked out files
- tag
- Add a symbolic tag to checked out version of files
- unedit
- Undo an edit command
- update
- Bring work tree in sync with repository
- watch
- Set watches
- watchers
- See who is watching a file
Εργαλεία ελέγχου παραγωγής κώδικα
Η σωστή παραγωγή του λογισμικού προϋποθέτει την οργάνωση της διεργασίας
δημιουργίας του τελικού εκτελέσιμου προγράμματος από τον πηγαίο κώδικα.
Εργαλεία όπως το make και το ant επιτρέπουν την αυτοματοποίηση της διεργασίας
αυτής.
Παρέχουν της παρακάτω δυνατότητες:
- Εύκολη περιγραφή των εξαρτήσεων των τμημάτων
- Αυτόματο σχηματισμό του δέντρου εξαρτήσεων του λογισμικού
- Επιλογή και εκτέλεση των εργαλείων μεταγλώττισης
- Κατανεμημένη μεταγλώττιση
- Καθορισμός σχηματισμών (π.χ. για διαφορετικές πλατφόρμες)
- Αυτόματη δημιουργία τμημάτων που εξαρτώνται από άλλα
Εξαρτήσεις σχηματισμών στον apache web server.
Βιβλιογραφία
- Εμμανουήλ Σκορδαλάκης.
Εισαγωγή στην Τεχνολογία Λογισμικού, σελίδες 227-237.
Εκδόσεις Συμμετρία, 1991.
- Εμμ. Α. Γιακουμάκης
Τεχνολογία Λογισμικού: Κωδικοποίηση, έλεγχος και συντήρηση λογισμικού.
σελίδες 159-177.
Εκδόσεις Α. Σταμούλης, Αθήνα, Πειραιάς, 1993.
- Stephen P. Berczuk
and Brad Appleton.
Software Configuration Management Patterns: Effective Teamwork, Practical
Integration.
Addison-Wesley, Boston, MA, 2002.
- Don Bolinger, Tan
Bronson, and Mike Loukides.
Applying RCS and SCCS : From Source Control to Project Control.
O'Reilly and Associates, Sebastopol, CA, USA, 1995.
- Per Cederqvist
and et al.
Version Management with
CVS, 2001.
Available online http://www.cvshome.org/docs/manual/ (January 2002).
- Watts S. Humphrey.
Managing the Software Process, pages 113–134, 225–246.
Addison-Wesley, 1989.
- Institute of Electrical and
Electronics Engineers, Inc., New York, NY, USA.
Software Configuration Management Plans, 1998.
IEEE Standard 828-1998.
- Andrew Oram, Steve Talbott,
and Steve Talbot.
Managing Projects With make.
O'Reilly and Associates, Sebastopol, CA, USA, second edition, 1991.
- Roger S. Pressman.
Software Engineering: A Practitioner's Approach, pages 544–550.
McGraw-Hill, 1987.
- Roger S. Pressman.
Software Engineering: A Practitioner's Approach, pages 223–238.
McGraw-Hill, fifth edition, 2000.
European Adaptation. Adapted by Darrel Ince.
- Ian Sommerville.
Software Engineering, pages 641–661.
Addison-Wesley, sixth edition, 2001.
Ασκήσεις
- Εξετάστε τη χρήση ενός εργαλείου ελέγχου σχηματισμών σαν
το CVS ή το RCS στο λογισμικό που γράφετε (και τα δύο εργαλεία
είναι ανοιχτού πηγαίου κώδικα και διαθέσιμα στο Internet).
- Η νέα έκδοση του λογισμικού που στείλατε στους πελάτες έχει
εμφανίσει μια σοβαρή δυσλειτουργία.
Περιγράψτε
πως θα σας βοηθήσει το σύστημα διαχείρισης σχηματισμών που έχετε
εγκαταστήσει στο τμήμα σας να απομονώσετε και να αποκαταστήσετε
το πρόβλημα.