UNIT 3: Software Development Flashcards

1
Q

What is software?

A

To describe the programs that provide the instructions to control the computer hardware components.

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

Types of Software:

A

Application software provides a tool for a specific purpose (a word processor), system software controls the hardware (an operating system) and utility software helps configure and maintain the computer.

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

Software Development- inital idea to final product

A

Analysis
Design
Implementation (programming, testing and installiation)
Evaluation
Maintenance

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

what is the systems devlopment life cycle often shown as?

A

A circle

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

ANALYSIS STAGE

A

a systems analyst works closely with the client to gather info about the requirements of the software

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

ANALYSIS OUTPUTS

A
  • create a document like “System specification or user requirements”
  • defines what the system will do, not how to do it
  • problem definition - clear defintiion of the porblem
  • system requirements / objectives - clear description of what the system needs to do
  • used to create the design and to evaluate the finished product
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

if the project is going to be substantial or very expensive it might be common for a _____ to precede the analysis stage

A

feasibility study - involve taking a high level look at the key issues and risks and will include a recommendation as to whether the project should go ahead

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

DESIGN STAGE

A

system arhictects oversee the design process, drawring on specifric skills and experitse fro UI designers, database designers and secutity experts.

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

DESIGN OUTPUT

A
  • desciption of data - dataype, format, validations
  • database design if appropraite
  • input screens, output screens and reports
  • how data will be processed
  • how the software will be tested
  • User interface
  • algorithms
  • data structures
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

IMPLEMENTATION STAGE

A
  • coding and testing the software
  • writing user and technical documentation
  • installing the software for the user
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Black box testing

A

carried out independently of the code used in the program - looks at the program spec and creates a set of test data that covers all inputs, outputs and the program functions

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

White box testing

A

depends of the code logic
tests are devised which test each path through the code at least once

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

Alpha testing

A

Alpha testing is the final testing that is carried out by the development team (or associates) using documented test plans, with a focus on whole system functionality and usability.

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

Integration testing

A

Integration testing is where individual modules or units (that have already been separately tested) are tested together to ensure that they are compatible and function as expected.
It may be that an individual module works as expected, but when you try to incorporate it into a wider system, errors occur.

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

Stress or Performance testing

A

means testing to make sure that the system can handle the anticipated volume of users or data. For example, with online games, it would be very important that the likely number of concurrent users could be supported.

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

EVALUATION STAGE (Acceptance testing)

A

The final testing with the intended user(s). It often involves ‘scenarios’ that the users follow to make sure that the system meets the requirements specification.

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

Beta testing

A

Beta testing means unstructured testing by a range of selected end users. It allows the system to be tested on a wide range of hardware and a diverse set of supporting or enabling software. They report any faults.

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

Iterative (module, unit) testing

A

Carried out at every stage of development. The programmer writes an individual section of code or part of the project and then tests it to ensure that it functions correctly. It is likely that errors will be detected, and these are resolved before the next section of the program is developed and tested.

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

Final (terminal) testing

A
  • Final or terminal testing is carried out once the program or system is considered to be completely finished, and is the last phase of testing. This stage happens after the individual sections or modules of the system have been tested, to ensure that the system works as a whole and that it meets the requirements of the project.
  • During final testing, each particular pathway or route through the program is tested to ensure that the system works correctly in all scenarios and with a full range of input data.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

MAINTENANCE STAGE

A
  • Corrective - bugs will be found when software is in action
  • adaptive - over time, user requirements will change and software needs to adapt
  • perfective - even if software works well, there may be ways of making it faster, easier to user or more functionaility
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

Waterfall model/ lifecycle

A
  • Each stage is completed and dcoumented before the next is begun
  • the customer doesnt see the end product until it is completed.
  • any change to be made often means the project has to started again
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

Advantages of waterfall

A
  • model is simple to understand and use
  • each stage is separate and self containted with well defined outcomes and witten documentation
  • project stratgihtforward to manage
  • model works well for smaller projects where requiremnts are very well understood
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

Disadvantages of waterfall

