Section Three: Software development Flashcards

You may prefer our related Brainscape-certified flashcards:
1
Q

Chapter 11 – Systems analysis methods
Aspects of software development

A

Stages of analysis, design, implementation (which includes coding, testing and documentation), installation and evaluation are common to all projects, though they may not easily fall into these categories in some methodologies. The tasks performed at these stages in the old, traditional lifecycle methodology are briefly described below.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Chapter 11 – Systems analysis methods
Analysis

A

The requirements of the system that solves the problem must be established. In the case of a data processing system, or for example the construction of a website, this could cover:
- the data – its origin, uses, volumes and characteristics
- the procedures – what is done, where, when and how, and how errors and exceptions are handled
- the future – development plans and expected growth rates
- problems with any existing system

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Chapter 11 – Systems analysis methods
Design

A

Depending on the type of project, the systems designer may consider some or all of the following:

  • processing: the algorithms and appropriate modular structure for the solution, specifying modules with clear documented interfaces
  • data structures: how data will be held and how it will be accessed – for example in a dynamic data structure such as a queue or tree, or in a file or database
  • output: content, format, sequence, frequency, medium (e.g. screen or hard copy) etc.
  • input: volume, frequency, documents used, input methods
  • user interface: screens and dialogues, menus, special purpose requirements
  • security: how the data is to be kept secure from accidental corruption or deliberate tampering or hacking
  • hardware: selection of an appropriate configuration
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Chapter 11 – Systems analysis methods
Programming and testing

A

Programming normally involves breaking the problem down into individual modules and further breaking these down until each module performs a single well-defined task. The program code is then written in the chosen programming language.

Obviously a system must be thoroughly tested before being installed to make sure that all errors are discovered and corrected before going ‘live’. It is part of the designer’s job to come up with a test plan which will ensure that all parts of the system are properly tested.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Chapter 11 – Systems analysis methods
Black box testing (functional testing)

A

Black box testing is carried out independently of the code used in the program. It involves looking at the program specification and creating a set of test data that covers all the inputs and outputs and program functions.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Chapter 11 – Systems analysis methods
White box testing (structural testing)

A

White box testing is dependent on the code logic, and derives from the program structure rather than its function. The program code is studied and tests are devised which test each possible path at least once. The weakness of white box testing is that it will not detect missing functions – you cannot test what
isn’t there!

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Chapter 11 – Systems analysis methods
Alpha testing

A

Alpha testing is carried out by the software developer’s in house testing team. It is essential because it often reveals both errors and omissions in the system requirements definition. The user may discover that the system does not in fact have the required functionality because the requirements were not specified carefully enough, or because the developer has overlooked or misunderstood something in the specification.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Chapter 11 – Systems analysis methods
Beta testing

A

When a new package is being developed for release as a software package, beta testing is often used. This involves giving the package to a number of potential users who agree to use the system and report any problems to the developers. Microsoft, for example, delivers beta versions of its products to hundreds of sites for testing. This exposes the product to real use and detects problems and errors that may not have been anticipated by the developers. The product can then be modified and sent out for further beta testing until the developer is confident enough in the product to put it on the market.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Chapter 11 – Systems analysis methods
Implementation

A

Coding and testing will be carried out, errors traced and corrected. When all is thought to be satisfactory the software will be installed on the user’s system and more testing will be done. At this stage new weaknesses and omissions are almost bound to surface and more work will be carried out.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Chapter 11 – Systems analysis methods
Evaluation

A

The evaluation may include a post-implementation review, which is a critical examination of the system three to six months after it has been put into operation. This waiting period allows users and technical staff to learn how to use the system, get used to new ways of working and understand the new procedures required. It allows management a chance to evaluate the usefulness of the reports and on-line queries that they can make, and go through several ‘month-end’ periods when various routine reports will be produced. Shortcomings of the system, if there are any, will be becoming apparent at all levels of the organisation, and users will want a chance to air their views and discuss improvements. The solution should be evaluated on the basis of effectiveness, usability and maintainability.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Chapter 11 – Systems analysis methods
What will the post-implementation review will focus on?

A

The post-implementation review will focus on the following:
- a comparison of the system’s actual performance with the anticipated performance objectives
- an assessment of each aspect of the system against preset criteria
- errors which were made during system development
- unexpected benefits and problems

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Chapter 11 – Systems analysis methods
The waterfall lifecycle model

A

The Waterfall Model illustrates the methodology described above, in which each step is completed one at a time from beginning to end. Each step has specific outputs that lead into the next step. It is possible to return to a previous stage if necessary but the model shows that the developers then have to work back down through the following stages.

The user/customer is involved at the start of the process, in the Analysis stage, but then has little input until the Evaluation stage.

