1/11
Looks like no tags are added yet.
Abstraction
Process of separating ideas from reality. hiding unnecessary details and showing details important in context
The need for abstraction in programs
↓ processing requirements
↓ memory requirements
↓ complexity
Simplify programming
Without it its difficult & confusing to display certain features
Need for thinking ahead
Maximise code efficiency
Minimise errors
Preconditions
Conditions that already exist and could affect how you devise solution to problem
Benefits of reusable code
Reduce dev time & cost
Save system resources
Reduce redundant code
Advantages of using software libraries
Routine already compiled - tested & error free
Save work for programmer
May be used multiple times
Allow use other programmers expertise
May require fewer devs
External reuse
Selling component to 3rd party
Top-down modular design using structure diagrams
Can break down problem into top-down modular design using stepwise refinement
Using top-down design, task is split into smaller sub-tasks
End up with sub-task that performs single function/task
Lowest level sub-task assigned to individual programmers/small teams
Benefits of subprograms
Written once, called multiple times
Can reuse in other programs
Can be tested and modified individually
Breaks program into sections
Reduces repeating/redundant code

Caching
Instructions/data retrieved from secondary storage & placed into main memory, remaining there in case they are needed
Caching benefits
Used by web pages to reduce number or requests from client to web server and visa versa
Overall caching increases speed and efficiency
Caching drawbacks
Difficult to implement due to nature of predictive logic
Wrong data often fetched
Maintaining correct sequence of instructions & data items in these circumstances can be problematic