Best Practice Development

Leverage our over decade-long expertise and best practices in enterprise software development.


We believe in a just-in-time, just-enough level of analysis and requirements definition, and undertake the following process:

  • The Product Owner, along with the Business Analyst and UX Designer will develop the prioritised backlog of user stories that will serve as the basis for development planning during Development phase.
  • For stories requiring a user-interface component, prototypes will be built in lieu of lengthy written requirements. Prototypes will be supplemented by other visual models where necessary (e.g. state diagrams, class diagrams, sequence diagrams), graphical visual designs, and supplementary written functional requirements (e.g. business rules) if necessary.
  • For stories with a light-to-no user-interface component, functional requirements will be documented, including the use of visual models.

Typically, functional requirements and user-interface designs will be elicited and documented in the sprint prior to planned commencement of development, and reviewed with necessary stakeholders throughout that sprint.


We test continually throughout development, and our stories are validated within the sprint before they can be considered “done”.

Developer Testing
Developer testing covers unit and integration testing. Unit tests are run automatically and after every code check-in to verify newly added functionality and regression test existing code. Integration tests are run automatically and do not test all the business functionality or user interfaces of the application.

Functional Testing
Functional testing incorporates both manual and automated testing, as follows:

  • Writing of acceptance tests for each user story, based on the story’s acceptance criteria,
  • Writing test cases for each user story, based on the story’s functional requirements,
  • Assembly of test data,
  • Execution of test cases,
  • Logging of defects and validating bug fixes,
  • Automation of functional tests, covering a target of 100% of smoke tests and 100% of sanity tests
  • Automated regression testing of each release, limited to the scope of the automated tests,
  • Sanity testing of each major release.

Non-Functional Testing
Pertinent non-functional testing is conducted as necessary at various relevant points in the development process: when evaluating or verifying an architecture selection, when basic infrastructure has been established, and when nearing code completion.  Non-functional testing is most often conducted in an exclusive testing environment using tools that are selected during Sprint 0.  This includes high-availability testing and performance testing including load testing, stability testing, volume testing and scalability testing

User Acceptance Testing (UAT)
Most often, our customers will define UAT scripts and execute UAT.  Informal UAT takes place by the Product Owner(s) throughout the Development Phase, in the QA environment, in order to provide early feedback.  Formal UAT takes place during the Production Readiness phase.


Spring writes automated deployment scripts for our software.  Deployments to QA are completed at a frequency that supports the agile development and testing process.  We use Jenkins to support the practice of Continuous Integration (CI) to govern deployments, automatically testing code and reporting issues.  The use of Continuous Deployment (CD) varies depending on the client and project maturity