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)
How does the multi-level feedback queues scheduling algorithm work, and what are
its benefits and drawbacks? (1.2.1)
How:
- Multiple queues
- Each queue ordered by priority
Benefits:
- Considers different job priorities
Drawbacks:
- Difficult implementation
What are the definitions for class, object, and attributes in Object Oriented
Programming? (1.2.4)
Class: template for object, defines state / behaviour
Object: Particular class instance
Attributes: Object’s properties
What are the advantages and disadvantages of OOP? (1.2.4)
Advantages:
- High reusability
- Relibability in encapsulation
- Easy maintenance
Disadvantages:
- Harder coding
- Unsuitable for smaller problems
Why are libraries used within programming? (1.2.2)
- Pre-compiled incorporable within others
- Error-free
- Saves time / effort developing & testing
- Reusable
How does the first-come-first-served scheduling algorithm work, and what are its
benefits and drawbacks? (1.2.1)
How:
- Jobs chronologically processed
Benefits:
- Straightforward implementation
Drawbacks:
- Job priority / urgency unaccounted
- Long processes make shorter wait
What is encapsulation in Object Oriented Programming? (1.2.4)
Creating public methods, making sure attributes not directly accessible /
editable to user.
What are the characteristics of assembly languages? (1.2.4)
- Low-level
- Mnemonics (abbreviating instruction)
- Processor-specific commands
- 1 assembly line 🡆 1 machine code line
What is the Rapid Application Development as a software development lifecycle?
(1.2.3)
- Iterative, partially functioning prototypes
- User requirements through focus groups
- Incomplete solution given as trial
- User feedback generates next
- Final prototype fully meets requirements
- Used where unclear requirements
- Potential code inefficiency
What are the 4 modes of addressing memory? (1.2.4)
- Immediate: operand actual value for instruction
- Direct: gives value’s address
- Indirect: gives register with value’s address
- Indexed: address given by index register addition
What are device drivers? (1.2.1)
- Programs allowing OS ⇔ hardware interaction
- Specific to OS & computer architecture
What is an assembler and how does it work? (1.2.2)
- Assembly low-level platform-specific language
- Assembles turn assembly 🡆 machine code
- 1 line assembly 🡆 1 line machine code
How does the shortest-job-first scheduling algorithm work, and what are its
benefits and drawbacks? (1.2.1)
How:
- Queue storing jobs ordered by completion time requirement
- Longest jobs serviced at end
Benefits:
- Waiting time reduced 🡆 suitable for multi-user OS
Drawbacks:
- Job priority / urgency unaccounted
- Long waiting for big tasks if many short-time jobs
How does the round-robin scheduling algorithm work, and what are its benefits
and drawbacks? (1.2.1)
How:
- Each job has time slice
- Once slice used, added back with another slice
Benefits:
- All jobs attended to
Drawbacks:
- Longer jobs have longer runtime
- Job priority / urgency unaccounted
What do the HLT, DAT, BRZ, BRP, and BRA instructions do? (1.2.4)
HLT: Stops program at line, prevents rest
DAT: Reserve location for data after completion
BRZ: Branches if accumulator = zero
BRP: Branches if accumulator = positive
BRA: Branches regardless
What is an interpreter and how does it work? (1.2.2)
- Translates & executes code line-by-line
- Produces error if erronous line
- Slower than compiled
- Can be multiplatform
- Useful for testing
What is Extreme Programming as a software development lifecycle? (1.2.3)
- Agile model
- Team: programmers, representative end-user
- User anecdotes determine system requirements
- Produces high-quality & highly-usable software
- Documentation less qualitative
What are the conditions of closed-source software, and what are its advantages /
disadvantages? (1.2.2)
Closed-source: license required, inaccessible source code
Advantages:
- Regular updates / maintenance
- Expert support / manuals
- High professional security
Disadvantages:
- License restricts use
- Unmodifiable, individual improvements impossible
What are the 4 types of testing in a software development lifecycle? (1.2.3)
- Alpha (in-house by team)
- Beta (end-users, feedback)
- White-box (all possible routes, by team)
- Black-box (traces end-user IO, unaware of structure)
What functions and purposes do operating systems fulfill? (1.2.1)
- Memory management
- Scheduling algorithms
- File management
- Peripheral management
- Interrupt handling
- User management
- User interface
How do the 5 types of operating systems differ? (1.2.1)
Distributed:
- Task load across multiple device processors
Embedded:
- Performs small range of specific tasks
- Catered towards specific device
- Limited functionality, difficulty updating
- Consumes less power
Multi-tasking:
- Enables user simulatenous task-handling
- Time-slicing, quick switching between programs in memory
Multi-user:
- Multiple users, 1 computer
- Scheduling allocating fair process times between jobs
Real-time:
- Time-critical computer systems
- Designed performance in guaranteed time-frame
What is a compiler and how does it work? (1.2.2)
- Translates high-level into machine code at once
- Initial compilation process longer
- Platform-specific
- Runnable without translator
What are the characteristics of procedural languages? (1.2.4)
- Simple implementation
- Traditional data structures
- Sometimes inefficient
- Structured programming (sequence / selection / iteration / recursion)
What are the advantages and disadvantages of each software development lifecycle
methodology? (1.2.3)
Waterfall:
* Advantages: straightforward, clearly documented
* Disadvantages: lacks flexibility, no risk analysis, limited user involvement
Agile:
* Advantages: high-quality, flexibility, user input
* Disadvantages: poor communication, consistent interaction
Extreme:
* Advantages: high quality & usability
* Disadvantages: high cost, interdependency
Spiral:
* Advantages: risk mitigation, flexible, prototyping
* Disadvantages: expertise & prototyping expensive, lacking efficiency
RAD:
* Advantages: flexibility, highly usable, quick
* Disadvantages: poor documentation, code quality reduced
What is the Agile Methodologies as a software development lifecycle? (1.2.3)
- Collection improving SDLC flexibility
- Adapts to user requirement changes quickly
- Can have different stages developed simulatenously
- Prototype delivered earlier, iteratively
- Less documentation focus
- User satisfaction prioritised
What are opcode and operand? (1.2.4)
Opcode: specifies instruction performed & addressing mode
Operand: holds value for data to be instructed upon