BaseFrame Framework
Period November 30, 2007 - November 30, 2013
Roles : Software Architect, Mentor and Developer
Developed for BASE Gestió d’Ingressos (public company under Diputació de Tarragona)
As part of a medium-term strategic initiative designed to fundamentally transform BASE’s software development lifecycle, I developed a framework that standardized design, patterns, and processes involved in the software development lifecycle.
The main goal was to separate the definition phase from the implementation phase: BASE’s internal software designers handled the definition work, while external companies executed the implementation.
The framework is divided into three parts:
- Technology stack (versions, libraries, etc.)
- Procedures
- Architecture, design, and patterns
Actors :
- Functional client (heads of other departments, like accounting, fines, asset taxes, etc.)
- Product owner (responsible for each project)
- Analysts (internal team)
- Developers (external providers)
- System administrator (responsible for providing infrastructure and deployment tasks)
I used a hexagonal architecture approach that we referred to as a “layered approach”, since hexagonal architecture was not yet widely known at the time.
This approach establishes both the component structure for each project and provides guidance on different points of view to consider in the design process:
- Domain layer (models, services, constraints, validators, etc.)
- Testing layer (unit testing class definitions)
- Implementation layer (service implementations)
- Transport layer (client access mechanisms, such as EJBs or REST)
- UI layer (user interaction)
- Packaging and Distribution layer (application packaging and deployment)
Process Workflow :
Phase 1 : Analysis and Definition (by BASE staff):
At domain layer:
- Functional use cases and actors
- Model classes and processes (as interface services or scheduled processes)
- Sequence, activity, and state diagrams to detail previously defined processes
At testing layer:
- Define unit testing for services as JUnit classes with empty testing methods (signaling ’not-implemented')
At UI layer:
- Sequence diagrams for processes with user interaction
- Application menus and sketches of every required window
At implementation layer:
- Infrastructure requirements (databases, message brokers, cron scheduling, etc.)
At packaging and Distribution layer:
- Application packaging requirements
- Deployment specifications for each package (e.g., installation procedures for cron executions)
At the end of this phase, an effort estimation is performed for the development process, and the technical specifications for the public software tender are prepared.
Phase 2 : Implementation (by awarded external company)
Once the public tender is resolved, BASE grants access to code repositories and Maven artifact servers. Development begins with external developers working on:
- Implementation layer: Services and components development
- Testing layer: Implementation of defined unit testing
- UI layer: HTML, JavaScript, and UI implementation assets
- Packaging and Distribution layer: Packaging according to prescribed standards (e.g., EAR, JAR, WAR, etc.)
Development responsibility rests with the awarded company, while the definition process responsibility remains internal to BASE.
Quality Control :
The framework establishes development process control milestones and checklists for each milestone. This serves as a guide for internal BASE staff to monitor progress and receive early alerts on potential issues.
Impact :
This framework was an inflection point for BASE’s software production system. It became more productive, more standardized, and delivered significantly higher quality to the end products built using the framework.
Technology Platform :
- Java SE 6
- J2EE 1.4 (EJB 2.1)
- JBoss EAP 4.x
- Spring Framework 4.x