Agile Architecture
Every product is unique and needs a tailored architecture. The goal is to identify an architecture that evolves with new requirements and constraints. Constraints are new technologies, regulatory changes or improvements in reliability and scalability.
- Transform the architecture to a more modular solution
- Validate continuously the design against the requirements
- Identify and automate fitness functions to verify constraints
- Move from a monolithic to a service architecture
Agile cross-functional teams implement and deliver features to the customers. We have extensive experience defining architectures, empowering multiple teams to work on the same product and effectively and efficiently implement new features.
- Implement domain-driven development and architecture
- Use event storming to identify domain ubiquitous language
- Establish DDD as an architectural approach to microservice solutions
- Identify bounded contexts to promote parallel development
Successful products outlive their initial development teams and selected technologies. We must implement approaches to ensure the source code and architecture provide a sound foundation for long-term support and product support.
- Create a clean code culture and promote software craftsmanship
- Show how static analysis tools are a lifesaver to improve the quality of code
- Detect errors, vulnerabilities and smells
- Use refactoring patterns
- Establish test-driven development - TDD -
- Establish acceptance test-driven development - ATDD -
Lean approach encourages reducing cycle time. DevOps provides an optimal approach to deliver rapidly and with high-quality applications in production.
- You build it, you deploy it, you run it
- Optimise cycle time and lead time in your product development
- Institute configuration as code
- Implement continuous integration, delivery and deployment pipelines
- Establish automatic validation and verification
- Deploy tracing, logging and monitoring