Software Flashcards

1
Q

General purpose software

A

Software that can be used for a variety of tasks.

Includes office applications eg presentation software (creates presentations and posters/diagrams) and word processing software.

Likely to attract a lot of users and therefore can be sold at quite a low price.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Bespoke software

A

Software that is developed to meet the user’s specific requirements.
Developed for a specific task and/or user.
Unlikely that others would want to buy it therefore development costs and high.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Application software

A

Designed to perform tasks that a user wants to complete eg playing a game or sending an email.

Some may be pre-installed on a computer but often the user has to install the application software.

Examples: word processors, video games, communication software

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Special purpose software

A

Software that can only be used for one particular task.

Eg scientific calculator software can only carry out calculations.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

System software

A

Controls the hardware of a computer system eg operating systems.

OSs are loaded into RAM when the computer starts up and has access to the hard drive.

Provide a platform for application software to run on and a way for application software to interact with hardware.

Examples: translators, utility programs

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Closed source software

A

Software for which the source code is not freely available.

Developed and provided to the user as a fully compiled, executable set of files.

Developers often provide support to users after purchase as users cannot make changes to the software.

User does not buy the software but a licence to use it.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Open source software

A

Software for which the source code is freely available to download.

Code can be inspected and modified by the user, so they can contribute to fixing errors and vulnerabilities in the code.

Usually free but the quality of the finished product can vary.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

High level language

A

Used to write programs that are independent of the computer architecture they will run on.

Eg C++, Python

Easier for users to read and understand.

Must be translated before execution by a compiler or interpreter.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Low level language

A

Eg assembly language programs

Must be translated by assemblers.

Closer to machine code than high level so more difficult to read.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Compiler

A

Translates code into a form that can be executed but cannot be read by a human. Does not execute the code.

Most commercial applications are distributed as compiled code to protect the source code.

Stages: Lexical, syntax, semantic, code generation, optimisation

Errors are reported at the end of the compilation process and the program will need to be corrected then compiled again.

Once compiled, the executable file will not need to be translated again unless code is changed. Result is faster running time and does not need a translator to be installed to run the program.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Interpreter

A

Translate and execute each line of source code one by one.

When program is run, each line is syntax checked then converted into machine code. If a syntax error is found the program halts and it is reported. If a runtime error occurs the system crashes.

Errors are quick to identify and correct without having to translate the entire program every time.

Runs more slowly and the user must have an interpreter installed to run the program. Can be advantageous if the developer doesn’t know what platform will be used as translation is handled by the browser.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Assembler

A

Translate assembly code programs into executable code.

One-to-one relationship between assembly code and machine code so assembling is a relatively simple process.

Comments get removed and symbolic references are replaced with actual addresses.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Lexical analysis

A

The first stage of the compilation process.

Compiler removes white space and comments.

Code is tokenised and a symbol table is produced.

Identifiers are checked against a set of rules eg cannot start with a number or contain certain characters.
Reserved words such as print can only be used as keyword tokens.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Syntax analysis

A

Second stage of the compilation process.

Compiler checks that the tokens are in the correct order and that they follow the rules of the language.

Syntax rules differ between languages.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Abstract syntax tree

A

During the syntax analysis stage, an abstract syntax tree is created.

Maps the structure of the program, first dropping the brackets, semicolons etc that were used by the programmer.

If required tokens are missing from the tree or in the wrong place the compiler will report an error.

Every language produces a different AST depending on its syntax.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Semantic analysis

A

Third stage of compiling
Used to highlight logic errors

17
Q

Code generation

A

A separate program is created that is distinct from the original source code. This is a binary representation of the source code, known as object code - the executable version of the code.

Interpreters do not produce a separate executable file.

18
Q

Code optimisation

A

Occurs throughout the compilation process in particular as part of the code generation stage. It may identify redundant or repeated code and remove or rearrange it as necessary.

19
Q

Libraries

A

Banks of pre-written code for high-level languages.

Gives access to specialist functions eg printing and maths equations.

Saves time writing a new program, and has normally been thoroughly tested therefore is efficient and reliable.

20
Q

Linker

A

Compilation of high-level languages often results in several object code files. The linker resolves all of the cross-references between the files and creates a single executable program.

21
Q

Loader

A

Part of the operating system - copies the executable code into RAM as part of the execution process.

Also carries out other tasks to prepare a program for execution.

22
Q

Boot Strap Loader

A

Loads itself by using instructions at the beginning to load the rest of itself. This is how operating systems on PCs boot themselves up.

23
Q

Absolute loader

A

Loads a program into a single fixed area of memory. All memory addresses are fixed at translation.

24
Q

Linking loader

A

Can link together programs that have been compiled separately.

25
Q

Relocating loader

A

Can load the program anywhere in memory. Useful if more than one program is being run on the same system but relocatable code must be used.
Uses labels to move blocks of code anywhere in memory and will always work. The start address of the program is loaded into the base register.

26
Q

Waterfall lifecycle

A

Requirements are fixed once they are agreed.
Makes well structured and well understood stages so easier to plan.
Large projects can be split into smaller projects.
Lack of user involvement during design and build stages.
Risk of not being what the client wants - stakeholders do not have a chance to review until release.
Testing stage is towards the end.

27
Q

The spiral model

A

Similar to Waterfall but with project cycles each ending with a prototype that defines the next cycle.
Focus on identifying and managing risks.
4 stages of each cycle: determine objectives, identify and solve risks, develop and test, plan next iteration.
Suitable for large-scale high-risk projects.
Needs a risk management expert.

28
Q

Agile methodologies

A

Advocates building prototypes, testing and incorporating feedback.
First described in the Manifesto for Agile Software Development.
Highest priority is to satisfy the customer.
Often only suitable for small to medium scale projects but larger ones can be broken down.
Allows for scope creep - client frequently changes the requirements.

29
Q

Rapid application development (RAD)

A

An agile approach to software development based around prototyping with emphasis on an adaptive process.
Well suited for developing software where the requirements are unclear or UI is an important part of the project.
Good for smaller projects with smaller teams.
Continuous feedback.
Could encourage sloppiness - try it and see approach and can take longer than anticipated if users make frequent requests.

30
Q

Extreme programming (XP)

A

Agile approach to software development.
Focus on the refinement of the code.
Frequent releases in short development cycles and continual communication with customer.
Planning phase at beginning of each release and feedback stage at the end.
High code quality, fewer bugs so less time spent fixing them.
Scope creep due to lack of firm requirements.
High degree of communication - client has to commit to having one or more users actively involved.