42
SOCIAL AND ETHICAL ISSUES Rights and responsibilities of software developers Software users have the right to reliable, high quality software, and in turn, are expected to use this software in a socially and ethically responsible manner. Software developers have the right to authorship of any intellectual property that they create. They have the right to be protected under copyright law against plagiarism and unlawful use of software. A code of conduct is a set of ethical standards for a particular industry. It involves: - confidentiality between developers and users - competence (developer indicates limits) - adherence to copyright laws - computer misuse (viruses, exploiting knowledge for personal gain) Software piracy and copyright concepts associated with piracy and copyright, including: Intellectual property is the personal ownership of creative ideas or works. Plagiarism is the theft of the ideas of another and claming them as your own. Shareware: trial version/can make copies/can distribute/no modification Public Domain: full version/can make copies/can distribute/can modify It is perfectly legal to make one copy of any commercial software you have purchased legally, for either back-up purposes or for research or study purposes (“fair dealing”). Copyright is legal protection of intellectual property against illegal copying. It is not necessary to apply for copyright – anything you create is automatically covered by it. Reverse engineering is the process of reading source code and then translating it into an algorithm, where it can be recoded in another programming language. It is illegal to do this unless the software is public domain, or you own the rights to the intellectual property. Decompilation is conversion to machine code to source code so it can be read and understood by developers. Licence conditions determine what can be done with software. Conditions vary between programs but they are usually included in both written and electronic forms with commercial programs. Often, developers will include a compulsory reading of the licence conditions before the program can be installed. Even without distinct licence conditions, basic copyright conditions still apply (no copying, decompilation, reverse engineering or modification). Network use software includes: - Centralised Software: Available as a single copy from a central server on a network. All machines that use it require a separate licence. 1

Rights and responsibilities of software developersweb1.muirfield-h.schools.nsw.edu.au/technology/resources/... · Web viewRights and responsibilities of software developers Software

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Rights and responsibilities of software developersweb1.muirfield-h.schools.nsw.edu.au/technology/resources/... · Web viewRights and responsibilities of software developers Software

SOCIAL AND ETHICAL ISSUESRights and responsibilities of software developers

Software users have the right to reliable, high quality software, and in turn, are expected to use this software in a socially and ethically responsible manner.

Software developers have the right to authorship of any intellectual property that they create. They have the right to be protected under copyright law against plagiarism and unlawful use of software.

A code of conduct is a set of ethical standards for a particular industry. It involves:

- confidentiality between developers and users- competence (developer indicates limits)- adherence to copyright laws- computer misuse (viruses, exploiting knowledge for personal gain)

Software piracy and copyrightconcepts associated with piracy and copyright, including:

Intellectual property is the personal ownership of creative ideas or works. Plagiarism is the theft of the ideas of another and claming them as your own. Shareware: trial version/can make copies/can distribute/no modification Public Domain: full version/can make copies/can distribute/can modify It is perfectly legal to make one copy of any commercial software you have

purchased legally, for either back-up purposes or for research or study purposes (“fair dealing”).

Copyright is legal protection of intellectual property against illegal copying. It is not necessary to apply for copyright – anything you create is automatically covered by it.

Reverse engineering is the process of reading source code and then translating it into an algorithm, where it can be recoded in another programming language. It is illegal to do this unless the software is public domain, or you own the rights to the intellectual property.

Decompilation is conversion to machine code to source code so it can be read and understood by developers.

Licence conditions determine what can be done with software. Conditions vary between programs but they are usually included in both written and electronic forms with commercial programs. Often, developers will include a compulsory reading of the licence conditions before the program can be installed. Even without distinct licence conditions, basic copyright conditions still apply (no copying, decompilation, reverse engineering or modification).

Network use software includes:- Centralised Software: Available as a single copy from a central server on

a network. All machines that use it require a separate licence.- Distributed Software: Available as individual copies on local machines.

Each machine requires a separate licence.

various national perspectives to software piracy and copyright laws Australia is part of international agreements that recognise copyright law. There

are many countries however, that are not a part of these agreements. Often, distribution of pirated software is common in these counties.

the relationship between copyright laws and software licence agreements Software licence agreements are contracts that protect the developer’s ownership

of their program. There are several different end user licence agreements:- Single-use Licences allow the purchaser to install one copy on one

computer.- Multi-use Licences allow the user to install copies of the software on

multiple computers.

1

Page 2: Rights and responsibilities of software developersweb1.muirfield-h.schools.nsw.edu.au/technology/resources/... · Web viewRights and responsibilities of software developers Software

- Network Licences are available for some software, but network use is generally negotiated separately between cases due to the variations in different networks.

The software marketmaintaining market position

Maintaining market position involves balancing several factors:- Product: Software being produced must satisfy the needs of the target

audience.- Place: It must be readily accessible to anyone who falls inside the target

audience, distributing through retail shops, the Internet, with other programs, etc.

- Promotions: People need to hear about the product, and includes advertising in its various forms (online, telemarketing, personal).

- Price: Software package must be appropriately priced to obtain maximum profit.

In order for software to be commercially viable, it must have an effect on the marketplace by emphasising unique capabilities and convincing consumers that there are no better or more effective alternatives. A SWOT analysis (Strengths, Weaknesses, Opportunities, Threats) may be carried out to ensure the product still remains viable.

the effect on the marketplace A market leader is a software program that is innovative and well established. A market challenger is a non-leader that makes an aggressive bid for market

position. Market followers do not produce innovative new products. Market nichers are specialists who focus on a small area of the software market. When a market leader produces a new product, it encourages competitors to

improve their product to retain market share. When market challengers or followers develops a new product as good as the market leader, it encourages the market leader to continually innovate.

Significant social and ethical issuesnational and international legal action resulting from software development

Only in recent years has the need for copyright protection for software been in dire need. When the Australian Copyright Act was written in 1968, computers were restricted to only those who could afford them. As a result, many of the legal structures relating to computer software have developed from court cases that have made rulings based on laws related to other forms of intellectual property. This has also been the case in other countries.

Sega vs Accolade: Accolade was denied permission to produce games for the Sega system, and thus could not make games without the secret codes needed to play them on the system. They reverse engineered Sega games to determine these codes then built these codes into their own games. Sega took Accolade to court for breach of copyright but lost, because it was ruled that Accolade had not stolen the creative works of Sega.

public issues, including: The Y2K problem stemmed from early years in computer development, and

allowed memory storage to be cut in half when it came to years (using 2 digits instead of 4). In the 1990’s, there was concern for many software applications still using 2-digit format. As it turned out, the effect was very minor, but highlights the need for software developers to consider the viability of a product in the future.

Viruses have become more of an issue since the spread of internet use throughout the world. The onus is on software developers to make sure their programs are clean of any viruses before making them available to users.

2

Page 3: Rights and responsibilities of software developersweb1.muirfield-h.schools.nsw.edu.au/technology/resources/... · Web viewRights and responsibilities of software developers Software

Reliance on software extends to many different parts of our life. Banks, transport, medical diagnosis, and many more technologies are used to control and look after people in society. The misuse or malfunction of technology can result in catastrophe.

APPLICATION OF SOFTWARE DEVELOPMENT APPROACHESSoftware development approachesapproaches used in commercial systems, including:

Structured Approach- Defining the problem involves attaining a thorough understanding of the

problem and then detailed documentation of the exact requirements to be met. Fixing problems at this stage is far more cost effective than doing so at a later stage.

- Planning the solution involves further understanding of the needs of the users and choosing the method(s) to solve the problem. Data needs to be collected to support decisions.

- Building the solution assumes all team members have a full understanding of the problem. The program is usually coded according to the algorithms.

- Checking the solution is a continuous part of the process. If after testing it is determined it meets the requirements, it will be implemented. Once it has been coded, it is necessary to check that it works correctly.

- Modifying the solution often occurs before or after the solution has been implemented because of bugs, efficiency issues, and changes in hardware of software. Generally changes made at this stage are expensive, and if they are major ones, the system analyst may decide it is best to start from scratch.

Prototyping Approach- Prototyping is generally shorter in length and of smaller scale than

