Software design is the process of transforming user requirements into a suitable model that helps programmers code and implement the software. The design model provides details about data structures, architecture, interfaces, and components. It is assessed for quality before coding. Software design concepts include abstraction, modularity, information hiding, and architecture. The principles of software design include choosing the right paradigm, ensuring minimal errors, and representing the real-world problem. Software design has three levels - architectural, high-level, and detailed design. Modularization divides a system into independent modules to make it easier to understand, maintain, and reuse components. Coupling measures interdependence between modules, with loose coupling and low coupling preferred.
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0 ratings0% found this document useful (0 votes)
73 views4 pages
Lecture On 23-09-2020
Software design is the process of transforming user requirements into a suitable model that helps programmers code and implement the software. The design model provides details about data structures, architecture, interfaces, and components. It is assessed for quality before coding. Software design concepts include abstraction, modularity, information hiding, and architecture. The principles of software design include choosing the right paradigm, ensuring minimal errors, and representing the real-world problem. Software design has three levels - architectural, high-level, and detailed design. Modularization divides a system into independent modules to make it easier to understand, maintain, and reuse components. Coupling measures interdependence between modules, with loose coupling and low coupling preferred.
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 4
Software Design
What is Software design?
It is a process to transform user requirements into some suitable form, which helps the programmer in software coding and implementation. The software design process comprises a set of principles, concepts and practices, which allow a software engineer to model the system or product that is to be built. This model, known as design model, is assessed for quality and reviewed before a code is generated and tests are conducted. The design model provides details about software data structures, architecture, interfaces and components which are required to implement the system. IEEE defines software design as “both a process of defining, the architecture, components, interfaces, and other characteristics of a system or component and the result of that process.” Software Design Concepts 1. Abstraction* 2. Modularity* 3. Control Hierarchy 4. Data Structure 5. Information Hiding* 6. Refinement 7. Software Architecture* 8. Structural Partitioning* 9. Software Procedure Abstraction is the process of representing essential features without including the background details. IEEE defines abstraction as “a view of problem that extracts the essential information” Software architecture refers to the structure of the system, which is composed of various components of a program/ system, the attributes (properties) of those components and the relationship amongst them. The software architecture enables the software engineers to analyse the software design efficiently. IEEE defines information hiding as 'the technique of encapsulating software design decisions in modules in such a way that the module's interfaces reveal as little as possible about the module's inner workings; thus each module is a 'black box' to the other modules in the system. When the architectural style of a design follows a hierarchical nature, the structure of the program can be partitioned either horizontally or vertically. In horizontal partitioning, the control modules are used to communicate between functions and execute the functions. In vertical partitioning, the control and work distributed top-down in the program structure. *considered in syllabus Structural partitioning provides the following benefits. The testing and maintenance of software becomes easier. The negative impacts spread slowly. The software can be extended easily. Principles of Software Design Software design should correspond to the analysis model Choose the right programming paradigm Software design should be uniform and integrated Software design should be flexible Software design should ensure minimal conceptual (semantic) errors Software design should be structured to degrade gently Software design should represent correspondence between the software and real-world problem Software reuse Designing for testability Prototyping Software Design Levels Architectural Design: - IEEE defines architectural design as “the process of defining a collection of hardware and software components and their interfaces to establish the framework for the development of a computer system.” High-level Design: - This is the second level of the designing. The high level design splits the theory or concept single entity-multiple component into less-abstracted prospect of modules and subsystems. And also represents their cooperation with each. Basically the high level design concentrates on how the system besides all of its element can be applied as modules. High level design concept identifies modular arrangement of all subsystems and also their connection and cooperation between them. Detailed Design: - This is the third level of the designing. This is the level where the designing deals with the accomplishment part, which will be finally seen by the system. This level of designing is more elaborated as compared to previous modules design and implementations. In this level of design, we determine the logical structure of all previous modules. Modularization Modularization is the process of dividing a software system into multiple independent modules where each module works independently. A module (software component) is defined as a piece of software with a programming interface. Advantages of modularization are: Easy to understand the system. System maintenance is easy. A module can be used many times as their requirements. No need to write it again and again. Coupling: In software engineering, the coupling is the degree of interdependence between software modules. Two modules that are tightly coupled are strongly dependent on each other. Two modules that are loosely coupled are not dependent on each other. Uncoupled modules have no interdependence at all within them. A good design is the one that has low coupling. Coupling is measured by the number of relations between the modules. As coupling increases as the number of calls between modules increase or the amount of shared data is large. Thus, it can be said that a design with high coupling will have more errors.
Type of Coupling: 1. Data Coupling 2. Stamp Coupling 3. Control Coupling 4. External Coupling 5. Common Coupling 6. Content Coupling