source: PATCHED/FCM_V1.3/doc/user_guide/overview.html

Last change on this file was 1, checked in by fcm, 15 years ago

creation de larborescence

File size: 7.8 KB
Line 
1<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2
3<html>
4<head>
5  <title>FCM System User Guide: System Overview</title>
6  <meta name="author" content="FCM development team">
7  <meta name="descriptions" content="User Guide - System Overview">
8  <meta name="keywords" content="FCM, user guide">
9  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
10  <link rel="stylesheet" type="text/css" href="style.css">
11<script type="text/javascript" src="maintain.js">
12</script>
13</head>
14
15<body>
16  <address>
17    <a href="index.html">FCM System User Guide</a> &gt; System Overview
18  </address>
19
20  <h1>System Overview</h1>
21
22  <p>The FCM system is designed to simplify the task of managing and building
23  source code. It consists of three main components.</p>
24
25  <ul>
26    <li>Code Management (CM) System
27
28      <ul>
29        <li>This system provides facilities for making changes to source code in
30        a controlled and straightforward manner.</li>
31
32        <li>Version control is provided by the open source tool
33        <a href="http://subversion.tigris.org/"><em>Subversion</em></a>. The
34        source code and its history are stored in a central database which is
35        called the repository. Support for parallel working is provided through
36        the use of branches.</li>
37
38        <li>The open source web-based tool <a href="http://trac.edgewall.org/">
39        <em>Trac</em></a> allows changes to be examined and documented. It
40        provides an integrated issue tracker, wiki and repository browser.</li>
41      </ul>
42    </li>
43
44    <li>Build System
45
46      <ul>
47        <li>This system allows source code to be compiled with a minimal amount
48        of configuration. Compilation time can be minimised through the use of
49        pre-compiled code and by using the parallel make facilities provided by
50        the open source tool <a href="http://www.gnu.org/software/make/"><em>GNU
51        Make</em></a>.</li>
52
53        <li>It provides a number of powerful features aimed primarily at building
54        Fortran 9x code.</li>
55      </ul>
56    </li>
57
58    <li>Extract System
59
60      <ul>
61        <li>This system provides the interface between the CM and build systems.
62        Code is extracted and presented in a suitable form for the build system.
63        Code can be mirrored to a different build platform if necessary.</li>
64      </ul>
65    </li>
66  </ul>
67
68  <p>The diagram below illustrates how these components fit together.</p>
69
70  <p class="image"><img src="fcm_overview.png" alt="FCM system overview"></p>
71
72  <p>The following sections discuss these components in more detail.</p>
73
74  <h2>Code Management System</h2>
75
76  <p>The CM system is built using a number of open source tools, in particular
77  <em>Subversion</em> and <em>Trac</em>.</p>
78
79  <p><em>Subversion</em> is a modern version control tool with a large and
80  rapidly expanding user base. For a summary of its main features please refer
81  to the <a href="http://svnbook.red-bean.com/en/1.4/svn.intro.whatis.html">What
82  is Subversion?</a> section in the <a href=
83  "http://svnbook.red-bean.com/en/1.4/">Version Control with Subversion</a>
84  book.</p>
85
86  <p>Subversion is a generalised tool which can be used in lots of different
87  ways. This makes some day-to-day tasks more complex than they need be. FCM
88  defines a simplified process and appropriate naming conventions. It then adds
89  a layer on top of Subversion to provide a natural interface which is
90  specifically tailored to this process. Where appropriate it simply makes use of
91  the command line tools provided by Subversion. However, in other cases it
92  provides significant additional functionality, for example:</p>
93
94  <ul>
95    <li>By making some assumptions about the repository layout (i.e. by
96    imposing a standard working practise) FCM simplifies the task of
97    creating branches and enforces a standard branch naming convention.</li>
98
99    <li>Having defined working practises and standard log messages allows FCM to
100    greatly simplify the process of merging changes between branches.</li>
101
102    <li>FCM makes use of <a href="http://furius.ca/xxdiff/"><em>xxdiff</em></a>
103    (a graphical merge tool) to simplify the process of resolving any conflicts
104    which result from a merge.</li>
105
106    <li>Code changes can be examined in graphical form using <em>xxdiff</em>.
107    FCM also allows you to easily examine the changes made on a branch.</li>
108
109    <li>FCM allows you to check where any particular branch has been used and
110    which version is being used.</li>
111  </ul>
112
113  <p>FCM also provides a simple GUI which allows easy access to most of the
114  common commands which you will need.</p>
115
116  <p><em>Trac</em> is the other main component of the CM system. It is a
117  powerful web based tool which helps you to manage your software project. It
118  includes the following features:</p>
119
120  <ul>
121    <li>A flexible issue tracker which can be used to keep track of bugs, feature
122    requests, etc. Each issue (known as a "ticket" within Trac) can be given a
123    priority and assigned to a particular person. Changes made to your Subversion
124    repository can easily be traced to the relevant ticket. Where appropriate,
125    tickets can be used to record information about who has reviewed each change.
126    </li>
127
128    <li>A roadmap feature which helps you to plan and manage project releases.
129    Each ticket can be associated with a particular milestone. Trac can then
130    easily show you what features or fixes went into a particular release or
131    what work remains before a particular milestone is reached.</li>
132
133    <li>A "wiki" which can be used for project documentation.</li>
134
135    <li>A browser for viewing your Subversion repository which allows you to
136    browse the project tree / files and examine revision logs and changesets.
137    </li>
138
139    <li>A timeline view which summarises all the activity on a project (changes
140    to the tickets, wiki pages or the Subversion repository).</li>
141  </ul>
142
143  <h2>Build System</h2>
144
145  <p>The build system provides the following features:</p>
146
147  <ul>
148    <li>Automatic generation of Makefile's at build time based on a simple
149    configuration file.</li>
150
151    <li>Full dependency analysis at build time.</li>
152
153    <li>Automatic generation of Fortran 9x interface files at build time.</li>
154
155    <li>Support for non-standard source code. You can override automatic
156    dependency and compile rules in order to deal with code which does not
157    conform to the necessary coding standards.</li>
158
159    <li>Flexible control over compiler flags. Changes to compiler flags trigger
160    the appropriate re-compilation.</li>
161
162    <li>Support for Pre-processor directives. Changes to Pre-processor flags
163    trigger the appropriate re-compilation.</li>
164
165    <li>Support for pre-compiled object code to speed compilation time.</li>
166
167    <li><em>GNU make</em> is used to perform the build. Build times on
168    multi-processor systems can be reduced using <em>parallel make</em>.</li>
169  </ul>
170
171  <h2>Extract System</h2>
172
173  <p>The extract system provides the following features:</p>
174
175  <ul>
176    <li>Extraction of code to a directory tree suitable for feeding into the
177    build system. Code can be combined from multiple repositories and branches.
178    Local user code can also be included.</li>
179
180    <li>Either a complete set of source code may be extracted or just a set of
181    changes relative to pre-compiled code.</li>
182
183    <li>A simple configuration file defines what code is required (and what
184    compile options are required). Typically, standard versions of these
185    configuration files are maintained within the repository. Users can then
186    define changes relative to these standard versions.</li>
187
188    <li>If necessary, code can be transferred to a different platform ready for
189    building.</li>
190  </ul>
191
192  <script type="text/javascript">
193<!--
194document.body.appendChild(document.createElement('hr'))
195document.body.appendChild(displayMaintenanceInfo('doc/user_guide/'))
196//-->
197</script>
198</body>
199</html>
Note: See TracBrowser for help on using the repository browser.