structured. It involves the creation of a working model that is tested by users. It may eventually become the final product. It is often used for quick development, trial-and-error testing, and demonstration purposes. User feedback is a big advantage.

- Documentation of a prototype is crucial for future maintenance.- Information-Gathering Prototypes are designed to gather information

that can be used in other programs. It is never intended to be the final product.

- Evolutionary Prototypes become the full-working program. Used if it is decided that the defining and planning stages won’t provide sufficient understanding of the program requirements.

- If it preferable to use this method when projects are small-scale with a low budget, the main focus is on input and output, and improved communication with the end user is desired.

Rapid Application Development- RAD is any method that uses tools to quickly create a program for a user. It

lacks any formal stages, and often just involves adding modifications to existing software solutions to suit the user.

- RAD is usually implemented using object-orientated programming languages.

End-User Development- User adopts existing software tools to suit their needs. It also lacks any

formal stages, and is a good option for small-scale projects on a low budget.

3

Page 4: Rights and responsibilities of software developersweb1.muirfield-h.schools.nsw.edu.au/technology/resources/... · Web viewRights and responsibilities of software developers Software

- Usually created in a 4th generation programming environment (e.g. a database).

Method Advantages DisadvantagesStructured thoroughly tested

should meet exact requirements uses a range of experts

costly time consuming requires wide range of

different skillsPrototypin

g relatively fast development easy to modify and visualise end

product greater involvement of users

may be difficult to implement as a full working program

RAD relatively cheap uses existing code which has

probably been previously tested fast development time

may not meet exact requirements

copyright issues

End-User should meet exact requirements quick cheap

limited to simple projects

limitations of application

methods of implementation Implementation can be done in 4 different ways:

- Direct: New program immediately replaces old one. It is usually suited to small-scale implementations where large amounts of data do not need to be transferred. If the old system has failed, this method will most likely be necessary to use.

- Parallel: Old and new programs work together for a period of time, and the old program is slowly phased out. This method has the advantage in that if any errors are discovered in the new system, users can fall back on the old one.

- Phased: Different parts of the new program are gradually implemented until the new program takes over completely. This is ideal for large, complex systems where different subsystems of the program can operate independently of each other.

- Pilot: One section of the organization uses the new program until a decision is made to put the new program in place across the whole system.

The implementation method used will depend on a number of factors:- size of the organisation- program complexity- type of organisation (bank, hospital, etc)- tasks carried out- time available- user skill

4

Page 5: Rights and responsibilities of software developersweb1.muirfield-h.schools.nsw.edu.au/technology/resources/... · Web viewRights and responsibilities of software developers Software

current trends in software development, for example: Outsourcing is the process whereby a company needing software services hires

an outside organisation to handle all or part of these services. Outsourcing can range from development, modification, and installation of a single program, or the development, implementation, and continuing maintenance of a complete system.

Popular approaches to software development include:- increasing ability for end-user development- availability of editors that generate simple programs (e.g. FrontPage)- increasing use of hypermedia (text, graphics, audio, and video)- greater distribution of code libraries as part of development packages- authoring languages that guide the developer through the steps of creating

programs- object-oriented programming

Popular languages include:- The first and second generations of programming languages were

computer centred and were dependant on particular processors.- Third generation languages were task centred and include COBOL and

FORTRAN.- Fourth and fifth generation languages are human centred and include

Visual BASIC, C++, and Delphi. Technology has been a growth area for employment over the last decade and

there are still many jobs available. The types of job reflect some of the overall changes in the employment industry, as there are many short-term contracts and consultancies. Also, there are increasingly high educational requirements for those entering the industry. Skills and experience used to be a big factor, but not so much these days, especially in the high paying positions.

Networked software includes:- Networking operating systems that handle basic security and

communication tasks. They are often very complex and need to work with a wide variety of different hardware. As a result, they are almost always developed using a structured approach.

- Network applications are becoming increasingly more popular. They are written for use on centralised networks, involving the sharing of applications and files on a network.

Customised off-the-shelf packages are becoming increasingly popular, and as a result, becoming more widely available. They are a collection of different programs that handle a variety of different tasks (e.g. Microsoft Office).

use of CASE tools and their application in large systems development CASE tools are a range of programs that assist the developer with a number of

tasks during the development process. They need to be carefully selected according to the project.

5

Page 6: Rights and responsibilities of software developersweb1.muirfield-h.schools.nsw.edu.au/technology/resources/... · Web viewRights and responsibilities of software developers Software

Versioning allows for software development teams to track changes as they are made to a system. Old versions can be restored if necessary.

CASE tools are useful in the development of data dictionaries as they are able to collect and track data types through multiple modules and develop concise descriptions of each data type in a program.

CASE tools can be used to generate test data for complex programs; and this saves time.

There are a wide variety of available CASE tools to help with the documentation process like word processors, drawing programs, report templates, and Gantt chart programs.

DEFINING AND UNDERSTANDING THE PROBLEMDefining the problemidentifying the problem

Needs are necessary parts of a program. They are the functions that the user must have. To determine what is needed in a system being developed it is important to consult with the user or customer in order to clearly define the requirements of the system. Screen design elements are important aspects of meeting both needs and preferences.

Objectives are aims. Achieving the objectives will generally help meet the needs of the user.

Boundaries are limits. It is impossible for a program to do everything, and it’s useless to try. In order to develop a program, boundaries must be set which define what a program can and cannot do. Examples of boundary setting include:

- program functions- hardware restrictions- software restrictions- software compatibility- operating system restrictions

determining the feasibility of the solution Feasibility determines whether a problem is worth solving. Constraints are factors that will affect or inhibit the development of a solution.

An excellent idea may be impossible to create either because of technological or cost constraints. If it is predicted that the market return for the product does not exceed the cost of production, the idea will almost certainly be scrapped. Feasibility can be broken up into several smaller issues:

- Budgetary feasibility refers to developing the software within the cost allocated, including implementation and maintenance.

- Operational feasibility refers to whether the program will be usable by the target customers.

- Technical feasibility refers to the availability of hardware and/or software needed to complete and distribute the product. If users require new hardware or software to run the program, this will impact upon financial feasibility.

- Scheduling feasibility refers to time requirements, and whether the solution can be built within a time frame.

Possible alternatives look at all the other options available to solve the problem. Others may have already solved the same problem, or ones similar to it. If this is the case, it may well be worth purchasing the rights to an alternative

6

Page 7: Rights and responsibilities of software developersweb1.muirfield-h.schools.nsw.edu.au/technology/resources/... · Web viewRights and responsibilities of software developers Software

product and simply modifying it to suit the needs of the users. If a solution is not feasible, it may be worth exploring alternative solutions.

Social and ethical issues underlie all the above aspects of feasibility. Even if a program is completely feasible, it may still be ethically undesirable to continue. The effect of programs on other people’s lives, their work, and legal aspects need to be considered before proceeding.

- People’s lifestyle can be dramatically affected by the use of software (e.g. job redundancy, security issues, required expertise).

- Lastly, the program may be unethical to produce (e.g. viruses, or program that help develop better weapons).

Design specificationsthe developer’s perspective in consideration of:

Data types:- Character data types are any letter, number, or symbol. They are stored

as a sequence of bits, with each character equal to one byte.- Integer data types are any positive or negative whole numbers, including

zero. They are stored as two bytes.- Floating point data types are decimal numbers. They are represented

by a mantissa (e.g. in the number 2.567 the mantissa is 0.567) and an exponent (e.g. in the number 2.567 the exponent is 2). Decimal numbers are actually handled as fractions (e.g. 0.25 being equal to ¼). As a result, even common decimals (e.g. 0.1 or 1/10) cannot be represented entirely accurately in binary.

- Boolean data types are variables with two possible outputs. They can be represented in a number of different ways.

Data structures:- String data types are a sequence of characters with a single identity.

They are a sequence of characters that keep their identity as a single data element by use of bytes to mark the beginning and end of the string.

- Arrays are data structures in where a collection of data items of the same type are treated as a single unit. Each item is accessed by its position or index in the array. Dimensioning an array declares the variable name and sets aside required memory.

- Parallel arrays are two or more separate arrays where corresponding data elements refer to related data.

