Resource allocation in a software project is crucial for successful software development. Among various types of resources, human resource is the most important as software development is a human-intensive activity. Human resource allocation is very complex owing to the varying human characteristics of developers. The human characteristics affecting allocation can be grouped into individual level characteristics and team level characteristics. At the individual level, familiarity with tasks needs to be taken into account as it affects the performance of developers. Also, developers have different levels of productivity at the individual level, depending on their capability and experience; the productivity of developers also varies according to tasks. At the team level, characteristics such as team cohesion, communication overhead, and collaboration and management also affect human resource allocation. As these characteristics affect the efficiency of project execution, we treat them as constraints of human resource allocation in our approach. We identify individual-level constraints and team-level constraints based on literature and interviews with experts in the industry. With these constraints, our approach optimizes the scheduling of human resource allocations, resulting in more realistic and efficient allocations. We also provide a guideline supporting various factors, with respect to roles and module characteristics, to estimate productivity of developers based on COCOMO II. Since productivity data are hard to obtain and manage, our guideline can provide a useful direction for human resource allocation in the case of software projects. To validate our proposed approach, we document a case study using real project data and artificial data.