A Step-by-Step Approach to the Product Development Process at Divum

Product development, also referred as New product development, is defined by a series of steps required to take a product from conception stage to the market. It refers to the process of transforming untested ideas into usable products. With the emergence of new technologies and methodologies, the approaches to product development processes are constantly evolving. However, the purpose of product development is to increase a company’s market share by meeting consumer demand. Today, we'll explain how Divum approaches product development, including our prototyping, software design, and development processes.

Through this blog, we aim to give you an insider view of how we strive to develop innovative solutions to address business challenges.

Using research, collaboration, and technology, we create a solution that works for customers. To lower development costs at Divum, we focus on numerous aspects of the process rather than addressing a single challenge.

1. Requirement gathering from the client:

When beginning the development of a new product, the first step is to contact the client and determine his necessities. This allows us to arrange the development process efficiently.

2. Idea Generation and Conceptualization:

Once the client has provided a clear picture of the problem, we begin the brainstorming process. The conception phase determines the product's direction since, once an idea is finalised, the priorities for building that solution are easily set. This also allows us to plan our efforts more precisely.

3. We use the best contemporary practices/tools for UI/UX Design Process:

Once the concept has been finalised, the next stage is to draught all potential designs for the users. We use Agile and Lean principles in our UI/UX design here. Our team works closely with the front-line employees who will be interacting with our product to ensure that every pixel of their interaction looks and feels natural and that they are not needed to make superfluous clicks.

UI design - Sketch:

During the UI design phase, Sketch and Invision are the primary tools utilised. These tools enable us to sketch concepts before transforming them into high-fidelity prototypes. Using Invision, we also generate conversations, which improves our communication with clients.

Wireframe:

It is crucial to accurately describe your wireframe designs to the client so they can fully comprehend how their product will function. We primarily utilise Photoshop for this purpose at Divum. Before beginning development, we must confirm that clients understand the interaction techniques, hierarchy, and content flow of their primary sites.

Prototype - Invision:

After sketching and wireframing all of our clients' designs and receiving their approval, we then create a high-fidelity prototype of their product. We utilise Invision, a tool that facilitates the creation of highly interactive prototypes. Additionally, we produce an interactive PDF for our client to use as a brochure to promote the new product.

UX Design - Mural

After constructing the prototype and receiving client approval, we then design the product's user journey and interaction. We use a unique tool Mural to create flowcharts of the user's journey, which enables us to create a more user-friendly experience.

Design handover to the developer - Zelpin, Figma:

The product is designed using the latest tools, and the design is then handed over to the developers. This procedure is crucial because the design handoff is the initial step that allows us to begin actual development. We primarily use Figma and Zelpin to design our interfaces.

4. Best contemporary practices/tools for Software Development methodology

We adhere to the best software development practises as part of our product development procedure. We follow the agile and lean product development methodologies. Appian, a tool with features for each phase of the software development lifecycle, is also available (SDLC).

3.1. Tools: Github, Bitbucket:

For source code management, we use Git and Bitbucket. We commit our changes every week and push them onto the main repository.

3.2. Test-driven development with automation testing:

We use BDD or Test Driven Development. We follow the principles of TDD to ensure that we have a stable and error-free code base. We test all the architecture and design components before writing a single line of code. Once the design is approved, we begin writing software, including testing our work weekly.

3.3. Continuous Integration:

Continuous integration enables us to deploy our software as frequently as possible without modifying the source code. This helps us avoid issues that could arise when using a Legacy development process, which is very time-consuming and risky from an ongoing development perspective.

3.4. Best code review practices:

Code review enables us to fix minor issues and prevent the occurrence of major bugs. Github is used for this purpose. We must adhere to these best practises because a good code review process ensures the highest quality of our work. In addition, this allows the developers to work efficiently on their code without having to worry about a variety of factors in the future.

5. Best contemporary DevOps practices/tools (Source code management, build & test, continuous integration, deployment & monitoring):

We use all these practices to ensure a perfect workflow (source code management, build, test, continuous integration). We also deploy our products on Docker containers to ensure that our software is always running smoothly while also avoiding many issues associated with legacy methods.

4.1. Source code management - Design, Code & Store (supported by tools like Git):

We use Git for source code management. The design, code, and store tools from Design, Code & Store allow us to efficiently manage our source code. This will reduce the number of errors we would otherwise encounter when utilising legacy methods.

4.2. Build & Test - Build Application from Code Repos & Test (supported by tools like Gradle and Selenium):

Gradle and Selenium are utilised for application development and testing. In addition, a code review is performed prior to each release.

