A SoProTech project consists of two sets of entities - the project
and the library entities -, one mold kit, and
the source files generated by the SoProMach. Entities, molds and generated
files are by default subdirectories of one file-system directory,
called the SoProTech project directory, but this default configuration
can be easily changed by means of environment variables. The components
of a SoProTech project are shown in the illustration below.
Figure 18 - Components of a SoProTech project
Large development teams may share a mold kit
and a set of library entities, and have separated sets of project
entities and generated files. Even individual developers
working on several projects can benefit from this configuration, that
provides a means to reuse the expertise made available by the Software Molds.
Such a configuration ensures a common basis and
common guidelines for the different requirements of the different
(sub)projects, in the context of the main software development activity.
The next illustration shows the contents of a
sample SoProTech project directory: four package directories (business,
company, location, persons), each containing two or three entity
files and the subdirectories corresponding to the entity facets (
CORE, DB, DOC, LOGIC, and UI), where the
files generated by the SoProMach for each entity file are stored.
Figure 19 - Contents of a SoProTech project directory
Project entities are Software Entity files that by default reside
under a directory called "project". Under that directory,
the project entities can be freely distributed across subdirectories,
each representing a significant logical block of the project,
typically a package. The SoProMach automatically
retrieves all entity files and keeps track of the
logical block that they belong to, when generating the
target source files. The same logical structure used
for the entities can thus be automatically replicated
and used to create, for instance, Java[tm] packages.
Library entities are Software Entity files that by default reside
under a directory called "library".
The same considerations made for project entities apply
for library entities as well: under the "library"
directory, it is possible to define any logical group of
entities by simply creating a corresponding set of
subdirectories. In fact, library entities themselves
should be viewed as the set of project entities of an
independent SoProTech project: this library entity
project differs from a normal SoProTech project in that it
has no library entities.
Library entities and the related generated files
should be shared and reused across
several SoProTech projects; no change to the library
entities should directly occur in any project using them.
Instead, any request for
change to a library entity should be submitted to the
project team responsible for the library entity project,
to ensure that the requested change does not conflict with
the other projects using the same set of library entities.
For example, a library entity called "ident.ef"
may contain, among others, the company-wide definition
of a product identifier, called prod_id. Changes
to such an identifier should only be applied by the
entity library project team, and not by any of the
application project teams.
The kit of Software Molds of a SoProTech project is contained in a subdirectory
of the SoProTech project directory; the subdirectory is
called by default "moldkit". As the following figure
shows, this directory contains one subdirectory for each
logical block - layers and pillars, as
- of the target software system,
namely CORE, DB, LOGIC, UI, and DOC.
Each of these subdirectories - also called mold groups -
contain the set of Software Molds that are relevant to the
corresponding logical block.
Figure 20 - Contents of a mold kit
Each mold is structured according to the File Generation Scheme, described
in this document.
Utility scripts (written in Tefigel) used in the molds can
be stored in a subdirectory,
which is by default called "moldkit/toolkit".
A mold kit may be private to a SoProTech project, as well as shared
among several project teams. In the latter case, changes to the mold kit
should be handled in the same way described above for library entities: a
responsible for the mold kit should ensure that mold changes required by
a project team do not impact any other project team using the same
mold kit. The SoProTech and the File Generation Scheme provide a means
to centrally customize a shared mold kit, in order to meet
specific requirements of one or more of the project teams sharing
that mold kit.
As shown in the illustration below,
each generated file is located under a subdirectory at the
same project level of the entity that it is derived from. The
name of this subdirectory - one of CORE, DB,
LOGIC, UI, DOC - corresponds to the name of
the facet and mold group that are relevant to the generated
Figure 21 - Entities and generated files
For example, applying mold "moldkit/DB/mold1-.sql"
to the DB facet of entity file
"business/project.ef" by default generates
As discussed earlier in this document, the SoProTech does not
provide an all-in-one solution to software development: instead,
it should be considered as an additional, high-speed tool to
automatically produce software source files.
Generated source files can then be
merged into a traditional project tree, as if provided by an
This paragraph describes the suggested approach
for working with SoProTech,
independently of the size of the project and project team
that may decide to use it. A teamwork scheme and a corresponding
small set of project roles are suggested, to better
explain the activities involved
by SoProTech. Large project teams may assign one or more persons
to play one role, as opposed to small project teams,
that may assign two or more roles to one person - not to mention
individual and independent developers, who will play all roles.
Figure 22 - Teamwork and roles in a SoProTech project
The overall teamwork scheme is illustrated by the following figure,
and described in the next paragraphs.
The designer of Software Entities is in charge of producing Software Entity
files - the actual ".ef" files. The main tasks assigned
to an entity designer are the following:
- Translate the system concept design into software entities;
- Contribute to the definition of the project guidelines and conventions;
- Define the core structure of entities.
The system layer expert does not directly produce any tangible
deliverable, such as Software Entities or Software Molds; instead, the main result
of a layer expert's activity is layer knowledge for
entity facets, layer-specific generatable files, and molds.
The main tasks assigned to a layer expert are the
- Contribute with his/her layer knowledge (CORE, DB, LOGIC, UI, DOC) to the design of entities;
- Contribute to the selection and sample production of generatable files;
- Contribute to the production of molds;
- Define mapping between Sisendel basic data types and layer-specific types.
The developer of sample files is in charge of producing
layer-specific samples of generatable files.
The main tasks assigned to a sample file developer are the
- Produce sample generatable files in any given language for a given layer (CORE, DB, LOGIC, UI, DOC) using any favorite layer-specific tool;
- Contribute to the definition of the project guidelines and conventions.
The mold maker is in charge of delivering Somusar/Software Molds[tm].
The main tasks assigned to a mold maker are the
- Translate the sample generatable files into software molds;
- Implement in molds the project guidelines and conventions.
As previously shown in the teamwork scheme figure,
an additional player in the SoProTech project team is Somusar.
The Somusar contribution to a SoProTech project includes the following:
- Provide the project team with the SoProMach, that consists of the high-speed processors for Sisendel and Tefigel, the languages for Software Entities and Software Molds;
- Make molds on request, playing the mold maker role;
- Deliver on request consultancy services on SoProTech projects.
[Back to top]