Escolar Documentos
Profissional Documentos
Cultura Documentos
Notes
Development and Impact of software solutions
Social and Ethical Issues
Rights and Responsibilities
The Developers of Software solutions have many rights, which they own and
owe towards the users of their software. These rights and responsibilities are:
Authorship
A developer has the rights to own the ideas and software that they develop
The developer has a responsibility to protect their interests in the
development of the software and the rights of the people who are involved in
the development of the product
The right of authorship is known as copyright
Future developers must respect copyright issues if they wish to use new
ideas or modules in their software.
Copyright means that people cannot use any items in the product
Reliability
Reliability refers to the guarantee of the product to run as advertised and
according to the manual for a certain period of time
Under the reliability issues the software developer has the responsibility to
provide service updates for any faults in original product for at least the
duration of the warranty
The software must be able to function with acceptable response time, and
fail to crash or une
Quality
The software must fulfil software standards
Quality ties in closely with reliability. The quality of the product must be
satisfactory so that it is able to be reliable under general circumstances
The software must be consistent within the program and compared to other
programs performing similar function. It must also be consistent with the
typical design interface of the operating system on which the program runs
The program must have quality documentation available to the user. The
quality of the documentation is defined by how well it helps the user perform
the basic tasks of the program. How the documentation deals with common
troubleshooting problems. Finally how easy the user manual is to understand
relative to the experience of the users of the program
Response to problems
The developer has the responsibility to provide adequate response to
problems users of the software encounter
They must attempt to rectify all security issues especially in software
accessing the internet or running over a network
Developers must implement problems identified in the program as quickly as
possible
Code of Conduct
The developer has the responsibility to make sure that all aspects of their
software cohere to all legal issues such as intellectual property and copyright
-1-
They must acknowledge all people who contributed to the production of their
software
Adhere to privacy laws and rights
Use of appropriate prompts and language used in both internal and external
documentation such that it is not racist, offensive or in any way degrades any
persons of society, especially the users of the software
Viruses
Developers must make sure that their software does not pose any problems
to the functioning of their computer. The software must not carry any viruses
Developers must ensure that viruses cannot be spread or created by the use
of their software
License Agreements
Licence agreements give the user different rights according to the conditions
of the use and purchase of the software. The three main types of agreements are
shareware, freeware and public domain software
Freeware – gives the user complete access to the program without having
to pay any money. However any of the code cannot be copied or modified.
However the program can be freely distributed
Shareware – is distributed software for trial purposes before purchase. It
can be freely distributed, but after the trial period is up the person user
must pay an amount of money – generally less than the cost of commercial
products directly to the developer. The code again cannot be copied or
modified
Public domain software – are any programs that are freely available for
copying and modification. Such software comes about because the owner
has forfeited copyright or has been dead for over 50 years. Such software
are good tools for new developers.
Networks be coming increasing common so many programs have evolved to
encompass network use. This is done is one of two ways. The program either has
centralised software where a single copy is run from a central computer. The
software license then needs to cover the each machine that uses the software. The
second method is distributed software where each computer has a copy of the
-2-
program on the machine but runs the program from a central database of
information.
EULA – End User License Agreements are used to prevent the illegal re-
distribution of software. There are three types of EULA agreements.
Single Use licences – allow the purchaser to install one copy of the
software on one computer only
Multi-use licences – provide one copy of the software to be distributed on
a specified number of machines
Network licences – provide the use of the software across a network with
a specific number of computers
Copyright
Copyright is the legal protection of computer programs against illegal
plagiarism or piracy. It provides the developer legal right to control the use of
their product. The protection given by copyright does not usually protect the idea
behind the program, but the way in which the idea is expressed. Current copyright
laws allow the user to:
Make or have backup copies of the original program in case the original
software is damaged
Use a copy of the program for research or study purposes. Ie look at the
code and layout of the software to see how such programs interact.
However the code cannot be modified, copied or changed
Reverse Engineering
Reverse engineering is the process of reading source code and translating it
to an algorithm. Reverse engineering is only illegal if it has been carried out by a
person who does not own the program and then redistributed the code in another
language or different format.
-3-
RAD Fast development (RAD) Many not meet exact program
Relatively cheap requirements
Uses considerable amount of Many involve copyright and
existing reusable code intellectual property of others.
(Developers must be careful not
to break laws)
End-user Should meet exact user Limited to simple project and
requirements limitations of application
Quick and cheap programs
Structured Approach
The structured approach follows
the software development cycle. It
considers the program on a whole and
takes logical steps to arrive at the end
product. The process is time consuming
and costly and necessary and suitable to
tackle a large program.
Because the process is long a
complex often a team of people is
required to tackle the problem. Some of
the people include: system analyst,
designers including software engineers,
programmers, graphic designers and
consultants, managers, trainers and
users. The software analyst is the person
who is generally given control of the
management of the project and is the first level of communication between the
management and development team.
In development the structured approach follows the development cycle as on
the right. Each step is explained in more detail below:
Prototyping Approach
The prototyping approach involves building a working model of the program
that is evaluated by the users. Usually the model is then modified and evaluated
further, and may finally become the entire solution. The approach usually involves
a small team of programmers and one or more users. Beta testing is often used by
such an approach.
Prototyping is used for many reasons including quick development of the
program, a clear view of product requirements, to allow trial-and-error testing for
new concepts, for demonstration purposes or to use as a substitute for a more
expensive program. This approach is also often used a the beginning or planning
stages of the structured approach.
Two types of prototypes are used:
Concept prototypes – are prototypes developed to gather information to
be used in another program. The program is not intended for a full
working program itself. 5GL languages are often used for this approach
because they are more dynamic and allow better feedback.
Evolutionary prototypes – are prototypes, which will later become full
working programs. A model is produced and then later refined This
approach is used is the planning stages do not provide enough
information on the requirements of the program.
-5-
Some aspects to note in this approach are that the emphasis of the program
is on the menus, windows, input and output processes. Little security or error
recovery is considered. There is also reduced documentation compared to the
structured approach, which leads to harder maintenance of the system.
RAD approach
The RAD approach is any method of software design that uses tools to
quickly generate a program for a user. The approach uses existing solutions or
code, CASE tools and templates. RAD also lacks formal programming stages.
This approach involves a very small team, low budget and minimal time on
small-scale projects. It is taken across a range of coding languages.
Methods of Implementation
There are many ways in which a new software solution can be implemented.
These methods are:
Direct – the new software takes over from the old software solution from a
particular date onwards
OLD NEW
Parallel – both new and old systems run at the same time. This is helpful in
many ways. If the new system has an error or flaw this can be picked up while the
old system is still running, therefore data is not lost. It can also see if the new
software solution is appropriate for the environment in which it is running. If the
new system is then to be used, the old system is directly removed and the new
system takes over, vice versa if the new system does not function properly or does
not meet the needs of the user
OLD
NEW
NEW
-6-
Pilot – a complete section of the environment or organisation is directly
converted to the new system to see if the new system works in the organisation. If
the new system is appropriate then the entire organisation is converted to the new
system
Outsourcing
Outsourcing is the process whereby a company needing software services
hires an outside organization to handle all or part of these services. The range of
activities performed includes regular maintenance of systems, modifying or
installing programs etc. Contracts can range from 1 to 10 years.
The reasons for outsourcing include:
New technology is readily available
Development time is faster
Gaining experts in the field
Cheaper
Higher quality results
Resources not available internally
Better response to change
The advantages of outsourcing include saving of money on as a result of
lower staff numbers and effective use of scarce technological assets.
Disadvantages include the difficulty in breaking unsatisfactory contracts; the
outsourced company may not understand the ethos of the organization, and the
organization can loss control of the system and be unable to fix any minor
problems.
Popular approaches
Increased ability for EUD
Editors and compilers for ‘non-programmers’ to generate simple
programs and websites
Greater distribution of code libraries
Use of hypermedia – the use of multimedia in which a user can browse a
program at their whim
Popular languages
3GL-5GL languages
BASIC/QB/VB
C/C++
Prolog
SQL
Java
Cobol
Employment trends
Employment in the software development field has been increasing over the
last few years since the .com crash. This comes about due to the increase of the
-7-
use in computer technology in many other areas, rather than just the creation of
computers. Science and medical fields are increasingly requiring processor
technology, increasing the number of jobs available.
The jobs available also have changed where many programmers work on
short contracts with companies, or as consultants. More skilled jobs, and
management positions are looking for higher education graduates, simply for the
training and skills they have.
Networking
Networks in work places are becoming increasingly abundant, so software
developers have developed ways to cope which such systems. These include the
development of operating systems specifically run networks or have the inbuilt
capability to provide small networks with adequate security. Also application
software has been developed to cope with networks and the use of many
peripheral devices.
-8-
The Software Development Cycle
Defining and Understanding the problem
The software
development cycles first
step is to define the
problem that the software
needs to be solved. This
stage of the cycle involves
being able to understand
the software being
developed such that the end product is:
Needs
A need is anything that is a necessity for the program. This can include
output being shown as two decimal places, or the requirements of the user to
operate the program for extended periods without suffering strain or injury. They
are different to Preferences of the user, which are elements of the program that
the user would rather work with. Needs are based around the health and safety of
the computer user and are essential to the operation of the program
Screen Design
Aspects of screen design include the layout of the screen including fields,
button and menu layout. Colour design and aesthetics are also an important issue.
Other aspects of screen design are appropriate and concise messages providing
useful feedback for the user that does not use technical language beyond the
capabilities of the user. The message should also not blame the user for the error.
Also appropriate icons and images for shortcut menus or actions should match the
outcome of the programming
Objectives
The objectives of the program are the aims and outcomes, which the
program must achieve. All objectives should meet the needs of the user. Objectives
must
Meet social and ethical issues
Use appropriate methods of information display
Providing adequate input and output methods
Use of relevant data types for information display
-9-
Providing clear and understandable methods of navigation between
screens
Boundaries
The boundaries are the limits or borders in which the program can operate.
The borders are determined by what is feasible for the program and what the
needs of the users are. The boundaries of the program are also determined by the
hardware restrictions the program needs to run on. For example if the program
runs over a network. On home computers or on high powered operating systems
Feasibility
Feasibility determines whether the
problem is worth solving and whether a
software solution can be adequately
developed and fit into the above criteria.
There are two issues that must be
considered. Can the program actually be
developed, and is it worth proceeding
with the program depending on the
requirements of creating it. The specific
issues in feasibility are:
Constraints – these are any
restrictions or limitations
placed on the production of the
software such as money and
time
Budgetary feasibility – this
determines wether or not the
program can be designed, built
and put into practice within the budgetary constraints of the project
Operational feasibility – this refers to the skills and resources
needed to create the program and maintain it. If the program requires a
greater range of skills and resources than can be gathered, the program
cannot be built. This skills and resources also refer to those of the user.
This asks whether the user has the skills, time, money and resources to
firstly run the program, and then maintain it.
Technical feasibility – the availability of hardware and software for
the product. Can the program run on the software that the intended users
have without having major problems
Scheduling feasibility – refers to the time constraints of the
development of the program. This is determined by when the program
must be released, or depending on how much money the project has, the
cost of employing the programmers, installations and other aspects may
constrain how long these people can be employed for, and therefore how
long the program can have for it to be constructed
Possible alternatives – this looks at the other options available to
solve the problem. This could help in the saving of time, money and effort
to make the development of the program easier and quicker. However,
each of the other available options must be studied and advantages and
disadvantages, to determine whether this program is a better choice than
the one currently being studied
- 10 -
While all of these are areas of feasibility, there are four main areas of
feasibility. These areas are Budgetary, Operational, Technical and Scheduling
feasibility
Design Specifications
Design specifications involve that data types, data structures, the types of
algorithms to be used, and other aspects of software design such as the physical
representation of the programs over algorithm are needed to be considered when
understanding and defining the program. See the Programming Elements notes for
more information on this section.
Data types
There is a range of data types that include
Data Type Characteristics Example/s
Integer Positive or negative whole number -23475
Floating Real or decimal number 45.994
point
Character Any letter, number, command, $^&*
punctuation or symbol
String Sequence of characters with a single Hello
identity World!
Boolean Variable with one of two possible outputs True or
False
- 11 -
Data structures
There are four types of data structures
Data Characteristics
Structure
Array Variables of the same type stored in sequential memory
locations
Record Set of related fields storing data of different types
Array of Set of related records stored as one entity
Records
File Set of related data items of various types stored as one entity
eg sequential files
Algorithms
There are three types of algorithms that can be used:
Sequence – a logical order of commands
Selection – the carrying out of commands based of a choice
Repetition (iteration) – the continual carrying out of commands until a
criteria is met
Data validation
This involves the checking of data to see if it is the correct type and meets
any restrictions imposed by the program. There are two types of checks:
Reasonableness check – to check the input against the data type
Range check – to check the input data against the boundaries of the data
type. The makes sure no limitations of calculations, output etc. are
exceeded
Modelling
A system is a collection of interacting parts working together to achieve a
particular task. Such aspects include, coding, hardware, procedures, raw data and
personal. All these actions can be modelled in different ways
- 12 -
IPO (Input-Process-Output) Diagrams
Shows the connection between any input, the process to be carried and the
output achieved
Story Boards
Shows the designs of the screen of the program and the link between them.
They can be linear or non-linear
Context diagrams
Data flow
System Flowchart
Is a diagrammatic way of representing the flow of both data and logic
through a system. This is the primary tool for documenting systems. There are
many different symbols that can be used, but below are the main ones
Input/Outp Manual
ut Operation
Online
Decision
display
Online Telecommunica
Input tions link
- 13 -
Magnetic Tape
Process
Output
Structured diagrams
This models the hierarchy and sequence of processes to be carried out
Communication Issues
- 14 -
Planning and design of software solutions
Processing strings
BEGIN InsertNew(Start)
Index = start
counter = 0
last2 = number of items in arrayinsert – 1
WHILE index <= last2
Array(index) = arrayinsert(counter)
Increment counter
Increment index
END WHILE
Start = index //returns the value of start via the parameters
END InsertNew
- 15 -
BEGIN ReplaceString(Start)
Index = start
Last3 = number of items in array Temp – 1
Counter = 0
WHILE count <=last3
Array(index) = Temp(counter)
Increment index
Increment counter
END WHILE
END ReplaceString
- 16 -
Standard searching algorithms
Linear Search
BEGIN
First = 0
Last = number of items in array –1
Index = first
READ targetValue
WHILE index <= last
IF array(index) = targetValue THEN
**insert code depending on actions of finding value
END IF
Increment index
END WHILE
END
Binary Search
BEGIN BINARY SEARCH
REPEAT
IF Foundlt THEN
report PositionFound
ELSE
report Target not present'
ENDIF
- 17 -
Sorting Algorithms
Bubble Sort
BEGIN BUBBLE SORT
BEGININITIALISATION
set End to last position
END INITIALISATION
decrement End
ENDWHILE
END BUBBLE SORT
Selection Sort
BEGIN SELECTION SORT
INITIALISA TION
set EndUnsorted to last position
END INITIALISATION
Temp = PositionOfLargest
PositionOfLargest = EndUnsorted
EndUnsorted = Temp
decrement EndUnsorted
ENDWHILE
END SELECTION SORT
- 18 -
Insertion Sort
BEGIN INSERTION SORT
INITIALISA TION
set First to first position set Last to last position
set PositionOfNext to Last - 1
ENDINITIALISA TION
WHILE (Current < Last) AND (Next > data at (Current + 1))
increment Current
set data at (Current - 1) to data at Current
ENDWHILE
Selecting a language will have ramifications for the hardware required to run
the program. Some examples in how the language effect hardware include:
Amount of memory that is required for the program to run
The processor speed of the computer depending on the operations the
program is performing. Such as high speeds for graphics or design work
compared to lower speeds for word processing
The size of the hard drive which the computer has to store the necessary
data for the program on the machine
- 20 -
Data Dictionary
The data dictionary can be used to show the information and type of
variables or in showing the information in a database. An example of the data
dictionary is below. There are four fields that are Field Name, Data Type, Size and
Description
Field Data Size Description
Name Type
User String 8 Stores the user name of the user
Name
Password String 8 Stores the password of the user
Administr Boolean 3 Stores whether the person is an
ator administrator or not
Audience identification
The interface also depends upon the audience who will use the program.
Factors include
Age
Level of expertise
Language level (use of jargon)
Disabilities
Level of human interaction
Consistency in approach
At all times the interface must be consistence within the program. This
includes adhering to traditional methods of use and design, such as Command-S
and a disk icon for Save. Also consistency with colour, font, and background are
important
- 22 -
Meta Languages: Railroad Diagrams
The CPU also must deal with the instruction, which are given to it. The
instruction is given in machine code (object code). Each character in the code is
represented by a byte (a group of 8 bits). The Computer Word is the number of bits
that a can be processed at one time
The CPU operates on the commands that are sent to it. The CPU follows the
same process each time a new command is received. This process is called the
Fetch-Execute cycle. The cycle is outlined below
Fetch
The instruction is retrieved from the main memory.
The program counter register stores the memory address of the next
instruction to be carried out
Decode
The type of instruction to be carried out needs to be decoded
The Opcode is a set of binary digits which tell the CPU what process to carry
out
The two Operands are the data which needs to be processed
Execute
- 23 -
This stage carries out the instructions
Store
The stores the result of the instruction carried out in the accumulator.
The data in the accumulator is then copied to the RAM or registers
Levels of Testing
Complex solutions are tested at various levels before the final product is
released. These levels are explained below starting from the lowest of the three
levels and working upwards
Unit or module testing
Each module is tested separately to make sure it works correctly
This level uses both black and white box testing
- 26 -
Drivers can also be used at this stage to substitute for the mainline of the
program
Program testing
This testing ensures that the modules work well together and the mainline of
the program performs correctly. It can also use black and white box testing.
This testing can be done in two different ways
Bottom-up testing – incorporates each module into the program one step
at a time from the lowest modules to the higher level modules. This makes
it easier to detect lower level modules which conflict with other modules.
The main program is the last to be tested
Top down testing – this starts with the main program and uses stubs for
some modules as it links each module to the mainline. The main program
is tested first and each module in turn. Any problems are then likely to
occur with recent additions and can be rectified easily. This can be more
useful is libraries of common routines already exist
System testing
This stage is the checking of the system in environments outside the
development environment.
It can involve testing on different processors and different hardware types
It is often done by people outside the development team and is sometimes
called acceptance testing
Alpha testing is done where the program is tested under controlled situations
and conditions
Beta testing is the second stage and is conducted with volunteers and
conditions are open and not regulated. This testing will be wider for off-the-
shelf software compared to custom software
- 27 -
Evolution of Programming Languages
Historical reasons for the development of the different paradigms
Low-Level Languages
Low-level languages are the two earliest forms of languages for a computer.
There are two generations of low-level languages. These are 1GL and 2GL.
A 1GL is the most basic language used by a computer. The features of a 1GL
are:
Binary/Machine Code (1s and 0s)
Can be immediately decoded by a processor
Machine/processor specific
A 2GL language is slightly more advanced language than 1GL. It has some
simple commands that can be used and interpreted by programmes. The features
of a 2GL language are:
Assembler – used to translate the object code into machine code
Used symbolic words (mnemonics)- abstraction. (eg using LD to stand for
Load from register/memory etc…)
Machine/processor specific
Require some form of translator to convert simple words into machine code.
High-Level Languages
High-Level languages came later in history with one main difference. The
code syntax that was used was more like normal human language. A translator was
required to convert the object code into machine code. This was a major leap in
terms in the evolution of languages. However, from a technical point of view the
most significance difference between low and high level languages, was that high-
level languages are not processor specific. This means that the program can be run
on all different processor chips – ie Intel, AMD etc… The limitation of the language
is that they are operating system specific. There are three generations of high-level
languages, which are 3GL to 5GL
A 3GL language was the major leap in development from 2GL in terms of the
above information. The main aspects of a 3GL language are:
Commands and syntax structures are look much more like ‘normal’
language
Programming is easier as operations can be easier seen
Not processor specific – operating system specific
The level of operations is the same as 2GL, but the abilities the language
could perform were expanded because the program could be spanned
over multiple computers, thus incentive programs was increased. Also
since the language was easier to discern, more complex structures could
be created easier than before.
- 28 -
Examples of 3GL include – Visual Basic, Qbasic. COBOL, Pascal, C/C++,
FORTRAN
A 4GL language takes the abilities of a 3GL language further. The main
difference and advance of 4GL languages is that language focuses more on what
the program needs to accomplish rather than the process of how the program must
accomplish a task. Therefore the coding syntax is very similar to human speech
where the task the processor must accomplish is given to the processor, not where
how the processor must accomplish is given to the processor. A 4GL is a non-
procedural language. These languages are also generally written to solve a
particular problem, or perform a particular task such as a database program, or
printer descriptions.
4GL simply the development of programs for the end user. This is because
the end user does not need to have an advanced understanding of a programming
language to be able to customise the application. The features of 4GL languages
are:
Concentrates on What rather than How
Task specific – these languages are created to carry out one specific role.
Eg SQL is solely used for working with databases. Postscript is specific to
sending data to a printer.
Still have some functions and arguments which the program carries out
Examples include LISP, SQL, Postscript, Hypertalk
- 29 -
As greater and more complex problems arose, and with the development of
GUI’s, the ability of the computer to handle multiple tasks and figure tasks out for
itself became an issue. The ability of the computer was hampered where the
programmer had to describe and instruct the computer how to carry out each
individual task.
The fourth and fifth generation languages that are non-procedural solved this
problem. In other words, in these languages the programmer only gives the
computer the data and gives a description of the end result. The computer figures
out which steps are required to meet the result. This gives the program more
flexibility in operation, and also enables the programs not to have a defined
sequence of instructions. Non-procedural languages rely on logic and inference to
achieve a result.
In a way, by allowing the computer to calculate the operation required,
primitive forms of artificial intelligence are used.
Emerging technologies
Even though the high level languages are non-procedural, in the end the
object code must be translated into sequential machine code for the computer to
execute. Emerging technologies provide a hope for more efficient processing of
programs. These technologies are summarised below
Parallel processing/computing
This technology uses multiple processors that share out processing tasks.
This enables a set of instruction to be carried out quicker. However, only speed in
processing is gained since sequential machine code is still required to enable the
programs to run. Some of applications of parallel computing include
Real-time simulations – this includes the modelling of events that exists in the
real word in current time. This can be used to analyse the impacts of events
and find solution to them such as gaining insight into a volcanic eruption while
planning how to minimise the impact of it on humans
Neural networking – this is where computers are able to simulate the
workings of the human mind. Multiple processors are linked together each
containing their own memory storage. Each processor handles a specific type
of data. The computer can be trained in how to respond to certain situations.
This has also enabled research into computer learning and AI
- 30 -
Quantum processing
This is hopefully being used to overcome many of the sequential machine
code issues. It relies heavily on the quantum theory atomic model, where electron,
protons and photons would represent the 1s and 0s of the computer. Also since
each atom can exist in many quantum states, it is hoped that these computers
would efficiently be able to handle parallel computing.
- 31 -
Imperative paradigm – Variables and control structures
The basic building blocks of the imperative paradigm are variables and
control structures. Since the imperative structure uses a sequential flow of data,
data is handled using variables and assignment statements. Since choices often
need to be made, the imperative paradigm also incorporates three control
structures; selection, repetition and subprograms
Identifiers are also used. These are descriptive names given for a location in
the computer’s memory
Approach to testing
Testing of a program is often a long, exhausting and costly period in software
development, and often the market forces reduce the amount of testing that can be
- 32 -
accomplished. Therefore, programming languages which reduce the amount of
testing which is required and also suits the purpose of the testing influences the
choice of language and the productivity of the programmer. The main types of
testing are explained below
Structured testing – each algorithm, unit or module if tested as the program
code is written. This helps reduce the amount of errors which occur within the
system as a whole
Program testing – testing of the product is left until the product is completed.
It may reduce the amount of testing required, but also can increase costs and
often results in poor quality programs with many bugs
Automated testing – the use of CASE tools, which is expensive but can also
prevent many bugs being carried forward further into development.
Each of the different paradigms effect the testing required and these effects
are outlined below
Functional – likelihood of syntax errors is minimal since the syntax is simple. It
is often easier for programmers to find and fix errors
Object-orientated – modules can be tested independently by using drivers. It is
simpler to test small portions of the code first
Imperative – have a logical structure and subprograms are usually tested
independently
Logical – involve less code and therefore there is less code to test and
maintain
Effect on maintenance
Proponents of Prolog say the since it is logical maintenance is reduced.
Modular programs are simpler to maintain since when problems occurs only
the specific modules need to be altered, and not the entire program
- 33 -
Logical – it can be easier to teach a logical program to a beginner than a
trained programmer. Logical programming required logical reasoning and is
based on mathematical principles. Since the semantics of the program are
easier to understand, beginners can often find this paradigm easier to use
Object-oriented – they mimic they way people think by classifying items into
separate objects
Logic paradigm
The following concepts are specific to the logic paradigm
Heuristics
Are a ‘rule of thumb’
A general principle for deciding a course of action
Uses Fuzzy logic that enables decision to be made according to the
probability of the decision being true. It enables AI systems to operate when
things are not always false or true
Goal
These are statements which the program will determine using the rules and
facts
The desired output
Inference Engine
Uses a knowledge base
A system of bringing relevant items of knowledge to bear on a particular
problem
Backward/forward chaining
Backward chaining starts with a goal and works backwards to try and prove
and validity of each statement in the goal.
Working backwards to prove a goal true or false
Forward chaining starts with the facts and then reaches a goal
Object-Orientated paradigm
The following concepts are specific to the object-orientated paradigm
Inheritance
Objects that share many of the same properties are shared
Can be created from an ancestor
It often uses classes to define the properties which elements defined by the
class will then share. Each element of the class can be further defined and
carry other properties
This can reduce the complexity of a program as similar interfaces can be
commanded by shared controlling code
Encapsulation
It is the process of including all the attributions and procedures that an
object needs within the object itself
For example this includes holding the scripts which are associated with
buttons, objects, forms and other elements in a program
ActiveX controls have this feature as the code contained by the control must
be included when it is imported into a program and used
Classes often use encapsulation
Methods
A piece of code which is exclusively associated with either a particular class
or object
- 34 -
Is consists of a set of statements which perform a particular action
It can also use parameters and can also output a result
Classes
A class of objects share some common characteristics and perform similar
procedures
A collection of types of encapsulated variables, methods and objects
It is a set of metadata, which is then used to, created and defines other
objects.
Abstraction
It involves representing a complex task in a simple or symbolic way
This can include the use of abstraction with data and methods
It allows the programmer to concentrate on the program structure
It allows the programmer to generalise rather than concentrate on the
specifics when creating a new method
Polymorphism
This is the idea of allowing the same segment of code to be used by different
classes
They can be encapsulated within a class of objects.
Functional paradigm
The concept for the functional paradigm is:
Function
Not restricted by the type of data that can be returned by the function
Can return a single element (atom) or an entire list
Suited to processing type of data used in AI
Use recursion
Modern functional languages allow the uses of variables and a range of data
structures
- 35 -