4.3. Continuous integration & deployment - Automate Builds and Deploy with Docker & Terraform:

Continuous integration helps eliminate manual tasks by automating them, thereby improving the efficiency of our project pipeline. This not only saves us a great deal of time but also ensures that our software contains fewer bugs. Docker is used for server-side automation, while Terraform is used for management.

Terraform is an automation tool that facilitates the management and integration of our infrastructure with the rest of our software systems.

4.4 Monitoring:

Monitoring is one of the most important software development practices, especially when using agile methodologies such as BDD or TDD. In addition, we use Graphite, Nagios, and Prometheus to monitor our environment using real-time data and at a glance. This allows us to quickly resolve issues before they worsen and wreak havoc on the entire system. This monitoring tool is used to identify specific release and infrastructure issues.

6. Product Development using SCRUM/Agile Methodology:

We use Agile principles at Divum to create a high-quality product that meets customer expectations.

5.1. Scrum Values and Principles:

Every sprint, we prioritise giving value to our clients and ensuring that all of our work is valuable, which enables us to comprehend the significance of being flexible, working swiftly and effectively for the client, and being adaptable throughout a project. We build trust and transparency, respond quickly to change, and adapt to change easily.

5.2. What is Scrum?

Scrum is a lightweight framework for managing a product development process and coordinating it with other processes, such as testing and quality assurance (QA), to ensure on-time delivery.

To keep control of our product development process and ensure that it is aligned with the client's business objectives, we stick to the scrum methodology. We prioritise the creation of a product with just enough complexity to solve a single problem and, more crucially, the delivery of maximum value from each sprint. For instance, if we can construct a Minimum Viable Product (MVP) that will generate income for the customer, we will do so; otherwise, we will design a solution to tackle many problems prior to beginning the development process.

A. Sprint Planning:

We organize our work in 7-day sprints, which is a time-boxed agile method in which we provide functional features to the client. We do it by establishing a deadline at the conclusion of each sprint. This allows us to concentrate on delivering value to the client rather than on product development.

B. Daily Scrum:

Each team member must provide a status report at the end of each day against which the team is evaluated and rated. This method is known as "Daily Scrum." It enables us to comprehend the efficacy of our job and arrange new tasks effectively.

7. Project management:

We use JIRA to manage all aspects of product development, from requirement gathering to testing and deployment. This helps us create backlogs, write stories and tasks, and manage bugs within a single platform. This allows us to effectively communicate with our clients in real-time and solve any issues before they occur. It also saves time by enabling us to create work items before they are needed instead of when they arise.

We use JIRA to manage our source code so that we can generate tickets and assign tasks and requests to different team members. These tasks are incorporated into Github so that developers can view their notes without manually reviewing each issue. Gitlab is one additional tool we use. We push our weekly modifications to the main repository in order to collaborate with other teams in an expedient manner.

8. Testing:

We use the Best contemporary practices/tools for Testing methodology (Automation, Manual) to ensure that your software is reliable and robust.

7.1. Functionality testing:

Every sprint, we undertake functional testing on our software to ensure that the product is fully functional and includes all expected features. Manual testing is performed to check a solution's functionality, design, and usability before it is constructed using automated methods, such as test automation. This aids in ensuring that the constructed product performs its intended function. It also guarantees that the user experience (UX) of the programme is compatible with our beliefs and objectives.

7.2. Integration Testing:

Our software also undergoes frequent integration testing to guarantee that all features function as planned. Integration testing is an automated form of functional testing that verifies the interoperability of software components, such as when data is passed across components. Consider, for instance, an application with a client database and an order system. In such a scenario, the customer database should interface with the order system in order to register a new client and convey all pertinent information. Functional requirements can be tested with the assistance of integration testing.

7.3. Regression testing:

If a new feature is added to the software, regression testing is conducted to confirm that everything is functioning as expected. After implementing a new feature, regression testing ensures that no other features stop operating as planned. This allows us to spot problems even before they occur and prioritise their resolution.

7.4. Smoke Testing:

Smoke testing enables us to rapidly detect and solve faults, thereby preventing errors from entering the product. Smoke testing is a sort of automated functional testing in which new features are tested by users prior to their stability. This enables us to detect issues rapidly so that we can repair them and ensure that the product functions as intended.

7.5. System testing:

We perform system testing at the end of a sprint to ensure that every feature works as planned and every requirement is satisfied. This helps us ensure that the product is reliable and robust and meets our standards.

7.6. Compatibility testing:

