Chapter 4 Flashcards
Identify the common stages of software
development life cycles (SDLCs).
Feasibility Study, Analysis, Design, Coding, Testing,
Installation, Evaluation and
Maintenance.
Define white box testing.
A form of testing carried out by software development teams in which the test plan
is based on the internal structure of the program. All of the possible routes through the program are tested.
Define black box testing.
The program as a wh ole is tested from the perspective of the user , it checks all possible user inputs produce valid results.
Define Alpha testing
Testing carried out by the software company, in-house. If specifications were not clearly defined by the client, or the client didn’t themselves know what they wanted, issues will be flagged as this stage.
Define Beta testing
The program is released to a select few users who will use the program and provide feedback on useability and functionality. Feedback is given to devs.
What is TELOS?
A method of analysis used by designers
to evaluate the feasibility of a project. It considers technical, economic, legal and
operational aspects of the project, as
well as scheduling.
What are agile methodologies?
A collection of methodologies which aim
to improve the flexibility of software
development. They respond quickly to
changes in user requirements.
Describe Waterfall model
It completes the stages in a linear, sequential order.
-Each phase has a well defined start and end
-Each phase has clear criteria for completion
-The company interacts with the client at the start and end, but infrequently during development. Traditional and some what outdated.
Pros and cons of waterfall
Pros:
-Simple and easy to mange
-Clearly documented at each stage, so can fixed easily
-Each stage has clear goals
Cons:
-Lack of flexibility
-No risk analysis
-Limited user involvement, only start and end
Describe RAD
Rapid Application development: Successive prototypes are produced, shown to the client, evaluated and feedback is used to inform the next iteration. Good features from multiple prototypes can be combined in this process. Small to medium, with unclear requirements.
Pros and Cons of RAD
Pros:
-Full project requirement spec not necessary
-Regular client input
-Flexible to changing requirements
Cons:
-Regular client contact; may be impractical
-Many prototypes = expensive
-Poor documentation
Describe spiral model
Less riskier version of RAD- more time is spent on planning and risk accessing. Used for large long term projects.
Pros and Cons of Spiral model
Pros:
-Focuses on risks, potentially saving lots of time and money
-Good for unclear requirements
-Good for large complex projects
Cons:
-Risk management = specialised: expensive
-Overkill for small projects
-Lack of focus on code efficiency
Describe extreme programming
Used for smaller evolving projects.
- Keep the model simple and immediate
- Get rapid feedback from the client
- Keep up-to speed with client’s changing requirements
-Incrementally expand and improve the model over continuous prototyping and iteration. May use pair programming, one codes other gives feedback.
Pros and cons of extreme programming
Pros:
-Produces high quality code, fast
-Lots of client involvement
- Requirements can evolve
Cons:
- Pair programming = expensive
-Scope creep - the client may expand on requirements during development
-Client must invest lots of time with devs
Key qualities of algorithms
-Inputs must be clearly defined - what is valid and what is invalid?
- Must always produce a valid output for any defined input
- Must be able to deal with invalid inputs
- Must always reach a stopping condition
- Must be well-documented for reference
- Must be well-commented so modifications can easily be made
Define programming paradigm
A style of programming or a way organising/ conceptualising a program.
What is the low level paradigm
Assembly:
- Uses mnemonics to represent opcodes.
- Hardware dependent
- Runs efficiently, used in embedded systems
Define Imperative programming
Imperative programming paradigms use code that clearly specifies the actions to be
performed to dictate how the problem is solved e.g. Python, C.
Define Procedural programming
The program can be broken down into subtasks, to modularise the problem. Uses coding constructs of sequence, selection and iteration e.g. Python, C.
Define Declarative programming
They tell the computer what to do but not how to do it, e.g. sql queries, haskell
Define OOP
Object-Oriented Programming: Instances of objects are created from class templates. Objects are given attributes and methods e.g. Python, Smalltalk
Define sequence
Simple, sequential instructions
Define selection
A choice/decision AKA condition check where one of two outcomes can be taken.
Define iteration
Where code is either iterated definitely or indefinitely.
Define subroutines
A named sequence of instructions that can be reused and called from other parts of the program.
Define local variables
Exist only within a subroutine. Makes memory use more efficient, cannot be modified outside subroutine.
Pros and Cons of coding constructs
Pros:
-Teams can work independently on subroutines
-Local variables make efficient use of memory
-Subroutines can be reused as many times as wanted
Cons:
- Can be hard to keep overview of program of it gets complicated
-Procedural langs harder to model IRL problems and complex GUI’s then OOP langs.
Define Inheritance
A class can inherit from another class and this relationship
between classes is shown using the diagram to the right. The subclass (or derived class) will possess all of the methods and
attributes of the superclass (or parent class) and can have its
own additional properties
Define Polymorphism
Objects can behave differently depending
on their class. This can result in the same method producing different outputs depending on the object involved. There are two categories of polymorphism: overriding and overloading.
Overriding is redefining a method within a subclass and altering the code so that it functions differently and produces a different output.
Overloading is passing in different parameters into a method
Define Encapsulation
Attributes are declared as private so can only be altered by public methods.
Every class must also have a constructor method, which is called ‘new’. A constructor
allows a new object to be created.
Immediate Addressing
The operand is the actual value upon which the instruction is to be
performed, represented in binary
Direct Addressing
The operand gives the address which holds the value upon which the
instruction is to be performed. Direct addressing is used in LMC.
Indirect Addressing
The operand gives the address of a register which holds another address,
where the data is located.
Indexed Addressing
An index register is used, which stores a certain value. The address of the
operand is determined by adding the operand to the index register. This is
necessary to add an offset in order to access data stored contiguously in
memory such as in arrays
ADD
Add the value at the given memory address to the
value in the Accumulator
SUB
Subtract the value at the given memory address
from the value in the Accumulator
STA
Store the value in the Accumulator at the given
memory address
LDA
Load the value at the given memory address into the
Accumulator
INP
Allows the user to input a value which will be held in
the Accumulator
OUT
Prints the value currently held in the Accumulator
HLT
Stops the program at that line, preventing the rest of
the code from executing.
DAT
Creates a flag with a label at which data is stored.
BRZ
Branches to a given address if the value in the Accumulator is zero. This is a conditional branch.
BRP
Branches to a given address if the value in the Accumulator is positive. This is a conditional branch.
BRA
Branches to a given address no matter the value in the Accumulator. This is an unconditional branch.