In the previous post we have seen what is a use case and how a use case is related to a component diagram. Today we will learn about component diagrams and how they are related to classes.
A component diagram is based on use cases. For example we can create a component diagram based on the use cases we had seen in the previous post about a order management system for a restaurant.
- The sales rep logins into the order management system. –> we can create a login page for the system.
- The sales rep takes customer order. –> We can create an order page.
- The sales rep confirms the order. The system comes up with the amount to be paid by the customer for the order. –> We can create a confirmation page.
- The sales rep collects the amount from the customer. –> We can create a payment page.
- The sales rep delivers the order to the customer. –> We can create a delivery page.
- The sales rep closes the order. –> We can create an order closing page.
- The sales rep logs out of the order management system. –> We can create log out page.
A page (a web page or a user screen) is easy to think about when you create corresponding pages for each use case. You can already see it in the above example. A page is a component in software designing. Once you are able to design components, designing other component level diagrams is easy. Generally drawing a data flow diagram is enough at the component level.
The next level of software design deals at low level or detail level software designs. It is at this level that you need to provide complete details about each component of your software product. This level is the class and object level in object oriented programming. This we will learn in next post.
One more aspect about component level. Since software development field is a relatively new field, there are no established engineering processes which can be applied during software development. This area will mature in future when more domain knowledge about software product development is acquired. However there are some standard templates which have been developed by software industry for component level design. This area is known as software design patterns.
Software design patterns can be used as templates to develop a component level design for a software product. For example there is a template for creating model view controller architecture based software product. So you need not have to create this architecture from scratch and instead can use this template to build your software product. There are many such templates available.