We do compatibility testing to ensure that our product is compatible with those of other vendors. This is accomplished by ensuring that our product is compatible with the products or devices of other manufacturers. For instance, we can assure that our application is compatible with Windows XP, Vista, Windows 7, Windows 8, and Mac OS X.

7.7. Localization testing:

We conduct localization testing to verify that our product supports multiple languages. This is accomplished by localizing our software for various languages. For instance, we can assure the functionality of your application in English, German, Spanish, and Japanese.

7.8. API Testing - Postman:

We use Postman to replicate user interface (UI) actions and ensure that we can pass data between the UI and the back-end of our product. This helps us ensure that the front-end and back-end of your product work together as expected.

7.9. Performance & Load Testing - (Jmeter, gtmetrix tool )

Regular performance testing is conducted by our software developers to ensure that our product operates as efficiently as possible, without slowing down or crashing. Performance testing examines the responsiveness of software to certain conditions, such as increased demand or usage, altered conditions, etc. Load testing is the process of utilising a predetermined number of network users to determine whether or not an application is stable under heavy load. We use Jmeter and gtmetrix to ensure that the performance of your product meets expectations.

7.10. Automated Testing - Selenium tool (Web App), Appium tool (Mobile App), Katalon tool (Web & Mobile App)

To increase team efficiency, we test our applications with automated testing tools. The Selenium tool simulates actual user interactions, performs touch and gesture testing, and automates other tasks. We employ Appium for mobile devices and Katalon (Web & Mobile) for web applications. The automated testing allows us to identify bugs and issues prior to their occurrence so that they can be resolved promptly.

Regular web scanning is performed to ensure that your product's website is not vulnerable to any vulnerabilities or attack vectors, and that your application has the most recent security updates to protect data from attacks by hackers and malware developers.

9. Security tools we use to help you get the most secure product: Best contemporary Security practices/tools (HIPAA, GDPR, ISO, PCI DSS, FDA) (such as Firewall, IDS/IPS, DLP)

8.1. Application firewall:

We can use an application firewall to prevent attacks from reaching your target system. This is accomplished by installing a network filter that applies rules to network traffic so that it complies with your security policy and meets your specifications. For instance, you can configure a perimeter firewall to prevent potential attacks by using specific ports or IP addresses in your application.

8.2. Intrusion detection system (IDS):

We can use an IDS to identify and prevent attacks on your data by monitoring network traffic for specific patterns. This allows us to detect threats and vulnerabilities as quickly as possible in order to prevent their occurrence.

8.3. Intrusion prevention system (IPS):

We can use an IPS to enforce restrictions by monitoring network traffic to identify possible malicious traffic and blocking it before the attack occurs. For example, if a hacker is found accessing the firewall, we can block access, so they are unable to take control of the computer or device.

8.4. Data loss prevention (DLP):

DLP can be used to prevent data-loss attacks by analysing network traffic to identify and eliminate potential threats, such as sending or accessing sensitive data. DLP can prevent the theft of credit card information from your computer by blocking the specific ports that handle credit card numbers.

8.5. Antivirus:

Antivirus software searches for specific files, signatures, and other identifiers in your network traffic to identify potential threats and viruses in various files on your computer or device before they even occur, allowing you to fix them before they can cause damage.

8.6. Cryptography:

We use cryptography to encrypt your data so that no unauthorised parties can view or access it. Cryptography enables us to secure our data and systems so that attackers cannot view or interact with them without the correct "key." We can, for instance, encrypt your passwords so that no one can view them on your server. This assists us in protecting our clients' information and ensuring their privacy and security.

What inspires us to evolve and follow the above product development method?

Our product's development is affected by a multitude of factors. Our clients have always been an inspiration to us, primarily because the majority of them work in industries with inherent data security and privacy concerns. We intend to develop a product solution that addresses these issues, which necessitates that we adapt to new requirements. Every time a client introduces new requirements or requests an upgrade to their existing system, we update and evolve it to keep it current. Our rapid rate of development enables us to respond rapidly to the needs of our clients and provide tested, reliable solutions prior to going live on the market.

Summary:

Our method of product development is flexible and adaptable to a variety of industries and application requirements. We have developed a rapid development platform that enables us to rapidly develop, test, and deploy data security systems for our clients who are either in the healthcare industry or are required to comply with data protection regulations such as HIPAA or GDPR.

We utilise a variety of tools, resources, and procedures to ensure the most efficient development process possible. Our engineers and developers use best practises to ensure that the solutions we develop are dependable, secure, and scalable.