Development Concepts
This article covers some key development concepts that, while not essential reading, may provide you with some background to our approach to Web development.
Development Concepts and Principles
Reuse and Recycle: Selecting open-source libraries and frameworks that are most suitable for the job. Using public APIs to pull in existing functionality from existing services, and reusing code rather than rewriting. Using Rapid Application Development techniques. Working from a framework we can save huge amounts of programming time as a lot of the groundwork is done.
MVC (Model-View-Controller): You may have heard of this buzzword already - is it the world's favourite design patten? Or just a funky platform for building web-applications? Simply put it's a process for separating the presentation of an application from the underlying logic, by using three “layers”

The benefits of separating content from design include the ability to easily apply design tweaks across your entire site, and the separation of the work of the web developers from the designers, two very different practices.
Version Control: We believe the important corner stone of any successful development environment is good version control. Track all changes, what was changed and when. Useful for tracking where bugs entered the system and facilitate their removal. We can easily revert to previous versions of the site when changes need to be “rolled back”.
Testing: There are two main types of testing performed on a site: Acceptance Testing - testing functionality against that defined in project documentation, and Unit Testing – testing a specific component of a library or system in an automated way.
Build to Support SEO: A combination of using friendly URLs, correct and valid HTML mark-up, and correct implementation of HTTP access codes, all makes a strong grounding for building search engine rankings.
Commenting Best Practices: Support PHPDoc style commenting, so that we can easily build API documentation. This makes maintenance and support of programmes easier. It makes it easer to extend, and open API access to other developers if required. Maintainability and extensibility are important to us. We strive to structure software, and data in such a way that it's easy to support and maintain, and extend in the future.
Security: In these days of heightened concern around identity fraud, public awareness of security risks, and recent publicity of high-profile security beaches in UK government, security can be a major concern. Attention to detail and careful filtering of user input help us try and protect against known attack methods such as SQL injection and Cross site scripting (XSS). This is combined with regular backups, and secure hosting facilities.
Logging: can be used for security, performance monitoring, and analytical reasons.
Database Abstraction: We use a separate database access layer, that means that we're not tied to one database platform. We usually deploy using MySQL, but because we've developed in a non-dependent way we can swap out to use other database systems painlessly if required.
Architecture Abstraction: Using PHP means that we can develop once, and run on any required system without redevelopment cost. Our server technology of choice is of course Apache running on Linux, which in it's many guises powers most of the worlds web-servers. But PHP and Apache are implemented on other popular architectures – should you wish to host your site on a Windows, or Mac based server.






