During the Requirements Analysis phase, we take an in-depth look at your current business processes and how we can address problems or bottlenecks with a custom built solution. This phase is absolutely critical to the current and future success of the software; without it we are building a house without a blueprint. The only way to validate the success of a custom software endeavour is to thoroughly understand what needs to be delivered.
The Requirements Analysis phase also allows us to establish and commit to project scope, time, and cost so there are no surprises. This phase is typically comprised of the following sub-phases:
-
Requirements Elicitation  

Definition: The process through which the clients, buyers, or users of a software system discover, reveal, articulate and understand their requirements.
The requirements elicitation phase involves interviewing the client, or more specifically, the users of the system, in order to establish their needs and/or wants in terms of system functionality. This approach will require a first-hand experience of the business processes currently in place, which will allow us to envision what it is we need to automate. From here, we will be able to develop the best possible solution to increase efficiency of operations.
-
Scope Identification  

-
System Requirements Analysis  

Definition: The process of reasoning about the requirements that have been elicited; it involves activities such as examining requirements for conflicts or inconsistencies, combining related requirements, identifying missing requirements, and confirming the requirements with the client.
The functional requirements that have been identified at this stage will be clearly specified using use cases, which is a popular software engineering technique used for capturing the potential requirements of a new system. Each use case provides one or more scenarios that convey how the system should interact with the end user or another system to achieve a specific business goal. Use cases typically avoid technical jargon, preferring instead the language of the end user or domain expert.
Upon completion, the use cases will be reviewed by the end users of the system to ensure that the system’s functional requirements have been accurately captured.
-
Non-Functional Requirements Identification  

Definition: Non-functional requirements specify criteria that can be used to judge the operation of a system, rather than specific behaviors. This should be contrasted with functional requirements that specify specific behavior or functions. Whereas functional requirements identify “what“ the system should do, non-functional requirements identify “how“ the system should do those things. Examples of non-functional requirements are reliability, scalability, and usability.
-
Requirements Triage  

By prioritizing components of the system based on several key factors, it can be ensured that the most important functionality is implemented in the shortest period of time, resulting in a working system that is deliverable sooner. Some of the key factors to consider when prioritizing requirements are:
- How fundamental the component is to business operations
- How reliant other system functionality is on the feature
- The client’s level of interest in the feature
- Technical difficulty of implementation
-
Estimations and Project Scheduling  

Once the product requirements and architecture have been established and are well understood, project estimations and scheduling may take place. The end result is a more intricate understanding of time and cost, allowing us to commit to a specified scope for within your budget.