mORMot and Open Source friends
SynProject Tutorial
Not logged in

First steps

This page presents some typical usage of SynProject.

We'll create a source code repository and associated documentation for the mORMot framework itself.

You asked for documentation, we'll generate it automatically, thanks to SynProject!

What we need

So we have all mORMot framework source code files available on our hard drive, in the D:\Dev\Lib folder (main units are in D:\Dev\Lib\SQlite3, Synopse common units are in D:\Dev\Lib).

You can download a binary executable directly from SynProject.zip.

Extract the SynProject.exe file in a directory on your hard drive. Installation is finished. ;)

Create a new project

Launch SynProject. It will show you a warning message this time:

You never used SynProject, so you don't have any current projects to work with. SynProject detected this, and ask for creating a new project.

Note about what is called "Project":

Note that with SynProject, you can work on several projects at once. A "project" is a software entity, mainly following a marketing and budgeting approach. Your company have such "projects". Ask your project manager if you don't know ;)

A "project" is stored in a .dvs file. In fact, this file is a valid .zip archive file, containing at its root a "commit" text file with all project-related parameters (project description and directories, and all commit list), then all source files of the project, in sub-folders corresponding to the real layout of the source code tree (in fact, SynProject stores "deltas" aka "diffs" of the source code file, in a proprietary but very efficient binary format, with the source code file name with the commit number appended as file extension - hexadecimal encoded).

Inside a project, you may have the documentation itself. As was said in SynProject ScreenShots, the documentation is a single text file, with an extension .pro.

Click Yes, and a wizard screen is displayed.

Fill in the fields according to the next screen shots - these fields are the main parameters of the project (the one which will be saved in the "commit" file inside the .dvs project file):

Note that these parameters can be changed from the main SynProject user interface.

Here are some explanations about these parameters / fields:
  1. the "Root directory" is a main parameter. All files should be able to be retrieved from this location, in sub directories.
  2. since "Documents" was entered in the documentation related files field, the documentation files (e.g. the plain file .pro) will be found inside this directory.
  3. you may have diverse releases for the same product: one project is voted, developed and launch, then another project will make an update to the initial project. Product is the same, but projects evolve just with each release. In your hard drive, each release or project will be included in a sub directory, like ProductName\Release Name.
  4. the directory layout is created from the specified parameters (see step 2 below): for example, the SQLite3.pro file will be created in D:\Dev\Documents\SQLite3\Synopse SQLite3 Framework\Synopse SQLite3 Framework.pro.
  5. we entered a first list of Design Inputs, which will evolve during the lifetime of the project. We just put two titles of the Design Input (DI) outline, and some numerical values for referencing them. Your project manager or your marketing people may have written such a high-level description of the project, and made it approved by your CEO: use the numbering used in the official document here.
  6. since we've checked the "SWRS has its own sub items" checkbox, we'll be able to divide the initial DI into more detailed Software Specifications. It happens (sometimes ;) that the marketing people don't know much about software programing... so here you'll be able to fill the gap between marketing dreams and reality...
  7. all Design Inputs can evolved during the project life time: SynProject will able you to track these changes, and the whole documentation of the project will always be synchronized and up-to-date, even if marketing decisions evolve...

Then click "Next" and confirm if necessary (click "Yes").

Now the detailed layout parameters of your project are displayed in the second Wizard page:

