ScienceSoft's Practices for High-Quality Software Development
Quality is deeply rooted in our culture. Our NPS being ~60%, we guarantee high customer satisfaction with project outcomes due to:
- ISO 9001-certified quality management system comprising policies, processes, and teams.
- True seniority of our specialists, which means proven tech proficiency, proactivity, and self-management.
- Result-driven KPI-based project management.
To substantially reduce quality-related risks, we introduce quality measures as early as the project's inception stage – when we explore the client's needs.
Our key quality management processes and activities at this stage:
- Preparing a business case to give a clear understanding of the project costs, investments and ROI.
- Describing a detailed project plan, ensuring it corresponds to the client's needs and expectations regarding projected deliverables, time frames, and budget.
- Devising a quality plan.
- (optional) Signing a quality agreement as an appendix to the contract or work order.
- Establishing effective, tailored communication with a client's stakeholders. See an example of our collaboration process
- Conducting initial risk assessments (including ones related to regulatory compliance, cybersecurity, and unplanned efforts) and openly discussing them with a client. Drawing up a high-level risk mitigation plan.
- Assembling a project team consisting of pre-vetted specialists best corresponding to a client's needs and approved by a client. See a sample profile of our JavaScript developer
- Drawing up a collaboration plan aimed at meeting project goals with maximum efficiency.
At this stage, we devise the solution, elaborate on the project plan, and agree on how we will measure the project's success.
Our key quality management processes and activities at this stage:
- Creating a detailed project roadmap, defining milestones and describing processes to ensure the successful completion of milestones.
- Defining KPIs that will allow stakeholders to track the project's progress and us – to optimize and improve our efforts continuously.
- Creating detailed requirements specifications.
- Reviewing functional and non-functional software requirements to improve their consistency and completeness for the development process and testability. Creating requirements traceability matrix.
- Eliciting all possible risks related to the software development project and preparing a comprehensive risk mitigation plan.
- Creating a high-level test plan with the defined QA and testing activities.
3.1. Architecture, UX and UI Design
At this stage, ScienceSoft's experienced architects design high-performing, reliable, and scalable architecture for future software. See an example of software architectures we build
The UX researchers study the target audience, its needs, and behavior, while the UI designers create UI kits and prototypes aimed at high user engagement, retention, and ease of use.
Our key quality management processes and activities at this stage:
- Performing requirement cross-review by senior people.
- Handing over a feature to developers only when the feature DoR is created.
- Regular feature grooming.
- Close collaboration of architects, UX and UI designers with the testing team.
3.2. Coding
At this stage, we deliver software front and back end, APIs, and integrations in 2-4 week Scrum iterations.
Our key QM processes and activities at this stage:
- Following unified code rules and specific rules for certain programming technologies.
- Performing regular unit testing and code reviews (ad hoc reviews, pair programming, walkthrough, etc.).
- Controlling code quality metrics: Maintainability index (MI), Cyclomatic Complexity (CC), Depth of Inheritance, Class Coupling, Lines of code, Halstead Volume, and other metrics specific for the software types developed with a particular technology. See examples of the code we write
- Introducing Infrastructure as a Code and performing relevant unit tests, establishing CI/CD pipelines, automating application monitoring, automating development, test, and production environment configuration.
3.3. Rigorous testing
This stage runs in parallel with development. User stories are handed over both to developers and testers, and test cases are created while the development runs. When the development is over, test cases are validated by the QA manager. After test cases are executed, automated regression testing is executed.
We adhere to the shift-left approach, starting testing activities closer to the beginning of a sprint or iteration. We believe most tests should be unit tests, while the fewest tests are functional UI tests. As a rule, unit tests are quick and inexpensive to produce and maintain but provide a high return on investment by ensuring that key functions work. While there are fewer functional UI tests than unit tests, they are critical for verifying that software works correctly and delivers business value.
Our key quality management processes and activities at this stage:
- Drawing up a test strategy, plan, and documenting all test cases and scenarios for automated tests, test scope, acceptance criteria, and all test findings based on ISO/IEC/IEEE 29119-3:2021. This makes the process manageable, thus allowing for timely process improvements, as well as helping the development team quickly act on the testing findings.
- Following the IMAAT (Integrated Manual and Automated Testing) approach. It implies using the most feasible degree of automation to ensure the highest quality while minimizing costs in the long run. We define the degree of automation based on the specifics of each project. For example, we advise automating effort-consuming regression and end-to-end testing. API, stress and load, capacity, and security tests are automated. We integrate auto-tests into the deployment pipeline, which makes software delivery predictable and safe.
- Testing every feature manually during acceptance and ad-hoc exploratory testing.
- Analyzing test results, evaluating testing, and performing additional testing if necessary. See an example of our test summary report
This is the stage where ScienceSoft provides a build or ready software to the customer.
Our key quality management activities at this stage:
- Providing clear project documentation.
- Providing KPI-based quality summary reports that describe the overall build quality,
- Providing a test result report describing the testing progress, defects validation results, and invested efforts.
This is the stage where we maintain, support, and evolve the solution according to the changing business needs. With ScienceSoft, the customer can be sure that the developed software remains of high quality over time, evolves according to the changing business needs, and brings high user satisfaction.
Our key quality management processes and activities at this stage:
- Maintaining effective communication with a client's business and technical stakeholders.
- Recommending and implementing adjustments, changes, and new functionality via CI/CD pipelines.
- Testing new or changed functionality and running comprehensive regression testing.
- Following the ITSM-based approach and applying the ITIL best practices.
- Ensuring the high performance of support teams (KPI-based approach)
- Optimizing cloud resources (for cloud applications).
All about Our Approach
Behind the Scenes