Stages & Methodology for Software Design
Our well-established approach is inspired by agile best practices and is specifically tailored to get you to a working product faster.
With traditional project management methods, detailed analysis of the entire solution was done upstream. This was very time-consuming and costly, and delayed the start of development. Inevitably, changes and clarifications had to be made during the project. Often, more effort was put into managing change requests than providing value by developing important features.
For these reasons, our approach provides you with an easy entry point and a flexible project. We adapt to changes by regularly asking for your feedback, which is a key part of our day-to-day work. This results in a more successful project and a higher return on investment (ROI) for you.
We’ve helped our clients achieve:
Our approach values collaboration with your stakeholders and is comprised of three phases:
During the discovery phase, the first step is to learn about your current situation and/or the problems you are trying to solve. To do this, we will review the documentation you have and meet your stakeholders. From the information gathered, we will write your requirements in the form of user stories, estimate their relative size, prioritize them according to their ROI, then tentatively assign them to upcoming weeks. This forms the initial project plan.
For larger projects, this phase may only be used to discover the highest priorities. A single project could therefore have several discovery phases.
The development phase is an iterative cycle during which we build your custom solution piece by piece.
- Planning Stage – We add detail to each of the user stories selected for the iteration in the form of acceptance criteria.
- Design Stage – We create high fidelity design that will define how the final product will look and interact with users.
- Build Stage – The whole team collaborates to implement the features that meet the agreed upon acceptance criteria and design.
- Testing Stage – We verify that the implementation meets the functional, business and design quality standards, both internally and with you via User Acceptance Testing (UAT). This will allow us to gather, triage and incorporate your feedback.
During the deployment phase, we implement the new features in your production/live environment, so that your users can benefit from them. This may occur several times during the project, depending on the needs of your stakeholders. It is also possible that new needs will emerge from your users, and we can prioritize them so that they can eventually be part of a next development cycle.
After each deployment, it is also important to ensure the monitoring and maintenance of your solution, as well as respond to any support requests that may arise.
Learn more about our Discovery Phase methodology
Developing a custom software system demands a mutually clear understanding of project outcomes, stakeholders’ needs, and user habits to achieve desired business goals. This can be challenging, given that the information required is typically scattered across the organization in the form of stakeholder knowledge, unspoken rules, outdated documentation, and legacy software. Identifying sources of information, eliciting information from these sources, and panning through them until only reliable information remains are all critical tasks for a project’s success.
These tasks cannot be completed in a single swoop at the beginning of a project because all stakeholders (both on the business side and on the implementation side) are limited by the context we are in, and our limited knowledge and understanding of the project. It isn’t easy to provide reliable information for something that doesn’t exist yet.
Because of that, the best way to obtain reliable information that will drive our project to success is to gradually put small chunks of features into the hands of the users, gather feedback, and measure the outcome. We can then use the information gathered to adjust the direction of our project and ensure we are always making informed project and design decisions. We rinse and repeat until we have a product that’s good enough to be put into production.
To help set up such a work rhythm, we will conduct a lightweight discovery phase.
Upon agreement and payment on the number of hours required for the discovery phase, we will start the discovery process to:
At the end of this process, the client will receive a tentative delivery plan defining the Minimum Viable Product (MVP) expected for the application, consisting of a backlog of estimated and prioritized user stories. The delivery plan will specify the duration and number of iterations required to deliver the MVP. Non-functional requirements, such as usability, security, reliability, and performance expectations, will be confirmed during the discovery phase.
The development and testing environments will be set up. Other preparation work will also be conducted, such as setting up the project management tool for collaboration, gaining access to various systems and networks, and aligning on communication and responsibilities. The goal is to ensure we can hit the floor running once implementation starts.
Design-wise, we will determine and validate the technology stack and high-level architectural design, the overall look and feel of the solution, and optionally produce low fidelity UI/UX designs to facilitate future communication.
This approach will allow us to set up a work rhythm, let the project team adopt a certain level of autonomy, and produce reliable indicators for project management.
The discovery phase is the foundation upon which all other iterations and the final project will be based.
At the end of this process, the client will have the following:
- Confirmation of project objectives and key metrics
- An initial project plan outlining the scope, priority and tentative schedule of the project
- An RACI/organizational chart clarifying each stakeholder’s responsibilities
- A development and testing environment
- A communication plan keeping meetings effective and efficient
- A list of non-functional requirements, such as expected penetration tests, supporting languages, performance, availability, response time, recovery time, portability, maintainability, standards and compliance, operating environments, etc.
- Confirmation of the required technical documentation, especially with regards to regulation and compliance
- Confirmation of the number of users and licenses required
- If integration with third-party services is involved, a context diagram describing the technology choices of the conceptual design of the system and how data flows between them
And, if applicable:
- Low-fidelity UI/UX designs to facilitate communications
- A data migration strategy from the legacy system
- A document clarifying and establishing development standards for all parties involved in the implementation
- A technical proof of concept to help determine the architectural design of the system
After this process, Direct Impact can suggest the budget required to complete the project or phases of the project based on the scope identified.