comp208 lecture06

COMP 208/214/215/216 Lecture 6 Managing Software Quality Quality • What is software quality? • One definition: – “Conf...

0 downloads 118 Views 170KB Size
COMP 208/214/215/216 Lecture 6 Managing Software Quality

Quality • What is software quality? • One definition: – “Conformance to explicitly stated functional and

performance requirements, explicitly documented development standards, and implicit characteristics that are expected of all professionally developed software” • (Pressman, Software Engineering, 1992)

• Requirements are the basis for measurement • Standards are specified.

Features of Quality Software • Several classifications, with different degrees of abstraction: • Most abstractly: Quality Software – Meets the needs of its users – Is reliable (does not fail) – Is easy to maintain (correct, or change).

F.U.R.P.S. • Functionality: functions it performs, their generality and security • Usability: aesthetics, consistency, documentation • Reliability: frequency and severity of failure, accuracy of output • Performance: response time, resource consumption • Supportability: can it be extended, adapted, corrected?

Software Quality Factors - I • At the finest level of detail: – Correctness - the extent to which the software satisfies its specification and fulfils customer objectives – Reliability - the extent to which the system performs without malfunctions – Efficiency - the amount of computer resources required to perform its functions.

Software Quality Factors - II • Integrity - the extent to which access to functions and data can be controlled • Usability - the effort required to learn, operate, prepare input for and interpret output from, the software • Maintainability - the effort required to locate and fix errors in operative software • Testability - the effort required to ensure that the software performs its intended functions.

Software Quality Factors - III • Flexibility - the effort required to modify operational software • Portability - the effort required to transfer software from one hardware configuration and/or software environment to another • Re-usability - the extent to which software can be used in applications other that that for which it was produced • Adaptability - the effort required to couple one system with another

Portability - can I use it on

another machine? Reusability - can components be used in other ways? Interoperability - does it interface with other systems?

Maintainability - can I fix it? Flexibility - can I change it? Testability - can I test it? Product Product revision Transition Product Operations

Correctness - does it do what I want? Reliability - does it always do it accurately? Efficiency - does it run as well as it can? Integrity - is it secure? Usability - is it designed for the user?

Examples of good quality • Easy to change the UI language of the application (English, French, Italian or Chinese) • Easy to re-use code, classes on new project • Easy to plug in new credit card, payment providers • Will no accept invalid data

Quality Assurance • QA attempts to ensure the process of software development results in good quality outputs. • There are seven major activities: – Application of a methodology – Formal technical Reviews – Testing – Enforcement of Standards – Control of change – Measurement – Record keeping and reporting.

Following a Method • Ensures that all steps are completed • Builds in checks for various steps • Produces a standard output: means that others can understand it, know what to expect • Enables progress to be monitored • Specifies deliverables and review points

Connolly and Begg provides the method you should follow on this project.

Formal Reviews • Confirm that the method is being followed • Ensure that documentation is in order • Can identify problems before they become fixed into the product • Result in intermediate outputs which can be used as a used as foundations for subsequent stages.

Testing • System testing – attempts to ensure correctness and reliability – can identify efficiency problems

• User testing – allows evaluation of the usability aspects – attempts to ensure that the requirements are met

Standards • Their purpose is to facilitate communication – A uniform mode of presentation makes things easier to understand and ensures inter-operability

• Standards are not necessarily the “right” way of doing things. – Several alternatives may be equally good. But is is useful if everyone does things the same way

• Standards cover many things: – Documentation to be produced, notation for diagrams, coding conventions, etc.

Change Control • Any change can introduce errors • It is important to have a change control process – To keep a version before the changes, so they can be rolled-back if necessary – To incorporate a change once it is made satisfactorily – So that simultaneous changes do not conflict.

Measurement and Records • Measurement – Where possible quality factors should be measured – Nothing is perfect, but we need an idea of how imperfect it is

• Record keeping – Makes the process transparent – Enables audit, and reference back – Results in a portfolio describing the development process.

Version Control • Throughout the project you will be developing documentation and software • It is important that an all times there is a definitive version. – If two people make different changes, and we have two new versions - which one will be taken forward? – If you need to make a change you want to know that you are using the latest version – If a change goes wrong, you need to be able to return to the correct version.

Ownership • Someone needs to “own” the current version at all times. – They can then track who is doing what to it – They can supply the current version if required – They can agree to incorporate changes to produce the next version, or accept a changed version as the next version.

Use the correct tools • Use proper version control software for all your documents and source code • Keep everyone in your group informed of the current login details • Keep offline backups of all your documents

Summary • Software quality covers a large number of factors • Following a method is the key to quality assurance: it specifies what the the deliverables are, and the form they should take • Each deliverable can be subjected to appropriate checks and reviews • Version control is essential.