2c Flashcards
Define abstraction
Process of removing excessive details to arrive at a representation of a problem that consists of only the key features. Often involves analysing what is relevant to a given scenario and simplifying a problem based on this information (representational abstraction)
What is abstraction by generalisation
Process of removing excessive details to arrive at a representation of a problem that consists of only the key features. Often involves analysing what is relevant to a given scenario and simplifying a problem based on this information (representational abstraction)
Define data abstraction
Details about how data is being stored are hidden. E.g stacks and queues
What is the need of abstraction
Allows non experts to make use of a range of systems or models by hiding information that is too complex or irrelevant to the systems purpose
Enables more efficient software design
Reduces time spent on projects
Prevents unnecessarily large program
Define thinking ahead
Thinking about the different components of a problem and how to handle them in the best way possible
Means designing strategies for programs is easier and intuitive to use
Define preconditions
Requirements which must be met before a program can be executed
Specifying preconditions means subroutine can safely expect the arguments passed to certain criteria
Reduces length and complexity of code
Saves time needed to debug and maintain a longer program
Makes subroutines more reusable
What are libraries
Contain commonly used functions for reuse, including queues, stacks, classes and subroutines
Define decomposition
Breaking down a complex problem or system into smaller parts that are more manageable and easier to understand.
What are the advantages of reusable components
More reliable
Already been tested
Saves money, time and resources
Can be reused in future projects (- compatibility issues)
Define thinking procedurally
Large complex problem is continually broken down into smaller subproblems.
Makes project easier to manage and can be divided between a group of people
Define paradigm
The approach used when developing a piece of software
Define sequence
Code is executed line by line from top to bottom
Define branching
Particular block of code is run if a specific condition is met
Define iteration
Count controlled (block of code executed certain number of times)
Condition controlled (block of code is executed while a condition is met)
Define scope
Section of code in which the variable can be accessed
Define local variable
Can only be accessed within the subroutine in which they were defined
Deleted once subroutine ends
Ensure subroutines are self contained
Define global variables
Accessed across the whole program
Danger of being unintentionally edited
Not deleted until program terminates, requires more memory
Define modular programming
Technique used to split large, complex programs into smaller, self contained modules
Easier to divide tasks between a team
Each component can be dealt with individually
Improves reusability
Examples of modularity
Breaking down problem into sub problems
Functions and procedures
Passing by value
Giving address of parameter to subroutine
Define IDE
Program that provides a set of tools to make it easier for programmers to write, develop and debug code
List features of IDE
Stepping
Variable watch
Breakpoint
Source code editor
Debugging tools
List stages in the software development cycle (SDLC)
Analysis
Design
Development
Testing
Implementation
Evaluation
Maintenance
Explain waterfall lice cycle
Stages are completed in sequence
Clear structure
To make change all stages must be revisited
Low user involvement
Lack flexibility
No risk analysis
Explain agile methodologies
Aim to improve flexibility
Adapt quickly to user requirements
Different sections developed in parallel
Working prototype delivered early on
Less focus on documentation
High user satisfaction