1.2 Software and software development Flashcards
What is the Spiral Model as a software development lifecycle? (1.2.3)
- Manages risk-heavy
- Analyses requirements, pinpoints risk, creates iteration, evaluates next
- Specialists necessary, expensive
What is the definition of an algorithm, and what qualities do good algorithms
have? (1.2.3)
Algorithm: set instructions for solving a problem
Qualities:
- Clearly defined inputs
- Always produces valid output
- Deals with invalid inputs
- Reaches stopping condition
- Well-documented & well-commented
What is virtual memory? (1.2.1)
- Hard drive section acting as RAM
- When insufficient RAM space
- Currently unused sections moved 🡆 virtual
- Causes disk-thrashing, swaps too frequent
What is a virtual machine, and what is intermediate code? (1.2.1)
Virtual machine: software implementation of computer system, can be environment
with translator for intermediate code.
Intermediate code: code halfway between machine / object code, independent of
processor architecture, longer execution than low-level.
How does the shortest-remaining-time scheduling algorithm work, and what are its
benefits and drawbacks? (1.2.1)
How:
- Queue storing jobs processed by remaining completion time
- Least completion time first
Benefits:
- Reduces waiting job amount
Drawbacks:
- Job time estimation required
- Job priority / urgency unaccounted
- Long waiting for big tasks if many short-time jobs
What are the 2 main categories of programming paradigms? (1.2.4)
Imperative: clearly specified actions performed
Declarative: states desired result, program determines best way to obtain with
user abstract
What is paging and segmentation? (1.2.1)
Paging: fixed-size physically-divided sections
Segmentation: logically-divided variable-sized following program structure
What is polymorphism in Object Oriented Programming? (1.2.4)
Enables different objects with same function & different behaviour, reusing
components
What does the BIOS do? (1.2.1)
- First program upon startup
- Runs test sequence before memory loads OS
- POST (Power-on self test) ensures hardware functionality
- Checks CPU clock
What are interrupts, and how does the Interrupt Service Routine work? (1.2.1)
Interrupts: signals indicating process requires attention
ISR:
- Checks interrupt register at FDE end
- If prioritised, current contents transferred 🡆 stack
- ISR loaded, flag signals start / end
- Process repeated until no more, contents popped back
What is the difference between applications, systems, and utility software, with
examples of each? (1.2.2)
Application: used by end-user, performs 1 specific task (e.g. word processor,
browser)
Systems: manages computer resources, ensures performance (e.g. OS, drivers,
utility)
Utility: maintains high performance, specific function (e.g. defragmentation,
backup, compression)
What is the Waterfall as a software development lifecycle? (1.2.3)
- Stages sequenced
- Clear structure, easy following
- Changes require stage revisits
- Low user involvement
What are linkers and loaders? (1.2.2)
Linkers:
- Software linking external modules / lbraries
- Static (copied directly)
- Dynamic (addresses to external library)
Loaders:
- OS-provided programs
- Fetches library from memory location
What are the conditions of open-source software, and what are its advantages /
disadvantages? (1.2.2)
Open-source:
- Used without license
- Distributed with source code
Advantages:
- Improved by community
- Modifiable
Disadvantages:
- Inadequate support, no manuals
- Lower security
What is inheritance in Object Oriented Programming? (1.2.4)
Subclass inherits all superclass methods / attributes, can have additional
properties
What are the stages of compilation? (1.2.2)
- Lexical analysis (whitespace/comment removal, keywords/identifiers 🡆 tokens)
- Syntax analysis (tokens checked against rules, syntax flags, abstract syntax tree)
- Code generation (produces machine code)
- Optimisation (reduces execution time, removes redundancy)