Paper 2

Cards (39)

  • Linear Search
    • algorithm that moves through every item one at a time until it finds the item it's looking for
  • Binary Search
    • divide and conquer algorithm
    • splits list into smaller lists until it finds the item its searching for
  • Bubble Sort
    • passes through list, evaluating pairs of items and making sure the larger value is above the smaller one
  • Queues
    • first in first out (FIFO)
    • often represented as arrays
    • make use of two pointers
    • front holds position of first element
    • back stores next available space
    • operations carried out on queues are similar to those in stacks
  • Stacks
    • first in last out (FILO)
    • implemented as an array
    • single pointer that keeps track of top of stack
    • points to element currently at the top
    • initialised at -1, first element is position 0
  • Waterfall Lifecycle
    • stages completed in sequence, start to finish
    • clear structure makes it easy to follow
    • to make a change programmers must revisit all stages between
    • low user involvement
  • Agile Methodologies
    • aim to improve flexibility of SDLCs
    • adapt quickly to changes in user requirements
    • different sections are developed in parallel so can be at different stages simultaneously
    • working prototype delivered early on and improved in iterative manner
    • less focus on documentation
    • user satisfaction prioritised
  • Extreme Programming
    • agile model
    • development team is a pair of programmers and representative end-user
    • user stories used to determine system requirements
    • produces high-quality code and highly usable software
    • programmers work no longer than 40 hours a week
    • hard to produce high quality documentation
  • Spiral Model
    • manages risk-heavy projects
    • project terminated if too risky
    • specialised risk-assessors must be hired - expensive
  • Spiral Model - Stages
    • analysing system requirements
    • pinpointing/mitigating risks
    • development, testing and implementation
    • evaluating to inform the next iteration
  • Rapid Application Development
    • iterative methodology which uses partially functioning prototypes
    • user requirements gathered using focus group
    • incomplete version of solution given to user to trial
    • user feedback used to generate improved prototype
    • final prototype matches user requirements fully
    • used where user requirements are incomplete or unclear at start
    • code may be inefficient
  • Waterfall - Advantages
    • straightforward to manage
    • clearly documented
  • Waterfall - Disadvantages
    • lack of flexibility
    • no risk analysis
    • limited user involvement
  • Waterfall - Uses
    • static, low risk projects that need little user input
  • Agile - Advantages
    • high quality code
    • flexible to changing requirements
    • regular user input
  • Agile - Disadvantages
    • poor documentation
    • interaction between user and programmer
  • Agile - Uses
    • small to medium projects with unclear initial requirements
  • Extreme - Advantages
    • high quality code
    • constant user involvement - high usability
  • Extreme - Disadvantages
    • high cost of two people working together on one project
    • teamwork is essential
    • end-user needs to be present
  • Extreme - Uses
    • small to medium projects with unclear initial requirements
    • require excellent usability
  • Spiral - advantages
    • thorough risk-analysis
    • caters to changing user needs
    • prototypes produced throughout
  • Spiral - disadvantages
    • expensive (hiring risk assessors)
    • lack of focus on code efficiency
    • high costs due to constant prototyping
  • Spiral - uses
    • large, risk-intensive projects with a high budget
  • RAD - advantages
    • caters to changing user requirements
    • highly usable finished product
    • focus on core features, reducing development time
  • RAD - disadvantages
    • poorer quality documentation
    • fast pace and late changes can reduce code quality
  • RAD - uses
    • small to medium, low budget projects with short time frames
  • Alpha Testing
    • carried out in-house by software development teams
    • bugs are pinpointed and fixed
  • Beta Testing
    • carried out by end users
    • feedback from users inform next stage of development
  • Whitebox testing
    • carried out by software development teams
    • internal structure of program is recognised
    • all possible routes through program are tested
  • Blackbox Testing
    • testers are not aware of internal structure of the software
    • test plan traces through inputs and outputs
  • Local Variables
    • can only be accessed within subroutine where they were defined
    • multiple local variables with the same name can exist in different subroutines
    • they're deleted once the subroutine ends
    • using local variables ensures subroutines are self-contained
  • Global Variables
    • can be accessed across whole program
    • useful for values that need to be used by multiple parts of the program
    • danger of being unintentionally edited
    • not deleted until program terminates - requires more memory
  • Modular Programming
    • splits large, complex programs into smaller, self-contained modules
    • easier to divide tasks between a team and manage projects
    • simplifies process of testing and maintenance as each component can be deal with individually
    • improves reusability of components
  • Top-down Design/Stepwise Refinement
    • technique used to modularise programs
    • problem is broken into sub-problems until each is represented as an individual, self contained module that performs a certain task
    • modules form blocks of code called subroutines
  • Passing by Value
    • copy of the value is passed to subroutine and discarded at the end
    • value outside subroutine remains unaffected
  • Passing by Reference
    • address of parameter is given to subroutine
    • value of parameter will be updated at given address
  • Integrated Development Environment (IDE)
    • provides a set of tools to make it easier for programmers to write, develop and debug code
  • IDE - Features
    • stepping
    • variable watch
    • breakpoint
    • source code editor
    • debugging tools
  • Software Development Life Cycles (SDLCs) - stages
    • analysis
    • design
    • development
    • testing
    • implementation
    • evaluation
    • maintenance