Software Quality Attributes Assignment Help | Software Quality Attributes Homework Help

Software Quality Attributes

There are many desirable software qualities. Some apply both to the product and to the process used to produce the product. The user wants the software product to be reliable, efficient and easy to use. The producer of the software wants it to be verifiable, maintainable, portable and extensible. The managers of the software project want the process of software development to be productive, predictable and easy to control.

There are two different classifications of software related qualities:

1.    External versus Internal Qualities
External qualities are visible to the users of the system. Internal qualities concern the developers of the system. Users of the software are only about external qualities but it is the internal qualities which deal with the structure of the software that help developers to achieve the external qualities.

2.    Product and Process Qualities
A process is used to produce software product. Product refers to what is delivered to the customer. Process qualities are closely related to product qualities. For example if the process requires careful planning of text data before any design and development of the system starts, the reliability of the product will increase.

Representative Qualities
In this section, we present the qualities of software products and processes:

1.    Correctness

A program is written to provide functions specified in its functional requirements specification. There are other requirements that do not pertain to the functions of the system. Example scalability and performance. These are known as nonfunctional requirements. A program is functionally correct if, it behaves according to its stated functional specifications.

Correctness is a mathematical property that established the equivalence between the software and its specification. Correctness can be enhanced by using proven methodologies and processes.

2.    Reliability

Software is reliable if the user can depend on it. Reliability can also be defined in terms of statistical behavior i.e. the probability that the software will operate as expected over a specified time interval.

Correctness is an absolute quality, any deviation from its requirement makes a system incorrect, regardless of how minor or serious the consequence of the deviation are? On the other hand reliability is relative. If the consequence of a software error is not serious, the incorrect software may still be reliable.

represents an deal situation wherein the requirements are themselves assumed to be correct. It shows the relationship between reliability and correctness. that the set of all reliable program includes the set of correct programs but not vice-versa

Relationship between correctness
and reliability in ideal case

3.    Robustness

A program is robust if it behaves reasonably even in circumstances that were not anticipated in the requirements specification. For example when it encounters incorrect input data or some hardware malfunction, e.g. a disk crash. A program that assumes perfect input and generates an unrecoverable run-time error as soon as the user inadvertently types an incorrect command is not robust.

The terms “correctness”, “reliability” and “robustness” are related and collectively characterize a quality of software which implies that the application performs its functions as expected.

4.    Performance

Any engineering product is expected to perform at a certain level. Efficiency and performance are not the same. Efficiency is an internal quality and refers to how economically the software utilizes the resources of the computer. Performance is an external quality based on user requirements.

Performance is important because it affects the usability of the system. If a software system is too slow, it reduces the productivity of the users. If a software system uses too much disk space, it may be too expensive to run. If a software system uses too much memory it may affect the other applications that are running on the same system or it may run slowly while the operating system tries to balance the memory usage of different applications.

Performance also affects the scalability of a system. An algorithm that is quadratic may work on small inputs but not work at all on larger inputs.

Following are the ways to evaluate the performance of the system:

1.    To analyze the complexity of algorithms used in the software.

2.    Measurement:  Measure the actual performance of the system by means of hardware an software monitors that collect data while the system is running and thereby allows to discover bottlenecks in the system.

3.    Analysis: To build a model of the product and analyze it.

4.    Simulation: To build a model that simulates the product.

5.    Usability

A software system is usable or user friendly, if its human users find it easy to use. The user interface is an important component of user friendliness. A software system that presents the novice user with a window interface and a mouse is friendlier than one that requires the user to entree a set of one-letter commands. On the other hand, an experienced user might prefer a set of commands that minimize the number of keystrokes rather than a fancy window interface through which he has to navigate to get to the command the he knew all along he wanted to execute.

6.    Verifiability

A software system is verifiable if it properties can be verified easily. Example it is important to be able to verify the correctness or the performance of a software system.
Verification can be performed by formal and informal analysis methods or through testing. Software monitors are used for improving verifiability.

Modular design, disciplined coding practices and the use of an appropriate programming language all contribute to verifiability.

7.    Maintainability

Maintainability means the modifications that are made to a software system after tis initial release. This includes a wide range of activities all having to do with modifying an existing piece of software in order to make an improvement. This is called software evolution.

Software maintenance can be divided into three categories:

(i)    Corrective Maintenance
This involves removal of residual errors that are present in the product when it is delivered and errors introduced into the software during its maintenance.

(ii)    Adaptive Maintenance
This involves changing the software because the environment in which it is embedded changes.

(iii)    Perfective Maintenance
This involves changing the software to improve some of its qualities.

8.    Reparability

A software system is repairable if its defects can be corrected with a reasonable amount of work. As the cost of a product decreases and the product assumes the status of a commodity, the need for reparability decreases. It is cheaper to replace the whole thing or at least major of it, than to repair it. Example in early television set, you would replace a single vacuum tube, today a whole board has to be replaced. The need for reparability decreases as reliability increases.

9.    Evolvability

Evolvability means that the software products are modified over time to provide new functions or to change existing function. Large software systems show that resolvability decrease with each release of a software product. Each release complicates the structure of the software so that future modification becomes more difficult to apply.

10.    Reusability

In product reuse, we use the product with minor changes to build another product. Reusability may be applied at different levels of granularity. From whole application to individual routines. It appears to be more applicable to software component than to whole product.

11.    Portability

Software is portable if it can run on different environment. Environment means hardware platform or a software environment such as a particular operating system.

12.    Understandability

Some software systems are easier to understand than others. Example, a system that does weather foresting will be harder to understand then the system that prints mailing lists. There are certain guidelines which can be used to produce more understandable designs and to write more understandable programs. Example abstraction and modularity enhances a system’s understandability.

13.    Interoperability

Interoperability refers tot eh ability of a system to coexist and cooperate with other systems. A vendor can produce different product and allows the user to combine them if necessary. Example, a new audio player provided by one vendor may be added to the browse provided by another vendor.

14.    Productivity

Productivity is a quality of the software production process, referring to its efficiency and performance. An efficient process results in faster delivery of the product.

15.    Timeliness

Timeliness is a process-related quality that refers to the ability to deliver a product on time. Historically, timeliness has been lacking in software production processes, leading to “software crisis”, which in turn led to the need for and birth of software engineering itself. Today, due to increased competitive market pressures, software projects face even more stringent time-to-market challenges. Timeliness requires careful scheduling, accurate estimation of work and clearly specified verifiable and milestones.

16.    Visibility

A software development process is visible if all of its steps and its current status are documented clearly. Another term used to characterize this property is transparency. The idea is that the steps and the status of the project are available and easily accessible for external examinations. Visibility allows engineers to weigh the impact of their actions and thus guides them in making decisions. It allows the members of the team to work in the same direction, rather than in opposite direction.

For more help in Software Quality Attributes click the button below to submit your homework assignment