1.2.2 Applications Generation Flashcards
Application software
- Software that performs tasks for a user [1]
- requires system software to run
System software
- low level software that provides a platform for application software to run
- Operating systems and utility software are a type of system software
Types of application software
- word processor
- Database management software
- web browser
- email client
- spreadsheet software
- presentation software
- antivirus software
- video editing software
- IDE
- virtualisation software
- graphics manipulation
Word processor
- for creating/editing/printing text documents
- eg Microsoft word, Google docs
Database management software
- for storing/querying/managing/retrieving data
- eg MySQL. Oracle
Web browser
- for browsing the web and accessing info online
- to view websites eg. To purchase
- eg. Google chrome, Firefox
Graphics manipulation
- for editing and manipulating images eg to produce adverts/ images for sale
- eg. Adobe photoshop
Spreadsheet software
- for organising/calculating and analysing numerical data quickly and more accurately [1]
- E.g Microsoft excel, Google sheets
Presentation software
- To create presentations e.g for staff, clients
- eg. Microsoft PowerPoint
Email client/email software
- for managing and accessing emails across different providers
- eg. Outlook
Email client/email software
- for managing and accessing emails across different providers
- eg. Outlook
Utility software
- a piece of system software with a specific function linked to the maintenance of the OS [1]
Types of utility software
- disk defragmentation
- compression
- disk cleanup
- backup software
- file encryption software
- antivirus
Backup software
- makes copies of files
- protecting files/data in the case of loss or corruption of the original file
- can be used to make incremental backups
Disk defragmentation
physically reorganises files on a harddisk (HDD) so that they can be found and accessed faster [1]
Disk cleanup
- scans the Hard disk for duplicate or corrupted files and removes them freeing up storage space
Compression software
- reduces file size to consume less storage space or for faster download over the internet
Antivirus software
Detects and removes potential threats like viruses and malware [1]
File encryption software
Encodes file before transfer allowing users to send files over networks securely
Source code
The raw programming code written by a software developer to create an application
Open source software
- Is where the original source code is made freely available and may be redistributed and modified [1]
- this means that anyone can view, modify and access the source code [1]
Open source software advantages
- is free and customisable by the user [1]
- source code can be amended by anyone and sold on [1]
- the program can be tailored to specific needs [1]
Open source software disadvantages
- may have compatibility issues and many contain bugs
- might be less user friendly
Closed source software
- the software is distributed as executable Machine code [1]
- so source code is hidden/ not freely available [1]
- there are licensing conditions restricting the redistribution/ there is no permission to amend the code [1]
Closed source software advantages
- more polished products, professional support and consistency
- greater control, revenue through sales and IP protection
Closed source software disadvantages
- for creator : slower innovation, full responsibility for updates and flaws
- for user : costly, less customisable, potential trust issues
Translators
- Convert source code from a high level language to a low level language
- 3 main types of translators :
- compiler
- interpreter
- assembler
Interpreters (python, JS, PHP are all interpreted languages)
- translates and executes high level code line by line every time the program is run [1]
- source code is required to run the program [1]
- initially appears faster but is slower than running compiled code as code must be translated every time the program is run
- interpreted code is platform independent so more portable
- useful for testing/debugging as interpreter will stop and produce an error if a line contains an error
Compilers (C , C++ , Java)
- translates entire source code to machine code at once and then executes it [1]
- produces an executable machine code file which can be reused/ doesn’t need to be translated every time it is run [1]
- compiled programs have source code hidden [1]
- compiled code is platform specific
- longer initial compilation time but faster over all execution as there is no need for compiler during execution
Assembler
- a program that translates assembly code into machine code [1]
- assembly code is platform specific
Stages of compilation
- the process of translating high level code to machine code
- only machine code can be executed by a computer
- 4 stages :
- lexical analysis
- syntax analysis
- code generation
- code optimisation
Lexical analysis
- Comments + white space are removed from the program [1]
- remaining code is converted into a series of tokens
- a symbol table is created to keep track of the variables and subroutines
- variable names/identifiers are added to the symbol table [1]
- which also holds data such as scope and data type
Syntax analysis
- receives tokens/symbol table from lexical analysis [1]
- Tokens are checked against the syntax rules of the programming language [1]
- errors are reported as a list [1]
- if any tokens break the syntax rules , a syntax error is generated
- An AST is produced
Code generation
The AST is traversed to generate object code/machine code that can be executed by a computer
Code optimisation
- modifies code to make the code more efficient/to make the program run faster without changing its functionality [1]
- redundant parts of the code are removed
- to make the program use fewer resources/less memory [1]
Libraries
- a set of pre-written reusable code modules containing useful routines/subroutines etc [1]
- allowing developers to perform common tasks without having to wrote code from scratch
Libraries benefits
- saves time as there is no need to rewrite code that someone else has already written [1]
- has already been thoroughly tested making debugging easier/saving time [1]
- uses expertise of other programmers to complete tasks that require specialist knowledge which would otherwise be too time consuming and complex to learn [1]
Libraries cons
- using a library for small tasks can lead to overhead and may significantly increase size of compiled file [1]
- as the library may contain many routines that are not being used [1]
- relying on a third party library can lead to problems if the library is discontinued or not maintained [1]
Linkers
- used to combine compiled code (files) and libraries into a single executable [1]
Loaders
Is part of the operating system and is responsible for loading a program into memory