Our Development Practices
How we use good practice to ensure you get good quality applications that meet your true requirements
Customer Interaction
We provide all our customers with a password protected web based interface to the project - allowing them to see the state of the project at any time - this includes access to source code, bug tracking, documentation and a working copy of their project. All customers have the ability to log and track tickets assigned to their project.We encourage our customers to visit their portal on a regular basis - this helps ensure our idea of what the project is matches theirs.
Requirements Capture
Before undertaking any work for a customer, we ensure we have solid requirements to work upon. Often this will lead to the production of screenshots or prototypes from us which can be used to demonstrate how we see the system working.Testing
We undertake the following tests on all projects :- Automated Unit Testing
- Performance Testing
- Manual testing
Object Oriented based development
We favour using a rapid development framework we have developed in house, based around PHP, Propel and Smarty for creating applications. It mimics the behaviour of some parts of Ruby on Rails or Symfony, but is more adaptable to our needs.Software Patterns
When developing applications, we tend to follow a number of patterns which help aid development through promotion of best practice. For more information on software patterns see here or here. Our use of patterns, and Object Oriented features is one of the reasons why we only develop using PHP v5 or greater.Separation of Concerns (Model - View - Controller)
Designing a project in a layered MVC style provides a number of benefits, namely :- Ease of maintenance - a web designer can easily change the layout of a page, without impacting the logic underneath. Likewise, the logic can change, while reusing an existing view.
- Separation of concern - we try to avoid doing extensive User Interface work (we're not graphical designers after all), so we either use a design that you provide for us (if you have in-house or preferred designers) or can subcontract the design work to people with real talent.
- Enhanced code reuse - by having all controller and data access code in separate files, it becomes far easier to write a maintainable system with minimal repetition of code.
- Ease of testing - because our code is modular, testing of individual modules and the system as a whole can be undertaken.
Best of Breed Tools
Unless project requirements dictate otherwise, we will use a number of third party, open source tools to aid our development. We have extensive experience of them, and have found them to be invaluable in helping us produce robust, reliable and maintainable applications.For example, when we're developing PHP based applications, we use PHPDocumenter, Propel, Smarty and SimpleTest.
All of our projects use the Subversion revision control system, which integrates with the Trac wiki and issue tracking software. Each customer is given access to their own private web interface from which they can track development progress, view source code and access the application in it's current state.