By default, the parameters (especially folder names) are filled with the previous page fields. You can now customize the content of these fields.

  1. a "GG" directory name is created inside the documentation folder to store temporary GraphViz generated diagrams: so this directory name is to be ignored;
  2. you must specify which file extensions are to be added to your project - note that in contrary to other CVS, SynProject just add all these files at once: we didn't need a file-based commit feature in our projects, but it could be added if necessary - if you need it, contribute to this GPL project! # the .scr file contains all tracker-relative issues; there is no tracker included in SynProject by now, because we used PVCS for this purpose; so SynProject can interact directly with PVCS, and retrieve any tracker entries directly from the PVCS database - we could add an interface to fossil in near future.
  3. the .man file contains the project manual: it's just a single file, which will create an unique file - you'd better use the main .pro document, and add a specific section to it.
  4. the .pro file is the famous main documentation text file.
  5. since the "SWRS has its own sub items" checkbox was selected in the previous Wizard step, we can customize the SWRS items here. We'll just leave it as it was defined from the DI items by now.
  6. then commits modules can be set: just click on the "..." button next to the field in order to popup a modification screen. First commit module contains the default source code (we changed it to point to Lib\SQLite3); then 2nd commit module points to the product related documentation (i.e. the .scr and .man files); then the project/release related documentation (i.e. the .pro file). You can add other commit modules in the directory tree, if necessary. Note that we won't include the whole D:\Lib folder, because they are not all part of the SQLite3 framework itself. They'll have to be followed by another project.

When you click on the "Save changes" buttons, and after confirmation with the "Yes" button, all necessary folders and files are created.

Answer "Yes" to the following notification window:

Answer "Yes" to confirm the directory creations asked by the following notification window:

And "Yes" to this one:

Then you will be asked to connect to the PVCS tracker. Since we don't use it now, please click on "Cancel":

Confirm by "Yes" the release-related directory creation:

Now all necessary files and directories have been created by SynProject.

Our very first commit

The main SynProject Screen will appear, with the just created "Synopse SQLite3 framework" project opened, as stated by the main caption bar of the window:

It's void up to now.

We'll make a first commit by pressing the "Commit" button. It displays the following window:

  1. Enter a commit Description, and Comments below;
  2. You can associate this commit to a tracker entry (inside the .scr file) - note the "Add to PVCS as modules" checkbox which allows you to add the corresponding commitment to the selected PVCS tracker entry.
  3. The extend of this Commit can be specified: here we select all folders (main project source, product folder, release folder)

When the "Commit selected" button is pressed ("Commit all" should have produced the same result), all corresponding source code files are added to the repository. A log screen appears, which details all modifications. It will look like this:

First commit
------------
0 file(s) deleted

