First step is planning
Viznet proposes the work to be executed in 2 – 4 weeks time-boxed implementation cycles. Each iteration shall be preceded with a starting (sprint planning) meeting,. The project team (Viznet & Customer) will jointly agree the goals and priorities for the work including the new User Story / Use Case which will be the subject of the new scope.
The project team may also propose a selection of defects to fix or other wok that developers should perform during the cycle. The development team will then break the requirements into activities and capture estimates of how long each task will take to perform. Based on this information the detailed iteration plan will be created and approved.
Requirements analysis and design
In order for each Sprint to deliver expected results, Viznet intends to start it with requirement analysis activities. This phase can also be conducted at the end of the previous Sprint. Purpose of this activity will be to capture and validate functional and non-functional requirements, discuss and agree its’ content and expectations.
Technical design activities may also be executed so that overall system architecture is continuously updated. In order to facilitate the communication between stakeholders, Viznet will involve necessary tools, techniques and deliverables –e.g. workshops, system mockups and prototypes.
The main objective of the prototype is to demonstrate to the users how the business functionality specified will be automated. This activity will help to foster a common understanding between users and developers of the system around the actual user requirements, and to facilitate the acceptance by the users of the system specifications and their future implementation, thanks to early and frequent feedback cycles. Handling of non-functional requirements will be made in technical prototypes.
Test Driven Development
The later stages of the development cycle involve modelling, coding and unit testing activities. They are based on Test Driven Development (TDD), where developers create automated unit tests that define code requirements (immediately) before writing the code itself. These unit tests contain multiple assertions (returning true or false) that could be used to rapidly verify correct behaviour of the code being tested.
Once the produced code passes unit tests, it could be refactored and cleaned up. Developers will be able to ensure code staying stable in the process, by running unit tests frequently. The system documentation will also evolve during this iteration.
Testing might also be executed as a separate phase (Sprint), with involvement of dedicated testers. Our extended functional tests approach assumes creating Test Data and Test Cases for each requirement based on Use Cases / User Stories as described in relevant specification document(s). Traceability matrix is created to keep track of the link between Test Cases and requirements. Test Case includes a description of the functionality to be tested, and the preparation required to ensure that the test can be conducted (prerequisites). At least two test cases for each requirement are created – one positive test and one negative test – in order to fully test that all the requirements of an application are met.
Each development cycle will be completed with a software release and necessary documentation, and Release Notes including list of new functionalities implemented in the update. Completed release will be delivered to Customer via secure platform and installed on the Viznet test environment so it is ready for Customer for “Iteration Acceptance Testing”.