Διαχείριση σχηματισμών

Διομήδης Σπινέλλης
Τμήμα Διοικητικής Επιστήμης και Τεχνολογίας
Οικονομικό Πανεπιστήμιο Αθηνών
dds@aueb.gr

Ανάγκες

Η διαχείριση σχηματισμών (configuration management) είναι η διεργασία που ελέγχει τον τρόπο με τον οποίο συνθέτονται τα στοιχεία του λογισμικού για να αποτελέσουν το τελικό προϊόν. Η διεργασία αυτή έχει ως στόχο να δώσει απάντηση στα παρακάτω προβλήματα:

Απαντήσεις

Ένα σύστημα διαχείρισης σχηματισμών μπορεί να μας δώσει απαντήσεις στα παρακάτω ερωτήματα:

Τα στοιχεία ενός σχηματισμού

Τα παρακάτω στοιχεία πρέπει να βρίσκονται κάτω από έλεγχο σχηματισμών λογισμικού:

Σχέδιο διαχείρισης σχηματισμών

Το σχέδιο διαχείρισης σχηματισμών (configuration management plan) του λογισμικού περιλαμβάνει τα παρακάτω στοιχεία:
  1. Εισαγωγή
    1. Σκοπός
    2. Εμβέλεια
    3. Ορισμοί και συντομογραφίες
    4. Αναφορές
  2. Διοίκηση
    1. Οργανισμός
    2. Υπευθυνότητες
    3. Ορισμός διεπαφών
    4. Τρόπος υλοποίησης
    5. Εφαρμόσιμες πολιτικές, κατευθύνσεις, διαδικασίες
  3. Δραστηριότητες
    1. Καθορισμός σχηματισμού
    2. Έλεγχος αλλαγών
    3. Προσδιορισμός κατάστασης σχηματισμού
    4. Έλεγχος σχηματισμού
  4. Εργαλεία, τεχνικές, μέθοδοι
  5. Έλεγχος προμηθευτή
  6. Συλλογή και διαφύλαξη στοιχείων

Ονομασία οντοτήτων

Κάθε στοιχείο του σχηματισμού του λογισμικού πρέπει να μπορεί να απεικονίζεται μονοσήμαντα για μια συγκεκριμένη έκδοσή του. Για το λόγο αυτό το χαρακτηρίζουμε με: Με βάση τα παραπάνω στοιχεία μπορούμε να σχηματίσουμε και την εικόνα ολόκληρου του σχηματισμού μιας έκδοσης του λογισμικού

Εκδόσεις και παραλλαγές του στοιχείου 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) σύμφωνα με την παρακάτω διεργασία: Οι αιτήσεις για αλλαγές πρέπει να περιλαμβάνουν τα στοιχεία που έχουμε επισημάνει στην ενότητα του ελέγχου.

Διαχείριση εκδόσεων

Κάθε έκδοση του συστήματος πρέπει να περιλαμβάνει τα παρακάτω στοιχεία: Η δημιουργία νέων εκδόσεων εξαρτάται από τους παρακάτω παράγοντες:

Βάση δεδομένων σχηματισμών

Όλοι οι σχηματισμοί του λογισμικού πρέπει να φυλάσσονται σε μια βάση δεδομένων με τα παρακάτω στοιχεία για κάθε τμήμα και αλλαγή του σχηματισμού: Περίληψη αλλαγών σε στοιχείο σχηματισμού:

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.

Βιβλιογραφία

Ασκήσεις