- Records are a collection of different data types called fields that are in some way related. There is no numeric order for accessing fields in a record. Fields are accessed by name.

- Arrays of records are a combination of records of the same type, and each record can be accessed by its index.

- Files can contain any data types, and allow data to be stored and accessed externally. Files are always accessed by name. First the file must be opened, data can be read or written to it, and then it must be closed.

Algorithms are a finite set of steps taken to solve a problem. They can be expressed in pseudocode or flowchart forms. Depending on the construct of the problem solution, different forms will be used. Common constructs include:

7

Page 8: Rights and responsibilities of software developersweb1.muirfield-h.schools.nsw.edu.au/technology/resources/... · Web viewRights and responsibilities of software developers Software

- Sequence: The basic structure of every algorithm, it is the logical order of steps that occur one after another.

- Selection: The choice that needs to be made between two or more options.

- Terminals: Used to clearly show the beginning and end of an algorithm.- Repetition: Used when a set of instructions needs to be carried out

repeatedly. There are two types of loop (repetition) used in algorithms. Pre-test loop: The criteria for the loop are tested before it can be executed. If the criteria is met, the loop terminates and the rest of the program runs. If it isn’t met, the body of the loop is executed until the criteria is satisfied. Post-test loop: The body of the loop is executed. The loop is then tested to see if the criteria are met. If it is met, the loop is terminated, and the rest of the program runs. If it isn’t met, the body of the loop is executed until the criteria is satisfied.

Variables are memory locations that store data that can be changed during execution. Declaration involves defining the variable name and data type. After being declared, the computer makes the required space available in memory. When a program refers to the variable, the computer reads or writes to the memory location.

the user’s perspective The software developers need to consult the user to ensure the task being solved

is clearly defined. The user looks at a system in a black-box perspective, where input should be acceptable and the output what they expect to see. Processing is not important. The user is concerned with:

- Appearance: The interface should be easily understood, with meaningful icons and text, in an easy to understand fashion. It should be easy to use.

- Functionality: The program should be able to carry out the required tasks, in a way that minimises user actions.

- Scope: The user should be immediately aware of the functions and limitations of a program.

Modellingrepresenting a system using diagrams, including:

A program can be modelled to show its structure. There are no single model techniques that are best. Different models show different views of a system, so it’s always best to use multiple models to make sure all views are covered.

IPO Charts/Diagrams: These show the input, process, and output of a system. IPO diagrams go further than IPO charts because they show the connection of a program to external systems, those that accept input and output from this particular system.

Storyboards: These give a general overview of the system.- Used to document the screens used, their order, and the flow between

them.- Emphasises interface rather than functions performed.- Easy to read.- Provide visual feedback.- Can be useful for planning the flow of information between modules.- The arrangement of modules or screens in a storyboard can be done in

simple linear progression, hierarchically where modules are arranged on descending levels, or as a network of modules that can be accessed directly from other modules.

- Shows logic, but not input, output, or repetition.- Need to be supplemented by extra information such as IPO charts.

8

Page 9: Rights and responsibilities of software developersweb1.muirfield-h.schools.nsw.edu.au/technology/resources/... · Web viewRights and responsibilities of software developers Software

Dataflow Diagrams: Represent to flow of data into and out of the system in terms of processes used. They represent systems as a number of processes that display the source of the data, its flow between processes and its destination, along with any data generated by the system.

System Flowcharts: Are a visual way of representing the flow of data and logic through a system. Lately, dataflow diagrams have replaced system flowcharts because they are much easier to follow, and the symbols do not go out of date.

Screen Designs: The screen is the interface between the user and the program. Sample screens may be developed to provide the user/customer with a clear idea of the final interface. A variety of designs should be developed allowing the user to choose between alternatives.

Limited Prototypes: The prototype design may include all or only parts of a system’s components. A prototype can be used as a small-scale model of the working program to demonstrate to users and customers to ensure their final program will meet their needs. Some reasons for using a prototype:

- If the user is unable to clearly understand the structure of the proposed solution or describe their specific needs, the prototype can provide the user with an incomplete program. The developer can then modify and add to the program as the user requirements become clearer.

- A “throw-away” prototype may be built to refine user requirements and validate needs, which is then discarded when the main program is built.

Communication issues, including:the need to empower the user

Consulting the user is one way to making the user feel as though they are in control of the project. Putting the user’s ideas into the design or clearly explaining why such ideas are not achievable also help to do this. However, merely explaining why they won’t work isn’t enough, the developer should offer alternatives and suggest other functions.

Satisfaction with the end product is decided by the user. If they are consulted continuously during the process, not only is there a larger chance they will be happy with the program, but they will have a greater understanding of the system too.

the need to acknowledge the user’s perspective The user should not be expected to understand technical jargon or the limitations

of various hardware and software. As long as the program is functional and meets their needs, nothing else matters. If some aspect of the design can make a task easier, then it should be considered.

enabling and accepting feedback All feedback should be encouraged during the definition of the problem, as it is

much cheaper to fix problems at this stage than at a later one. Surveys, questionnaires, interviews, and observation are all ways of gathering feedback. User reaction to prototypes helps the developer clarify needs.

9

Page 10: Rights and responsibilities of software developersweb1.muirfield-h.schools.nsw.edu.au/technology/resources/... · Web viewRights and responsibilities of software developers Software

10

Page 11: Rights and responsibilities of software developersweb1.muirfield-h.schools.nsw.edu.au/technology/resources/... · Web viewRights and responsibilities of software developers Software

PLANNING AND DESIGN OF SOFTWARE SOLUTIONSStandard algorithms for searching and sortingstandard logic used in software solutions, namely:

Finding maximum and minimum value in arrays is done by moving through each element in an array in a sequential manner and comparing the current element with the value currently though to be the maximum or minimum value. If the value is greater than the known maximum or less than the known minimum, it replaces the previous value. It is assumed the array is unsorted, otherwise the value could easily be located at the beginning or end.

Processing strings involves their manipulation, such as:- Extraction: Equivalent to copy; characters are duplicated for use in

another string.- Insertion: Equivalent to paste; where characters are inserted into a string.- Deletion: Equivalent to cut; where characters are completely removed

from a string.- Concatenation: Combining of strings.

File processing, including sentinel value refers to the storage an access of files, a collection of data stored in memory. After it has been opened, data can be read or written to the file. In order to open and read the file, the program must understand the data structure of the file, namely, if it is a sequential or random access file. Most files use sequential access, and these have what is known as a sentinel value. It is used to indicate the end of data in a file, and is commonly used as a condition ending a read file loop. Once the sentinel value is read, the

11

Page 12: Rights and responsibilities of software developersweb1.muirfield-h.schools.nsw.edu.au/technology/resources/... · Web viewRights and responsibilities of software developers Software

data stops being read. Common values are “ZZZ”, “999”, or the special EOF character.

Linear searches are the simplest but least efficient search method. It works by examining each data item one-by-one until a specific item is found, or the end of the data structure (or file) is reached, at which point it stops. They have the advantage of being able to search both sorted and unsorted data.

Binary searches are used to search data that has been sorted. It divides data into two parts and determines in which part the element is most likely to be found. The other part is discarded, and this process continues until the item is found or the data cannot be split any further. Binary searching uses random access, so a particular piece of data is accessed directly using an index, rather than sequentially searching the file.

Bubble sorts allow data to be sorted into ascending or descending order. It makes a comparison of two values (0 and 1) and each is sorted accordingly. Then the next two values (1 and 2) are compared and sorted in the same manner. After the each of the elements have been tested and compared to their neigbouring values, further passes are made to compare the values in their new positions. The end result is the data items are gradually sorted. Each time a swap takes place, a flag is used to indicate this. When a pass is made and no flags have been generated, the data is completely sorted. A temporary storage location is required to hold the data each time a swap takes place so data is not overwritten.

Insertions sorts declare a certain value to be sorted, and then in each pass each other data element is compared to it and moved to the left or right of it accordingly. Each pass refines the order, similar to bubble sorts. It can also sort in ascending and descending order. A temporary storage location is required to hold the data each time a swap takes place so data is not overwritten.

