source: LMDZ5/branches/LF-private/tools/fcm/doc/user_guide/overview.html @ 5225

Last change on this file since 5225 was 1578, checked in by jghattas, 13 years ago
  • Add fcm in LMDZ5/tools directory

It is no longer needed to have fcm in your environement PATH variable.
Now makelmdz_fcm takes by default this fcm. It is still possible to use
another fcm, using -fcm_path argument in makelmdz_fcm.

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