1. A computer-implemented method, comprising: identifying a software-based project including one or more functional requirements, the software-based project including computer-implemented programing language code; for each functional requirement, identifying one or more controls flows associated with the functional requirement, each control flow including one or more components; accessing one or more first reference tables that indicate, for a value of a parameter of a respective component of the one or more components, a complexity of the respective component; determining, for each component of the one or more components, the complexity of the component based on a comparison with the one or more first reference tables; accessing a second reference table that indicates, for the complexity of a respective component of the one or more components, an analyze value, a design value, a build value, and a test value of the respective component based on the second reference table, determining, for each component of the one or more components, the analyze value, the design value, the build value, and the test value of the respective component determining, for each component of the one or more components, an analyze-design-build-test (ADBT) effort of the component based on respective analyze, design, build, and test values; and estimating a total effort of the software-based project based on the ADBT effort of each component of the one or more control flows associated with the one or more functional requirements.