In general, the most software engineering practices are:
- Build automation
- Project modularization
- Dependency management
- Source code quality checks
- Test driven development
- Acceptance testing automation
- Deployment automation
These practices are not inter-dependent, but some of them are inter-related in the larger scheme of things. One such example would be the relation between project modularization and dependency management. While nothing stops either from being implemented in isolation, they are more beneficial when implemented together.
These techniques can be further supplemented by the industry's best practices such as continuous integration, maintaining centralized repositories, source code integration, and so on.
Source: Srirangan, Apache Maven 3 Cookbook