Data storage structures design
-Is a critical part of system design
-It focuses on how info is systematically organized, stored and managed with software systems
Why design data storage structures
-Enables efficient access, update, and management of system data
-Supports scalability as data and user numbers grow
-Maintains data integrity and accuracy over time
-Facilitates easy maintenance and system updates
-Ensures security, privacy, and compliance with policies
Types of data storage structures
-In-memory structures:Temporary storage in RAM for fast access during program execution
-Persistent structures:Long-term storage using files, databases etc
Logical vs Physical storage
Logical storage:Conceptual organization
Physical storage:Actual representation on hardware
Key design principles
-Abstraction
-Modularity
-Consistency
-Encapsulation
-Efficiency
-Adaptability
Abstraction
Hides implementation details behind a simple interface
Modularity
Each structure is responsible for specific operations and can be managed independently
Consistency
Structures enforce rules and constraints to keep data valid
Encapsulation
Internal data is protected, access is controlled via defined methods
Efficiency
Design choices optimize speed and memory usage
Adaptability
Structures should allow for likely future changes
What are user interactions
-Ways users communicate with the system
Why user interaction design?
-Reduces user confusion and mistakes
-Increases task efficiency and satisfaction
-Encourages repeat use
Good design principles
Simplicity:Keep interfaces clear and easy
Consistency:Use standard layouts and controls
Feedback:Provide clear system responses
Error handling:Allow easy correction of mistakes
Familiarity:Use common terms and controls
Planning user interactions
-Start with user goals and tasks
-Create wireframes for key screens
-Choose suitable controls
-Map typical user journeys
UI vs UX
UI:User interface-layout,buttons, colours
UX:User experience- overall feel and ease of use
Documenting interaction design
-List main screens and user actions
-Specify controls and their purposes
-Include wireframes or screen diagrams
-Describe user flows between screens
Testing and improving interactions
-Conduct user testing with real users
-Collect feedback and identify issues
-Refine and retest for better experience