Software Design is one of the phase in SDLC where many key decisions and though process goes into.
Overview
In general the Software Design is categorized into 3 types.
1. Conceptual
2. Logical
3. Physical
Conceptual
This design is from High Level targeting End User and Business Owners. This Design helps to identify the interactions of Users and Systems, System to Modules, Modules to Modules or layers. This design also mentions about Architecture in domain level and also based on requirements provides basic structure of layers and the interaction between each layers.
The above diagram shows the Conceptual View of the Architecture. It also shows some of the Non Functional Services like Security, Caching, Usability etc…
Logical
This is one of most important design layer when compared with others It is from the view of Project Team includes DEV/QA/Architects. This is where the highly thought process goes. This uses OOAD to move our domain level Models like Product, Orders in the above diagram to a Logical Models. This Model defines the Logical Object Models, Their Roles and Relations (ORM – Objects, Roles/Relations, Mapping). This layer also defines about Tasks of these Models and also the State of the object from which the Database Logical Model will be derived. ORM places in important role in deriving Database Design. This layer connects the gap between Conceptual and Physical.
Physical
This is not a Technology Layer and is from Developer point of view . This is the layer where we can see the blue prints of your application implementation in the form of Class Diagrams, Database Schema, Sequence Diagrams etc… This is not a Technology Specific since the Classes can be implemented in a language you choose. But this layer can provide some Technical Constraints or Recommendations about implementations. Because this view also holds the key to effort estimate for projects. This layer also provides the Infrastructure Design in the form of Deployment Diagram which will be used while deploying the application.
Conclusion
These are the high level details about Software Design. Will provide more details in the coming posts.