Software cost and effort estimation involves many parameters that affect the actual estimates, making it difficult to consider all cases. Key factors in estimation include resources, timelines, human skills, costs, and project scope. Common techniques for software estimation include work breakdown structures, three-point estimation, function point analysis, and analogy methods. Estimation is an iterative process that involves scoping the project, decomposing it, sizing components, gathering expert opinions, and aggregating estimates.