This model was adopted from the manufacturing industry, where changes to hardware made later in the project had high cost implications to work already completed so it was important to get each stage right before moving to the next. Although still popular, it has been now superseded by more effective models.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Chapter 11 – Systems analysis methods
Spiral model

A

The Spiral Model uses the same structured steps but introduces the idea of developing the software in iterative (repeating) stages. At the start of the process the requirements are defined and the developers work towards an initial prototype. Each successive loop around the spiral generates a refined prototype until the product is finished.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Chapter 11 – Systems analysis methods
What happens each time around the spiral?

A

Each time around the spiral the following activities are performed:
- Analyse the requirements for the next prototype
- Design the next version, the new prototype
- Implement (code and test) the new prototype
- Evaluate the new prototype, which generates a plan for the next iteration

The Spiral Model is mostly used for large scale projects, for example, projects that take years to deliver.
Smaller projects use a variation on this called the Agile Model

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Chapter 11 – Systems analysis methods
Agile modelling

A

At all the stages of analysis, design and implementation, an
agile approach may be adopted, as the stages of software development may not be completed in a linear sequence. It might be that some analysis is done and then some parts of a system are designed and implemented while other parts are still being analysed and then, for example, implementation and testing may be intermixed. The developer may then go back to design another aspect of the system.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Chapter 11 – Systems analysis methods
Tips for the success of the development

A

At each stage, a prototype is built with user participation to ensure that the system is being developed in line with what the user wants.
The success of the software development depends on
- keeping the model simple, and not trying to incorporate features which may come in useful at a later date
- rapid feedback from the user
- understanding that user requirements may change during development as they are forced to consider their needs in detail
- being prepared to make incremental changes as the model develops

17
Q

Chapter 11 – Systems analysis methods
Extreme programming

A

Extreme programming (XP) is a software development methodology which is intended to improve software quality and responsiveness to changing customer requirements. It is a type of agile software development in which frequent “releases” of the software are made in short development cycles. This is intended to improve productivity and introduce checkpoints at which new customer requirements can be adopted.

18
Q

Chapter 11 – Systems analysis methods
Rapid application development (RAD)

A

Some very large projects may be developed over a long period of time during which both technology and user requirements change. Major changes at late stages of development can sometimes lead to projects being cancelled or restarted, at considerable cost. In response to this problem the RAD methodology was introduced, offering the promise of much faster completion of major projects.

19
Q

Chapter 11 – Systems analysis methods
Relative merits and drawbacks of each development methodology

A

The waterfall system lifecycle approach is suitable for very small projects which need careful supervision, such as those undertaken by students or trainees. The absence of user involvement is a serious drawback.

The spiral model and the agile approach are an improvement in that they acknowledge that users often cannot specify their requirements accurately because they don’t understand what is possible. It is much easier to examine a working prototype and figure out what needs to be done to it to turn it into a useful system.

Extreme programming and rapid application development are good methodologies for large projects where there is a danger of getting bogged down or sidetracked by suggested improvements, so that developers are continually chasing a moving target.

20
Q

Chapter 12 – Writing and following algorithms
Computational algorithms

A

A good algorithm has the following properties:
- It has clear and precisely stated steps that produce the correct output for any set of valid inputs
- It should allow for invalid inputs
- It must always terminate at some point
- it should execute efficiently, in as few steps as possible
- It should be designed in such a way that other people will be able to understand it and modify it if necessary

21
Q

Chapter 12 – Writing and following algorithms
What kinds of problem are solved by algorithms?

A

Internet-related algorithms
Algorithms are used to manage and manipulate the huge amount of data stored on the Internet. How does a search engine find all the pages on which particular information resides in a fraction of a second?

Route-finding algorithms
Given two locations, how does a route-finder determine the shortest or best route between the two points? There may be thousands of possible routes. This type of algorithm is used not only for driving a vehicle from A to B, but also for many other applications, for example, finding the best route to transmit packets of data from A to B over a network.

Compression algorithms
These are used to compress data files so that they can be transmitted faster or held in a smaller amount of storage space. For example, MP3 files are compressed so that you can hold thousands of tracks on a mobile phone.

Encryption algorithms
When someone purchases something over the Internet and sends their credit card number and other personal details to the store, the data needs to be encrypted so that even if it is intercepted, it cannot be read.

22
Q

Chapter 12 – Writing and following algorithms
A “Divide and Conquer” algorithm

A

The binary search algorithm uses the “Divide and Conquer” strategy to halve the search area every time a
guess is made.

23
Q

Chapter 12 – Writing and following algorithms
Strategy for interpreting algorithms

A

Here are some tips, which may seem fairly obvious.
- Read the comments in the program
- Look at the variable names to see if they give any clues
- Follow the steps in the program
- Try a “dry run” with some test data

24
Q

