SE(U5)_231127_184924
SE(U5)_231127_184924
SE(U5)_231127_184924
Unit - V
Objectives:
To understand about the importance and procedures of Quality Assurance.
To have a deep study about the review techniques.
Specification, the Design Specification, and the Verification Plan, plus the cost of verifying that the
1
implementation is complete, consistent, and suitable with respect to the System Definition, the
System Requirement Specification, and the Design Documents.
2
A programming standard might specify items such as:
1. Go to statements will not be used.
2. The nesting depth of program constructs will not exceed 5 levels.
3. Subroutine length will not exceed 30 lines.
Documentation Guidelines:
Computer software includes the source code for a system and all the supporting documents
generated during analysis, design, implementation, testing and maintenance of the system.
Supporting Documents:
Requirements specifications, design documents, test plans, user‘s manuals, installation
instructions and maintenance reports are example of supporting documents. These documents are the
products that result from systematic development and maintenance of computer software.
Most CASE tools in use today have not been constructed using all these building blocks. In fact,
some CASE tools remain "point solutions." That is, a tool is used to assist in a particular software
engineering activity (e.g., analysis modeling) but does not directly communicate with other tools, is not
tied into a project database, is not part of an integrated CASE environment (ICASE).
3
Although this situation is not ideal, a CASE tool can be used quite effectively, even if it is a point
solution. The relative levels of CASE integration are shown in Figure 19.2. At the low end of the
integration spectrum is the individual (point solution) tool. When individual tools provide facilities for
data exchange (most do), the integration level is improved slightly. Such tools produce output in a
standard format that should be compatible with other tools that can read the format. In some
cases, the builders of complementary CASE tools work together to form a bridge between the tools
(e.g., an analysis and design tool that is coupled with a code generator).
Fi
Integration options
4
Using this approach, the synergy between the tools can produce end products that would be
difficult to create using either tool separately. Single-source integration occurs when a single
CASE tools vendor integrates a number of different tools and sells them as a package. Although
this approach is quite effective, the closed architecture of most single-source environments
precludes easy addition of tools from other vendors. At the high end of the integration spectrum is the
integrated project support environment (IPSE). Standards for each of the building blocks
described previously have been created. CASE tool vendors use IPSE standards to build tools that
will be compatible with the IPSE and therefore compatible with one another.
A classic system testing problem is "finger-pointing." This occurs when an error is uncovered, and
each system element developer blames the other for the problem. Rather than indulging in such
nonsense, the software engineer should anticipate potential interfacing problems and
1. Design error-handling paths that test all information coming from other elements of the
system,
2. conduct a series of tests that simulate bad data or other potential errors at the software
interface,
3. Record the results of tests to use as "evidence" if finger-pointing does occur, and
4. Participate in planning and design of system tests to ensure that software is adequately
tested.
Recovery Testing
It is a system test that forces the software to fail in a variety of ways and verifies that
recovery is properly performed. If recovery is automatic (performed by the system itself),
reinitialization, check pointing mechanisms, data recovery, and restart are evaluated for correctness. If
recovery requires human intervention, the mean-time-to-repair (MTTR) is evaluated to determine
whether it is within acceptable limits.
Security Testing
5
Security testing attempts to verify that protection mechanisms built into a system will, in
fact, protect it from improper penetration. To quote Beizer [BEI84]: "The system's security must, of
course, be tested for invulnerability from frontal attack but must also be tested for invulnerability
from flank or rear attack."
During security testing, the tester plays the role(s) of the individual who desires to penetrate the
system. Anything goes! The tester may attempt to acquire passwords through external clerical
means; may attack the system with custom software designed to breakdown any defenses that have
been constructed; may overwhelm the system, thereby denying service to others; may purposely
cause system errors, hoping to penetrate during recovery; may browse through insecure data,
hoping to find the key to system entry.
Stress Testing: It executes a system in a manner that demands resources in abnormal quantity,
frequency, or volume. Essentially, the tester attempts to break the program. For example,
1. Special tests may be designed that generate ten interrupts per second, when one or two is the
average rate,
2. Input data rates may be increased by an order of magnitude to determine how input
functions will respond,
3. Test cases that require maximum memory or other resources are executed,
4. Test cases that may cause thrashing in a virtual operating system are designed,
5. Test cases that may cause excessive hunting for disk-resident data are created.
Performance Testing
Performance tests are often coupled with stress testing and usually require both hardware and
software instrumentation. That is, it is often necessary to measure resource utilization (e.g., processor
cycles) in an exacting fashion. External instrumentation can monitor execution intervals, log events
(e.g., interrupts) as they occur, and sample machine states on a regular basis. By incrementing a
system, the tester can uncover situations that lead to degradation and possible system failure.
6
Correction:
Even with the best quality assurance activities, it is likely that the customer will uncover
defects in the software. Corrective maintenance changes the software to correct defects.
Adaptation:
Over time, the original environment (CPU, Operating System, business rules etc) for which the
software was developed is likely to change. Adaptive maintenance results in modification to the
software to accommodate changes to its external environment.
Enhancement:
As software is used, the customer will recognize additional functions that will provide
benefit. Perfective maintenance extends the software beyond its original functional requirements.
Preventive:
Computer software deteriorates due to change, and because of this, preventive maintenance,
often called software reengineering, and must be conducted to enable the software to serve the need of
its end users. Preventive maintenance makes changes to computer programs so that they can be more
easily corrected, adapted and enhanced. Today, the ―aging software‖ is forcing many companies to
pursue software reengineering strategies.
Software Maintenance
Software will undergo change after it is delivered to the customer. Change will occur
because errors have been encountered, because the software must be adopted to accommodate
changes in its external environment or because the customer requires functional or performance
enhancements. Software maintenance reapplies each of the preceding phases to an existing program
rather than a new one.
The linear sequential model is the oldest and the most widely used model for software engineering.
Some of the problems that may arise when linear sequential model is applied are:
1. Real projects rarely follow the sequential flow that the model proposes. Although the linear
model can accommodate iterations, it does so indirectly. As a result, changes can cause confusion
as the project team proceeds.
2. It is often difficult for the customer to state all the requirements explicitly. The linear
sequential model requires this and has difficulty accommodating the natural uncertainty that exists at
the beginning of many projects.
3. The customer must have patience. A working version of the program will not be available
until late in the project time-span. A major blunder, if undetected until the working program is
reviewed, can be disastrous.
7
Each of these problems is real. But still the classic life cycle model has a definite and important
place in the software engineering work. It provides a template into which methods for analysis,
design, coding, testing, and maintenance can be placed. The classic life cycle remains the most
widely used process model for software engineering.
Maintainability
Software maintenance accounts for more effort than any other software engineering activity.
Maintainability is the ease with which a program can be corrected if an error is encountered,
adapted if its environment changes, or enhanced if the customer desires a change in requirements. A
simple time-oriented metric is mean-time-to change (MTTC), the time it takes to analyze the
change request, design an appropriate modification, implement the change, test it, and distribute the
change to all users. On average, programs that are maintainable will have a lower MTTC (for
equivalent types of changes) than programs that are not maintainable.
A change request may entail enhancement, adaptation or error correction. Major enhancements and
major adaptations may require extensive analysis and negotiation with the customer. They are often
handled as new development projects rather than as routine maintenance activities.
A change request is first reviewed by an analyst. In some cases, the request may report a user
problem that is not caused by the software being maintained. In this situation, the analyst notifies he
user and, with the concurrence of the user, closes the change request. Otherwise, the analyst
submits to the control board the change request, the proposed fix, and an estimate of the resources
8
required to satisfy request.
SQA encompasses:
(1) A quality management approach,
(2) Effective software engineering technology (methods and tools),
(3) Formal technical reviews that are applied throughout the software process,
(4) A multitier testing strategy,
(5) Control of software documentation and the changes made to it,
(6) A procedure to ensure compliance with software development standards
(7) Measurement and reporting mechanisms.
Quality of design refers to the characteristics that designers specify for an item.
Quality of conformance is the degree to which the design specifications are followed during
manufacturing.
User satisfaction = compliant product + good quality + delivery within budget and schedule
Quality Control
Quality control involves the series of inspections, reviews, and tests used throughout the
software process to ensure each work product meets the requirements placed upon it.
9
Quality Assurance
Quality assurance consists of the auditing and reporting functions of management. The
goal of quality assurance is to provide management with the data necessary to be informed about
product quality, thereby gaining insight and confidence that product quality is meeting its goals.
Quality costs may be divided into costs associated with prevention, appraisal, and failure.
Prevention costs include
• quality planning
• formal technical reviews
• test equipment
• training
Appraisal costs include activities to gain insight into product condition the ―first time through‖
each process. Examples of appraisal costs include
• in-process and interprocess inspection
• equipment calibration and maintenance
• testing
Failure costs are those that would disappear if no defects appeared before shipping a product to
customers.
Internal failure costs includes:
• rework
• repair
• failure mode analysis
10
• warranty work
Software Reviews
A review any review is a way of using the diversity of a group of people to:
1. Point out needed improvements in the product of a single person or team;
2. Confirm those parts of a product in which improvement is either not desired or not needed;
3. Achieve technical work of more uniform, or at least more predictable, quality than can be
achieved without reviews, in order to make technical work more manageable.
Review Guidelines
Guidelines for the conduct of formal technical reviews must be established in advance,
distributed to all reviewers, agreed upon, and then followed.
1. Review the product, not the producer.
2. Set an agenda and maintain it.
3. Limit debate and rebuttal.
4. Enunciate problem areas, but don't attempt to solve every problem noted.
5. Take written notes.
6. Limit the number of participants and insist upon advance preparation.
7. Develop a checklist for each product that is likely to be reviewed.
8. Allocate resources and schedule time for FTRs.
9. Conduct meaningful training for all reviewers.
10. Review your early reviews.
13
1.7 Quality Standards:
A quality assurance system may be defined as the organizational structure, responsibilities,
procedures, processes, and resources for implementing quality management.
Quality assurance systems are created to help organizations ensure their products and services
satisfy customer expectations by meeting their specifications. These systems cover a wide variety of
activities encompassing a product‘s entire life cycle including planning, controlling, measuring,
testing and reporting, and improving quality levels throughout the development and manufacturing
process.
The requirements delineated by ISO 9001 address topics such as management responsibility, quality
system, contract review, design control, document and data control, product identification and
traceability, process control, inspection and testing, corrective and preventive action, control of quality
records, internal quality audits, training, servicing, and statistical techniques. In order for a software
organization to become registered to ISO 9001, it must establish policies and procedures to address
each of the requirements just noted (and others) and then be able to demonstrate that these policies
and procedures are being followed.
14