Professional Documents
Culture Documents
System Architecture (Old) : Team Project Name Manifest
System Architecture (Old) : Team Project Name Manifest
System Architecture (Old) : Team Project Name Manifest
PROJECT NAME
“FM Duo” - a temporary name until finding the right one to use…
MANIFEST
I shall develop both general and complete products (as well as custom apps), with
FileMaker - with as much modular design and reduced redundancy as possible,
where the modules can be updated and distributed independently and easily -
resulting in increased quality, easier maintenance, lower prices and less support.
SYSTEM ARCHITECTURE
The goal and the basis for the text below, is to have one single root database for all
products. However it could be that one root database per product is used.
Product
A product is a general system consisting of one root database and one or more
modules - to be used by multiple customers through licensing and/or subscription. A
product is defined by what parts of the full root database and which modules it is
using.
Root database
The root database is the hub to which all modules are connected. It uses the
modules and its functionality in whatever way it wants. All layouts are in the
UI/Logic file of the root database.
File Content
Modules
A module is a self-contained unit with some specific functionality, used by a root
database (modules cannot be used by other modules or in stand-alone mode).
Modules can be used by multiple products in parallel - unmodified. Modules should
be well defined, complete each other, with zero overlap.
Each module consists of two separate FileMaker files where user’s data is separated
from logic. There is no UI file since the Root UI file has all the UI.
File Content
ID’s
Every module is associated with an ID:
ID Module
11 CONTACT
12 EVENT
13 ECONOMY
14 STATUS
15 PROJECT
Core Logic
The Core Logic FileMaker file handles database transactions and contains generic
functions - and is used over all products, all root databases and all modules as a
shared repository of scripts and logic. As soon as a script could be used by more
than one module, the script should be in Core Logic instead of in a module.
Data categories
Category Storage location Note
Data classes
Class Location Note
Principles
Reduce redundancy everywhere as much as possible
Code once and use everywhere
”Separation of concerns”
Separate components from each other
root database from modules
module from other modules
data from UI from logic
functionality from specification
Configuration over customization
Restrict calls to server to the greatest extent possible
Use soft coding - no hard coding
Use normalization
Use de-normalization when needed
Use database transactions
Use supertype and subtype structures with broad tables where field "type" is
used to separate different types of records
Reduce record locking time
Use Localization system
Use an audit log and undo/rollback system
REQUIREMENTS
Internet connection
FileMaker Server 17 or later or FileMaker Cloud
FileMaker Pro Advanced 17 or later
FileMaker Go 17 or later
DEVELOPMENT TOOLS
FileMaker
Why FileMaker?
because (pros):
Single tool for building both user interface front-end and data storage back-end
Minimal programming to create GUI
Integrated programming environment
Built-in support for
importing and exporting Excel
exporting PDFs
reporting and charting tools
accessing external datasources
Reduced development time
Mobile-friendly, FileMaker Go (iOS)
can input from camera, microphone and multiple sensors
Can be used as stand-alone without server
despite (cons):
Commercial → Licensing costs
More closed system
Not full web browser compatibility
Lack of scalability
Lack of centralized security module for multiple files
Version compatibility
FILEMAKER MINIMUM NOTE
PRODUCT VERSION
Pro v16 or 17 ? *
Go v16 or 17 ? *
* v17 is needed for Master Detail-portals, v16 is needed for Card windows
MySQL
Why MySQL?
because (pros):
despite (cons):