Selection sorts work by selecting the largest value in an array and moving it to the last position in the array. Each pass is made using a linear search to find the next largest value and it is put in second last place, and so on. Each time a single item is moved the number of items to be sorted decreases by one so the computer doesn’t constantly search though sorted items. It continues until there are no items left to sort. A temporary storage location is required to hold the data each time a swap takes place so data is not overwritten.

Custom-designed logic used in software solutionsrequirements to generate these include:

The identification of inputs, processes, and outputs can be described using an IPO chart to show the relationships between each.

Representation as an algorithm can occur in either pseudocode or flowchart form. The use of standard control structures helps make documentation clear and understandable. Once an algorithm has been developed, it often makes coding the program fairly straightforward.

Procedures are miniature programs that complete a single task. Functions are specialised programs that produce a single output.

Definition of required data structures involves the careful selection and understanding of data structures to be employed in the program. Data structures are the set of rules for storing and handling data. They are a combination of other data items such as data types or other data structures. Developing a data dictionary enables the programmer to determine the composition of the data that is to be used in the program.

Use of data structures will have a significant impact on the algorithm that will have to be used. The better the data is structured, the easier the algorithm will be. Data structures include:

12

Page 13: Rights and responsibilities of software developersweb1.muirfield-h.schools.nsw.edu.au/technology/resources/... · Web viewRights and responsibilities of software developers Software

- Multi-dimensional arrays are using for storing groups of values.- Arrays of records are useful for storing a variety of information for

different items.- Sequential and random files refer to the method of data processing.

When developing a file-handling program it is necessary to determine the type of file that will be used, so they can be accessed and written to accordingly. The choice between sequential file types or direct access file types will depend wholly on the type of program being made.

Use of random numbers to provide unpredictable data is a common feature in almost all programming languages.

Thorough testing of an algorithm concerns logically predicting the outcome under given conditions and verifying it is correct. Testing and correction of errors at the planning stage avoids costly and time-consuming errors at later stages. Testing is in integral part of every phase of the structured approach to software development.

Standard modules (library routines) used in software solutionsrequirements for generating or subsequent use include:

The identification of appropriate modules is important to ensure that programmers use the standard modules that will perform the task required. Programmers can create their own modules of code to perform a particular task, and they can be included in other programs in the future.

Consideration of local and global variables depends on the scope in which the variable needs to be used.

- Global variables are accessible anywhere in a program, including subprograms. They are usually declared at the start of a program.

- Local variables can only able to be accessed within the subprogram in which it is declared.

Appropriate use of parameters (data items whose values are passed from one section of a program to another) also needs to be considered to make sure the choice of modules is correct.

Appropriate testing using drivers are important in the later implementation and testing stages, as well as in the design of modules. Drivers are temporary sections of code created to test an individual procedure or module by calling it an executing it.

Thorough documentation is important as every programmer needs to understand the processes of a module if they are to successfully use and/or modify it. It should specify the inputs that must be passed to the module, and processing that occurs, and any output that is returned to other sections of the program.

Customisation of existing software solutionsidentification of relevant products

Applications are developed in a variety of programming languages. Some allow easy access to underlying code and thus can potentially be adapted for a specific purpose.

Programming language libraries often accompany a development package and allow for the integration of code modules into an existing application.

CASE tools provide computer-based support for the creation, development, and analysis of software designs.

customisation Customisation is the modification of an existing solution to fit the design

specifications for a different solution. Programmers need to determine the parts of the original program that are relevant to the new design criteria, and then modifying it so it fits that criteria. It helps when pre-developed software has been

13

Page 14: Rights and responsibilities of software developersweb1.muirfield-h.schools.nsw.edu.au/technology/resources/... · Web viewRights and responsibilities of software developers Software

previously tested to ensure fewer problems arise during the development of the new solution.

If necessary, programmers should seek to obtain permission from the original creators of the code to use it, and pay out any royalties that may be due.

cost effectiveness Customisation can save time and money but if the original program has inherent

problems or there are problems with modifications, these advantages can be easily lost. The customised package may also fail to meet to design specifications or require considerable time spent on modifications that it may just be better to start from scratch.

Documentation of the overall software solutiontools for representing a complex software solution include:

Algorithms provide a detailed description of the logic that is carried out in a program. They are used to describe the steps necessary to perform a task. However, they are not able to indicate the data that is manipulated by the program, or devices used by the system.

System flowcharts are a graphical means of representing the logic of a computer system. They also demonstrate the source and destination of data used by the system.

Structure diagrams are a method of representing the elements of a system in a hierarchal form. They are suited to top-down design because they break up the problem into much smaller parts.

- Modules are represented by boxes, and lines are used to show their connection.

- A small diamond at the intersection of lines represents a decision.- Repetition is shown with a circular arrow.- The first box is always a control module that provides the definition of a

system.- At each successive level, modules are refined into sub-modules, until the

lowest level, which contains specific individual tasks, is reached.- The main module passes control to each module when it is ready to do a

specific task. Upon completion of that task, the called module returns control to calling module.

- They show the movement of data between modules, with the hierarchal layout emphasising the relationships between modules.

- The order of execution of the modules is not made clear.- They emphasis the structure and functions of various modules without

showing the specific programming logic involved. They are not sufficient to represent a system, they must be accompanied by data flow diagrams and algorithms.

Data flow diagrams are useful for tracking the movement of data through a system. They graphically show the processing that occurs and indicate where data is stored.

Data dictionaries help programmers understand the data that will be used by a program. The data types and a description of the data items used by the program should be included.

Selection of language to be usedevent-driven software

Event-driven software is executed in an order dependant on the events detected. An event is an action that has been carried out by the user.

- Driven by the user: Even-driven programming empowers the user by allowing program execution to occur in an order determined by them.

- Program logic: During program execution, the computer is continuously polling (checking the status) of each of the devices connected to a

14

Page 15: Rights and responsibilities of software developersweb1.muirfield-h.schools.nsw.edu.au/technology/resources/... · Web viewRights and responsibilities of software developers Software

system. An event-driven system will act upon the event detected during this polling process. Event-parsing is the process of executing modules depending on the event that has been detected.

sequential approach In a sequential program, instructions are carried out in a linear fashion. The

commands are executed one after the other until the final process is reached. Each task is carried out in the order specified by the programmer.

relevant language features Each language has strengths, weaknesses and specific attributes that enable

users to interact with the program in different ways. The choice of a language depends on a number of factors, but none more so than the nature of the problem to be solved.

Execution speed, sophistication level, supported data structures, and many other factors will influence the decision on the language that will be used. No one language is suited to every application.

hardware ramifications The language selected to develop a program will be influenced by the type of

hardware used to run it. All commonly used computers are based on the “von Neumann” architecture, so most programs are built to conform to these processes.

Other things, such as available memory, processor speed, and peripherals will also affect program execution. It is important that programmers develop software using a method that will be most beneficial to the user.

Graphical User Interface (GUI) The type of interface required for the program will also be a factor in the choice of

programming language. If there is a need for little user interface, then a program such as Visual BASIC probably isn’t the best choice. Different solutions will require different amounts of user interaction, and the GUI capabilities of some languages will make them more desirable than others.

IMPLEMENTATION OF SOFTWARE SOLUTIONSInterface design in software solutionsthe design of individual screens, including:

The design of individual screens must consider the needs, experience, and capabilities of users, so potential users should be involved in the design process. Good screen design is simple and reduces the probability of errors.

Identification of data required is a good start for screen design. Sound, graphics, text, etc all require different data handling techniques and methods of

15

Page 16: Rights and responsibilities of software developersweb1.muirfield-h.schools.nsw.edu.au/technology/resources/... · Web viewRights and responsibilities of software developers Software

access. Once the data is identified it will be easier to determine the programming approach to use: sequential or event-driven.

Current popular approaches will often determine what interface design is used. The structure of the interface will already be set to some extent, as it is good practice to continue the standards set by previous developers. This will minimise the learning curve for users, and result in fewer errors. Some designs aspects to take into consideration are:

- windows and their placement- fonts- graphics- menus (pull-down)- icons- text- navigational elements- dialog boxes

