Revision Flashcards

1
Q

What are architecturally significant requirements(ASRs)?

A

The requirements that drive a systems software architecture. Quality attributes, core features, constraints, application environment.

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

What is a software architecture?

A

The overall structure of a software system.

Tells the devs the overall shape of the software system and how to use various technologies.

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

What is an architectural pattern?

A

Codifies recurrent software architectures by describing key elements of the architecture and how they fit together.

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

What is a design pattern?

A

A reusable solution to design problems

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

What is verification in testing terms?

A

Has the product been built right?

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

What is validation in testing terms?

A

Has the right product been built?

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

What are software quality factors?

A

Correctness, reliability, integrity, maintainability, usability,…

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

What is cyclomatic complexity metric?

A

The number of independent paths through a method body

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

What is black-box testing?

A

Black-box testing is a method of testing software functionality based on tests cases from the specification.

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

What is white-box testing?

A

The testing of the internal structure of a software system.

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

What is the logical (functional) view?

A

Describes the system’s main functional elements and their interactions

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

What is the process view?

A

Describes the independently executing processes that exist at run-time and the communication between them.

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

What is the deployment view?

A

Describes how the system will be deployed to an operating environment of physical computers and networks

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

What are logical view artefacts?

A

Class and object diagrams, sequence diagrams, package diagrams.

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

What is the defining quality of a good software system, and what are its main characteristics?

A

That it meets the user’s needs. It useful, usable, flexible, available, affordable and reliable.

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

How might greater flexibility make a software system more affordable over its whole life?

A

Makes it easier to correct any errors and therefore reduce the number of staff and the amount of time needed on the project.

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

Give 2 reasons why a delivered software system might not meet its users’ needs

A

Missing some of the user’s desired functionality and is unreliable.

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

Suggest a means of measuring the maintainability of a software system

A

How easy it is for a developer to track and fix bugs and for them to implement new features to meet the users’ needs

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

What can we learn from legacy systems about developing a good software system?

A

Well documented systems rely less on the people initially involved with developing the system.

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

Suggest a reason why legacy systems will always be a problem.

A

Malleable software allows developers to bolt on and change the software

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

Why might you consider splitting up a large project into smaller chunks?

A

Decomposing a large project into smaller chunks you can assign individuals to separate tasks where it will be easier to understand each of the solutions and problems of the task required.

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

How does the complexity of a software system affect the maintenance task?

A

making changes to it or finding the solutions to any problems can become very costly and time consuming.

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

What is a module?

A

A module is a smaller subsystem of a larger overall system. In OOP a module can be a class, or a method in a procedural language.

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

Why does it help to have low coupling in a software system?

A

As it allows changes to be made to one module without making changes to others, can replace a component easier.

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

What are the context dependencies of a module? How do they relate to a module’s interface?

A

The context dependencies of a module are the other modules that the module requires in order to carry out its task.

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

What are the benefits of using modules with defined interfaces?

A
You will know what to expect from a module and the services it provides.
Possibility of module reuse.
Irrelevant modules are avoided
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
27
Q

Why does it help to have high cohesion in the modules of a software system?

A

modules are more tightly related to each other and each module will carry out a specific task. This means its purpose is clear.

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

What characteristics should a module display that will help to ensure that it is easy and cheap to develop and maintain and that errors are kept to a minimum?

A

The right balance between low coupling (its dependency on other modules) and its high cohesion (the task require of the module)

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

Why is it important to achieve a balance between coupling and cohesion?

A

You may end up with smaller loosely coupled and less cohesive modules or a larger set of tightly coupled more cohesive modules.

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

What are the characteristics of a component?

A

It is sufficiently good abstraction for the problem in hand.
Capable of being reused in future projects with same architecture.
Well defined interface.

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

How does the concept of an architecture contribute to component reuse?

A

Embodies high-level decisions about the overall structure of the system and this may apply to more than one system.

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

Which form of decomposition might be used in a software architecture?

A

Basic form of decomposition used in software architecture is partitioning addressed by a subsystem. Eg, separate the UI layer from the core business services.

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

What are the similarities and differences between components and services?

A

Both are units of reuse
Both have their own interfaces
Component is tech dependent, service is tech neutral.

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

Give the characteristics of an engineering approach that support the argument that software development is an engineering discipline.

A

Validation and verification are essential as building the software itself
Makes use of tools and standards
Follows a code of practice

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

What is a development process?

A

A development process is a set of rules and activities that define how a software development project should be carried out.

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

What should the role of project management be with respect to the deliverables of a development project?

A

