0% found this document useful (0 votes)
43 views

Software Design Principles

software design principles

Uploaded by

kaniksha sharma
Copyright
© © All Rights Reserved
Available Formats
Download as PDF or read online on Scribd
0% found this document useful (0 votes)
43 views

Software Design Principles

software design principles

Uploaded by

kaniksha sharma
Copyright
© © All Rights Reserved
Available Formats
Download as PDF or read online on Scribd
You are on page 1/ 14
Software Design Software design is a mechanism to transform user requirements into some suitable form, which helps the programmer in software coding and implementation. It deals with representing the client's requirement, as described in SRS (Software Requirement Specification) document, into a form, i.e., easily implementable using programming language. The software design phase is the first step in SDLC (Software Design Life Cycle), which moves the concentration from the problem domain to the solution domain. In software design, we consider the system to be a set of components or modules with clearly defined behaviors & boundaries. Following are the purposes of Software design: eeu erected rita = Flexibility pr ays Maintainability Objectives of Software Design 1. Correctness:Software design should be correct as per requirement. 2. Completeness:The design should have all components like data structures, modules, and external interfaces, etc. 3. Efficiency:Resources should be used efficiently by the program. 4. Flexibility:Able to modify on changing needs. 5. Consistency:There should not be any inconsistency in the design. 6. Maintainability: The design should be so simple so that it can be easily maintainable by other designers. Interface Design: Interface design is the specification of the interaction between a system and its environment. this phase proceeds at a high level of abstraction with respect to the inner workings of the system i.e, during interface design, the internal of the systems are completely ignored and the system is treated as a black box. Attention is focussed on the dialogue between the target system and the users, devices, and other systems with which it interacts. The design problem statement produced during the problem analysis step should identify the people, other systems, and devices which are collectively called agents. Architectural Design: Architectural design is the specification of the major components of a system, their responsibilities, properties, interfaces, and the relationships and interactions between them. In architectural design, the overall structure of the system is chosen, but the internal details of major components are ignored. Detailed Design: Design is the specification of the internal elements of all major system components, their properties, relationships, processing, and often their algorithms and the data structures. Software Design Principles Software design principles are concerned with providing means to handle the complexity of the design process effectively. Effectively managing the complexity will not only reduce the effort needed for design but can also reduce the scope of introducing errors during design. Following are the principles of Software Design Software Design Principles Top Down & Modularity lee dS a ye = Problem Partitioning Problem Partitioning For small problem, we can handle the entire problem at once but for the significant problem, divide the problems and conquer the problem it means to divide the problem into smaller pieces so that each piece can be captured separately. For software design, the goal is to divide the problem into manageable pieces. Benefits of Problem Partitioning 1. Software is easy to understand 2. Software becomes simple 3. Software is easy to test 4. Software is easy to modify 5. Software is easy to maintain 6. Software is easy to expand These pieces cannot be entirely independent of each other as they together form the system. They have to cooperate and communicate to solve the problem. This communication adds complexity. An abstraction is a tool that enables a designer to consider a component at an abstract level without bothering about the internal details of the implementation. Abstraction can be used for existing element as well as the component being designed. Here, there are two common abstraction mechanisms 1. Functional Abstraction 2. Data Abstraction Functional Abstraction i. Amodule is specified by the method it performs. ii. The details of the algorithm to accomplish the functions are not visible to the user of the function. Functional abstraction forms the basis for Function oriented design approaches. Data Abstraction Details of the data elements are not visible to the users of data. Data Abstraction forms the basis for Object Oriented design approaches. Modularity Modularity specifies to the division of software into separate modules which are differently named and addressed and are integrated later on in to obtain the completely functional software. It is the only property that allows a program to be intellectually manageable. Single large programs are difficult to understand and read due to a large number of reference variables, control paths, global variables, etc. Advantages of Modularity There are several advantages of Modularity ° ° ° ° It allows large programs to be written by several or different people It encourages the creation of commonly used routines to be placed in the library and used by other programs. It simplifies the overlay procedure of loading a large program into main storage. It provides more checkpoints to measure progress. It provides a framework for complete testing, more accessible to test It produced the well designed and more readable program. Disadvantages of Modularity There are several disadvantages of Modularity Execution time maybe, but not certainly, longer © Storage size perhaps, but is not certainly, increased © Compilation and loading time may be longer Inter-module communication problems may be increased o More linkage required, run-time may be longer, more source lines must be written, and more documentation has to be done Strategy of Design A good system design strategy is to organize the program modules in such a method that are easy to develop and latter too, change. Structured design methods help developers to deal with the size and complexity of programs. Analysts generate instructions for the developers about how code should be composed and how pieces o' code should fit together to form a program. To design a system, there are two possible approaches: 1. Top-down Approach 2. Bottom-up Approach 1. Top-down Approach: This approach starts with the identification of the main components and then decomposing them into their more detailed sub-components. 2. Bottom-up Approach: A bottom-up approach begins with the lower details and moves towards up the hierarchy, as shown in fig. This approach is suitable in case of an existing system. <—— Level <—\_!_——— Level

You might also like