Requirement gathering 

Regardless of whether a system is being developed from scratch, procured, or customised, a clear process should be followed to understand how the system can answer the needs of the users. This process is often iterative and phased. Additionally, the operation context must also be investigated. Understanding the context in which a system operates significantly affects requirements. Types of contexts to consider are regulatory, scope and outcomes of interest of use, technical standards, and legacy systems.  

Computer analysts use various techniques to discover the functional and non-functional requirements of a system. Functional requirements include what the users want the system to do, and non-functional requirements include aspects that are not directly related to what the system can do, e.g., performance or maintenance.