Identifying an appropriate set of requirements and controlling the cost of producing them.

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

Suggest a reason why maintenance is a core activity in the development of a good software system

A

It allows the software system to evolve, allows errors to be corrected, adapting to changing environments, introduce enhancements and improve the software

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

What are the assumptions on which the waterfall model is based?

A

That when one particular activity is completed it will not be revisited.

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

Why are there additional risks when developing large projects?

A

Implementing different teams work on a project. Need for good communication between teams.

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

Why is traceability important to the development of software?

A

Able to trace backward from an implemented component(s), through their design to a given requirement.

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

How does documentation contribute to traceability within a development project?

A

The documentation records the progress from requirements to implementation.

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

For what kind of software system might you minimise or even avoid any documentation?

A

If the software system has a short lifespan or will be discarded after use.

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

How would you characterise agile documentation

A

Simple to understand, a well defined purpose and maximise the payoff in the effort of producing it

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

What is a model?

A

It is an abstract representation of a situation in reality, or of a system from a particular pov

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

What makes a ‘good model’?

A

Focus on the essentials whilst keeping out non-essential information

46
Q

What are the two kinds of rule that govern the use of modelling language?

A

Syntax and semantics (what the syntax means)

47
Q

How does a standard modelling language contribute to software development?

A

No need to learn bespoke modelling languanges. Users can pick up work from another team and understand it.

48
Q

What is the difference between a structural and a behaviour model?

A

Structural describes objects and their relationships, behaviour describes the system over time.

49
Q

What is the purpose of domain modelling?

A

Knowing the environment the system is to be introduced to.

50
Q

What is the purpose of the requirements phase?

A

Understand what the system must do and its qualities

51
Q

What is the purpose of analysis?

A

To start modelling the structure and behaviour of a software system from a users’ perspective

52
Q

What is the purpose of design?

A

To make decisions concerning how a system will meet its spec

53
Q

What is the difference between functional and non-functional requirements?

A

Functional is an action the system must perform, non-functional is a quality it must have such as usable, reliable, maintainable.

54
Q

What is reused in a framework?

A

A framework reuses an architecture together with code for components that can slot into that architecture.

55
Q

When would you not use Agile?

A

In large system with distributed teams.
Heavily regulated environment.
Requirements unlikely to change

56
Q

When would Agile development be easy to implement?

A

When team is small and located together.
When the team and users are close.
Constant requirement changes.

57
Q

What components add complexity to cyclomatic complexity?

A

IF / && / || / WHILE / FOR / SWITCH / TRY / DO-WHILE

58
Q

What is a component?

A

A component denotes a unit of reuse or replacement in a software system. Well understood and have their own interface and context dependencies.

59
Q

What is a service?

A

A unit of reuse corresponding to a piece of functionality. In a standard language with published interfaces.

60
Q

What 3 important characteristics can affect its development and likelihood of errors?

A

Malleability - That it is easy to change.
Complexity.
Size.

61
Q

What two problems can arise from decomposing a project into smaller parts?

A
  1. Is each subproblem easier than the original?

2. Will they all fit back together again?

62
Q

What is the interface of a module?

A

The interface of a module defines how other modules can use that module.

63
Q

What is abstraction?

A

A view of a complex problem with the aim of arriving at a useful decomposition of that problem.

64
Q

What is circular dependency?

A

A form of strong(or high) coupling.

65
Q

What are the 3 ways of decomposing an architecture?

A

Layers
Components
Services

66
Q

List some properties of components

A

Technology dependent
Tend to relate to entities
Assembled together through connectors

67
Q

List some properties of services

A

Technology neutral
Discoverable
Invoked using standard communication protocols
Associated to business processes

68
Q

What is requirements elicitation?

A

Identifying the problem

69
Q

What is requirements analysis?

A

Categorisation, priortisation and modelling of requirements.

70
Q

What is a process model (life cycle)?

A

Description of all the events and activities in the life of a software system in which they happen.

71
Q

What is traceability?

A

The ability to trace the history of each requirement.

72
Q

What makes up the documentation in an agile project?

A

User stories - Some functionality

Tests - An executable of a user story

73
Q

Why is traceability important?

A

Dispute resolution

Follow activities undertaken in response to proposed change.

74
Q

What are the main problems associated with development of software?

A
Meets all requirements
On time
Minimal bugs
Good documentation
Understanding users of the system
Changing needs and requirements
75
Q

What are the required characteristics of a standard modelling language?

A

Help resolve problems not create more
Easy to learn and use
Widely used and accepted

76
Q