Design of help screens is critical. They have two roles, one to supply help when a problem arises, or just as a source of general information. The design of help screens needs to consider:

- non-intrusiveness- flexible sizing- consistent placement- easy navigation- simplicity (easy to use, and not overloaded with text – don’t overwhelm

users) There are different kinds of help screens, such as:

- Context help screens for help with a specific problem at particular times.- Browser help screens provide access to a range of help, and have search

features.- Procedural help screens take the user sequentially through steps to do

something.- Tutorials teach the user how to use them program.- Error messages are system responses rather than help screens, and

should identify the problem in a non-threatening way and give the user feedback on how to solve it.

Audience identification is an important factor in the design of the user interface. Age and expertise need to be identified, so that language, text, and graphics can be employed in an appropriate manner. Furthermore, the more general the program and its users, the more help will be needed.

Consistency in approach is important. Any time spent learning new things needs to be outweighed by benefits gained by using the new program. Consistency extends to:

- placement of repeated items- user interface- fonts- colour- keyboard shortcuts

Language syntax required for software solutionsuse of BNF, EBNF and railroad diagrams to describe the syntax of new statements in the chosen language

16

Page 17: Rights and responsibilities of software developersweb1.muirfield-h.schools.nsw.edu.au/technology/resources/... · Web viewRights and responsibilities of software developers Software

The syntax of a language refers to the rules that determine whether a statement is legal so it can be executed. A language often contains strings of characters called reserved words. They are inbuilt functions so cannot be used as variable names or for any other purpose they weren’t designed for.

Semantics refers to meaning of individual statements such as strings. Identifiers are labels or names given to elements in a program by the programmer in order to identify them.

An operation is a process applied to a data element. Operands are the items being operated on. Operators are the functions that are used to carry out the operation. They can be mathematical (symbols), relational (Boolean), or logical (AND, OR, NOT).

Metalanguages provide the best way of defining the structures common to all languages. They can be divided up in the text-based descriptions of BNF and EBNF, and the graphic-based descriptions of syntax used by railroad diagrams.

Non-terminal symbols can be broken down into smaller syntactic units. Terminal symbols are fixed elements of the language and cannot be broken down into smaller syntactic units.

Backus-Naur Form (BNF) is a form of syntax description.- Non-terminal elements are enclosed within < and > symbols.- Terminal elements are not enclosed.- The symbols “::=” stands for “is defined as”.- The vertical bar “|” separates alternatives.- Repetition is indicated by recursion, where a process calls itself.- Optional elements can only be indicated by showing all possibilities.

Extended Backus-Naur Form (EBNF) is the modified version of BNF.- It is an extended format where “=” stands for “is defined as”.- Optional elements are enclosed with square brackets [ ].- Parentheses ( ) are used to group elements.- Recursion was replaced with braces { } to indicate the enclosed items may

be repeated.- Alternatives are again separates by the vertical line “|”.- If an items has to be repeated one or more times then this must be

stipulated by writing once prior to the repetition. Railroad diagrams are also known as syntax structure diagrams, and a

method of graphically representing the syntax of language. They generally go from left to right.

- Rectangles are used to enclose non-terminal elements.- Circles, ovals, or rounded rectangles are used to enclose terminal symbols,

and are often called literals, because they are exactly as they appear.- Selection is represented by branches that break off from the mainline then

rejoin at a single point. Only one of the alternative paths may be followed. - Repetition is represented using flowlines that loop back to a prior point on

a diagram. Repetitions that are optional (zero of more iterations) should have no elements on the mainline, and only on the loop branch. Those with at least one iteration should have their element on the mainline.

The role of the CPU in the operation of software

17

Page 18: Rights and responsibilities of software developersweb1.muirfield-h.schools.nsw.edu.au/technology/resources/... · Web viewRights and responsibilities of software developers Software

machine code and CPU operation Machine code is handled by the CPU during the fetch-execute cycle. Machine

code, also called object code, is simply a string of bits. The string contains both instructions and data, and it tells the processor how and what to process.

The instruction format differs from computer to computer, but they are always more than one byte long. Faster computers use more bytes. Generally, they are composed of two parts: the opcode (operation code) and the memory address. The opcode contains one instruction for the computer to perform. The control unit interprets the opcode on the instruction to determine the appropriate action to take.

A register is a temporary storage location that is able to hold one instruction. A register is made up of a group of flip flops. The buffer register holds data while the correct switches are being set within the CPU. Anything going into or out of the memory unit passes through the buffer register.

The accumulator is one of the registers in the CPU. It stores data that is about to be used in a computation, or the results of a computation.

The program counter is a register that is part of the computer’s CPU. It stores the address of the next instruction to be executed. Instructions are stored sequentially unless part of the instruction is to change the value in the program counter.

The fetch-execute cycle is continuously performed by the CPU. The processor fetches an instruction from memory. The control unit then decodes the instruction to determine what action should be taken, according the instruction set built into the computer’s ROM. This action is then executed by the ALU. The results are then stored in memory.

The addresses of called routines are accessed sequentially unless the instruction is to jump to another part of the program.

During the execution of a program, the mainline may call upon subprograms to perform specific tasks. These can be:

- written by the programmer and part of the program- part of a development library- built into the operating system

A linker is a system utility program that calls up compiled modules or other programs, integrating them with existing code to form a complete program.

DLL’s (dynamic link libraries) are common files used in modern programs to reduce the need for multiple subprograms. DLL’s can be called from many applications and all programs can use the same DLL.

Translation methods in software solutionsdifferent methods include:

A translator converts statements from one programming language to another. All programs have to be translated from source code to object code before they can be executed. A translator can only convert programs that have been written in a certain format, and will reject code that does not conform to the given rules.

Compilation takes the whole source program and translates it, producing a complete object program that can be executed at a later stage. The resulting object program is stored in binary and will be very fast to execute.

Incremental Compilation compiles each line of source code as it is entered and adds it to the object file. This gives it all the advantages of an interpreter in error-checking and still retains the execution speed of a compiler.

Interpretation is the simplest and fastest method, translating source code line-by-line. It is able to detect syntax errors, and uses up less storage because object code is not stored in main memory. However, it is also the least efficient, requiring each line of code to be translated as it is used.

the translation process

18

Page 19: Rights and responsibilities of software developersweb1.muirfield-h.schools.nsw.edu.au/technology/resources/... · Web viewRights and responsibilities of software developers Software

Lexical analysis uses the delimiters (characters that signify the end of a syntactic unit) in source code to break the program into single commands. Each character in the line is scanned and redundant information (remarks, spaces, indentations) is removed. Each group of characters is compared with a syntax dictionary until each element in the line (strings, operators, identifiers, reserved words) is identified, and each is labelled with a token.

Syntactic analysis is an examination of whether the identified elements (those assigned with a token) are combined together in a way that is legal according to the language syntax. The syntax of a language consists not only of rules to determine the elements of the language, but also the ways these elements interact.

Type-checking tests the validity and integrity of data types. Data structures are tested by a type-checker to ensure the operations performed on them are compatible with their type. Once the data structures have been checked, the identifier names and the memory addresses of the data are stored in a table. A loader is a program that manages the allocation of memory addresses so they do not interfere with other computer operations.

Production of object code is where the tokens are replaced by calls to machine language functions that are part of the operating system or stored in run-time libraries. These functions are called by linkers. A run-time library is a collection of program modules that can be called on to perform common tasks. If the program is being compiled, then the object code may be improved by using an optimiser, which removes redundant sections of code and speeds up execution.

advantages and disadvantages of each methodMethod Advantages Disadvantages

Compilation

secure, difficult to change after compilation

fast execution allows sharing of resources such as code

libraries to speed up execution and translation

recompile needed after modification

errors only appear during run-time

Incremental

Compilation

checks for errors fast execution speed only faulty code needs to be recompiled

interpreted code easily stolen

Translation

fast translation method checks for errors uses less storage

slow execution to retranslate code

code easily stolen

19

Page 20: Rights and responsibilities of software developersweb1.muirfield-h.schools.nsw.edu.au/technology/resources/... · Web viewRights and responsibilities of software developers Software

Program development techniques in software solutionsstructured approach to a complex solution, including:

