Part 1 Flashcards

1
Q

How can a software system be out of date as it is being developed?

A
  • User requirements can change
  • Updates/improvements in technology
  • Requirements missed at time of capture
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Suggest what can be used in agile software development as a basis of estimation?

A

Previous experience of similar projects

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

What does iterative development mean?

A

continuously repeats a set of activities improving the outputs each time at the feedback received from a previous iteration.
an iteration is a complete small project, with a short timeframe, consisting of analysis, design, implementation, testing and integration, and results in a partially working system.

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

How does using an iterative approach help build a system that meets users’ needs?

A

each iteration will assess the system being developed against its requirements. If the requirements change, they will be captured and accommodated for in the next iteration.

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

Agile vs. plan driven development with regards to requirements change

A
Agile = responds to change quickly. 
PDD = waterfall = difficult to change. needs to be documented and formal agreement
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Explain why estimation is an important activity within agile software development.

A

Estimation is an important activity because when developing software, there needs to be established an idea of effort and time required to complete the software. Once the people resources and time required are established, work can be assigned to people or teams with expected periods of time.

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

What are the benefits of agile development?

A
  • Rapidly respond to changes in users’ needs

- Deliver working software quickly

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

What is the purpose of modelling in agile development?

A
  • communicate a viewpoint of the system
  • help understand the system
  • aid communication among the developers.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

What are the characteristics of a good software system?

A
  • Meets users’ needs
  • Useful
  • Usable
  • Flexible
  • Affordable
  • Available
  • Reliable
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Why is traceability important?

A
  • Aids in resolution of disputes
  • proves that the requirements have been dealt with
  • explains what / why changes were made
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

List 8 non-functional requirement categories

A
  • Look and feel
  • Usability and humanity
  • Performance
  • Operational and environmental
  • Maintainability and support
  • Security
  • Cultural
  • Legal
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

What is the difference between a functional and non-functional requirement

A

A functional requirement describes the functionality of the product; what it must do, whereas a non-functional requirement describes a property of the product, e.g. how it should look, how quickly something should happen.

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

Requirements documentation : plan driven vs. agile

A

plan-driven development:
-large formal requirements document that must be produced at the beginning of the development process which: takes up a lot of time, delays the start of code development.

agile practices:

  • requirements gathering is more an iterative and ongoing
  • tries to capture the requirements as they evolve over the lifetime of the project.
  • documentation only written if necessary
  • informal:user stories
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

How are requirements and testing related?

A

Testing aims to validate that the product satisfies the requirements of the user and verify that the product works as intended

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

What is a business process?

A

Definition of what gets done in the business: by whom, in what order, needing what and with what consequences.

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

What is a business rule?

A

A constraint on how the business is run

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

What are the advantages of OCL?

A

it uses precise language, capable of being easily understood by developers and customers.

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

What are the disadvantages of OCL?

A

not a stand-alone language. A model needs an accompanying UML diagram.
verbose; hard to understand

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

When do you need to start thinking about architecture in the software development process?

A

Right at the start. Requirements will often dictate the architecture. It is expensive to change the architecture once the system development is underway.

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

What is verification?

A

Checks that the system has been built correctly.

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

What is validation?

A

Checks that the system built meets the specification of the customer.

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

What are the advantages of developing a system from a set of use cases?

A
  • software can be built to the exact requirements of the users.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

What are the disadvantages of developing a system from a set of use cases?

A
  • the developer may view the system too operationally by focusing on the requirements of the use case and assuming that a sequence of events is the only answer
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q

How do interaction diagrams help ensure that software meets its goals?

A
  • Helps understanding of how the classes interact with each other.
  • Help understanding of how system operates to meet the requirements.
  • Helps demonstrate how the system satisfies the requirements by showing the interactions between classes and therefore how the product operates.
  • Interaction diagrams serve as a basis for discussions with the development team, and as a form of documentation, which can also inform the testing.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
25
Q

GRASP expert

A

A pattern that provides guidance on which class should be responsible for initialising or changing the state of an object.

26
Q

GRASP creator

A

A pattern that provides guidance on which class should be responsible for creating new objects.

27
Q

How can object diagrams be useful?

A

An object diagram is useful to show the state of a system at a particular point in time

28
Q

object diagram vs class diagram

A
class diagram preferable:
class diagram as this is a representation of the system at all points in time and can therefor represent the system specification more accurately than an object diagram
object diagrams cannot form the basis for a software specification, since it represents particular states of the system at particular moments in time, whereas a specification must describe all valid states of the system at all possible times.
When you use a class diagram in a conceptual model, the main aim is to represent the information that exists in the problem domain. Hence the class diagram will show the key concepts as classes, their properties as attributes and their relationships as associations.
29
Q

Why might problems arise if architecture isn’t considered until late in the development process?

A

By then many other design decisions will have been taken and it will be too late to change them

30
Q

Why is reuse desirable?

A
  • Quicker development time
  • Reduced cost
  • Avoids duplication of effort
31
Q

What quality attributes can the Factory pattern help to meet?

A
  • Maintainability

- Portability

32
Q

What does the logical view describe?

A

The logical view describes the functional elements, how they interact, and how the system can be partitioned into units that can be allocated to teams of developers.

33
Q

Client-server architecture vs. peer-to-peer architecture

A

With a client-server, the client sends a request to a server to obtain resources or services that the server provides. With peer-to-peer, all components act as a client and a server, and can provide or request services to other components.

34
Q

What problem does that Adapter pattern solve?

A

The Adapter software pattern allows incompatible parts of a system to interact normally. For example, an adapter would be used between a legacy system and a newly instated system so that both can interact as required.

35
Q

Component Based Development Advantages

A
  • Saves time and therefore cost
36
Q

Component Based Development Disadvantages

A
  • May not meet needs exactly

- Dependant on creator for updates

37
Q

How does SOA contribute to flexibility?

A

SOA allows for interchangeable non-dependent services that enables flexibility in system change by allowing the replacement of one service while not affecting the others.

38
Q

How is a software component known to its clients?

A

Through a software interface

39
Q

Advantages of SOA

A
  • Maintain services independently
  • Reduced coupling
  • Less duplication
  • Flexible
40
Q

What is a tactic?

A

A reusable solution to the problem of achieving particular qualities.

41
Q

How is CBD similar to SOA

A
  • They both have well defined interfaces and are reusable.
42
Q

How is CBD different to SOA

A

Communication with components tends to depend on proprietary technologies, which restricts interoperability. Services use standard communication protocols, which allows them to inter-operate in a platform and language-independent way.

43
Q

Tactics that can help meet performance requirements

A

Managing demand, for example by controlling the frequency of stimuli, to ensure that the system can keep up with it.

Managing system capacity. This may involve increasing resources or employing concurrent processing.

44
Q

properties of a software component that could also apply to an object-oriented programming language

A
  • the encapsulation of data and operations
  • communicating through provided interfaces (in OO, the public methods in the class) and required interfaces (in OO, the methods in other classes which are made use of by the methods in a class)
45
Q

What does it mean for a service to be stateless

A

A service or component is ‘stateless’ if it responds to each request as a ‘one-off’, without retaining any memory of previous requests.

46
Q

tactics that can contribute to the quality attribute of flexibility

A
  • low coupling, by, for example, hiding implementation behind interfaces)
  • high cohesion, by keeping closely related activities grouped together.
47
Q

Black box vs. white box testing

A

Black box testing validates that the software meets the requirements but does not give an indication of how well the code is developed (for example you cannot inspect how edge cases are dealt with). On the opposite, White Box testing verifies that the code is well developed but it does not indicate whether the application does what the customer requires (functional req) in the way it was agreed (non-functional requirements and fit criteria).

48
Q

Why is LOC metric unreliable for determining the complexity of a program?

A

LOC is unreliable as an estimate of complexity because it is simply counting the number of lines and doesn’t take in to account complex functions such as if statements, where statements and for-each statements which do make the code more complex

49
Q

Unit testing

A

Verification – performed on classes systematically testing methods using test cases.

50
Q

Integration Testing

A

Verification – builds on unit testing and DbC by testing units in combination.

51
Q

Acceptance Testing

A

Validation – performed by the customer and after which the system is accepted

52
Q

How does TDD have a beneficial effect on design?

A

It encourages clarity, modularity and a focus on interface over implementation

53
Q

Cyclomatic complexity markers

A
  • if
  • while
  • while
  • do-while
  • and
  • or
  • switch
  • try
  • for
54
Q

Limitations of TDD

A
  • Test driven development does not lend itself well to the development of user interfaces, usability testing is better for this.
  • Multithreaded systems – TDD is not generally suitable for the testing of multithreaded systems.
55
Q

Disadvantages of waterfall lifecycle model

A
  • Inability to adapt the code to sudden change of requirements
  • large amount of documentation needs to be created and maintained
  • difficult to return back to the previous stage to make amendments
  • it could take months for any working software to be shown to the users/not shown to the users until close to the end of development
56
Q

agile - teamwork

A

agile teams tend to be smaller than non agile teams and each member is multi-skilled where non agile team members can be more specialised

57
Q

agile - requirements

A

agile requirements are much less comprehensive and detailed only recording what is needed to communicate understanding of the system or why changes are made, non agile documentation is much heavier and detailed providing a complete specification involving every detail of every requirement of the system.

58
Q

Characteristics of agile teams

A

Collaboration – agile teams are generally small, and this gives them the advantage that they work well together to deliver the product. In plane-driven development teams, members generally work in isolation and don’t feedback, however, in agile teams work together to make sure they have delivered all of the user requirements and stories.

Adaptability – one of the strengths of agile teams is their ability to adapt to the situation; one of the manifesto items is to respond to change over following a plan. This brings an advantage that teams can easily adjust to the changing requirements of the domain to deliver the best software for the users.

59
Q

signatures

A

context class::method(argument:Argument, argument:Argument):returnValue

60
Q

aspects of software development

A
analysis
design
implementation
testing
integration
61
Q

logical (functional view)

A
  • the system’s main functional elements
  • their responsibilities
  • interfaces
  • primary interactions