In the broadest sense, all technical activities involved in the production of a program, including analysis of requirements and all stages of design and implementation. In a much narrower sense it is the coding and testing of a program from some given design. This narrower usage is most common in the context of commercial programming, where a distinction is often drawn between systems analysts, who are responsible for analysis of requirements and design, and programmers, who are responsible for implementation and testing.