Documente Academic
Documente Profesional
Documente Cultură
Software product
Users of software care about external qualities. The internal qualities, which
deals with the structure of software, help developers achieve external qualities.
The customer visible products like executables and user manual are termed as
end products. But the developers produce a number of intermediate products like
requirements, design, test data etc. These intermediate products can be called
as work products
Representative qualities.
Correctness
Reliability
In classic engineering products, products are released to the market after defects
are fully removed and tested. If these products fail in the market, it creates
headlines. But software products are commonly released with a list of bugs.
This is one of the symptoms of the immaturity of the software engineering field as
an engineering discipline.
Ideal situation
The figure illustrates the relationship between reliability and correctness. This is
under the assumption that the functional requirements specification captures all
desirable properties of the application and that no undesirable properties are
erroneously specified in it.
Figure shows that a set of all reliable program include set of correct programs,
but not vice versa
Robustness
The terms correctness, robustness and reliability can also be used to the
software production processes.
• A process is robust if it can accommodate unanticipated changes in the
environment
• A process is reliable if it consistently lead to high quality software products
Performance
Performance is often equated to efficiency, but both are not the same. Efficiency
is an internal quality and refers to how economically the software utilizes the
computer resources. Performance on the other hand is an external quality based
on user requirements
Reliabilit
Performance is also important because it effects the scalability of a
software system. A software which is resource hungry, may work
slower and slower when number of concurrent users use the system
In some projects the performance issues are addressed after the initial
release of the software. But sometimes it requires redesign of software
to improve performance. However a prototype approach shall be
desirable if performance is to be judged before complete development
of software to select design choices.
Usability
A software system is usable or user-friendly if its users find it easy to use. .But
the term itself is subjective. It depends upon the type of users. The properties
that makes the system user-friendly for a novice user is different from that of an
expert user. Similarly a non-programmer user may use menus for running a
system whereas a programmer would prefer typing commands rather than
navigating through various menus
Verifiability
Maintainability
Reparability
A product’s reparability affects it reliability.. On the other hand the need for
reparability decrease as the reliability increases
Evolvability
Software products are modified over time to add new functions or to modify the
existing functions. Since software is malleable, modifications can be done easily.
This is similar to other engineering products where enhancements or additions
are made after care feasibility study and design change. Such an organized
approach is missing commonly in the case of software systems. Even in radical
changes in application, people miss the feasibility study and design analysis.
Modification in implementation is done straight away even without properly
documenting the changes. Lack of such documentation makes further changes
difficult.
On the other hand, software system live long if modifications are done gracefully
after conducting feasibility study and design changes. The design of software
must facilitate evolvability as each release of a particular software system is a
step in the evolution of the system.
Reusability
Portability
Understandability
Interoperability
The open system which is becoming popular now, allow different applications
written by different organizations to interoperate
Productivity
Timeliness
t2 t T im e
t0 t1 3 t4
Visibility
A software development process is visible if all its steps and the current status
are documented. 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 examination.
Visibility allows the engineers to realize the impact of their actions and thus
guides them in making decisions. It allows all team members to work in the
same direction and achieve the common goal with full transparency.
Visibility is not an internal quality, it is also external. During the course of long
project development, request may come from project manager, organization
management, customers or any other party involved in the project to conduct
formal or informal presentation to know the exact status of project. Such a
presentation may not be possible if the visibility is poor. Visibility also helps the
new members of the project team to be quick to get familiar with the project
status.
Information systems
Information systems constitute one of the largest areas computers and involves
storage and retrieval of data. Information systems are data oriented and can be
characterized on the basis of the way they treat data. The following are some of
the qualities that characterize information systems:
• Data integrity
• Data Security
• Data availability
• Transaction performance.
These systems need to interact with the end users and therefore should possess
the following human- computer interface requirements:
• User-friendliness
• Menu based graphic interfaces
• Uniform design of menu and easy navigation
• Guard the application from being misused
•
•
Simple customization facilities
Simple report generation facilities
• End user computing
Real time systems are another large class of software systems. A factory
monitoring system for- say temperature control or an air plane software to control
the flight path depending upon the whether condition - are examples of real time
system. The simplest possible example is a mouse handing system in a
computer system that needs to respond to mouse click.
Distributed systems
Distributed system offer new opportunities for achieving some of the software
qualities. for example by replicating data on more than one computer we can
increase the system reliability and by distributing , we can increase the
performance and reliability of the system. Another interesting issue is whether
we can take advantage of technology that supports code mobility. - that is the
ability of code to migrate over the network during runtime. Java applets are a
simple example of mobile code
Embedded systems
Embedded software are systems in which the software is one of the many
components and have no user interface to end users: rather the software has
interfaces with other system components and probably controls them.
Embedded software is used in airplane, robots, microwave ovens, dish washers,
refrigerators, automobiles, cellular phones and other appliances. What
distinguishes embedded software from other kinds of software is that interface of
embedded software is with other devices rather than human
In practice
Although the above four areas of software are distinct, in practice many systems
exhibit characteristic that are common to several of these areas.
Measurement of quality