Here you will find all tactics for the quality characteristic Maintainability.
Modularity
Also supports: Analyzability, Appropriateness
Domain-Driven Design
Structure software architecture based on the business domain
Here you will find all tactics for the quality characteristic Maintainability.
Modularity
Also supports: Analyzability, Appropriateness
Structure software architecture based on the business domain
Modularity
Also supports: Modifiability, Testability
Divide functionalities into clearly defined, independent areas
Modularity
Also supports: Reusability, Testability
Divide application into small, independent, and reusable components
Analyzability
Clearly distinguish extensions from existing code parts
Modularity, Analyzability
Also supports: Modifiability, Reusability
Structure system architecture into independent, interchangeable modules
Modularity
Also supports: Modifiability, Analyzability, Replaceability
Divide software system into logical layers with clear responsibilities
Reusability
Also supports: Modifiability, Analyzability
Apply proven solution patterns for recurring design problems
Analyzability
Also supports: Modularity, Interoperability
Decouple the internal design and logic of a system from external influences
Analyzability
Also supports: Modifiability, Capacity
Review software architecture systematically and regularly
Modifiability
Also supports: Appropriateness, Testability
Develop a minimal, running system with the core architectural ideas
Modifiability
Also supports: Maturity, Testability
Validate that an architecture will remain maintainable under expected growth
Analyzability, Modifiability
Structure source code according to established principles for readability and maintainability
Modularity
Also supports: Modifiability, Reusability
Apply fundamental design principles for object-oriented programming
Modifiability, Analyzability
Restructure code regularly without changing external behavior
Modifiability, Analyzability
Perform regular exercises to improve code quality
Analyzability
Also supports: Testability, Integrity
Review source code automatically for potential issues
Analyzability
Also supports: Modifiability, Integrity, Correctness
Review source code systematically through peer feedback
Analyzability
Also supports: Modifiability
Remove superfluous or obsolete code from the codebase
Analyzability, Modifiability
Also supports: Co-existence
Systematically mark and gradually remove deprecated features
Analyzability, Modifiability
Also supports: Testability
Solve complex design and debugging challenges as a group
Analyzability
Also supports: Testability, Integrity
Two developers work together on a task at one workstation
Modifiability
Also supports: Analyzability, Testability
Improve code quality through public code review, transparent issue tracking, and external contributions
Analyzability
Also supports: Modifiability
Define and enforce uniform guidelines for code formatting and structure
Analyzability
Also supports: Testability
Collect and analyze quantitative code quality measures
Analyzability
Ensure code quality through standardized, automated checks
Testability
Also supports: Modifiability, Fault Tolerance
Automatically conduct and regularly execute software tests
Testability
Also supports: Fault Tolerance, Interoperability
Conduct tests to verify the interaction of different system components
Testability
Also supports: Modifiability, Fault Tolerance
Write tests before the actual implementation
Testability
Also supports: Completeness, Operability
Develop based on expected system behaviors
Testability
Also supports: Modifiability, Availability
Measure the proportion of code covered by tests
Modularity
Also supports: Testability, Reusability
Manage and inject dependencies between components externally
Modularity
Also supports: Modifiability, Testability
Manage and provide dependencies centrally via a container
Modifiability
Also supports: Maturity, Integrity, Availability
Systematize the management and updating of external dependencies
Modifiability, Testability
Also supports: Availability
Integrate code changes regularly into a shared repository
Modifiability
Also supports: Testability, Analyzability
Force incremental, maintainable design through time-boxed delivery cycles
Analyzability
Also supports: Modifiability
Conduct regular workshops to evolve the software architecture
Analyzability
Also supports: Modifiability, Reusability
Establish a committee for architectural oversight and governance
Modularity
Also supports: Reusability
Define and enforce architectural principles and best practices
Analyzability
Check the alignment of the software architecture with defined architectural principles
Analyzability
Also supports: Interoperability
Verify compliance with architectural guidelines continuously
Modifiability
Also supports: Capacity
Plan and manage architecture development long-term
Modifiability
Also supports: Analyzability, Testability
Systematically track and manage changes to the source code
Modifiability
Also supports: Testability, Availability
Enable or disable functions through configuration switches
Analyzability, Testability
Also supports: Availability
Implement comprehensive logging and monitoring of system behavior
Analyzability
Also supports: Modifiability
Collect and distribute knowledge about the software project centrally
Analyzability, Modifiability
Create and maintain detailed documentation of the software architecture
Analyzability
Also supports: Modifiability
Document important architectural decisions and their justifications
Analyzability
Also supports: Modifiability, Testability
Keep documentation current and accessible as part of development
Analyzability
Also supports: Modifiability, Reusability
Treat and manage documentation like source code
Modularity
Also supports: Interoperability, Reusability
Define and design interfaces before implementing application logic
Analyzability
Also supports: Learnability, Interoperability
Describe interfaces and their usage in detail
Analyzability
Also supports: Modifiability, Reusability
Enhance code with meaningful comments and documentation blocks
Analyzability
Also supports: Modifiability, Operability
Design APIs with natural language-like method chaining
Testability
Also supports: Modifiability, Availability
Test the robustness of software tests through targeted code changes
Testability
Also supports: Modifiability, Availability
Verify software through random inputs and properties
Modularity
Also supports: Modifiability, Reusability
Separate cross-cutting concerns from the main functionality
Modifiability
Also supports: Testability, Correctness
Generate code automatically from templates or metadata
Modifiability
Also supports: Availability
Prepare software changes automatically for production deployment
Modifiability
Also supports: Availability, Completeness
Deploy software changes fully automatically into production
Modularity
Also supports: Modifiability
Divide the application into small, independent services
Modifiability
Also supports: Installability
Encapsulate applications and their dependencies in containers
Modifiability, Reusability
Also supports: Fault Tolerance
Define and manage infrastructure through code
Modularity, Modifiability
Minimize dependencies between modules so changes don't cascade
Modularity, Analyzability
Ensure each module serves a focused, well-defined purpose
Testability, Modifiability
Also supports: Modularity
Isolate business logic from infrastructure through ports and adapters
Modularity, Modifiability
Also supports: Reusability
Decouple components through asynchronous events
Modifiability, Reusability
Replace legacy systems incrementally by routing traffic to new implementations
Analyzability
Also supports: Testability
Implement structured logging, distributed tracing, and metrics
Testability, Modularity
Also supports: Modifiability
Verify service interfaces conform to agreed contracts
Modifiability, Testability
Integrate short-lived branches continuously into main
Modifiability
Also supports: Analyzability
Evolve database schemas incrementally through version-controlled migrations
Modifiability, Analyzability
Identify, track, and prioritize technical debt systematically