The structured approach to software development involves planning a solution by stepwise refinement, the technique of solving an overall problem by breaking it up into smaller parts.

The use of modules of code is the preferred method of achieving a solution, as it allows a team to work on different parts at the one time. Each module can then be tested and debugged more easily.

Top-down design is the process whereby the problem is refined into smaller subprograms, and solved individually.

Bottom-up design, also called integration, involves a modular approach whereby the problem is solved by starting with the modules at the lowest level. They are then synthesised to form more complex modules until the solution is complete. Bottom-up methodology is suited to object-orientated and event-driven programming.

One disadvantage to bottom-up design is that the problem is not solved until the end, whereas with top-down design it is solved first and then gradually implement the modules. The choice of methodology will ultimately depend on the nature of the program.

Having one logical task per subroutine allows each task to be:- easily tested- reused- easily replaced or modified- easily understood during maintenance

It is usual to test individual modules rather than wait until the whole program is complete. This is known as incremental testing. However, it is not always possible to do this, as it may require data or calls from the mainline or other modules.

Stubs are particularly important in top-down design and testing, as they allow a section of code to be tested even though it relies on or has links to other modules. They are temporary subprograms containing little code, any may do nothing but provide data to other modules or display a message to say a module has been called.

Flags are usually Boolean values used to signal a change in status, allowing errors to be fixed.

The isolation of errors may be enhanced by program traces, setting break points, and “commenting out” sections of code. Commenting out lines of code means they will not be executed. This can be useful for skipping loops and information display screens. Commenting out a section of code with a known error and systematically restoring it can be used to find the error’s precise location.

Debugging output statements are temporary lines of code added to display the value of variables at strategic places. This allows errors to be identified by comparing actual values to expected values.

An elegant solution is one that is efficient with its use of resources and data structures.

Writing for subsequent maintenance involves thorough documentation and modularisation. Doing these things will save time and money during inevitable future maintenance.

20

Page 21: Rights and responsibilities of software developersweb1.muirfield-h.schools.nsw.edu.au/technology/resources/... · Web viewRights and responsibilities of software developers Software

the process of detecting and correcting errors, including: Syntax errors are illegal programming statements in particular languages. They are

picked up during translation. Logic errors are errors in the design or construction of a program resulting in

incorrect output. They are the most difficult to detect as they are syntactically correct and may not cause run-time errors.

Peer checking can be the comparison of the solution with similar solutions, or a review of the solution by another person. The peers can ask questions that the programmer may have overlooked or forgotten.

Desk checking can be used with algorithms, source code, and compiled applications. In desk checking, test data is used to compare actual results with expected results. If there is a discrepancy, an error has been detected. Using a structured walkthrough (pen and paper) to step through the code should find the error.

The use of expected output is vital in testing programs. When actual output is different from the expected output, there is an error somewhere.

Runtime errors occur as the object code is being executed; usually due to an error in the program’s logic.

- Arithmetic overflow occurs when a result is calculated, and cannot be correctly stored in memory. Floating point overflow occurs when the number of decimals is too larger, resulting in an error or inaccurate answers. Range overflow refers to integers that are too large to be stored in memory.

- Division by zero is an error caused by performing an undefined arithmetic operation.

- Accessing inappropriate memory locations such as trying to read a file that doesn’t exist, writing past the end of an array, or assigning values to variables of the wrong type.

the use of software debugging tools, including: Use of breakpoints is a simple way to temporarily or permanently stop program

execution part of the way through the code. Resetting variable contents is a simple way to check that a program is working

properly. For example, resetting the variable contents in a complicated mathematical calculation to simple values that are easily worked with.

Program traces allow the programmer to view progress of the program execution in detail, as the actual line of code that is being executed is displayed on-screen.

Single line stepping enables the programmer to see that each individual line in the source code is executed correctly. The values of variables can be traced and changes displayed. The flow of control can also be monitored.

21

Page 22: Rights and responsibilities of software developersweb1.muirfield-h.schools.nsw.edu.au/technology/resources/... · Web viewRights and responsibilities of software developers Software

Documentation of a software solutionforms of documentation, including:

A process diary is used to document program development. It is used to monitor progress of the new system and to record changes as they occur.

User documentation refers to the documentation created for users, and therefore should be written clearly and non-technically.

- User manuals present topics in a structured way that is easily followed. Screenshots should be used when possible.

- Reference manuals list all commands able to be used in alphabetical order, and how to use them.

- Installation guides describe the hardware and software requirements, and a tutorial on how to install the software.

- Troubleshooting guides aim to provide answers to common problems, and an explanation of error messages.

- Online documentation is available from within the program itself. It comes in the form of help files, wizards, templates, tutorials, and balloon text (tool tip text).

Self-documentation of code makes it easy to read and understand, and hence, debug and modify. Use of meaningful variable names, indentation, suitable spacing, and remarks are considered good coding practices.

Technical documentation allows the program to be modified or reconstructed if lost or corrupted. It is a detailed description of the system for programmers and analysts who are responsible from program maintenance.

- Source code and its inclusion enables programmers to read and understand the sequence of events carried out by the program without having to look at a computer screen. They can then desk check to modify problems, or develop applications that interface with it.

- Algorithms provide a clear description of the steps to be carried out to solve a problem. This simplifies the process of finding and understanding how modules of code work.

- Data dictionaries are used to derive the nature and form of input data. They list the name, data type, length, and a short description of each piece of input data.

- Systems documentation should provide a description of the operation of the program, including any subprograms. It consists of the design specifications report written during the defining stage as well as hardware and software configuration required for the program to run.

Documentation for subsequent maintenance allows the program to be easily modified in the future. A well-structured program with comprehensive internal and external documentation makes maintenance much simpler. Changes made during maintenance should also be documented for the same reason.

use of application software to assist in the documentation process and the use of CASE tools

Application software is used to structure and clearly present documentation, and include word processors, spreadsheet applications, and databases.

22

Page 23: Rights and responsibilities of software developersweb1.muirfield-h.schools.nsw.edu.au/technology/resources/... · Web viewRights and responsibilities of software developers Software

CASE tools also provide a range of tools for documentation, such as drawing programs, Gantt chart applications, data dictionary applications, and report templates. CASE tools often increase development productivity.

Hardware environment to enable implementation of the software solutionhardware requirements

Minimal configuration refers to the minimum hardware requirements for software to run efficiently. It should be specified on the packaging, and detail:

- computer type (e.g. Pentium)- amount of hard drive storage required- RAM used- operating system

Possible additional hardware such as increased memory and storage should not be overlooked by developers. They should assume users have the bare minimum (mouse, keyboard), unless the program is built for the use of specific peripherals. On the other hand, general applications should be able to respond to a wide range of hardware in case the user has a disability, or even just for simple tasks like printing. For this reason, software should clearly indicate and compulsory hardware requirements.

Drivers are small programs required to run tasks carried out by peripherals. Extensions are files that assist in the execution of some programs. Both act as an interface between the operating system and hardware devices. Operating systems come with a range of device drivers and extensions already installed; but it may be necessary to install driver software when new hardware is connected to a computer.

Emerging technologieshardware

Hardware development has exploded in the last few decades, with processing speeds doubling every 18 months according to “Moore’s Law”. PDAs and mobile phones are becoming portable computers, with a large range of functions.

Voice recognition, “smart appliances”, and nanotechnology are the future prospects for hardware development, meaning user interfaces may soon become a thing of the past.

software Software is continually being developed for increasingly more powerful systems,

extending functionality and incorporating more graphical elements. Software often grows faster than hardware can handle it, and therefore relies on

hardware becoming available before it can become widely used.

their effect on: Any technological advance has the potential for both positive and negative

impacts.- Human Environment: Pollution caused by computer waste, privacy

issues, greater dependency on computers.- Development Process: Popularisation of visual programming languages,

emergence of hand-held devices.

23

Page 24: Rights and responsibilities of software developersweb1.muirfield-h.schools.nsw.edu.au/technology/resources/... · Web viewRights and responsibilities of software developers Software

24

Page 25: Rights and responsibilities of software developersweb1.muirfield-h.schools.nsw.edu.au/technology/resources/... · Web viewRights and responsibilities of software developers Software

