Assumptions and Dependencies
Assumptions, Dependencies, and Constraints[edit]
| Field | Value |
|---|---|
| Document ID | PGCBL-SAD-002 |
| Document Type | Assumptions, Dependencies, and Constraints Register |
| System | pgcobol — Prime Numbers Application v1.0 |
| Version | 1.0 |
| Status | Draft — requires stakeholder confirmation |
| Owner | Lead Developer |
| Author | [reverse-engineered from source artifacts] |
| Created | 2026-03-17 |
| Last modified | 2026-03-17 |
| Classification | Internal |
| Parent document | PGCBL-BRD-001 |
Version History[edit]
| Version | Date | Author | Status | Change Summary |
|---|---|---|---|---|
| 0.1 | 2026-03-17 | — | Draft | Derived from source analysis |
Table of Contents[edit]
1. Purpose[edit]
This register captures every assumption made during the design, every dependency the system relies on, and every constraint that limits the design space. It exists so that:
- If an assumption turns out to be wrong, the impact on the design can be assessed quickly.
- If a dependency is unavailable, the team knows what is blocked.
- Constraints are documented with their source, so they can be challenged if the source changes.
Items marked [UNCONFIRMED] were inferred from source code analysis and have not been verified with a stakeholder.
2. How to Use This Register[edit]
Best practice — generic[edit]
An assumption is something the team believes to be true but has not verified. Every assumption carries a risk: if the assumption is wrong, some part of the design or implementation will fail. Good practice is to:
- State the assumption precisely (not vaguely).
- Identify who should confirm or refute it.
- Assign a risk severity if the assumption is wrong.
- Track confirmation explicitly — an unconfirmed assumption is a risk item.
A dependency is something external to the system that must exist or be in a known state for the system to function. Dependencies are not assumptions — they are facts that must be managed.
A constraint is a limit imposed from outside the design team (a regulation, a platform choice, a budget) that restricts what solutions are possible.
Severity scale[edit]
| Severity | Meaning |
|---|---|
| High | If wrong/unmet, the system cannot run or produces incorrect results |
| Medium | If wrong/unmet, a feature is degraded or a workaround is needed |
| Low | If wrong/unmet, a minor inconvenience; easily remediated |
3. Assumptions[edit]
| ID | Assumption | Confirmed by | Confirmed date | Severity if wrong | Status |
|---|---|---|---|---|---|
| A-01 | Prime 2 is manually inserted into the database before the first generation run. The algorithm starts at candidate 3 and immediately calls next-divider (ident=2), which requires a row with ident=2 to exist.
|
[UNCONFIRMED] | — | High | Open |
| A-02 | The primes table is empty at the start of a fresh generation run. No de-duplication logic exists in the INSERT path; re-running generation will insert duplicate primes.
|
[UNCONFIRMED] | — | High | Open |
| A-03 | The asc_ident sequence is reset to 1 before each generation run (achieved by running reset-primes.sql). If the sequence is not reset, the ident values used by the divider lookup will be wrong.
|
[UNCONFIRMED] | — | High | Open |
| A-04 | The working directory at runtime is writable by the process owner, so primes.prt can be created.
|
[UNCONFIRMED] | — | High | Open |
| A-05 | GnuCOBOL 4.0 and the GixSQL pre-processor are installed and on PATH before compilation. | [UNCONFIRMED] | — | High | Open |
| A-06 | PostgreSQL is running on localhost:5432 when any program that calls primes.cbl is executed.
|
[UNCONFIRMED] | — | High | Open |
| A-07 | The PostgreSQL schema primes and the user primes_user exist and have been granted the necessary privileges before first run.
|
[UNCONFIRMED] | — | High | Open |
| A-08 | The system is run by a single operator at a time; no concurrent execution is expected. | [UNCONFIRMED] | — | Medium | Open |
| A-09 | The 132-character print record width matches the target printer or viewer. | [UNCONFIRMED] | — | Low | Open |
| A-10 | primes_cbsql.out (the pre-compiler listing) is a historical artefact of an earlier version of primes.cbl and the primesdb connection alias it references is no longer active.
|
[UNCONFIRMED] | — | Medium | Open |
4. Dependencies[edit]
| ID | Dependency | Type | Version required | Owner | Status |
|---|---|---|---|---|---|
| DEP-01 | GnuCOBOL compiler | Build-time | 4.0 or later | Developer environment | Must be installed |
| DEP-02 | GixSQL pre-processor | Build-time | Compatible with GnuCOBOL 4.0 | Developer environment | Must be installed |
| DEP-03 | PostgreSQL server | Runtime | 11 or later | DBA | Must be running on localhost:5432 |
| DEP-04 | primes database and schema
|
Runtime | — | DBA | Must exist; created by primes_schema.sql
|
| DEP-05 | primes_user account
|
Runtime | — | DBA | Must exist with INSERT, SELECT privileges on primes.primes
|
| DEP-06 | Writable working directory | Runtime | — | OS / operator | Needed for primes.prt
|
| DEP-07 | reset-primes.sql executed before each generation run
|
Operational | — | Operator | Required for idempotent generation |
| DEP-08 | Prime 2 seeded in primes.primes before first generation
|
Operational | — | Operator | Required for divider lookup to work from candidate 3 |
5. Constraints[edit]
| ID | Constraint | Source | Impact |
|---|---|---|---|
| C-01 | Target runtime is Linux only. SPECIAL-NAMES. CONSOLE IS scherm is platform-specific.
|
GnuCOBOL platform support | Cannot run on Windows or mainframe without porting |
| C-02 | Database must be PostgreSQL. The connection string prefix pgsql:// and GixSQL dialect are PostgreSQL-specific.
|
GixSQL driver | Not portable to DB2, Oracle, or SQL Server without code changes |
| C-03 | Upper generation limit is hard-coded at 999,999,999. | Source code primesgen.cbl line 91
|
Cannot be changed without recompilation |
| C-04 | Database credentials are hard-coded in primes.cbl WORKING-STORAGE.
|
Source code; technical debt | Credential rotation requires recompilation and redeployment |
| C-05 | Print record width is fixed at 132 characters. | primesui.cbl FD and table layout
|
Report format cannot be changed without recompiling primesui
|
| C-06 | The two operational modes (generate / report) are mutually exclusive per invocation. | primesmain.cbl EVALUATE structure
|
Cannot generate and report in the same run |
| C-07 | GnuCOBOL 4.0-early-dev was used; behaviour may differ from stable GnuCOBOL 3.x. | Compiler listing header | Compatibility with stable GnuCOBOL releases unverified |
6. Risk Summary[edit]
Items with High severity that are still unconfirmed represent the greatest project risk:
| Risk | Assumptions involved | Recommended action |
|---|---|---|
| Generation produces wrong results or crashes on fresh DB | A-01, A-02, A-03 | Write a pre-run setup script and document it as a mandatory step |
| Program fails silently at runtime due to missing infrastructure | A-04, A-05, A-06, A-07 | Add pre-flight checks to primesmain (file/DB accessibility tests)
|
| Pre-compiler listing alias mismatch causes disconnect failure | A-10 | Inspect current primes.cbl disconnect path and confirm alias is primes
|
7. Open Issues[edit]
| ID | Issue | Owner | Target | Status |
|---|---|---|---|---|
| OI-01 | All assumptions are unconfirmed. A stakeholder/developer review session is needed to confirm or correct each one. | Lead Dev | — | Open |
| OI-02 | No pre-run setup script exists. DEP-07 and DEP-08 are manual steps with no enforcement. | Developer | — | Open |
Terug naar: Design standards | Cobol and PostgreSQL