IoT is trending. Companies invest in new tech...
Discovery Phase of a Software Project: The Road to Innovation Starts with ResearchBack in 2009, Uber became the world’s first company to launch a taxi application with its own fleet of drivers. If Uber had decided to outsource mobile app development and addressed our company back then, we would have never provided the company with an accurate estimate — let alone a Software Requirements Specification (SRS) — straight away simply because the idea was unique at the time.
Custom business-grade software solutions which support real-time data acquisition and processing and help companies achieve their Digital Transformation goals are the Uber of modern days: it is your unique business objectives that define their feature set, technology stack and the level of automation they provide.
That’s why complex and innovative software development projects are always preceded by the so-called Discovery Phase.
What is Discovery Phase in Software Development & When Do You Need It?
Discovery Phase is the initial stage of a software project which involves business analysis and requirements elicitation, technology stack choice, cost estimation and project planning. Its major goal is to ensure a development team is 100% on the same page with the customer and knows how to bring his software idea to life in the fastest and most efficient way.Discovery Phase is usually billed according to the Time & Material (T&M) pricing model. Depending on a project’s complexity and the scope of work, the process can take anything between two weeks and six months.
What are the cases when investing in the software discovery process becomes absolutely necessary?
Case 1: Projects with Unclear or Evolving Non-functional Requirements
In software development, all the things an application is supposed to do from a user’s perspective are considered functional requirements. Non-functional requirements, on the contrary, list tools and technologies that would help developers flesh out the customer’s idea.One of our clients intended to design an intelligent security system powered by motion sensors which would allow homeowners to track movement inside and outside a building. During the Discovery Phase, however, our team found out that the ratio between the measured properties and data output did not meet our customer’s requirements and replaced the motion sensors with passive infrared (PIR) sensors which measure infrared light radiated by objects. It didn’t work either, so the developers opted for connected video cameras and finally achieved the desired results.
Had it not been for the Discovery Phase, our customer could’ve spent weeks (and huge money!) on building a stillborn product!
Case 2: Projects with Vague Functional RequirementsSeveral months ago our Business Development manager got a quote from Breakfast Delivered, a US food delivery startup. The company wanted to launch a food delivery business targeting students on campus and needed a sleek mobile app enabling customers to place an order in 3 clicks.
Although we had a few restaurant and food delivery app projects under our belt, a proper requirements analysis was crucial to understanding the customer’s goals and translating the startup’s business values into the technology language.It took our team (which was composed of a Business Analyst, software architect and Account Manager) approximately two weeks to analyze software requirements and come up with a Minimum Viable Product (MVP) level scope listing the essential modules and features of the application. Those included user profile, breakfast menu, mobile payments and real-time order tracking, as well as the option to split an order between several users. Our customers had only a vague description of the software solution and weren’t sure what features would help users complete the goal (fast order placement) in the most convenient way. They entrusted the requirements analysis part to a reliable custom software development services company and never looked back.
Case 3: Projects that Require Proof of Concept (PoC)R-Style Lab received a quote from a US company that manufactured intervertebral prosthetic gadgets. Those gadgets had unique identifiers, and our client planned to create a custom machine vision application that would automatically decode X-ray images of patients who used the devices. The intended accuracy of the image recognition system was estimated at 90%. In order to reach the goal, we implemented different APIs and software libraries; however, the number never exceeded 70%. In order to boost the system’s accuracy, 4K resolution images were required, and since they were not produced by X-ray machines at the time, our customer decided to postpone the project for an indefinite period.
In this case, Discovery Phase presented no deliverables like a detailed scope of work, estimate or prototypes. What we did is sometimes called Proof of Concept (PoC), which is the evidence that a certain software or hardware solution can be implemented in the real world and be a commercial success. If you want to create an app that makes use of cutting-edge technologies (IoT, Artificial Intelligence, Augmented Reality) and new or 3rd-party APIs which have never been used for this purpose, creating PoC is necessary to test the feasibility of your idea.
Deliverables Produced during the Discovery StageDiscovery’s major purpose is to ensure both you and your vendor are moving in the right direction and understand how to transform your business requirements into high-performance code.
Like other phases of software product development, however, it is designed to produce tangible results. What are they?
First, you get an SRS featuring:
- Functional requirements. A detailed description of all the functions performed by a software system which is written by and for developers (“the user account screen features a profile picture and several fields where personal data including name, phone and credit card number can be entered and edited”).
- Non-functional requirements. These include usability, performance and maintenance requirements explaining how the system is going to facilitate the processes outlined in the functional requirements section.
- User stories. A detailed description of tasks a user can do with the software solution which is written from a user’s perspective.
- Sketches and wireframes. Creating “skeletons” of a website or app page is a great way to outline UI design requirements, specify navigation logic and determine how screens will be linked to each other.
Thanks to prototypes, your software vendor will be able to:
- Conduct early usability tests and gather user feedback.
- Review and make the necessary changes to website and app screens’ structure and navigation patterns.
- Improve the accuracy of the initial software estimates.
Finally, you get the proof there are no technology limits to what you want to achieve — or at least will learn what those limits are and revise your product roadmap.
Estimating Discovery Stage Costs
As a business person, you obviously would like to know how much it will cost you to conduct a thorough requirements analysis and prototype your idea.
Obviously, it depends on the complexity of a software project.With solutions like Breakfast Delivered, the standard “SRS + prototypes” package will cost you approximately $20 thousand if you address a US-based company and $4.2-5 thousand if you partner with a team of Eastern European developers whose hourly rates range from $30 to $35. You’re eying the promising Home Automation market? A complex Smart Home solution may cost up to $5 million (hardware and software included), so $200 thousand spent on requirements analysis seems like a fair price.
According to Pavel Shylenok, CTO at R-Style Lab, you should start your software development journey with the Discovery Phase when market-ready product costs are considerably higher than the requirements analysis itself. Having an SRS and prototypes will give you a clear picture of a software solution, help you save on project management (once you define and prioritize features on the scope, a Project Manager will only have to distribute tasks between your development team and oversee the process) and plan your budget accordingly.