61 file(s) modified/added Lib\SQLite3\c.bat added, on 6/27/2010 5:24:14 PM Lib\SQLite3\Samples\01 - In Memory ORM\Project01.dof added, on 6/29/2010 6:51:22 PM Lib\SQLite3\Samples\01 - In Memory ORM\Project01.dpr added, on 6/27/2010 5:24:14 PM Lib\SQLite3\Samples\01 - In Memory ORM\Project01.res added, on 6/29/2010 6:51:06 PM Lib\SQLite3\Samples\01 - In Memory ORM\SampleData.pas added, on 6/29/2010 6:51:20 PM Lib\SQLite3\Samples\01 - In Memory ORM\Unit1.dfm added, on 6/27/2010 5:24:14 PM Lib\SQLite3\Samples\01 - In Memory ORM\Unit1.pas added, on 6/29/2010 6:51:30 PM Lib\SQLite3\Samples\02 - Embedded SQLite3 ORM\Project02.dof added, on 6/29/2010 6:53:52 PM Lib\SQLite3\Samples\02 - Embedded SQLite3 ORM\Project02.dpr added, on 6/29/2010 6:53:52 PM Lib\SQLite3\Samples\02 - Embedded SQLite3 ORM\Project02.res added, on 6/29/2010 6:52:44 PM Lib\SQLite3\Samples\03 - NamedPipe Client-Server\Project03Client.dof added, on 6/29/2010 6:54:32 PM Lib\SQLite3\Samples\03 - NamedPipe Client-Server\Project03Client.dpr added, on 6/29/2010 6:54:22 PM Lib\SQLite3\Samples\03 - NamedPipe Client-Server\Project03Client.res added, on 6/29/2010 6:54:02 PM Lib\SQLite3\Samples\03 - NamedPipe Client-Server\Project03Server.dof added, on 6/29/2010 6:56:08 PM Lib\SQLite3\Samples\03 - NamedPipe Client-Server\Project03Server.dpr added, on 6/29/2010 6:56:00 PM Lib\SQLite3\Samples\03 - NamedPipe Client-Server\Project03Server.res added, on 6/29/2010 6:55:58 PM Lib\SQLite3\Samples\03 - NamedPipe Client-Server\Unit2.dfm added, on 1/24/2010 5:33:26 PM Lib\SQLite3\Samples\03 - NamedPipe Client-Server\Unit2.pas added, on 6/29/2010 6:56:06 PM Lib\SQLite3\Samples\04 - HTTP Client-Server\Project04Client.dof added, on 6/29/2010 6:56:28 PM Lib\SQLite3\Samples\04 - HTTP Client-Server\Project04Client.dpr added, on 6/29/2010 6:56:24 PM Lib\SQLite3\Samples\04 - HTTP Client-Server\Project04Client.res added, on 6/29/2010 6:56:22 PM Lib\SQLite3\Samples\04 - HTTP Client-Server\Project04Server.dof added, on 6/29/2010 6:57:12 PM Lib\SQLite3\Samples\04 - HTTP Client-Server\Project04Server.dpr added, on 6/29/2010 6:56:52 PM Lib\SQLite3\Samples\04 - HTTP Client-Server\Project04Server.res added, on 6/29/2010 6:56:50 PM Lib\SQLite3\Samples\04 - HTTP Client-Server\Unit2.dfm added, on 6/27/2010 5:24:14 PM Lib\SQLite3\Samples\04 - HTTP Client-Server\Unit2.pas added, on 6/29/2010 6:58:32 PM Lib\SQLite3\Samples\05 - Report created from code\TestSQLite3Pages.dpr added, on 6/30/2010 6:16:24 PM Lib\SQLite3\Samples\05 - Report created from code\Unit1.dfm added, on 6/30/2010 7:07:06 PM Lib\SQLite3\Samples\05 - Report created from code\Unit1.pas added, on 6/30/2010 7:04:40 PM Lib\SQLite3\ServiceTestForm.dfm added, on 6/27/2010 5:24:14 PM Lib\SQLite3\ServiceTestForm.pas added, on 6/27/2010 5:24:14 PM Lib\SQLite3\ServiceTestSQL3.dof added, on 7/10/2010 6:48:08 PM Lib\SQLite3\ServiceTestSQL3.dpr added, on 6/27/2010 5:24:14 PM Lib\SQLite3\ServiceTestSQL3.res added, on 6/27/2010 5:24:14 PM Lib\SQLite3\sqlite3.c added, on 6/27/2010 5:24:14 PM Lib\SQLite3\SQLite3.pas added, on 7/5/2010 6:53:14 PM Lib\SQLite3\SQLite3BtnOk.bmp added, on 6/27/2010 5:24:14 PM Lib\SQLite3\SQLite3Commons.pas added, on 7/12/2010 10:54:16 AM Lib\SQLite3\SQLite3FastCgiServer.pas added, on 6/27/2010 5:24:14 PM Lib\SQLite3\SQLite3HttpClient.pas added, on 6/27/2010 5:24:14 PM Lib\SQLite3\SQLite3HttpServer.pas added, on 7/5/2010 5:43:20 PM Lib\SQLite3\SQLite3i18n.pas added, on 6/27/2010 5:24:14 PM Lib\SQLite3\SQLite3Pages.pas added, on 7/10/2010 6:51:22 PM Lib\SQLite3\SQLite3Service.pas added, on 6/27/2010 5:24:14 PM Lib\SQLite3\SQLite3ToolBar.pas added, on 7/6/2010 9:00:06 PM Lib\SQLite3\SQLite3UI.pas added, on 7/6/2010 9:00:06 PM Lib\SQLite3\SQLite3UILogin.dfm added, on 6/27/2010 5:24:14 PM Lib\SQLite3\SQLite3UILogin.pas added, on 6/27/2010 5:24:14 PM Lib\SQLite3\SQLite3UILogin.png added, on 6/27/2010 5:24:14 PM Lib\SQLite3\SQLite3UILogin.rc added, on 6/27/2010 5:24:14 PM Lib\SQLite3\SQLite3UILogin.RES added, on 6/27/2010 5:24:14 PM Lib\SQLite3\SQLite3UIOptions.dfm added, on 6/27/2010 5:24:14 PM Lib\SQLite3\SQLite3UIOptions.pas added, on 7/6/2010 9:00:06 PM Lib\SQLite3\SQLite3UIQuery.dfm added, on 6/27/2010 5:24:14 PM Lib\SQLite3\SQLite3UIQuery.pas added, on 6/27/2010 5:24:14 PM Lib\SQLite3\TestSQL3.cfg added, on 7/4/2010 3:30:32 PM Lib\SQLite3\TestSQL3.dof added, on 7/5/2010 5:56:00 PM Lib\SQLite3\TestSQL3.dpr added, on 7/5/2010 5:56:00 PM Lib\SQLite3\TestSQL3.dproj added, on 7/5/2010 4:54:26 PM Documents\SQLite3\Common\SQLite3 Framework.scr added, on 7/12/2010 1:18:14 PM Documents\SQLite3\Synopse SQLite3 Framework\Synopse SQLite3 Framework.pro added, on 7/12/2010 1:19:46 PM
"First commit" Commit performed in 0.4 s.
-=- Process complete: press Escape or Enter to close the form -=-

