1.2.2: Application Generation Flashcards
System Software
- low level software that is responsible for running system smoothly interacting with hardware–> providing platform for apps
- user not directly interacting with S.S –> ensures high performance for user
System Software examples
- library programs, utility programs, O.S, device drivers
Application Software
- designed to be used by the end-user to perform 1 specific task
- requires systems software to run
Application Software examples
-desktop publisher, word programs, web browser
Utilities
-ensuring the consistent high performance of the OS
-each utility program has a specific function –> linked to maintenance of OS
(U) Compression
-OS provide utilities –> allow files to be compressed/ decompressed
-compressing large files over internet + compress large files
(U) Disk defragmentation
- as hard disk becomes full, read/write times slow down –> files become fragmented as they are stored in different parts of memory
- rearranges contents in hard drive –> access faster –> improving performance
(U) Antivirus
- deleting threats + alerting user
(U) automatic updating
- OS needs to up to date
- tackles bugs/security flaws –> less vulnerable
(U) Backup
- routine copies of specific files chosen by user
-> files can be recovered
Open Source
- used by anyone without license + distributed with source code
Open Source Advantages
- can be modified + improved by anyone
- Tech support from online communities
- Sold on
Open Source Disadvantages
- support may not be sufficient/incorrect
- lower security
Closed source
- needs license –> user can’t access source code - company owns license
Closed Source Advantages
- Thorough, regular updates
- company owning software provides support + user manuals
- Higher security
Closed source disadvantages
- restricts how many can use software at once
- users can’t modify/ improve software
Translators
- programs converting high level code into low-level code
(T) Compiler
- conversion all at once after checks + reporting errors
- compiled code specific to certain devices/processor types + OS
(T) Interpreter
- translation +execution line by line
- reports errors in line of codes
- faster, code instantly executed, slower than running compiled code
- more portable
(T) Assembler
- translates assembly code to machine code ( 1 to 1 basis)
(T) Assembly code
- low level language –> next level up from machine code
–> platform specific - dependent on instruction set of processor
Stages of compilation
- when compiler is used, high level code turned into object code then ready to be used
lexical analysis - syntax analysis - semantic analysis - code generation - optimisation
Lexical analysis (1)
- whitespace + comment removed
===============================================================
while flag = False;
print “not found”;
terminates when item is found
while flag = False:
print “not found”;
===============================================================
- remaining code analysed for keywords + names of variables + constants –> replaced with tokens + info about token stored in symbol table
Syntax analysis (2)
- tokens analysed against grammar + rules of programming language
- any errors flagged as syntax errors + added to list of errors
- abstraction tree: represent source code in a tree
semantic analysis –> logical mistakes are deleted
Code generation (3)
- abstract syntax tree used to produce machine code
Optimisation (4)
- searches areas of code which could be more efficient
- aim: faster to execute
- stage can add to overall time taken for compilation
- redundant parts of code removed
- risk: excessive optimisation –> alter the way the program behaves
Linkers
- piece of software responsible to link external modules + libraries used in code
(L) static
- modules + libraries added directly into main file –> increase size of file
- any updates to modules + libraries externally won’t affect program –> specific version of library can be used
(L) dynamic
- addresses of modules + libraries are included in files where they are referred
- when program runs, loaders retrieves program at specific address so it can be executed
- files remain small + external updates feed through main file -> no need to rewrite code
Loaders
- program provided by OS
- when file executed. loader retrieves library/ subroutine from given memory location
Libraries
A collection of pre-compiled routines which can be incorporated into a program like static/ dynamic linking
Use of libraries
- ready to use, error free –> saving time
- developing/ testing modules - reused in multiple programs
- provide specialised functions
- popular libraries –> mathematical + graphical functions