ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/COMP/SCRAM/doc/tex/manual/Introduction.tex
Revision: 1.1
Committed: Wed Nov 2 16:24:18 2005 UTC (19 years, 6 months ago) by sashby
Content type: application/x-tex
Branch: MAIN
CVS Tags: V1_1_7, V1_1_6, V1_1_5, V1_1_4, V1_1_3, V1_1_2, V1_1_0_reltag8, V1_1_0_reltag7, V1_1_0_reltag6, V1_1_1, V1_1_0_reltag5, V1_1_0_reltag4, V1_1_0_reltag3, V1_1_0_reltag2, V1_1_0_reltag1, V1_1_0_reltag, V1_0_3-p4, V1_1_0_cand3, V1_1_0_cand2, V1_1_0_cand1, HEAD_SM_071214, forV1_1_0, v103_xml_071106, V1_0_3-p3, V1_0_3-p2, V1_1_0, v110p1, V110p6, V110p5, V110p4, V110p3, V110p2, V110p1, V1_0_4p1, V1_0_3-p1, V1_0_3, V1_0_2, V1_0_2_p1
Branch point for: HEAD_BRANCH_SM_071214, v200branch, v103_with_xml, v103_branch
Log Message:
Commit first version of updated manual.

File Contents

# Content
1 %%____________________________________________________________________
2 %% File: Introduction.tex
3 %%____________________________________________________________________
4 %%
5 %% Author: Shaun ASHBY <Shaun.Ashby@cern.ch>
6 %% Update: 2005-11-02 17:04:04+0100
7 %% Revision: $Id$
8 %%
9 %% Copyright: 2005 (C) Shaun ASHBY
10 %%
11 %%--------------------------------------------------------------------
12 \chapter{Introduction}\label{ch:intro}
13 \index{Introduction}
14 \scram\ has been developed to enable large, geographically dispersed
15 and autonomous groups to work together on software development
16 projects. The groups, primarily based in universities and academic
17 institutions, independently manage their own resources. As such it can
18 be extremely difficult or even impossible to impose software process,
19 adequate documentation levels and heavy resource requirements - such
20 as dedicating entire machines to a single software development
21 project.
22
23 \section{What is SCRAM?}\index{SCRAM!What is SCRAM?}
24
25 \scram\ is a configuration management tool, a distribution system, a
26 build system and resource manager, with local resources and
27 applications managed in a transparent way. In addition it provides a
28 common development environment. These features are described more
29 fully below.
30
31 \subsection{Configuration Management}\label{sec:cm}
32 \index{SCRAM!configuration management}
33 The main task of \scram\ is to ensure that all developers are working
34 with the same consistent set of external products, libraries,
35 environments and source codes. Configuration management methods ensure
36 that this is possible.
37 \begin{description}
38 \item [\textsc{external products configuration}]\mbox{}\\
39 A requirement of any \scram\ managed project is an explicit
40 statement, in the form of a special-purpose document, of all
41 underlying products and versions of external libraries and other
42 software products used. Each product must have a description
43 document to inform \scram\ how it is to be used, to supply dependency
44 information, set environmental variables, and give default system
45 locations. Such description documents can be maintained
46 independently of \scram\ and imported into the project by
47 \scram's built-in URL downloading mechanism.
48 \item[\textsc{common configurations}]\mbox{}\\
49 It is often the case that many projects need to share the same
50 configuration in order that they can be inter-operable (\eg two
51 applications using the same database). \scram\ thus provides a
52 mechanism for importing independently maintained configuration
53 documents automatically.
54 \item[\textsc{source code control}]\mbox{}\\
55 \scram\ itself is not a code repository. Any project must have
56 access to one or more such repositories from which it can checkout
57 the appropriate code into the appropriate place in the project
58 structure. Currently, CVS is used for all source code management.
59 Both source code and project configuration files are tagged with a
60 CVS symbolic tag when ready for release.
61 \item[\textsc{environment control}]\mbox{}\\
62 The build and runtime environments are constructed automatically
63 from the description documents of the required external products and
64 the project-specific environment.
65 \end{description}
66
67
68 \subsection{The Distribution System}\label{sec:dist}
69 \index{SCRAM!distribution system}
70 \index{bootstrapping}
71 \scram\ projects can be `bootstrapped' from a single description
72 document in which the structure and download information of other
73 required project documents and components is declared.
74
75 \ni From this document \scram\ can construct a copy of a project release.
76 Connected to a properly configured web browser such as Netscape makes
77 automatic project installation possible. At present, \scram\ is unable
78 to automatically install external components although the user can be
79 directed to the correct documentation to enable him/her to do this.
80 Binary distribution is not supported as building a distribution is
81 seen as a check that all the components of the system have been
82 installed properly. Other tools, compatible with \scram\, are available
83 to produce binary distributions from project releases.
84
85 \subsection{A System Resource/Application Interface}\label{sec:resource}
86 \index{SCRAM!resource manager}
87 \index{SCRAM!application interface}
88 Often, machines are not installed with the various products in the
89 same directories, their locations decided upon by system
90 administrators or system constraints (sizes of filesystems, for
91 example). Install locations can also vary from platform to platform.
92 \scram\ matches up the request for a product in a project configuration
93 to the system it is installing the project on. Automated means are
94 used to achieve this but the user will be prompted if a product cannot
95 be found. The user also can have full interactive control of these
96 setup stages if preferred.
97
98 \ni A database of system information is maintained by \scram\ for
99 future reference in each project area.
100
101 \subsection{A Build System}\label{sec:bs}
102 \index{SCRAM!build system}
103 The build system can be used to build shared or archive libraries,
104 plug-in modules, binaries or additional libraries (for a test suite,
105 for example). The configuration documents within the project area
106 describe the actions to be taken during the build process. These
107 actions can be global, or specific to parts of the source directory
108 tree structure. (\eg everything in a directory \texttt{libsrc} could
109 be automatically compiled into a library or every binary in a
110 directory called \texttt{test} could be automatically linked with a
111 test utilities library).
112 \index{available library classes}
113 \ni Classes of build objects can be defined: for example, a library class
114 can have types such as {\em debug}, {\em archive}, {\em shared}, {\em
115 shared debug}, \etc Default types can be assigned to a
116 class/directory structure but can be easily overriden.% with options
117 %from the command line.
118 The environment can be easily tuned for
119 special cases by simply modifying the templates defining the general
120 rules. The dependencies are specified in an abstract manner. Extra
121 external products to be included during linking can be referred to
122 by name with \scram\ taking care of the system specifics.
123 \index{module interfaces}
124 \ni Module interfaces can be defined for large software modules to define
125 dependencies \etc Other modules can then simply load the interface to
126 use the module.
127
128 \subsection{A Development Environment}\label{sec:de}
129 \index{SCRAM!development environment}
130 Once a copy of a project is installed and built on a particular
131 platform it can be made publicly available (\ie {\em released}) for developers
132 by adding it to \scram's list of projects (the project database).
133
134 \ni Upon selecting an item from this list, a new development area is
135 created in which the developer can work independently of everyone
136 else. The development area will have the same configuration and
137 environment as the base release. It will also automatically use
138 libraries and headers from the base release if not rebuilt in the
139 local development area.
140
141 \subsection{Project Isolation}
142 \index{SCRAM!project isolation}
143 \scram\ ensures that an installed release is independent of any other.
144 This allows developers to easily switch between projects/versions they
145 might be working on even though they may have very different and
146 conflicting environment requirements.
147 %%
148 \index{SCRAM!overview}
149 \begin{latexonly}
150 \begin{figure}[ht]
151 \begin{center}
152 \leavevmode \epsfig{file=images/scram.eps, width=\linewidth}
153 \caption[A SCRAM overview.]
154 {A SCRAM overview.}
155 \label{f:SCRAM}
156 \end{center}
157 \end{figure}
158 \end{latexonly}
159
160 \ni In summary, \scram\ can provide
161 \begin{itemize}
162 \item project installation with a click on a web page;
163 \item control of the build environment, including dependency tracking;
164 \item fully configurable build operations, including default operations;
165 \item abstraction of logical build elements from the implementation details;
166 \item re-use of configuration management elements between projects.
167 \end{itemize}
168
169
170 \section{The Structure of This Guide}
171
172 This document can be broken down as follows: firstly,
173 Chapter~\ref{ch:install} gives some details on how to obtain \scram\
174 and instructions on how to create a local installation.
175 Chapter~\ref{ch:creatingprojects} contains all information necessary for
176 administrators (or users wanting to use \scram\ privately) to
177 create new projects using \scram\ as the management tool, and to
178 maintain them. The various types of project configuration files, and
179 the purposes of each (with use cases), are also described.
180 Chapter~\ref{ch:examples} serves as a resource for developers who
181 use \scram\ in their environment, providing some examples and tips covering topics
182 like changing tool configurations or adding new external tools in a
183 private area.
184
185 \ni Finally there is a summary page containing help for usage for all of
186 the currently supported \scram\ commands (p~\pageref{ch:quickhelpguide}).
187
188 \newpage % Start on a fresh page
189
190 %%% Local Variables:
191 %%% mode: latex
192 %%% TeX-master: "SCRAM-manual"
193 %%% End:
194
195 %%____________________________________________________________________
196 %% End of Introduction.tex
197 %%____________________________________________________________________
198 %%