What is timeboxing?

A

A short fixed duration devoted to each iteration.

77
Q

What is unified process?

A

An iterative and incremental development process

78
Q

What are the 4 phases of a UP project?

A

Inception - Develop business case
Elaboration - Develop core system, address and resolve major risks.
Construction - Produce final product
Transition - Beta testing and deployment

79
Q

What are business rules?

A

Constraints on how the software system should do something.

80
Q

What are business processes?

A

What is done in the business, by whom, in what order and needing which resources

81
Q

In what ways may requirements evolve?

A

Extra functionality
Regulation changes
Evolving technologies

82
Q

What over arching property should the set of functional requirements possess?

A

They should be complete.

83
Q

How do business events and uses cases help in determining functional requirements?

A

A way of discovering requirements. Use cases derived from business events, each use case described by a set of scenarios.

84
Q

Why must functional requirements be testable?

A

They are a required function of the system, if they are not testable you cannot be sure it is implemented.

85
Q

What are the benefits of a modular approach to software development?

A

Increase in reuse
Easier to understand the system (size and complexity)
Teams of developers can work on different parts.

86
Q

What must be true of a non-functional requirement?

A

It must be testable and measurable.

87
Q

What is the difference between fork and cascade patters?

A

Fork pattern one object sends all the messages, cascade objects delegate sending of messages to other objects.

88
Q

What are the advantages of the separating the business layer and presentation layers(MVC)?

A

Greater flexibility in UI design
Developers can focus on business objects
Business logic can be tested separately from UI

89
Q

What coupling would you expect amongst three successive layers?

A

Each layer interacts with the ones directly above and below via defined interfaces minimising coupling.

90
Q

What is the Law of Demeter?

A

The Law of Demeter states that a method M in a class A should not send a message to another object unless that object is one of the following:
an instance variable used in the method m,
a parameter to the method m,
an object created in the method m,
a global variable(Java’s nearest equivalent is public static variable) used in the method m.
Typically use of cascade over fork pattern.

91
Q

What are the 8 types of non-functional requirements?

A
  1. Look and feel
  2. Usability and humanity
  3. Performance
  4. Operational and environmental
  5. Maintainbility
  6. Cultural
  7. Legal
  8. Security
92
Q

Define non-functional requirement look and feel

A

Spirit of products appearace

93
Q

Define non-functional requirement usability and humanity

A

Ease of use and special usability

94
Q

Define non-functional requirement performance

A

How fast, safe, accurate, usable, reliable, available

95
Q

Define non-functional requirement operational and environmental

A

Environment which the product needs to work

96
Q

Define non-functional requirement maintainability and support

A

Expected changes and time allowed to make them

97
Q

Define non-functional requirement cultural

A

Special requirements due to developers and users involved

98
Q

Define non-functional requirement legal

A

Laws and standards

99
Q

Define non-functional requirement security

A

Security and confidentiality

100
Q

Why are cultural requirements often difficult to deal with?

A

Involves asking personal questions which can be sensitive.

101
Q

What is the most pressing reason for considering legal requirements?

A

There are penalties for non-conformance with the law – fines, imprisonment, and loss of reputation.

102
Q

Why is requirements documentation important?

A

Why a system was developed.
What it should do.
Aid in communcation.
Form a contract

103
Q

Briefly define the term namespace

A

A namespace is a way of dividing up code logically in order to avoid naming collisions, no two elements can have the same name.

104
Q

Suggest two benefits of using assertions.

A

Checking pre and postconditions

Can be turned off so that there is no impact on performance

105
Q

What are the advantages of a standard templte, such as volere?

A

Ensures nothing is left out.
Saves time not deciding on what to record.
Assists communication between developers.
No need to learn a bespoke template.

106
Q

Benefits of a prototype and who should test it?

A

Help with design of UI.
Gets users involved.
Minimise misunderstandings between dev/client.
Be tested by real users.

107
Q

What is the relationship between stakeholders and architectural views?

A

An architectural view represents the concerns of a set of stakeholder groups

108
Q

Suggest disadvantage to using COTS

A

Limited to capabilities of components.
Adapters may be needed if interfaces are incompatible.
Potential for additional software to be needed.

109
Q

What steps are required in TDD?

A
Decide on code increment.
Decide on test.
Write test
Run test assuming failure
Write code.
110
Q

State one possible problem that may arise when developing a software system from a set of use cases.

A

Risk of missing out non-functional requirements.

111
Q

Give a definition of the term class invariant.

A

A class invariant is a constraint which should always hold for the state of every instance of the class