 In the previous video, we saw how the FPS framework matched the software development process. Yes, in week 3, we saw another set of diagrams, the unified modeling language diagrams. The process of representing the solution design using representations like FPS and UML is referred to as software modeling. Modeling is a way of creating an external explicit representation of the system to be built. Based on the requirements, we create an FPS representation to expand an idea or concept based on the system which we want to build. So, once we have this representation, we can go into some more detail and create UML diagrams for the software system to be built. So, one of the key differences between these modeling representation is a level of detail in them, right? Yes, you are right. So, these levels of detail are known as levels of abstraction. Abstraction is a way of hiding details in the design at each stage of the design process. We create FPS graph which expands on the function structure and behavior of the design solution. It is an example of a high level abstraction of the system. We then add more and more details to the solution design. In week 3, we were introduced to the UML diagrams. They correspond to the medium level abstraction of the system. In the link, we saw how we can expand from the FPS model to the UML model. The functions in the FPS graph can be expanded to create use cases. Similarly, the class diagrams can be detailed from the structures. The sequence diagram actually describes the different behaviors in the system. Then these UML diagrams can be further detailed out to create models such that there is a close correspondence with the implementation code. For example, every class in a model could map onto one or more classes in the implementation code. There are also various tools which automatically generate code from such detailed UML diagrams. So what we are doing is that we are adding more and more details as we progress across the various levels of abstraction. Yes, this is an important takeaway. One way to create a software design is to continue adding implementation details as we progress. So another point is that these modeling techniques, they are not the same, right? So do they serve different purposes? That is a good question. Learners, let's reflect on this question. What are the different purposes for which these modeling techniques can be used? Pause the video, write your answer in the notebook and then resume. For example, the FBS graph is a vehicle for communication and idea generation. When we want to discuss key ideas of the software with other members of a team, a modeling technique like FBS can be used. These ideas are detailed out using modeling representations like the UML models. These UML models can be used for analysis and comprehension like what we saw in very soon. In the latest example, we saw that when we generate UML diagrams at greater level of detail, the automatically code gets generated. These detailed UML diagrams can be given to developers who can start implementation in a specific programming language based on these models.