teaching and learning pack CONTENTS

Section 1

/

Teacher/Lecturer Notes

Section 2

/

Students’ Notes

Section 3

/

Study Materials

Section 1:

Teacher/Lecturer Notes

Aim

This unit is designed to extend knowledge and understanding of the software development process and of a software development environment. It provides the opportunity to implement features of a software development environment, to use its facilities and to apply a systematic methodology to produce a software solution to a problem using an appropriate software development environment.

Status of this learning and teaching pack

These materials are for guidance only. The mandatory content of this unit is detailed in the unit specification of the Arrangements document.

Target audience

While entry is at the discretion of the centre, students would normally be expected to have attained one of the following (or equivalent experience):

  • Software Development (Int 2)
  • Computing course at Intermediate 2
  • Grade 1 or 2 at Standard Grade in Computing Studies.

Progression

This unit formalises the work of the Intermediate 2 Software Development Unit and allows the student to acquire greater depth of knowledge and understanding of the software development process. It requires the student to use the stages of the software development process to analyse, design and implement a solution for a problem which is more complex than he or she has hitherto attempted.

The unit leads directly to the more demanding work of the Computing Advanced Higher Software Development Unit.

Hardware and software requirements

These materials have been prepared so as to permit the use of a wide range of hardware platforms and software development systems. You should, however, make sure that your chosen software development environment supports all of the features listed in the Arrangements, outcome 2: complex conditionals; local variables; global variables; parameter passing by value; parameter passing by reference and one-dimensional arrays.

Sections 3 and 4 give examples of practical exercises coded in Pascal and BASIC respectively. It is expected that teachers/lecturers will adapt the materials of these sections to suit their preferred environment.

A bibliography of titles related to software development is included at the end of this section.

Learning and teaching approaches

The teaching materials are organised into four sections.

Section 1 deals with the stages of the software development process, that is, all of Outcome 1 except PC (d) which deals with the design of specific algorithms. It was felt that the design of the specific algorithms referred to in PC (d) integrated more easily into a study of the features of the programming language. This is dealt with in Section 2 which looks at control and data structures in general. Section 3 deals with the implementations of the whole range of algorithms examined in Section 2 in Pascal; Section 4 provides the same for BASIC.

It is anticipated that all students will study Section 1 and 2, and that students will then study either Section 3 or 4 depending on the environment chosen. Where a different language environment is selected, the implementations should be tailored to match.

Section 2 presents for analysis, discussion and practice a series of algorithms, each of which is numbered. The example implementations in Sections 3 and 4 adopt the same numbering system as Section 2. For example, Selection Algorithms Example 2 is implemented in Pascal in Section 3 as Implementing Control Structures - Selection Example 2.

The algorithms specifically mentioned in Outcome 1, PC (d) are introduced into Sections 2 and 3.

Where they are introduced as exercises, students are likely to have enough knowledge and skill to tackle the design of the algorithm themselves. Where they are introduced as examples, the algorithm is produced within the text for analysis and peer-group discussion. Should you wish to adopt a more direct teaching approach for these algorithms, they are attached in abstract form at the end of these notes.

Pathway through the unit

It is possible for students to use all sections as self-study materials. However, the materials will be enhanced if used as a resource supporting your exposition. You may choose to use the materials as provided; for example, students cover all the theory of software development and its environment, then implement the examples in the chosen language.

An alternative approach would be to study each of the chapters of Section 2 in turn, and then reinforce this learning by practical activity from Section 3 or 4. For example, students would study Selection Control Structures from Section 2 and then reinforce the theory by undertaking the corresponding practical work from Section 3 or 4.

If time and resources allow, it would also be beneficial if students were able to contrast the way language facilities from Section 2 were implemented in two different environments, using the corresponding examples from both the BASIC and Pascal implementations.

Bibliography

A Practical Handbook for Software Development

authors N D Birrell and M A Ould; Paperback; ISBN: 0521347920

Published: February 1988