TESTING AND EVALUATION OF SOFTWARE SOLUTIONSTesting the software solutioncomparison of the solution with the original design specifications

The program must run in the correct manner, and it is crucial it runs in the manner that was outlined in the defining and planning stages, and that it has met design specifications.

generating relevant test data for complex solutions Test data is input used to ensure the correctness of an algorithm or program. It

should be created during the analysis and defining stages, and it generally encompasses the testing of:

- Legal and expected values: Used to demonstrate the solution produces the right output. Boundary values and those within this range, as well as critical values should be tested.

- Illegal but expected values: Caused by ignorance or typing errors, they need to tested and trapped so they don’t cause errors during run-time.

- Legal but unexpected values: Needed to test whether acceptable data in an incorrect format produces the right results.

levels of testing Test data must be sufficient to ensure the program is completely operational and

free from logic errors.- Unit or module testing is an effective means of testing complex solutions

too difficult to test as a whole. Testing is made easier when each module performs a simple task, and that the program itself is well structured. Modules can be tested as a black box where input and output are central concerns, or as a white box where processing is the only concern. A driver program may be developed to test modules by calling subprograms or supplying variable values.

- Program testing involves connecting modules to the main program and progressively testing the modules, mainline, and their interfaces continue to function as required. The user interface should also be tested at this time.

- System testing involves testing the program on a variety of computers with different operating environments (hardware, software, OS) to detect errors.

the use of live test data to test the complete solution: Live data is real data, supplied by the client, that will be used on the new system.

It is by using the new system as it is intended that bugs will often be detected. Larger file sizes may prove impossible or inefficient to open or write to, as

opposed to smaller files. Mix of transaction types refers to the sequence of data entry or functions, and

how this may affect processing. A variety of different approaches to using the program should be tested.

Response times should be tested under heavy loads and light loads. Delayed responses might require user feedback to indicate processing is occurring, or possible code modification to improve efficiency.

Volume data refers to the amount of data to be processed. A variety of data amounts needs to be tested to see how the program responds. Stress testing using large data volumes is a good way of checking program efficiency and robustness.

Interfaces between modules must be tested to ensure data is correctly transferred to the module, and also that data and control is transferred back to part of the program that called it. Interface tests ensure the correct number of

25

Page 26: Rights and responsibilities of software developersweb1.muirfield-h.schools.nsw.edu.au/technology/resources/... · Web viewRights and responsibilities of software developers Software

parameters is sent to and from the module and that the format (data type and order) is correct. They also detect conflicts between local and global variables.

Comparison with program test data involves the generation of test data to test the limits of a program that may not be tested under “normal” use.

benchmarking Benchmarking is used to test a program in relation to expected outcomes and in

comparison to similar products, or an established set of standards. It indicates the quality and performance expectations, and determines “real” improvements.

quality assurance Quality assurance is a set of procedures used to certify that a product meets

specific criteria with respect to quality and reliability. Quality control involves periodic inspections, reviews, and tests on the system, relating to:

- consistency- security- documentation- performance- recovery (from errors)- compatibility- reliability- stress resistance

In alpha testing, the client uses the system in a controlled environment to see if it meets requirements and records and problems, all under the watch of the programmer. Following this, the program may enter beta testing, where it is given to a number of potential users and used under normal working conditions, and they also detail any problems. After beta testing, it should be ready for acceptance.

Reporting on the testing processdocumentation of the test data and output produced and the use of CASE tools

A test specification or plan is often created before testing. Testers can then follow these stages to ensure all aspects have been well tested and documented:

- define procedures- plan procedures- implement tests- report tests- review procedures

Rather that randomly selecting values to test, a test data table should be created to show the test data, the result, and the reason for testing it.

A desk check table is used to document used test data, actual results from using it, and the expected results for comparison.

The use of CASE tools in testing and test documentation such as:- test data generators- data dictionary creators- source code analysers- simulators to mimic the roles of hardware or software that interact with the

program- test management software that provide a framework for testing and to

track results

26

Page 27: Rights and responsibilities of software developersweb1.muirfield-h.schools.nsw.edu.au/technology/resources/... · Web viewRights and responsibilities of software developers Software

communication with those for whom the solution has been developed, including: The testing process should never be carried out in isolation. Independent

testers are less likely to approach the program with preconceptions, helping them test things that may not normally be tested.

The software solution has been developed to meet the needs of a user; it is therefore essential to provide them with the opportunity to evaluate the solution.

Test results should be summarised for the user, enabling them to evaluate and discuss the functionality of the new system. If it does not meet the expected results, it may need to be redesigned. Test result should detail positive and negative results, such as:

- problems identified during testing- limitations- useful properties

A comparison with the original design specifications should address which parts meet original design specifications, and which do not. For the latter, the client should be advised why certain criteria have not been met. Alpha and beta testing (collectively called acceptance testing), allows the users to use the program and provide feedback, and hopefully approve it once testing concludes.

27

Page 28: Rights and responsibilities of software developersweb1.muirfield-h.schools.nsw.edu.au/technology/resources/... · Web viewRights and responsibilities of software developers Software

MAINTENANCE OF SOFTWARE SOLUTIONSModification of code to meet changed requirementsidentification of the reasons for change in code, macros and scripts

Maintenance may be carried out because of detected errors, changes in the program’s operating environment (hardware, software, or outside forces like new laws which affect a program’s functions), user interface upgrades, or because increased functionality if required by the user.

location of section to be altered After it has been determined that a change needs to be made, the programmer

must determine the section of code that needs to be altered to allow for the change. The provision of internal and external documentation makes this process much easier, as does program modularity.

determining changes to be made Once code requiring change has been identified, it is necessary to decide what

changes must be made, and how it will be done. Modifications should not disrupt the otherwise correct operation of program and cause further errors, though this is not always possible.

Modifications need to be prioritized according to urgency and the extent of changes taken into account. It may be necessary to skip modifications and rebuild the program from scratch.

If the problem isn’t urgent, releasing a patch to temporarily avoid the error rather than correct it may be considered.

implementing and testing solution Implementing the modifications is often a simple task. However, the testing

required needs to be just as rigorous as they were during the original testing stage.

Regression testing is the process of retesting a program to ensure that the changes made have not affected previously working parts of the program.

Documentation of changessource code, macro and script documentation

Source code, macro, and script documentation will involve internal documentation of modifications including comments and possibly changes to intrinsic naming within the code.

After modifying source code it will be necessary to reprint program listings of the sections that have been changed. This ensures that maintenance programmers have access to the most recent information and that they are aware of changes that have been carried out by others.

modification of associated hard copy documentation and online help Documentation should be accurate and up-to-date, reflecting the current

functionality of the program. Modifications that have little effect on user manuals and help documentation are

usually accompanied by a release note disclosing a description of the changes made, the date of the changes, and the version number.

User manuals and help files will require amendment if the changes significantly affect functionality. For small changes, a brief addendum may be produced for users to add to their documentation. Large changes may require the reprinting of user, technical, and help manuals, as well as updated online documentation.

use of CASE tools to monitor changes and versions

28

Page 29: Rights and responsibilities of software developersweb1.muirfield-h.schools.nsw.edu.au/technology/resources/... · Web viewRights and responsibilities of software developers Software

Versioning tools are often used in complex programs to track changes made to a program. This means a new version can be created, while the old version can be archived for possible future access. Version numbers can be broken up into major, minor, and minimal changes.

THE SOFTWARE DEVELOPER’S VIEW OF THE HARDWARERepresentation of data within the computercharacter representation, namely:

ASCII (American Standard Code for Information Interchange) allows text data to be stored in binary form using 7 bits to encode a total of 128 characters. The “spare” bit is known as a parity bit when used for error-checking. Sorting ASCII in ascending order places uppercase letters before lowercase.

BCD (Binary Encoded Decimal) stores each digit using 4 bits. It is not sufficient for alphabet characters, as it can only represent 16 (24) characters, ten of which are decimals.

EBCDIC (Extended Binary Coded Decimal Interchange) uses 8 bits and thus 256 characters can be encoded.

