Почитайте про метод функциональных точек. Достаточно старая методология. Если сильно упрощенно (!), то разбиваете весь проект (функциональность) на мелкие элементы - в плодь до таблиц БД, форм ввода и тп, до сущностей, время разработки которых вы можете оценить. Оцениваете на основе имеющегося опыта, например сколько времени у вас займет кодирование формы ввода, проектирование таблиц БД и их связей, интерфейсы c внешними системами ... Для такой декомпозиции нужно понимать архитектуру приложения. У каждого языка свои особенности, тоже надо учитывать. Если опыта маловато и коллег тоже нет, пообщайтесь на специализированных форумах, поищите ресурсы всети