Temp 2 and 3 Flashcards
What is the system development lifecycle?
Analysis
Design
Implementation
Evaluation
Maintenance
What information might a system analyst collect? (2)
What the current system does
What the new system needs to do
What might a system analyst do to collect information? (4)
Interview people who will use new software
Use questionnaires to gain large amounts of information
Observe what the current system does
Look at existing documentation
What does a system analyst give back after an analysis?
A system documentation used to evaluate the final product.
What does or should a software design document include? (7)
A description of the data (data types, format and validations),
Database design and management (if appropriate),
Input/output screens and reports,
How the data will be processed,
How the software will be tested
Hardware requirements/configuration
System Security
What happens in the implementation phase of software development?
Coding and testing the software (while tracing and correcting errors),
Writing user and technician documentation,
Installing software for the user
What are the two types of testing?
Black box (functional) and white box (structural)
What is white box testing?
Testing the code logic by using test data to test all the possible paths within a program at least once.
What is alpha testing?
In-house testing that is closed from the public and can reveal many bugs or problems
What is beta testing?
When (often) commercial software is distributed to potential users to be tested and where the user agrees to the testing.
Why is beta testing effective?
It gains lots of real world info and experience for the developers since people often do things that the original developers didn’t anticipate.
What happens in the evaluation phase of software development?
Around 6 months after distribution, people critically evaluate if the system works and that all aspects of the software are tested. This is evaluated against the original specification document to compare performance, the systems criteria, any errors made and any unexpected benefits/problems
What is acceptance testing?
Testing every aspect of a software then evaluating it against the original specification document to accept that it now works/performs as intended.
What are the three different types of maintenance
Corrective maintenance,
Adaptive maintenance,
Perfective maintenance
What is the waterfall model?
Similar to the lifecycle model except it doesn’t loop, when you get to the end, you can’t go back upwithout re-completing the previous stages in the model.
Advantages of the waterfall model
Simple to understand
each stage is separate with good documentation,
Projects are straightforward to manage,
model works well for smaller projects too
Disadvantages of the waterfall cycle
Not much user involvement after the analysis stage.
Working software not produced until late in the project,
User is given the finished product which doesn’t leave much room for improvement
When should the waterfall model be used?
The product has a clear outcome
No ambiguous requirements
The project is short,
The technology is well understood
What are the four main stages of the spiral model?
Analysis, design, implementation, evaluation
Advantages of the spiral model
Well defined steps
Software is produced at an early stage in development.
User can give feedback during the iterative process
End result more likely to be what the user wants.
Disadvantages of the spiral model
Iterative process is very time-consuming,
More costly to develop with the time needed,
Not suitable for smaller projects
When should the spiral model be used?
For medium to high-risk projects,
When users aren’t sure of needs or technological possibilities,
When requirements are complex,
For projects which may take a long time to develop and may need to take advantage of recent/future technological advancements.
What is the agile model and how does it work?
Software is rapidly developed in an iterative process in so-called development cycles with individually implemented features where each version improves on previous functionality and is thoroughly tested
benefits of the Agile model
Software is quickly and continuously developed which leads to good client satisfaction,
Working software is frequently published and developed.
Good for small, time-critical projects,
Limited planning to get started.
Disadvantages of the agile model
Lack of emphasis on proper design and documentation,
Product can fail to deliver if the user is not explicit in their requirements,
Not suitable for novice programmers
When should the agile model be used?
When new changes need to be implemented,
When the client is an expanding or developing business where their needs are constantly changing and developing
What is extreme programming?
A type of agile development designed to improve productivity and responsiveness by doing frequent releases and utilizing short development cycles.
What can go wrong in a large project that isn’t properly planned and staffed?
Costs can spiral,
Personnel can change,
Requirements can change,
Technology advances can make a project obsolete.
What is rapid application development?
Workshops and focus groups decide on the aims/requirements of a project. Prototyping is then used alongside user feedback to refine the product over strict, short-term time frames. Software components are also reused as frequently as possible.
What are the properties of a good algorithm?
I must have clear and precise steps
Should allow for invalid inputs
Must terminate at some point
Should do the task in as little time as possible
It should be understandable to others
Give 2 examples of sorting algorithms
Bubble sort
Merge sort
What is a paradigm?
A style or a way of programming
What is a procedural programming language?
A standard, top-down (in terms of the run time) programming language that contains built-in data types (integers etc) and data structures such as arrays and records.
What is an imperative programming language?
Languages that support imperative programming tell the computer what to do with the input in order to solve the problem.
What is structured programming?
A kind of procedural programming that uses the constructs (sequence, selection, iteration and recursion) rather than ‘goto’ statements. They also use modular techniques to split programs into manageable chunks.
What is a declarative language?
Like SQL, you declare what you want in English and describe the problem to be solved.
What is logic programming?
A paradigm that expresses the logic of a computation without expressing its control flow.
Summarize prolog
Instead of defining how a problem is to be solved, the programmer defines the facts associated with the program which are always assumed to be true.
How does prolog utilize backtracking?
If the interpreter attempts to find a solution to a problem but reaches a dead end, it backtracks to the last decision and attempts to take a new route.
What is encapsulation?
When attributes and methods are wrapped into a single entity (classes). If declared private they can only be accessed through class methods.
what is a class?
A class is a blueprint for an object and defines attributes and methods that capture common characteristics or behaviours of objects.
What is information hiding?
When an objects attributes are hidden and are only accessible through the objects methods.
What is required of an object to access its methods?
They must be defined as public
What is inheritance?
When there is a relationship between sub-classes. Such as, rodents and insects are both their own classes but are also both parts of the class animals.
What is polymorphism?
When an inherited class may have methods and attributes that do not exist in the parent class or are a modified form of an existing method in a parent class.
What might polymorphism do to a parent class aside from making new methods?
It may redefine methods that are defined in the parent class. For example, all animals can eat, but eagles eat meat and birds eat seeds.
Is assembly language hardware specific?
Yes
What are the four addressing modes?
Immediate, Direct, Indirect, indexed
What is immediate addressing?
The operand holds the actual value
What is Direct addressing?
The operand holds the address of the value
What is indirect addressing?
The operand is holding the location of the address of the value
What three things do immediate addressing; direct addressing and indirect addressing mean in normal code?
A variable, a pointer and a double pointer
What things need to be analyzed in the analysis section of the system development lifecycle?
The data itself - origin, uses and characteristics
The procedures - What is done with the data, where and how it’s done, how errors are handled
The future - development plans and expected growth rates of a system
Problems - With any existing system
What is black box (functional) testing?
Black box testing is independent of the code itself and involves taking test cases of data that cover all aspects of the program (all the inputs and outputs and program functions)
What are the three main areas evaluated in the evaluation phase of the system development lifecycle?
The program’s effectiveness, usability and maintainability.
What kinds of problems are solved using algorithms?
internet-related problems, route-finding problems, compression, encryption etc.
What are some advantages of OOP?
It forces developers to plan a project extensively
the code is encapsulated and so independent from everything else
All the layers are separate
Highly reusable
What data about a proposed system might be collected in its analysis stage? (4)
The data used (origin, uses, volume, etc.)
The procedures (what is done, where and how)
The future (development plans and expected growth rates)
The problems (with any existing system)
What 4 things does a post-implementation review focus on? (evaluation phase)
A comparison of actual performance with expected performance
An assessment of the system against the success criteria
Errors made during development
Unexpected benefits/problems
What kinds of problems are solved by algorithms?
Internet-related (such as search engines)
Route-finding algorithms
Compression algorithms
Encryption algorithms
What is meant by a ‘divide and conquer’ algorithm?
One that splits a problem up into many parts.
What are 4 effective methods for interpreting an algorithm?
- Read any comments
- Look at variable names for clues
- follow the steps
- Do a ‘dry run’ with test data
Give 5 examples of programming paradigms
Procedural programming
Structured programming
OOP
Declarative programming
Functional programming
What is object-oriented programming?
OOP defines using classes within programming to create instances of a class called objects.
How do you draw inheritance in a class diagram?
By connecting a subclass to a parent class with an open-headed arrow
What does BRA mean in assembly?
Branch (unconditional). Uses the given address as the address of the next instruction
What does BRZ mean in assembly?
Branch to the address given if the value in the accumulator is zero