Format: 272 pp pages; 246 x 189mm

UK Price: £19.95

There is also a Hardback available; ISBN: 0521254620

UK Price: £37.50

Cross Platform Software Development

author Anthony Glad, ISBN 0-442-01812-6, VNR (ITP), 335pp, [sterling]£30.00

Principles of Software Development

author Alan M Davis, ISBN 0 07 015840 1, McGraw-Hill, 240pp

The Healthy Software Project : A Guide to Successful Development and Management

authors Mark Norris, Peter Rigby, Malcolm Payne

Hardcover, 198 pages , List: $55.95 -- Amazon.com Price: $55.95

Published by John Wiley & Sons

Publication date: December 1,1993

Dimensions (in inches): 10.03 x 7.64 x .68

ISBN: 0471940429

This book contains actual case studies of real software development projects.

Dynamics of Software Development

author Jim McCarthy

Paperback, 184 pages. List: $24.95 -- Amazon.com Price: $22.46 --

Published by Microsoft Pr

Publication date: August 1995

Dimensions (in inches): 9.16 x 7.37 x .67

ISBN: 1556158238

Availability: This item usually shipped within 2-3 days.

Synopsis:

Shipping great software can be done, insists McCarthy, and charts, in five sections, the progress from initial design to successful product. McCarthy is a software industry veteran and the director of the Microsoft Visual C++ development group.

Managing Software Development Projects : Formula for Success

author Neal M. Whitten, 2nd Edition, Hardcover, 384 pages

List: $46.95 -- Amazon.com Price: $46.95

Published by John Wiley & Sons ; Publication date: May 1995

Dimensions (in inches): 9.58 x 7.71 x .96 ; ISBN: 047107683X

ALGORITHMS - Abstract Form for Direct Teaching Purposes

Input Validation

The input validation algorithm checks input data to see if its value lies within a certain range. If the value lies within the range, the data is accepted as valid. If not, the user is repeatedly prompted to enter the data again, until a suitable value has been entered. It is quite common for the user to ‘get it right’ at the first attempt. For this reason it is sensible to use a WHILE loop in the algorithm:

1 / Input validation:
1.1 / get data from user
1.2 / WHILE data value is outside permitted range
1.3 / prompt user to try again
1.4 / get data from user
1.5 / ENDWHILE

The statement 1.2, ‘WHILE data is outside permitted range’ involves a logical condition (or ‘complex condition’) such as:

WHILE (data < 5 OR data > 9 )

WHILE (name > ‘MacGregor’ OR name < ‘MacWilliam’ )

Linear Search

The linear search algorithm takes each item of a list in turn and compares its value with a known ‘target value’. If the two are the same, the procedure reports that a match has been found. It is useful also to report the position(s) of the match(es) in the list.

The linear search is used for lists of data which are in no known order. In this case, there is no more efficient way to conduct the search than simply to go through the list taking each item as it comes, using a loop structure. If the list is known in advance to be sorted, the much more efficient binary search method can be used instead.

1 / Linear search:
1.1 / get target value
1.2 / FOR each item in the list
1.3 / IF item value = target value THEN
1.4 / report that a match has been found
1.5 / report position of matching value in list
1.6 / ENDIF
1.7 / NEXT item in list

If the search reaches the end of the list without finding a match, it is useful to be able to report that no matches have been found. This can be done by using a ‘flag variable’ as follows:

1 / Linear search with ‘no match’ flag:
1.1 / get target value
1.2 / set ‘no match’ flag to TRUE
1.3 / FOR each item in the list
1.4 / IF item value = target value THEN
1.5 / report that a match has been found
1.6 / report position of matching value in list
1.7 / set ‘no match’ flag to FALSE
1.8 / ENDIF
1.9 / NEXT item in list
1.10 / IF ‘no match’ flag is still TRUE THEN
1.11 / report no match found
1.12 / ENDIF

Counting Occurrences (‘Looping and Counting’)

This algorithm uses a ‘counting variable’ together with a suitable loop to find out how many times some condition has been met. It can be used to find out, for example, how many data items are held in a data block, or how many words are in a text file, or how many matches have been found in a linear search, and so on. It may be suitable to use a fixed (FOR) loop, or a start-conditional (WHILE) loop, or an end-conditional (REPEAT) loop, depending on the circumstances. For example, if counting the number of full stops in a text file, it would be sensible to use a WHILE loop of the form:

WHILE NOT end-of-file …. ENDWHILE

It is difficult to give a general algorithm to count occurrences because the details will depend on what it is that is being counted, or on what condition must be met before the counting variable is to be updated. Here is a general algorithm followed by the more specific example of the ‘linear search with count of matches’:

1 / Counting occurrences:
1.1 / set ‘counter’ value to zero
1.2 / loop through the items to be counted
1.3 / IF the counting condition is met THEN
1.4 / add 1 to the ‘counter’
1.5 / ENDIF
1.6 / end loop
2 / Linear search with count of matches:
2.1 / get target value
2.2 / set ‘count of matches’ value to zero
2.3 / FOR each item in the list
2.4 / IF item value = target value THEN
2.5 / report that a match has been found
2.6 / report position of matching value in list
2.7 / add 1 to ‘count of matches’ value
2.8 / ENDIF
2.9 / NEXT item in list
2.10 / report ‘count of matches’ found

Notice that the ‘count of matches’ in the linear search may remain at zero in the case where no matches are found during the search.

Finding the maximum or the minimum

There is a completely general algorithm which can be used to find the largest or the smallest data item in a list. Assuming that the number of items in the list is known in advance, and that there is more than one item in it:

1 / Find the largest value in a list:
1.1 / set ‘largest so far’ to the value of the first item in the list
1.2 / FOR each of the remaining items in the list in turn
1.3 / IF item value > largest so far THEN
1.4 / set largest so far = item value
1.5 / ENDIF
1.6 / NEXT item in list
1.7 / report ‘largest so far’ as maximum of list

It is actually more useful to find not the value of the largest item in the list but the position of the largest item. If we know the position of the largest item, we also know its value since the list is indexed. Here is how to find the position of the largest item:

2 / Find the position of the largest value in a list:
2.1 / set ‘largest so far’ to the value of the first item in the list
2.2 / set ‘position of largest’ to 1 (or to the index number of the first item in the list)
2.3 / FOR each of the remaining items in the list in turn
2.4 / IF item value > largest so far THEN
2.5 / set largest so far = item value
2.6 / set position of largest = position of item
2.7 / ENDIF
2.8 / NEXT item in list
2.9 / report ‘position of largest’ as index number of largest item in list

Finding the minimum value in the list is almost exactly the same as finding the maximum value, except that the ‘greater than’ condition in 1.3 above becomes a ‘less than’:

1 / Find the smallest value in a list:
1.1 / set ‘smallest so far’ to the value of the first item in the list
1.2 / FOR each of the remaining items in the list in turn
1.3 / IF item value < smallest so far THEN
1.4 / set smallest so far = item value
1.5 / ENDIF
1.6 / NEXT item in list
1.7 / report ‘smallest so far’ as minimum of list

Section 2 Students’ notes

Higher Computing - The Software Development Unit

This unit is about the software development process - that is, the business of producing an item of computer software to meet a demand from a computer user. The unit introduces you to formal methods of systems analysis and design, and shows how the analysis and design principles are used to build the finished piece of software.

You should already have some experience in computer programming and software development, either from Standard Grade Computing Studies or from Computing Intermediate 2, Software Development Unit. The Higher Computing unit draws on this experience and extends it, so that by the end of this unit you will have followed the entire software development process through and gained a clear understanding of its principles.

Unit Outcomes

By the end of this unit, you will be able to:

  • explain aspects of the software development process (Outcome 1)
  • explain features of a software development environment (Outcome 2)
  • implement features and use facilities of a software development environment (Outcome 3)
  • produce a solution to a problem using a software development environment (Outcome 4).

Assessment

To gain the unit award, you will have to complete four assessments as follows:

Assessment 1 / Seven sets of questions on your knowledge and understanding of the ideas of Outcome 1.
Assessment 2 / Two design activities showing your understanding of certain algorithms from Outcome 1.
Assessment 3 / Four completed record sheets showing that you have used the features of a software development system in Outcome 3.
Assessment 4 / A project report, showing that you have applied the stages of the software development process to solve a specific problem.

You will attempt the assessments during the work of the unit. If you should fail an assessment on your first attempt, you will be able to try again after some more study on that part of the work.

The Study Materials

The study materials in this pack are split into three sections. The first section deals with the stages of the software development process and relates to Outcome 1. The second section is about software development systems and their facilities, and relates to Outcome 2. The third section is about the particular software development system which you will be using during the work of the unit, and will be very useful in your work for Outcomes 3 and 4.

Using the Study Materials

It would be possible to use all the sections as a self-study guide, so that you could work your way through them at your own pace and present yourself for assessment when you feel ready.

Your teacher/lecturer may prefer to present you with part of the materials, backed up by his or her explanations and supported by practical exercises, so as to prepare you for a particular assessment, for example. Then when you have completed that assessment you would go on to the next part of the unit.

It would be a good idea to try to apply what you have learned to a real problem, shortly after you have learned it. So, for example, you might have learned about the analysis stage of software development in the Study Materials Section 1. You could then work on the analysis stage of the project for assessment 4, to apply and reinforce the ideas that you have just learned.

Moving On

Success in this unit gives you part of the requirements for the Higher Computing course award. Gaining that qualification might lead to:

  • a place in the Advanced Higher Computing course
  • a place in a technical college or university in a computing or computer science diploma or degree course
  • a job as a trainee software developer or programmer with a computer company.

Section 3 StudY MATERIALS Section 3: Study Materials

Outcome 1

The Software Development Process

Teaching Resource PackSoftware Development: Outcome 1

/

Contents

/
/

Introduction

/

section 1

/

Systems Analysis - The Tools and Techniques

/

section 2

/

Systems Design

/

section 3

/

Implementation

/

section 4

/

Testing

/

section 5

/

Documentation

/

section 6

/

Evaluation

/

section 7

/

Maintenance

/
/

Explanation of Terms

/
/

Appendix A - Practical Activities Checklists

/
/

Appendix B - ‘How the body works’

/

Introduction

Have you ever wondered how the computerised systems that we use in our everyday lives came into existence? How did the idea of say, building an automated banking system with hole-in-the-wall cash dispensing, develop into the large and complex systems that we now take for granted? Or take the systems which regularly print your utility bills like gas, electricity, telephone. How did these come into existence? Or even the software packages that you use often in your lessons? How were they developed? Who was involved? What was their role in the creation of these systems?

This unit will take you through these questions and answer them with an introduction to The Software Development Process.

First Steps

Most creations start with an idea in someone’s head. Wouldn’t it be great if..., Is it possible to improve what we’re doing by...and so on... Sometimes groups of people are involved in ‘brainstorming’ these preliminary ideas. Ideas are not precise specifications of what the imagined system should do, nor of how it should be built. They are merely the first steps in the creation of a system.

Need

Computerised systems are developed, as are most creations and inventions, from perceived need, and a reckoning that certain advantages will arise. Consider the banking systems of today. What can we see as the benefits that computers may have brought to these businesses? What perceived advantages were in the minds of the corporate managers and directors who commissioned the construction of these systems, investing millions of pounds in the process? Perhaps they had been thinking along the lines of:

  • improving the efficiency of dispensing and depositing cash
  • a more flexible service for customers which provided 24 hour access to their accounts
  • giving more accurate and up to the minute reporting of transactions
  • expanding their customer base and the management of larger databases of information
  • reducing their staffing levels.