Chapter 13 – Programming paradigms
Procedural programming

A

Procedural programming is supported by languages such as Python or Pascal, which have a series of instructions that tell the computer what to do with the input in order to solve the problem. They are widely used in educational environments, being relatively easy to learn and applicable to a wide variety of problems.

25
Q

Chapter 13 – Programming paradigms
Structured programming

A

Structured programming is a type of procedural programming which uses the programming constructs of sequence, selection, iteration and recursion. It uses modular techniques to split large programs into manageable chunks.

26
Q

Chapter 13 – Programming paradigms
Object-oriented programming

A

Object-oriented programming is supported by languages such as Java, Python and Delphi. OOP was developed to make it possible to abstract details of implementation away from the user, make code reusable and programs easy to maintain. It is to a great extent taking over from procedural programming.

27
Q

Chapter 13 – Programming paradigms
Declarative programming

A

Declarative programming is supported by languages such as SQL, where you write statements that describe the problem to be solved, and the language implementation decides the best way of solving it. SQL is used to query databases.

28
Q

Chapter 13 – Programming paradigms
Functional programming

A

Functional programming is supported by languages such as Haskell, as well as languages such as Python, C# and Java. Functions, not objects or procedures, are used as the fundamental building blocks of a program. Statements are written as a series of functions which accept input data as
arguments and return an output. Functional programming is not covered in this course.

29
Q

Chapter 13 – Programming paradigms
Procedural languages

A

A procedural language has built-in data types such as integer, real or floating point numbers, character, Boolean and string. In addition, it typically has data structures such as array and record.

30
Q

Chapter 13 – Programming paradigms
Object-oriented languages

A

In an object-oriented language, we define a class as the description of what the data looks like (the state) and what the data can do (the behaviour). The user of a class sees only the state and behaviour of a data item. Data items are called objects, where an object is an instance of a class.

31
Q

Chapter 13 – Programming paradigms
Polymorphism

A

Polymorphism refers to a programming language’s ability to process objects differently depending on their class.
A class of objects has behaviours or methods, all of which will be inherited by its subclasses.

32
Q

Chapter 13 – Programming paradigms
Constructors and inheritance

A

Inheritance is denoted by the inherits keyword, and superclass methods are defined with the keyword super. e.g. super.new(stackSize).
A procedure with the name new is a constructor.

33
Q

Chapter 13 – Programming paradigms
Advantages of the object-oriented paradigm

A

Building code into objects has a number of advantages, including:
- The object-oriented methodology forces designers to go through an extensive planning phase, which makes for better designs with fewer weaknesses
- Encapsulation: the source code for an object can be written, tested and maintained independently of the code for other objects
- Once an object is created, knowledge of how its methods are implemented is not necessary in order for a programmer to use it
- New objects can easily be created with small differences to existing ones
- Reusability: objects that are already defined, coded and tested may be used in many different programs
- OOP provides a good framework for code libraries with a range of software components that can easily be adapted by a programmer
- Software maintenance: an object-oriented program is much easier to maintain than one written in a procedural language because of its modular structure

34
Q

Chapter 14 – Assembly language
Assembly language instructions

A

Machine code was the first “language” used to enter programs by early computer programmers. The next advance in programming was to use mnemonics instead of binary codes, and this was called assembly code or assembly language. Each assembly language instruction translates into one machine
code instruction.

Assembly code uses mnemonics to represent the operation
codes and addresses. Typically, 2-, 3- or4 -character mnemonics are used to represent all the machine code instructions. The assembler then translates the assembly language program into machine code for execution.

35
Q

Chapter 14 – Assembly language
Format of machine code instructions

A

The LMC instruction set has only 11 instructions, and the imaginary machine has only 100 memory locations. The maximum data value is 999, which can be held in 10 bits. Four bits would be enough to store the operation code, and 7 bits would be enough to store the operand. A word size of 16 bits would be plenty big enough to hold an instruction or a data value.

36
Q

Chapter 14 – Assembly language
Addressing modes

A

The operation code (opcode) consists of binary digits representing the basic operation such as ADD or LOAD, and a 2-digit code representing the addressing mode.

37
Q

Chapter 14 – Assembly language
Types of addressing modes

A
  • using immediate addressing, the operand is the actual value to be operated on, say 3 or 75
  • using direct addressing, the operand holds the memory address of the value to be operated on. This is the only addressing mode used in the LMC assembly language
  • using indirect addressing, the operand is the location (typically a register) which holds the address of the data we want. This enable a larger range of addressable locations.
  • using indexed addressing, the address of the operand is obtained by adding to the contents of a general register (called the index register) a constant value. The number of the index register and the constant value are included in the instruction code. Indexed addressing mode is used to access an array whose elements are in successive memory locations.