Note that all delphi source code files were added, together with the .scr and .pro files from the documentation related folders.

Close the log screen with the Escape key.

Now the main screen contains the commit. Just click on the commit line, and all corresponding files will appear in the next column. Double click on any file to view its content directly from SynProject.

Making the documentation

By default, the Synopse SQLite3 Framework.pro file has been created, and filled from a basic template.

The whole documentation process follows a complete coverage, matching ISO / IEC best practices:

You can add your own documents or requirements to the steps above, if this layout is not enough for your needs. Or you can just use one part of it, e.g. SAD or Tests. But the main benefit of SynProject will become obvious as soon as your whole documentation set will be maintained within the tool.

From the main screen of SynProject, click on the "Docs" button (with the Word icon), or press the F2 key to display the main Release Documentation Editor:

Tip: you can also launch the tool and specify the .pro file name as command-line parameter, to bypass the whole .dvs / versioning features. That is, if you associate the .pro file extension with SynProject.exe, you can open any documentation by a double-click on the .pro file.

We now will make some changes to the file content. The Template is pretty basic up to now... but it's easy updating the documentation.

The documentation file is architectures as a standard .ini file, i.e. with some [Sections]:

  1. Some are necessary and expected by SynProject, like [People], [Project], [DILayout] or [Pictures].
  2. Some sections are the main parameters of the corresponding document, like [DI] for Design Inputs, [RK] for FMEA / system wide risk assessment, [SRS] for the SRS/SWRS, i.e. Software Requirements Specifications, [Risk] for the DI-related risk assessment, [SAD] for the Software Architecture Document (with its associated [SAD-Source] and [SAD-modules] sections), [SDD] for Software Design Documents, [VV] for the Software Validation and Verification Plan, [Test] for Test protocols, [SCRS] for the Software Change Request Summary Form, and [Release] for the Release Notes. These sections will have subsections, numeroted according to the initial [DILayout] content, or sub-sections of the [SRS]: for example, the Wizard created for you the [DI-1.1], [DI-1.2], [DI-2.1] and [DI-2.2] sections, and the corresponding [SRS-*] sections.
  3. Every [Section] first start with section-related parameters, stored as an header in Name=Value pairs. The header ends when a void line appears, or a title (line beginning with :).

