Design your web application before developing

As a professional web application developer, we’ve to develop application faster with maintaining the quality, security and performance. Once upon a time, when people develop web application without further planning about structure and maintenance. Now the situation is quite different. Today’s web application are very complex. Now it’s very important to structure the application. Now I’m describing about a case study:

Case 1: Suppose you’re a team leader. Your company tell you to develop a facebook application with some requirements. You’ve a good team to develop this app. Now what will you do?

Solution: You may use a framework and guide your team to fulfill the company’s requirement to develop your application like this.

web application structure 1

web application structure 1

So, you maintain a good structure and develop a good application.

Case 2: After some days, your company tell you to develop another application that has the same functionality with this application only view and some minor features are changed.

Solution: You and your team copy APP 1‘s source code, modify that, maintain the core and change the view.  So You develop another application APP 2 that has it’s own core.

Case 3: Your company assign you to develop another 4 application like this.

Solution: You and your team develop those application like the same process. Now You’ve five applications like APP 1, APP 2, APP 3, APP 4, APP 5.

Case 4: After 2/3 months someone found some bugs in your APP 1 and notify you. Then what will you do?

Solution: You fixed the bugs for APP 1, and recursively apply the same process with other apps APP 2, APP 3 …..

Case 5: Suddenly facebook company announce to change their core library and deprecated some functions and updated some new APIs. Now what will you do?

Solution: You’ll identify the problems, replaced the core library for APP 1, integrated the new APIs by replacing the old APIs. And you recursively apply the same process with your other apps APP 2, APP 3 ….

So, I think now you realize the matter why I’m describing this situation. This type of situation sometimes happen in software firm. But If your team leader and senior developers plan and design before developing application, this type of recurrence situation might not happen.

For team leader and senior developers:

  1. Before developing any application, first time try to fully understand what is the future of this app. Would we need develop similar apps in future. Try to capture and visualize the full requirements from your company.
  2. Seniors and team leader have more responsibilities than junior developers. So, you should think and should chose a well known and best framework to give structure in your app.
  3. In professional life, developing from scratch is a very bad idea. Because you should consider security, maintainability, performance, structure and helpers. In student life or if you research then developing from scratch  is essential.
  4. Over confident is very crucial. Try to understand others. By consulting, you could choose the best solution. Value others if you want to be a valuable person.

Now, for Case 1 at the first time the best solution might be like this.

Solution: You consult with your company about the requirements and future of the new app. If your company tell you that in near future, you have to develop similar app, then you have to make another structure like this.

Web application structure 2

Web application structure 2

That’s to say, you defined the core library, helper functions, common functionalists and moved in a common directory. Then when any new and similar app need to develop, you just use the core or inherit the base. By this way, you solved several common problems.

  1. When core library changed, you update in one place. And all the applications become updated.
  2. When any bug identified in core, you changed in one place and all the applications become updated.
  3. You reduce the code.
  4. You give a maintainable and robust structure for these similar apps.

So we all should remember, “Design your web application before developing“.

BOUML – A free UML 2 Tool box

Once upon a time, in my university life, I was searching a free tool for UML modelling. After searching, I found a nice tool.  Some features of it:

BOUML is a free UML 2 tool box (under development) allowing you to specify and generate code in C++, Java, Idl, Php and Python.

BOUML runs under Unix/Linux/Solaris, MacOS X(Power PC and Intel) and Windows.

BOUML is very fast and doesn’t require much memory to manage several thousands of classes, see benchmark.

BOUML is extensible, and the external tools named plug-outs can be written in C++ or Java, using BOUML for their definition as any other program. The code generators and reverses are ones of the pre-defined plug-outs included in the BOUML distribution. See features.

BOUML is distributed in the hope that it will be useful, but without any warranty; without even the implied warranty of merchantability or fitness for a particular purpose.

Copyright (C) 2004-2008 by Bruno Pagès.

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version.

Install it in Ubuntu:

sudo apt-get install bouml

In windows or other operating system:

download and enjoy modelling: