Software and software engineering Flashcards

1
Q

What is the defining quality of a good software system?

A

A good software system is one the meets its users needs.

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

How can a good software system be characterised?

A

A good software system can be characterised as:

– Useful
– Usable
– Reliable 
– Flexible
– Available 
– Affordable
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

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

A

User’s needs will change over time. In flexible systems the time taken to implement changes in requirements is less compared to less flexible software. As labour costs are the most significant component of software costs, flexible software is more affordable

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

What are reasons why a deliverable software system might not meet its user’s needs?

A

Software systems are usually out of date even as they are being developed because:

– Some needs are often missed during requirements capture.

– User’s needs change with time.

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

What are some means of measuring the maintainability of a software system?

A

The efforts required by a developer to locate and implement a given change to a software system could be measured. That effort can be classified in two components:

– The effort needed to locate and fix errors (bugs)

– The effort needed to adapt the software system to meet its users’ needs.

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

A successful software project must:

A
  • Resolve the diverse and possibly conflicting needs of users in a disciplined way

– Satisfy the users’ expectations

– Have been developed and delivered in a timely and economical manner

– Be resilient to the changes that will be introduced during its operational lifetime

– Demonstrate good overall system quality.

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

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

A

There is a limit to the size of a software system that any one person can deal with. By splitting a large project into smaller chunks, it is possible to identify a number of more manageable tasks for those involved.

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

What is a development process?

A

A development process is a set of rules that defines how a software development project should be carried out. It incorporates a number of activities, and a process model (or life cycle) that indicates how these activities are ordered.

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

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

A

A good software system must be affordable and available within an appropriate timeframe. Each deliverable uses resources, such as developers’ time, that add to its cost. Project management involves the identification of the appropriate deliverables for a given set of requirements and controlling the cost of producing them. Project management also involves ensuring that deliverables are produced on time and taking steps to cope with any delays.

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

What is the difference between a customer and a user?

A

A customer is the person who pays for a software system, whereas a user is someone who will use that system on a day-to-day basis. A customer will also be a user when the proposed software system is intended to support their job.

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

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

A

Maintenance allows a software system to evolve over its operational lifetime so that it continues to be useful.

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

What additional task is needed when the development of a software system is partitioned into a number of increments?

A

A task devoted to the integration of the increments to form the final software system will be needed.

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

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

A

There is an assumption that once a particular activity or phase is finished, it is not re-entered, and that the activities do not overlap but follow each other in a sequential life cycle. There is no need for reviewing or reworking. All this presupposes that an end point for each activity can be identified.

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

What is Agile software development?

A

Methods which promoter practices that encourage simpler, lighter weight, faster and mingled software development that can adapt to inevitable changes in customer requirements.

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

Define Extreme Programming (XP)

A

Is an agile method based on intensive testing and incremental development.

Defines the following practices:

– Incremental design
– Test first programming
– Programming in pairs
– Continuous integration
– Planning for the week
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Define Scrum

A

Is and agile approach which defines a set pf roles, events, artefacts and rules. all events are timeboxed and have well-defined rules.

Scrum events comprise of:

– The sprint- a development phase no longer than a month that has as a deliverable a useable working increment.

– The sprint planning meeting- lasts no more that eight hours.

– The daily scrum- a daily meeting no longer that 15 minutes, looks at what has been done and planing the work for the next 24 hours

17
Q

How can agile development help achieve a good software system?

A

Agile development promotes the following principles which help achieve 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.

18
Q

What are the benefits of agile software development?

A

– The need for simpler, light-weight, faster software development.

– The ability for the development process to adapt the change in customer requirements.

– Producing working software which satisfies what is required.

– The emphasis on people and collaboration within the development process.

– The greater involvement of the customer in the whole process of development

19
Q

What is the purpose of modelling in agile development?

A

To help develop a shared understanding of the domain/requirements of a system

20
Q

What are Characteristics of agile requirements documentation?

A

– Likely to be less formal and less comprehensive as it is only done as far as it serves a purpose.

– is easy to read and understand as it is mainly used for communication and to share understanding/ agreement.

– does not necessarily follow a template and can be provided in a number of different forms.

21
Q

What is a functional requirement?

A

Is a requirement that specifies an action the software must perform e.g. Check, calculate, record or retrieve.

22
Q

What is a non-functional requirement?

A

Is a requirement that specifies a quality that the software must possess e.g. usability reliability, maintainability

23
Q

What are advantages of using standard template such as the Volere template for requirements capture?

A

– 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.