What is the Concepts of Software Design?
Software design is a process of problem solving and planning for a software solution. After the purpose and specifications of software are determined, software developers will design or employ designers to develop a plan for a solution. It includes low-level component and algorithm implementation issues as well as the architectural view. The design concepts provide the software designer with a foundation from which more sophisticated methods can be applied. A set of fundamental design concepts has evolved. They are
Abstraction Abstraction is the process or result of generalisation by reducing the information content of a concept typically in order to retain only information which is relevant for a particular purpose.
Refinement It is the process of elaboration. A hiera-rchy is developed by decomposing a macroscopic statement of function in a stepwise fashion until programing language statements are reached. In each step, one or several instructions of a given programme are decomposed into more detailed instructions. Abstraction and refinement are complementary.
Modularity Software architecture is divided into components called modules and this process is called modularity.
Software Architecture It refers to the overall structure of the software and the ways in which that structure provides conceptual integrity for a system.
Control Hierarchy A program structure that represents the organisation of a programme component and implies a hierarchy of control.
Structural Partitioning The programme structure can be divided both horizontally and vertically. Horizontal partitions define separate branches of modular hierarchy for each major programme Vertical partitioning suggests that control and work should be distributed top down in the programme structure.
Data Structure It is a representation of the logical
relationship among individual elements of data.
Software Procedure It focuses on the processing of each modules individually.
Information Hiding Modules should be specified and designed so that information contained within a module is inaccessible to other modules that have no need for such information.
A software designer or architect may identify a design problem which has been solved by others before. A template or pattern describing a solution to a common problem is known as a design pattern. The reuse of such patterns can speed up the software development process, having been tested and proven in the past.
There are many aspects to consider in the design of a piece of software