Practice #1 Flashcards
List three characteristics a good software system should possess
should be useful, usable, reliable, flexible, affordable and available (any three from this list)
Give two ways in which agile software development can help achieve a good software system
Software should be capable of adapting to change in requirements, helping to achieve a flexible and useful system.
software should be delivered on time helping to achieve an available system
What is the difference between a functional requirement and a non-functional requirement?
A functional requirement is one that specifies an action the software must perform e.g. check, calculate, record, retrieve etc., whereas a non-functional requirement specifies a quality that the software must possess, e.g. usability, reliability, maintainability etc.
What are the advantages of using a standard template, such as the Volere template, for requirements capture?
saves wasting time repeatedly making decisions about what to record;
ensures that nothing important is left out;
assists communication between developers;
allows projects to be compared and requirements reused in some cases.
(any three of these)
What are the benefits of prototyping?
The benefits of prototyping include
- helps with the design of UI
- gets users involved and good way to capture refine requirements;
- helps minimise misunderstandings between the developer and the users;
- may allow early detection of possible problems, before things have gone too far, and at a relatively low cost;
(any three benefits)
Who should test a prototype?
The prototype should be tested by ‘real’ users – those who will be using the software on a day-to-day basis.
What is the relationship between stakeholders and architectural views?
An architectural view represents the concerns of a set of stakeholder groups
What is reused in a framework?
A framework reuses an architecture together with code for components that can slot into that architecture.
How are the Model-view-controller (MVC) and Observer software patterns related?
In MVC the view needs to be kept updated when the state of the model changes. This can be achieved by using the Observer pattern, with the model as the subject and the view as the observer.
Suggest one advantage of developing software by plugging together off-the-shelf components.
Any of these Advantages :
- Should be cheaper
- Allows quicker development
- Behaviour of well-tried components will be well understood
- Components are replaceable with other components that have to same interface
Suggest one disadvantage of developing software by plugging together off-the-shelf components.
Any of these Disadvantages:
- We will be restricted to the capabilities of the components
- Some additional software is likely to be needed
- Adapters may be needed if interfaces are incompatible
- Creating a system from pluggable components may be more difficult than it sounds.
What is the difference between a provided and a required interface?
A provided interface describes the operations a component provides to other components. A required interface describes the operations a component requires from other components.
The usual response measures for a performance scenario are latency, deadline, throughput, jitter, miss rate and data loss. Choose two of these that would be most appropriate in the case of an internet radio service, and briefly explain your answer
Any two of these:
- Latency will affect how quickly a channel can start playing
- Throughput must be sufficient to stream the service to the user
- Data loss must be low otherwise some part of the broadcast will be missed
Calculate the cyclomatic complexity of the code extract in the code below. Show how you arrived at your answer.
int count = 0;
for (int i = 0; i 0) && (inputArray[i]
The cyclomatic complexity is 1 (straight through) \+ 1 (for) \+ 1 (if) \+ 1 (&&) =4.
In test driven development what steps do you need to carry out before you write the code that implements an operation
Decide on code increment; decide on test; write the test, run the test assuming failure; and only then write the code