Question: Explain Software Design?
Question: Explain Software Design?
1. Abstraction:
Abstraction is the process of generalization by reducing the information content of a
concept.
It is an act of representing essential features without including the background details or
explanation.
2. Refinement:
It is the process of elaboration
One or several instructions of a given program are decomposed into more detailed instructions.
Abstraction and Refinement are complementary concepts.
3. Modularity:
Software Architecture is divided into components called modules.
4. Software Architecture:
The overall structure of the software and the ways in which that structure provides conceptual
integrity for a system.
5. Control Hierarchy:
A program structure that represents the organization of a program components and implies a
hierarchy of control.
6. Structural Portioning:
The program structure can be divided both Horizontally and vertically.
Horizontal partition defines separate branches of modular hierarchy for each major program
function.
Vertical partition suggests that control and work should be distributed top down in the program
structure.
7. Data Structure:
It is a representation of the logical relationship among individual elements of data.
8. Software Procedure:
It focusing on the processing of each module individually.
9. 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.
1. Compatibility:
The software is able to operate with other products that are designed for interoperability with
another product.
For Example, a piece of software may be backward-compatible with and older version of itself.
2. Extensibility:
New Capabilities can be added to the software without major changes to the
underlying architecture.
3. Modularity:
The resulting software comprises well defined, independent components which
leads to better maintainability.
The components could be then implemented and tested in isolation before being
integrated to form a desired software system.
4. Fault Tolerance:
The software is resistant to and able to recover from component failure.
5. Maintainability:
A measure of how easily bug fixes or functional modification can be accomplished.
6. Reliability:
The software is able to perform a required function under stated conditions for a
specified period of time.
7. Reusability:
The ability to use some or all of the aspects of the preexisting software in other
projects with little to no modification.
8. Robustness:
The software is able to operate under stress or tolerate unpredictable or invalid
input.
9. Security:
The software is able to withstand and resist hostile acts and influences.
10. Usability:
The software user interface must be usable for its target user/audience.
11. Performance:
The software performs its tasks within a time frame that is acceptable for the user,
and does not require too much memory.
12. Portability:
The software should be usable across a number of different condition and
environments.
13. Scalability:
The software adapts well to increasing data or number of user.