1.2.2 nature of applications

Cards (34)

  • Types of software
    • System software centres on the running of a system and its hardware
    • Application software centres on the user and provides them with a tool for a particular job
  • System software
    • Operating systems
    • Utility software
  • Application software
    • Presentation
    • Word processors
    • Databases
    • Web browsers
    • Communications
    • Games
    • Multimedia
  • Businesses typically use application software in a variety of ways to support their operations and achieve their objectives
  • Utility system software
    A category of system software that often sits alongside your operating system
  • Many operating systems come with utility software pre-installed, but you can also buy them from dedicated vendors
  • Utility software
    Designed to keep your computer safe and running efficiently, provides useful tools for management of files and applications.
    the functions are to
    keep your system secure
    keep your storage disks organised
    maintain the system so it runs efficiently
  • Typical utility software

    • Device drivers
    • File management
    • File repair
    • Backup
    • Compression
    • Defragmentation
    • Anti-malware
  • File repair utility software
    Attempts to correct file corruption or damage and restore files to their original or previous working state.
    Often built into certain applications, as well as being a separate dedicated utility tool
  • Backup software
    Ensures important digital data is backed up, can be automatic or manual, full or incremental backups
    full backups makes a copy of all files. disadvantage is that it can take a long time however recovering the data is quick as all the data is stored together
    incremental backups only backup the files that have been changed since the last backup. Like a full backup once a week and incremental backups on the other days. advantage is that it is much quicker to run the backup however can take a long time to restore all incremental and full backups
  • Compression utilities
    Reduce the size of files to take up less disk space and be quicker to download, can be lossless or lossy
  • Defragmentation utilities
    Reorganize files on a hard disk, putting fragments back together and collecting free space, speeds up file access.
    helps improve read speeds as the defrag software searches the disk for related data items and reorganise them so they become positioned physically together.
    Solid state drives should not be defragmented as it is unnecessary and can reduce their lifespan
  • Anti-malware utility software
    Helps keep computers and files safe from various types of malware like viruses, trojans, spyware, etc.
    Most operating systems come with built-in malware protection that is configured and turned on by default
  • Open source software

    It is freely available to anyone and the source code is available and also be modified. There is no copyright protection and is supported by the community and tested by it too, however it may not be fully tested.
  • Closed/proprietary software

    Protected by copyright, designs and patent acts, users are not allowed to modify the software, typically paid for and users will be required to have a license, extensively tested by the developers prior to release, supported by the developers who do not release their source code
  • Open source software
    Benefits for user: Software is free, wide feeling of modification and support from the community
    benefits for creator: gets software out to wider community
    Drawbacks for user: Could potentially be very poorly supportive, features may not be well tested or integrate well
    drawbacks for creator: little to no financial gain
  • Closed/proprietary software
    Benefits for user: Well supported, tested and professionally built
    benefits for creator: receive an income for product
    Drawbacks for user: Comes at a cost, often in the form of an ongoing monthly or annual subscription fee
    drawbacks for creator: consistent demand for more features and software piracy becomes an issue
  • Translator
    A program that converts source code into machine code
  • Types of translators
    • Assemblers
    • Interpreters
    • Compilers
  • Source code
    Descriptive and easy for humans to understand, read, maintain and debug
  • Machine code
    The pure binary form of the original source code that computers can understand and execute
  • Assembler
    • Translates assembly code programs into executable code
    • this is because assembly code is platform specific, assemblers are similarly specific
    • where comments have been used in assembly code programs they get removed by assembler
  • Interpreter
    • Translates and executes one line of source code at a time
    • when ran each line is first syntax checked
    • if error is found, program is halted and reported
    • following syntax check each line of source code is converted (by interpreter) into its machine code equivalent and executed
    • if a runtime error occurs the program crashes.
    • interpreters are useful at development stage of program
  • Compiler
    • used for high level languages like C++ or python
    • Translates the entire source code in one go into a form that can be executed
    • however it does NOT execute code
    • compilers produce executable code in a form that cannot be read by humans
    • most commercial software apps are distributed as compiled code so that source code is protected.
    • compiler takes the source code as its set of instructions, which is then put through the stages of compilation to produce executable code
  • any compilation errors are reported at the end. disadvantage for large programs as errors may be interlinked and if errors are found the program will need to be corrected and compiled again. the process is repeated till there are no errors which can take a while.
    when the program has successfully compiled, the executable file will not need to be translated again (unless source code is changed) this results in faster running times as no further translation is required. It is good for programs where performance is critical for example fast moving games.
  • Interpreters
    • this line by line approach allows developers to test the program and quickly identify and remedy each error as it occurs without having to go through the whole process of translating the entire program every time
    • source code that is interpreted runs more slowly than compiled code as each time the program is ran, it must be translated again
    • user must have the interpreter installed to run program
    • however if programmer doesn't know which platform will be used to run code it is good
  • stages of compilation, used in compilers 1:
    • lexical analysis. removes comments and white space. Allocates tokens, meaning its purpose in the code is identified (command, value) and each token is added to symbol table. symbol table is used by compiler to keep track of all elements identified in program
    • syntax analysis checks code tokens are in correct order and follow the rules of programming language used. semantic analysis flags logic errors
  • stages of compilation 2

    code generation: following the stages, a separate program is created that is distinct from source code. generated in binary form known as object code
    code optimisation occurs throughout the compilation process and code generation, it may identify redundant and repeated code and remove or rearrange if necessary. It ensures code runs as fast as possible
  • Libraries
    Ready compiled and tested programs that can be run when needed, typically grouped together in software libraries
  • Libraries
    • library programs are ready compiled programs, grouped in software libraries which can be loaded and ran when required.
    • these can include mathematical functions like generating random numbers in a specific range
    • these can be imported into a users program
  • Benefits of using libraries

    • Quick and easy to use and hook into your own program
    • Pre-tested, so can be relatively sure they're free from errors
    • Pre-compiled, so typically optimized to run quickly
    • save programmers time
  • Drawbacks of using libraries

    • Adding your own additional functionality or making specific tweaks to a library subroutine can be difficult or impossible
    • You are 'black boxed' from the actual implementation, so have no idea how efficient the actual library routine is
    • You have to trust that developers will continue to maintain the library and have tested it completely
  • Linker
    1. Uses static linking to include all the required code from the libraries directly in the finished machine code
    2. Uses dynamic linking to store compiled versions of the required libraries on the host computer, and link the required code from the libraries as the program is running
  • Loader
    • copy the executable code into main memory (RAM) ready to be run
    • Also responsible for loading the required libraries into memory