Software Design and Development - Prelims
Function call
Specified data type returned, calls a function The identifier used to name a function also has a data type. This data type defines the type of data that will be returned by the function.
Storyboard * Features * Purpose
- shows the general design of each interface - shows navigation between interfaces
Metalanguages - railroad diagrams - sequence
Just symbols on a line <letter> <letter>
Metalanguages - railroad diagrams - selection
<option 1> | <option 2> 2 or more branches parallel to each other
Algorithm
A set of explicit and unambiguous finite steps which, when carried out for a given set of initial conditions, produce the corresponding output and terminate in finite time. Flowchart or pseudocode Sequence, selection, iteration or repetition
Defragging * What it is * When it happens
Over time the file system on all hard disk drives becomes fragmented after deletions and movement. Therefore its moved around to improve compression
Internal documentation * Purpose * Features * Examples
- meaningful variable names (intrinsic) - readability of code - comments - white space - indentation
Summary of functions of the operating system
- provide interface to hardware - provide interface to user - provide interface to software applications - control the concurrent running of software applications - manage system resources
Metalanguages - EBNF * What is it? * What does it represent?
(Extended Backus-Naur Form) EBNF is a text-based metalanguage. It can be readily produced using standard characters. Is a metalanguage used to define the syntax of any programming language
Generations of programming languages - Higher level languages * What is it? * What does it interact with? * Why does it exist?
(Imperative/procedural) Simplify the programming process allowing programmers to concentrate on solving problems rather than dealing with hardware systems. Eg. Cobol, Prolog or Java and C++ High-level code (source code) translated → machine language (object code) appropriate to a particular CPU. Easier and faster to write in Easier to read and mainatin
Summary of software approaches
(Most formal, costly, long, expertise, size, complexity and quality) Structured, agile, prototyping, RAD, End user (least formal, costly, long, expertise, size, complexity and quality)
Summary of initiation and running of an app by the operating system
* Locate and load * Hand control to application * Start fetch-execute cycle for the application * Minimum software requirements
Code taken from the internet * Ethical and legal considerations * Pros and cons * What needs to be done?
* May have a licence or copyright over it * Check the terms of service of the source * Ensure you have authorization to use code (email them) * Document and reference the source Saves time Reduces cost Modules and variable names could conflict Different language or version Missing dependencies (libraries) Misunderstanding of code
Algorithms - error checking
* check every path through an algorithm * boundary values (Above, below and in)
Pseudocode * Rules
* for each procedure or subroutine BEGIN name END name *For binary selection IF condition THEN statements ELSE statements ENDIF For multiway selection CASEWHERE expression evaluates to A: process A B: process B OTHERWISE: process ... ENDCASE For pre-test repetition WHILE condition statements ENDWHILE For post-test repetition REPEAT statements UNTIL condition For FOR/NEXT loops FOR variable = start TO finish STEP increment statements NEXT variable Underline subroutines
Algorithm benefits
- ease of development - ease of understanding - ease of modification
End user approach - characteristics
- end user as the developer and maintainer - typically uses RAD and/or prototyping - the developer is the client, therefore there are no communication issues - small budget and/or short time period for development
User interface * Factors that make up good UI * 3 categories
- factors affecting readability - use of white space - effective prompts - judicious use of colour and graphics - grouping of information - unambiguous and non-threatening error messages - legibility of text, including: - justification - font type (serif vs sans serif) - font size - font style - text colour - navigation - recognition of relevant social and ethical issues - consistency - appropriate language for the intended audience Aesthetic, logic, control
What are the key ASCII codes?
0 --> 48 A --> 65 a --> 97
Conversions between binary and decimal * Max binary number per byte
1 binary digit is a bit 8 bits make a byte split into columns add each column with 1 and 0
Conversions between hexadecimal and decimal * Max hex number per bit
1 symbol makes up 4 bits 2 symbols make up a byte Divide by 16, the remainder is the end symbol, the result is the first symbol
Metalanguages - EBNF * Syntax * Syntax to define data types and structures * Syntax to define control structures
= 'is defined as' | indicates a choice between alternatives (or) terminal symbol - there is no need for further definition of this item. It may be a symbol or a reserved word (such as PRINT, IF...) < > Used to specify a term that will be subsequently defined [ ] --> optional part of a definition { } --> optional repetition (0 or more times) ( ) --> grouping elements together Letter = A | B | C --> A or B or C IDENTIFIER Identifier = <Letter> {<Letter> <Digit>} Letter then either letter or number until you want to exit ASSIGNMENT STATEMENT LET <Identifier> = <Identifier> A valid assignment statement could be LET C = B24A
Data dictionary * Columns * Why they're important
A data dictionary is the repository where identifiers, their data type and the scope of usage is held. Scope: The extent to which a variable is available for use. Global variables are available for use by all subroutines. Local variables are available to an individual subroutine A separate data dictionary is created for each module, database and file Data item, data type, format, number of bytes required for storage, size for display, description, example, validation
Record * Define * Example
A data structure containing data items that are related but not necessarily of the same data type. Used for database applications. Generally individual records contain all the information about a particular entity Fields must be named and each assigned a data type before use
User interface * Define * Charts
All the screens, elements and actions that allow users to communicate with software. Storyboarding
Parameters
Allow subroutines to access and alter the data items held in variables Actual parameters are real variables that contain data. Formal parameters are used within subroutines - effectively replaced by actual parameters whilst the subprogram is executing.
Floating (real)
Anything with a decimal The more decimal places we use the better the accuracy, however this involves larger and larger amounts of storage and faster and faster processors.
Control structures - multiway selection * Algorithm * Pseudocode
CASEWHERE expression evaluates to choice a : process a choice b : process b OTHERWISE : default process ENDCASE
Arrays * Define * Example
Array: An array is a collection of identical data elements individually accessed by an index or a subscript Data structure 1D Array 1 array - a = [a] 2D Array, an array within an array - a =[[a, b], [c,d]] 3D Array, an array within an array, within an array - a =[[[a, b][f,g]], [c,d]] eg. Surname(6) = Student.lastName --> Index 6 in surname is set to the data in the lastname field of the record Student
Algorithms - loading and printing arrays
BEGIN LoadArray Let i = 1 Read DataValue WHILE DataValue <> "xxx" Let Element (i) = DataValue i=i+1 Read DataValue ENDWHILE Let NumElements = i Display " There are" NumElements " items loaded into the array" END LoadArray BEGIN PrintArrayContents Let i = 1 REPEAT Display Element (i) i=i+1 UNTIL i > = NumElements END PrintArrayContents
Algorithms - add contents of an array
BEGIN SumArrayContents Let i = 1 Let total = 0 REPEAT Let total = Element (i) + total i=i+1 UNTIL i > NumElements Display " The sum of all of the elements in the array = " total END SumArrayContents
Define binary, decimal, hexadecimal
Binary --> Base 2 1, 0 representation Decimal --> normal base 10 hex --> Base 16, 0-F(15)
Abstraction/refinement - Structure chart * Purpose * Components
Blank circle with arrow - Data movement between modules or subroutines Filled in circle with arrow - Flag or control variable being passed Diamond at an intersection - A decision A curved line in the middle of a line - Repetition Rectangle - modules or subroutines Showing the separate modules or subroutines that comprise a system and their relationships
Abstraction/refinement - top down development * What is it? * Charts associated with it * Pros and Cons
Breaking a problem down into smaller and smaller parts to become more manageable Refined until each unit can be successfully implemented as a subroutine - stepwise refinement. Can be reused sometimes - change variable names and identifiers Show relation between modules
Bug
Bug: An error or defect in software or hardware that causes a program to malfunction. Debugging: the process of identifying and correcting bugs.
Sequential files * Define * Example
Can only be accessed from start to finish - to read or write to the middle of a sequential file requires accessing all the data prior to that position in the file. End of file (EOF) function → returns the Boolean value True when the end of a file has been reached → ensures errors do not occur due to programs attempting to read past the last character. Sentinel values within files to indicate the end of a sequence of data items e.g. "ZZZ" or 9999999.
Testing - boundary cases
Checked using test data above, below and equal to any values upon which decisions are based.
Understanding the problem - Context diagrams
Circle --> Process representing the entire system Curved arrow --> Flow of data Box --> external entity that is a source or sink of information Represent an overview of a system
Understanding the problem * 4 parts * What chart is most adequate for this stage?
Communication (ask the client) → informal or formal List of requirements → Ensures your understanding of the problem meets the needs of your potential users Research → existing system Identification of inputs and outputs Break down into units Decide on data types and design data structures Design a method of solving each component piece Context diagrams or IPOs
Variable
Containers for data items.
Data validation
Data validation: The process of validating data, checking whether the input is an expected input.
Debugging techniques vs debugging tools
Debugging techniques--> Done by a programmer debugging tools --> automated
Online help * Types * Purpose
Designed to teach users about the operation of some aspect of the software product Installation guides User manuals Reference manuals Tutorials. Online help (anything digital to do with software) eg. The contents view displaying like a user manual and the index being used like a reference manual. Online tutorials Wizards Tooltips (hover over)
Abstraction/refinement - Systems flowchart * Purpose * Components
Diagrammatic way to show the flow of data, seperate modules and the media used NOT PROGRAM FLOWCHARTS.
Combining code * Pros and cons * Issues and limitations * Ethical and social considerations
Different versions of the same language Different languages Programming environment Different techniques Copyright and creative commons still apply unless relinquished Must acknowledge code sources
Checking social and ethical impact of an app
Does the design of the software exclude some users? Is the product ergonomically sound? Does the product use code from other sources? Have the intellectual property rights of all involved been considered and upheld?
Control structures - iteration/repetition for/next * Algorithm * Pseudocode
FOR variable = start TO finish STEP increment statements NEXT variable
Error detection - Flags * What is it? * Why does it exist? * How does it assist in error detection and correction?
Flags: a Boolean variable used to check if a section of code has been executed. Normally the flag is initialised to false and then set to true if the section of code is executed. - used to check if a section of code has been executed - can be used as part of the logic of a solution or as an error detection process By examining the value of the flag, the programmer can determine the execution path through the code.
Metalanguages - railroad diagrams * What is it? * What does it represent?
Graphical method used to define the syntax of a programming language
Control structures - binary selection * Algorithm * Pseudocode
IF condition THEN process 1 ENDIF IF condition THEN process 1 ELSE process 2 ENDIF
Identifier
Identifier - The name given to a variable, subroutine or function. In most languages identifiers are comprised of letters, digits and the underscore character. They must commence with a letter.
How do you identify the following from an algorithm: * Input * type and purpose of variables * Processes * Output
Identifying control structures - Logic Understanding the variables that have been used - logic, purpose and processing
How are the structured and agile approaches different?
Less formal
Testing - peer checking
Informal, where a peer or colleague comments upon and provide feedback. More collaborative attitude and less pressure to get it right
Understanding the problem - inputs and outputs * How are they gathered?
Input into a process is known as data and the output as information Outputs often will themselves become the input into other processes Communication and research
Types of documentation for developers
Internal and intrinsic
Structured approach - maintaining
Life span (avg 10 years) - upgraded to include new functionality and to improve existing functionality
Error detection - Logic
Logic errors: when programs do not correctly work as anticipated. The program may continue to execute, albeit incorrectly. loop may repeat fewer times than required, resulting in some data not being processed. (using a < rather than a <=)
Maintainability
Maintainability: A measure of the ease with which source code can be understood and modified.
Testing - desk checking
Manual process. Each statement in the algorithm is evaluated by hand and the results written on a table. Column for each identifier used within the algorithm. As the value in an identifier changes the new value is written beneath the previous value. In this way, a full record of all the changes that have occurred is maintained.
Abstraction/refinement - define: * Module * Subroutine
Module: a number of distinct but interrelated units from which a program may be built up or into Subroutine: a set of instructions designed to perform a frequently used operation within a program.
Testing - stepping line by line
Most programming environments (IDEs) provide a method of stepping line-by-line through code. This allows programmers to examine the contents of identifiers and follow the execution path precisely.
Procedure call
No specified data type returned, calls a subroutine Used by the programming language to locate the subprogram within the source code. The procedure's name, together with any parameters, is the statement used to execute the procedure.
Control structures * Define
One or more programming language statements that control the flow of a computer program.
Error detection - Debugging output statements * What is it? * Why does it exist? * How does it assist in error detection and correction?
Output statements - can be strategically placed within the code to indicate execution has passed through that point - additional print statements in the code for use in the debugging process - used to identify which sections of the code have been executed - used to interrogate variable contents at a particular point in the execution of a program
Global variables vs local variables * Scope * Pros and cons
Parameters are not variables they are identifiers used to communicate data through subroutines. Global variable: available to other modules within the project Local variable: can only be accessed by the subroutines in which they are declared then are erased when it finishes Scope: The extent or range of operation of an identifier. Where in a program, a given identifier may be accessed
Maintaining code * Why is it important?
Part of the software development cycle changing user requirements. upgrading the user interface. changes in the data to be processed. introduction of new hardware or software. changing organisational focus. changes in government requirements. poorly implemented code.
Metalanguages - railroad diagrams * Syntax * Syntax to define data types and structures * Syntax to define control structures
Rectangles --> non-terminal symbols, that is, symbols that will be further defined. Circles or rounded rectangles --> terminal symbols. (symbol or a reserved word) These elements are linked by paths to show all valid combinations.
Abstraction/refinement - data flow diagram * Purpose * Components
Represent a system as a number of processes that together form a single system Circle --> process Arrow --> Flow of data between processes, data stores and external entities ( can flow back and forth (label) Rectangle --> External entity (person, organisation, source or sink) Open ended rectangle --> Data store (electronic or paper)
Checking the solution meets the original requirements
Requirements should have been written in such a way that they could easily be evaluated.
Error detection - Runtime
Runtime Errors: occur when for some reason the computer is unable to continue executing instructions. Exception: essentially a type of runtime error Math divisions, floating points, out of range, infinite loops
File compression * What it is * When it happens
Save storage space, reduce file size prior to transmission
Problem statement
Should state clearly every step of what the algorithm does
Inclusivity - Summary
Should take into account the different users who will likely use the product. cultural background economic background gender disability
Error detection - Stubs * What is it? * Why does it exist? * How does it assist in error detection and correction?
Stub: a small routine that takes the place of a yet to be written subroutine or is substituted for an existing subroutine when attempting to locate the cause of an error. - used to check the flow of execution - used to replace subroutines/modules during testing to check if that section of the code is the cause of an error Allows the flow of execution to be checked before lower level subroutines are coded, by testing upper level subroutines
Error detection - Syntax
Syntax errors: Result when source code statements do not adhere to the rules of the programming language. Detected as the source code is translated into object code, translator, normally an interpreter or a compiler, is unable to understand code that contains one or more syntax errors. LSC
Testing * What data should be selected to test? * Ways of testing
Test data sets aim to ensure that all processes are thoroughly checked and verified, and should be thorough but it should also be efficient. - data that tests all the pathways through the algorithm - data that test boundary conditions 'at', 'above' and 'below' values upon which decisions are based - data where the required answer is known - data which is outside the expected values
Error detection - Boundary cases * What is it? * Why does it exist? * How does it assist in error detection and correction?
Test upper lower and middle limits
String
The Unicode system uses up to 32 bits and is designed to include all the possible characters and marks used in all the languages of the world. American Standard Code for Information Interchange - A coding system for characters using 7 bits. Most other coding systems incorporate ASCII.
Modularity
The ability to reuse modules as a result of their independent nature. Reuse modules as black modules, know what goes in and out but not what happens inside
Testing - Path coverage testing
The order in which statements are executed will affect the processing therefore every path through the algorithm or code must be executed by our test data if we are to be sure of its correctness.
Documentation for developers when modifying
The source code design specifications system models eg. system flowcharts, data flow diagrams, structure charts IPO charts data dictionaries algorithms screen designs and storyboards
Data types
The type of data - integer - string - floating point/real - boolean - Date - Currency
Maintaining code * How can code have maintainability ensured
USE OF VARIABLES OR CONSTANTS INSTEAD OF LITERAL CONSTANTS MEANINGFUL NAMES FOR VARIABLES, SUBROUTINES AND MODULES Intrinsic documentation EXPLANATORY COMMENTS IN THE CODE Internal documentation USE OF STANDARD CONTROL STRUCTURES Sequence selection iteration repetition APPROPRIATE USE OF WHITE SPACE WITHIN SOURCE CODE Blank lines A CLEAR AND UNCLUTTERED MAINLINE Minimal actual processing, but a series of calls to subroutines. ONE LOGICAL TASK PER SUBROUTINE
Boolean
Used to store logical data; the only possible data items being either true or false (or yes or no), 0 or 1
User feedback
Verbal, written, survey, formal/informal
Backups * Considerations and processes
Version labels, regular
Testing - Structured walk through
WILL SMITH PHOTO Developers walk the group step-by-step through each aspect of the program. Formally work through its functionality. For feedback - restricted to either verbally or written comments ( reduces stop start and interruption of work flow/thought structure.) Demonstration of the product and its design
Integers
Whole numbers both negative and positive If an integer data type is chosen then you must be absolutely certain that fractional values will never be required or even stored as part of a computation. A 2 byte or 16 bit integer is able to store whole numbers in the range -32768 to 32767
Automated debugging tools
done by software automatically Breakpoints - halt execution and allow the contents of variables at that point to be interrogated and even changed. Single line stepping - causes execution to halt after each line of code is executed. A single key press causes the next line to execute. Watch expressions - can be used to display the contents of variables during execution. They can also cause execution to halt when a certain condition becomes true.
Language syntax * Where is it found? * Define metalanguages * Define syntax
meta-languages in manuals and help documentation Syntax: the structure of statements in a computer language. Metalanguages: a form of language or set of terms used for the description or analysis of another language. Used to describe the syntax of another language
Control structures - iteration/repetition pre/post * Algorithm * Pseudocode
pre-test WHILE condition is true process(es) ENDWHILE post test REPEAT process UNTIL condition is true
Control structures - Sequence * Algorithm * Pseudocode
process 1 process 2 ... ... process n
Software structure * What are 3 key points of developing good software structure?
use of a clear uncluttered mainline and subroutines - use of a modular approach - use of stubs to represent incomplete modules
Metalanguages - railroad diagrams - iteration/repetition
{<option 1>} circle above
Rapid application development approach - characteristics
- lack of formal stages - use of existing routines - use of appropriate applications to develop the RAD solution - drag and drop programming environments - common application packages such as spreadsheets, databases - communication between developer and client - short time period - small-scale projects - small budgets
Ergonomics - appropriate messages to the user
Well worded, use full words and sentences, not abbreviations and codes. Be unambiguous, positive and provide insight as to how to respond to the message Many users will inadvertently hit the Return/Enter key --> default option will not cause some potentially destructive action such as deleting or saving.
Reverse engineer:
Usually means the process of decompiling the product. Most agreements do not allow licensees to reverse engineer their products.
Summary of the Fetch-Execute Cycle * Steps * Role of hardware at each step
1. Fetch The instruction at the address in memory indicated by the program counter, is read into the instruction register. The program counter is then incremented to point to the next instruction. 2. Decode Control unit makes sense of the instruction. It then directs other components to load any required operands into the appropriate registers. 3. Execute Instruction is actually carried out. For most instructions, the services of the ALU are used. 4. Store Results are stored in one or more of the general-purpose registers. A further instruction is needed to move the results to RAM.
Define virus and malware
Virus: A type of malware that is able to copy itself either within a single system or to other systems. Malware: Malicious software that deliberately causes some undesired result. Malware includes viruses, adware, spyware, Trojans and worms.
Initiation and running of an app by the operating system * Locate and load * Hand control to application * Start fetch-execute cycle for the application * Minimum software requirements
1. The application is located on secondary storage. Checks requirements, allocates a certain area of RAM, area for actual executable file and storage areas for application. App loaded into its allocated section of RAM. Instructions relating to the execution of the application are loaded. 2. OS allocates CPU time to the application. App has control of the CPU during its allocated CPU time. OS switches between apps 3. Fetch-execute cycle begins processing the instructions that form the app
Backup copy:
A copy of the software made for archival purposes.
Agreement:
A mutual arrangement or contract between parties.
Intellectual property
A product of the intellect, the fruits of mental labour, such as an expressed idea or concept, that has commercial value. Covered under Copyright Act 1968
SAAS *What is it * What does it cover and its limitations * Pros and cons * Examples
A third-party provider hosts applications and makes them available to customers over the Internet Removes the need for organizations to install and run applications on their own computers or in their own data centers. Lowers cost for businesses Scaleable Automatic updates Accessible Service disruptions, Unwanted changes to service offerings, possibility of security breach Google suite, salesforce, zendesk
Privacy * Why is it important to protect a users identity and data?
About protecting an individual's personal information Personal information - any information that allows others to identify you Outlined in Ten National Privacy Principles Legal requirement Ethical
Virus checking * What it is * When it happens
Aim to prevent viruses and other malware before they are executed by the system. Scan all executable files entering the system looking for known virus signatures or potential patterns in the code that may cause unwanted processing.
Creative commons *What is it * What does it cover and its limitations * Pros and cons
Alters how copyrighted material may be used without charge. Not recommended for software- do not deal with the distribution of source code. For artistic works such as photographs, music, film and other media types - CCL can be modified to suit specific needs Most permit copy and distribution for non-commercial purposes with credit to original creator.
Warranty:
An assurance of some sort - a guarantee. Software products normally contain limited warranties. They may guarantee the medium work correctly.
Liability:
An obligation or debt as a consequence of some event.
Functions of the operating system - provide interface to software applications * What does it do/what happens?
Application interface provides a method by which application software can communicate with the operating system. Able to utilise many of the computer system's functions without worrying about the details of how the process is accomplished.
Off-the-shelf software * What is it? * Pros and cons
Application software is designed to perform some specific task for user Pre-packaged software products Some off-the-shelf packages can be customised (COTS) Eg. MYOB - Mind Your Own Business - Accounting software
What is batch job scheduling and emulation?
Batch job scheduling Batch jobs allow a number of processes to be performed sequentially therefore task scheduling utility can be used to execute the batch job at specific times Emulation Enables existing software applications to continue to operate on newer versions of the operating system.
Structured approach - testing and evaluating * What is it? * What would be done?
Before distribution - testing for errors in the code and testing of performance of the product under real conditions. Evaluation by sample users to ensure it meets the user's requirements
Inclusivity - gender
Both genders should be included in the SDD process Gender neutral terms when referring to user
Name CPU components and how they achieve their purpose
Bus interface - communication channel between the CPU and primary storage (RAM). Sends and receives instructions and data, fixes timing Code cache - storage for instructions that are likely to be needed in the near future. Branch predictor - attempts to guess the most likely next instruction (Assists the Decode/Prefetch Unit to get instructions ready in advance) Decode/Prefetch Unit - performs most of the control functions and handles the execution of some instructions. (Interprets and directs) ALU - perform the bulk of the actual processing functions. Registers - temporary storage areas used by the ALUs during execution (operands required to execute instructions, results obtained after execution) Data Cache - very fast memory area for storage of data that may soon be needed or is needed repeatedly. Floating Point Unit (FPU) - performs all non-integer calculations. Dedicated to performing computations with floating point numbers.
() Command line interface * What is it? * Why is it important? * Pros/cons
CLI: (Command line interface) text based, where user is given a prompt and they enter commands or inputs to the system First method of interaction and browsing of computers Required users to have extensive knowledge of syntax and config Long and hard to navigate Useful for automated tasks and servers
Identify the skills required in software development
Communication skills - Formal (email/interview) - Informal (text/phone call) - Aggressive (bombard) - Passive (observation) - Spoken/written/verbal/non-verbal Ability to work in teams Creativity Design Skills Technical skills Problem-solving skills - Brainstorming - Critical path analysis - S.T.A.I.R. - (Statement of the problem, Tools available, Algorithm, Implementation, Refinement) Attention to detail
Interpretation vs compilation
Compilation - executable file sent Pros: ready to run, often faster, source code kept private Cons: not cross platform, inflexible, requires the extra step Interpretation - source code sent Pros: Cross platform, easier to debug, simpler to test Cons: Interpreter required, often slower, source code public
Translation - Compilation * What is it? * What happens? * Why is it important? * What are its issues?
Compilers translate the entire source code into object code. Object code is combined with other linked files to create the final executable files. Optimises by removing comments and allocates specific variable names that makes it run fast Executes fast, no translation required at run time
Inclusivity - economic background
Requires that the technology is available at a cost that is economically viable for the widest possible audience Quality and cost Nature of the market (market needs) Feasibility Reduce cost by managing SDD process Ensure products are sold at realistic prices Stick within competition and government regulation
Open source (GNU licence) *What is it * What does it cover and its limitations * Pros and cons
Covered by copyright law, however licences like GPL (general purpose licence), remove many traditional copyrights. Source code developed collaboratively - modified and redistributed. Author must be recognised and modified products must be released using the same OSL. OSL users can freely use and modify software without fear of legal challenge → encourages collaboration and encourages sharing of ideas Installed and used without restriction
Freeware *What is it * What does it cover and its limitations * Pros and cons
Covered by copyright. Can be copied, distributed and altered - Modified products must also be freeware. Source code may be distributed with the executable code. Free
Shareware *What is it * What does it cover and its limitations * Pros and cons
Covered by copyright. Copies can be made for archival or distribution purposes. Cannot be modified or reverse engineered. Source code is not distributed. As many copies as you want
Commercial licence *What is it * What does it cover and its limitations * Pros and cons
Covered by copyright. One archival copy can be made as a backup Cannot be modified, distributed or reverse engineered. Source code is not distributed or available to end users. Strict usage outline Purely for use and can't be customised
Site licence *What is it * What does it cover and its limitations * Pros and cons
Covered by copyright. Specify either: Number of machines on which the software can be installed or Specific location where the software may be installed on any number of machines. Extend commercial or shareware license - used on multiple machines at reduced cost.
Inclusivity - cultural background
Cultural background - beliefs and language of different cultures be considered when designing software. Eg. Dates, currency, numbers
Prototyping approach - process
Defining and understanding the initial problem - Observing current system Planning and designing the prototype Each prototype --> modification of initial plan, where data structures, modules and algorithms will be added and existing ones changed. Documentation kept current, retained and show evolution Implementing the prototype Collection of screens with little or no real processing occurring → stub Test and evaluate the prototype Program tested by the programmer Redefined problem New and changing requirements will occur as each prototype is trialed by the users
Generations of programming languages - Declarative languages * What is it? * What does it interact with? * Why does it exist?
Describes what the problem is rather than how it can be solved. The program works out a method of solution as it executes.
Structured approach - key characteristics
Distinct formal stages, Long time Each stage is completed sequentially Large-scale projects, where performance and reliability are vital requirement Large budgets Large team of analysts, designers, programmers and clients Large audience will use the final product Minor errors are costly and magnified later
Generations of programming languages - Machine Code * What is it? * What does it interact with? * Why does it exist?
Each machine language instruction contains two parts, an operation code (opcode) and one or more operands. 2 + 2 = 4 (operand) (opcode) (operand) (opcode) (operand) (opcode) In CPU
What are the events that have led to the need for SLA's?
Ease of reproduction and copy - copies can be made anonymously. (SLAs prohibit the illegal reproduction of their products.) Collaborative development history - multiple authors and other software used in your software (Legally ensures author's IP rights are respected and enforced.) The current open environment of the Internet - easy sharing and transfer (Licence agreements must be written with reference to international patent and copyright laws if they are to protect the intellectual property rights of the developers.)
() Visicalc * What is it? * When? * Why is it important? * Pros/cons
Electronic spreadsheet software 1979 Removes need for paper ledgers First multiplatform piece of software - used on multiple processors GUI Importance: Input, processing and output all merged into a single interface Scrolling ability of the window (left, right, up and down) Instant recalculation of cells as contents changed Inclusion of a status and/or formula line Ability to replicate a range to any other range Relative and absolute referencing Formulas could be entered using minimal keystrokes Cursor moves are used to select cells and ranges Basic
Copyright * What is it * What is it covered by * What does it do?
Ensures developers are financially rewarded for their intellectual efforts through laws of copyright, enforceable by courts. Automatically covered under The Copyright Act 1968
Relationship of hardware and software - processing software instructions by hardware * Fetch execute cycle
FDES Instruction time (I-time) and execution time (E-time). Instruction time Fetching the instruction from memory and then decoding it. Execution time Executing the instruction and storing the result. Constant pace dictated by system clock. At each tick of the clock a part of the fetch-execute cycle occurs.
Generations of programming languages - Assembly language * What is it? * What does it interact with? * Why does it exist?
First attempt to make programming languages more human like Use mnemonics to represent different commands available in the assembler language. Eg. add ax means add to accumulator and is far easier to remember than 10100001
Licence:
Formal permission or authority to use a product. Does not give users ownership, rather the right to use the software.
Hardware - control devices * Examples * Purpose * How is data captured, stored, manipulated or displayed
Function that directs the other components within the processor to perform their functions at the correct time and in the correct order. Both processing and control are integrated within the central processing unit (CPU). Computers contain four basic parts; the arithmetic logic unit (ALU), the control unit (CU), memory and input/output devices. CPU contains the ALU, the control unit and registers. Registers: memory areas used to store instructions, addresses and data currently being used by the CPU. CU interprets and directs ALU to perform. The data and the result from the ALU's processing are stored in the CPU's internal registers.
Hardware - input devices * Examples * Purpose * How is data captured, stored, manipulated or displayed
Function that obtains data from outside the system Keyboard, mouse, scanner, radio frequency identification (RFID), barcode reader, graphics tablet, microphone Transferred to processing
Hardware - storage devices * Examples * Purpose * How is data captured, stored, manipulated or displayed
Function that reads, writes and retains data CD, DVD, flash drive, hard drive Primary storage - main memory Works with processor, fast - registers within the CPU, cache, physical RAM (random access memory), ROM and virtual memory Needs power to retain data eg. RAM Secondary Storage Far greater storage capacity Does not require power to retain data Magnetic storage - hard drive Optical storage - spinning disk engraving Flash memory
Hardware - output devices * Examples * Purpose * How is data captured, stored, manipulated or displayed
Function that sends data outside the system Laser printer, inkjet printer, cathode ray tube (CRT), LCD display, plasma display, CD writer/burner, DVD writer/burner, data projector, speakers From processor
Inclusivity - disability
Functionality that allows software to be used and accessed by a wide range of users Visual disabilities Speech generation and Braille utilities Colour blindness - Red Green contrast (Eg. Internet links in blue and underlined) Braille keyboard overlays and stickers Hearing Cues along with sounds Live caption app - Speech to text Physical disabilities Eye gaze - control computer with eyes
() GUI * What is it? * When? * Why is it important? * Pros/cons
GUI: (Graphical user interface) Arose from Xerox project Application to personal computing and accessibility to use Easier to navigate Easier for personal computing Not as easy for automated tasks
How does a keyboard work
Input Springed keys pressed down to complete an electrical circuit --> switches and circuits to translate keystrokes into signals the computer can understand --> positioned above a key matrix which has a set of rows of wires and columns of wires --> processor compares location of signal from key matrix to a character map stored on keyboards microprocessor and a ROM chip --> transmits a binary signal (commonly using ASCII) to the computer to represent the key pressed.
Software * What is it and its role? * How does it relate and interact with the computer system?
Instructions and programs that control the hardware causing it to perform some function Word processor, OS, web browser, spreadsheet or a programming language environment.
SLA
Intended to enforce the intellectual property rights of software developers Protect developers from legal action should their products result in hardship or financial loss to purchasers.
Translation - Interpretation * What is it? * What happens? * Why is it important? * What are its issues?
Interpreters translate source code statement by statement then immediately executed Significant processing overhead resulting in poor performance Used to test not to run Slow
Explain LSC
Lexical analysis Examines each element of the source code to ensure it is a legitimate part of the high-level language. Like checking the spelling in a written document. Checks if it's legitimate Syntactical analysis Checks the grammar or syntax of the source code is correct. Like checking a written document has correct grammar and punctuation. Code generation. Machine code is generated.
Summary of the generations of programming languages
Low-level languages - Machine/processor dependant, can only be used on the same CPU instruction set. First generation - machine languages Second-generation - assembler languages. Third generation - High-level languages - Machine independent, can be used on different CPUs Fourth and subsequent generations - Declarative languages - Machine independent Fifth generation - Pure AI - Machine independent
Functions of the operating system - control the concurrent running of software applications * What does it do/what happens?
Memory and storage Each process must be allocated sufficient memory in which to execute. This memory must be reserved for the exclusive use of that process, otherwise problems occur if processes infringe on each other's memory areas. The operating system ensures that each process receives enough of the processor's time to function correctly.
Procedures * What is it and its role? * How does it relate and interact with the computer system?
Modes of action that personnel perform to initiate and complete tasks. Backup procedures, how to load paper into the printer, or how to load a file.
Embedded license installation counts * What it is * When it happens
Monitor the number of computers where each software application has been installed - checks if within SLA count
Functions of the operating system - provide interface to hardware * What does it do/what happens?
Most devices communicate through a driver. Drivers: programs that translate messages into those that can be understood by the device. Drivers are separate from the operating system and are usually supplied with each new hardware device.
Agile approach - key characteristics
No need for detailed requirements and complex design documentation Small team, multi-skilled members Fast Collaborative team and users allows the solution to be refined throughout Working version at each iteration Responds well to changing specifications. Closely collaboration Often whiteboards involved
Public domain *What is it * What does it cover and its limitations * Pros and cons
Not covered by copyright. Copies and modifications can be made without restriction. Source code may be distributed with the executable code.
Poor ergonomics * Impacts
OOS - occupational overuse syndrome Reduces productivity Causes health issues
Summary of operating systems and utilities
Operating system: Organises and controls the hardware and other software used by the system - file compression − defragging − virus checking − embedded licence installation counts Manage and control the resources of the system Come packaged with various utilities to assist in the management of various system functions e.g. creating directory structures, copying and deleting files, defragmenting hard drives, performing backups, altering system settings, etc.
How does a speaker work?
Output Convert electromagnetic waves into sound waves using magnets Permanent magnet - doesn't move or change polarity Other magnet is an electromagnet coil Electric current from processor is sent through the electromagnet, it is either attracted to or repelled away from the permanent magnet. Causes the diaphragm or cone to vibrate
Personnel * What is it and its role? * How does it relate and interact with the computer system?
People involved in using the system Users, network administrators, support teams, maintenance techs and engineers.
Structured approach - defining and understanding the problem * What is it? * What would be done?
Precise requirements that clearly define each aspect of the problem (will later test the success) System analysts: experts in determining and defining requirements - List outputs, generate required inputs and create models showing the data flow
Ergonomics - consistency of user interface
Provide a consistent method of reversing actions. Users like to explore software applications and are therefore likely to initiate processes that they later wish to reverse. Intuitive
Types of operating systems
Real-time operating systems (RTOS) - Perform tasks immediately and at regular timings (eg. machinery) Single-user, single-task operating systems - Manage so one single task can complete Single-user, multi-tasking operating systems -Multiple programs, one single computer. OS allocates CPU time to each program Multi-user operating systems Access to the system's resources by many users.
Program:
Refers to the computer software. This usually includes both executable files and included data files.
Ergonomics - effectiveness of screen design
Screen elements that are logically connected should be grouped together, and navigation should follow the natural flow of the task Busy screens → confusion. 50% white space Don't use tabbed dialogues inappropriate icons Sticking to standards Explain the rules. Develop a simple set of rules that apply to your entire application. Use interface elements correctly. Use colour appropriately Use fonts appropriately. Easy to read, Use consistently, Alignment of data entry elements.
Event driven programs vs sequential
Sequential programs Distinct start and end. Instructions are executed one after the other. Inflexible Event driven programs Listen for and then respond to certain occurrences or events by executing a particular section of the code. Flexible Viewed as a collection of inter-related modules
Social and ethical issues
Social - Friendly companionship. Living together in harmony, rather than in isolation Ethical - Dealing with morals or the principles of morality. The rules or standards for appropriate conduct or practice
Limited use:
Software licences do not give purchasers unrestricted use of the product. (eg. restricted to a single machine, Copying prohibited except for archival or backup purposes, no product alteration or modification
Privacy * How can privacy be maintained and protected?
Software must: Reason for collection and use Allow user to access their records Correct inaccurate information Disclose the details of other organisations that may be given information from the system Purpose of holding the information Describe the information held and how it is managed * Encryption of sent information * Non-identifiable data where possible * Ensure the user can see the data stored * Remind the user of privacy principles * Password policy
Software
Software: The set of instructions used to direct the operation of the hardware causing it to solve some problem
Structured approach - implementing * What is it? * What would be done?
Solution is coded in a programming language using module designation Ensures each programmer adheres to the planned solution and assists in correct module interaction Given system models, the nature and names of relevant data structures together with algorithms. Once all modules are complete they are combined and tested
Why does software need to be translated?
Source code is a collection of statements written in a high-level language - makes no sense to the CPU so must be translated into machine language to work LSC Lexical analysis Syntactical analysis Code generation.
Structured approach - planning and designing * What is it? * What would be done?
Structures that will hold the data used during processing are designed Data structures are carefully documented and if built well reduce programming required Modulation described using an algorithm description language
Term:
The period of time the agreement is in force. Usually commences immediately after terms and conditions have been accepted, and remains in force as long as the terms and conditions are upheld.
Hardware * What is it and its role? * How does it relate and interact with the computer system?
The physical components of the system, including the input, processing, storage and output devices Keyboard (in), mouse(in), hard drive(storage), microprocessor, monitor(in/out), router(in/out/storage) and printer (in/out/processors) Hardware ineractions Input --> [(Processing (control))<-> storage]--> output
Data * What is it and its role? * How does it relate and interact with the computer system?
The raw information input into the system which is transformed into information. eg keyboard inputs and mouse inputs
Functions of the operating system - provide interface to user * What does it do/what happens?
User interface (in a similar way to App interface) provides a consistent means of communication with the user. UI component of the OS usually sits on top of the main operating system.
Ergonomics - Ease of use
Users should feel they are in control of the computer Apps should support novice and experienced users Shortcut keys and advanced functionality options Response time → input, function, output. Should be less than 0.1 seconds Response times > 1 second cause users to act and perhaps reboot or cancel operations → bad perception of software
Ergonomics - Summary
effectiveness of screen design ease of use appropriate messages to the user consistency of the user interface
Prototyping approach - characteristics
modeling of a proposed solution or part of a solution progressive refinement of the model in response to feedback Concept prototypes - produced to assist in the determination of requirements, they are then discarded. Evolutionary prototypes - develop over time and finally become the final operational product through a simplified software development cycle, where after each cycle a new prototype emerges