Skip to main content

9. Risks and Technical Debts

Ar42 specifications helper

Contents

A list of identified technical risks or technical debts, ordered by priority

Motivation

“Risk management is project management for grown-ups” (Tim Lister, Atlantic Systems Guild.)

This should be your motto for systematic detection and evaluation of risks and technical debts in the architecture, which will be needed by management stakeholders (e.g. project managers, product owners) as part of the overall risk analysis and measurement planning.

Form

List of risks and/or technical debts, probably including suggested measures to minimize, mitigate or avoid risks or reduce technical debts.

Missing-Feature

###Feature gapCategoryImpactProb.Short risk descriptionMitigation / next step
F-1Transmission-schedule upload (attach PDF/ICS to RFQ)UX / scopeMed – manual e-mail fallback wastes timeHighUsers must send schedules by mail; information loss between systems.Define REST /rfqs/{id}/attachments & 15 MB Static S3 bucket; MVP = PDF only.
F-2CSV bulk import for RFQ itemsEfficiencyMedMedLarge tournaments (30+ venues) are painful to enter line-by-line.Re-use existing item DTO; add /rfqs/items/csv endpoint + simple Parser.
F-3IAM: Pw change / expiry / idle auto-logoutSecurityHighMedStrong audit requirement for ISO-27001; risk of account abuse.Implement /auth/changePassword, PW expiry claim, idle timer in SPA.
F-4Audit log (profile, RFQ, Quote)ComplianceLowLowTraceability with app log but can't be displayed in the appCreate a audit module that persist log on each relavant event
F-5Global search (provider / RFQ / quote)UXLowMedNavigation pain for power users → adoption risk.Elastic index PoC; Fallback to SQL UNION.
F-6SNG photo uploadUXLowLowCatalogue looks empty; not blocking.Implement static storage done.
F-7Mobile responsivenessUX / salesMedMeduser frustration.Bootstrap 5 grid audit, prioritize break-points on critical pages.

Front end technical debt

####ItemCategoryImpactProb.Risk / debtMitigation
FE-1No client-side cachingPerformanceMedHighRepeated GETs (countries, specs) hammer API; slower UX offline.Pinia “stale-while-revalidate” helper; expire after 1 h.
FE-2Missing input validationSecurityHighHighXSS / malformed DTO can hit back-end; risk of data corruption.Central vee-validate schema per form; sanitize strings.
FE-3Refresh-token rotation absentSecurityHighMedSession hijack if stolen refresh token valid 24 h.Adopt short-lived (30 min) access + 12 h rotated refresh flow.
FE-4Native alert()/confirm dialogsUXLowHighInconsistent look & accessibility.Replace with Bootstrap modal wrapper; migrate gradually.
FE-4Modularity and compositionDesignLowHighBloated component and hard to maintainSplit component into smaller part

Back end teachnical debt

####ItemCategoryImpactProb.Risk / debtMitigation
BE-1Country data not normalisedArchitecture / dataMedHighFree-text country in 5 tables → duplicates & join pain.Introduce country dimension via Flyway, back-fill from open DB, FK.
BE-2/api context-path workaroundAPI designLowLowBreaks tooling (OpenAPI links), extra reverse-proxy rules.Remove prefix in Spring, adjust paths.
BE-3No HATEOAS / self linksAPI evolutionLowMedClients must hard-code URLs; harder versioning.Add Spring HATEOAS gradually (start with RFQ).
BE-4Tech-spec validator ties to JSON columnMaintainabilityMedMedEach new spec => code change; risk of drift.Validate against technical_specification dimension instead.
BE-5Privileges unusedSecurityLowMedCoarse RBAC may be insufficientMap routes → privilege, add method-level @PreAuthorize.
BE-6JWT blacklist table growthPerformanceMedMedMillions of tokens → DB bloat, slower auth calls.Shrink TTL to 30 min + drop blacklist (use short validity).
BE-7Light websocket auth rulesSecurityHighLowPotential info leak via STOMP topics.Harden MessageMatcherDelegatingAuthorizationManager; topic pattern checks.
BE-8Missing pagination on notificationsPerformanceMedHighLarge notification set → OOM / bandwidth.Add Pageable to /notifications, adapt store.
BE-9Sequential TruckSpecificationBuilderMaintainability / perfLowMedEach new filter => code change & query slowdown.Consider JSON→PostgreSQL GIN index or switch to doc DB.
BE-10Partial RFQ versioning (no history)ComplianceHighMedCan’t trace contract changes; legal exposure.Introduce RFQ revision table + Envers audit; expose /versions.
BE-11Zero cache layerScalabilityMedMedHigh DB load in growth scenario.Use Spring Cache (Caffeine) on reference data.
BE-12Unit-test style divergenceQualityLowHighHarder PR review & onboarding.Implement Sonar scan + adapt styling with a linter
BE-13Entity Functional Numbering logicArchitecture DataMedHighConcurrency issue with numbering creation of (RFQ, Quotes and Registraiton isssue). AS the MySQL engine can't manage to auto increment on the same table a manual sequence creation has been impleemnted and might cuase race conditionGeneralizre and refactor the numbering features by using read only logic or migrating towards a PostgreSQL

CI/CD & Infrastructure debt

####ItemCategoryImpactProb.Risk / debtMitigation
CI-1MySQL Docker runs as root / single userSecurityMedMedPrivilege escalation if container breached.Create dedicated DB user with least privilege; add USER mysql in Dockerfile.
CI-2Private repos under personal accountGovernanceHighMedBus-factor = 1; IP ownership unclear.Migrate to corporate GitHub Org + self-hosted registry.
CI-3University VPS prod hostingOps / SLAHighMedTime boundedMove to corporate cloud tenancy;
CI-4No pipeline security scanningSecurityMedMedVulnerable deps may slip to prod.Add a Trivy scan