1.2.2 Application Generation Flashcards
Applications Software and examples
Applications Software : Used by end user to perform specific task for user.
- requires systems software to run
e.g.
- DBMS Software (For storing, retrieving, manipulating and managing data.)
- Word Processor (For creating, editing, formatting and printing text documents.)
- Email Software (Communicate with each other / customers via Email)
- Web Browser (For browsing the web and accessing information online.)
- Spreadsheets (For organising, calculating and analysing numerical data.)
- Integrated Development Environment (IDE) (developing, testing and debugging software code)
e.g. Store data on stock with DBMS and make letters for customers with Word Processor and communicate with other staff with Email and buy stock online with web browser and do accounts and salaries with spreadsheet software.
Systems Software
Systems Software : Low level software responsible for running computer system by interacting with hardware.
- Allows applications software to run
- User doesn’t directly interact with it
e.g.
- Operating system and utility software
Utility Software + Examples (5)
Utility Software : Specialist software that often comes with OS.
Provides additional functionality and helps maintain the computer.
- Piece of systems software with single specific purpose and supports operating system.
e.g.
- Encryption … scrambles meaning of data files with key incase intercepted.
- Disk Defragmentation … organises file segments on secondary storage so faster to access by storing contiguously.
- Compression … reduces size of files so faster to transmit and store
- Backup … makes regular copies of files to recover incase lost.
- Antivirus … detects and removes threats.
Open Source and Advantages (4) and Disadvantages (2)
Open Source : Can be used by anyone without a licence and source code can be seen and redistributed.
Advantages:
- Can be modified to tailor to specific needs
- Can be modified and sold
- Can debug yourself
- Cheaper
- Vast knowledge in communities
Disadvantages:
- Lower security as developed in uncontrolled environment so may contain bugs
- Support may be insufficient or incorrect
- if software is very specific open source solution may not be available.
Closed Source and Advantages (3) and Disadvantages (3)
Closed Source : Requires licence to use and distributed without source code as copyrighted (often sends compiled executable)
Advantages:
- High levels of security as developed professionally - more scrutiny
- Regular and well-tested updates
- Expert support and user manuals provided by company
Disadvantages:
- Costs money for licence
- Cannot modify and improve themselves - developer has to make new features
- Cannot fix bugs themselves
Translator and Assembler
Translators : Convert source code into machine (low level object) code that can be executed by computer
Assembler : Converts processor architecture specific assembly code (Low Level) into machine code.
- Translates on 1:1 basis, one line of assembly = one line of machine code
Lexical analysis
Lexical analysis : First stage of compilation to get code in format for syntax analyser.
- Whitespace and comments removed
- info on Variables and constants added to symbol table
- Key words / Statements are replaced by tokens, info on tokens stored in symbol table
- Code prepared and outputted for next stage of compilation
Syntax analysis
Syntax analysis : Second stage of compilation
- Accepts tokens passed from previous stage
- Tokens checked against rules of programming language
- Tokens that break are added to errors that is stored as list
- Errors generated and error diagnostics given
- Detail added to symbol table
- Abstract syntax tree produced
- If no syntax rules broken then passes onto next stage
Code Generation
Code Generation : Third stage of compilation
- Abstract syntax tree used to produce machine code
Optimisation
Optimisation : Fourth stage of compilation
- Ensures code runs quicker / uses less less memory (redundant parts and repeated sections removed)
- Searches through code for areas to make more efficient (takes time)
- Redundant code detected and removed while Repeated sections grouped and replaced with more efficient code
- Code likely inefficient due to unnecessary instructions
- Excessive optimisation - alterations in program behaviour and time consuming
Linkers
Software used to link the main code to libraries to make final executable after compilation.
Loaders
Loader retrieves libraries at address into memory to be executed by program in dynamically linked libraries.
Libraries
Libraries : Are pre-compiled programs that are already written that contain useful subroutines.
Advantages:
- Saves time as prewritten - no need to rewrite code
- Pre - tested so likely to work and debugging easier and faster with less errors
- Draws on expertise of other programmers - complete complex tasks
Disadvantages :
- Increases file size but library contains many routines that will not be used.
- Not written by programmer - programmer needs to familiarise themselves with it and relying on third party that may not maintain library.
Types of Linkers
Static : Modules and libraries added directly to executable file.
- This increases file size.
- A specific version is used so updates to modules will not affect programs.
Dynamic : Address of Modules and Libraries added to executable files.
- Loader retrieves at address into memory to be executed.
- File size remains small
- Updates feed through without need to recompile or rewrite so more flexible
Compiler and Interpreter
Compiler : Translates Entire source code into machine code once, creating executable file (processor specific)
- Reports all errors at the end so worse debugging
- Faster execution time but longer initial compilation time
- Don’t need source code to execute once compiled so useful for closed source software.
Interpreter : Translates source code line by line
- Faster to start execution and easier to debug as reports errors as it finds them.
- Slower execution time as need to translate each time to run and require interpreter and source code to execute.
- Can run off of many architectures as translate from high level code each time