Software development is a complex process that involves a number of distinct phases, and may employ the skills of a significant number of people over an extended period of time. Some software projects are relatively trivial affairs that can be completed relatively quickly by a single developer working alone; others may require months or even years of work, involve hundreds of developers and support staff, and span multiple geographical locations. Most software projects fall somewhere between these two extremes, but will still require a number of people to work together if the project is to be completed successfully. The process begins with the identification of a problem to be solved, and ends with the deployment of a working software solution. In these pages, we will be looking at the activities involved in software development, including defining the problem to be solved, identifying a set of system requirements, designing and implementing an appropriate software solution, deploying the system in the target environment, and carrying out software maintenance.