Recently, someone asked us, “How do you approach building a large web application?“. Below is our response which we deem fit to share with our readers.

There is no “one process fits all” answer to this. The approach you follow varies from project to project. At Nablasol, the general approach for most software projects is as follows:

Define the Problem and the Users
Start with a brainstorming session on the drawing board. List out everything that will help you define what you are trying to achieve from the application. Understand the potential users and outline how they will interact with the app.

Scope the Functionality
List out all the major functions that the app will perform. Think of the features of the app and put them in three different pools – must-have, good-to-have and maybe-later-versions.

Mockups of Key Features
Build basic screen mockups for key features of the app to get a better understanding of what you are building. Enhance your basic mockups with story-boarding and wire frames.

Data/Information Model
This is one of the most important steps in building an app. Make sure you define a cohesive data model which will be able to stand the user load without deteriorating the performance and at the same time be easy to alter for future enhancements.

Development Model
Define an appropriate architecture for your app. Break your app down into modules – define coding standards, design patterns, functional outlines, test cases etc.

Develop & Test
Develop your app and test at each stage of development. Depending on time, you may want to build a prototype before building the final version. Once the final version is developed and tested, launch the beta to a select group of users for further testing and feedback.

Be Prepared for Making Changes to Your Plans
Last but not the least, never make a very firm plan. Your plan should be thorough but at the same time be ready for modifications. Handling changes at every stage should be part of your plan as almost everything in software design is an iterative process.