 Hello, I am Thomas Blažowskas from Konus University of Technology, Software Engineering Department. In this video, I am going to present the software process models. For the effective software development, we need to use a proven and successful way of creating a software. It means we need a description of the software process. That description is called a software process model. In this video, we will present the integral parts of the software process model descriptions, such as activities, roles, artifacts, and the overall idea of the software process model. In order to develop a software system, a structured set of activities is required. There are many different processes which involve many activities, but these activities are used in all the processes. It is specification of the requirements or defining what system should do, design, establishing the organization of a system, construction or the implementation, implementing the system, validation, checking that it does what the customer wants, and evolution, maintaining the software until it is discontinued. Of course, there are many other processes such as project management, configuration management, quality management, process improvement, and many others. All the software process activities are performed by the persons who play a specific role in the software development process. Depending on a process, one person might play several roles. In this example, we pictured the roles of the scrum process. Alice is the product owner. She wants her product to be the right one, therefore she will work a lot on the specification of the requirements. The scrum master will supervise the teamwork. He will ensure that the activities of the software process are performed correctly. Carolus is a software architect, therefore he will participate a lot in the design activities. And Thomas is a programmer. He loves coding, implementing the software features, so he will mostly engage in software construction activities. On the other hand, Thomas needs to be aware of the different activities so that he can construct the right product, therefore he participates more or less in other activities as well. The software process artifacts are the work products, which are both the input necessary for some activities to start and output generated by the activity. In this example, we have three factories that represent appropriate activities. For the design factory to produce some work products, it is necessary to provide the requirements. After it is done, the design factory generates the design documents which are provided to the construction factory. In the construction factory, the actual software is being created. This factory produces a lot of work and the code is typically the most important work product. The code is provided to the validation factory which checks the code and creates the bug report document. At this point, we know that the software includes the activities, roles, artifacts. Still, these things do not describe the dynamics or the behavior of the software process model. The important task is to determine and describe the order in which activities are performed, which activities need to be implemented first so that the other activities could be started and that defines the path in which software is created. Beside the order of the activities, we need to determine the flow of these activities. Until now, we show examples that implement the linear flow. Each new activity starts after the previous activity is completed. This flow depicts the notorious waterfall model, which sometimes is not the most efficient model. This flow depicts an iterative style. The development of a product is split into multiple iterations. Each iteration implements part of the requirements. And this is an agile approach. The activities are performed in an incremental iterative way. The product is split into several parts or the increments. Each increment is developed in an iterative way. After increment is completed, it is deployed so that the customer could try it. At this point, we know that a software process includes activities, roles, artifacts. We also know that it is necessary to describe the order and the flow of the activities. The important question is how to put everything together, how to structure all those elements. We need a description that describes a path that is needed to be done from start until the software is discontinued. That description might include texts, diagrams, and it is called a model. In this course, we will investigate several historical and modern software process models in detail. Actually, there are many software process models that are separated into generic and specialized models. The most common generating software process models are the traditional models. These models are not so common nowadays, but many modern models include the activities from these historical models. We will investigate the most down-waterfall model. The iterative incremental models. These are the models that represent an iterative way of creating a software, or an incremental way, or both, like we explained in the last slide. We will investigate prototyping spiral, agile, and unified process models. The specialized models provide a particular effective approach to solve specific tasks. We will present shortly component-based development, aspect-oriented development, reuse-oriented development, and the formal methods. The software process model represents a proven way for the effective development. The software process model is a description that describes a path of what is needed to be done from the start until the software is discontinued. That description might include texts, diagrams, and other materials. The description usually includes activities, roles, artifacts, and may involve various conditions and constraints. The order and the flow of the process activities are extremely important. It is the main difference between the software process models. Thank you for your attention.