Application Development Methodology

Clicktricity 5D

Clicktricity 5D is our unique agile application development methodology that drives our delivery of cost-effective, repeatable, quality solutions in an adaptable framework that suits software development and application implementations for both small and large enterprises.

Our 5D methodology allows us to consistently provide the following:
  • Accurately determine your business and commercial requirements
  • Design a solution that meets your short and long terms needs
  • Develop a quality application, on-time, on-budget
  • Implement the solution with minimal impact to your ongoing business operations
  • Provide comprehensive handover and ongoing support of the delivered solution
Our 5D methodology is an iterative process consisting of the following standard phases, which may be repeated as necessary for each phase and sub-phase of a project.

1. Discover

Our analysts and solution architects will work closely with you to understand and accurately document your business, commercial and operational requirements. We will map out the project timeline, risks, impact and deliverables. We also divide the project up into short, medium and long term achievable and measurable milestones in order that progress can be accurately tracked, monitored and managed.

2. Design

The detailed design stage builds upon the initial discovery analysis and describes in detail exactly what is required, how it will be achieved and the process that will be used to produce the final result.

3. Develop

Using an iterative cyclical process, we develop, test and QA the solution according to our strict quality and development standards. In addition, we keep you, the customer involved in every step of the development process including functional prototypes and pre-release candidates.

4. Deliver

Our consultants deliver the completed solution and install it in the customer's environment. We then work with the customer to complete acceptance tests and verification of functionality.

5. Deploy

We work closely with your resources to deploy the application, complete the handover and provide any user training that is required. We will also complete a comprehensive post-project review to ensure that we have met every requirement.

In addition to our own 5D methodoloogy, we are always happy to follow our client's own preferred methodology where appropriate. In this respect, our consultants have experience includes the following:
  • Prince
  • SSADM
  • DSDM
  • CMMI SW-CMM
  • XP Extreme Programming
  • Agile Software Development
  • Oracle Method

Agile Software Development

In software engineering, agile software development or agile methods are low-overhead methodologies that accept that software is difficult to control. They minimize risk by ensuring that software engineers focus on smaller units of work.

One way in which agile software development is generally distinguished from 'heavier', more process-centric methodologies, for example the 'waterfall method', is by its emphasis on values and principles, rather than on processes.

Typical cycles are from one week to one month, and at the end of each cycle they re-evaluate the project priorities - a feature it shares with 'iterative development' methodologies, and most modern theories of project management

Clicktricity makes use of both extreme and traditional methodologies according to the individial needs of projects and customers, and the distinct components of these projects. For example: a project may include core database technology that needs extensive planning to mitigate risk, but it may also contain a rapidly evolving user interface where progress needs to be demonstrated quickly, even if not all the functionality is available immediately.

Extreme Programming Values

The two most important core values of Extreme Programming are Communication and Simplicity.

Communication

It is recognised that poor communication in software teams is one of the root causes of failures within projects – whether it be schedule slips, botched requirements, misunderstandings, faulty development assumptions, and the like. Extreme Programming mitigates this by stressing good communication between all project stakeholders – customers, team members, and project managers (or “coaches”) – on a consistent basis. A representative from the customer should be available as much as possible to answer questions and clarify project requirements. Programmers often work simultaneously in pairs, with each programmer reviewing the other's work.

Simplicity

One of the most common XP slogans is "YAGNI" or 'You Aren't Going to Need It'

The principal of YAGNI is that you shouldn't develop any code that will only be used by a feature that is needed tomorrow. This does not exclude development of flexibility, but it should be kept in check and only functionality that is required now is actually developed.

Extreme Programming Principles

When we select the Extreme Programming model, we try to follow these principles:

User Stories

User stories are short, simple descriptions of required functionality that are written by the customer, rather than our interpretation of what the customer wants. The descriptions should only contain sufficient detail to allow development of an accurate estimate for planning purposes, development of unit tests, and are used instead of large unwieldy requirements documents. When we develop and implement the user stories, the developers will work face-to-face with the customer to determine the specific detailed requirements.

Planning

The Planning phase of development is performed in two parts – firstly the “user stories” described above are elicited from the customer. Secondly, the development team estimates development effort for each story. The customer then decides on priorities and agrees what user stories will be implemented in the next release. This defines the project schedule.

Small Releases

The planning phase determines small units of functionality that make good business sense and can be released into the customer's environment early in the project. This is critical to getting valuable feedback in time to have an impact on the system's development.

Design Simplicity

The overwhelming aim is to make things as simple as possible. The only code being worked on should be the code that is absolutely necessary to implement the latest user stories, and no more (see YAGNI, as described previously). The drive for simplicity leads to continual refactoring of code, as described below.

Testing

Testing, and in particular writing test specifications from the user stories before coding is another essential component of this technique. Traditional development techniques that follow a "code first, test later" technique are prone to only testing a limited part of the development. In addition it is common that as schedules become tight - thorough testing is often dropped in the intetest of expediancy, leading to low quality, error prone code. Our technique is to define and develop automated tests before coding ensuring that untested code cannot be released.

Pair Programming

In pair programming, one member of the pair will write code while at the same time another programmer is critiquing the work at hand, and at the same time offering insight as to the next step as well as exposing trivial defects with the code. In tests, pair programming has been shown to be 30% more productive when quality is taken into account, than the combined productivity of two developers working separately.

Refactoring

Once it becomes apparent to the development team that the system design, a module or piece of individual code is becoming too complex, the code is refactored. The refactoring process is one by which the system functionality remains stationary – all tests that pass prior to refactoring should pass after refactoring is completed – but the code base becomes greatly simplified. This may involve eliminating shared code, redesigning model hierarchies and relationships, or simply renaming variables to fit a particular metaphor.

No Overtime

A standard working week with no overtime is strictly adhered to, based on the assertion that development teams are able to produce high-quality product when they are comfortable and not overly-exerted. This principle serves to complement the idea of both pair programming and communication amongst the development team and their customer.

Customer Availability

It is not enough to have only occasional access to a customer and a customer representative should be continuously available to the development team. This ensures that all unanticipated questions or requirements can be immediately resolved and eliminates the need to produce exhaustive and definitive (and probably still incomplete and non-definitive) specifications at the beginning of the project. This also allows the customer to interact with the development and help in the evolution of the product. Maximizing customer availability makes it possible to minimize the time spent on preliminary planning and focus on development, and maximize feedback, thereby increasing the value delivered to the customer.

Coding Standards

The entire development team agrees to maintain a common set of rules concerning the maintenance and creation of new code. These standards greatly simplify communication through common naming conventions and generate shared ownership and responsibility among all developers.

For more information on the principles of Extreme Programming, please see