A
  • not much user involvement after the analysis stage, when the specficiation document is agreed
  • no working software is produced until late in the cycle
  • user is presented with finsihed product and if its not quite was required, its too late to make changes
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q

when to use waterfall model

A
  • requirements are very clear and fixed
  • no ambiguous requirements
  • tech is well understood
  • project is short
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
25
Spiral model
- four basic steps of analysis, design, implementation (programming and testing) and evaluation are followed - software project passes through these phases repeatedly - each successive loop around the spiral genearte a new more refined prototype until the software meets all the reuiqments
26
Advantages of Spiral model
- well deinfed steps make the project east to manage - software is produced at an early stage so problems and issues can be idnentified early - user gives feedback on each prortype and any required changes can be made early in the process - added functionaility can be added during the process - end result is more likely to be what the user wants
27
Disadvantages of the spiral model
- process of devloping protoypes and reining, feedback is time consuming so finsihed product takes longer to develop - a system is more costly to devlop because of the time involved - not suitable for smaller projects
28
when to use spiral model
- medium to high risk projects - when users are unsure of their needs and what the possibilites are - when the reuiqments are complex - for large projects whihc may take years to devlop during which time new technologies may devlop and significatn changes occur
29
the Agile model
- software is developed in rapid incremental cycles - each version builds on previous functionaility - each version is thorughly tested before release good for small, time-critical projects - limited planning is needed to get started
30
advantages of agile model
- rapid continous devlivery of useful software leads to customer satisfaction - customers, devlopers and testers constantly interact with one another - working software is deviered freuently, within weeks rather than months - software is easily adapted to changing circumstances - even late changes in requeiremnts can be impolemented
31
disadvantages of the agile model
- there is a lack of emphasis on necessary design and docuemntatoin - project can fail to deliever if the customer is not clear about the desired final outcome - not suitable for novice programmers, exepeirnce programmers capanle of making good decisions are required
32
when to use the agile model
- when new changes need to be implemeneted - small incremental changes can be made freuqnetly and for little cost - in an expanding or developing buisness where users needs are conisntously changin and devleioping
33
AGILE - extreme programming. (XP)
- type of agile software devleopment - foucses ont eh refinement of the code - The core principle is that there should be frequent releases in short development cycles, and continual communication with the customer. - The importance of code quality is paramount in XP. The development and feedback loops are much shorter, and the releases are not called 'prototypes', but are working versions of a system component. - At the start of each release, there is a planning phase that determines what will be developed and how it will be tested. Programming is done in pairs, with two programmers working in collaboration to develop, test, and review code. There is a heavy emphasis on development standards and strict version control. At the end of each release, there is a listening (feedback) stage that will inform the next release.
34
what can go wrong?
personnel change requiremnets change technologuy advances costs spiral upwards project get cancelled
35
Rapid application development (RAD)
- wrokshops and focus gropus gather requiments rather than using a formal document - prototyping is used to continually refine the system in response to user feedback - each part of the system is proucded within a strict time limit - maybe no perfect but good enough - software componenets are reused whenever possible
36
RAD advantages
RAD is especially well suited for developing software where the requirements are unclear, or for projects where the user interface is an important part of the project. It is good for smaller projects where there are smaller development teams that include users or their representatives.
37
RAD disadvantages
- encourages sloppiness — a 'try-it-and-see' approach — and ignores the importance of making sure that the overall system - Because of its emphasis on continuous feedback, it is not suitable for projects where the users are hard to contact or do not want to be actively involved.
38
draw waterfall cycle, agile and spiral
do it
39
Algorithm definition
- set of instructions to solve a problem in a finite number of steps
40
A good algorithm
- has clear and preicsily stated steps that produce the correct output for any set of valid inputs - should allow for invalid inputs - must always terminate at some point - should preform the taskefficiently in as few steps as possible - should be desinged in such a way that other people will be able to understand it and modify it if necessary
41
what is pseudocode
halfway between english statments and program code
42
name all sorting algorithms
bubble, insertion, merge
43
name all searching algorithms
linear, binary
44
Bubble sort defintion
first item in the list, each item is compared with teh adjacent item and wapped if it is larger at the end of the first pass the largest item bubbles up to the end of the list
45
insertion sort definition
- The insertion sort algorithm works by building up a sorted sublist in the first part of the original list, while the remaining part of the list remains unsorted. - At the start of the algorithm, the sorted sublist contains just a single item (the first item in the list). All of the other items belong to the unsorted sublist. The algorithm goes through the unsorted sublist, item by item. As each item is examined, it is moved into the correct position (in ascending or descending order) in the sorted sublist. This progresses until the final item is correctly inserted and the list is sorted.
46
Merge sort definition
The merge sort algorithm has two parts: splitting items and merging items. The algorithm starts by splitting a list of items into two halves called sublists. Then the algorithm repeatedly splits the sublists in half until eventually each sublist only contains a single item. These single-item sublists are then merged in pairs to form sublists of two items. In the process of merging, the items are ordered. This process is repeated until, in the final step, the two ordered halves are merged together to form a single ordered list. As a result, the whole list is sorted. The merge sort algorithm is an example of a divide and conquer approach to problem solving. A "divide and conquer" algorithm works by breaking down a problem into smaller and smaller parts until these become simple enough to solve directly.
47
Linear search defintion
identfies the search term looks at first item compaes if not move to next item, repeat
48
Binary search defintion
Start by setting the counter to the middle position in the list. If the value held there is a match, the search ends. If the value at the midpoint is less than the value to be found, the list is divided in half, the lower half of the list is ignored and the search keeps to the upper half of the list. Otherwise, if the value at the midpoint is greater than the value to be found, the upper half of the list is ignored and the search keeps to the lower half of the list. The search moves to the midpoint of the remaining items. Steps 2 through 4 continue until a match is made or there are no more items to be found.
49
Trace Table definition
A trace table is a method used in computing and programming to manually track the values of variables as they change throughout the execution of an algorithm or program. It helps in debugging and understanding how an algorithm works step by step.
50
Name the 4 programming paradigms
Procedural, Object Oriented, Declarative, Functional
51
Examples of Procedural
Python, Basic, Pascal, C#
52
Examples of OO
Java, C++, Python
53
Examples of Declarative
SQL, Prolog
54
Examples of Functional
Haskell, JavaScript, Logo
55
What is a programming paradigm
Its a style or way of programming which dictates how the code is structured and executed
56
Imperative / Procedural Programming Definition
consists of a series of instructions that tell the computer what to do with the input in order to solve the problem Procedural programming is imperative programming with procedure calls
57
Structured programming definition
kind of prorcedural - uses sequence, selection, iteration adn recusion rather than GOTO statements (allowing unconditional jumps in the code)
58
Declarative programming defintion
SQL describe the porbelm that is to be solved langauge implementation then finds the best way of solving it used to create amend and query databases
59
Logic Programming definition
form of declarative expresses logic without expressing its control flow logical statments used prolog is an example
60
Object Oriented Programming
focuses on objects and the way that they interact each object has their own data (attriutes) and operations on the data (methods)
61
whats a class?
blueprint for an object defines attributes and methods thata caputure common characterisitcs and behaviour of objects
62
What is encapsulation
Encapsulation binds together the attributes (data) and the methods (functions and procedures) that manipulate the data. It does this so that the data is protected.
63
information hiding
object attributes are private attributes are accessed and changed only through the objects methods methods are required to set (setters) and retrieve (getters) an objects attributes to interact with an object its methods must be public
64
Inheritance
Inheritance makes it possible to create a new child class that inherits the attributes and methods of the original (parent) class. superclass or base class - subclasses or dervived classes
65
Polymorphism
Where different objects can respond to the same method call in different ways, based on their type. This flexibility promotes code extensibility and simplifies maintenance.
66
Overriding - form of polymorphism
When a subclass is defined, it can override any of the methods inherited from the parent class. Allows the subclass to modify or extend the behaviour of an inherited method
67
whats the first fully programmable electronic computer?
ENIAC computer 1946
68
Levels of programming languages
high level languages (python) low level languages (assembly) Machine code: 010100001001001
69
What is assembly language?
it uses mnemonics to represent the operation codes 2,3,4 character codes are used to represent all the machine code instructions different assembly langauges for each different type of processor the assembler translates the assembly language progrma into machine code for exectution
70
LMC - Little Man Computer
it's an imaginary computer with a very limited instruction set created by Dr Stuart Madnick in 1965 maintained by peter higginson
71
how many instructions does the LMC have? How many memory locations
11 instgurctions and 100 memory locations
72
Format of Machine Code instruction
O P E R A T I O N. C O D E | ___________________________________|OPERAND'S basic machine | Adressing mode. | operation | _________________________________________________ 0. 1. 0. 0. 1. |. 0. 1. | 0 0 0 0 1 1
73
Opcode (operation) code defintion
specifies the instruction to be perfromed to the data and secifies the addressing mode
74
Operand code defintion
the data whcih the instruction is performed
75
3 diffrent addressing modes
immediate direct indirect
76
whats an addressing mode?
addressing mode is the method to specify the operand of an instruction so basically how to do it
77
what is immediate addressing
the operand holds an actual value
78
what is direct addressing
the operand holds teh address of the value
79
what is indirect addressing
the operand is the location holding the address of the value
80
What is indexed addressing
the address of the operand is obtained by adding a constant value to the contents of the index register used to access an array whose elements are in successive memeory locations
81
binary search algorithm
import math names = ["Jane", "Fred", "Vicky", "Eric", "Bella", "Millie"] numItems = len(names) for i in range (numItems): for j in range(numItems - 1 - i): if names[j] > names[j+1]: names[j], names[j+1] = names[j+1], names[j] def binarysearch(names, target): low = 0 high = len(names) - 1 while low <= high: mid = (low + high) // 2 if names[mid] == target: return mid elif names[mid] < target: low = mid + 1 else: mid = mid - 1 return -1 result = binarysearch(names, "nnn") if result != -1: print(f"Element found at index {result}") else: print("Element not found, boy!")
82
bubble sort algortihm
names = ["Jane", "Fred", "Vicky", "Eric", "Bella", "Millie"] numItems = len(names) for i in range (numItems): for j in range(numItems - 1 - i): if names[j] > names[j+1]: names[j], names[j+1] = names[j+1], names[j] print(names)
83
Linear Search algorithm
names = ["Jane", "Fred", "Vicky", "Eric", "Bella", "Millie"] def linearsearch(names, target): numItems = len(names) for i in range(numItems): if names[i] == target: return i return - 1 print(linearsearch(names, "Vicky"))
84
merge sort algorithm
def mergeSort(myList): if len(myList) > 1: mid = len(myList) // 2 left = myList[:mid] right = myList[mid:] # Recursive call on each half mergeSort(left) mergeSort(right) # Two iterators for traversing the two halves i = 0 j = 0 # Iterator for the main list k = 0 while i < len(left) and j < len(right): if left[i] <= right[j]: myList[k] = left[i] i += 1 else: myList[k] = right[j] j += 1 k += 1 # For all the remaining values while i < len(left): myList[k] = left[i] i += 1 k += 1 while j < len(right): myList[k]=right[j] j += 1 k += 1 myList = [54,26,93,17,77,31,44,55,20] mergeSort(myList) print(myList)
85
insertion sort algorithm 
def insertionSort(array): n = len(array) # Get the length of the array if n <= 1: return # If the array has 0 or 1 element, it is already sorted, so return for i in range(1, n): # Iterate over the array starting from the second element key = array[i] # Store the current element as the key to be inserted in the right position j = i-1 while j >= 0 and key < array[j]: # Move elements greater than key one position ahead array[j+1] = array[j] # Shift elements to the right j -= 1 array[j+1] = key # Insert the key in the correct position # Sorting the array [12, 11, 13, 5, 6] using insertionSort array = [12, 11, 13, 5, 6] insertionSort(array) print(array)