Web app development

Our activities include everything necessary for web application development – from functionality screening to training of application users. We deliver on demand – should the customer only require a specific type of service, we act accordingly (e.g. coding of specific functionalities, managing the customer’s development team and so on).

Distinctive features of our development

Source: Ken Schwaber et al. (2005). "CIOs playbook for adopting scrum method" (White Paper). Rally Software Development Corp.

Our style of development is agile (i.e. iterative and incremental development, IID), mainly based on “Scrum”, a software management and development technique.

An application is developed through iterations, called “Sprints” (as demonstrated by the picture). Each iteration is a self-contained mini-project composed of different activities. The final objective of an iteration is an iteration release – a stable, integrated and tested system, which is partially complete. All features, requirements, priorities, estimates etc. are captured and maintained in the so-called “Product Backlog”. This is a continuous process. The requirements for next iteration are chosen on the basis of risk-driven decision-making (the most complex features) and client-driven decision-making (the most business-valued features).

Programming through iterations means that testing is not deferred till the end of a project. Integration and testing are not postponed to the end of the month. Requirements and feedback are constantly gathered as we begin to code.

Development is continuous. Feedback is continuous. We detect errors very quickly, while it is still relatively easy to fix them, right then and there.

Languages we specialise in

Ocpea's most frequently used programming technologies are Java (Java EE 5, Java EE 6) and PHP (PHP5 - Zend Framework).

Agile development practices at Ocpea

The following agile development practices are most frequently used at Ocpea:
  • Collective code ownership
    We rotate developers across different modules of the system.
  • Version control
    We always use a concurrent model of version control. Everything related to our projects is stored in version control.
  • Unit testing
    Unit testing can contribute to increased code design and clarity. Properly performed unit tests detect issues immediately. Core design or code changes are only made in case solid unit tests are in place.
  • Build automation
    Process of building is automated, so that it can be used frequently and simply. This ensures that software is functional at any given moment.
  • Early code integration
    When a new part of software is ready, it is integrated as soon as possible. By early code integration, issues that may occur by integrating new features, are detected early.
  • Code reviews
    Code is reviewed and improved periodically. This is essential in keeping the low error rate and improving the quality of the code.
  • Pair programming
    All core parts of an application are written by programmers, sitting side by side, at the same machine.