|
|
| There are certain fundamental concepts pertaining to
Software design, which must be taken into account while designing a
software system, which are as follows:
|
Abstraction: Abstraction is a process whereby we can identify the
important aspects of any event or fact and ignore its
details.
Data Abstraction: Data Abstraction is a named collection of data that describes a data
object. Data abstraction includes a set of attributes that would describe the data object.
back to top |
|
Stepwise Refinement:
Refinement is nothing but improvement or enhancement. Each step in refinement is carried out because of some
design decisions. Stepwise Refinement is actually a process of
elaboration. A statement, which describes function or information (only
conceptually) but gives no information of the procedural aspects of the
function, can be refined or improved upon as more detail as each successive
refinement occurs.
back to top
|
| Modularity: Modularity dose not mean breaking up a module into smaller
portions indefinitely. This approach will not work because as the number of modules
grows, the effort (cost) taken to integrate the modules also grows. A module in the broadest sense could be a
subroutine, a function, or a subprogram.
back to top |
Software Architecture :Software Architecture refers to the overall
structure of the software and the ways in which that structure provides conceptual integrity for a
system. When we talk of architecture, we mean the hierarchical structure of modules, the way they interact with each
other and the formation of data that is to be used by the modules.
back to top |
| Control Hierarchy: Control
Hierarchy is also called program structure and it signifies the
organization of modules and implies a hierarchy of control. Control
hierarchy can be depicted using a variety of methods. Control hierarchy
represents two different characteristics of the software
architecture: visibility and connectivity.
Visibility: Visibility is the set of program components that can be
used as data by a given component indirectly.
Connectivity: Connectivity is the set of components that are used as
data by a given component indirectly.
back to top |
| Structural Partitioning: A
structure can be divided into two. They are: Horizontal partitioning and
Vertical partitioning.
Horizontal Partitioning: In Horizontal partitioning we define separate
branches of the modular hierarchy for each major program funtion.
Vertical Partioning: It recommends a top-down approach to program architecture. Top level modules should perform control functions while processing and computation, etc. should be delegated to lower level functions. This makes the system more maintainable, which is a key quality factor.
back to top |
| Data Structure: It is the logical relationship among indivisual elements of of data. It represents the organization of data, methods of access, degree of associativity, and processing alternatives for information.
back to top
|
| Software Procedure: It provides a precise specification of processing, including sequences of events, exact decision points, repetitive operations, and even data organization and structure. That is, it focuses on processing details of each module of the system.
back to top
|
| Information Hiding: Effective modularity can be achieved by defining a set of independent modules that communicate with each other. Modules must be designed in such a way that functions and data within one module are inaccessible to those modules which do not need the information.
back to top
|
|
| |