Now let’s discuss the next phase of software development, which is software design. Software design is the phase where software requirements are analyzed in order to produce a description of the internal structure and organization of the system. And this description will serve as the basis for the construction of the actual system. Traditionally, the software design phase consists of a series of design activities. Which normally consists of the architectural design phase, the abstract specification, interface design, component design, data structure and algorithm design. And notice that this is just a possible list of activities. But you can also characterize design activities in many different ways. And if you’re looking at different books, and different sources, you might find different activities described. But the core idea, the important point is that we go from sort of a high-level view of the system, which is the architectural design, to a low-level view, which is the algorithm design. And these activities result in a set of design products, which describe various characteristics of the system. For example, they describe the architecture of the system, so how the system is decomposed and organized into components, the interfaces between these components. They also describe these components into a level of details that is suitable for allowing their construction. We will discuss the details of software design and talk extensively about these different actives and these different products in the third mini course of this class.