Introduction to Software Design Lecture Notes PDF
Document Details
Tags
Summary
This document provides lecture notes on introductory software design concepts, objectives, and different levels of design in software engineering. It covers topics like software design's role, objectives, and different design levels (architectural, preliminary, and detailed). The notes use diagrams and a summary style to illustrate the key ideas for learning about software design.
Full Transcript
Week 2 Lecture No. 1 Introduction to Software Design What is a Software Design? ❑ Software Design is the process to transform the user requirements into some suitable form, which helps the programmer in software coding and implementation. ❑ During the software design ph...
Week 2 Lecture No. 1 Introduction to Software Design What is a Software Design? ❑ Software Design is the process to transform the user requirements into some suitable form, which helps the programmer in software coding and implementation. ❑ During the software design phase, the design document is produced, based on the customer requirements as documented in the SRS document. ❑ Hence the aim of this phase is to transform the SRS document into the design document. The following items are designed and documented during the design phase: Different modules required Control relationships among modules Interface among different modules. Data structure among the different modules Algorithms required to implement among the individual modules. Objectives of Software Design 1. Correctness: A good design should be correct i.e. it should correctly implement all the functionalities of the system. 2. Efficiency: A good software design should address the resources, time, and cost optimization issues. 3. Understandability: A good design should be easily understandable, for which it should be modular and all the modules are arranged in layers. 4. Completeness: The design should have all the components like data structures, modules, and external interfaces, etc. 5. Maintainability: A good software design should be easily amenable to change whenever a change request is made from the customer side. Software Design Concepts The software design concept simply means the idea or principle behind the design. It describes how you plan to solve the problem of designing software, the logic, or thinking behind how you will design software. It allows the software engineer to create the model of the system or software or product that is to be developed or built. The software design concept provides a supporting and essential structure or model for developing the right software. There are many concepts of software design and some of them are given below: The following points should be considered while designing Software: ❑ Abstraction- hide Irrelevant data ✓ Abstraction simply means to hide the details to reduce complexity and increases efficiency or quality. ✓ Different levels of Abstraction are necessary and must be applied at each stage of the design process so that any error that is present can be removed to increase the efficiency of the software solution ❑ Modularity- subdivide the system ✓ Modularity simply means dividing the system or project into smaller parts to reduce the complexity of the system or project. ✓ It is necessary to divide the software into components known as modules. ✓ If the system contains fewer components then it would mean the system is complex which requires a lot of effort (cost) but if we are able to divide the system into components then the cost would be small. ❑ Architecture- design a structure of something Architecture ✓ Architecture in designing software is a concept that focuses on various elements and the data of the structure. ✓ These components interact with each other and use the data of the structure in architecture. ❑ Refinement- removes impurities ✓ Refinement simply means to refine something to remove any impurities if present and increase the quality. ✓ Refinement is very necessary to find out any error if present and then to reduce it. ❑ Pattern- a repeated form ✓ The pattern simply means a repeated form or design in which the same shape is repeated several times to form a pattern. ❑ Information Hiding- hide the information ✓ In software design, information hiding is achieved by designing the modules in a manner that the information gathered or contained in one module is hidden and can’t be accessed by any other modules. ❑ Refactoring- reconstruct something ✓ The process of changing a software system in a way that it won’t affect the behavior of the design and improves the internal structure. : Different levels of Software Design There are three different levels of software design. They are: Architectural Design Preliminary or high-level design Detailed design Architectural Design ❖ The architecture of a system can be viewed as the overall structure of the system & the way in which structure provides conceptual integrity of the system. ❖ The architectural design identifies the software as a system with many components interacting with each other. ❖ At this level, the designers get the idea of the proposed solution domain. Preliminary or high-level design ❖ Here the problem is decomposed into a set of modules, the control relationship among various modules identified, and also the interfaces among various modules are identified. ❖ The outcome of this stage is called the program architecture. ❖ Design representation techniques used in this stage are structure chart and UML. Detailed design Once the high-level design is complete, a detailed design is undertaken. In detailed design, each module is examined carefully to design the data structure and algorithms. The stage outcome is documented in the form of a module specification document.