Hexadecimal numbers are to the base 16, of values 0-9 and then A-F.

integer representation, including: Sign and modulus uses the leftmost bit to represent the sign of a number. 0 is

positive, while 1 is negative. The remaining bits give the magnitude or modulus of the number. There are two representations of zero using this method, positive 00000000 and negative 10000000.

Using one’s complement, all the zeros and ones in the positive form are reversed to represent its negative form, and thus the range extends from –128 to +127 (where 0 is positive) using an 8 bit system. There are two representations of zero using this method, positive 00000000 and negative 11111111.

Two’s complement can be found by adding 00000001 to the one’s complement of a number. There is only one representation of zero using this method, 00000000, as 11111111 + 1 is not allowable.

representation of fractions, namely floating point or real Floating point or real numbers are a method of representing fractions. They are

made up of a sign bit, an exponent (8 bits), and a mantissa (23 bits). IEEE 754 floating point standard is used in most computers.

Real numbers allow for a grater range of numbers to be represented, because they are able to take into account both positive and negative numbers. However, large numbers, or those with a large number of decimal places, may not be completely accurate because there is only a finite amount of space to store the number.

Problems with inaccuracy often as many decimal fractions cannot be represented as exact binary fractions. When the number of digits exceeds the space allocated for storage, it must be truncated, not rounded, to avoid and overflow error.

binary arithmetic, including: Addition is the basis of all arithmetic operations inside the computer. The rules

for binary addition are 0 + 0 = 0, 1 + 0 = 1, and 1 + 1 = 0 (where the 1 carries into the next position). If the number is outside the bit range, and overflow error results.

Subtraction is performed through complementary addition. Computers cannot carry out direct binary subtraction as they do not understand the concept of borrowing digits. Subtracting the number is the same as adding the negative value of the number (i.e. A + [-B]). Therefore the two’s complement of the number to be subtracted is taken and added to the other number.

Multiplication is carried out in the exact same way as long hand multiplication.

29

Page 30: Rights and responsibilities of software developersweb1.muirfield-h.schools.nsw.edu.au/technology/resources/... · Web viewRights and responsibilities of software developers Software

Division can be carried out using long division, using the shift and subtract technique. All binary arithmetic operations can be reduced to addition.

Electronic circuits to perform standard software operationslogic gates, including AND, OR, NOT, NAND, NOR, XOR

Logic gates are hardware circuits that produce a 1 or 0 output signal depending if the input requirements are satisfied. They are usually implemented in the computer using integrated circuits; a small silicon chip containing components such as resistors, diodes, transistors, and capacitors.

truth tables Truth tables are a compact way of showing the possible outputs from all possible

variations of inputs into a logic gate.

circuit design steps

30

Page 31: Rights and responsibilities of software developersweb1.muirfield-h.schools.nsw.edu.au/technology/resources/... · Web viewRights and responsibilities of software developers Software

Designing a circuit to perform a particular function requires a systematic procedure:1. Identify inputs and outputs: Determine the number of inputs and outputs

needed.2. Identify required components: Determine which logic gates are needed.3. Check the solution with a truth table: Test whether the solution works as

required.4. Evaluate the circuit design: Ensure circuit is efficient, and meets design

criteria.specialty circuits, including:

All circuits are made from a combination of the basic logic gates, and can be designed to perform addition, subtraction, and comparisons. As the number of inputs increases, circuits become more complex.

Combinational circuits produce instant output. Sequential circuits contain memory cells and logic gates, and the memory state

is determined by previous inputs. When two ones are added, the result consists of two digits, 10 (or in decimal form,

2). The higher bit is called a carry. A half adder is a combinational circuit made by combining the AND and XOR

gates allowing for the addition of two bits. It has two inputs (the two bits) and two outputs (Sum and Carry).

A full adder is a combinational circuit made by combining two half adders and introducing an OR gate. It has three inputs (the three bits) and two outputs (Sum and Carry). It has the advantage that it can accept a carry bit from a previous addition.

A flip flop is a circuit that can store a binary value (1 or 0) as long as power is supplied. When a value has been sent, it remains in this state until told to change. They can be made from a combination of NAND or NOR gates. They have two inputs, Set and Reset (S and R), and two outputs, Q and Q’.

Flip flops are the basic building blocks of computer memory. A flip flop requires prior output in order to have complete input. Hence, the flip

flop must establish an output somehow so it can be used to store a value. The following examples assume that the flip flop has no previous output.

NAND and NOR flip flops establish a state of 1 when one 0 input and one 1 input are sent into the Set and Reset. Sending in two 1 inputs gives no result, and it is

31

Page 32: Rights and responsibilities of software developersweb1.muirfield-h.schools.nsw.edu.au/technology/resources/... · Web viewRights and responsibilities of software developers Software

impossible to send in two 0 inputs. As a result, and output has been set up so that future input can determine what value is stored.

Programming of hardware devicesthe input data stream from sensor and other devices

For a computer to be able to communicate with other computers or input/output devices, data transmissions must be structured.

A protocol is a set of rules that govern the transmission of data between hardware.

A protocol must be established between two devices before they can exchange data. The computer needs to know how data is structured before it can be properly handled. The protocol used will determine the rules for structuring data packets; a group of binary digits containing data and control characters.

Data streams are composed of a header, data characters (including control characters), and a trailer.

Most interfaces between the CPU and the connected device require at least three transactions:

- the host controller sends a token packet to indicate the status of a device or the desire to transmit data

- the data is transmitted- the connected device or host will acknowledge the data was received

successfully Header information contains a sequence of bits to indicate the start of a block

of data, the device from whence the data is coming, and sometimes how much data is to be transmitted. They often contain error-checking data such as parity bits.

Data characters make up the body of data and contain the instructions that are to be processed by the CPU.

Trailer information contains data bits to indicate the end of a block of data. Headers and trailers help the CPU manage the data it receives. Data for error-checking may also be included in the trailer.

Control characters permit the checking and correct interpretation of the packet. Hardware specifications affect the input and data stream in that it will be

structured according the protocol followed by the developer. Driver or extension software may be required to enable an operating system to communicate with certain peripherals. A recent hardware standard for data handling is USB.

Documentation accompanying hardware devices should specify the protocols used and some details on the handling of data.

processing of data stream The need to recognise and strip control characters is that they are

instructions on how to handle data. After they are used they are no longer of any value. Protocols decide how the device does this.

Counting the data characters refers to the number and size of the data packets being sent. Header fields contain this data.

Extracting the data from the data stream involves removing the header, trailer, and control characters. The hardware extracts the data but the software provides instructions on how it will be handled.

32

Page 33: Rights and responsibilities of software developersweb1.muirfield-h.schools.nsw.edu.au/technology/resources/... · Web viewRights and responsibilities of software developers Software

generating output to an appropriate output device The output data stream functions in a similar way to the input data stream. In

this case, the CPU is the sending information to the connected device. Output data packets also require header information to specify the device, the

number and size of packets, and the type of data, and the trailer information has end of packet characters and error-checking methods. Some control characters will also be included.

control systems A computer-controlled system is a combination of hardware and software

designed to instruct the control of a specific device. They are composed of:- sensors (input)- a process controller (processing)- effectors and actuators (output)

The sensors provide the input to the system, the controller performs the processing and as a consequence directs the actuators to perform some physical task.

Responding to sensor information depends on the type of control system:- Open loop systems do not respond to their environment. A particular

input is processed to produce a specific output.- Closed loop systems are able to react to its environment and changes

within it. They take the output from the system and use it as feedback to control the behaviour of the system.

Sensors are used to record both analog and digital data. As computers can only interpret digital data, the signals need to be converted into digital pulses.

Specifying motor operations is done by a processor or software. It determines what actions are taken by the control system.

printer operation and control characters for features, including page throw, font change, line spacing Communication with printers requires the use of specialized control characters

to generate the correct printer responses. Many printers also use customised control characters to indicate page throw, font change, and line spacing.

specialist devices with digital input and/or output There are a large number of hardware devices that directly transmit digital data

to a computer system, such as digital cameras, MIDI, hard drives, and printers. It allows data to be transmitted faster, without errors or conversion losses.

33