When you want to create a new software system, you are bogged down by the technical aspects. As per requirements, your first design sketches look be very cumbersome. There are many challenges as to how to design the software product so that it fulfills many aspects apart from it turns out to be a working and functional product which fulfills all requirements.
Before you actually start designing, first let me give some insights which will make your job lot easier. There is too much jargon and talk involved as to how you can design your next cutting edge application. Cut all this jargon short. have a look here.
The more you break your design into smaller parts, the better you will feel. By breaking the complete design into smaller parts is the first success factor for your design. There are many reasons attached here. Some of them include:
- If the design is modular, you can build many versions of your application without redoing the design again and again. This also means if you have built some applications this way before then you can reuse many of those existing components in your next product. Remember, if you able to cut your design into pieces, your design is fabulously modular.
- A modular design will allow for better construction. Imagine you are building an apartment building and the architect has given you the building design in many pieces and you never worry about other pieces when you are building just one piece at a time. You can always join those pieces later. This makes your tasks lot easier.
- Breaking into pieces does not mean just reducing the size of the design. You also break your non functional requirements. Today most software development environments provide building blocks in form of libraries which provide special services which you can use for developing your application. For example, there are libraries for providing security (encryption/decryption of data etc.). You can use them to secure your components without writing any source code for those security features.
- Again breaking into pieces of the design also means separating your business logic, application logic, data layer, user interface etc. Splicing your application into layers ensures that you do not need to depend on other layers when you develop your application. this makes it possible to design and develop all these layers separately without ever worrying about how the other person who is responsible to develop the other layer is doing it which way.
- When you have small pieces of design, your team can utilize all those existing libraries which provide excellent building blocks for things like various formats of reports (graphics/tables etc. for the same data), error handling etc.
When you have a design like this, why you ever wonder about complexity, vulnerability, productivity or any aspects about your product development?