System Design: Logical and Physical Design in Software Development
System Design: Logical and Physical
Physical Design
Physical design is the implementation of the system’s tasks, combining components and functions.
Key Features:
- Hardware Design: Specifying all computer equipment, including input, processing, and output devices, along with their performance characteristics.
- Software Design: Specifying all software features. For example, if the logical design requires users to update the database, the physical design specifies the system that enables this.
- Database Design: Detailing the timing, structure, and functions of the database. Relationships between data elements from the logical design must be reflected here.
- Telecommunications Design: Specifying the necessary software, media, and device characteristics.
- Procedures and Controls Design: Detailing application execution and measures to minimize risks like crime and fraud (including audit methodology, support, and output distribution).
Logical Design
Logical design describes a system’s functional requirements, including the purpose of each element, independent of hardware and software.
Specifications:
- Output: Description of all system outputs, including type, format, content, and frequency.
- Input: Specifies the type, format, content, and capture method. For example, capturing customer phone numbers during calls and using this data to automatically search account information.
- Processing: Determines the types of calculations, comparisons, and general data manipulation required.
- Archives and Database: Characteristics of these subsystems. Data Flow Diagrams and Entity-Relationship diagrams are commonly used.
- Telecommunications: Specifies networking and telecommunications systems. Graphics programs and CASE tools can aid in logical network design.
- Procedures: Defines procedures for application execution and problem-solving. These can be documented using word processing software.
- Control and Security: Determines the frequency and characteristics of necessary support systems.
Software Design Principles
System design defines the architecture of hardware and software modules and data components to meet requirements.
Coupling and Cohesion
These concepts are closely related and impact each other.
Coupling: The degree of interdependence between program modules.
Coupling Levels (from most to least desirable):
- Normal Coupling: A module calls another at a lower level, exchanging only data (I/O parameters). Subtypes include:
- Data Coupling: Modules communicate via parameters.
- Stamp/Pattern Coupling: Modules pass data record structures. Less desirable if the module only needs part of the data.
- Control Coupling: Modules exchange control data. Not ideal, as it hinders independence.
- Common Coupling: Modules access the same shared resource (e.g., shared memory, global variable, file).
- External Coupling: Modules link to external components (e.g., I/O devices, communication protocols).
- Content Coupling: A module accesses part of another module.
Cohesion: The strength of functional relationships between elements within a module.
Cohesion Types:
- Functional Cohesion: Elements contribute to a single function.
- Sequential Cohesion: A module performs sequential tasks, where each task’s input is the previous task’s output.
- Communicational Cohesion: The module operates on the same data in parallel I/O.
- Procedural Cohesion: A module has functions related by a procedure (like a library). Similar to sequential but may include control steps.
- Temporal Cohesion: Elements are involved in time-related activities.
- Logical Cohesion: Activities belong to the same category.
- Coincidental Cohesion: Elements have little or no significant relationship. This violates the principle of module independence.
Software Architecture
Software architecture is the highest level of system structure.
Architecture and design choices are based on objectives (e.g., maintainability, auditability, flexibility) and constraints (e.g., available technologies).
Design Heuristics
A heuristic is a problem-solving approach using creativity and lateral thinking.
Heuristics (from the Greek “to find, invent”) refers to the art and science of discovery and invention.