Over the last decade, there has been a massive growth in the number of web-based applications. For every category – email, collaboration or knowledge management to name a few – there are a large number of applications available, and new ones on their way. This has created extreme competition in the market with each application claiming to be better than the other. Even if a new concept exists that is strong enough to drive the market, time-to-market is a crucial factor that will decide the success of the product.
To address this, a rapid application development strategy needs to be in place so that the product and incremental features can be delivered at the expected rate which is dictated by the market & customers. Besides this, development needs to also follow an agile model so as accommodate ever-changing business requirements. This is especially true in the case of product development, where a single product must fit multiple customers with varying business requirements, and the classic waterfall model can lead to complete failure.
Web Application Frameworks
A web application framework (‘framework’ hereon) is a software framework that is designed to support the development of dynamic websites, Web applications and Web services by providing core, non-functional features out-of-the-box. A framework streamlines application development by automating many of the patterns employed for a given purpose and thus resolve the overheads associated with common activities performed in web development.
A framework also adds structure to the code, prompting the developer to write better, more readable, and more maintainable code. It promotes code reuse through the use of libraries for database access (using ORM), template engines, session and user management, logging, internationalization, etc.
Framework selection (we’ll elaborate this in the next post) is thus crucial in delivering the required functional & non-functional requirements within stipulated timelines. Non-functional are the primary influencers of the design & framework decision. It is best to crash development time through the use of a web application framework that meets most requirements and can be extended further.
Hybrid approaches using a mixed technology stack might prove to be robust by offering the best of each approach. It can further be customized to match the requirements of the application. For example, FACEBOOK use a hybrid approach with a PHP front-end on a LAMP stack, with portions of back-end code written in JAVA, C++ and ERLANG. At the same time, it has scaled-up by developing a PHP-to-C (native code) compiler, customizing Linux for improved network throughput and optimizing MEMCACHED (used for caching).
A feature-rich framework will allow designers & developers to focus on design & business logic. It achieves this by providing in-built support for non-functional features like logging, debugging, email, URL re-writing and internationalization to name a few. Some frameworks go all the way to generate scaffolding code based on a model definition file. This generates code for the controllers & views and prepares a web-based MVC application for immediate use.
In the next post, we will discuss the criterion for evaluating and selecting a framework and explain how existing frameworks can be leveraged, as against developing them ourselves and re-inventing the wheel.
This post is part of the SaaS Application Development series, extracted from my final dissertation submission at BITS, Pilani that closely looked at rapid-development of SaaS-based applications.