Posts

Showing posts from July, 2015

MVC architectural pattern.

Image
Step by step understanding of MVC model – There are many ways we can define and understand MVC model. I am explaining it from a design perspective, trying to give an idea that how we started at very early stage in software designs and about evolution of MVC architecture design in software systems. I will explain how we were designing software systems in very early stage and step by step adaptation towards to MVC model. In early stage we used to make software systems (or solutions) like a white box system. Think about a white box system . A system whose internal component/module are open (or shown to outer world) is called a white box system. Read about white box system  to understand MVC better. I am explaining white box system below – This is a system (or solution or application) called X, which has 4 different modules in it(there could be more number of module present in any system). Let me evaluate this old design through 5 basic design parameter of a goo

5 basic design parameter of a good design.

Many things that come into the picture when we say evaluation of a software design. One necessary quality of an architectural design is to handle non-functional requirement. Software has to meet functional needs but how well non-functional requirements are taken care of by architecture makes software, great software. Five primary design parameter of good designs are - Usability  –  It is all about how a simple system is designed and defined for user to use. With the minimum input. How can you give maximum result effortlessly and efficiently? For example, Google search engine, how simple it looks, and the most straightforward web page to use, but the powerful at the same time. It's not about the result; it's about the best result (or maximum relevant result).  For example , in your phone book – after typing "a" you should not get all names who have alphabet "a". You should get all names which start with alphabet "a". If you ar

Blackbox and whitebox.

Image
White box – A system whose internals are known to the outer world is called a white box system. User knows about all modules defined inside the box (or solution or system). See in figure below – Think a system X which has 6 module in it (A, B, C, D, E, and F), all are open. Why white box is bad design? I am sure you must have used some external library in your project or while practicing programming.  The library will give you only its public interface so that developer can call it, but it will not show its internals (the core logic how they are doing it).  Now think if libraries’ modules are open to you. Now client/developer can call the core part of it. Sounds good but let me list out the drawback of it - You have to know all the internal modules and understand the flow. Before it was not our headache, we just called public interface. Any new changes in the library (introduced by third party), including new functionality or changes in behavior of core logic,

Builder design pattern.

Image
Problem statement – How will  you   make sure that your code is constructing/building mature/full object?  Or how you can restrict the object creation process such that it follows a well-defined way to build any complex object. Background – I am talking about a design pattern that has come from the automobile industry. When you are making something (i.e., like Toyota is making a car). How can you make sure all its products are the best quality products? So the question is - whenever any company builds products, how it makes sure the product's quality? They standardize the construction process. They believe that if the construction of the object is proper ( standardize  construction process ). Then the result is as per our expectations (with best quality). The main rule here is - "once we define how we construct the object, then we can use the same standardize process for different objects."  For example – Once Toyota understood how to make the bes