In order to browse the documentation content and all these sections, you can:

  1. click on any item on the left most column of the editor: it will display only the [Section] content, with the header (as Name=Value pairs) on the right, and the body content on the left, like in the following screenshot:
  2. click on the first item on the left most column of the editor (the one named "* Whole file" to display the whole file content at once: it's the most useful way of working with the documentation.
  3. in * Whole file mode, you can left click on any item of the 2nd list appearing on screen to go to this section.
  4. in * Whole file mode, you can right click on any item of the 2nd list appearing on screen to make a popup menu appear, and browse all sections and subsections in order to reach the one you select.
  5. press the F10 key, to display a list of all documentation titles (note that in this screen, typing on the keyboard will search for the content).

Now we will click on the Wizard button (located between the "floppy/save" button and the "Word" button) to create the necessary Design Input content.

Note that the Wizard is able to modify most of the document content. In particular, the headers of most sections can be edited easily from fields on the User Interface, which can be handy for you.

Here is the main screen of the Documentation Wizard:

Just click on the page you want to access. We'll click on "3 - Design Input details", then update the Design input values. We click on a DI item on the left list, then we change the fields content on the right, and click on another DI item, and confirm to save changes.

The "Risk Assesment" is to be filled with some values. Note we'll put "Initial release" in associated Request and Risk justification, because it's a first release of the project.

The following screen content:

will be converted by the Wizard to the following documentation values:

[DI-1.1]
Risk=1,1,3,Arnaud Bouchez,Initial release
Request=Initial release
Ident=The framework must be Client/Server oriented

Parsing the source code

Now we will setup the SAD (Software Architecture Document) parameters, which will allow to parse the source code and retrieve useful information from it.

From the Wizard, we'll click on the "13 - Software Architecture modules" page. Then click on the first module item (i.e. "SAD-Main"), confirm its creation by "Yes". Then we enter a name for displaying this module, and a version number. We entered "DefaultPath=D:\Dev" as parameter in the [SAD] section. So we just need to enter "Lib\SQLite3" in the "Source path" field. We'll enter "TestSQL3.dpr" as main source code file: this file name will be parsed, and all used units will be added to the main repository.

We have to save changes for this item by clicking on the "SAD-Main" item, in order to let the "Include path" and other fields to be enabled. We just put "Lib;Lib\SQLite3" in the include path, in order that all common Synopse library units (like SynCommons or SynPDF) will be parsed with the library.

The page of this module will look like this:

Then we force SynProject to parse all source code. From the editor main toolbar, we click on the "Word" button, then select the "SAD" document, then click on the special command named "Parse all source code again":

Note that the source code will be parsed (it's very fast), and SynProject will create two files:

  1. a Synopse SQLite3 Framework.sad file in the D:\Dev\Documents\SQLite3\Synopse SQLite3 Framework directory, containing all parsing results, i.e. comments and function/classes declarations. It's simply a .zip compatible archive file, with a file by unit, containing the PasDoc classes data streamed and compressed.
  2. a SAD.log file in the C:\Users\UserName\Documents\Synopse SQLite3 Framework\ directory, i.e. the directory where all produced Word (.doc) documents will be generated. This SAD.log file contains a log file of the source code parsing. For example, it will contain for our SQLite3 framework:
    7/12/2010 2:27:44 PM
     Info[0]:    Cache file = D:\Dev\Documents\SQLite3\Synopse SQLite3 Framework\Synopse SQLite3 Framework.sad
     Info[0]:    #&91;SAD].Source = Main
    FillUnits(SAD-Main) -> TestSQL3.dpr Info[0]: DefaultPath = D:\DEV\ Info[0]: IncludePath = Lib;Lib\SQLite3 Info[0]: OutdatedCacheAutoRecreate is ON Info[2]: Now parsing file Lib\SQLite3\TestSQL3.dpr... Info[2]: Now parsing file Lib\SynCrtSock.pas... Info[2]: Now parsing file Lib\SynCommons.pas... Info[2]: Now parsing file Lib\SQLite3\SQLite3.pas... Info[2]: Now parsing file Lib\SQLite3\SQLite3Commons.pas... Info[2]: Now parsing file Lib\SQLite3\SQLite3FastCgiServer.pas... Info[2]: Now parsing file Lib\SQLite3\SQLite3HttpClient.pas... Info[2]: Now parsing file Lib\SQLite3\SQLite3HttpServer.pas... Info[2]: Now parsing file Lib\SynZip.pas... Info[2]: Now parsing file Lib\SQLite3\SQLite3i18n.pas... Info[2]: Now parsing file Lib\SQLite3\SQLite3Service.pas... Info[2]: Now parsing file Lib\SynSelfTests.pas... Info[2]: Now parsing file Lib\SynCrypto.pas... Info[2]: Now parsing file Lib\SynWinSock.pas... Info[2]: Now parsing file Lib\SynPdf.pas... Info[2]: Write new data to cache
    Info[2]: Files not found during process: Classes.pas,ComCtrls.pas,Contnrs.pas,Controls.pas,ExtCtrls.pas,FastMM4.pas,Forms.pas,Graphics.pas,LibC.pas,Menus.pas,Messages.pas,StdCtrls.pas,SysUtils.pas,Types.pas,UxTheme.pas,Windows.pas,WinSVC.pas

Then we'll create all diagrams from the source code, by selecting the following private menu from the SAD document:

Under Vista or Seven, or if you are not logged as administrator on your Computer under XP, you'll have an error message the first time you launch any GraphViz generation. The internal GraphViz engine need to be registered to the system once. You can either launch the command line specified on screen, or run SynProject.exe one time with administrator rights (right click then "Run as Administrator"), then create some diagrams as administrator. Then exit SynProject, and it will then be sufficient to run SynProject with current user rights, without any problem about generating diagrams.

Then we click directly on the SAD/SAD menu item, and the Software Architecture Document is created (as a .rtf file) then converted to a native Word document using Word itself, then the resulting Word document is opened. You can also select "SAD pdf" to directly render a .pdf file (requires Office 2007 or later), without opening the original Word document - which can be slow if it contains a lot of data. You can note that the .rtf creation by SynProject is quite immediate: most time is spend within Word, for conversion from .rtf to native .doc format, especially if there are a lot of diagrams and hyperlinks inside the documentation. But you can create Word documents of more than 1000 pages with SynProject, without any problem. Word will be slow, but SynProject itself won't complain about this data amount. ;)

You can download a sample word document directly generated by SynProject from sampledoc.zip.

Documentation format

As you may have observed, the format used in the .pro file content is quite easy to follow.

  1. It is divided into sections within brackets (like [DI]), with an header (in Name=Value pairs) and a section body (which will be used quite always to generated the body content of the document).
  2. You can enter comments wherever you want, by putting a ; at the beginning of any line.
  3. You can put RTF encoding inside your text: {\i for italics}, {\b for bold}, {\ul for underlines}, {\f1 for Courrier / fixed width font}. There are some corresponding buttons on the editor's toolbar: just select some text and click on these buttons (or press Ctrl+I Ctrl+B Ctrl+U Ctrl+0 keys) to format the selected text with the corresponding RTF attributes. You can see that SynProject's integrated editor knows about these shortcuts, and displays the text with proper attributes on the screen.
  4. A document title is just a line which begins with a :
  5. A document paragraph is just one line of text. In SynProject, you have one paragraph per text line. You can force a "next line" feed by using the raw RTF command \line (or the Ctrl+K) shortcut. You can word wrap your paragraph on the editor by using the corresponding button on the toolbar. But SynProject will make most of the document layout by itself. Focus on the content, and SynProject will make the layout.
  6. Void lines are ignored. They could be useful only to separate an header to its body content of a [Section].
  7. Lists can be written inside the documentation just for any line beginning with a - character. You should have noticed that the paragraphs have a space before and after them. If you put multiple lines with a - character at first position, all these lines will be formeted as a list, without these gaps before and after the line content.
  8. Source code can be inserted inside the documentation easily. Just copy & paste your code inside the SynProject editor, then put some dedicated characters at the first position of the source code lines: ! for pascal/delphi, & for c or c++, # for c#, µ for Modula-2, and $ for regular text. You have a corresponding button on the toolbar: just select some lines, then click on the button and select the right code formating - the first character will be added at the first position of every selected line.
  9. Source code can be highlighted if you put a ! character at the 2nd position of the line (after the ! & # µ $ character): it will be displayed as yellow in the document.
  10. An image can be inserted with a line beginning with a % character. First use the corresponding button on the toolbar, and a %filename.jpg line will be inserted. The [Pictures] section at the beginning of the documentation file contains a list of all used pictures. Images must be copied into the current documentation directory, i.e. the folder where the .pro file is located.
  11. Tables can be inserted in three steps. First define the columns widths by first line like "|%30%40%30" - it will define 3 columns, of width 30%, 40% and 30% according to the current page width. Then put your text like "|Col 1|Col 2|Col 3": each line in the documentation will be a row, and the columns content are separated by a | character. When all rows are inserted, finish the table by a "|%" line.
  12. You can embedd a picture within a table cell e.g., by using @=%picture.png@ - in this case, this is not a "button" - see next item.
  13. You can add "buttons", i.e. link to another item, with @SectionName@ (@DI-4.1@ e.g) or @DocName@ (@SRS@) or @PeopleName@ (@Arnaud Bouchez@) or either @%Picture.png@. The report will contain the name and page of the link.
  14. Internet links will be handled as hyperlink, with @http://synopse.info syntax.
  15. In the [SDD-*] sections, specify @Module\filename.pas@ for each file name, @!Module\filename.pas@ for filename modified or @!procedurename!Module\filename.pas@ in order to specify the procedure name. The corresponding units (and procedures) will be highlited in the [SAD] document, and listed in its second part. Just click on the button to display the Object Browser window, and select unit names and functions/classes with some clicks.
  16. use =[SectionName] to include this section content at the current place.
  17. some special lines are interpreted like commands: their first character must be a backslash, i.e. a \ character.

List of all special lines commands which can be entered:

  1. \page to force a new page
  2. \landscape to change the page orientation to landscape
  3. \portrait to change the page orientation to portrait
  4. \footer blabla to change the footer text
  5. \Layout to add a list with all DILayout titles
  6. \LayoutPage idem + associated pages in the document
  7. \risk to add the Risk Assessment Scale table
  8. \Source (for [SAD] section) to add the list of the Source=.. modules
  9. \SourcePage idem + associated pages in the document
  10. \include filename.ext to append any text file to the documentation content - the kind of text format is assumed from the filename extension itself (e.g. some.pas file will be displayed as a Delphi/pascal source file)
  11. \graph UniqueImageName [Title] then following lines either .dot normal text, either "\From Text\To Text[\Label between both]" - use F12 to have the dialog
  12. \TableSoftwareChanges or \TableTraceabilityMatrix for SCRS
  13. \TableNewFeatures or \TableBugFixes or \TableTests[=October 16, 2008] for Release Notes
  14. \TableDI=6.3.1.2,6.3.1.3 for a table with all the supplied Design Inputs
  15. \TableDocuments[=DI,SRS,SDD,SAD] for a table with the supplied document details
  16. \Implements TableImplementsName #.# [Description][\DocumentName] (\Implements ISO 4.3 Software safety classification) in the text - points to the current document, or the specified DocumentName
  17. \TableImplements=TableImplementsName (\TableImplements=ISO) to create the list, sorted by ascending #.# numbers, with description if any and corresponding document

Questions & comments

You can use our forum, and the SynProject dedicated section, to post your comments or reactions.

I hope I've raised some interest about SynProject.

And don't forget it is published as Open Source: you are welcome to contribute, and adapt it to your needs - as soon as you follow the GPL license terms, of course!