The process of solving problems and planning for a software solution is known as software design.
The process of solving problems and planning for a software solution is known as software design. In this process, first the purpose and specifications are determined, the software developers plan to develop the software or employ designers to develop a plan of the solution. The architectural view as well as the issue of algorithm implementation and low level component is also included. The Software Requirement Analysis (SRA) is used in software engineering as a step of a software development process.
The user experience design yielding a story board, in order to determine the specifications are involved if the software is ‘semi-automated’. If the software is completely automated, the software design may not be complicated at all, oftentimes as simple as a text or a flow chart. The possibility of using a semi-standard method like Unified Modeling Language and the Fundamental Modeling Concepts exist as well. The product of the design usually involves some documentation. Depending upon the technology used in the design, the design may be platform-specific or platform-independent.
The concepts of the design provide the designer the idea of choosing better and more refined methods to be tested. In today’s world certain fundamental concepts of software designing have evolved. They are as follows.
- Refinement- the process of elaboration is known as refinement. It involves the process of decomposing a statement of function stepwise until the results i.e. the language statements are reached. The formation of instructions is the result of the decomposition of one or two instructions of a specific program.
- The process of editing the information such that only the information needed, is preserved, is known as abstraction. The process of refinement and abstraction are complementary to each other.
- Modularity- The modules are components of the software architecture and the process of making the modules is known as modularity.
- Control Hierarchy- The program which involves hierarchy of controls and represents the organization of the components of the program is known as control hierarchy.
- Software architecture- The structure of the software and the ways in which integrity is provided to the system by the structure is known as software architecture. This feature is a money spinner and often gives the highest returns on investment.
- Partitioning of Structure- One has the option to divide the program structure either vertically or horizontally. Vertical partitioning defines that the flow of control and work should go from top to bottom while horizontal partitions suggests that each major program should be developed from separate branches of modular hierarchy.
- Software procedure- The processing of each module individually is the process involved in software procedure.
- Data structure- the logical relationship between individual elements of data is represented in this function.
- Information hiding- The information in a module should not be accessible and hence the modules must be specified and defined.
There are certain considerations when it comes to designing a piece of software like compatibility, maintenance, and fault-tolerance. Some other considerations that need to be given respect are modularity, packing, reusability, security, robustness and usability.