Year-12-Software-Notes Yourrrrrrrrrrr
Year-12-Software-Notes Yourrrrrrrrrrr
Impact of Software
Inappropriate data structures
Y2K Problem
Early computers had limited memory and RAM was very expensive. To save memory, programmers that developed
operating systems had reduced the storage of dates to a two – digit integer, reducing storage needs by half. As the
year 2000 approached, there was a great concern about what would happen to software that governments, banks
and businesses depended on. Created numerous computers crashes and incorrect calculations.
Malware
Software designed to damage or perform unwanted action on computer systems. Due to the constant threat posed
by malware, security measures including anti-virus, anti-malware and anti-spyware products are implemented to
protect systems from harm.
- Viruses can replicate and spread upon the execution of seemingly legitimate software
- Worms attempt to slow a system by installing themselves on hard-disks and consuming space by replication
– often occurs in RAM due to security flaws with OS
- Trojan horses pose as legitimate software and once executed they cause damage in the system. Used to
spread malware to provide access to another user. Employs use of botnets to slow down competitors –
denial of service (DoS) attack.
- Spyware gains the user’s information and provides it to another party, usually used for identity theft.
Reliance on software
The software development industry has a huge responsibility to ensure all these systems are reliable and perform
their functions accurately. Includes household appliances, to motorised transport, utilities and even government
authorities such as the Tax Office and hospitals.
Social Networking
Online virtual community where people share thoughts and activities with peers. Concerns regarding social
networking, particularly privacy. Due to the encouragement of information sharing, there is a chance of identity theft
and ‘stalking’. It is also common for bullying to occur, particularly involving young people.
Cyber Safety
Cyber safety is about minimising the risks of cyber dangers, particularly children. While security software and
firewalls attempt to protect the user, it is necessary for self-protection methods to be utilised should the user wish
to remain safe. Government initiative (cybersmart.gov) informs users about cyber safe practices and procedures:
- Location-based services
- Unwanted contact
- Cyberbullying
- Online friends
- Your digital footprint
- Online purchasing
- Identity theft
Due to the unregulated nature of the Internet, massive amount of information is available – often without a stated
author. This leads to concerns regarding the credibility of the information. These questions should be asked to
evaluate a source:
- Who is the author?
- Is the information up to date?
- Who is intended audience?
- Is information accurate and unbiased?
- What is the purpose of the information?
Software developers invest time and money into the development of their products. Investment brings
responsibilities to the developer but also gives them rights over the product they develop.
Electronic material is easy to reproduce and distribute but not easy to develop.
Intellectual property
- Software product is developed in a coding language, which was developed by another company
- A team of developers is utilised to create software, often outsources
- Modules of source code can be purchased from third party,
- Artwork and images are created in a graphic design company
Software developers need to acknowledge all the ‘creators’ and ensure all compensation is paid.
Quality
Quality assurance is used to ensure standard of quality are being met by software developers. It is often difficult for
software developers to maintain high quality due to financial/time constraints. Customer’s perceive quality through
their expectations. Involves correctness, reliability, efficiency, integrity, useability, maintainability, flexibility,
testability, portability, interoperability.
External factors affecting quality include hardware, operating system, other software and run time errors.
Hardware – To ensure maximum reliability of their product, software application developers should test their
product with several different hardware configurations
Operating system- software products should interface correctly with specifications of operating system. Software
should also be forward compatible as OS is always being updated
Other software – software should not adversely react to each other to create unwanted results
Run-time errors – All applications developed should include error checking built into the code. Developers must
include routines that will deal with possible errors in execution. For example, developer would include save
procedure when detecting a fatal error.
Response to problems
Mechanisms are needed to assist in the identification of errors and their resolution, such as support departments
and severity classifications
Code of Conduct
Set of standards by which software developers agree to abide. These standards increase the quality of developed
software across the industry. Can be expelled if not adhering to code of conduct.
Malware
Developers have a responsibility to both do not develop malware and to constantly check for malware in their
workplace environments. Users have the right to expect their software to be free of malware
Ergonomic issues
Determining user needs about their work routine assist in the user interface design which allows users to work
efficiently including consistency of elements, colour, fonts and alignment properly. User testing is used to evaluate
the ergonomic design of software.
Inclusivity Issues
Responsibility to ensure software is accessible to anyone regardless of their differences including cultural
differences, economic market, gender and disability.
Privacy
Users have the right to know if their information is being held. Some organisations need to legitimately access
sensitive information and therefore users are protected under the Privacy Act 1988.
Intellectual property is personal ownership of the creative ideas that develop from an individual’s mind or intellect.
Includes patents, trademarks, trade secrets and confidential business information.
Plagiarism is appropriating or imitating someone’s ideas and manner of expressing them and claiming them as your
own. Plagiarism in software is ambiguous and to avoid infringing another person’s intellectual property and sources
should be acknowledged and compensated.
Copyright Laws
Purpose of these laws is to provide economic incentives for creative activity. Copyright protects the expression of
ideas rather than the ideas themselves. They give the owner the sole right to reproduce their own work. Copyright
Amendment Act 2006. Lasts for 70 years.
Classification of software
Commercial
Open Source
- Available to all to modify and redistribute, modified products must be released through same unrestricted
open source licence. Encourages collaboration and sharing of ideas.
Shareware
- Covered by copyright
- Distributed for trial use before purchase
- User must pay to continue to use software after trial period
Public Domain
Reverse Engineering is the process of reading source code and translating it into an algorithm. The algorithm can
then be modified and recoded in the same or another programming language. Reverse engineering is legal when the
program is owned by the developer carrying out the reverse engineering however it is illegal is someone else does.
De-compilation is the process of translating object code (machine code) into code that is more easily studied by a
programmer.
Software Licences
- Enforced by law
- Protects developer’s ownership of the software that they have created
- Licence conditions – determine what can be done with software, many developers include a compulsory
reading and acceptance of the EULA before installing can continue.
- Licence – formal permission or authority to use a product
- Agreement – mutual agreement or contract between parties
- Term – period the agreement is in force
- Warranty – assurance of some sort, a guarantee
- Limited use – restricted use of product
- Liability – an obligation or debt because of some sort of consequence
- Program – refers to computer software
Ownership versus licensing – purchasing media that contains computer software does not mean you own the
software; you have been sold the right to use the software under certain conditions verified in your licence.
Use of Networks
Software developers have recognised the increasing popularity of networked computers. Programs are now
available for network use. They could be either a) centralised software in which software is available as a single copy
on a central server or b) distributed software which is available on individual machines. Regardless, each machine on
the network or using the software requires a separate license.
Productivity – collaboration can effectively increase productivity due to both the ease of communication and access
to resources
Use of networks by user
Response times – important for users and will usually give up if too slow. Factors such as server load are out of the
hands of the developers and is an effect of networking
Interface design – Interface design can improve or ease response times. If interfaces are designed in such a way that
the program provides a visual response even if it has not received a networking response, a user is more likely to
continue use of the program
Privacy and security issues – Often sensitive data is transferred across networks. Precautions are often made to
ensure that the data remains private.
Product
Place
Price
Promotion
New software breakthroughs are usually inventions of new thinking and therefore boom. New products will pop up
to try and innovate against the existing product, but unless it provides a huge advantage, the consumer is more likely
to stick with the original default software product.
Legal Implications
National Legal Action
RACV vs Unisys
Failed expectations of software. RACV sought damages citing false representation and misleading conduct. Awarded
damages of $4 million dollars to RACV
Microsoft vs Apple
Microsoft released windows after Apple released Macintosh. Both systems were distributed before legal action was
taken. A settlement was reached allowing both companies to distribute their OS.
5 software approaches:
- Structured
- Agile
- Rapid application development
- Prototyping
- End user
Each software development approach consists of the same stages continually repeated, but with the frequency and
timing unique to each development cycle.
5 stages include:
Structured Approach
Agile Approach
- Concept prototyping
o Inspire discussion and thought about product
o Prototype will never be final product
o Used to develop requirements and discarded after evaluation
- Evolutionary Prototyping
o Prototype ends up being final product
o Each successive generation of prototype is an improvement
Some software developers take this further, by considering the maintenance stage of the cycle as part of the
designing and understanding stage of the next cycle of development
Acknowledges that the communication with users is very important and helps in the defining and understanding of
any future products to be developed.
End User
- never used in software companies, not made for purpose of making money
- used to address a specific problem that end user needs a solution for
- very small budget
- does not require knowledge of workings of a computer, as it uses Customised off the shelf (COTS), Wizards
or other automated code generating devices.
- Resulting programs will not be overly complex and may not meet specifications that the user may have
initially wanted
- Advantages of End User approach
o The solution can be revised and modified at will, without consultation with other users
o No money required
o Less development time required
o A freedom to change requirements at any stage
1. Parallel conversion
2. Pilot conversion
3. Phased conversion
4. Direct cut over
Direct Cut-Over
- Involves the old system being completely dropped and new system being installed at the same time
- Need to make sure the new system is completely functional and operational
- This conversion method is only used when it is not feasible to operate two separate systems at the same
time
- Any data conversion and import must be done before installation occurs
- New data lost if new system fails
- Implementation occurs over shorter period but may be more time consuming
Parallel
- Involve the operating of both systems being run for a period of tome
- Allows problems with new system to be found without loss of data
- Once new system is up and running, the old system can stop being used
- Old systems must be used until conversion
Phased
Pilot
Objectives
- Short term and long-term aim and plans
- Clarification of objectives leads to determining the requirements, boundaries and rules for the development.
- Measurable outcomes are also expressed in objectives
Requirements
- Statements that are indicators of what needs to be met
- The final evaluation of a project’s success or failure is based on how well the original requirements have
been achieved
Functionality Requirements
Compatibility Issues
- Software of various types runs on a variety of environments including: OS, browser, hardware and screen
resolution.
- Environments can be varied by the user
- Software developers must ensure products are able to be used on multiple systems or devices and
conditions
- Compatibility issues include:
o Problems with different OS versions
o Incompatible hardware such as graphics controllers
o Different screen size and resolutions
o Browsers and different HTML standards
o Hardware and drivers not supporting software
o Incompatible LAN hardware and drivers
Performance Issues
Cost effectiveness
- One of the constraints of a new software system will be that it falls within a certain budget. If it is not a
requirement, then it will most likely be a constraint
- Compare the costs between developing a new product or modifying an existing product
- Development hardware costs
o Any new hardware that needs to be bought/leased to enable development
- Development software costs
o What software is required; programming languages, CASE tools, database managements systems,
graphics tools
- Development personnel costs
o Salaries of development team and other staff
- Outsourcing costs
A budget for the development project needs to be decided about a range of factors including:
- Available capital
- Predicted sales of finished product
- Cost savings as a result of the products implementation
- Predicted future upgrade and maintenance costs for the product
- Ongoing consumer support costs
Design Specifications
Specifications of proposed system
- A software requirements specification is a standard framework for a team to develop a large, complex
software system and includes a complete description of the behaviour of a system to be developed.
- Includes a set of use cases that describes all the interactions the users will have with the software.
- SRS also contains non-functional requirements, and the methods which will be used to model the system will
also be specified.
Developers perspective
- Data types
- Data structures and variables
o Variables represent storage locations of data within the computer system
o A programmer will look at the data items and determine how they are to be stored and accessed
o The data type and an appropriate identifier is then determined
o Meaningful variable names are considered intrinsic documentation and help programmers follow
the logic of the program
o Global or Local Variables
- Algorithms
o Pseudocode or flow charts
o Problem is modularised
o Top down decomposition
o Familiar modules which can be drawn from a library of code
o This method ensures a minimum of testing is required
- Quality assurance
- Documentation
- Design approach
Users Perspective
- Interface design
- Social and ethical issues
- Relevance to user’s environment and computer configuration
Specifications developed from the user’s point of view should include and design specifications that influence
the experience of the end user.
Standards for interface design will be specified to ensure continuity of design across the project’s screens. The
wording of messages, design of icons and the format of any data presented to the user need to be determined
and a set of specifications created.
System Documentation
Representing a system using systems modelling tools
- Different types of documentation are produced throughout the software development cycle
- Many large companies utilise diagrams that form part of the UML (unified modelling language) which
incorporated a variety of different modelling tools that are now available as part of many CASE tools and
IDE’s (integrated development environments)
- A model of a system is a representation of that system designed to show the structure and functionality of a
system. Many system modelling tools are in the
form of diagrams
- The model gives directions and specifications for
the developers
- Different types of modelling are applicable to
different aspects of the system
IPO Diagrams
- Explain how inputs are transformed into outputs by processing
- Expand on the processes found in the data flow diagram and structure diagram
- IPO diagram can either be diagrammatical or table form
Context Diagrams
- Used to present an overview of the whole system
- Shown as a single process along with the inputs and outputs
- Attempt to show the data entering and information exiting the system without detailing the processing
required in any detail.
- The squares are referred to as external entities.
- Connected to single process by data flow arrows
- Elements are labelled
- Does not show data stores nor internal processes
- Context diagrams are referred to as level 0 data flow diagrams
- Helpful with understanding how system interfaces with the environment
- Process: a circle
- Arrow – flow of data
- External entity/rectangle – person or organisation, source or sink that provides or receives data
Storyboards
- Shows the various interfaces in a system as well as the links between them
- The representation of each interface should be detailed enough for the reader to identify the purpose,
contents and design elements.
- Areas used for input output and navigation should clearly be identified and labelled
- Any links shown between interfaces should originate from the navigational element that triggers the link.
Structure Charts
- Describe the top down design and sequence of processing
- Represent a system by showing the separate modules or subroutines that compromise the system and their
relationship to each other
- Chart is read from top to bottom, with component modules or subroutines on successively lower levels,
indicating these models or subroutines are called by the module or subroutine above.
- Modules are read left to right to show the order of execution
- These modules set the structure for the development of the IPO diagrams and then the development of the
algorithm and subsequent coding of each module
- Structure charts are useful for maintenance
- Symbols used
o Open arrow – data movement between modules or subroutines, usually passes as parameters
o Closed arrow – indicate a flag or control variable
o Small diamond at intersection – a decision
o Undo arrow – repetition
o Line – call the module
System Flowcharts
- Used to represent the logic and movement of data between the system components, including hardware,
software and manual components
- System flowcharts are a diagrammatic way of representing the system to show the flow of data, the separate
modules comprising the system and the media used
- Many symbols for system flowcharts have become outdated because of changes in technology
- Symbols:
Data dictionaries
- Comprehensive description of each data item in a system
- Commonly includes:
o Variable name
o Size in bytes
o Number of characters as displayed on screen
o Data type
o Format including decimal points if applicable
o Description
o Example
Algorithms used to document the logic in modules and subroutines
- The logic in modules and subroutines are represented before coding using pseudocode and Flowcharting
- Pseudocode uses English-like statements with defined rules of structure and keywords
- Flowchart is a graphical representation
- Flowcharts should not be used for large projects
The need to involve and empower the client during the development process
- changing work practices are often cause for discomfort, resentment and fear
- people who are going to be affected by a software change will more readily accept them and if they feel that
they have had input into the design process and will have a sense of ownership of the product
- ownership is especially important after installation, as users are more likely to describe problems or suggest
enhancements
- empowering the user also means giving them the ability to make decisions that affect their work
Quality Assurance
Refers to the planned and systematic activities implemented in a quality system so that quality requirements for a
product or service will be fulfilled.
Scope of variables
- Where the variables are declared/created/used
- Scope describes where in the algorithm the variable can be used
Parameters
- Components of functions
- Identify values that are passed into a function
- Passed from mainline to sub-program
Standard Algorithms
- Linear search
- Finding maximum or minimum values
- Binary search
- Insertion sort
- Selection sort
- Bubble sort
- Processing strings (extracting, deleting and inserting)
- Generating set of unique random numbers
- Processing of sequential and relative files
Arrays
- Structured data type
- Collection of like data
- Data is held in a cell with an index
- Cells are linear in structure
- Array has a name or label
- Arrays hold a single data type
- You can nominate the size of an array
- You do not need to fill all cells in an array
Declaring an Array
- Array is declared before values can be added
- E.g. Declare Array (1-5) as type string
Accessing an Array
- To find (access) the third data element in the ‘array’ = array (3)
- Will return third index value
- To assign a simple variable a value from an array: myarray = array (2)
Sentinel Value
- Used to mark the end of a data list
- EOF – end of file
- Indicates last entry of fata in the structure, so processing can cease
Linear Search
- Examining one item at a time in an array beginning at the first item and moving to the end of the array
- Does not require numbers to be sorted
- Processing taken for the search is directly related to the size of the array searched
- Linear search involves:
o The function accepting a search value
o Traverses the array using iteration
o Checks each value compared with search value
o Returns ‘number found’ and the index of cell which value equals search value
o Otherwise returns ‘number not found’
Find Maximum or Minimum
- The value in the first element is stored in a temporary variable called Max/Min
- As the array is traversed each element is considered to determine if its value is larger/smaller than that
stored value
- If so, the value in Max/Min is replaced by this larger/smaller value, and the index of this element is stored in
a temporary variable called MAX/Minindex
- When all elements have been considered, Max will contain largest value and MaxIndex will contain the index
of the largest element and vice versa for minimum
BEGIN FindMAX
Max = Numbers (0)
MaxIndex = 0
i=1
REPEAT
IF Numbers (i) > Max THEN
Max = Element (i)
MaxIndex = i
END IF
i=i+1
UNTIL i > NumElementsInArray
Display “The highest value is ” Max “ at position ” MaxIndex
END FindMAX
BEGIN FindMIN
Min = Element (0)
MinIndex = 0
i=1
REPEAT
IF Element (i) < Min THEN
Min = Element (i)
MinIndex = i
END IF
i=i+1
UNTIL i > NumElementsinArray
Display “The smallest value is ” Min “ at position ” MinIndex
END FindMIN
Binary Search
- Only used if the values in the array are already sorted in order
- The binary search starts by checking the middle value of an array to see if it matches the search value
- If not, the binary search then determines if the search value is in the first half of the array or the second half
(after the middle value)
- This process is repeated with the remaining list of items
- Eventually the required item will be found or the list of possible items will be empty
String Concepts
- in traditional systems strings were not identified directly in a programming language
- a programmer had to work with the individual characters that make up a message or word
- a string was represented as an array of character
- commonly given a default value of 256 characters
- common operations include
o determining the length of the string
o joining strings together – concatenation
o extracting characters from the string
o inserting characters into the string
o deleting characters
Inserting
BEGIN InsertString(NewString, PositionToInsert)
‘Calculate Length of original and new strings’
OriginalStringLength = StringLength(OriginalString)
NewStringLength = StringLength(NewString)
TempStringLength = 0
Index = 0
ExtractOriginal(PositionToInsert, OriginalStringLength)
InsertNewString(PositionToInsert, NewStringLength)
ReplaceOriginal(Index, TempStringLength)
END InsertString
Deleting
BEGIN DeleteString(StartPosition, NoOfCharactersToDelete)
Index = StartPosition
OriginalStringLength = StringLength(OriginalString)
WHILE Index <= OriginalStringLength - noOfCharactersToDelete
‘Overwrites elements to be deleted
OriginalString[Index] = OriginalString[Index + NoOfCharactersToDelete]
Increment Index
ENDWHILE
WHILE Index <= OriginalStringLength
OriginalString[Index] = “”
‘Clear contents of these elements
Increment Index
ENDWHILE
‘The original str string will now be NoOfCharacters Shorter
END DeleteString
Generating set of unique random numbers
- most high-level languages have a function to generate a random integer or floating-point number
- generally, a range in the random function is specified
- random number generators have applications in gambling, statistical sampling, computer simulation,
cryptography
- the generation of pseudo random numbers is an important and common task in computer programming
- different applications require different amounts of unpredictability
- most computer-generated random numbers use Pseudo random number generators (PRNGs) which are
algorithms that can automatically create long runs of numbers with random properties but eventually the
sequence repeats
- the series of values generated by such algorithms is generally determined by a fixed number called a seed
- one if the most common PRNG is the linear congruential generator which uses the recurrence:
Priming read
- the statement which reads the first input data record prior to starting a structured loop
- the main purpose of a priming read is to allows the processing block that follows it to be structured
Open for input, output or append
Dog
Interface Design in software Solutions
Communication with the user is key to finding out the specifications for interface design depending on the target
audience.
Consistency in Approach
- Must be consistency between screens within an application
- Allows the user to anticipate actions and placement
- Design rules should be created before the development process is undertaken
o Especially important when a team of programmers is employed
- Transfer across to new product
- Aspects of consistency
o Names of commands
o Use of icons
o Placement of screen elements
o Feedback
o Forgiveness
Other
- Hardware requirements
- Is GUI required
- Experience of the developers
Benchmarking
- Involves creating a set of tasks that can be used to measure the speed with which a computer system will
perform a task
- Allows for a comparison between different combinations of hardware and software
- Purely objective process and so subjective measurements of aspects such as user friendliness and ergonomic
factors are not included in the process
- Interpreting these results are just as important as obtaining them.
Implementation of software solutions
Language syntax required for software solutions
Railroad diagram
- Alternative graphical method used to define the syntax of a programming language
- Rectangles are used to enclose non-terminal symbols, that is, symbols that will be further defined
- Circles or rounded rectangles are used to enclose terminal symbols
- Linked by paths to show all valid combinations
- By starting at the left-hand side of the diagram and tracing any path in a forward direction to reach the right-
hand side of the diagram, a syntactically correct construct is defined
Compilation
- Takes source code and produces a complete translated file
- Compiling is machine CPU specific
- This file can be used on other machines with same CPU without a need for translator
- Batch process
- Unwanted code, such as comments/remarks, are removed therefore creating code that is more efficient
- Allows for use of share resource and libraries
- Each time a change is made, the whole program must be recompiled
- Slower testing and error detection phase
- All coding errors are reported at the end
Interpretation
- Translation but slower, less efficient object code as each line is translated when loaded into memory
- Line by line translation and execution
- Much slower overall executions
- Errors reported line by line; instant error feedback
- Early error detection of runtime errors
- When error is detected, execution is halted
- Users must have the interpreter on their computer
Incremental compilation
- Compiles each line of source code and adds it to object file
- Line by line translation
- Errors reported instantly
- Result is still a compiled object file
Compilation Interpretation
Advantages Runs faster and more efficient Cross platform
Source code is private Easier debugging
Disadvantages Executables created with compilers are Slows down execution significantly because of
machine specific; not cross platform each statement needing to be translated before
If it is to operate on a different it is executed
processor/operating system, source code Public source
must be recompiled, longer to develop in Users of interpreted programs must have copy
of the interpreter
The three translation methods are similar differing only by what occurs after a line of code in converted.
The processor is connected to main memory via an external data bus system
The CPU contains a microcode instruction set which are permanently set in the CPU sometimes referred to as
firmware.
Fetch-execute cycle
1. Fetch instruction from primary memory and place in instruction register
2. Set program counter to the next instructions address
3. Decode the instruction
4. Load operands from memory into a register
5. Execute the instruction and store result in an accumulator (generally the ALU will execute the task)
6. Reset
https://www.youtube.com/watch?v=jFDMZpkUWCw
Use of stubs
- A stub is an incomplete function that has the same name and interface as the final form but simpler
- Stubs usually only contain an output statement to indicate the function was called
- It is used in testing the implementation of a program
Logic errors
- Logic errors are the result of syntactically correct code that does not complete the required task
- Logic errors are the most difficult error to correct
- It is impossible for the development environment to detect logic errors and logic errors are detected in the
running of the program
Runtime errors
- Runtime errors are errors that occur while executing:
o Arithmetic errors
Involves the incorrect use of data types and data structures
Usually occurs when the result cannot be stored properly
o Division by zero
o Accessing inappropriate memory locations
Error occurs when inappropriate memory locations are accessed
Peer checking
- Involves the checking of the code along with the other person/programmer
Desk checking
- Test data is used to compare the actual result with the expected results
- Use structured walk through to step through the code and find where errors occur
- Desk checking should be performed on sub and whole programs
Structured walkthrough
- Structured walkthrough are more formal than peer checks
- No attempt is made to correct problems only feedback is given
- Made to evaluate design at different levels
Program traces
- Allows the programmer to view progress of the program execution in detail
- The order of line executions is tracked analysing the flow of the statements
- Particularly useful for following the progress of the program through nested loops or complicated sections
- A log of transactions is often created, and this trace log can be used to identify source of errors
Watch expressions
- A watch expression is an expression whose value is written to a separate watch window
- Usually watch expressions are variables and calculations separate to the program lines of code
- This can provide automated desk checking
Installation guide
- A program installation guide is also included within user documentation and should include:
o Details on how to install the program and descriptions of the mediums supplied
o Minimum hardware specifications
o Details of any known conflicts with any other software
- It is very useful to use screen shots in the user manual as the users can effectively compare what stage they
are up to and confirm that they are on the right track
User tutorials
- Guide the user through the steps of working with features of a program
- Tutorials usually train the user how to use the program
Online help
- Online help systems provide updated solutions to various problems, providing the user with information
from the internet – FAQ’s are also provided to aid the user
- Having the help documentation online enables easy addition and updating of the help information
- Internet connections are usually required
Technical documentation
Logbooks
- Log kept by the development team of all the steps taken in the development process
- Annotated and dated regularly to avoid loss of important steps and tests
Systems documentation
- Systems documentation should provide a description of the operation of the program including the use of
subprograms and any special features of the code
- Should include documentation on how to configure the hardware and software required
Algorithms
- Primarily used during program design to provide a clear description of the steps carried out to solve the
problem
- Allow maintenance programmers to determine the structure of the program
Source code
- Programming code that makes up a program
- Documentation within the source code are in the form of comments and intrinsic information
Extensions: files that usually reside with the OS and assist in the execution of some programs
These add-ons are necessary for a program to run successfully and provide all its features
If a program is required to have any of these add-ons, they should be provided by the software developer to the user
or have instructions in how to download and install them.
Emerging technologies
The effect of emerging hardware and software technologies have on the development process
Involves learning about:
Alpha testing: Testing of the final solution by personnel within the software development company prior to the
product’s release.
Beta testing: testing of the final solution by a limited number of users outside the software development company
using real world data and conditions.
If the above is followed in the specification document, an objective evaluation of the project can be made. The
process of validation involves the use of the software in a real situation with real data so its performance can be
compared under conditions that are close as possible to final environment.
Levels of Testing
Testing should occur at:
Module testing
- Black box
- White box
- Treats every module as a stand-alone application
- Different errors:
o Arithmetic
o Comparison
o Control logic
o Data structure
o Input/output
o Interface errors
Program testing
- Also known as integration testing
- Interaction between modules may causes errors
Bottom up approach
- Involves testing the lower end module first then adding them together one by one then testing, modifying
and retesting the larger module until it functions correctly
Followed by acceptance testing to ensure that the program fits into the processes and procedures of the system for
which it was designed.
Hardware
- Software product should be installed and tested on different combinations of hardware ranging from
minimum requirements to additional hardware
- Focus on:
o Performance: how well program operates; will test load and volume
o Recovery: force system to fail and then measure the ability to re-establish normal operating state
o Security: can and how system is breached
o Stress: push hardware and software beyond normal operating conditions
Response times
- The response time of an application is the time the system takes to respond to data input
- Live data will subject the system to real processing requests and therefore will provide a simulation of a real
response time
- Any processes that are likely to take more than one second should provide feedback to the user e.g.
progress bar
Benchmarking
- Process of evaluating a product using a series of tests; these tests provide numerical results that are
compared with recognised standards
- Benchmark: a point of reference from which quality or excellence is measured
- These results allow users of software products to make informed purchasing decisions
- Benchmarking aims to reduce the number of variables and to report results objectively
- Compare results to competitors to maintain and improve market penetration
Quality assurance
- Clarity- precise and unambiguous instructions
- Correctness – consistent output from the same input.
- Documentation– accurate without spelling grammar and process errors.
- Economy – economical use of software and hardware resources
- Efficiency – ease of completing tasks
- Flexibility– ability to cope with situations encountered within the operation of the program
- Generality– software resembling real processing
- Integrity– maintain system security
- Interoperability – software communicating with existing systems
- Maintainability– correction of problems and errors
- Modifiability – ability to change the software
- Modularity – software parts to be easily be able to be replaced.
- Portability – ability to be executed within different software and hardware environments
- Reliability - a measure of failure rate
- Resilience – ability to recover from abnormal situations and errors
- Reusability – modules may be reused within other similar software projects
- Understand ability – how well the design of the software is understood
- Useability - aspects important to the user, how easy program is to learn
- Validity – how the software meets the specifications of the user
CASE tools
- Test data generator
- Word processor
- File comparator
- WinRunner
- LoadRunner
- DataTech
- UsableNet
Communication of testing
- The nature of the project will determine the audience for the test results
- Large software development companies usually have separate development and testing personnel and
testers must communicate their findings back to the development team
Structural quality: how it meets non-functional requirements that support the delivery of the functional
requirements such as robustness or maintainability
Software quality assurance (SQA) consists of a means of monitoring the software engineering processes and
methods used to ensure quality.
The client will sign off on the project when acceptance testing has been carried out and the client is happy with the
outcome.
It is common for changes after the development as user requirement evolve and change. Modifying and
maintenance of the problem may involve the structured program development approach. Following this approach
ensures effective changes are met.
It is important for software developers to create and maintain the documentation as well. Developer websites often
provides the option to report an issue and download a patch for known issues.
Help desk support may also receive requests for changes or identity issues that need to be fixed. Changes would
need to be prioritised based on the severity of the issue.
Patch: Used to correct a problem in a software solution. A patch is an actual piece of executable code that is inserted
into an existing executable program.
1. Errors in code
2. Changes in the operating environment
3. Changes in requirements, such as increased functions required by the client
- Well set out design documentation – such as IPO, data flow diagrams, structure charts, algorithms, and
source code;
- Use of variables instead of literal constants
- Constants or global variables defined at the beginning of code
- Use of meaningful identifiers (internal documentation)
- Design comments/remarks throughout code (internal documentation)
- Code that incorporates a good error reporting system
- Use of correct control structures
- Modularisation of code
- One logical task per function/sub routine
Determining changes
There may be different reasons for changes to be made:
All changes should be thoroughly tested before being fully implemented. Even minor source code adjustments will
need to be compiled.
Regression testing is the process of retesting a program when changes have been made.
Documentation of changes
Documentation should always be carried out when making changes to software. It is the responsibility of the
software maintainer to document changes.
The process of keeping track of software changes, versions and documentation changes is part of project
management. Management of software resources is called configuration management.
Where changes affect manuals and help systems changes may be accompanied by:
- Release notes
- Addendum to manuals
- Reprint of manuals or providing new manuals in pdf
- Re install of help files
Programming Paradigms
Development of different paradigms
Programming Paradigm
- Computer programs are written in a paradigm or model
- A paradigm is a pattern, an example or a model.
- Paradigm: philosophical or theoretical framework. A different approach under which laws, theories and
generalisations are produced.
- Most computers use the Von Neumann computer architecture model:
o Memory and processing are separated
o Algorithms are expressed in a sequence of commands
o CPU executes the lines in sequence
- Examples of different programming paradigms are:
o Imperative: variables and control structure
o Logic: non-procedural, declarative
o Object-oriented: event driven
Third generation
- High level
- Processer independent
- Portable across platforms
- Sequentially executed line by line
- E. BASIC, PASCAL
Fourth Generation
- Very high-level languages
- Non-procedural
- Query and retrieval
- What program must do instead of how it must be done
- Developed to make interaction with user easier
- Errors are easier to detect
- SQL
Fifth Generation
- Known as natural and knowledge base languages using spoken English language
- Uses logic programming paradigm
- Employ problem solving algorithms based on logic
- E.g. PROLOG
A procedural language is where a sequence of execution is written by the programmers usually in a main line
program. All procedural languages use the concept of a variable as a storage location.
Due to GUI event driven language and object-oriented languages OOP were developed. In Event-driven
programming the order of execution is not sequential; non-linear and controlled by events.
Non-procedural languages were developed to provide more flexibility in the way problems may be solved; rely on
logic and inference.
- The imperative paradigm requires that every part of the problem must be solved for the entire product to
work
Emerging Technologies
All commonly used CPUs process instructions sequentially. Therefore, all higher-level languages still need to be
translated into machine code that will be processed sequentially.
Imperative languages are suited to the translation process that interprets one line of code at a time. Contain the
following constructs:
Procedural programming is a programming paradigm based upon the concept of the procedure call. Any given
procedure might be called at any point during a program’s execution, including by other procedures or itself.
Procedural programming is often a better choice than simple sequential or unstructured programming in many
situations which involve moderate complexity, or which require significant ease of maintainability. Possible benefits:
- The ability to re-use the same code in at different places in the program without copying it
- Easier way to keep track of program flow
- Ability to be strongly modular or structured
Important features:
Classes
- Blueprint that defines the variables and the methods common to all objects of a certain kind.
- Expanded concept of a data structure; instead of only holding data, it can also hold functions and methods
- Specifies a data structure and the permissible operations or methods that apply to each of its objects
- Abstract data types in object-oriented languages are called classes; abstractions refer to the attributes or
properties of that data item
- A class generally refers to a group or collection of similar objects
- A class defined through inheritance from another class is called a subclass
- The class from which the subclass is derived is called the parent class or superclass
- Objects are accessed like variables with complex internal structure, and in many languages are effectively
pointers.
Objects
- An object is an instantiation of a class
- An object is a software bundle of variables and methods
- Instantiation is the use of object classes
Methods
- How the objects data is processed
- Methods are implemented as individual programs
- Subprograms that defines the operations on objects of a class are called methods
- Class methods
o Belong to the class as a whole and have access only to class variables and inputs from the procedure
call
- Instance methods
o Belong to individual objects, and have access to instance variables for the specific object they are
called on, inputs, and class variables
Abstraction
- An object contains some properties and methods
- We can hide them from the outer world through access modifiers
- Abstraction allows the programmer to simplify the programming process. In a modular solution, abstraction
can be viewed in levels
- Two essential forms of abstraction:
o Data abstraction, which is looking at data items in familiar terms such as characters and numbers
o Process abstraction, which is a sequence of instructions that have a clearly defined and limited
purpose
Messages
- A message is a request that asks for a specified operation to be initiated using one or more objects
Inheritance
- An object class may be composed of several different object types
- The concept of classes automatically containing the variables and methods defined in their supertypes
Polymorphism
- Allows different objects to use a behaviour or method
- Used for maintenance and expansion of code
Encapsulation
- Separates how an object behaves from how it is implemented
- Is the process of including all the attributes and procedures that an object needs within the object itself
- Disallows calling code from accessing internal object data and forces access through methods only.
- Result of packaging the data and methods of an object in a way that prevents the data from being accessed
except via the objects own methods
- Some languages let classes enforce access restrictions explicitly, for example denoting internal data with the
private keyword. Vice versa for outside classes with public keyword.
Logic Paradigm
- Logic paradigm is non-procedural
- Associated with artificial intelligence software
- Logic programming is an attempt for software to do what human beings do such as:
o Ability to learn
o Process knowledge
o Make inferences
o Gain knowledge
- Logic programming uses a set of statements that are executed in an order to produce or infer a result or
truth
o Facts
o Rules
o Queries
- A collection of facts and rules is known as a knowledge base and Prolog programming is all about writing
knowledge bases
Heuristics
- Involves finding a set of rules and procedures to find a satisfactory solution to a problem
- Provide different criteria for chaining to a solution or goal
Goal
- Goals are achieved when a group of rules from the database are matched
- Goals are achieved when the facts and rules are true
Inference engines
- An inference is the processing portion of an expert system
- It is the control engine and provides the reasoning ability providing conclusions
- An inference engine searched through the knowledge base using forward and backward chaining
- Inference engines carry out the processing and applies a knowledge base to resolve a goal
Backwards chaining
- Involves matching the current goal against each fact
- If a goal matches a fact the goal succeeds and the resolution proceeds.
- If it matches with a rule with all the sub goals the rule succeeds
- The user is informed of the success or failure of the choices made and the variables that were input to get to
that point
- Starts with a statement and a set of rules, and works backward, matching the rules with the information
from a database of facts
- A process continues until statement can be proven true of false
- Eventually the source of the material that can be hypothesised is met
Forward chaining
- Problem solving procedure that starts with a set of rules and a database of facts and works to a conclusion
based on facts that match all the premises set forth in the rules
- This methodology works best when there are many results
Recursion
- Occurs when a rule contains itself and is a repetition mechanism
- Would normally cause a stack overflow error if it continues indefinitely
- Method of solving a problem where the solution depends on solutions to smaller instances of the same
problem
- Recursion solves such problems by using functions that call themselves from within their own code
Knowledge base
- Consists of a database containing simple facts and rules that describe relationships and possible methods
- Database may have the ability to grow as it learns new facts
- This is how it deals with the uncertainty apparent in the paradigm
Inference engines
- Processing portion of an expert system
- Control engine
- Applies knowledge to the data to form a conclusion
- Forward and backward chaining
User interface
- Provides smooth and clear communication between the user and the system
- Should give an insight to the problem-solving process being carried out
Heuristics
- Rule of thumb often based on experience
- Results in one or more possible solutions
- Rules that are generally accepted as true within the specialist area
- Gives expert system a human feel
Neural networks
- Expert systems that can learn
- Used in the future to reach new conclusion
- Each neuron has several inputs and a single output
- Each input is given a different weighting and once weighting has passed a threshold a neuron is fired
Approach to testing
- Structured
o Always testing
- Program
o Testing at end
- Automated
o Case tools
Effect on maintenance
- Use of reusable modules
- OOP is recommended