Software and software engineering Flashcards Preview

TM354 > Software and software engineering > Flashcards

Flashcards in Software and software engineering Deck (23):

What is the defining quality of a good software system?

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


How can a good software system be characterised?

A good software system can be characterised as:

– Useful
– Usable
– Reliable
– Flexible
– Available
– Affordable


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

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


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

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.


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

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.


A successful software project must:

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


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

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.


What is a development process?

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.


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

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.


What is the difference between a customer and a user?

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.


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

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


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

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


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

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.


What is Agile software development?

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


Define Extreme Programming (XP)

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


Define Scrum

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


How can agile development help achieve a good software system?

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.


What are the benefits of agile software development?

– 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


What is the purpose of modelling in agile development?

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


What are Characteristics of agile requirements documentation?

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


What is a functional requirement?

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


What is a non-functional requirement?

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


What are advantages of using 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.