Web applications are a feature-rich and resourceful application hosted on web server or cloud. Generally, these applications are complex, and more feature packed than usual websites. If you are a novice programmer or developing the web application for the first time, considering these 5 points would help you maximize your web application’s success.
1) Requirement Analysis:
If you are an experienced developer you would probably know the importance of proper requirement analysis. You will be developing a solution based on what your customer need. It makes perfect sense to completely understand your client’s requirements in the first place. Spend a decent time analyzing the requirements; your web application development’s success depends on strong analysis.
How to analyze requirements?
Let’s make it simpler, ask your customer about the problem and what solution they are looking for. Get the big picture of their requirements. Categorize these requirements into 3 or 4 (depends on of requirements) main distinct requirements.
Now move on to the next level and ask for detailed requirements for each of those 3 or 4 main requirements. This will keep you on track with their requirements and you would never feel lost even with complex and huge requirements. It will help you decide the development strategy.
Let’s understand the process with an example:
Consider a case: You got a requirement from a well-known hotel to re-write their room booking system along with some additional features like
Packages creation: That allows users to pick the best package for their holidays that gives them some extra services with loyalty point rewards and cash discounts.
Coupon codes: That allows customers to redeem coupon codes to avail discount while booking rooms. They use it to attract more customers.
Consumer loyalty: Customer receives loyalty points when they make any bookings. They would be able to redeem the points across any of their hotels to avail the discount and/or add-on services.
Easy way to approach this requirement:
First, find the 3-4 core distinct requirements they need with the new system:
- Room booking module: Check their previous booking system and ask them for new features they need, what was missing in the previous
- Coupon code module: How they want it to be integrated with the booking system and how to limit the coupon usage.
- Package creation: How they want to create a package, what will be included, how to showcase the package on how to integrate it with booking.
- Consumer loyalty system: How to count loyalty points, threshold after which loyalty points are redeemable, Max discount for loyalty points per booking.
This will get you started understanding their requirements better and in a more organized and documented way.
Please avoid understanding all their requirements at once and start working on the project. It will lead you towards lots of confusion and assumptions while development.
Ask as many questions as you need to clearly understand the requirement. If needed ask them to explain the concept with use-case scenarios.
2) Design & Usability:
Keeping the targeted user in mind would help you design better and usable web application design. The web application design would be very different it is going to be used by consumers than organization team members.
Create a design prototype for the web application you will be developing while keeping your targeted audience in mind. It helps your client understand what they will get and keeps you and your client on the same page. Additionally, it helps you prevent late design surprises for your clients and heavy redesigning work on your part.
Please keep in mind that high usability should be the first concern. The design with high animation and transition effects would look modern but they are not always highly usable designs. Designs that look simpler and organized are generally more usable.
Choice of colors and typography will be an important concern. If the web application you make is going to be used by consumers then make sure you have studied your client’s design philosophy. It will give you a clear idea of what colors you should be using and which color will have the highest dominance.
If you are developing a web application for organization’s internal team, make sure you limit the number colors used and use consistent design pattern across the application. It helps teams to get familiar with web application quickly. These users will be using the system for a longer period of time every day. So, make sure you focus more on high usability than attractive design concern.
Design easy to use, clean and attractive website with a good mixture of colors, typography and animation effects for consumer-facing web applications.
If the web application targeting organization users then understand their application usage pattern and design clean layout to improve the UX and usability of your application.
3) Frameworks to choose
After the design confirmation programming is what you or your team will be doing most of the time. Picking up a decent MVC framework would be a good idea for web application development. Please don’t re-invent the wheel by creating your own framework except for no other proven framework offers features you need.
Frameworks are written on top of programming languages. They natively use the programming language and their core functions. It makes your development process faster, easier and safer.
Why you need a framework?
Frameworks are the collection libraries and classes which offer a rich set of functionality. These are the features you may need to write by yourself if not using the framework.
Additionally, frameworks offer add-ons meaning there are several functionalities available in the form of framework add-ons that you can use to extend the framework’s functionality. Those are the tested piece of code and ready to be utilized. You don’t need to invest time in developing and test that particular feature.
How to choose a framework?
Here are the checkpoints you need to make an informed choice
- Learning curve: How easy a framework to learn, if you are not familiar with it.
- Security protection: What are the security concern provided by framework out of the box like XSS, CSRF, Cookie and Session hijacking and other protections?
- Community support: How active and lively the community is, active the community easier the support you receive.
- Add-ons Availability: How many add-ons are available for it. It gives a clear sign that more developers are interested in using the framework and developing free/paid add-ons for it.
- Resource utilization: How much resource does the framework require? It will help you decide the hosting infrastructure for the web application.
- Functionalities to offer: Read the document to understand what are the features and functionality the framework has to offer. How useful they are.
- ORM Facility: Most modern framework offers ORM feature. It will help you save time and efforts of writing SQL queries manually. Use their DB function and it prepares queries on the fly.
- Updates: Check the framework update frequency. How fast the security patches and other minor updates delivered. What is the frequency of major framework updates?
Consider these 7 points to decide the best framework for your web application development. Consider all popular frameworks and compare each with above-mentioned points; you will have a solid choice left that will go with you a long way.
If you want a list of web frameworks, see this Wikipedia list of web frameworks.
Pick an MVC framework which is easier for you to learn, active community with decent security functionality and good update frequency. You will explore much more on framework afterward. Possibly you would be able to tweak the framework to meet your needs later on.
4) Database design:
Please don’t ignore this part or be in any hurry designing the database. Make sure you understand the requirement the best way possible and then start designing database. Additionally, don’t design the whole database in one go; make it modular. Design database as you develop modules.
It is the most crucial part of a web application as it will store all the data. Optimized database design would give you a decent boost in performance. It’s the toughest entity to change once you reach halfway through the project. A fundamental database change would cost you many hours of work on the programming part.
What makes the database design process easier?
The modular database design approach is what makes your database design process easy.
Keep the normalization and indexes concepts clear. Pick the first module that you will be developing for the web application. Decide the tables required for the module. Create tables and map the relationships between concern tables.
The designing database this way will give you the flexibility to change the module database design change entirely when the client’s business need changes.
Requirement gathering is an important element designing accurate database design. Create only those tables which you need to develop a module of the project. It will offer you the flexibility of accommodating the feature and requirement changes.
5) Development Approach:
If you know the agile development method, great follow it and you can skip this part. If not then follow the modular development path. In modular development, you will be dividing the whole project developed into a fully functional number of modules. And you develop each module to make the system working.
I have seen many developers following no particular development approach; thighs get very complicated with large and complex projects. They tend to develop the whole system at once without logically dividing the system into modules. This leads to a lot of bugs and frustration on the development part and delay in delivery on the customer part.
Development approach that actually works:
If you are a starter or novice with web application developers who don’t know agile methodology then knowing the modular approach may give you a bit of ease and keeps your development on track.
How it works
In a modular approach, you basically divide the whole project development task into 4 to 5 (or more) main modules. Each module is a working entity of the project. Pick up one module at a time and working deeper into that module to accommodate all requirements will help you develop a precise application with lesser possible bug and overall higher satisfaction ratio. Once developed, test it thoroughly and resolve any bugs you may find. Once resolved host it to your testing server for your client to see and test.
Now there are three possibilities:
- The client would accept it: Great you succeeded with your efforts. Move on to the next module in the queue.
- The client would accept some changes: This is crucial; changes can be anything from textual change, minor design change to a whole business logic change. This is where the modular approach wins.
- The client would reject it: No worries, they would provide the information about why they reject it. Correct all the issue and host it for further testing.
Make each module a successful delivery. This is an iterative approach where you develop a module, your client tests it and confirms it. This will help you scale the project when a client introduces a new requirement within the module. You have scope to change everything right from database design, web app design to the module code.
In my experience this approach allows you to develop application swiftly while accommodating all the changes your client may have without much of frustration on your part and heavy modification on other parts such as database design.
If you want to read more about agile development see this Wikipedia detailed article here.
Confirm the requirements and design for the module you will be working on. This will help you reduce the rejection and major requirement/design changes. In the long run, this will help you deliver the project on time with lesser bugs and frustration.
This article is written by Darshan Joshi. He is the founder of a web application development company AlphansoTech. He is passionate about writing web applications for businesses which solve complex business problems. He shares his experiences and tips on web applications for fellow programmers. Follow him: Facebook | Twitter | LinkedIn.