Development Process

This section describes the development process usually followed at Villvay. Different approaches are used depending on the nature of the requirement and solution needed. However the 4 phases below are applicable to all projects on a fundamental level.

image00

The above process serves as a road-map for project management and breaks down each phase into smaller, manageable tasks that helps with time and resource planning.

Planning

Planning begins with the client requesting for a project estimate / proposal. It involves requirement gathering from the client, understanding scope, carrying out primary research where required, clarifying doubts etc.

This stage produces design documents and diagrams, database schema, etc.. One of the most important documents produced at this stage is the work breakdown. Work breakdown is the template for budget, test-cases and also for the project plan – which will be used to track the progress throughout the project.

Based on the application and purpose of the product, the requirements and scale, we decide on what technologies and resources are needed.

Once the work breakdown is produced, we are able to estimate a project time-line and a budget. If necessary, clients can request costing for each functionality to decide features for an initial release to match their budget and time.

This stage ends with agreeing on a contract that lays out the groundwork to start the product development.

Development

After gaining a clear understanding of the client’s requirements and once there is an agreement with the client about technology, fees, terms and conditions etc. its time to begin development.

Project managers work on allocating the development team. Developers start coding, designers design the user interfaces to build out the website or app – based on the agreed technical specifications. All operations of this phase follow the work-breakdown from the previous phase.

Google spreadsheets is one of the most basic methods we use to collaborate on the project plan. We also use project management applications such as basecamp, Atlassian, Asana to collaborate and communicate about these tasks among the developers as well as with the client.

Testing and QA is an important process that begins in the development phase and we use tools like JIRA, Bugzilla, Flyspray to track bugs and assign fixes. We are also building a project management system of our own – to be used internally.

Once each task is completed by developers, they are tested by the QA team. Testing is carried out in parallel to development to reduce lead time and to make the development progressive.

Also, adhering to project milestones, presenting work for client reviews, meeting deadlines are important points of attention in this phase.

Deployment

We focus on deployment from the stage of development. For web apps and websites, we use Git or a similar version control system for various reasons. Apart from making it easier to collaborate on code and track versions/changes to codes, Git (or a similar VCS) makes it easier to deploy changes to a staging environment.

These Version Control Systems also make it easy to track changes to the source codes, and roll-back to a previous stable version in case of a discrepancy or mistake.

As we carry out development, we keep pushing changes to our staging server at demo.villvay.com [If the client doesn’t have their own staging environment]. Modifications can be immediately reviewed on this server.

After the site or app is built and the primary rounds of testing and fixes are done, i.e. once the site/app is production ready – it is deployed to the live server.

We may use Git to deploy each stable version (release) from the staging to the live environment.

After going live, further testing is carried out to ensure that there are no errors and bugs in what we have built.

GIT for code collaboration and version control

Code collaboration is an essential part of development. Villvay often collaborates with other development teams around the globe. Using a good version control system plays an important role when collaborating with internal teams as well as third party teams. Our version control system (VCS) of choice is GIT. We maintain our own Git server and also use BitBucket as a GIT hosting platform. We can also set-up a GIT repository system on a clients server or a dedicated/virtual/cloud server.

Once set-up Git makes version control and deployment a breeze. Updating a web application to a new version from a staging/repo to production is like any system software – it is consistent and predictable.

image01

Even though we recommend GIT for your development project, we are familiar using other VCS as well. we have used Subversion (SVN) as the VCS for many previous projects.

Setting up servers

Villvay has expertise in setting-up and maintaining application / web / database servers. Our server OS of choice is CentOS (Community Enterprise Operating System), which is a free and open-source enterprise OS – stable, secure and reliable. We also manage RedHat Linux servers.

Although we work with Ubuntu servers clients may already have, we do not recommend it for any new deployment.

We use Webmin for server management and also have proprietary server/user management tools, and customized Git server management tools at our disposal.

Maintenance

This stage is when maintenance, modifications and upgrades take place. Clients may enter into fixed maintenance contracts or could be addressed on a case-by-case basis.

For web based apps and websites, we may off-load static content to a cookie-less subdomain or a CDN to improve performance.

Web servers slows down when the user-base grows. This requires webmasters to upscale server resources. Upgrading the servers adds to the running cost.

Offloading static content to a CDN or subdomain – maybe on the same server greatly reduces the load, and improves the speed. Otherwise, cookie and session data are sent and processed unnecessarily for static content.

After deployment, we may monitor the server load and bottlenecks, disk usage, etc.. This can prevent the server from clogging up – and optimize resource utilization.

Databases slow down as they grow in size. By observing the volume of data on the database, we fine-tune and add indexing or caching as necessary to speed things up.

Let’s say a database table has 10 records; it takes 1ms for the database to fetch 1 record out of 10. Without indexing; when the table reaches 100 records, it would take 10ms for the DB to fetch 1 record. 100ms when 1,000 records and so on.

By identifying on what criteria a record would be fetched, we can index the DB for that criteria, so we can reduce the delay. With a BTree index, it would take only 2ms when there are 100 records, and 3ms when there are 1,000 records.

* These theoretical values are for example/comparison purpose only. These parameters/values slightly vary in real situations.

Another important thing we can offer is web analytics and basic search engine optimization. SEO makes sure our clients reach their customers/audience, and analytics shows how well it is done. Implementing Facebook graph API, Google rich snippets, etc… are also inclusive to basic SEO work we do.

Great software evolves and improves over time. Large software projects go on for several versions. We learn new possible use-cases, user-requirements and features-to-add as we go on. Therefore this phase of the development process could be the beginning of a newer and better version of what is being built for the client.

Product specific development processes

Above 4 phases cover the development process on an overall and higher level perspective and they are common to all projects.

The below list examines the individual development process with more specific details about building these products: