Tuesday, January 24, 2012

Performance, Extensibility and Maintainability Criteria in n-tier

All of these are required non-functional requirement of any system, but do any all these criteria have the same priority on each layer of the system? The simple answer in no, as each layer are design to server different type of functionality in an application and the criteria for their design are different, so which one should be given more priority and where?


As I see the priority for these nonfunctional requirement as follow


Presentation Layer, as this layer is near to the user all the time, Performance should be the first criteria, the performance of the page load/form load in web/desktop give the first and lasting impression to the user, any application component that is near to the user need to have performance and #1 criteria.

Business Layer, this layer is the most volatile layer, this layer is introduced to handle the changing nature of the business and should have Extensibility as #1 criteria.

Data Layer, this is a static layer and most need to have the Maintainability as #1 criteria, data resides here and that need to be taken care well, all the backup recovery and maintainability should be used a design consideration.


These are just few guidelines that I believe help in design a better system, this doesn’t mean that other criteria on each layer are not required, they are but few of them have greater priority and should be given first thought while architecting any system!


-Pramod

Friday, November 18, 2011

Requirement classification

Why do people complain more about application interface, navigation and interaction about application where they have to provide information? It's simple requirement understanding, demand vs seek vs provide.
Seek: when end users are seeking information from any application they are more tolerant about the interface and interaction and therefore less demanding on other aspect. They see value in the information provided and are generally tolerant about UI and characteristic.
Provide: end users are more demanding about UI, navigation and other aspect as they have to provide information in the system, this process tends to have less attention span and make the user impatient about the whole activity and this tend to make the user demand more to be done in less time. User would be willing to wait and can tolerate inaccuracies with UI and Navigations issues for "seek" type while there expectations are complete opposite for "provide". Once the requirement are classified into seek and provide the application design can accommodate the balance and can utilize this classification.

The next one is "Demand", this is the case were the user is looking for information but this is more of a demand on the software to provide the information, this classification need a performance oriented and better navigational   characteristic, user would not wait for the information, as the "demand" indicated this information should be available as fast as possible with a simple UI.

Examples are system reports: most of the run time reports are "demand", while most of the dashboard reports are "seek" while almost all of the entry screen are "provide". This simple classification helps in design the software and user experience better. 



Monday, October 29, 2007

Migration or Porting of Application

Every now and then I hear "we need to migrate to this platform" or "we need to port the application to work on this platform", I believe both has a "meaning" in software terms, from what I understand,
Migration : Its means we will do certain changes in the existing software application to satisfy the current requirement, this tweak/changes will essentially carry forward the present software application but will support the new "platform.

Porting : It means "most of the time" a complete rewrite of the application to satisfy the new platform or requirement of the present application.

Both migration and porting can be backward compatible, but with migration the possibilty is higher than the porting, as the code base is essentially same, while porting will mostly have a new code base, which means unless and until the application demanded for backward compatibility, it will not have that!!

Coming to the base question, do we really need to do migration or porting? There is no simple answer to this question, but there are few basic assumption that will dictate which way to go. If the application is requires few tweak to work on the new platform, definetly you will want to make that changes and get the system working on the new platform instead of port to a complete software with a complete new code base, the best exampe to quote here are all VB6.0 application that are there, they can be tweaked to work on Vista Platform, even the Vista API's can be called in the same code base and mostly it will start working.

Taking the same example, is it a wise disicion to carry forward with the VB6.0 knowing there is no more development going to happen on this language and eventually no more support will be available, what to do? Even though the case is for Migration we are facing a problem that dictates a Porting of the application to .NET , to be in the market!!!

These are some of the business decision that decide which way to go, Migration or Porting!!!

The second thought on these scenario is do we really require a Porting, we know the application works fine for what it was designed and serves very well, why break the code and do a porting, why not use SOA and get this system running "AS IS" and build the new requirement as a new software and let it coexist with the existing one, these are situation for which the SOA and SAAS was meant to solve and give a oppurtunity to running application to work as is.

-Comments and suggestions!!!

Friday, October 26, 2007

So many different currencies at one place




Hey, have a look at these currencies, all at the same place